Си және Паскаль бағдарламалық тілдеріне синтаксистік анализ жасау

Автор: Пользователь скрыл имя, 04 Марта 2013 в 07:51, курсовая работа

Описание работы

Паскаль және Бейсик бағдарламалық тілдерінің әрі қарай зерттелінуі Си бағдарламалық тілімен танысуға алып келді. Си бағдарламалық тілі арқылы біз кез-келген бағдарламаны жазып, нәтижесін шығарамыз. Паскаль және Бейсик тілдерінде кейбір мүмкіндіктер шектеулі. Си бағдарламалық тілінің пайда болуы әр түрлі тiлдердің эволюциялық дамуының нәтижесi болып табылады. Эволюция бойынша қолданбалы бағдарламалауда алдымен Алголь, Коболь, Паскаль, Фортран сынды тілдер пайда болса, кейіннен жүйелiк-тiркеулi ассемблерлерден ЭЕМ-нiң тiркеулi архитектураларына негізделген ,трансляторларда жасалған Си тіліне өту кезеңі басталды.

Содержание

Кіріспе…………………………………………………………... 1
1.Си бағдарламалық тілінің Паскаль бағдарламалық тілінен артықшылығы ..2
1.1 Паскаль бағдарламалық тілінің мүмкіншіліктері (математикалық өрнектер, операторлар, циклдар)………………………………………………...7
1.2 Си бағдарламалық тілінің мүмкіншіліктері (математикалық өрнектер, операторлар,циклдар)…………………………………………………………...12
1.3 Си тілінің командаларының кейбір түрлері(масивтер)...............................14
Қорытынды………………………………………………………………………15
Пайдаланылған әдебиеттер тізімі………………………………………………16
Қосымшалар……………………………………………………………………...21

Работа содержит 1 файл

Курсовая работа Жарас.doc

— 209.50 Кб (Скачать)

 

Паскаль тіліндегі операторлар. Паесескаль тілінде шығару операторы Write,writeln және енгізу операторы Read,readln қолданылады. Writeln операторы экранға жаңа жолдан бастап шығарады.  Read операторы өзінен кейін берілген жақша ішіндегі айнымалылардың алғашқы мәнін сұратады.

Идентификатор.  Бағдарлама объектісін белгілеу үшін идентификатор қолданылады Тұрмыста идентификатор “ат беру”, “аты”, “ат қою” деген мағынада көбірек қолданылады.

Integer - сандық бүтіндік  шама;

Real - сандық бөлшектік шама;

Char - символдық шама болғандықтан , жеке бір таңбаны мән ретінде қабылдайды . Мысалы “r”,”h”,”k”

Boolean - логикалық бульдік шама. Оның мәні True(ақиқат) және False(жалған) болады. Ақиқат және жалған командалары 1 және 0 арқылы өрнектеледі.

String - мәтіндік шама. Түйінді сөз арқылы сипатталып, 255 таңбаға дейін қабылдай алады.

Операторлар. Операторлар бағдарлама нұсқауынан және бағдарламада ретімен жазылатын операторлар тобынан тұрады. Олар екі түрге бөлінеді: қарапайым және күрделі. Қарапайым операторлар тек жалғыз оператордан тұрса, күрделі операторлар бірнеше операторлардың бірігуінен тұрады.

Шартты оператор(if ,then) - цикл операторларында шарт тексеріліп, дұрыс болған жағдайда одан кейінгі оператор орындалады. Ал еlse операторы қолданылған жағдайда шарт тексеріліп, дұрыс болған жағдайда одан кейінгі бірінші шарт орындалады, ал шарт орындалмаған жағдайда екінші оператор орындалады.

Паскаль тілінде циклдармен жұмыс жасау.  Қайталау (цикл) операторлары белгілі бір операторды немесе операторлар тобын бірнеше рет орындау мүмкіндігін ұйымдастыруға қолданылады. Қайталанатын операторлар тобы циклдің денесін құрайды. Паскаль цикл ұйымдастырудың үш түрі бар: While (әзір), Repeat (дейін), For (параметрлі цикл). While Repeat операторлары қайталау саны белгісіз, бірақ циклге кіру немесе циклден шығу шарттары белгілі жағдайда қолданылады. Егер қайталау саны белгілі болса, онда параметрлі циклді пайдаланған жөн.

While-Do

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

Жазылу: While <шарт> do <циклдің  денесі>;

Цикл денсін әрбір  қайталау алдында шарт тексеріледі. Шарт ақиқат болаған жағдайда, цикл денесі орындалады, әйтпесе программа келесі операторға көшеді. Егер шарт алғаш тексерілгенде, жалған болса, цикл денесі бір рет те орындалмастан программа цикл соңына шығады.

Енді While-Do операторының жұмыс схемасы түрінде көрсетейік.

Мысалы: а, в (а>1) сандары берілген. Экранда 12Р°1,Р°2,Р°3'> ... шексіз тізбегінің берілген в санынан кіші мүшелерін  азайту керек.

 

Program M7;

Var a, b, c:real;

Begin

Read(a,b);

Writeln (‘’);

c:=a;

while c<b do

 

begin

writeln (c:6:1);

c:=c*a; write (‘’,c);

end;

end.

 

Бұл программаның орындалу барысында с айнымалысы 12Р°1,Р°2,Р°3'>... мәндерін біртіндеп қабылдайды, с-ның  мәні в-ге ең не артық болғанша өзгеріп  отырады да, соған сәйкес болса, экранға  еш нәтиже шықпайды. Мұнда цикл денесі құрмалас оператор болғандықтан операторлық жақша begin, end қолданылады.

Repeat – Unit операторы. Repeat қайталау операторы While операторына  ұқсас, айырмашылығы - қайталану  шартты цикл соңында тексеріледі,  сондықтан ол кем дегенде бір  рет орындалатын болады. Екінші өзгешелігі – цикл тұлғасы шарт жалған болғанда қайталанып, ол ақиқат болған кезде циклді орындау доғарылады.

Мысалы: Енді 0 мен 10-ның арасындағы жұп сандардың қосындысын есептейтін программаның Repeat операторының көмегімен  көрсетейік:

 

Program M9;

Var I, sum:integer;

Begin

i:=0; sum:=0;

Repeat

Sum:=sum+i;

i:=i+2;

Until (i>10);

Writeln(‘2+4+8+10=’,sum);

Readln;

End.

Мұндағы цикл денесі і>10 шарты орындалмаса, қайталана береді. Программадағы Repeat Until операторының жұмысы суретте көрсетілгендей. Цикл денесінен Goto оның операторы арқылы шығуға болады.

FOR-DO, FOR-DOWNTO

FOR-DO циклдік операторы  қайталау саны алдын ала белгілі  болған жағдайда қолданылады.  Бұл оператор екі түрлі беріледі.

Жазылуы:

For<циклдік параметр>:=<алғашқы  мән>to<соңғы мән>do<циклдің денесі>;

For< циклдік параметр >:=<соңғы мән >downto<алғашқы  мән>do<циклдің денесі>;

Мұндағы циклдік параметр кейде басқару айнымалысы деп  аталады. Алғашқы және соңғы мәндер нәтижесі – нақты типтен басқа  стандартты жай тип болатын өрнектер. Басқару айнымалысының типі, алғашқы және соңғы мәндердің типтері бірдей болуы керек. Олар нақтыдан басқа кез-келген жай типі болуы мүмкін. Цикл денесі жай немесе құрмалас оператор юола алады.

Циклдік оператор орындалғанда, бірінші өрнектің мәні есептеліп, FOR-DO (FOR-DOWNTO) операторында циклдік параметрге алдымен алғашқы мәнді меншіктейді. Басқару айнымалысының мәні 1-ге тең қадаммен біртіндеп өзгеріп отырады DO қызметші сөзінен кейінгі цикл денесі басқару параметрінің әрбір мәні үшін бір реттен орындалып отырады. Егер басқару айнымалысының алғашқы мәні соңғы мәнінен артық немесе кем болса, онда цикл денесі бір рет те орындалмайды. Параметрлі циклдің жұмысын анық көреміз.

Мысалы: параметрлі циклдердің көмегімен бізге жиі кездесетін n! Мәнін есептеу программасын екі түрмен көрсетейік:

 

Program M11A;

Var n, I, p:=integer;

Begin readln(n);

p:=1;

For i:=2 to n do p:=p*i;

Write(‘n!=’,p);

End.

 

Паскаль тілінде циклдардың мынандай үш түрі бар: 1) For to do; 2) While do; 3)Repeat until.

Бағдарламаны құру кезінде  үрдістер қайталанып келетін жағдайда қайталану инструкцияларын қолданамыз. Сондай инструкцияның бірі - Repeat. Repeat кезінде қайталанатын үрдіс жоққа шыққанға дейін  орындалады. Жоққа шығу инструкциясы кезінде Until сөзінен кейін циклды аяқтайтын шарт жазылуы керек. Repeat инструкциясы кезінде соған қаттысты шарт қана жазылады. Бұл инструкция орындалу кезінде қайталану үрдісі кем дегенде бір рет орындалуы керек. Өзге инструкциялардан айырмашылығы мұнда жуықтау амалдарын орындау, іздеу немесе берілгендерді өңдеу үрдістері орындалады.

 

 

1.2 Си бағдарламалық тілінің мүмкіншіліктері (математикалық өрнектер, операторлар, циклдар)

 

 

    Cи тілі барлық бағдарламалар секілді әр түрлі күрделі есептерді шығаруға арналған.

Тілдің  альфавитінде қолданылатын символдар : 0,1,2,,,,,,9 сандары, A,B,C.......Z әріптері ,+ , - , /, *, %, {}, [], (), !, &, #, ^, :, ;, ?, <, >,=символдары.

  Фалдың атауы әр уақыттада әріптен басталу керек. Сандар әріптердің арасына қойылады.

Си  тілінде типтердің анықталуы:

int - 4 байттан құрылған бүтін сандарды анықтау;

float - 4 байттан құрылған нақты сандарды анықтау;

double - 8 байттан құрылған еселенген нақты сандарды анықтау;

char - 1 байттан құрылған символдарды анықтау.

Қосымша сөздер –негізгі типтерге қосарлама ретінде қолданылады.

Short - қысқа

Signed - таңбасы бар бүтін

Unsigned – таңбасы жоқ бүтін

Long - ұзын 2 байт қосады

Мысалы: short int,long float. 1 байтқа 256 символ жаза аламыз. Әрбір жол соңында нүктелі үтір қойып отырамыз.

Int a,b,c;

Float d,e;

Short int i;

Tүсініктеме жазу. //бір жолға түгелімен түсініктеме жазу

/*түсініктеменің басталуы                    */түсініктеменің аяқталуы

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

 

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

 

Приоритет

Таңбалау

Амалдын аты

Амалдардын  орындалу реті

1

::

Таралым аймағынын қолайлығы

Солдан  оңға қарай 

2

( )  [ ]  ->  .

Функцияны, тізбектін немесе құылымнын элементін  қарастыру

Солдан  оңға

3

~ ! + - ++ -- & * (приведение типа) sizeof new delete

барлығы унарлық: битті және лолгикалық кері, арифметикалық "+" және "-", инкремент, декремент, адресті қайтару, атын жою, объектін өлшемі, динамикалық жадыны қолдану және босату

Оңнан солға қарай

4

.*  ->*

Класстын  элементінін қолайлығы

Солдан  оңға

5

*  /  %

мультипликативті

Солдан  оңға

6

+  -

аддитивті

Солдан оңға

7

<<  >>

Жылжулар

Солдан  оңға

8

<  <=  >  >=

кіші-үлкен

Солдан  оңға

9

= =   !=

тең, тең емес

Солдан  оңға

10

&

битті ЖӘНЕ

Солдан оңға

11

^

Битті НЕМЕСЕге кері

Солдан оңға

12

|

битті НЕМЕСЕ

Солдан оңға

13

&&

логикалық ЖӘНЕ

Солдан оңға

14

||

логикалық НЕМЕСЕ

Солдан оңға

15

? :

Шартты  өрнек

Оңнан солға

16

= *= /= %= += -= <<= >>= &= ^= |=

меншіктеу

Оңнан солға қарай

17

,

үтір

Солдан  оңға


 

    Математикалық функциялар. Бағдарлама берілген есептің шешілу жолын анықтап, алгоритмдерді арнайы машиналық тілде жазады. Бағдарламаның негізгі сипаттары мынандай: 1) алынған нәтиженің дұрыстығы, 2)орындау дұрыстығы, 3) жадыдағы алатын орны немесе көлемі. Кез-келген бағдарлама берілгендерді орындау үшін  қолданылады. Бағдарламада қолданылатын сандар тұрақты және айнымалы болып екіге бөлінеді. Бағдарлама басында анықталған және үрдіс кезінде өзгермей қалатын шаманы тұрақты деп атаймыз. Бағдарламаны құру кезінде келесі математикалық функциялар қолданылады.    Математикалық функцияларымен жұмыс істеу үшін math.h библиотекасын іске қосу керек.

 

Кесте 3. Си тіліндегі  математикалық функциялар

 

ABS(X)

Х-тің модулін табады

ACOS(X)

ARCCOS X-ті есептейді

ASIN(X)

ARCSIN X-ті есептейді

ATAN(X)

ARCTAN X-ті есептейді

CEIL(X)

X-тің толық мүшесін табады

EXP(X)

функцияның экспонентасын есептейді

FABS(X)

X-тің абсолют мәнін есептейді

FLOOR(X)

Х-тан үлкен немесе тең мәнін табады

FMOD(X,Y)

қалдық бөлігін табады

LABS(X) 

LONG модулін табады

LOG(X)

X-тің натурал логорифін есептейді

LOG10(X)

Х-тің ондық логорифін есептейді

POW(X,Y) 

Х-тің, y-тің дәрежесін есептейді

POW10(X)

10-ның Х дәрежесін есептейді

SQRT(X)

Х-тің квадратын табады


 

Си  тіліндегі циклдар. Күрделі нұсқау (блок) - { және } жақшаларға алынған кез-келген нұсқаулардың тізімі. Сонымен, блок арқылы нұсқаулардың тізімін бір күрделі нұсқауға жинақтайды.

Қарапайым алтернативті тармақталу шартты оператормен ұсынылған:

if (L)

   S1

else

   S2

мұнда L – бүтін түрдегі өрнек, S1 - нұсқау, S2 - нұсқау. Егер L ақиқат болса (нөлге тең емес), онда S1 орындалады және басқару S2 нұсқаудан кейінгі нұсқауға беріледі. Егер L жалған болса (нөлге тең), онда S2 орындалады.

Қысқа түрі мүмкін:  if (L) S1. Сондықтан кіріктірілген if нұсқауында else бөлімі жоқ кезде қыіндықтарды тудыруі мүмкін. Осы кезде else осы блоктын ішіндегі алғашқы if нұсқауына else бөлімі жоқ біріктіріледі.

 

#include<iostream.h>

#define N 10

main()

{

         int i,b,x;

         cin>>i;

         cin>>b;

if(i<0) x=i*b;

else if(i>0) x=i-b;

else if(x==0) x=i;

cout<<”x=”<<x<<”\n”;

           return(0);

}

 

 

Ауыстырып қосу нұсқауынын жалпы түрі:

   switch (E) {

   case C1: S1

      …

   case Cn: Sn

   default: S

}

мұнда E – бүтін түрдегі өрнек; C1, …, Cn – Е-мен біртипті тұрақты өрнек; S1, …, Sn, S – нұсқаулар тізімі немесе бос. Е мәнін C1, …, Cn мәндерімен салыстырады және басқаруды Sk береді, егер Е мәні Ck тең болса. Қызметші сөздер case тұрақтылармен және default таңба ретінде қолданылады, сондықтан Sk, Sk+1, …, Sn нұсқаулары орындалады, S, егер break нұсқауы кездеспесе. Егер Е мәні C1, …, Cn біреумен де тең болмаса, онда басқару default таңбасына беріледіде S тізімі орындалады.  Default міндетті түрде ақырғы болмауы мүмкін, және жазылмауыда мүмкін.

Си және Си++ тілдерінде циклдын үш түрі болады.

Алғы шартпен:

while (L)

   S

мұнда L – бүтін түрдегі өрнек, S - нұсқау (қарапайым немесе күрделі). Әзірше L ақиқат болса, онда S (итерация) орындалуы қайталанады, және әр қайталанудын алдында L мәні есептеліп отырады. L мәні жалған болғанда, басқару S кейінгі нұсқауға беріледі.

Соңғы шартпен:

do

   S

while (L);

мұнда L – бүтін түрдегі өрнек, S - нұсқау (жай немесе күрделі), ";" таңбасы соңында болуы міндетті. Алдымен S орындалады, сосын әзірше L ақиқат болғанда, онда S қайталанады, және әр қайталанудын алдында L мәні есептеліп отырады. L мәні жалған болғанда while (L) –дан кейінгі нұсқауға басқару беріледі.

Жалпы түрдегі цикл:

for (E1; E2; E3)

   S

мұнда E1, E2, E3 – бүтін түрдегі өрнек, S - нұсқау. Бұл цикл алғы шартты циклдың бір түрі – келесі екі цикл тең деп саналады:

for ( ; E2; )

   S

while (E2)

   S

Информация о работе Си және Паскаль бағдарламалық тілдеріне синтаксистік анализ жасау