Си программалау тілі



Кіріспе
Тарау 1. Жалпы түсінік және мәліметтер
• Тілдің жалпы түсінігі
• Мәліметтер типі
• Айнымалылар мен константалар
• Ақпаратты енгізу және шығару
• Мәліметтерді формат бойынша шығару
• Мәліметтерді форматтап енгізу
• Программа құрылымы
Тарау 2. Операциялар мен операторлар
• Си тіліндегі операциялар
• Типтерді түрлендіру
• Көрсеткіштер және оларға қолданылатын операциялар
• Цикл операторлары
• Шартты көшу және шартсыз көшу операторлары
Тарау 3. Структураланған мәліметтер типі
• Массивтер
• Бір өлшемді массивті өңдеу
• Екі өлшемді массивті өңдеу
• Символдар жолы
• Көрсеткіштер
• Структуралар және біріктірулер
Тарау 4.Файлдар
• Потокты ашу параметрі мен режимдері
• Таңбаларды жазу және оқу
Тарау 5. Си тілінің басқада мүмкіндіктері

Си программалау тілі.
Мазмұны
Кіріспе
Тарау 1. Жалпы түсінік және мәліметтер
• Тілдің жалпы түсінігі
• Мәліметтер типі
• Айнымалылар мен константалар
• Ақпаратты енгізу және шығару
• Мәліметтерді формат бойынша шығару
• Мәліметтерді форматтап енгізу
• Программа құрылымы
Тарау 2. Операциялар мен операторлар
• Си тіліндегі операциялар
• Типтерді түрлендіру
• Көрсеткіштер және оларға қолданылатын операциялар
• Цикл операторлары
• Шартты көшу және шартсыз көшу операторлары
Тарау 3. Структураланған мәліметтер типі
• Массивтер
• Бір өлшемді массивті өңдеу
• Екі өлшемді массивті өңдеу
• Символдар жолы
• Көрсеткіштер
• Структуралар және біріктірулер
Тарау 4.Файлдар
• Потокты ашу параметрі мен режимдері
• Таңбаларды жазу және оқу
Тарау 5. Си тілінің басқада мүмкіндіктері

Кіріспе.
Қазіргі кездегі программалау тілінің арасында ең көп тараған тілдердің
бірі Си универсалды программалау тілі. Бірақ оны системалық программаларда,
транслятор, операциялық системаларды жазуда қолдану жақсы жетістіктер
береді. Си программалау тілін 1972 жылы Bell laboratories фирмасының
қызметкері Денис Ритчи ойлап тапты. Тіл системалық программаларға арналған
деп саналғанымен оның мүмкіндігінің өте үлкен болғандықтан оны қолданады,
программаларды жазуға да пайдалануға болады. Си тілінде жазылған
программаның архитиктуралары әр түрлі компьютерлердің бірінен бірін
ауыстыруға бір операциялық системаның екінші операторлық системаға
ауыстыруға жеңіл. Сонымен қатар Си тіліндегі программалардың орындалу
жылдамдығы ассемблер тіліндегі программалардан кем емес. Си тілінің
компиляторы қазіргі кездегі барлық операциялық жүйеде жұмыс істей береді.
Unix, MSDOS, WINDOWS.

Тілдің алфавиті.

Латын алфавитінің әріптері.
1.А,В...Z,a,b,c...z;
2.0...9;
3.”, , {}, (), [], +,-,,%,\,,’,.,:,=,=,,,=,-,!,&, *,#,((,
4. Өрнектеуге болмайтын символдар: бос орын: табуляция, жаңа жолға көшу.
5. Коментария жазу үшін орыс альфавиті қолданылады.

Идентификаторлар. Тілдің ең негізгі түсіністерінің бірі-
идентификатор. Ол объектінің атауы ретінде қолданылады. (функцияның,
айнымалының, константалардың)
Идентифатор төмендегі ережеге сай таңдалуы қажет:
1. Олар латын әріптерінің х немесе астын сызу басталуы қажет .
2. Оның ішінде латын әрпі және астын сызу белгілері қолданылуы
мүмкін. Бөтен таңбаларды қолдануға болмайды.
3. Си тілінде кіші және үлкен латын әріптері өзгеше деп саналады.
4. Идентификатордың ұзындығы әр программаның жүйесінде әр түрлі ANSI
стандарты бойынша 32 таңбадан аспауы керек . Си ++ те шектеуі жоқ.
5. Объектілердің идентификаторы тілдің, түйінді сөздерінің стандартты
функциядан және библиотека аттарынан өзгеше болуы қажет.
Си программалау тілінде түсініктемеге көп көңіл қойылады. Ол программаны
теруді жеңілдетеді. Каментарий мына * және таңбалармен шектеледі. *Бұл
түсініктеме * Си++те мынадай тәсілі бар мына таңбадан кейін тұрған
символдың бәрін сол қатер аяғына дейін түсініктеме деп түсінеді.

Мәліметтер түрлері.(Типы данных)

Программалар әр түрлі мәліметтермен жұмыс істейді. Олар қарапайым
мәліметтерге бүтін және нақты сандар объектінің жадыдағы адрестерінің
көрсеткіштері жатады.
Реттестірген мәліметтерге массивтер, файлдар жатады. Тілде мәлімет
түрі және түрдің модификаторы. Екі ұғым бар мәлімет түрі мысалы бұл бүтін
сан ал модификатор бар немесе таңбалары жоқ дегенді білдіреді. Таңбалары
бар бүтін сан оғ және теріс сан қабылдай алады, ал таңбасы жоқ сан тек қана
оң сан қабылдай алады. Си тілінде 5 базалық түрі бар:
1. Char-символдық.
2. Int-бүтін сан.
3. Float-нақты сан.
4. Double-ұзын нақты сан.
5. Viod-мәні жоқ.

1. Char типті айнымалының өлшемі бір байт, оның мәндері әртүрлі символдар
‘f’, ‘a’, ‘k’, ‘,’ программада оларды апострафқа алып жазу керек.
2. Си тілінде бүтін айнымалының өлшемі бір машиналық сөзге тең.-32768-
+32767.
3. Float түйінді сөзі нақты сандардан айнымалыда анықтауға қолданылады.
5,6,31,33,-2.01. Нақты санды 3 көшпелі нүкте арқылы да жазуға болады.
54000(54 ( 10 =54E 3 5.4 (54E-1(0.54E1.E таңбасы алдында тұрған санды
маркиса, ал Е деп тұрған санды көрсеткіш деп аталады. Float айнымалысына
32 бит беріледі.3.4У-387-3. 4Е+38.
4. Double-түйінді сөзі 2 еселенетін дәлдікпен берілген нақты сандарды
анықтайды. Ол ЭВМ жадында 64 бит орын алады. 1,7 Е-308-1-1,7У-308.
5. Viod-түйінді сөзі объетінің мәнін бейтарап етіп қалдыру үшін
(нейтрализовать). Ешқандай мәнді әкелмейтін функцияны хабарлау үшін
қолданылады. Кейбір базалық типтердің объектісі өзгертілуі мүмкін. Ол
үшін арнайы түйінді сөз модификатор деп аталады. ANSI стандарты бюойынша
мынадай модификатор бар Unsigned, Signed, shott, long. модификаторлар
спецификаторлардың алдында жазылады. Мысалы: Unsigned char.Егер
модификатордан соң спецификатор жазылмаса, онда Си компиляторы оны бүтін
деп түсіндіреді. Мысалы long a, long int a, екеуі де бір мағына береді.

Айнымалылармен мен константалар.

Программада қолданылатын барлық айнымалылар оларды пайдалануға дейін
хабарлануы тиіс.
Хабарлау-объектің қасиеттерін көрсетеді. Мыс: типі бүтін сан,размері 4 байт
хабарлау оған ЭВМ жадыларына орын дайындау үшін қажет Айнымалыларды
бірнеше қатарға жазуға болады. Айнымалыларға оларды хабарлау кезінде мән
беруге де болады.
int a=5,b=47;
char x=’b’;
char
Си тілінде жалпы глобальные және жеке локальные объектілер болуы мүмкін.
Глобальные-функциясынан тыс анықталады. Сондықтан кез-келген функция үшін
жұмыс.
Локальные-функцияның ішінде қолданылады.
Int a*-Жалпы айнымалыны анықтау.*
int function (int b, char c)-*Функцияны хабарлау.*
{ *программа денесі.*
int d,l; жеке айнымалыларды сипаттау.
float.f
int function(int b,char c)*-функцияны және оның
формальдық параметрлерін анықтау.*
{ *функция денесі.*
char g;
}
Программа main() функциясын шақырудан басталады. Ол программа денесі. Ал
программа денесі {} арасында жазылады. Функция денесі де аралығында
жазылады.

Константалар.

1.Нақты сандар-123.456,5.6Е-4.Олар функциясы түрінде жазылады:
123.456 5.6Е-4 .
2. Бүтін сандар 125.
3. Қысқа бүтін сандар - олардың соңында Н немесе әрпі жазылады.
275Н,275n.
4. Ұзын бүтін сандар – олрадың соңында немесе әріптері жазылады.
361327L ,247499l.
5. Таңбасыз - олрадың соңында және әріптері жазылады.
361327U,361327u .
6. Сегіздік сандар – олрадың алдында әрпі жазылады.
7. Ол алтылық санау жүйесіндегі сандар – олардың алдында ОХ және Ох
жазылады. Ох 57.
8. Символдық – апостровқа алынатын жалғыз символ 0,2.
9. Қатарлық (строк) – тырнақшаға алынған символдар тізбегі бұл
қатарлық константа.
10. Константалық өрнек – а 60+301.

Мәліметтерді енгізу және шығару.

СИ де мәліметтерді енгізу – шығару билиотека функциялары арқылы
ұйымдастырылады. Ең қарапайым енгізу механизмі detchar( ) функция арқылы
бір символды оқу. Ол былай жазылады: int detchar(void).
Бұл жерде аргумент типі, ал функцияның мәні бүтін болады.

Операторлар.
x=detchar( )
x айнымалысына келесі енгізілетін символды меншіктейді. Ол бүтін
немесе символдық болу мүмкін.
2)putchar(x); х-айнымалының мәндерін шығарады detchar(x); және puts
хабарлаулары stdio.h атты библиотека функциялары да бар фаилда жазылған.
Библиотекалық программаларды библиотекаларда қолдану үшін stdio.h фаилды
іске қосу керек. Ол препроцессорлардың мынадай дерективасы арқылы
#includestdio.h.
Программалардың басында detchar( ) функциясы үшін символды
енгізілгеннен кейін Enter клавишін басу қажет,ал detche ( ) және detch( )
функциялары . Ол режимді, алып тастайды. Enter-ді баспауға болады.

Екеуінің айырмашылығы енгізілген символдарды экранда көрсетеді. Ал
detch - көрсетпейді.

Мәліметтерді формат бойынша шығару.

Фаил ішінде f функциясы мәліметтерді форматтап шығаруды, іске
асырады.
Форматы: stdio.h (“басқару жолы”, аргумент 1, аргумент 2, ...,)
Басқару жолы – үш тип компанентінен тұрады.
1. Кәдімгі символдар.
2. Түрлендіретін символдар.
3. Басқару константалары.

Түрлендіру спецификациялары % белгісінен басталады да
түрлендір символыменен бітеді.
% (белгілер( (өріс ені( (дәлдігі(FNh(l( c-n.
С-n- түрлендіру символы блай жазылуы мүмкін.
С-аргумент мәні символ болады.
D немесе i – аргумент мәні ондық сан болады.
е -аргумент мәні ехе потенциалды түрде берліген нақты сан.
E-аргумент мәні ехе потенциалды түрде берліген нақты сан.
F және f – жылжымалы нүкте арқылы берілген нақты сан.
G,g – қажет емес 0-ді өшіреді.
O – аргумент мәні сегіздік жүйедегі сан.
S – сегіздік жүйедегі символдар қатары.
u – таңбасыз бүтін сан.
х,x – аргумент мәні он алтылық жүйедегі сандарды
қабылдайды.
р – аргумент мәні көрсеткіш (указатель).
n - форматтау операциясының ішінде қолданылады.
( g,f,l,x –символдарының алдында қолданады.
Егер ( таңбасынан кейін түрлендіру символы тұрмаса оны экранға
шығарады.

Print f () функциясы басқару қатарын қолданады.
Қанша аргумент бар, олардың типтері қандай?
Басқару символдарының ең көп қолданылатындары:
а – дыбыс символдарын аз уақыт беру.
в – курсорды бір позицияға солға жылжыту.
f – формат көрсету.
n -жаңа жолға шығу.
r -көрсеткішті қатар басына келу.
t-горизантальды табуляция.
v-вертикалды табуляция.
\\-- тағбаларын экранға шығару.
-.-экранға шығады.
\-- экранға шығады.
\?-?-белгісін экранға шығарады.

Мысалы: print f((tcomputer)n(d\n,(i)
Алдымен горизантальды табуляция орындалады, яғни курсор экран шетінен
жылжиды. Одан соң компьтер деген сөз экранға шығады. Одан соң курсор келесі
жолдың басына көтеріледі. Одан соң I деген бүтін сан % d ондық формуласы
бойынша экранға шығады. Ең соңында курсор келесі жолдың басына көшеді.
Символдар қатарын экранға былайша шығаруға болады. print f((бұл
символдар қатары()

Мәліметтерді форматтап енгізу.

Scan f () функциясы формат бойынша мәліметтерді енгізеді.
Форматы : Scan f () (“басқару қатары”, аргумент 1,аргумент 2...).
Аргументтер-сәйкес мәндер көрсеткіштері. Сондықтан айнымалылар алдында
белгісі жазылады.
Басқару қатары-түрлендіру спецификаттарын көрсетеді. Оларға бос
орындар,табуляция символдары , жаңа жолға көшу. Түрлендіру символды баспаға
шығару символдарына ұқсас. Кейбір симолдарының алдында модификациялар
жазылуы мүмкін.
F – tar типті көрсеткішті көрсетеді.
N - near типті көрсеткішті көрсетеді.
h – char int типті көрсеткішті көрсетеді; бұл d,i,o-u,x символдарының
алдында жазылуы мүмкін.
l - long int типті көрсеткішті көрсетеді.
L - long double типті көрсеткішті көрсетеді.
Мыс: бүтін сан int a символ в-ны нақты сан t былай енгізуге болады.
Scanf ((% d(, (a)
Scanf ((% l(, (b); Scanf ((% d%c%f((a,(b,(c”)

Программа құрылымы.

Программа мынандай элементтердің жиынынан тұрады. Процессорлардың
командаларды, компилятор көрсеткіштері, хабарламалар мен анықтамалардан
тұрады.

Припроцессорлардың дерективалары программа

Тестерінің компиляция алдында өзгертеді. Компиляторға
көрсеткіштер арнайы құрал-саймандар (указатель), олар
арқылы программа орындалады (скомпилируется).
Айнымалыларды хабарлау – айнымалының атрибутын көрсетеді.
Айнымалыларды анықтау – – оған ЭВМ жадынан орын береді.
Функцияларды хабарлау – оның атын, оның формальдық параметрлерінің
атрибутын көрсетеді. Cu тіліндегі программа орындалуы үшін кем дегенде бір
функция болуы қажет. Егер бірнеше функция болса олардың біреуі бас функция
болып, оның аты main () болуы мүмкін.
Мысалы: int x =1;\* айнымалыларды анықтау*
int y=2;
extern int printf (char*, ...); \* функцияны хабарлау*
main () \* бас функцияны анықтау *
{int r ;* айнымалыларды анықтау *
int w;
z=y+x; .w=y-x;
printf ((r=%d\w=%d\n(,r,w);
}

Тарау 2. Операциялар мен операторлар

Cu тілінің операциялары.

Тілдің кез-келген өрнегі операторлардан (айнымалылар, константалар) ,
операцияларынан тұрады. Операциялардың орындалу ретін дөңгелек ретін
дөңгелек жақша арқылы ұйымдастыруға болады.
1. дәреже.
2. *,.
3. +;-;

қосымша операциялар бар. Ол логикалық операциялар.

!= тең емес
== тең
- логикалық или
((И
?:-шартты операция
=-меншіктеу.

Оператор мен операция ұғымдарын жаңылыстырмау үшін айтып кетейік. Оператор
программаның ең кіші бірлігі. Си де оператор соңында ; белгі қолданылады.

Операторлар.

Меншіктеу операторы –х=у.
Х айнымалысына у айнымалысының мәнін меншіктейді. = белгісін бірнеше рет
бір өрнектің ішінде жазуға болады. Мысалы: х=y=z=100
Арифметикалық операциялар -+-,*,% символдары жазылды. Процентті нақты
санға қолдануға болмайды. Мыс: а=d+c; x=y-z;
z=t*v;
s=kl;
p=g%w;

Логикалық операциялар мынадай таңбалармен жазылады.

( (1-(“И”),(“ИЛИ”),(“НЕ”),,,==,=, =,!= тең емес.
Бұл операциялардың нәтижесі шын және жалған болады.Шын(0,жалған=0.

х у х((у ху !х
0 0 0 0 1
0 1 0 1 1
1 0 0 1 0
1 1 1 1 0

Тілде ++ және (( операциялары бар.
++ -операндылардың мәнін 1-ге арттырады.
((= операндыларының мәнін 1-ге кемітеді.
Мыс:а=в+с++; а1=в1+++с1.

Бұларды операндылардың алдында және соңын да жазуға болады.
Мыс:в=в1=2,с=с1=4 онда операция орындалып болғаннан кейін
а=7,в=2,с=5,а1=7,в1=2,с1=7.

Типтерді түрлендіру.
Егер өрнекте әр түрлі типті операндылар бар болса,оларды бір жалпы типке
келтіру керек.Ол үшін мынандай функциялар тізімі бар.

1.Егер операндылардың біреуінің типі double болса ,онда қалғаны да сол
типке келтіріледі.
2.Немесе long болса қалғаны да сол типке келтіріледі.
3.Немесе float типті болса қалғаны сол типке келтіріледі.
4.Немесе unsignet болса қалғаны сол типке келтіріледі.
5.long болса қалғаны сол типке келтіріледі.
6. unsignet болса қалғаны сол типке келтіріледі.
7.int болса қалғаны сол типке келтіріледі.
int a=30000;
float b;
- - - - -
b=(float)a*12;

Көрсеткіштер(указатели) және олармен операциялар.
Көрсеткіш-жадының адресін көрсететін айнымалы.
Операция(-объектілердің адресін береді.Сонан соң y=(x; мына операторлар х
айнымалысының адресін у айнымалысына меншіктейді.
( операциясын консьантаға, өрнектегенде қолдануға болмайды.
Унарлық операция (*)-өзінің операндыларын бөтен бір объектілердің адресі
ретінде қолданылады.Сондықтан да z=*y z-ке у адресінде жазылған
айнымалының мәнін меншіктейді.Егер у=*x;z=*y болса онда z=x;
белгісінен тұратын объектілерді былай белгілеу қажет:
int *a,*b,*c, char*d;*-dадресінде жазылған айнымалының мәні char дегенді
білдіреді.
Көрсеткіштер өрнектерде де қолданылуы мүмкін:
у=7;7санын у адреске салады*
*х*=5*x адресіндегі мәнде 5-ке көбейту.*
(*z)++; *-z адрестегі мәнге 1-ді қосады.

Көрсеткіштерді арифметикалық өрнектерде операнд ретінде де қолдануға
болады. Егер у көрсеткіш болса, онда у ++ оның мәнін өсіреді. Енді ол
келесі элементтердің адресі болдады. Көрсеткіш пен бүтін санды қосуға
болады.

Цикл операторлары

1. Cu тілінде 3 цикл операторлары бар: for, while, do while.

форматы: for (өрнек 1; өрнек 2; өрнек 3) цикл денесі.
Цикл денесі-1оператордан тұрса, онда ол ; аяқталады, ал бірнеше
оператордан тұрса, онда олар { } арасында жазылады. Одан соң “;” белгісі
қойылмайды.

1,2,3 өрнектеріндегі арнайы басқару айнымалысының мәні бойынша цикл
қайталанады немесе циклден шығады.

Өрнек 1 – айнымалының бастапқы мәні қабылданды.
Өрнек 2 – айнымалының соңғы мәнін тексеріп салыстырып,
осы мәндерін өсіп кеткен жоқ па , соны тексереді.
Өрнек 3 – айнымалының мәнін қадам бойынша өсіріп
отырады.
Мыс: for (I=1, I10; I++)
{
}
for (ch=’a’; ch!=’p’;) scanf ((%c(, (ch);
*-цикл клавишасын р таңбасы енгізілуге қайталана береді.
Цикл операциясында 3 өрнектің біреуі жазылмай қалуына болады, бірақ
міндетті түрде ; қойылуы тиіс.

for (;;)-шексіз цикл.
Cu тілінде цикл операторына болатын ереже бар:
Кез-келген меншіктеу операторы жазылған жақшаға алынатын өрнектің мәні бар.
(а=7+2)-мәні 9 болады.
(a=7+2)10.
Мыс: ((ch=detch()==’i’))-бұл өрнектің мәні шын болады, егер
клавиатурадан і таңбасын енгізсек.
Күрделі өрнектерді жазғанда бірнеше () қолдануға болады. Олардың арасына
(,) белгісін қою қажет.
Цикл операторы- қос цикл болып жазылуы мүмкін, яғни бір циклдің ішінде бір
цикл жазылады.

For цикл операторына келтірілетін мысалдар:
1.Мысал: n! (n факториалды ) есептеуге арналған программа.

#includeiostream.h
main( )
{int i,N;
cout”N=”; cinN;
i=1; F=1;
for(i=1;iN;i++) F=F*i;
cout”\n”N”!=”F;
}
2.Мысал: 12-ге көбейту таблицасына программа құр.

#includestdio.h
#includemath.h
main( )
{ int a,i,s;
a=12;
for(i=1;i=10;i++){s=I*a;
printf(“\n12*%d=%d”,i,s);}
return ‘0’;

3.Мысал: Жаттықтырушының басында спотшы 1-ші күні10 км жүгірді. Күн сайын
ол күндегі нормасын 10% көбейтті. Спортшы 7 күнде жалпы қанша жол жүгірді?
}
1 күн-10 км #includestdio.h
2 күн-11 км #includemath.h
3 күн-12 км main( )
4 күн-13 км {int x,i,S;
5 күн-14 км x=10, S=0;
6 күн-15 км for(I=1;I=7;I++)
7 күн-16 км {S=S+x;
S=10+11+12+13+14+15+16=91 x=x+0.1*x;

printf(“x=%d\n”,x);}

printf(“S=%d\n”,S);
return
‘0’;
}

Тапсырмалар:
1. Бірінші оң он бүтін санның квадратын таблица түрінде шығаратын
программа құр.Таблица төмендегідей болу керек.
------------------------
Сан Квадраты
------------------------
1 1
2 4
3 9
4. 16
5. 25
6. 36
7. 49
8. 64
9. 81
10. 100
-----------------------
2. Көбейту таблицасының программасын құр.
4.Арифметикалық прогрессияны есептейтін программа құр.
5.Геометриялық прогрессияны есептейтін программа құр.
6.Арифметикалық прогрессияның қосындысын есептеуге программа құр.

3. While-өрнек шын немесе жалған мән қабылдауы мүмкін.

Форматы-while (өрнек) цикл денесі:
Егер шын мән қабылдаса, онда цикл денесі қайталанады, жалған мән қабылдаса,
циклдан шығады.
1.Мысал: n! (n факториалды ) есептеуге арналған программа.

#includeiostream.h
void main( )
{long int F;
int i,N;
cout”N=”; cinN;
F=i=1;
while(i=N) F=F*i++;
cout”\n”N”!=”F;
}
2. Екі бүтін санның ең үлкен бөлгішін есептейтін программа құру керек.

#includestdio.h
#includeconio.h
void main( )
{ int n1,n2;
int nod;
int r;
printf(“\n Ең үлкен бөлгішті есептеу”);
printf(“Бір жолға екі санды енгіз”);
printf(“және Enter кнопкасын басыңыз”);
printf(“-”);
scanf(“%i%i”,&n1,&n2 –мынау”,n1,n2);
while(n1&n2)
{ r=n1%n2;
n1=n2;
n2=r;
}
nod=n2;
printf(“%i\n”,nod);
printf(“\nАяқталу үшін Enter ді басыңыз”);
getch( );
}

3. Мысал: - 4 тен 4 ке шейінгі аралықта 0,5 қадыммен функциясының
мәнін шығаратын программа құру керек.

#includestdio.h
#includeconio.h
void main( )
{
float x,dx;
float x1,x2;
float y;
x1=- 4;
x2 = 4;
dx=0.5;
x=x1;
printf(“------------------\n”);
printf(“ x y\n”);
printf(“-------------------\n”);
while(xx2) {
y=x*x+2;
printf(“%3.2f %3.2f\n”,x,y);
x+=dx;}
printf(“------------------\n”);
printf(“\n nАяқталу үшін Enter ді басыңыз”);
getch( ); }

4. Do while –
S=1+2+...100.

1.Мысал: n! (n факториалды ) есептеуге арналған программа.

#includeiostream.h
void main( )
{long int F;
int i,N;
cout”N=”; cinN;
F=i=1;
do F*i++;
while(i=N);
cout”\n”N”!=”F;}
2.Мысал: Клавиатурадан енгізілген сандардың ішінен ең үлкен санды
анықтайтын программа құру керек.

#includestdio.h
#includeconio.h
void main( )
{ int a;
int m;
puts(“\nОң сандардың ішінен”);
puts(“ең үлкенін табу.”);
puts(“Сан енгізіңіз.Аяқталу үшін 0-ді енгізіңіз.”);
m=0;
do { printf(“-”);
scanf(“%i”,&a);
if(am) m=a; }
while(a0);
printf(“Ең үлкен сан: %i”,m);
printf(“\n nАяқталу үшін Enter ді басыңыз”);
getch( ); }

3.Мысал: 1 мен 10 сандарының арасында “ойландырады” және қолданушыға 5 рет
ойнауға мүмкіндік беретін программа құру керек.

#includeconio.h
#includestdlib.h
#includetime.h
void main( )
{ int comp;
int igrok;
int n;
tine_t t;
srand((unsigned) time(&t));
comp=rand( )%10+1;
clrscr( );
cprintf(“\n\rКомпьютер\”ойлады\”1 ден 10 ға дейінгі санды\n\r”);
cprintf(“Сіз үш рет ойнағанда табу керексіз.”);
n=0;
do {
cprintf(“\n\r-”);
cscanf(“%i”,&igrok);
n++;
}while((igrok!=comp)&&(n3));
if(igrok==comp)
{ textcolor(RED+BLINK);
cprintf(“\n\r ВЫ ВЫИГРАЛИ!”);
}
else
{ textcolor(GREEN);
cprintf(“\n\rВы поиграли.”);
cprintf(“Компьтер санды ойлады %d”,comp);
}
textcolor(LIGHTGRAY);
cprintf(“\n\rАяқталу үшін кез-келген клавишаны басыңыз”);
getch( );getch( );
}

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

Шартты көшуді ұйымдастыру үшін СИ тілінде if else операторы қолданылады.
Форматы: if (шартты тексеру) оператор-1; else оператор-2;
Егер шарт оындалса, онда оператор-1 орындалмаса, оператор-2 орындалады.

Мысал: if (i0)
y=x (i);
else
{
x=i;
y=f (x);
}
if операторы бірінің ішінде бірі қабаттасып келуі мүмкін.
if (i0)
if (Ii)
x=i;
else
x=i;
if (i0)
{
if (Ii)
x=i;
}
else
x=i;
1-ші мысалда else ішкі if-те.
2-ші мысалда else сыртқы if-те.
Мысал1: Дөңгелектің ауданын есептейтін программа құру керек.Программа
шығатын мәліметтің дұрыстығын тексеру керек.

Үзіп тастау операторлары break:

Break-do, far, while, switch цикл операторлардың орындалуын үзіп тастайды.
Ол тек осы операторлардың денесінде қолданылады.

goto- шартсыз көшу операторы.
Форматы:
goto метка ;
.\:
метка : оператор
Оператор goto программалық орындау ретін бұзады. Келесі орындалуын
оператор метка тұрған жолдағы оператор бұзады.

If (errorcode0)
goto exit;
------------
exit:
return (errorcode);

Оператор goto программаның орындау ретін exit меткасы тұрған
операторға береді.

Return – қайтып оралу операторы.

return [өрнек];

return - өзі ішінде тұрған функцияның орындалуын тоқтатады да, программаның
орындалу ретін, яғни басқаруды шақыратын функцияға береді.

Мысалы:
main ( )
{
void drow (int, int);
long sg (int);
:
:
y=sg ( );
draw
:
:
}
long sg ( );
int x;
{
return (x*x);
}
void draw (x,y);
int x,y;
{ ... ... ..
return;
}
Функция main sg және draw2 функцияны шақырады.
sg функциясы х у кеменшіктеледі.Егер return функция денесінде жоқ болса
онда функцияның соңғы операторы орындалып болған соң басқару шақыратын
функцияға береді.

Шартты көшу операторы switch.
Switch-таңдаушы ұйымдастыру операторы.
Форматы:
Switch (өрнек).
{
case константа1: оператор-1;
break.
case константа2: оператор-2
break.

Мұнда алдымен өрнек (селектор) есептелінеді. Ол барлық константалармен
салыстырылады. Сәйкес келген константаларын кейін тұрған оператор
орындалады. Егер селектор ешқандай константаға тең болмаса, онда default-н
кейін тұрған операторы орындалады.
Default операторы жазылмауы мүмкін , онда ештеңе орындалмайды.

*мысал.1*
switch (c).
{
case ‘A’;
саpа ++
case ‘a’;
lettece ++
defaulte ++
total ++
}
* мысал.2*
switch (i).
{
case-1;
n++
break;
case 0;
z++
case 2;
p++
break;
}

*мысал.3*

switch (i)
{
case 1;
if (a0)
{
case 2;
b=3;
}
else
{
case 3
k=0;
}
}
1-ші мысалда егер с-ның мәні А: ға тең болса, онда сара++ орындалады.
Содан соң қалған операторлар орындалады. Егер с= 'a' болса, одан соң
қалған операторлар орындалады. (lettece++). Егер с(А(а total++ орындалады.
2-ші мысалда үзіп тастау операторы break бар болғандықтан, 1 оператор
орындалғаннан кейін цикл денесінен шығып кетіп отырады.
Соңғы оператор break-ті жазу міндетті емес.
Таңдау операторы көп белгімен де көрсетілуі мүмкін.
Мысал:
switch (c)
{
case ‘a’;
case ‘b’;
case ‘c’;
case ‘d’;
case ‘e’;
hexcvt (c);
Бұл мысалда с-ның мәні а,b,c,d,e-ге тең болса, онда hexcvt функциясы
шақырылады.

Тапсырмалар:
Төменде келтірілген есепті for, while, do while операторларының ішінен ең
тиімдісін пайдаланып есепті шығар.
1. Спортсмен бірінші күні 10 км жүгірді. Күн сайын ол 10% кешегіден артық
жүгіріп отырады. 7 күннен кейін спортсмен неше км жүгіретінін есептейтін
программа құрыңыз.
2.Клавиатурадан енгізілген сандардың ішінен ең үлкен санды анықтайтын
программа құр.
3.Клавиатурадан енгізілген сандардың ішінен ең кіші санды табатын программа
құр.
4.Клавиатурадан енгізілген оң сандардың қосындысын және арифметикалық
ортасын табуға арналған программа құру керек.

Тарау 3. Структураланған мәліметтер типі

Массивтер.
Си тілінде жазылған программада реттелген типті мәліметтерді қолдануға
болады.Оларға массывтерді , структураларды және файлдарды жатқызуға болады.

Массив –бір типті көп элементтен трады.Массивпен оның атын шақыру
арқылы жұмыс істейміз.Массивтің кез-келген элементін таңдауға
болады.Ол үшін оның тұрған орнын көрсететін индиксті көрсету
керек.Массив элементінің саны оны анықтап хабарлағанда
белгіленеді.содан соң өзгермейді.Егер массив хабарланған болса, онда
оның кез-келген элементін массивтің атын және элемент индиксін квадрат
жақшаның ішінде көрсету арқылы оқуға болады.Массивтер айнымалылар
сияқты анықталады.int a[100]-100 элементтен тұратын және бүтін саннан
тұратын массив хабарланған.Массив индиксациясы 0-ден басталады.

A[0], a[1], a[2],...a[99];
Char b[20]- 20-элементтен тұратын типі char массив.
Float d[50]- 50 нақты саннан тұратын массив.

Екі өлшемді массивтер бір өлшемді массивтер сияқты сипсатталады.Екі өлшемді
массив элементтері қатар бойынша сипатталады.
Мыс: int[2][3]- бұл массив элементі ЭВМ жадында былай орналасады.
a[0][0], a[0][1], a[0][2],,a[1][0],a[1][1], a[1][2];
Массив аты константа. Онда бірінші элементтің аты көрсетеді.Мыс:а=1000
болса онда бірінші элементтің a[0][1] адресі – 1002 болады.int типті
элементтер жадыда 2 байт орын алады. Екінші элемент a[0][2]- 1004 болады.Си
тілінде көрсеткіштнр мен массивтер арасында өте үлкен байланыс
бар.Массивтердің индиксі арқылы орындалатын кез-келген операцияны
көрсеткіштің көмегімен орындауға болады.Мыс: int
a[5],a[0],a[1],a[2],a[3],a[4] элементтерінен тұратын болғандықтан егер
көрсеткіш ху анықтамасы болса онда у=(a[0] у айнымалысына a[0]
элементінің адресін меншіктейді. Ал у+1 келесі элементтердің адресін берді.
Массивтің аты оның 0-ші элементінің адресін көрсететін болғанын жоғарғы
өрнекті былай жазуға болады. y=a онда а [1] элементі былай көрсетуге
болады: *(а+1) Сондықтан да а [i] y+i эквивалентті. Айырмашылығы: көрсеткіш
айнымалы массив аты
константа. Сондықтан да а=y конструкциясында а++
операциясын қолдануға болмайды . Си массивтік
анықтағанда оған 1-ден мәнді меншіктеуге болады: int a
[0,1,2,3,4]
char ch [3]={‘d’,’c’,’k’}
*Мысал 1*
#includestdio.h
#define size 1000
int.data[size]
main( )
{extern float average(int a[ ],int s);
for (i=0;isize;i++)
data[i]-i;
printаf(“\n Массивтің орташа мәні data % f\n”, average(data,size));
}
float average(int a[ ];int s);
{
float sum=0,0;
int i;
for(i=0;its;i++)
sum+a[i];
return sum(s);
}
Программада 1000 саннан тұратын массив енгізіледі.функциясы арқылы массив
элементінің орташа мәні табылады.average функциясының ,бірінші нормальді
параметрі массив болады.
Екінші нормальді параметрі болып қосындыдан табылған сан мәні
болады.Константа size (размерге) көңіл бөлейік.

Егер массив размері өзгерсе онда программаны өзгертуге болады.

Есеп:z-тің мәнін есептеу керек.
z=sinx; x=1,2,3,...10.

Массивтерді қарапайым түрде қолдануға мысалдар.

Мысал1: Типі бүтін 10 элементтен тұратын a[10] массивті енгізу және шығару.

#includestdio.h
#includemath.h
main( )
{ int a[10], i;
clrscr( );
for( i=1; i=10; i++)
scanf(“ %d”,& a[i]);
printf(“a[i]=%d\n”, a[i]);
return ‘0’;
}

Мысал2: Клавиатурадан 5 бүтін санды енгізіп, сонан кейін ноль емес
сандардың санын экранға шығаратын программа құр.Сандарды енгізбес бұрын
экранда массив элементінің номері көрсетіліп тұру керек.

Бүтін санды массивті енгіз.
Әрбір санды енгізген сайын Enter -ді басыңыз.

a[i]- 12
a[i]-0
a[i]-3
a[i]--1
a[i]-0

Массивте 3 ноль емес сан бар.

#includestdio.h
#includeconio.h
#define SIZE 5
void main( )
{ int a[SIZE];
int n=0;
int i;
printf(“\nБүтін санды массивті енгіз.”);
printf(“Әрбір санды енгізген сайын Enter-ді басыңыз\n”);
for( i=0; iSIZE; i++)
{ printf(“a[%i]-”,i+1);
scanf(“ %i ”, & a[i]);
if(a[i]!=0) n++;}
printf(“Массивте %i нолб емес сан бар.\n”,n);
printf(“\nАяқталу үшін Enter-ді басыңыз”);
getch( );
}

Мысал 3: a[i] және b[i] нақты сан типінен тұратын массивтер берілген.
c[i]=a[i]-b[i] тап.

#includestdio.h
main( )
{ float a[10], b[10], c[10];
int I;
for( i=1; i=10; i++)
{scanf(“%f”,& a[i]);
scanf(“%f”,& b[i]);
c[i]=a[i]-b[i];
printf(“c=% f\n”, i, c[i]); }
return ‘0’;
}

Тапсырмалар:
1.a[20] массиві берілген.Массив элементтерінің ең кіші және ең үлкен
элементтерін және олардың рет номерін тап.
2.Берілген екі бір өлшемді массивтерден- бастапқы элементтері бірінші
массив элементтері болатын, ал соңындағы элементері екінші массив
элементтері болатын үшінші массивті құр.
3.a[30] массиві берілген.Егер массив элементтерінің ішінде кейбір М санына
тең болатынэлемент бар болса, онда Х айнымалысына осы элементке дейінгі
орналасқан 0-дік емес элементтерінің көбейтіндісін меншікте, керісінше
жағдайда Х айнымалысына 0-ді меншікте.
4. Егер a[20] массивінің элементтерінің ішінде соңғы элементтің квадратына
тең болатын элемент бар болатын болса, онда сол элементтен кейінгі келетін
барлық элементтерді квадратта, әйтпесе массивті өзгеріссіз шығару.
5.a[10] массиві берілген. Массивтің ең үлкен элементін тауып, одан кейінгі
элементтерді кему реті бойынша сұрыпта.

Массивтерді өңдеуге арналған мысалдар.

Мысал 1. a[i] массиві берілген.Массивте қанша оң сан бар екенін есептейтін
программа.

#includestdio.h
main( )
{int a[10], k, i;
k=0;
for( i=1; i=10; i++)
{scanf(“%d”,& a[i]);
if(a[i]0)
k=k+1;}
printf(“%d\n”,k);
return ‘0’;
}

Мысал 2. 10 бүтін саннан құралған массив берілген.Массив элементтерінің ең
үлкен элементінің және оның рет номерін (индиксін) шығаруға арналған
программа.
#includestdio.h
#includeconio.h
main( )
{int a[10], i, p, k;
clrscr( );
for( i=1; i=10; i++)
scanf(“%d”, & a[i]);
p=a[1];
for( i=2; i=10; i++)
if (p a[i] )
{p=a[i];
k=i;}
printf(“p[%d]=%d\n”, k, p);
return ‘0’; }

Мысал 3: Бүтін санды массивтің клавиатурадан енгізілген элементтерінің ең
кішісін табуға арналған программа.

#includestdio.h
#includeconio.h
#define HB 5
void main( )
{ int a[HB];
int min;
int i;
printf(“\nМассивтің ең кіші элементін табу\n”);
printf(“Массивтің элементтерін бір жолға енгіз,\n”);
printf(“%i бүтін санды, және Enter-ді басыңыз\n”,HB);
printf(“-”);
for( i=0; iHB; i++)
scanf( “%i” , &a[i]);
min=0;
for( i=0; iHB; i++)
if(a[i]a[min]) min= i;
printf(“Массивтің ең кіші элементі:”);
printf(“a[%i]=%i”,min+1,a[min]);
printf(“\n nАяқталу үшін Enter-ді басыңыз”);
getch( );
}

Тапсырмалар:
1. A[5,5] массиві берілген. Массивтің тақ жолдарында орналасқан
элементтерінің ... жалғасы

Сіз бұл жұмысты біздің қосымшамыз арқылы толығымен тегін көре аласыз.
Ұқсас жұмыстар
СИ бағдарламалау тілі және жобалануы туралы
СИ бағдарламалау тілі және жобалануы
Си бағдарламалау тілі
СИ тіліндегі файлдар және мәтіндік файлдар
Java кең таралған программалау тілі
Си тілінде құрылған программаның құрылымын сипаттау
Си тілінде құрылған программаның құрылымын сипаттау жайлы
Препроцессор директивалары
Си тілінің пайда болу тарихы мен мүмкіндіктері
СИ бағдарламалау тілінде жадыны басқару
Пәндер