1.Программалау тілдері. Си тілінің негізгі элементтері.
С бағдарламалау тілі 1972 жылы Bell Laboratories фирмасының қызметкері Денис Ритчидің басшылығымен Америкада жасап шығарылды. Одан бұрын А және В бағдарламалау тілдері пайда болғанымен, бірақ олар кең қолданыс таба алмады.
С тілі- құрылымы Паскаль тіліне ұқсас жоғары деңгейлі қуатты тіл. Оның төменгі деңгейлі Ассемблер тілімен де ұқсастығы бар. Сондықтан, оны әдебиеттерде орташа деңгейлі тіл деп те атайды.
С тілі арқылы компилятор және операциялық жүйе сияқты жүйелік бағдарламалар жазылады. Бұл тілде жазылған алғашқы бағдарламалық жабдық- Unix операциялық жүйесі.
С тілінің стандарты 1983 жылы Американың ұлттық стандарттар институтында бекітілді және ANSI C деп аталды. 1980 жылдың басында сол фирма қызметкері Бьерн Строуструп С тілінің нысанды- бағдарлы кеңейтілуін жасады. Ол тіл 1983 жылы С++ деп аталды.
2.Си бағдарламалау тілінің алфавиті.
Барлық бағдарламалау тілдерінің өз алфавиті болады. Алфавит – бағдарламада пайдаланылатын түрлі символдар (әріптер, цифрлар, таңбалар, белгілер). С/C++ тілінің алфавиті төмендегідей:
Латын алфавитінің бас (A-Z) және кіші (a-z) әріптері
Араб цифрлары: 0 – 9
Арнайы символдар: { }, | [ ] ( ) + - / % \ ; ‘ : ? < = > _ ! & # ~ ^ . *
Жолда, символдық тұрақтыда және түсіндірме мәтінде басқа да белгілер, мысалы орыс алфавитінің әріптері қолданылады. Бос орын символымен бөлінбеген кейбір символдар комбинациясы тұтас бір символ ретінде түсініледі.
Мысалы: ++ -- == && || << >> <= += -= *= /= /* */ //
Түсіндірме мәтін Турбо С тілінде /* */ символдар жұбы арқылы,
С++ -те // символдары көмегімен жазылады.
Мысалы: 1) /* Герон формуласы */
2) // Үшбұрыштар теңсіздігі
Идентификаторлар
Әріптен немесе _ белгісінен басталған латын әріптерінің, цифр және _ белгісінің тізбегі идентификатор болып табылады.
Мысалы: x1, esep_1,max, _min, SUMMA
Паскаль тілінен айырмашылығы бұл тілде бас және кіші әріптер ажыратылады. Мысалы: max, Max, MAX, mAX- әртүрлі идентификаторлар.
Қызметші сөздер
Паскаль тіліндегі сияқты С++ -те қызметі бір мәнді анықталатын идентификторлар- қызметші сөздер қолданылады. Олардың толық тізімі компилятор түріне байланысты болады. Дегенмен, барлығына ортақ қызметші сөздер тізімі болады.
Мысалы: auto, break, сase, char, continue, if, goto, void, while, long, union т.б.
Деректер типтері
Сандық деректердің С++ тілінде 4 базалық типі бар. Олар int, char- бүтін, float, double- нақты.
Олардан басқа бағдарламада бұл типтердің модификациясы қолданылады. Олар төмендегі 1- кестеде көрсетілген.
Кесте 1. С++ тіліндегі деректер типтері
С++ тіліндегі бағдарламада айнымалыны сипаттау форматы төмендегіше болады:
типтің_ аты айнымалылар_ тізімі;
Айнымалыларды сипаттау мысалдары:
int x,y,z;
unsigned long max1,max2;
float a,b,c;
Сипаттаумен бір мезгілде айнымалының бастапқы мәнін беруге де болады. Мұндай әрекет айнымалыны инициализациялау деп аталады.
Жалпы түрі: тип айнымалының_ аты= бастапқы_ мәні;
Мысалы: int Sum=0, n=0;
float p=1.55 ;
unsigned int x=100, year=2013;
Тұрақтылар
Бүтін және сандық тұрақтылар Паскаль тіліндегідей жазылады. Ерекшелігі, суффикс қолдануға болады, ол арқылы бағдарламалаушы тұрақтының типін көрсетеді. Суффикстің үш типі болады: F (f) - float, U(u)- unsigned, L(l) - long.
Сонымен қатар, U және L суффикстерінің қосарлы UL немесе LU нұсқалары да қолданылады.
Мысалы: 3.14F, 100U, 512345UL
Cимволдық тұрақтылар апострофқа алынады. Мысалы: ‘V’, ’a’, ’1’, ’%’, ’)’
Ал символдар тізбегінен құралған жолдық тұрақтылар тырнақшаға алынады.
Мысалы: “Қосынды=”, “х, у мәндерін енгіз”.
3.Си бағдарламалау тіліндегі басқару символдары.
Символдық тұрақтылар ішінен басқару символдары деп аталатын символдар тізбегі ерекше қызмет атқарады. Олар экранға шығаруды басқаруды жүзеге асырады. Басқару символдары ‘\’ символынан басталады. Басқару символдары төменде көрсетілген:
‘\n’- жаңа жолға өту
‘\t’- көлденең табуляция
‘\r’- меңзерді жол басына қайтару
‘\\’- кері сызық
‘\’’- апостроф
‘\0’- нөлдік символ
‘\a’- дыбыстық сигнал беру
‘\b’- бір символға кері қайтару
‘\f’- келесі бетке өту
‘\v’- тігінен табуляция
‘\?’- сұрақ белгісі
Мысалы: “\n Мәтін \n үш жолға \n шығады”
Тұрақты айнымалылар
Тұрақты айнымалыларды жазу үшін const қызметші сөзі қолданылады. Жалпы түрі: const тұрақтының_типі тұрақтының_ аты =мәні;
Мысалы:
const float x=2.55, y=1.22;
const int min=1, max=100;
Тұрақты айнымалыларды #define директивасы арқылы да жазуға болады. Жалпы түрі: #define тұрақтының_ аты тұрақтының_ мәні;
Бұл жағдайда жоғарыдағы мысал былайша жазылады:
#define x 2.55
#define y 1.22
Ескерту! Бұл жағдайда тұрақтының аты мен мәнінің арасына теңдік белгісі және соңында нүктелі үтір белгілері қойылмайды.
Саналатын тип тұрақтылары
Атаулы бүтін санды тұрақтыларды саналатын тип арқылы енгізуге болады. Оның жазылуының жалпы түрі:
enum саналатын_ мәндердің _типі {атаулы_тұрақтылар_тізімі};
мұндағы enum- саналатын мәндерді енгізудің қызметші сөзі;
Атаулы тұрақтылар тізімі тұрақтының_аты= тұрақтының_ мәні түрінде болуы да мүмкін.
Мысалы: enum {one=1,two,three,fout};
enum Day {Sunday, Monday,Tuesday};
enum Boolean {Yes,No};
Саналатын типтегі мәндер 0-ден бастап, солдан оңға қарай өсу ретімен нөмірленеді.
4.Си бағдарламалау тілінде қолданылатын операциялар.
Өрнектер тұрақтылар мен айнымалылардан, арифметикалық, логикалық және қатынас операциясының белгілерінен және стандарт функциялардан құралады.
Бір операндқа қолданылатын операция унарлық, екі операндқа қолданылатын операция бинарлық деп аталды.
Арифметикалық операциялар
Бинарлық арифметикалық операцияларға келесілер жатады:
+ қосу
- азайту
* көбейту
/ бөлу
% модуль бойынша бөлу (Паскальдағы mod- тың ұқсасы, яғни бір операндты екіншіге бөлгендегі қалдық).
Ал, унарлық арифметикалық операциялар:
++ бірге арттыру (инкремент)
- - бірге кеміту (декремент)
% операциясынан (ол тек қана бүтін санға қолданылады) басқасы деректердің кез келген типіне қолданылады.
Мысалы: x=x+1, x++, ++x үш операцияның нәтижесі бірдей.
+, - операцияларының айнымалының оң немесе сол жағында жазылуы әртүрлі рөл атқарады. Егер операция сол жағында тұрса, (мысалы ++x) алдымен бірге арттыру әрекеті орындалады, керісінше жағдайда (яғни, x++) бірге арттыру әрекеті айнымалы өзі кіретін барлық өрнек есептеліп болған соң ғана орындалады.
Мысалы:1) x=5; y=x++; алдымен х- тің мәні у-ке меншіктеледі, сонан соң ғана х- тің мәні 1- ге өседі. х- тің бастапқы мәні 5-ке тең болса, жоғарыдағы операция нәтижесінде y=5, x=6 болады.
2) x=5; y=++x; операциясының нәтижесінде x=6, y=6 болады.
3) a=3; c=2; x=a++ * c++; Нәтижеде a=4, c=3, x=6 болады.
4) a=3; c=2; x=++a * ++c; Нәтижеде a=4, c=3, x=12 болады.
Қатынас операциялары
С++ тілінде басқа бағдарламалау тіліндегі сияқты қатынас операциялары қолданылады. Олар:
> үлкен
>= үлкен немесе тең
< кіші
<= кіші немесе тең
= = тең
!= тең емес
Паскаль тілінен ерекшелігі “тең” және “тең емес” қатынастарының белгіленуінде ғана.
С++ тілінде деректердің логикалық типі жоқ. Сондықтан, қатынас операциясының нәтижесі бүтін сан болады. Егер шарттың нәтижесі ақиқат болса, 1-ге, жалған болса 0-ге тең.
Мысал: 5>1, ‘x’==’x’ қатынастарының мәні 1-ге, ал 5!=5, ‘x’==’X’ қатынастарының мәні 0-ге тең.
Логикалық операциялар
Негізгі логикалық операциялар С++ тілінде төмендегіше белгіленеді:
&& - конъюнкция (логикалық «және»)
|| - дизъюнкция (логикалық «немесе»)
! - инверсия немесе терістеу (логикалық «емес»)
Төмендегі 2- кестеде өрнектердің логикалық және қатынас операцияларын қолданып, С++ тілінде жазылу мысалдары көрсетілген.
Кесте 2. Логикалық және қатынас операциялары
математикалық өрнектің жазылуы
|
С++ тілінде жазылуы
|
0 |
x>0 && x<10
|
y≤-1 немесе y≥1
|
y<=-1 || y>=1
|
x≠y
|
!(x= =y)
|
a=b
|
a= =b
|
‘a’≠’A’
|
‘a’!=’A’
|
Логикалық және қатынас операцияларының орындалу реті төмендегіше болады:
1) !
1) >, <, >=, <=
1) ==, !=
1) &&
1) ||
Меншіктеу операциясы
Меншіктеу операциясының жалпы түрі төмендегіше болады:
айнымалының атауы=өрнек;
Мысалы: x=5; D=b*b-4*a*c; a=b=0;
Cонымен қатар, С++ тілінде меншіктеу операциясының құрама түрі қолданылады: +=, -=, /=, *=, %=
Мысалы: Төмендегі өрнектер баламалы болып табылады.
i+=2 және i=i+2
p/=5 және p=p/5
a*=b+c және a=a*(b+c)
x-=y және x=x-y
n%2 және n=n%2
х=х+2 өрнегінің орнына х+=2 деп жазған ыңғайлы болып табылады, себебі екінші өрнек тезірек орындалады.
Шартты операция
Шартты операция үш операндқа арналған операция. Оның форматы:
логикалық өрнек ? 1- өрнек: 2- өрнек;
немесе
айнымалы=логикалық өрнек ? 1- өрнек: 2- өрнек;
Бұл операция тармақталу алгоритмдік құрылымын жүзеге асырады. Алдымен, логикалық өрнектің мәні есептеледі. Егер оның мәні ақиқат болса, онда 1- өрнек, керісінше жағдайда 2- өрнек орындалып, нәтиже экранға шығады.
Мысалы:
1) х айнымалысының модулін анықтау
x<0 ? –x: x;
1) екі санның үлкенін табу
max=(a<=b) ? b : a;
1) екі санның үлкенін екі еселеу
a>b ? 2*a: 2*b;
5.Си бағдарламалау тілінің құрылымы.
С/C++ тіліндегі бағдарлама құрылымы келесі бөліктерден тұрады:
1.Бағдарлама тақырыбы
2.Айнымалыларды сипаттау
3.Бағдарлама денесі
Бағдарлама тақырыбы #include <тақырыптық файл аты> препроцессорлық директивасынан басталады. Бір бағдарламаға бірнеше тақырыптық файл қосылуы мүмкін. Тақырыптық файлда бағдарламада қолданылатын стандарт кітапханалық функциялар сақталады. Ол функцияны қолданар алдында include операторы арқылы сәйкес тақырыптық файл қосылуы қажет.
Мысалы: 3- кестеде көрсетілген стандарт математикалық функцияларды қолдану үшін бағдарлама тақырыбында
#include > командасы жазылуы қажет.
Тақырыптық файлдардың типі h болады (h- header- тақырып).
Паскаль тіліндегі сияқты C++ тілінде де бағдарламада қолданылатын айнымалылар алдымен сипатталуы (хабарлануы) қажет. Оның жалпы түрі:
типтің_ аты айнымалылар_ тізімі;
Мысалы: int a,b;
char k1,k2,k3;
unsigned char c;
float x1,y1;
double e,f,g;
Бағдарлама денесі main() функциясынан кейін орналасады. Жалпы түрі:
main()
{
операторлар;
}
Бағдарлама денесі {} фигуралық жақшаға алынады.
Экранға форматтап шығару операторы
Экранға форматтап шығару операторының жалпы түрі төмендегіше болады:
printf(“формат жолы”, аргументтер тізімі);
printf() операторында экранға шығатын айнымалының форматын көрсететін түрлендіру спецификаторы қолданылады. Ол % белгісінен басталады. Төмендегідей түрлендіру спецификаторы қолданылады:
%d- таңбалы бүтін сан
%f- тұрақты үтірлі нақты сан (float)
%u- таңбасыз бүтін сан (unsigned)
%e- жылжымалы үтірлі нақты сан (double)
%c- символ
%s- жол
%ld- ұзын бүтін (long int)
%hu- таңбасыз қысқа бүтін (short unsigned)
%Lf- ұзын нақты(long double)
printf() операторын қолдану мысалдары:
printf(“\n Қосынды=%d”, S);
printf(“\n S =%d”, S);
printf(“ Есептің нәтижесі”);
printf(“ \n Шеңбер ауданы=%f”, 3.14*R*R);
Мұндағы, %d, %f экранға шығатын бүтін және нақты айнымалының спецификаторы.
Нақты санды экранға форматтап шығаруға болады. Ол үшін екі параметр көрсетіледі:
өріс ені- айнымалыға экраннан бөлінетін орын саны
дәлдік- бөлшек бөлікке бөлінетін орын саны
Олар % және формат символының арасында бір- бірінен нүктемен бөлініп жазылады.
Мысалы: x=5.234532;
printf(“\n x=%4.2f”,x);
Нәтижеде экранға x=5.23 саны шығады.
Форматтап енгізу операторы
Пернетақтадан форматтап енгізу операторының жалпы түрі төмендегіше болады:
scanf(“формат жолы”, аргументтер тізімі);
Аргумент алдында & айнымалы адресінің операциясы жазылады.
Мысалы: scanf(“%d”, &x);
scanf(‘%d%d%f”,&a,&b,&y);
Деректерді енгізу- шығаруды жүзеге асыратын printf(), scanf()операторлары stdio.h тақырыптық файлында орналасқан. Сондықтан, бағдарламада осы екі оператор қолданылатын болса, онда бағдарлама тақырыбында #include <stdio.h> командасы жазылуы қажет. (stdio- standart input output- стандартты енгізу шығару)
Мысал 1. Радиусы берілген дөңгелектің ұзындығын және шеңбердің ауданын табу бағдарламасын құрыңдар.
#include
#include
main()
{ const float pi=3.14;
int r; float L,S;
printf(“ радиусты енгіз”);
scanf(“%d”,&r);
S=pi*r*r;
L=2*pi*r;
printf(“\n S=%4.2f L=%4.2f”, S,L);
getch();
}
Бағдарламаны орындатып, радиусқа 5 мәні енгізілсе, нәтижеде S=78.50 L=31.40 мәндері шығады.
Бағдарламаның нәтижесі кез келген пернені басқанға дейін экранда көрініп тұру үшін conio.h тақырыптық файлында анықталған getch() операторы қолданылады.
Мысал 2. Берілген үш таңбалы бүтін санның цифрларының қосындысын табатын бағдарлама құрыңдар.
#include
#include
main()
{ int x,y,a,b,c;
printf(“ үш таңбалы санды енгіз”);
scanf(“%d”,&x);
a=x/100;
y=x%100;
b=y/10;
c=y%10;;
printf(“\n S=%d”,a+b+c);
getch();
}
Бағдарламадағы “%” операциясы бүтін санды бүтін санға бөлгендегі қалдықты, ал “/” операциясы санды санға бөлгендег