
|
Тұрар Рысқұлов атындағы Қазақ экономикалық университеті Казахский экономический университет им. Т. Рыскулова
|
«Инженерлік-экономика» факультеті
«Қолданбалы информатика» кафедрасы
Дәрістік кешен
ASDP 1216- «Алгоритмдер, деректер құрылымы және программалау»
пәні бойынша
5В070300- «Ақпараттық жүйелер»
мамандығының студенттеріне арналған
Алматы, 2012ж.
Дәріс №1
Тақырыбы: Алгоритмдеу негіздері. Алгоритмдердің қасиеттері. Блок-схемалар. Программалау тілдері.
Жоспары:
Алгоритм, программа түсінігі.
Алгоритмнің қасиеттері.
Алгоритмдерді жазу жолдары
Блок – схемалар
Алгоритмдерді бейнелеу блоктары
ЭЕМ-де есеп шығару кезеңдері
Программалау тілдері
Түйінді сөздер: алгоритм, программа, блок – схемалар, программалау тілдері.
ЭЕМ-ді пайдалану істерін қарастырмас бұрын оның жұмысымен тығыз байланысты алгоритм, программа ұғымдарын білуіміз қажет.
Алгоритм – берілген есептің шығару жолын реттелген амалдар тізбегі түріне келтіру. Кез келген есепті қарапайым амалдарды тізбектей орындау арқылы шығаруға болады. Алгоритмді ЭЕМ-де орындау үшін оны программа түрінде жазып шығу керек.
Программа – алгоритмді машинаға түсінікті нұсқаулар тізімі ретінде жазу. Программа машинаға түсінікті командалардан тұрады. Осы
Алгоритм қасиеттері
Алгоритм ұғымының мәнін ашатын негізгі қасиеттерінен немесе оған қойылатын талаптардан қысқаша мағлұматтар келтірейік. ЭЕМ-де орындалуға тиіс алгоритмдерге мынадай талаптар қойылады:
1) ол анық әрі дәл өрнектелуі тиіс;
2) алгоритм шектелген уақыттан соң нәтиже беруі тиіс, яғни алгоритм қадамдарының саны шексіз болмауы керек;
3) бір тектес есептерге жалпы бір ғана алгоритм қолданылуы тиіс;
4) алгоритмді кішкене бөліктерге бөлу мүмкіндігі болуы қажет.
Алгоритмдерді жазу жолдары
Алгоритмдерді ЭЕМ-де орындау үшін оларды алдын ала жазып алу керек, яғни ол белгілі бір заңдылықпен өрнектелуі тиіс. Жалпы алгоритмді жазып өрнектеу түрлеріне:
1) табиғи тіл арқылы жазу;
2) графика жолымен жазу (Блок – схемалар);
3) алгоритмдік тілдермен жазу жолдарын жатқызуға болады.
Блок – схемалар
Блок – схема – арнайы геометриялық фигуралар, нұсқамалар арқылы орындалатын әрекеттер мен олардың орындалуы ретін көрсететін графиктік схемалармен берілетін алгоритм.
Блок – схема алгоритмді сипаттаудың графикалық тәісілі. Блок – схема деп, бағытталған байланыс нұсқамалармен геометриялық фигуралар формасында алгоритмді графикалық түрде жазуды айтады.
Алгоритмдерді бейнелеу блоктары
Іс-әрекеттің аты |
Блоктың пішімі |
Атқаратын жұмысы |
Процесс
|
|
Математикалық өрнектерді есептеу |
Басы – соңы
|
|
Алгоритмдерді бастау, аяқтау |
Алдын ала анықталған процесс (подпрограмма)
|
|
Қосалқы программаларға кіру және шығу |
Шешім
|
|
Есеп шығару жолын таңдау |
Енгізу-шығару
|
|
Мәліметтерді енгізу және шығару |
Модификация
|
|
Цикл басы |
Құжат
|
|
Нәтижені баспаға (қағазға) шығару |
Түсініктеме
|
|
Схеманы, формулаларды түсіндіру |
Алгоритмдер блоктардың өзара байланысуына қарай үш түрлі бірыңғай құрылымға – сызықтық, тармақтық және циклдік болып үш топқа бөлінеді. Енді соларды қарастырайық.
ЭЕМ-де есеп шығару кезеңдері
ЭЕМ-де есеп шығару күрделі процесс болып есептеледі, ол төмендегі кезеңдерден тұрады:
1. Берілген есепті математикалық түрде өрнектеу, яғни есепті мәселе ретінде қоя білу.
2. Есепті шығарудың ЭЕМ-ге ыңғайлы сандық тәсілдерін анықтау.
3. Есепті шығару жолын алгоритм түрінде бейнелеу.
4. Есепті ЭЕМ-де шығару программасын жасау және оның қателерін түзету.
5. Есепке керекті мәліметтер дайындау.
6. ЭЕМ-де есепті шығару және шыққан нәтижені іс жүзінде қолдану.
Программалау тілдері
Алгоритмдерді ЭЕМ-ге түсінікті мәтін ретінде жазуға арналған қарапайым жасанды тіл программалау тілдері деп аталады. Әрбір ЭЕМ-нің өзінің машиналық программалау тілі болады, оны командалар тілі немесе кодтар (арнайы таңбалау) тілі дейді. ЭЕМ тек өз ана тілінде, яғни машиналық тілде жазылған программаларды ғана орындай алады. Алайда, машина тілінде программа жазу өте күрделі жұмыс, өйткені ол тек екілік (он алтылық) жүйедегі кодтардан тұрады және әр машинада әр түрлі машиналық тіл қолданылады.
Программа жазуды жеңілдету үшін математикалық формулаларды кеңінен қолданатын, ағылшын тілінің негізінде жасалған алгоритмдік тілдер Бейсик, Паскаль, Фортран, Си, т.б. кеңінен қолданылады. Алгоритмдік немесе программалау тілі – жазу ережелері қарапайым жасанды тіл. Оның машина тілдерінен айырмашылығы – табиғи ағылшын тілі негізге алынып, кең тараған математикалық таңбалармен толықтырылып жасалған. Сондықтан алгоритмдік тілдерде программа жасау адамдарға әрі жеңіл, әрі ыңғайлы болып келеді. Алгоритмдік тілдер автоматты түрде ЭЕМ-нің көмегімен аудармашы программалар арқылы машиналық тілге көшіріледі. Алгоритмдік тілді машина тіліне тікелей аударатын үлкен программаларды транслятор деп атайды. Алгоритмдік тілдерді пайдалану программалауды жеңілдете отырып, ЭЕМ-де есеп шығару процесін оңайлатады, алайда онда есеп шығару уақыты аздап көбейеді.
Алгоритмдік тілдер машинаға және проблемаға бағытталған болып екіге бөлінеді. Машинаға бағытталған тілдердің машина тілінен айырмашылығы, олар ЭЕМ-нің ерекшеліктерін есепке ала отырып әріптерді де пайдаланады. Қазіргі кезде машинаға бағытталған тілдерде маман программалаушылар жұмыс істейді. Оларға – автокод, макроассемблер, ассемблер тәрізді тілдер жатады.
Проблемаға бағытталған тілдер шығарылатын есептердің ерекшеліктерін еске ала отырып, есептің математикада жазылу тіліне жақындастырылады. Бұларға – Бейсик, Фортран, Паскаль, Си, т.с.с. тілдер жатады.
Негізінде ЭЕМ-де кез келген программалау тілінде жазылған есеп машина тіліне аударылып барып орындалады. Есептің орындалу кезеңдері суретте көрсетілген схема түрінде көрсетуге болады.
Қазіргі кезде бес жүзге жуық алгоритмдік тілдер тараған. Олардың әрқайсысы белгілі бір мақсаттарда қолданылады. Мысалы, Фортран – ғылыми-техникалық (инженерлік) есептерді шығару үшін, Паскаль – оқып үйренуде, ал Си тілі үйрену үшін де, өндірістік есептерде де, операциялық жүйелер жазу үшін де қолданыла беретін кең қолданыстағы тіл болып табылады.
Бақылау сұрақтары
1. Алгоритм және программа дегеніміз не, олардың қандай ұқсастықтары мен айырмашылықтары бар?
2. ЭЕМ-де орындалатын алгоритмдердің қандай қасиеттері болады?
3. Алгоритмдерді өрнектеу жолдары.
4. ЭЕМ-де есеп шығару кезеңдері.
5. Алгоритм схемаларының әр түрлі блоктары, олардың бейнеленуі, байланыстары.
6. Сызықтық, тармақталу және циклдік алгоритмдер.
7. Қадамдық циклдер және олардың ерекшеліктері.
Ұсынылатын әдебиеттер: 1 нег [63-77], 2 нег [23-133], 6 қос [84-106 ], 7 қос [4-7 ]
№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 және т.б. түрдегі препроцессор директивалардан және функция атынан тұрады. Функция атының өте жақсы белгісі ретінде дөңгелек жақшалар қызмет атқарады, тіпті аргумент, жалпы айтқанда, болмауы мүмкін. Функция денесі жүйелі жақшаға алынған және әрқайсысы “;” символымен аяқталатын операторлар жиынтығынан береді.
Мәліметтер типтері. Си тілінде бірнеше негізгі мәліметтер типтерін қолдану негізделген. Си тілі стандартында әр түрлі мәліметтер типтеріне нұсқайтын жеті кілтті сөздер қолданылады. Осы кілтті сөздер тізімін келтірсек: і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 кілтті сөзі қолданылады. Мысалы:
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 директивасын символдық және жолдық константаларды анықтау үшін де қолдануға болады. Бірінші жағдайда “апостроф” белгісін қолдану қажет, ал екіншісінде тырнақшаны.
Мысалы:
#defіne NULL ‘\0’
#defіne BL1 “Блок 1”
Бақылау сұрақтары:
Таңбасы жоқ бүтін сандармен жұмыс істеуге арналған мәліметтер типтерін атаңыз.
Нақты типті сандармен жұмыс істеуге арналған мәліметтер типтерін атаңыз.
Символдық қатармен жұмыс істеуге арналған мәліметтер типтерін атаңыз.
Препроцессор директивасының қызметі
Ұсынылатын әдебиеттер: 1 нег [63-77], 2 нег [23-133], 6 қос [84-106 ], 7 қос [4-7 ]
№3 тақырып: Тілдің негізгі операторлары. Арттыру және азайту операциялары. Типтерді түрлендіру.
Жоспары:
Prіntf() және scanf() функцияларын қолдану.
Си тіліндегі негізгі операторлар.
Арттыру және азайту операциялары: ++ және - -.
Типтерді түрлендіру.
Келтіру және қатынас операторлары.
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() функциясы сияқты ауыстыру спецификациясының символдар жиынын қолданады. 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);
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 кілтті сөзі қолданылса, сол тип сәйкесінше рангы көтеріледі.
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 типіне келтіріледі.
Өрнек өз кезегінде операциялардан және операндтардан тұрады. Кейбір өрнектер кіші өрнектерден, яғни өрнекшелерден тұрады. Си тілінде барлық өрнек бір мәнге тең болады.
Мысалдар: 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) өрнегінің мәні ақиқат болады.
Құрылымды операторлар (блоктар). құрылымды операторлар екі немесе одан да көп жүйелі жақшалармен біріккен операторларды береді; оларды тағы да “блоктар” деп атайды. құрылымды операторлар шартты және цикл операторларында болады.
Бақылау сұрақтары:
1. Prіntf() және scanf() функцияларын қолданудағы спецификаторлырын ата
2. Қандай арттыру және азайту операцияларының жазылу формалары бар және олардың айырмашылығы?
3. Символдық және қатарлық константаларды анықтауға арналған препроцессордың директивасын ата.
4. scanf функциясын қолданғанда форматтың қандай спецификациялары эквивалентті болады?
5. Қандай жағдайда типтің “жоғарлануы” болады?
Ұсынылатын әдебиеттер: 1 нег [63-77], 2 нег [23-133], 6 қос [84-106 ], 7 қос [4-7 ]
№4 тақырып: Басқарушы құрлымдар. If, If-Else шартты операторлары, логикалық операциялар, таңдау операторлары
Жоспары: