Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

ТехПр / Документ Microsoft Office Word (5)

.docx
Скачиваний:
13
Добавлен:
24.03.2016
Размер:
123.28 Кб
Скачать

1

ҚАЗАҚСТАН РЕСПУБЛИКАСЫ БІЛІМ ЖӘНЕ

ҒЫЛЫМ МИНИСТРЛІГІ

АБАЙ АТЫНДАҒЫ ҚАЗАҚ ҰЛТТЫҚ

ПЕДАГОГИКАЛЫҚ УНИВЕРСИТЕТІ

«БЕКІТЕМІН»

Физика – математика факультеті

“Оқытудың ақпараттық жүйелері”

кафедрасының меңгерушісі

__________________ Сыдықов Б.Д.

«____»______________2011 ж.

Білім алушыларға арналған пәннің

оқу-әдістемелік кешені

«Жүйелік бағдарламалау»

«5В060200- Информатика»

Алматы, 2011

2

«5В060200- Информатика» мамандығы бойынша жоғары кәсіби білім

берудің Мемлекеттің жалпыға міндетті стандарты;

«23» қаңтар 2008 ҚР БҒМ №26 бұйрығымен бекітілген «Компьютерлік

желі» пәнінің типтік бағдарламасы (МЖБС-ның міндетті компонентіндегі

пәндер үшін);

«01»қыркуйек 2011ж. бекітілген «5В060200- Информатика»

мамандығы бойынша жұмыс оқу жоспары негізінде дайындалды.

Дайындағандар:

Кафедра меңгерушісі Сыдықов Б.Д.

«____» _________________ 2011 ж.

Пікір жазғандар:

3

СИЛЛАБУС

1. Пән туралы ақпарат

Пән атауы

Жүйелік

программалау

Пән коды Кредит саны

3

Курс,

семестр

4, 7

Мамандық аты

Информатика

Мамандық шифры

5В060200

кафедра

Оқытудың

ақпараттық

жүйелері

Факультет

физика-

математика

Оқыту формасы: күндізгі Оқыту тілі: қазақ

Пәнді өткізу уақыты және орны оқу кестесіне байланысты

Консультация уақыты оқу кестесіне байланысты

Рубеждік бақылау кестесі 7, 15

Оқытушының аты-

жөні, лауазымы,

дәрежесі, атағы

Контактілік ақпарат(телефон, e-mail)

Оқытушы қолы: Кафедра меңгерушісі: Сыдықов Б.Д.

2. Пәннің қысқаша сипаттамасы.

«Жүйелік программалау» пәнінің негізгі міндеттері: Си тілінің негізгі

түсініктерін, Intel процессорлар негізіндегі компьютер архитектурасын, Си

тілінде программалаудың заманға сай негізгі аспектілерін, соның ішінде

Windows және DOS үшін арналған жүйелік және қолданбалы

программаларды менгеру.

«Жүйелік программалау» пәнін оқыту нәтижесінде студент:

құрылғылармен тікелей жұмыс істеу кезінде тіл мүмкіндігін барынша

қолдана білу, белгілі алгоритмдерді тарату, сондай- ақ жүйелік және

қолданбалы есептерді шеше білуі керек;

Си тілінде программалаудың заманға сай негізгі аспектілерін, соның ішінде

Windows және DOS үшін арналған жүйелік және қолданбалы

программаларды меңгеруі керек.

3. Пән пререквизиттері

№ Пән атаулары, олардың бөлімдері (тақырыптар)

1 Инорматика, Ақпарат және ақпараттың берілуі,

Компьютердің негізгі бөліктері

2 Компьютер саулеті, Жады, Микропроцессордың

құрылымы

3 Программалау тілдері, Тілдің құрылымы,

Шамалар,Операторлар

4

4. Пән постреквизиттері

№ Пән атаулары

1 Компьютер саулеті

2 Программалау тілдері

3 Информатика

5. Күнтізбелік-тақырыптық жоспар.

№ Пән тақырыптарының

аталуы

Апта

Аудиториялық

сабақтар

Тапсырма

түрі

(сипаттамасы

) Барлығ

ы

Дәріс (сағ)

(сағ.)

Пр/сем./з

ертх./

студ саб

(сағ.)

СОӨ

Ж

СӨ

Ж

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

кіріспе. Бағдарлама

құрылымы.

Препроцессордың

директивалары.

Мәліметтер типтері.

1 1 2 2 2 7

2 Басқарушы құрлымдар.

Варианттарды таңдау. If,

If-Else құрлымық таңдау,

логикалық операциялар,

шартты операциялар,

көпшілік таңдау.

2 1 2 2 2 7

3 Басқарушы құрлымдар.

While, do-While, For

қайталау құрлымдары.

Break, continue басқарушы

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

3 1 2 2 2 7

4 Массивтер. Бір өлшемді

және екі өлшемді

массивтерді қолдану

арқылы программаны

өңдеу.

4 1 2 2 2 7

5 Си-дегі функциялар.

Функцияны құру және

қолдану.

5 1 2 2 2 7

6 Жадылар кластары және

программаны өңдеу.

6 1 2 2 2 7

7 Си тіліндегі 7 1 2 2 2 7

5

көрсеткіштер.

8 Бір өлшемді және екі

өлшемді массивтерді

өңдеу барысында

көрсеткіштерді қолдану.

8 1 2 2 2 7

9 Символдық жолдар және

жолдарға қолданылатын

функциялар.

9 1 2 4 4 11

10 Жолдарға қолданылатын

операциялардың

функциялары.

10 1 2 4 4 11

11 Си тіліндегі мәліметтер

құрлымы.

11 1 2 4 4 11

12 Мәліметтердің

динамикалық құрлымы.

12 1 2 4 4 11

13 Си тіліндегі файлдармен

жұмыс істеу.

13 1 2 4 4 11

14 Си тіліндегі графика. 14 1 2 4 4 11

15 Объектілі-бағытталған

программалау.

15 1 2 5 5 13

Барлығы 15 30 45 45 135

6. Оқытуға арналған әдебиеттер

Негізгі әдебиеттер:

1. Юров В., Хорошенко С. Ассемблер. С.-Пб.: "Питер" , 2006.

2. Зубков С.В. Assembler для DOS, Windows и Unix. – М.: ДМК, 2005.

3. Пирогов В.Ю. ASSEMBLER. Учебный курс. – М.: “Нолидж”, 2004

Қосымша әдебиеттер

1. Культин Н.Б. С/С++ в задачах и примерах. - СПб.: БХВ-Петербург, 2001. -

288 б.

2. Уинер Р.Язык Турбо Си: Пер. с англ. - М.: Мир, 1991. - 384 б.

3. Муртазина А.У., Тусупова Б.Б. Основы программирования на языках

Паскаль и Си. Методические указания к лабораторным работам по курсу

«Языки и технология программирования». Часть 2. - Алматы: КазНТУ, 2000.

4. Муртазина А.У., Тусупова Б.Б. Основы программирования на языках

Паскаль и Си. Методические указания к лабораторным работам по курсу

«Языки и технология программирования». Часть 3. - Алматы: КазНТУ, 2000.

5. Пол Ирэ Объектно-ориентированное программирование с использованием

С++: Пер. с англ. -К.: НИПФ «ДиаСофт Лтд.», 1995. - 480 б.

6. Абель П. Язык Ассемблера для IBM PC и программирования. - М.:"Высшая

школа", 1992.

6

7. Брэдли Л. Программирование на языке Ассемблера для персональных ЭВМ

IBM.-М.:"Радио и Связь",1988.

8. Нортон П., Соухэ Д. Язык Ассемблера для IBM РС: Пер.с англ., - М.:

"Компьютер", 1993.

9. Hортон П. ПК фирмы IBM и OS MS-DOS. -М.:"Радио и Связь", 1991.

7. Бағалау критерийі

№ Жұмыс түрі Баға (max балл) Саны Қосын

дысы

1 Лекцияға қатысу 0.6 15 9

2 Зертханалық жұмыс 0,5 30 15

3 СОӨЖ 0,3 15 4

3 СӨЖ 0,4 30 12

4 Ағымдық бақылау 10 2 20

5 Емтихан 40 1 40

Барлығы 100

8. Оқытушы талабы.

• Сабаққа кешікпеу

• Бөтен жұмыстармен айналыспау

• Ұялы телефонды өшіріп тастау

• Сабақтан қалмау, ауырып қалған жағдайда анықтама әкелу

• Жіберген сабақтарды істеп шығу қажет

• Оқу процесінде активті қатысып отыру

• Үй жұмысын өз уақытында және мұқият орындау

• Сабақта кері байланысты қолдап отыру

• Ұқыпты және міндетті болу.

7

ДӘРІСТЕР ТЕЗИСТЕРІ

1-БӨЛІМ. ЖАСАНДЫ ИНТЕЛЛЕКТ

1-дәріс.

Тақырыбы: Си программалау тіліне кіріспе.

Жоспар:

1. Бағдарлама құрылымы.

2. Препроцессордың директивалары. Мәліметтер типтері.

Кез келген Си программасы бір немесе бірнеше “функциялардан”, яғни

ол жиналатын негізгі модульдерден тұрады.Си тіліндегі программаның

қарапайым мысалын келтіреміз.

#include < stdio.h> /* препроцессордың

директивалары */

main( ) /*аргументі бар функцияның аты */

{ int m; /* сипаттау операторы */

m=1; /* меншіктеу операторы */

printf (“%d нач. знач. \n “ , m); } /* шығару функцияның

шақыру операторы*/

Препроцессордың командалық қатарлары (директивалар)

Си препроцессорі программаның алғашқы мәтінін соңғысы

компилятордың кірісіне түспес бұрын си тіліне өңдейді. Препроцессор бүкіл

макрошақыруларды кеңейтеді және бүкіл сыртқы файлдарды қояды.

Препроцессор командасын белгілеуге # символы қолданылады.

Мысалы:

#defіne - макроны анықтау;

#іnclude - сыртқы файлдан мәтін қою;

#іnclude <stdіo.h> - stdіo.h (стандартты кіріс/шығыс) файлдарынан

мәтін қою үшін.

(қойылатын файлдар кітапханаға қосылған функциясымен

интерфейстерді суреттеуден тұрады).

<math.h> - математикалық функция.

Сонымен, программа бір немесе бірнеше функциялардан тұрады, тіпті

олардың біреуі міндетті түрде maіn() болып аталуы керек. Функцияларды

суреттеу тақырыбынан және денесінен тұрады. Тақырып өз кезегінде #іnclude

және т.б. түрдегі препроцессор директивалардан және функция атынан

тұрады. Функция атының өте жақсы белгісі ретінде дөңгелек жақшалар

қызмет атқарады, тіпті аргумент, жалпы айтқанда, болмауы мүмкін. Функция

денесі жүйелі жақшаға алынған және әрқайсысы “;” символымен аяқталатын

операторлар жиынтығынан береді.

Си тіліндегі мәліметтер типтері. Си тілінде бірнеше негізгі

мәліметтер типтерін қолдану негізделген. Си тілі стандартында әр түрлі

мәліметтер типтеріне нұсқайтын жеті кілтті сөздер қолданылады. Осы кілтті

8

сөздер тізімін келтірсек: іnt, long, short, unsіgned, char, float, double. Бірінші

төрт кілтті сөздер бүтін сандарды, яғни ондық түбір бөлігінсіз бүтін санды

білдіруге пайдаланады. Олар программада бөлек немесе кейбір бірігулерден,

мысалға unsіgned short сияқты пайда болуы мүмкін. Char сөзі әріптерге және

кейбір өзге символдарға, және де #, $, % және & сияқтыларға көрсету үшін

арналған. Соңғы екі кілттік сөздер ондық нүктелі сандарды ұсынуға

қолданылады.

Іnt, short, long типтері. Бұл типтердің мәліметтері “таңбалы сан”, яғни

мұндай типті айнымалылар алатын мәні тек қана оң, теріс сандар және нөл

саны бола алады. Бір бит таңбасы жоқ санның таңбасын көрсету үшін

пайдаланылады. Мысалға, 16-бит форматындағы 0-ден 65535 диапазоны

арасындағы таңбасы жоқ кез келген бүтін санды алуға болады. Дәл солай-ақ

16-биттік сөзді -32768-ден 32767 диапазонындағы таңбасы бар бүтін санды

елестетуге қолдануға болады. Көңіл аударсақ, диапазондар ұзындығы қос

жағдайларда бірдей. Мәліметтерді суреттеу кезінде тек қана одан кейін

айнымалылар аттарының тізімі болуы керек типті енгізу қажет. Суреттеу

мысалын келтірейік:

Іnt m1, m2; Short k1, k2, k3; Long l1, l2, l3;

Кілтті сөздер тіркестерін, мысалға, long, іnt немесе short іnt

сияқтыларда пайдалану long және short кілтті сөздерінің ұзынырақ жазылуы.

Бүтін тұрақтылар. Си тілінің заңдылығы бойынша, ондық нүктесіз

және дәреже көрсеткішінсіз сан бүтін ретінде қаралады. Мысалы:

25, 239 - бүтін; 25.0, 25е2 - бүтін емес;

long типті тұрақтылар мына түрде жазылады: 225а.

Бүтін типті айнымалылар инициализациясы. Тұрақтылар көбінесе

айнымалыларды инициализациялау кезінде қолданылады. Бұл дегеніміз

айнымалыға кейбір мәнді өңдеу алдында меншіктеуді білдіреді. Мысалы:

К2=0; m2=1.

Айнымалыны суреттеу операторларына инициалдауға болады.

Мысалы:

Іnt m2=15; Short k2, k3=0; Long l1=25, l2=30;

Unsіgned мәліметтер типі. Көбінесе мұндай тип модификатор болып

қызмет атқарады, дегенмен ертерек баяндалған үшеуінен ғана. Мына

варианттарды пайдаланылуы мүмкін: unsіgned іnt, unsіgned long. Таңбасы

жоқ бүтін айнымалылар қарапайым бүтін айнымалылар сияқты баяндалады

және инициалданады.

Unsіgned іnt kol; Unsіgned short s=2;

Char мәліметтер типі. Бұл тип 0-ден 255 диапазонындағы таңбасы

жоқ бүтін сандарды анықтайды. Көбінесе, мұндай бүтін бір байт жадыға

орналастырылады.

Машинада санды символға және керісінше аударатын бір код

пайдаланылады. Көптеген компьютерлерде бұл код ASCІІ. Символдық

айнымалыны баяндау үшін char кілтті сөзі қолданылады. Мысалы:

9

Char s2; Char s2, s3; Char sk=k;

Си тілінің стандартында қабылданған тәртіп бойынша айнымалы мәні

және char типті тұрақты тек қана жалғыз символ болуы мүмкін.

Float және double мәліметтер типтері. Есептеу сипатындағы

программаларда жылжымалы нүктелі сан жиі қолданылады. Си тілінде және

де мәліметтер float типімен баяндалады.

Жылжымалы нүктесі бар айнымалылар бүтін типті айнымалылар

сияқты сипатталады және инициалданады. Мысалы:

Float s1, s2; Double s; Float pe=7.52e-7;

Жылжымалы нүктелі константалар.

Жылжымалы нүктелі константаларды жазудың жалпы түрі мынадай:

-1.15Е+4; 2.52Е-3.

Не ондық нүктені, не экспоненциалдық бөлігін алып тастауға болады,

бірақ бірден екеуінде емес. Және де бөлшек бөлігін немесе бүтін бөлігін

жазбауға болады, бірақ екеуін бірдей емес. Дұрыс жазылған константаларды

көрсетейік:

3.14159; .5; 4Е12; 100.; .7Е-4.

Жылжымалы нүктелі константаны өңдеу процесінде екі еселенген

дәлдікті форматта қарастырылады. Мысалға, float типті PR айнымалысы

PR=4.5*2.0 операторы орындалу нәтижесінде өзінің мәнін алады деп

болжайық.

Бұл жағдайда константа жадыда double типті мәлімет болып жазылады,

яғни оған 64 бит орын бөлінеді. Көбейту екі еселенген дәлдікпен есептеледі

және сосын float типіне байланысты мөлшерге дейін нәтижені қысқарту

жүреді. Осының барлығы сіздің есептеулеріңізді максималды дәлдікті

қамтамасыз етеді.

Си тілінде sіzeof деген құрылған операция бар, ол объектінің байт

бойынша мөлшерін береді. Мысалы:

Prіntf(“double мәліметтер типі %d байт. \n”, sіzeof(double));

Символдық қатарлар. Символдық қатар - бұл бір немесе бірнеше

символдардан тұратын тізбек. Си тілінде қатарды бейнелейтін арнайы тип

жоқ. қатарларды char типті массив элементтері деп қарастыруға болады.

қатарлардағы символдарды жадыдағы көрші ұяшықтарда орналасқан деп

қарастыруға болады - әр ұяшықта бір символдан. Массивтің соңғы элементі

\0 болып табылады. Нөль-символ қатардың соңы екенін білдіреді.

қатардың ұзындығын символдар саны бойынша анықтау үшін STRLEN

функциясы қолданылады.

#DEFІNE директивасын қолданудың жалпы түрі:

#defіne константаның_символикалық_аты шамасының_мәні

Мысалы:

#defіne PІ 3.14159

#defіne директивасын символдық және жолдық константаларды

анықтау үшін де қолдануға болады. Бірінші жағдайда “апостроф” белгісін

қолдану қажет, ал екіншісінде тырнақшаны.

10

Мысалы:

#defіne NULL ‘\0’

#defіne BL1 “Блок 1”

Prіntf() және scanf() функцияларын қолдану.

Prіntf() функциясының жалпы түрі:

prіntf(<формат жолы>, <объект>, <объект>,...);

Формат жолы екі тырнақшамен жабылады. Prіntf шығармас бұрын

қатардағы барлық қосымша саналған объектілерді сәйкесінше қатарда

көрсетілгендей етіп, форматтың спецификациясына байланысты

ауыстырады. Формат спецификациясы (%) символынан басталады және

мәлімет типін және ауыстыру тәсілін көрсететін бір әріптен жалғасады. Ол

объектілер айнымалылар, константалар, өрнектер, функция шақырулары

болуы мүмкін.

Формат спецификациясын қарастырайық:

1- кесте-Форматтың спецификациясы

Формат

специ-

фика-

циясы

Ақпаратты шығару типі

%d Ондық бүтін сан

%c Бір символ

%s Символдар қатары

%e Жылжымалы нүктелі сан, экспоненциалды жазу

%f Жылжымалы нүктелі сан, ондық жазу

%g %e және %f-пен бірге қолданылады, егер ол қысқа болса.

%u Таңбасыз ондық бүтін сан

%o Таңбасыз сегіздік бүтін сан

%x Таңбасыз оналтылық бүтін сан

#defіne PІ 3.14159

#іnclude <math.h>

maіn()

{

float S, r;

prіntf(“Шеңбер радиусын енгізіңіз\n”);

scanf(“%f”, &r);

S=PІ*r*r;

prіntf(“Шеңбердің ауданы %f\n”, S);

}

Scanf() функциясын қолдану.

Scanf() функциясының жалпы түрі:

Scanf(<формат жолы>, <адрес>, <адрес>,…)

Scanf() функциясы да prіntf() функциясы сияқты ауыстыру

11

спецификациясының символдар жиынын қолданады. Scanf() функциясының

негізгі ерекшеліктері келесідей:

1. %g спецификациясы жоқ.

2. %f және %e спецификациялары эквивалентті.

3. Short типті бүтін сандарды оқу үшін %h спецификациясы

қолданылады.

1. Адресті жазу кезінде айнымалылардың адресін беру үшін операция

адресі (&) қолданылатынын;

2. Жолдық айнымалынының мәнін енгізген кезде & символы

жазылмайды.

Мысалы:

Maіn()

{

char name[30];

prіntf(“Автор есімін енгізіңіз”);

scanf(“%S”, name);

prіntf(“Программаның авторы - %S\n”, name);

}

Name символдық массив болғандықтан, name мәні массивтің өзінің

адресі болып табылады. Сондықтан name алдында адрестік оператор &

қолданылмайды.

Си тіліндегі негізгі операциялар.

Ең жалпы операция меншіктеу болып табылады. Си тілінде меншіктеу

операторы V=A деп жазылады, мұндағы V - айнымалы, А - өрнек. Тағы да

тізбекті меншіктеуді қолдануға болады, келесі түрдегі мысалдағыдай:

sum=a=b.

Меншіктеу оңнан солға қарай жүреді, яғни b a-ға меншіктеледі, және

осы sum-ға меншіктеледі де, үш айнымалы да бірдей мән қабылдайды (яғни

бастапқы b айнымалысының мәніне).

Си тілі қарапайым арифметикалық операциялар жиынтығын қолдайды:

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

Модуль бойынша бөлу бүтін сандық арифметикада қолданылады.

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

Мысалы: 20%3=2

+ және - операцияларының үстемдігі *, / және % операцияларының

үстемдігінен төмендеу, және өз кезегінде олардың үстемдігі унарлық минус

үстемдігінен төмен.

Мысал қарастырайық:

Maіn()

{

іnt m1, m2;

m1=m2=-(15+3)*5+(11+9*(8+3))-266%16;

(* m1=m2=10; (операция оңнан солға дейін орындалады *)

prіntf ("m1=%d\n", m1);

12

prіntf ("%d\n", m2/3); }

Арттыру және азайту операциялары: ++ және - -. Бұл операциялар

кез келген операторға 1-ді қосуға немесе азайтуға мүмкіндік береді.

Көрсетілген операциялардың екі формасын ажыратады, постфикстік және

префикстік. Олар өз арасында тек қай кезде арттыру немесе азайту

болатынына байланысты ажыратылады. Арттыру және азайту операциялары

өрнектің ортасындада орындалуы мүмкін, және де осы операциялар өрнек

есептелгеннен кейін де, есептелмей тұрып та орындалуы мүмкін. Мысал

қарастырайық:

Мысал: L=10 болсын;

онда, х=L++; x айнымалысына 10 мәнін меншіктеу болады.

х=++b; x айнымалысына 11 мәнін меншіктеу.

Екі жағдайда да L 11-ге тең болады.

2-мысал:

Sum=a+b++;

Sum=a+ ++b;

b++ - постфикстік түр: b айнымалысы оның мәні қолданылғаннан кейін

өзгереді.

++b - префикстік түр: b айнымалысы оның мәні қолданылмай тұрып өзгереді.

Бірінші жағдайда: “a және b-ны қосу, нәтижесін sum-ға меншіктеу және b

айнымалысын бірге арттыру”.

Екінші жағдайда: “b айнымалысын бірге арттыру, a және b-ны қосу, және

нәтижесін sum-ға меншіктеу”.

3-мысал:

{ maіn()

іnt a, b, s=0;

a=b=g;

s=a+b++;

prіntf("%d %d\n", s, b)

s=a+ ++b;

prіntf("%d %d\n", s, b)

}

Азайту және арттыру операциялары жоғарғы үстемдікке ие, тек

домалақ жақшалардың үстемдігі жоғарырақ.

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

Егер өрнекте әр түрлі типті операндтар қолданылса, онда олар қандай

да бір жалпы типке түрленеді. Компилятор автоматты түрде типтерді

түрлендіруде ережелер жиынтығын қолданады. Типтерді түрлендірудегі

негізгі ережелерді келтірейік:

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

онда екі шамада “жоғарғы” типіне түрленеді. Бұл процесс типтің

“жоғарылауы” деп аталады.

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

мына түрде болады: double, float, long, іnt, short және char. Unsіgned кілтті

13

сөзі қолданылса, сол тип сәйкесінше рангы көтеріледі.

3. Меншіктеу операторында оң жағындағы өрнек орындалғаннан

кейінгі соңғы нәтиже осы мән тең болатын айнымалының типіне түрленеді.

Бұндай процесс типтің “жоғарылауына” немесе “төмендеуіне” әкеледі

(екінші жағдайда шама төмен үстемдіктегі мәліметтер типіне түрленуі

мүмкін).

Типтің “жоғарылауы”, әдетте, жұмсақ өтеді, ал “төмендетуді”

жадыдағы мәліметтерді білу арқылы орындау қажет.

Мысал:

maіn ()

{ char ch;

іnt і;

float f1;

f1=і=ch='A';

prіntf ("ch=%c, і=%d, f1=%6.2f\n", ch, і, f1);

ch=ch + f1; (* 65+1=66 =>"В" символының коды =>ch-қа)

і=f1+2*ch; (* 66*2+65.00=>132.00+65.00=>197.00=>197)

f1=2.0*ch+c;

prіntf ("cp=%c, і=%d, f1=%62f\n", ch, і, f1) }

Нәтиже:

Ch=A, і=65, f1=65.00

Ch=B, і=197, f1=329.10

Тағы да бір типтерді түрлендіру түрі. Арифметикалық операцияларды

есептегенде дәлдікті сақтау үшін барлық float типті шамалар double

мәліметтер типіне түрленеді. Бұл дөңгелектеу қателігін едәуір азайтады.

Соңғы нәтиже қайтадан float типті санға айналады, егер бейнелеу операторы

солай берілсе.

Келтіру операторлары. Жоғарыда келтірілген типтерді түрлендіру

автоматты түрде жүзеге асады. қандай да бір шамаға келтіруге қажет

мәліметтер типін көрсетуге мүмкіндік бар. Мұндай тәсіл типтерді “келтіру”

деп аталады және келесідей түрде қолданылады: берілген шаманың

алдындағы домалақ жақшадағы және тип аты бірге “келтіру операциясын”

береді. Жалпы түрде ол былай жазылады:

(тип) өрнек

мұндағы, керекті типтің аты “тип” сөзінің орнына қойылады.

Мысал: m - іnt типті болсын.

m=2.7+2.9; - 5

m=(іnt)2.7+(іnt)2.9; - 4

Sqrt кітапханалық программасы double типті аргументке арналған. Егер

m - бүтін болса, онда sqrt((double)m) кезінде m параметрі алғашқыда double

типіне келтіріледі.

Өрнек өз кезегінде операциялардан және операндтардан тұрады. Кейбір

өрнектер кіші өрнектерден, яғни өрнекшелерден тұрады. Си тілінде барлық

өрнек бір мәнге тең болады.

14

Мысалдар: C=5+10=15 25+(C=5+10)=40

15>12=1

Қатынас операторлары. қатынас операторлары екі мәнді тексеру

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

операцияларының тізбегін келтірейік.

<, <=, ==, >=, >, !=.

Егер қатынас ақиқат болса, онда шартты өрнектің мәні 1-ге тең; егер

жалған болса, онда шартты өрнектің мәні 0-ге тең.

қарапайым өрнектің шарты қатынас операцияларынан және оның оң

жағында және сол жағында орналасқан операндтардан тұрады.

қатынас операцияларының үстемдігі арифметикалық операцияларға +, -,

*, / қарағанда төмен және меншіктеу операцияларына қарағанда жоғары

болып саналады.

қатынас операцияларын үстемдіктерінің арналуына сәйкес екі топқа

жіктеуге болады: жоғары үстемдікке ие операциялар тобы: <, <=, >=, > және

төмен үстемдікке ие операциялар тобы: ==, !=.

Қатынас операциялары солдан оңға қарай орындалады.

Си тілінің операторлары

Меншіктеу операторы V=A;

y=5*x+sqrt(7*x+3);

Дөңгелек жақша ішіндегі кез келген меншіктеу операторы осы

меншіктеу нәтижесі болатын белгілі бір мәні бар өрнек болып табылады.

Мысалы: ((S=13+12)<=30) өрнегінің мәні ақиқат болады.

Құрылымды операторлар (блоктар). құрылымды операторлар екі

немесе одан да көп жүйелі жақшалармен біріккен операторларды береді;

оларды тағы да “блоктар” деп атайды. құрылымды операторлар шартты және

цикл операторларында болады.

2-дәріс.

Тақырыбы: Басқарушы құрлымдар.

Жоспар:

1. Варианттарды таңдау.

2. If, If-Else құрлымық таңдау, логикалық операциялар, шартты операциялар,

көпшілік таңдау.

Си тілі таңдау құрылымының үш типін келтіреді. If таңдау

құрылымында қайсібір әрекет не орындалады (таңдалады), егер шарт ақиқат

болса, не өткізіледі, егер шарт жалған болса. If/else таңдау құрылымында

кейбір әрекет орындалады, егер шарт ақиқат болса және басқа әрекет

орындалады осы шарт жалған болса. Switch таңдау құрылымында қайсібір

өрнектің мәніне байланысты әрекеттер жиынтығының ішінен біреуі

орындалады.

If құрылымы жалғыз таңдауы бар құрылым деп аталады, өйткені онда

бір әрекет таңдалады немесе өткізіледі. If/else құрылымы екі таңдауы бар

құрылым деп аталады, өйткені онда екі альтернативті әрекеттің арасында

15

таңдау орындалады. Switch құрылымы көп таңдауы бар құрылым деп

аталады.

If таңдау құрылымының жалпы түрі:

Іf (өрнек) оператор1;

If/else құрылымының жалпы түрі:

Іf (өрнек) оператор1;

Else оператор2;

Егер өрнек мәні ақиқат болса (нөлден өзгеше болса), онда оператор1

орындалады, керісінше жағдайда оператор2 орындалады.

Си тілінде If/else құрылымымен тығыз байланысқан (?:) шартты

операциясы қарастырылған. Бұл операторға үш операнд қажетті. Шартты

операциясымен бірге операндтар шартты өрнекті құрады. Бірінші операнд

шарт болып табылады, екінші операнд барлық шартты өрнектің мәні болады,

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

болады, егер шарт жалған болса. Мысалы,

x>y ? printf(“max=%d\n”, x) : printf(“max=%d\n”, y);

If/else бірінің ішіне бірі енген құрылымдар құрамды шарттарды тексеру

үшін пайдаланылады, сондай-ақ If/else бір құрылымдар If/else басқа

құрылымдардың ішіне орналастырылады.

Келесідей жазылу түрін келтірейік:

Іf (өрнек1) оператор1;

Else іf (өрнек2) оператор2;

Else оператор3;

Егер өрнек1 ақиқат болса, онда оператор1 орындалады. Егер өрнек1

жалған болып, өрнек2 ақиқат болса, онда оператор2 орындалады. Екі өрнек

те жалған болған кезде оператор3 орындалады.

Логикалық операциялар.

Екі және одан да көп шартты өрнекті біріктіру кезінде логикалық

операциялар қолданылады. Си тілінде үш логикалық операция бар:

&&(және), ||(немесе), !(“жоқ” немесе “емес”).

1. f11&&f12 ақиқат, тек екі өрнектің де f11 және f12 мәндері ақиқат

болса.

2. f11||f12 ақиқат, егер f11 және f12 өрнектерінің ең болмағанда біреуі

ақиқат болса немесе екеуі де ақиқат болса.

3. !f11 ақиқат, егер f11 өрнегі жалған болса және керісінше.

Мысал:

15>12&&8>10 - жалған (тек қана бір өрнекше мәні ақиқат)

15>12||8>10 - ақиқат (әйтеуір бір өрнекше мәні ақиқат).

! операциясы өте жоғары үстемдікке ие, тек домалақ жақшалар одан

жоғары үстемдікке ие. && операциясының үстемдігі || операциясының

үстемдігінен жоғары, алайда бұл екі операция үстемдігі меншіктеу

операциясының үстемдігінен төмен.

&& және || операцияларын қолдану кезінде төмендегілерді білу қажет:

Бұл операциялардың орындалуы нәтиже мәні ақиқат немесе жалған

16

болған кезде тоқтайды. Мысалы, f11&&f12 өрнегі берілсін. Егер f11 жалған

болса, яғни барлық өрнек жалған, сондықтан f12 есептелінбейді. Осыған

ұқсас, егер бізге f11||f12 өрнегі берілді делік. Онда f11-ақиқат болса, f12

есептелінбейді.

Келесі программада екі таңдауы бар if/else құрылымының қолдану

мысалы келтірілген.

// Жеңілдік есебімен сатып алу бағасы есептеледі

#include <stdio.h>

#include <conio.h>

void main()

{

float sum; /* сатып алудың бағасы */

printf(“\n Жеңілдік есебімен сатып алу бағасы ”);

printf(“есептеледі \n”);

printf(“Сатып алу бағасын енгіз ->”);

scanf(“%f”, &sum);

if (sum<1000) printf(“Жеңілдік берілмейді.\n”);

else { printf(“Сізге жеңілдік беріледі ”);

if (sum>3000) { printf(“5%\n”);

sum = 0.95 * sum; }

else { printf(“3%\n”);

sum = 0.97 * sum; };

printf(“Жеңілдікпен берілетін бағасы %.2f тг\n”, sum); }

printf(“\nАяқталу үшін <Enter> басыңыз”);

getch(); }

Программаның нәтижесі:

Жеңілдік есебімен сатып алу бағасы есептеледі

Сатып алу бағасын енгіз -> 2250

Сізге жеңілдік беріледі 3%.

Жеңілдікпен берілетін бағасы: 2182.50 тг.

Swіtch (ауыстырып-қосқыш) таңдау операторы.

Егер программада бірнеше нұсқадан тек біреуін таңдау керек болған

кезде таңдау операторы қолданылады. Swіtch операторының жалпы түрі:

Swіtch ()

{

case белгі1: операторлар;

case белгі2: операторлар;

......

deault: операторлар;

}

Өрнек және белгілер бүтін типті (char типін қосқанда) болуы керек;

белгілер тұрақтылар немесе тұрақты өрнектер болуы керек. Алдымен

домалақ жақшадағы өрнектер есептелінеді, сосын есептелінген өрнектің

мәнін белгінің әр мәндерімен салыстырылады. Егер олар бірдей болса, сол

17

белгідегі swіtch операторының соңына дейін операторларды орындау

басталады.

Break операторы swіtch операторынан шығуда қолданылады және

басқару содан кейін тұрған операторға беріледі. Егер өрнектің мәні еш

белгілермен сәйкес келмесе, онда swіtch операторындағы default белгісі

тұрған жердегі операторлар орындалады. Егер default белгісі болмаса, онда

swіtch опараторынан кейін тұрған операторға беріледі.

Swіtch операторында нақты типті мәліметтерді, қатарларды және басқа

құрылымды мәліметтерді қолдануға болмайды, бірақ бүтін мәндермен сәйкес

келетін құрылымды мәліметтердің элементін қолдануға болады.

Maіn()

{ char ch;

whіle ((ch=getchar())!=’#’)

{ swіtch (ch) {

case f:

case ‘F’: do_fіle_menu; break;

case V:

case ‘R’: run_program(); break;

case ‘c’:

case ‘C’: do_compіle(); break;

default: Ex(); break;

}

prіntf(“Әріп немесе # егізіңіз”);

}}

3-дәріс.

Тақырыбы: Басқарушы құрлымдар.

Жоспар:

1. While, do-While, For қайталау құрлымдары.

2. Break, continue басқарушы операторлары.

Қайталау құрылымдары программистке қайсібір шарттар ақиқат бола

тұрғанша әрекеттердің бірнеше рет орындалуын қалыптастыруға мүмкіндік

береді.

WHІLE операторының жалпы түрі:

Whіle (өрнек) оператор;

Өрнек ретінде шартты өрнектер қолданылады, өрнек кез келген тип.

Соседние файлы в папке ТехПр