Лекция. Модульдік программалау концепциясы 8 страница



for (K=9; k>=0; k--) printf (" %d\n", k);

үзіндісі баған бойынша 9, 8, ..., 2, 1, 0 сандарын басып шығарады. Цикл параметрін символдық етіп алуға да болады. Мысалы,

for (ch='A'; ch='R'; ch ++) printf (" %c ", ch);

циклі кезегімен A = дан R-re дейін латын алфавитінің бас әріптерін басып шығарады.

C, C++ - тілдерінде функция бөлімінде пайдаланылатын бүтін тұрақтының орнына айнымалы арқылы белгіленген атауын пайдалануға да болады. Ол үшін тұрақтыны main() функциясының алдында CONST стандартты операторы (спецификаторы) арқылы сипаттап қою керек. Сипаттау үлгісі:

const <атау>= <мән>

мысалы, const ms =12; Тұрақтының типі оның мәнінің типімен анықталады. Мәнді айнымалы атауы арқылы сипаттаудың да қатесі жоқ, мысалы, const ms;

1-мысал. for циклін пайдаланып, функциясының мәнін есептеу керек.

y=x5

#include <stdio.h>

#include <conio.h>

const a=5;

main()                                                     

{

float x, y; int k; clrscr();

puts("x мәні : x=?");

scanf("%f", &x); y=l;

for(k=l; k<=a; k++)

y=x*y;

printf ("дәреже= %f\n", y); getch (); return 0;

}

Цикл шексіз болуы да мүмкін. Мысалы, for (k=10; k>8; k ++)

Шексіз не жай циклден break операторын пайдаланып шығуға болады.

2-мысал. Жоғарғы циклде баған бойынша  10, 11, 12, ..., 16

сандары жазылған соң for циклін тоқгату керек. Құрылатын блок:

for (k=10; k>8, k++)

{

printf ("сан= %d\n", k);                           

if(k==16) break;

}

Ескерту. Жазылуына байланысты, C, Turbo C++ тілдерінде for циклінің параметрі әр кайталану кезінде тек 1-ге өседі не 1-ге кемиді. Параметрге баска санды қосу үшін оның өзгеру командасын цикл ішінде беру керек. Мысалы ,

x=2 ; y=0;

for(k=0;k<18;k++)                                              

{ k=k+3; y=y+x*x;

printf("%d",y); }

үзіндісінің орындалу нәтижесі: 4 8 12 16 20 .

Ескерту. C++ тілінің жаңа Borland C++ нұскаларында параметрдің өзгеру түрін (өрнекЗ-ті) бірден k=k+sm түрінде беруге болады, мұндағы sm — пайдаланушының таңдап алған цикл қадамының шамасы, мысалы: k=k+3 не k+=3.

While, do-while циклдері

Циклдердің жазылу үлгісі (while — әзірше, do -орындау):

1) while (шарт) { операторлар}

2) do { операторлар } while (шарт)

while циклінің денесінде бір ғана оператор бар болса, оны фигуралық жақшаларға алмай жазуға да болады.

1- мысал . Жалпы мүшесі ak=k*k (k=l,2,...) болатын тізбектің алғашқы алты мүшесінің қосындысын табу керек.

#include <stdio.h>

#include <conio.h>

main()                              

int k, a, s; clrscr();

while (k<=6) { a=k*k; s=s+a; k++; }

printf("s=%d\n", s);

getch(); return 0;

}

// Нәтиже : s = 91

Программа денесінің while блогын do while құрылымымен дайындауға да болады: do

{ a=k*k; s=s+a; k++; } (132)

while (k <= 6 );

Ескерту. 1. Циклді пайдалану кезінде бөлшек түрінде берілген тізбектің мүшелері 1-ден кем, мысалы, ak =l/(k*k) түрінде берілген болса, олардың қосындысын есептеу үшін a , айнымалыларын float типі арқылы сипаттау керек.

While циклінен ерте шығу үшін break не goto операторын пайдалануға болады.

 


13-лекция. Жалғасу операторы, ауыстырғыш-операторы, ажырау операторы, көшу операторы, қайтару операторы.

Жоспар:

1. Бір-біріне салынған циклдер.

2. continue операторы.

3. break операторы.

 

Бір цикл екінші циклдің ішінде орналасса, олар бір-біріне салынған циклдер не цикл ішінде цикл делінетіні белгілі. C, C++ тілдерінде сыртқы цикл денесі фигуралық жақшаларға алынып жазылады. Егер ішкі цикл де бірнеше операторлардан тұрса, ол да осындай түрде жазылады.

1-мысал. ( 9 X 9 ) көбейту кестесін дайындау керек.

#include <stdio.h>

#include <conio.h>

main()

{

int k, j; clrscr();

for(k=l; k<10; k++ )

{

for(j=l;j<10;j++)

printf("%d * %d=%d",k,j,k*j);

printf("\n");

}

getch();

return 0;

}

 

continue (жалғастыру) — for, while, do while циклдерінің кез келгенінде пайдаланатын оператор. Оның орындалу түрі: ол оқыләан соң жуйе цикл денесінің қалған бөліктерін орындауды тоқгатады да, циклді қайталап орывдайды, яғни баскаруды циклдің жаңа қадамын орындауға өткізеді. Бұл оператордың орындалуы break операторының орындалуына карама-қарсы.

2- мысал . 1 .. 150 натурал сандарының ішінен 9-ға еселі сандарды табу керек.

#include <stdio.h>

#include <conio.h> .

main() (15)

int k; clrscr();

for (k=l; k<=150; k++) {if (k % 9) continue; printf("%12d\n",k); } getch (); return 0;

// Нәтиже (баған бойынша шығатын сандар): 9 18 27 ... 144

Ескерту. printf операторының форматтық параметріне 12 d символы енгізілген. Мұндағы 12 саны нәтижені экранның сол жағынан 12 позициялық орьн тастап шығару керектігін ғана көрсетеді.

Таңдау құрылымындағы әр case операторынан кейінгі жолда break (тоқтату) операторы енгізіледі. Ол сәйкес case операторы орындалған соң, оны тоқтатады да, жүйе басқаруды switch операторынан соң жазылған программаның келесі операторына өткізеді.

1-мысал. Адам аттарынан тұратын латын әріптерімен жазылған тізім берілген: Erjan, Jamila, Marjan, Sultan, Marat. Алғашқы бас әріптері бірдей болатын аттарды анықтау керек.

#include <stdio.h>

#include <conio.h>

main()                                                    

char ch; int ml; clrscr();

ml : printf("JIaтыншa бас әріп енгізіңіз-?");

ch=getchar(); /* getchar() - ағымдық келесі символды оқу операторы */

if(ch='A' && ch='Z');

switch (ch)

case 'E' : printf("Erjan\n"); break;

case 'J' : printf("Jamila\n"); break;

case 'M' : printf("Marat, Marjan\n"); break;

case 'S' : printf ("Sultan\n"); break;

default : printf ("Енгізілген 1-бас әріптік атау жоқ"); " : goto ml;

} getch(); return 0;

 

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

#include <stdio.h>

#include <conio.h>

main()                                                                 

int m; clrscr();

printf("l. Үшбұрыш ауданы \n"");

printf("2. Трапеция ауданы \n"");

printf("3. Дөңгелек ауданы \n"");

printf("4. Шығу \n"");

scanf("%d", &m);

switch(m)

{

case 1 : printf(("\n Үшбұрыш ауд.: s=a*h/2");

printf(("\n а-табаны, ћ-биіктігі");

break;

case 2 : printf(("\n Трапец. ауд.: s=(a+b)*h/2");

printf(("\n a, b-табандары, ћ-биіктігі");

break;

case 3 : printf(("\n Дөңг. ауд.: s=pi * r *r");

printf(("\n pi=3.14159, г-радиус"); break;

case 4 : goto exit;

}

exit; getch(); return 0;

}


14-лекция. Деректерді өңдеудің негізгі құралдары

 

Жоспар:

1. ¤рнектер, оларды есептеу тәртібі.

2. Операциялар полиморфизмы, жанама әсері.

3. Процедуралар және функциялар.

4. Деректерді өңдеу іріленген операцияларды сипаттау ретінде.

5. Параметрлерді ауыстыру әдістері.

 

Түрлі айнымалылардың, тұрақтылар мен операция символдарының қандай да болмасын бір жинақ түрінде жазылуы өрнек деп аталады. Си тілінде өрнек соңына нүктелі үтір (;) символы қойылып жазылады. Осы түрде жазылған өрнек не функция оператор делінеді. Мысалы, операторлар:

z = (3 * x+y + 5); y = sin (x);

Сипаттаманың соңына да нүктелі үтір қойылып жазылады, сондықтан ол да оператор. Мысалы: float y, z; сипаттамасы — оператор. Бір символдық оператор мәні бір не бірнеше қатарларда жазылуы мүмкін, тек онда пайдаланатын символдар саны байтпен көрсетілген аралықтан аспаса болғаны.

Функция да C және C++ тілдерінде түрлі ұғымды білдіреді. Мысалы:

1) блок басында сипатталатын айнымалы;

2) программа ішінде орындалатын блок;

3) арнайы ат беріліп, кітапханада мәнін есептейтін ішкі программа бойынша жазылып сақталған функция, (мысалы, sin (), sqrt (),т.б.).

Мысалдар:

int radius (x);  тип, функция аты және аргумент
{ Операторлар }    құрама оператор – функция
float x, y; тип, айнымалылар аттары. Сипаттамаға сәйкес x, y айнымалыларының мәндері үшін алты мәндік ондық цифрлар алынады.  
y=sin (6.5)+3; оператор; sin() функциясының мәні үшін арнайы стандартты кітапхана шақырылып, мәні автоматты түрде есептеледі.

 

(Си тілінде тригонометриялық функциялардың мәндері радиан арқылы өлшенеді).

Мұндағы ескеретін жайт: соңғы өрнек — оператор. Оның соңына қойылған қойылатын нүктені үтір алып тасталған кезде қалған бөлігі (y = sin 6.5 + 3) — функция, ал sin () — осы функция ішіндегі стандартты фун кц ия. sin (6.5) — өрнегі функц ия ны шақыру деп аталады.

 

Блоктық функциялармен жұмыс

Программа құруда алдыңғы тақырыптарда тек негізгі баскарушы main() функциясы пайдаланылып келді. C және C++ тілдерінде программаға main() функциясынан басқа функциялардың (блоктардың) енгізілуі де мүмкін. Олар, Турбо Паскаль тіліндегі сияқты, ішкі программалар ретінде орындалады. Мұндағы ескеретін жайт: олардың әркайсысының соңына баскарушы функцияға қайту командасын орындайтын return; операторын жазып қою керек.

Turbo C, Turbo C++ тілдерінде мұндай функциялардың мәтіні main() функциясының алдында енгізіледі, Borland C++ тілінде оларды main() функциясынан соң блок түрінде енгізе беру мүмкін.

Мысал. Turbo C++ тілінде программаның басқарушы функция блогында Мен студентпін сөйлемі енгізіліп, экранға шығарылсын, Программаға екі қосымша блоктық функция да енгізілсін. Олардың біріншісі Ура! сөзін, екіншісі y = 2( x +7) функциясының мәнін есептеп шығаратын болсын (x, y - int типті айнымалылар).

# include <stdio.h>

# include <conio.h>

# include <string.h>                                        (1)

void blokl(void)

puts("Уpa! ");

return;                          /* негізгі программаға қайту */

void blok2(void)

int x, y;

printf("x=?"); scanf("%d\n", &x);

y = 2*(x+7);

printf("y=%d", y);

return;                          /* негізгі программаға қайту */

}

main ()

{

char sl[25]; clrscr();

puts("cөйлем: s1-?"); gets(sl);

printf("s1=%s\n", s1);

blokl();                         /* blok l-ді шақыру */

blok2();                        /* blок 2-ні шакыру */

getch(); return 0;

} // Нәтиже: sl-?

Мен студентпін

Ура!

x=? 5 y=24

Блоктар соңына енгізілген return ; операторы басқаруды main () функциясына қайтарады да, функцияны шақыру операторының орнына осы функция орындап шығатын нәтижелік мән жазылады. Программада шақырылған функциялар тақырыптары void blok ( void ) сияқты түрде жазылған. Мұндағы void аргументі шақыру функциясында жіберілетін аргументтер жоқ екенін білдіреді, функция алдына енгізілген void типі шақырылған блокта есептелетін мәндердің алдын ала типі көрсетілмегенін білдіреді. Бұл кезде қажетті тип блок ішінде жергілікті айнымалы түрінде сипатталады (жергілікті айнымалылар блоктан шығу кезінде жойылып кетеді. Яғни, мұндай блокты пайдалану жолы Турбо Паскальдағы параметрсіз процедураны пайдалану тәсілі сияқты).

Ескерту. (1)-программаны мынадай құрылымдық түрде жазуға да болады:

{ Препроцессор нұскаулары }

blokl();

blok2();

main() (252)

{ функция денесі; }

blokl()

{ блок денесі; return; }

blok2()

{ блок денесі; return; }

Ескерту. Құрылымға енгізілген денелердің орнына (1) — программада жазылған денелерді кірістіру керек.

 

 


15-лекция. Стандартты функциялар және процедуралар.

Жоспар:

1. Алгоритмдерді орындауды және программада қателерді өңдеуді басқару

құралдары – үзілулер және оларға әсері ретінде.

Кітапханалық функцияларды пайдалану программалаушының жұмыс өнімділігін арттырып, программа көлемі мен оны дайындау уақытын көп қысқартады. Мысалы, sin() функциясының мәнін есептеу программасы препроцессордың math.h файлына енгізіліп қойылған.

Препроцессор — алдын ала баска программалардан енгізілген деректерді өндейтін программа. Препроцессор нұсқаулары тақырыптық н ұ сқаулар деп аталады. Олардың әр қайсысы жаңа жолдан бастап жазылуы тиіс.

stdio . h файлының құрамында бір әрекетті орындауға арналған көптеген стандартты функциялар бар:

printf (), scanf (), gets Q, puts (), getch(), gotoXY,

- барлығы 38 функция. Олар - программада пайдаланылатын осындай функциялардың түп нұсқасы .

Мұндай файлдардың құрамындағы түп нұсқалық функциялардың тізімін (1.2-кесте) экран ғ а шығару үшін Турбо C++ - те құрылған программаның басында жазылған препроцессор файлы атауын тышканның оң түймесімен шерту жеткілікті.

main() бас функция атауы (main - негізгі). Оны функция тақырыбы деп те атайды. Кез келген программа осы функцияны ша қ ырудан (жазудан) басталады.

{ - ашу, } - жабу фигуралық жақшалары. Олар функция денесінің (блоктың) басы мен соңын білдіретін символдар. Символдар Турбо Паскальдағы программа  мен құрама оператор үшін пайдаланатын begin - end операторлары сияқты. Әдетте, олар жаңа жолдан бастап жазылады және фигуралық { жақшасының алдында бос орын қалдырылмайды. main () функциясының құрылымы:

main ()                          /* функция тақырыбы */

{                                   /* функция денесінің басы */

Функция денесі

}                                   /* функция денесінің соңы */

Бұл функция бір әрекетті орындайтын программаның жеке бірлігі (құрылымдық блогы). Блок ішінде математикалық функциялар сияқты бірнеше жеке функциялардың болуы да мүмкін. Олардың әрқайсысы меншіктеу операторының құрамында жазылады.

Программада бірнеше блоктың болуы да ықтимал. Си, C++ тілдерінде оларды жеке функциялар деп атайды. Жергілікті айнымалылар блок басында сипатталады (олар блок ішіндегі сәйкес айнымалылардың - түп нұсқалары).


Дата добавления: 2019-02-12; просмотров: 210; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!