-->
Главная » Статьи » Информатика

ТИПТЕР, ОПЕРАТОРЛАР ЖӘНЕ ӨРНЕКТЕР

ТИПТЕР, ОПЕРАТОРЛАР ЖӘНЕ ӨРНЕКТЕР

 

Айнымалылар мен тұрақтылар программа жұмыс жасайтын негізгі объектілер болып табылады.

Объектінің типі осы объекті қабылдай алатын мәндер жиынын және оған орындалатын операцияларды анықтайды.

Барлық айнымалыларға олардың белгіленуіне сәйкес мағыналы аттарды берген дұрыс. Қысқа аттар локальды айнымалыларға арналған, әсіресе цикл есептеуіштері үшін және ұзынырақтары сыртқы айнымалылар үшін тағайындалған.Әдетте Си программаларында кіші әріппен айнымалыларды, ал үлкен (бас) – аталған тұрақтыларды тереді.

Си-де тек бірнеше базалық типтер бар: char, int, float, double. Сондай-ақ көрсетілген базалық типтермен бірге қолдануға болатын квалификаторлардың бірнешеуі бар: short, long  бүтінге қолданылатын және signed, unsigned  char типіне қолданылатын және кез-келген бүтін типке қолданылатын. long double типі жоғарғы дәлдікті жылжымалы нүктелі арифметика үшін арналған.

Барлық өлшемдер үшін машинаның басқа мінездемелерімен бірге және компиляторда аталған тұрақтылар стандартты басты <limits. h>  және  <float.h> файлдарда сақталады.

Бүтін тип (тізбекті типті қоса алғандажәне жылжымалы тип жиында арифметикалық типті құрайды.

void типі (босбелгілеуге ие. Функцияны жариялауда void типінің спецификациясын көрсету, функция мәнді қайтармайтынын білдіреді.

Функцияны жариялауда аргументтерді жариялау тізіміндегі void типінің көрсетілуі, функция аргументтерді қабылдамайтынын білдіреді.

Көрсеткіштің void типіне жариялануы, ол кез-келгеніне көрсете алады, яғни арнайы тип емес екендігін білдіреді.

void типі типті келтіру операциясында көрсетілуі мүмкін. void типті айнымалыны жариялауға болмайды.

Мәндер аймағы – бұл ең аз мәннен ең үлкен мәнге дейінгі берілген тип айнымалысында көрсетіле алатын интервал.

Декларациялар

Барлық айнымалылар қолданудан бұрын декларациялануы (сипатталуы) қажет. Декларация типтің өзгешелігін анықтайтыжәне осы типтің айнымалылар тізімінен тұрады. Өз декларацияларында айнымалылар инициализациялана алады.

Автоматты емес айнымалының инициализациясы программаның жұмысының басталуының алдында бір рет қана орындалады (инициализатор – тұрақты өрнек). Локальды айнымалы функцияға немесе сұлбаға әр кіру кезінде бастапқы мәніналады (инициализатор – кез-келген өрнек). Сыртқы және статистикалық айнымалылар үнсіздікпен нөлдік мәнді қабылдайды.

Декларацияда кез-келген айнымалыға const  квалификаторы, оның мәні келешекте өзгермейтіндігін көрсету үшін қолданылуы мүмкін. Массивке қолданылатын const квалификаторы, оның элементтерінің бірде-біреуі өзгермейтіндігін көрсетеді. const көрсеткішін аргумент-массивке, бұл массивті функция өзгертпейтіндігін хабарлау үшін қолдануға болады.

Арифметикалық  операторлар

Бинарлы арифметикалық операторлар +, - , *, /, % болып табылады,  мұндағы % - mod операторына пара-пар, Паскальтіліндегі модулге алу операторы. % операторы float және doublе типті операндаларға қолданылмайды.

<, <=,  >, >=, = = (тең), != (тең емес) операторлары қатынас және салыстыру операторлары болып табылады.

Логикалық операторлар&&(конъюнкция) и ¦¦ (дизъюнкция).

Қатынас өрнегінің есептеуінің сандық нәтижесін анықтау бойынша немесе логикалық болып 1 табылады, егер ол шындық болса, және 0 – егер ол жалған болса.

! операторы әдетте келесі түрдегі конструкцияда қолданылады:

             if (!valid)                       // if (valid = = 0) эквивалент екендігі дұрыс емес

Типтерді түрлендіру

Егер операторлардың операндалары әр түрлі типке жатса, онда олар үлкен мәндегі диапазонды, кейбір ортақ типке келтіріледі. Жалпы жағдайда, оператор әртүрлі типтегі операндаларға ие болса, операция орындалмас бұрын "кіші” тип "үлкен” типке тартылады. Нәтиже үлкен типке ие болады. Үлкен типтерге олардың приоритеттерінің кему тәртібімен жатады:long doubledoublefloatintlong.

char типінің мәні – бұл бар жоғы кіші бүтін, және оларды  литерлермен барлық мүмкін болатын манипуляциялауды барынша жеңілдететін арифметикалық өрнектерде еркін қолдануға болады. Мысал ретінде цифрлар тізбегін оның сандық эквивалентіне түрлендіретін atoi функциясының қарапайым жүзеге асуын келтірейік:

             // atoi:  s стрингісін санға түрлендіру

             int atoi (char s[])

             {   int i,n=0;

                  for (i=0; s[i]>=’0’&& s[i]<=’9’; i + +)

                  n =10*n+(s[i]-‘0’);

                  return n;

                           }

Түрлендіру меншіктеу кезінде де орынға иеменшіктеудің оң жақ бөлігінің мәнінәтиженің типі болып табылатын сол жақтипіне келтіріледі.

Функция шақыруындағы аргумент өрнек болғандықтан, оны функцияға беру кезінде типті түрлендіруі мүмкін. Функцияның прототипінің болмауы кезінде char және short типіндегі аргументтер int-ке, aл float – double-ге түрлендіріледі. Егер аргументтер функцияның прототиптерінде сипатталған жағдайда, функцияны шақыру қажетті түрлендіруде автоматты түрде қосылуы керек.

Си-де айнымалыларды өсіру және кеміту үшін арналған екі ерекше операторлар бар: + + - өз операндына 1 қосатын инкременттік оператор, және  - -  өз операндының мәнін 1-ге кемітетін декременттік оператор.

Мысалы, if (c = = ‘\n’)  + + nline;

Өз кезегінде, бұл екі оператор префикстік (операндтың алдында оларды орналастыра отырып, мысалы + + n), сондай-ақпостфикстік (оларды операндтың соңына орналастыра отырып, мысалы n++) ретінде қолданыла алады. Екі жағдайда да n-нің мәні 1-ге артады. Бірақ ++n  өрнегі n-ді оның мәні өрнекте қолданылғанға дейін өсіреді, ал n+ + қолданылғаннан кейін өсіреді.Бұл операторлардың өрнектен тысқары айнымалыларға қолданылуы, олардың орналасу орындары айнымалыға қатысты тәуелсіз. Сондықтан жоғарыда келтірілген мысалда, nline айнымалысымен өсу ( + +  nline немесе nline + + )  бірдей нәтижеге ие.

Айнымалы өрнекке кіруінің өзі басқаша жағдай. Бұл жағдайда айнымалыларға қарасты инкрементті (декрементті) операторларды орналастыру өрнектің мәнін есептеу кезінде маңызды.

Си-де биттермен манипуляция жасау үшін алты операторлар бар. Оларды charshortint және long операндтарына ғана, таңбалы және таңбасыздарына қолдануға болады.

Кейбір биттік операцияларды суреттеу үшін getbits(x,p,n) функциясын қарастырайық, ол өрісті n биттен, х-тен кесіп алынған, р позициядан бастапоны оң жақа жабыстыра құрастырады. Мысалы, getbits(x,4,3) х мәнінің 4,3 және 2-ші биттерін, оларды оң жақа жабыстыра отырып нәтиже ретінде қайтарады. Бұл функция:

//getbits:  р-ші позициядан бастап n бит алады

unsigned getbits (unsignedxint p , int n)

{  return (x>>(p+1-n)) & ~(~0<<n);

 }

Меншіктеу операторлары және өрнектер

 

Бинарлы операторлардың көбісіне, яғни сол және оң операндтары бар операторларға op=,  меншіктеу операторы сәйкес келеді, мұндағы ор –  + - * / % << >> & ^  ¦ операторларының бірі .

Мысалы, i=i+2 өрнегін қысылған түрде жазуға болады: i+=2.

Қысқартумен қатар меншіктеу операторлары адам қалай ойлайды, соған сәйкес келетін қасиетке ие. Күрделі өрнектерде жазба түсіну үшін жеңіл болып келеді. Меншіктеу операторы компиляторға тиімді код құрастыруына көмектеседі.

Меншіктеудің кез-келген өрнегінің мәні мен типі болып, оның меншіктеуден кейінгі сол жақ операндасының мәні және типі саналады.

 

Шартты өрнектер

 

if(a>bz=a;

  else z=b;

нұсқаулары екі а және b мәндерінің ең үлкенінің бірін z-ке жібереді.

Си-де тернарлық оператор "?:” бар, ол осы және оған ұқсас конструкцияларға жазбаның басқа тәсілін көрсетеді.

z=(a>b) ? a:b;           // z=max(a,b)

Шартты өрнек  шынымен де өрнек болып табылады және оны өрнек жіберілетін кез-келген жерде қолдануға болады.

Шартты өрнек көбінесе программаны қысқартуға мүмкіндік береді. Мысал ретінде массивтің n элементтері әрбір жол бойынша 10-нан, бағандар арасынан бір бос орыннан басып шығаруды қамтамасыз ететін циклді келтірейік: циклдің әрбір жолы соңғы жолды қосқанда жаңа жол литерімен аяқталады.

for (i=0; i<n; i+ +)

printf ("%6d%c”, ar [i],(i%10= = 9¦¦i= = n-1)?’\n’:’ ‘);

Жаңа жол литері әрбір оныншыдан кейін және n–ші элементтен кейін жіберіледі. Қалған басқа элементтерден кейін бос орын келеді.

Категория: Информатика | Добавил: admin_ (17.11.2013)
Просмотров: 3558 | Теги: ОПЕРАТОРЛАР ЖӘНЕ ӨРНЕКТЕР қазақша, ТИПТЕР | Рейтинг: 0.0/0
Всего комментариев: 0

Имя *:
Email:
Код *: