русс | укр

Мови програмуванняВідео уроки php mysqlПаскальСіАсемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование


Linux Unix Алгоритмічні мови Архітектура мікроконтролерів Введення в розробку розподілених інформаційних систем Дискретна математика Інформаційне обслуговування користувачів Інформація та моделювання в управлінні виробництвом Комп'ютерна графіка Лекції


Шартты оператор


Дата додавання: 2013-12-23; переглядів: 3910.


Float x,y;

Int m;

Int i; float fl;

Char ch;

Main ()

Getch();

Clrscr();

Main()

K=10;

S=pow(x,y);

Clrscr();

Float x,y,s;

Main()

Sizeof(double));

Float s1, s2;

Char c1;

Char short int long float double

Алғашқы төрт тип бүтін сандарды, соңғы екеуі – нақты сандарды өрнек­тейді, char типі компьютерде бір символды (байт) бейнелейді.

Константалардан, айнымалылардан, функциялардан және операциялар таңбаларынан өрнектер құралады.

Арифметикалық өрнектерде мынадай операциялар: + - * / % болады. Жалпы өрнектер бір жол бойына жазылады және олардағы операция реттілігі жақшалармен анықталады. Өрнектерді жазу мысалдары:

і = і+1; k = 5.35; x1= (-b+sqrt(b*b-4*a*c))/(2*a) ;

y = sqrt(sin(x)+1); c = 2*pі*r; R = 19.36;

Түйінді сөздер – мағынасы алдын ала анықталған идентификаторлар, олардың саны шектеулі.

Стандартты функциялар. Стандартты функцияны жазу үшін мін­детті түрде функцияның аты және жақшаның ішінде аргументі көрсетілуі қажет.

Стандартты функциялар: fabs(x), sіn(x), cos(x), asin(x), acos(x), tan(x), exp(x), log(x), sqrt(x), atan(x), т.с.с.

Функцияны есептеу барысында аргумент пен функция типтерінің әр уақытта сәйкес келе бермейтінін есте сақтаған жөн. Си тіліндегі стандартты функцияларды пайдалану үшін <math.h> тақырыптық файлы (прототипі) қолданылады.

Комментарий – түсініктеме ретінде қолдануға болатын символдар тізбегі. Олар ұлттық алфавиттерді де пайдалана береді. Комментарий басы мен аяғы /* ...*/ осындай таңбалармен шектелуі тиіс. Олар бір немесе бірнеше жолдардан да тұра алады. Си++ тілінде жол соңында тұратын комментарийлер // сиволдарынан кейін орналасады.

/* программа ішіндегі комментарийлер осылай орналасады */

Программалау тілінің белгілі бір іс-әрекетті орындай алатын тиянақ­ты мағынасы бар ең қарапайым сөйлемі оператор болып табылады.

Бақылау сұрақтары

 

1. Си тілінің шығу тарихы.

2. Си программасының жалпы құрамы мен құрылымы.

3. Препроцессор директивалары түсінігі.

4. Тілдің алфавиті құрамы. Операциялар таңбалары, айыру белгілері, қатынас таңбалары және арнайы символдар.

5. Басқару тізбектері не үшін қажет және олар қалай жазылады?

6. Тілдің қарапайым объектілері.

7. Си тіліндегі сандар мен айнымалылар, олардың жазылу жолдары.

8. Идентифика­тор дегеніміз не?

9. Өрнек ұғымы.

10. Тілдің түйінді сөздері.

 

Дәріс №3

2.3. Си тіліндегі мәліметтер типтері және енгізу, шығару функциялары

Мұнда мәліметтердің бірнеше негізгі типтері қолданылады. Олар:

· char (8 бит) – символдық, яғни таңбалық тип,

· short– қысқа бүтін сан,

· int – бүтін сан типі,

· long – екі еселенген бүтін сан,

· unsigned – таңбасыз бүтін сан,

· float – нақты сан типі, яғни жылжымалы нүктелі сандар,

· double – екі еселенген нақты сан типі,

· long double– ұзартылған, әрі екі еселенген нақты сан типі.

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

Си тілінің ішкі құрамындағы мәліметтер типтері мен олардың

ені (ұзындығы) 2.5 кесте

Мәлімет типі Ұзындығы (бит – байт) Сандар диапазоны
char 8 бит – 1 байт -128 ... +127
unsigned char 8 бит – 1 байт 0 ... 255
short int 16 бит – 2 байт -32768 ... 32767
unsigned short 16 бит – 2 байт 0 ... 65 535
int 16 бит – 4 байт -32768 ... 32767
unsigned [int] 32 бит – 4 байт 0 ... 4294967295
long 32 бит – 4 байт -2 147 483 648 ... 2 147 483 647
unsigned long 32 бит – 4 байт 0 ... 4 294 967 295
float 32 бит – 4 байт 3.4×10-38 ... 3.4×1038
double 64 бит – 8 байт 1.7×10-308 ... 1.7×10308
long double 80 бит – 10 байт 3.4×10-4932 ... 3.4×104932

2.4. Бүтін сан түріндегі мәліметтерді сипаттау

Айнымалыларды сипаттау кезінде бүтін тұрақтылар – костанталар мәндерін де көрсетуге болады. Мысалы:

int k=0; (бір ғана сан сипатталған және оған мән берілген)

int k1,k3=0; (біреуі тек сипатталған, екіншісіне мән берілген)

char типін 0–255 аралығындағы таңбасыз бүтін сандарды сипат­тау­да қолдануға болады, ДК жадында бұларға бір байт орын бөлінген. Мысалы:

char ck=’k’;

2.4.2. Char типі

Бұл тип мәндері реттелген символдар жиыны болып табылады. Әрбір символға бір бүтін сан сәйкес келеді, ол символ коды деп аталады. Символдық тип ені – 1 байт. Char типі де signed және unsigned специфи­каторларымен қолданылады. Signed char типі диапазоны –128 .. 127. Unsigned char типін қолданғанда, оның мәндер диапазоны 0 .. 255 болады. Символдарды кодтау үшін ASCII (American Standard Code for International Interchange) стандарты негізге алынған. Символдардың 0 .. 31 кодтары басқару кодтарына жатады, олар тек енгізу-шығару кезінде ғана қолданылады.

Сhar типі символдарды олардың бүтін сан түріндегі кодтары арқы­лы сақтап, басқа шамалардың көрсетілген диапазоны сандарын да көрсету үшін де қолданыла алады.

2.4.3. Float және double жылжымалы нүктелі нақты сандар типтері

Мысалдар:

float sum=1.5;

Си тілінде объектілердің мәндерін байт арқылы анықтау үшін sizeof стандартты операторы қолданылады. Мысалы:

printf(“double типіндегі мәліметтер ені %d байт\n",

2.5 Символдық тіркестер (жолдар, қатарлар)

#define – символдарды немесе солардан тұратын константаларды анық­тау мақсатында қолданылады. Мысалы:

#define NULL ‘/o’

#define VNAME “КазГУ”

2.6. Printf және scanf функциялары

Си тілінде сыртқы ортамен мәліметтер алмасу <stdio.h>енгізу-шы­ға­ру функция­лары кітапханасын пайдалану арқылы орындалады. Ол тақы­рып файлы ретінде былай жазылады:

#include <stdio.h>

printf() функциясы мәліметтерді экранға шығару үшін қолданы­лады. Оның жалпы жазылу түрі:

printf(<формат тіркесі>,<аргументтер тізімі>);

(<формат тіркесі> –қостырнақшамен (”) шектеліп, аргументтердің қалай бейнеленетінін көрсетіп тұрады, экранға (баспаға) шығару алдында барлық аргументтер формат специ­фикациясына сәйкес түрлендіріледі, спецификация % символымен басталады және мәліметтер типін, оларды түрлендіру тәсілін көрсететін бір әріп жазы­лады. Объектілер ретінде айнымалылар, константалар, өрнектер қолданылуы мүмкін. Мысалы:

printf (“ Пи санының мәні = %f\n”, pi);

Формат тіркесінде мыналар болады:

1) мәтін ретінде шығарылатын символдар тіркесі;

2) түрлендіру спецификациялары;

3) басқару символдары.

Әрбір аргументке өз спецификациясы сәйкес келуі тиіс, олар:

%d – бүтін ондық сан шығарылуы тиіс,

%i – бүтін ондық сан шығарылуы тиіс,

%f – жылжымалы нүктелі нақты ондық сан ([-]dddd.dddd ) жазылып шығады,

%e – жылжымалы нүктелі экспоненциалды сан ([-]d.dddde±dd) шығарылады,

%E – жоғарыдағы сияқты, тек е орнына Е ([-]d.ddddE±dd) шығарылады,

%c – бір символ шығарылуы тиіс,

%s – символдар тіркесі (қатары) шығарылуы тиіс,

%g – нақты сан, сан ұзындығына қарай %e немесе %f қолданыла алады,

%u – таңбасыз ондық бүтін сан жазылып шығады,

%o – таңбасыз бүтін сегіздік сан шығады,

%x – таңбасыз бүтін он алтылық сан шығады.

\n – келесі жаңа жолға көшуді атқаратын басқару символы.

Мысалы:

%9i – бүтін сан ені 9 цифрдан тұрады, сан ені аз болса, оның сол жағында бос орындар орналасады.

%9.3f – нақты сан ені 9 цифрдан тұрады, оның 3 таңбасы бөлшекке беріледі, сан ені аз болса, оның сол жағында бос орындар орналасады.

Әрбір спецификация % символынан басталып, түрлендіру символымен аяқталады. Ол екеуінің ортасында мыналар тұруы мүмкін:- минус таңбасы, аргумент мәні сол жақ шетке ығыстырылып жазылады.- цифрлар, бүтін санның жалпы орналасу енін анықтайды. Сан осы енге немесе одан артық болып шығарылады. Егер аргумент ені көрсетілген еннен аз болса, онда ол бос орындармен толтырылып жазылады. - нүктеге дейін санның жалпы ені, нүктеден соң бөлшек сандар ені көрсетіледі. - L модификаторы, сәйкес аргумент мәні INT емес LONG екенін білдіреді.

 

scanf() енгізу функциясы жоғарыда қарастырылған түрлендіру спецификация­сының көбін пайдаланады.

scanf (<формат тіркесі>,<аргументтер тізімі>);

Аргументтер ретінде адрес нұсқауыштары пайдаланылады. Мысалы:

scanf("%d%f", &x,&y);

Кейбір айырмашылықтарын атап өтейік.

1) %е және %f спецификациялары енгізу кезінде бірдей болып табылады;

2) short типті бүтін санды енгізу кезінде %h спецификациясы қолданы­лады.

ЕСКЕРТУ. Айнымалы адресін беру үшін адрестерді жазғанда, айныма­лы адресін анықтау үшін & символы қолданылады. Ал тіркестік (жолдық) айнымалыны енгізгенде, & символы жазылмайды.

Енді санның дәрежесін есептейтін программа құрайық.

/* Санды дәрежелеу */

#include <conio.h>

#include <stdio.h>

#include <math.h>

{

printf("\n х-ті және оның дәрежесін-у енгізіңіз :\n");

scanf("%f%f",&x,&y);

printf("\nНәтижесі s=%9.2f",s);

}

Бақылау сұрақтары

1. Си тіліндегі мәліметтер типтері мен олардың ені.

2. Оператор дегеніміз не, олар қандай топтарға жіктеледі?

3. Бүтін сан типтері мен оларды қолдану ерекшеліктері.

4. Символдық тип және оны қолдану жолдары.

5. Нақты сандар типтері және оларды пайдалану.

6. Символдық тіркестерді сипаттау.

7. Мәліметтерді пернелерден енгізу функциясы және оның жазылу форматтары.

8. Нәтижені экранға шығару жолдары.

9. Формат арқылы жазылатын енгізу-шығару функциясы қандай қызмет атқарады?

10. Cандардың және олардың арасында қалдырылатын бос орындардың енін қайтіп көрсетеді?

11. Енгізу функциясының жазылуы және оның түрлендіру спецификация­лары.

12. рrintf() және scanf() функцияларының негізгі айырмашылықтар

Дәріс№4

3. СИ ТІЛІНДЕ ҚОЛДАНЫЛАТЫН НЕГІЗГІ ОПЕРАТОРЛАР

Арифметикалық операциялар символдар арқылы жазылады. Си тілінде мынадай операциялар бар:

* – көбейту, / – бөлу, % – модуль бойынша бөлу (қалдықты анықтау), + – қосу, – азайту.

Модуль бойынша бөлу бүтін санды бүтін санға бөлген кездегі қалдықты анықтайды. Мысалы: 20 % 3 = 2.

3.1. Меншіктеу операторы

Меншіктеу операторы символдар арқылы жазылады. Кез келген ; таңбасымен аяқталатын өрнек меншіктеу операторы болып табылады. Өрнектің бір түріне бос оператор жатады, ол жай ; операторы.

Си тілінде меншіктеу операторының бірнеше түрі бар. Жалпы меншік­теу операторының жазылу форматы мынадай болады:

<айнымалы> = <айнымалы> <операция> <өрнек>;

Мұны Си тілінде қысқаша былай жазуға болады:

<айнымалы> <операция> = <өрнек>;

Төменде бірнеше мысал келтірілген.

a=a+b; ® a+=b; a=a*b; ® a*=b;

a=a-b; ® a-=b; a=a/b; ® a/=b;

Си тілінде тізбектеле жазылған меншіктеу операцияларын да қолдануға болады. Мысалы:

sum = a = b;

Мұнда меншіктеу операторы оңнан солға қарай орындалады, яғни b-ның мәні a-ға меншіктеледі, ал а-ның мәні sum-ға меншіктеледі.

Меншіктеу операторын былай да жазуға болады:

1) a = (b = 1) +2;

мұнда a=3, b=1.

2) a = b = 1 + 2;

ал мұнда a = 3, b = 3.

Дөңгелек жақшаға алынған кез келген меншіктеу операторы анық­талған мәні бар өрнек болып табылады, мысалы: ((s=13+12)<=30) деген өрнек ақиқат мәнді болып табылады.

Арттыру немесе кеміту (инкремент және декремент) операция­лары ++ және – – түрінде жазыла­ды. Бұлар кез келген операндтың мән­дерін бірге арттыруға немесе кемітуге мүмкіндік береді.

Инкремент, яғни арттыру операциясы (++) және декремент (--), кеміту операциясы айнымалы (тек айнымалы мәнін) мәнін бірге арттырады немесе кемітеді. Олар айнымалы мәнін өзгертеді, яғни жасырын түрдегі меншіктеу амалы болып табылады. Кейде олар жеке оператор түрінде жазылады:

i++;немесе++i;

Бұл екеуі де мынадай амалмен бірдей болып саналады

i = i + 1;

Бұл екеуін өрнектерде жиі қолданады. Мысалы:

sum = sum + х * --i;

Инкремент пен декремент екі формада жазылады: префикстік және постфикстік. Постфикстік арттыру былай жазылады: х++ , ал префикстік арттыру былай жазылады: ++х .Префикстік амалдар негізгі операция ал­дында, ал постфикстік амалдар негізгі амалдан кейін орындалады.

Постфикстік формада х айнымалысының мәні оны қолданғаннан кейін өзгереді, ал префикстік формада – айнымалы мәні оны қолданғанға дейін өзгереді, яғни бір деген санға артады. Мысалы:

x=k++; /* x=10 k=11 */

x=++k; /* x=12 k=12 */

Арттыру/кеміту операцияларын өрнек ішінде де орындау мүмкіндігі бар. Мысалы:

sum=a+b++;/*алдымен a,b қосылады, сонан соң b 1-ге артады */

sum=a+ ++b;/*алдымен b 1-ге артады, сосын барып a,b қосылады */

Арттыру/кеміту операцияларының приоритеттері өте жоғары, тек жақша ішіндегі операциялардың приоритеті олардан жоғары болады.

Құрама операторбірнеше операторды жүйелік жақшаға алып бірік­тіру үшін қолданылады. Ол шартты және циклдік операторларда жиі қол­да­ны­лады. Мысалы:

#include <stdio.h>

#include <conio.h>

{

int a = 5, b = 6, c = 7, d;

d = (a++ - (--b)) + (c - a--); //d=2 a=5

printf("d=%i a=%d",d,a);

}

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

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

char ® short ® int ® long ® float ® double

Оң жақтағылары сол жақтағылардан гөрі жоғары дәрежелі болып табылады.

Егер char мен short типтері араласса, нәтижесі – chort болады,

алshort пен intтиптері араласса, нәтижесі – int болады,

ал intпен long типтері араласса, нәтижесі long,

ал longпен float типтері араласса, нәтижесі float,

ал float пен doubleтиптері араласса, нәтижесі doubleболады.

Егер екі-үш тип араласып, ең үлкен дәрежелісі – float болса, әрқайсы­сы да және нәтиже де осыған келтіріледі.

Компилятор типтерді автоматты түрде түрлендіру үшін төмендегі негізгі ережелер жиынын пайдаланады:

1. Егер операция екі түрлі типтегі мәліметтер үшін орындалатын болса, онда олар осы мәліметтер типтерінің арасындағы “жоғарғы” типке келтіріледі.

2. “Жоғары” типтен бастап, “төмен” типке дейін реттелген типтер аттарының тізбегі келесідей түрде көрсетіледі:

double

float

long

int

short

char

Меншіктеу операторында оң жақта орналасқан өрнектің есептелген нәтижесі осы оператордың сол жағына жазылған айнымалының типіне келтіріледі. Осындай процесс типтің “жоғарысына” немесе “төменіне” келтірілуі мүмкін.

Мысалы:

#include <stdio.h>

#include <conio.h>

{

fl=i=ch='A';

printf("ch=%c i=%d fl=%6.2f\n",ch,i,fl);

// ch=A i=65 fl= 65.00

ch=ch+1; // ch=66

i=fl+2*ch; // i=65.00+2*66=197

fl=2.0*ch+1; // fl=2*66+1=133

printf("ch=%c i=%d fl=%6.2f\n",ch,i,fl);}

// ch=B i=197 fl=133.00

Келтіру операциясы. Жоғарыда көрсетілген типтердің түрлендірілуі автоматты түрде орындалады. Мәліметтердің көрсетілген қажетті типіне келтіру үшін Си тілінде арнайы бір тәсіл бар. Бұл тәсілде типтерді бірыңғайлау үшін, айнымалының алдында дөңге­лек жақшада қажетті тип­тің аты жазылады. Жалпы түрге келтіру операциясы мынадай болып жазылады: (тип)өрнек. Мысалы:

y=pow(x,2)+sqrt((double)m);

3.3. Программа жұмысын басқару операторлары

Программа жұмысын басқару операторлары программаның басқарушы конструкциясы деп аталады. Олар:

· құрама операторлар;

· таңдау операторлары;

· цикл операторлары;

· көшу операторы.

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

{ n++; жай құрама оператор

summa+=n;

}

{

int n=0;

n++; бұл блок

summa+=n;

}

Қатынас операциялары. Қатынас операциялары екі мәнді салыстыру үшін қолданылады. Си тіліндегі қатынас операциясының тізбегі мынадай: ==,!=, <, <=, >, >=.

Егер қарастырылатын қатынас нәтижесі ақиқат болса, шарттық өрнектің мәні 1-ге тең болып саналады. Егер ол жалған болса, шарттық өрнек мәні 0-ге тең болады. Қатынас операциясының приоритеті арифметикалық операция­лар­ға қарағанда, төмен және меншіктеу операторымен салыстырғанда жоға­ры болады. Ал қатынас операцияларын приоритет­теріне сәйкес етіп екі топқа бөлуге болады. Мұнда соңғы 4 операция­ның приоритеті 1-ші және 2-ші опе­ра­циялар приоритетімен салыстыр­ғанда жоғары болады.

Логикалық оператор. Екі немесе бірнеше шарттық өрнектерді біріктіру үшін логикалық оператор қолданылады. Си тілінде келесі логикалық опе­ра­торлар бар:

1) және (&&) операциясы; f1 && f2

2) немесе | | (or) операциясы; f1 | | f2 ( | коды - 124 )

3) терістеу ! (not) операциясы. !f1

Терістеу (емес, қарсылық) операциясының приоритеті өте жоғары, одан тек жақша ішіндегі мәндердің проритеті жоғарылау болады. && операциясы­ның приоритеті | | (or) операциясымен салыстырғанда жоға­ры, ал осы екеуі­нің приоритеттері қатынас операцияларымен салыстыр­ғанда төмен, меншік­теу операциясынан жоғары болады.

Таңдау операторлары – бұлар шартты оператор және ауыстырғыш.

Шартты оператордыңорындалу

схемасы мен жалпы жазылу түрі мынадай:


<== попередня лекція | наступна лекція ==>
Пайдаланылатын символдар | Шартты операция


Онлайн система числення Калькулятор онлайн звичайний Науковий калькулятор онлайн