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) операциясымен салыстырғанда жоғары, ал осы екеуінің приоритеттері қатынас операцияларымен салыстырғанда төмен, меншіктеу операциясынан жоғары болады.
Таңдау операторлары – бұлар шартты оператор және ауыстырғыш.
Шартты оператордыңорындалу
схемасы мен жалпы жазылу түрі мынадай: