Зертханалық жұмыс


Кафедра меңгерушісі ___________ А.Ж.Асаинова



жүктеу 0,89 Mb.
бет2/3
Дата25.12.2017
өлшемі0,89 Mb.
#5907
1   2   3

Кафедра меңгерушісі ___________ А.Ж.Асаинова

Факультеттің әдістемелік кеңесінде құпталды,


200__ж. «___»____________ Хаттама №_____.

ӘК төрайымы ____________ Ж.Г.Муканова


Зертханалық жұмыстардың мақсаты:
1. Студенттерге бағдарламалау тілінің негізгі құрылымдарын үйрету, командалар мен операторлардың қызметі мен пайдалану ережелерімен таныстыру.

2. Студенттердің алгоритмдік ойлау дағдыларын қалыптастыру.

3. Өз бетімен оқып-үйренуге, талдауға, бағдарлама бойынша нәтижені анықтауға үйрету.

4. Есепке алгоритмдер мен бағдарламалар құру, олардың тиімділерін таңдау және нәтижелерге талдау жасау әдістерін меңгерту.



4 тақырып Алгоритмдердің сызықтык құрылымын программалау.

1 зертханалық жұмыс Меншіктеу операторы. Басқару операторлары. Мәліметтерді енгізу - шығаруды үйымдастыру.

Шығару, енгізу процедуралары

Мақсаты: Экранға әр түрлі хабарлама, нәтиже шығаруды және мәндерді енгізуді үйрену.

Теориялық бөлім

WRITE – айнымалының мәнiн, өрнектiң мәнiн, текстi экранға шығарады.

Жазылу форматы: write(ln) (<параметр>);

Жазылу түрлерi:



writeln (өрнек); – өрнектiң мәнiн экранға шығарады. writeln (sqr(25));

writeln(x); – x айнымалының мәнi шығады.

writeln (‘текст’) – апострофтың iшiндегi текст шығады.

writeln ( өрнек, ’текст’, айнымалылар);

writeln; – бос жол шығарады.

read(ln) – сандық мәндердi, символдарды, жолдарды клавиатурадан енгiзедi.

Жазылу форматы: read(ln)(айнымалылар тiзiмi);

Жазылу түрлерi:



readln(x) – x-тiң мәнi енгiзiледi.

readln(a,b) – a,b мәндерi бос орынмен ажыратылып енгiзiледi.

readln- енгізу клавишасы басылғанын күтеді.

Read процедурасы орындалғанда, айнымалының мәнiн енгiзу үшiн бағдарлама жұмысында кiдiрiс болады. Айнымалының мәнiн оқушы клавиатурадан енгiзедi. Егер read процедурасында айнымалылар тiзiмi көрсетiлсе, онда тiзiмдегi айнымалылардың мәндерi клавиатурадан бос орынмен ажыратылып енгiзiледi. Әрбiр read процедурасынан соң Enter клавишасы басылады.
1 жаттығу. Қадыр Мырзалиевтің «Ана тілі» тақпағының бір шумағын экранға шығару.

1. Бағдарлама тексін теріңіз

program text;

uses crt;

begin


clrscr;

Writeln; Writeln(‘Ана тілі’); Writeln;

Writeln(‘Ана тілің арың бұл,’);

Writeln(‘Ұятың боп тұр бетте.);

Writeln(‘Өзге тілдің бәрін біл,’);

Writeln(‘Өз тіліңді құрметте’); Writeln;

Writeln(‘Қ.Мырзалиев‘); Writeln;

readln;


end.

Бағдарламаны орындап, нәтижесін көріңіз. Экранда орналасуына назар аударыңыз



2. Мына жолдарға өзгерістер енгізіңіздер

Writeln (‘Ана тілі’:20);

Writeln (‘К. Мырзалиев’:30);

Бағдарламаны орындап, нәтижесін көріңіз. Қандай айырмашылық бар? 20 және 30 цифрларын өзгертіңіз. Нәтижесіне түсініктеме беріңіз.



2 жаттығу. Жаңа терезеде мына жолдарды теріңіз

uses crt;

var x,y,a,b: byte;

begin


clrscr; {1}

readln(x); {2}

y:=10; {3}

writeln(x); {4}

writeln(x+y); {5}

readln;


end.

Орындап нәтижені қараңыз да, дәптерге жазып алыңыз



3. Мына {4} және {5} жолдарды өзгертіңіз:

Writeln (‘х=’, х);

Writeln (‘у+х=’, х+у);

Орындап нәтижені қараңыз. Қандай өзгеріс бар? Қорытынды жасаңыз.



4. Мына өзгерістерді енгізіңіз. {3} жолдан соң мына жолды теріңіз:

а:= х*у; {3а}

{4}, {5}жолдарды өзгертіңіз: writeln (x,’*’, y, ‘=’ , a); {4}

Writeln (‘x=’, x:10, ‘y=’;10, ‘a=’,:10, a:10); {5}

Орындап нәтижені қараңыз. Қандай өзгеріс бар? Қорытынды жасаңыз. {5}жолдағы : белгісі қандай қызмет атқарады?
3 жаттығу. Жаңа терезеде жазыңыз:

uses crt;

var x,y,a,b:real; s:string;

begin


clrscr; {1}

x:=100; y:=3; {2}

а:=х/у;

writeln (‘a=’;a); {3}



writeln (‘a=’:10);

writeln (‘a=’:10:5); {4}

writeln(‘a=’:10:2);

writeln(‘a=’:10:0);

writeln(‘a=’:0:5); {5}

writeln(‘a=’:0:2); {6}

writeln(‘a=’:0:0);

readln;


end.

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



4 жаттығу. Жаңа терезеде жазыңыз:

uses crt;

var x,y,a,b:real; s:string;

begin


clrscr; {1}

readln(x,y); а:=х/у; {2}

writeln (‘x=’;x); {3}

writeln (‘y=’,y);

writeln (‘a=’,a); {4}

readln; end.

Бағдарламаны орындаңыз. Экранға курсор шығады. Бос орынмен ажыратып екі сан енгізіңіз. Экранға шыққан х пен у-тің мәндері енгізілген сандарға ие болды ма?

Бағдарламаны бірнеше рет орындап, нәтижесін жазып алыңыз.



Сұрақ: Readln қандай қызмет атқарады? Ол орындалғанда экран қандай түрде болады? Курсордың орналасуы қалай?

5 жаттығу. Диалогтық программа құру

uses crt;

var s, a, b:string; x,y,z:byte;

begin


clrscr; {1}

Writeln(‘Сәлем!’);

Write(‘Атың кім?’); Readln(s); Writeln;

Write(‘Екі сан енгіз ’); readln(x,y);

Write(‘Бір сан енгіз ’); readln(z); Writeln;

Writeln(‘Үш санның қосындысы = ’, x+y+z); Writeln;

Writeln(‘Сау бол! ’,s); Writeln;

readln; end.



Cұрақ: Write және Writeln айырмашылығы неде?
Өрнектерді бағдарламалау тілінде жазып есептеңіз.

1. p = Жауабы: 402.1339

2. k=- Жауабы: 62.10672

3. c= Жауабы: 3472.599

4. d= Жауабы: 0.0406535
Пайдаланылатын әдебиет: [4], 5-24 беттер;

2 зертханалық жұмыс. Шартты оператор. Логикалық өрнекті қолдану. Таңдау операторы. Шартты және таңдау операторларының қысқа және толық формалары.


Теориялық бөлім
Белгiлi бiр шартты тексеру нәтижесiне байланысты екi түрлi iс-әрекеттiң бiреуi ғана орындалатын жағдайда шарттық оператор қолданылады. Шарттық оператордың жазылу форматы:

Толық түрi: If <шарт> then <1 оператор >

еlse <2 оператор >;

Шарттық оператор былай орындалады: Ең алдымен шарттағы логикалық өрнектiң нәтижесi анықталады. Егер нәтиже ақиқат болса <оператор1> орындалады, ал нәтиже жалған болса <оператор2> орындалады.

Қысқаша түрi: Шарттық операторда шарт орындалмаған жағдайда еш нәрсе орындау қажет болмаса, else тармағын жазбауға болады:

If <шарт> then <оператор>;
Тармақты алгоритмдердің орындалу реті блок-схемада анық көрінеді. Блок-схема дегенiмiз алгоритмдi геометриялық фигуралар арқылы бейнелеу.

Мысал: экранға екi санның үлкенiн шығару керек.

Есептi шығару алгоритмiн блок-схемамен көрнекi түрде көрсетуге болады.



program esep_1;

var x, y, z: real; х,у-берiлген айнымалылар, z-нәтиже

begin


writeln (‘2 сан енгiз’);

readln (x, y); бос орынмен 2 сан енгiземiз

if x>y then z:=x егер x >y болса, онда нәтиже х болады

еlse z:=у; әйтпесе нәтиже y болады 

writeln (z); readln;

end.

Бағдарламаның орындалу барысында 5 және 7 сандарын енгiземiз. Айнымалы х-ке 5, у-ке 7 меншiктеледi (х:=5,y:=7). 5>7 шарты орындалмайды, нәтижесi жалған, сондықтан else –ден кейiнгi оператор орындалады, ол оператор нәтижеге у-тi меншіктейді. Одан соң z-тің мәнi экранға шығарылады. Экранға 7 жазылады.
Мысал: Енгiзiлген санның [-5;5] аралығында жататындығын анықтау.

Енгiзетiн санды х деп белгiлеймiз, типi – real. Егер х саны үшiн х>-5 және х<5 шарттары бiр уақытта орындалатын болса, онда х саны [-5;5] аралығына тиiстi болады

program aralyk;

var x: integer;

begin


writeln (‘х санын енгiз’); readln (x);

if (x>-5) and (x<5)

then writeln (‘аралықта жатады’)

еlse writeln (‘аралықта жатпайды’);

readln;

end.


Тапсырма: Енгізілген сан терiс болса, оның таңбасын қарама-қарсыға ауыстыр. Есептi шешу үшiн мына шарттық операторды қолдан. If x<0 then x:=-x;
Пайдаланылатын әдебиет: [2], 14-25 беттер; [1], 91-98 беттер;
Қабаттасқан шарттық оператор. Кейбiр есептердi шешу кезiнде, бiрнеше варианттарды қарастыруға тура келедi. Бұл жағдайда, бiрнеше шарттық операторлар қолданылады, яғни then, else қызметшi сөздерiнен кейiн, жаңа шарттық оператор жазылады.

Мысал: Бүтiн а, b,с сандары берiлген. Егер аbс болса, барлық сандарды өз квадратымен ауыстыр, егер а>b>с болса, әрбiр санды үшеуiнiң iшiндегi ең үлкенiмен, басқа жағдайда, әрбiр санның таңбасын өзгерт.

Есептiң берiлгенi бойынша: егер а b с болса, онда a:=a2, b:=b2, c:=c2;

егер а> b >с, онда с:=а, b:=а;

басқа жағдайда, a:=-а, b:=-b, c:=-с;

program esep_3;

var

a , b , c : integer ;



begin

writeln (‘a, b ,с сандарын енгiз’); readln (a , b , c );

if (a<=b) and (b<=c) then

begin


a:=sqr(a); b:=sqr(b); c:=sqr(c);

end


else

if (a>b) and (b>c) then

begin c:=a; b:=a; end

else begin a:=-a; b:=-b; c:=-c; end ;

writeln (a:5,b:5,c:5); readln;

end.


Есептi шешудiң блок-схемасы төмендегiдей болады.





Тапсырма: Жоғарыдағы мысалдағы шарттық операторды былай өзгертсек:

if (a<=b) and (b<=c) then

begin


a:=sqr(a); b:=sqr(b); c:=sqr(c);

if (a>b) and (b>c) then

begin a:=c; b:=c; end;

else begin a:=-a; b:=-b; c:=-c; end ;

end.

бағдарламаның орындалуы қалай өзгередi? Есептiң берiлгенi қалай болады. Блок-схемасын сыз.



3-4 зертханалық жұмыс. Параметрлі цикл операторы. Көпмүшені есептеудегі арифметикалық алгоритмдер. Шарты алдын ала берілген және шарты соңынан берілген цикл операторлары. Кірістірілген циклдер.
Теориялық бөлім
Параметрлi қайталану. Қайталанатын әрекеттердiң саны алдын-ала белгiлi болғанда For операторы пайдаланылады. Бұл оператор параметрлi қайталану деп аталады, себебi, қайталану саны параметр немесе басқарушы айнымалы деп аталатын айнымалының мәнiне байланысты болады. Бұл айнымалыда қайталану саны көрсетiледi. Қайталанатын әрекеттер цикл денесi деп аталады.

Жазылу форматы:

For <циклдiң параметрi>:= <s1> to <s2> do

<оператор>; { өсу ретімен }
For <циклдiң параметрi> := < s2> downto < s1> do <оператор>; { кему ретімен}

Мұндағы: s1, s2 - параметрдiң бастапқы және соңғы мәндерi;

For … do - циклдiң тақырыбы;

<оператор> –цикл денесi.

Цикл денесi жай немесе құрама оператор болуы мүмкiн.



For операторы мынаны анықтайды:

  • параметрдiң өзгеру аралығын және цикл денесiнiң қайталану санын;

  • параметр мәнiнiң өзгеруiн ( to-өсу, downto-кему);

FOR операторы параметр барлық мәндерiне ие болып бiткенше, цикл денесiнiң орындалуын қайталауды тоқтатпайды.

Егер s2>s1 болса, цикл денесi (s2-s1+1) рет орындалады.

Егер s1>s2 болса, цикл денесi орындалмайды.
Алғы шартты цикл. Егер iс-әрекеттiң қайталану саны белгiсiз, бiрақ қайталану шарты белгiлi болса, онда while немесе repeat операторлары қолданылады.

While (әзiр) операторында қайталану шарты цикл денесiнен бұрын тексерiледi. Сондықтан while операторы алғы шартты цикл деп аталады.

Жазылу форматы:



While <қайталану шарты> do

<цикл денесi>

Қайталану шарты – бульдiк (логикалық) өрнек, цикл денесi - жай немесе құрама оператор. Цикл денесi орындалудан бұрын шарттағы өрнектiң мәнi анықталады. Егер ол мән true болса, цикл денесi орындалады. Шарттық өрнектiң мәнi тағы да анықталады, егер нәтижесi false болса циклдың жұмысы аяқталып, while-ден кейiнгi бiрiншi оператор орындалады.


Кейiнгi шартты цикл. Циклдің бұл түрінде:

  • қайталану шарты цикл денесiнен кейiн тексерiледi, сондықтан кейiнгi шартты цикл деп аталады.

  • қайталанатын iс-әрекеттер кем дегенде 1 рет орындалады.

  • шарттың нәтижесi true болғанда циклдiң орындалуы тоқтайды.

Жазылу форматы: repeat

<оператор;>

: {цикл денесi}

< оператор;>

until <циклді аяқтау шарты>;

Repeat және until сөздерiнiң арасындағы операторлар цикл денесi болады.

Кейiнгi шартты циклдiң орындалу тәртiбi: алдымен цикл денесi орындалады, одан соң циклден шығу шарты тексерiледi. Егер нәтиже false болса, цикл денесi тағы да орындалады, егер true болса, циклден шығады.

1-мысал: 999 саны енгiзілгенше бүтiн сандарды енгізе отырып, олардың қосындысын табу.

x: integer; sum: real;



begin

sum:=0;


repeat

write (‘х-тi енгiз’); readln(x);

if x<> 999

then sum:=sum+x;

until x=999;

writeln (‘сандардың қосындысы=’,sum); readln;

end.

Айнымалыларға түсiнiктеме:

х-енгiзiлетiн бүтiн сандар; sum-олардың қосындысы (real);



Бағдарламаның басында қосынды 0-ге теңестiрiледi. Одан соң repeat сөзiмен цикл ашылады. Цикл денесiнде “х-тi енгiз” сұрауымен х айнымалының мәнi енгiзiледi. If операторы ол санның 999-ге тең емес екендiгiн тексередi. Егер тең болмаса, Sum қосындысының мәнiне х саны қосылады. Циклдiң соңындағы until х=999 циклдiң аяқталу шартын тексередi. Егер х=999 болса, цикл аяқталады, until-ден кейiнгi оператор орындалады. Ол оператор

writeln (‘сандардың қосындысы=’,Sum); нәтиженi шығарады.

3-мысал: сан қатарының қосындысын табу.

Шешуi: Берiлген есепте параметрi 1-ден 20-ға дейiн 1 қадаммен өзгеретiн (бөлшектің алымы) цикл құрған дұрыс. Бөлімінде алымы мен оған келесі санның көбейтіндісі жазылады. Егер алымын і деп белгілесек, бөлімі і ∙ (і+1) түрінде болады.

program kosyndy;

var i:byte; s : real;

begin

s:=0;


for i:=1 to 20 do

s:=s+i/(i*(i+1)); { цикл денесi }

write (‘қосынды =’,s); writeln(y); readln;

end.
4-мысал: 10-нан 99-ға дейiнгi сандардың арасынан цифрларының қосындысы n-ге тең сандарды табу. (0

Шешуi: Мынадай айнымалыларды белгiлеймiз.

n- берiлген сан; p1- санның ондық разрядты цифрасы;

p2- санның бiрлiк разрядты цифрасы;

s- берiлген санның цифрларының қосындысы;

k -iзделiндi сан.
Program san_kosyndy;

var k,n,p1,p2,s : integer;

begin

writeln (‘бүтiн сан енгiз’); readln (n);  бүтiн санды енгiземiз 



for k:=10 to 99 do  10-нан 99-ға дейiнгi сандарды қарастырамыз

begin  цикл денесiнiң басы 

p1:=k div 10;

p2:=k mod 10;  бiрiншi, екiншi цифраны табамыз

s:=p1+p2;

if s=n then writeln (k);  егер қосынды n-ге тең болса,

end; берiлген k санын шығарамыз 

readln;


end.
Сұрақтар

1. Цикл дегенiмiз не?

2. Циклдi қолдануға мысалдар келтiр.

3. Параметрлi қайталану қай кезде қолданылады?

4. Параметр деген не?

5. Параметрлi қайталанудың жазылу форматы.

6. For операторының орындалуын түсiндiр.

7. Цикл денесi деген не?



ЗЖ 5-6-7. Ішкі программаларды ұйымдастыру. Ішкі программаларда параметрлерді тасымалдау Рекурсивті ішкі программаларды ұйымдастыру.
Процедуралар
Процедураныњ сипаттамасы процедураныњ таќырыбынан жєне денесінен т±рады.

Процедураныњ таќырыбы procedure деген резервтелген сµзден, процедураныњ атын білдіретін идентификатордан жєне жаќшаѓа алынып, типтері кµрсетілген формальді параметрлер тізімінен т±рады. Процедура денесі бағдарламалыќ блоктан т±рады.



Процедураныњ жалпы т‰рі:

procedure <аты>[(формалдыќ параметрлер тізімі)];

сипаттама бµлімі

begin


операторлар бµлімі

end;
Процедура µздігінен орындалмайды. Ол аты бойынша негізгі бағдарламадан шаќырылады. Шаќыру жолында оныњ фактілік (наќты) параметрлері кµрсетіледі.

Фактілік жєне формальдыќ параметрлердіњ арасында мынадай сєйкестік болу керек:

● саны бірдей;

● типтері бірдей;

● жазылу реті бірдей;

Формальдыќ параметрлердіњ мынандай т‰рлері болады:

- параметр – мєндер;

- параметр – айнымалылар;

Параметр – мєндер. Параметр – мєндер негізгі бағдарламадан ішкі бағдарламаѓа мєндерді беру ‰шін ѓана ќолданылады, процедура нєтижесі негізгі бағдарламаѓа ќайтарылмайды. Параметр – мєндер фактілік мєндерге ешќандай ыќпал жасамайды.
1-мысал: тµрт санды екі-екіден ж±птап, квадраттарыныњ ќосындысын табу.

Б±л мысалда параметр – мєндер ќолданылады. Берілген сандар 2,5 пен 3,1; -7,2 жєне 5,3 болсын.

program mander;

var k, z, x, y: real;

procеdure sum_kv(a, b:real); {а, b формальдық параметрлер}

begin {процедура денесі}

a:=a*a; b:=b*b;

writeln(’квадраттар ќосындысы=’, a+b);

end;

begin {негізгі бағдарлама денесі}



х:=2.5; у:=3.1;

sum_kv (x,y);

z: = -7.2; k:=5.3;

sum_kv (z,k);

readln;

end.
Бағдарламаѓа тсініктеме



X, y, z, k - негізгі бағдарламадаѓы фактілік параметрлер. Олар негізгі бағдарламада сипатталады.

Sum_Kv процедурасында екі санныњ квадраттыныњ ќосындысы экранѓа шыѓарылады; а мен b - процедурадаѓы формальді параметрлер.

Процедура х, у параметрлерімен шаќырылѓанда а=2.5 жєне b=3.1 мєндеріне ие болады да, олардыњ квадраттарыныњ ќосындысы есептеледі.

Экранѓа мынандай хабарлама шыѓады:



2.5 жєне 3.1 квадраттарыныњ ќосындысы

Бағдарлама ж±мысы процедурадан шыѓып, негізгі бағдарламаныњ орындалуы жалѓасады. z пен k-ныњ мєндері меншіктеледі. Процедура енді z, k параметрлерімен шаќырылады.

А=-7.2, b=5.3 мєндеріне ие болады. Енді осы екі санныњ квадраттарыныњ ќосындысы есептеледі.

Экранѓа мынандай хабарлама шыѓады :



-7.2 жєне 5.3 квадраттарыныњ ќосындысы

процедура ж±мысы аяќталып, негізгі бағдарламаѓа оралады, негізгі бағдарлама ж±мысын аяќтайды.


Бағдарламаныњ орындалу тєртібі

1. Негізгі бағдарламадаѓы айнымалылар сипатталады.

2. X, Y параметірлерімен Sum_Kv процедурасы шаќырылып, процедура орындалады, болѓан соњ негізгі бағдарлама жалѓасады.

3. Z, K параметрлерімен Sum_Kv процедурасы шаќырылып, процедура орындалады, болѓан соң негізгі бағдарламаѓа оралады.

4. Негізгі бағдарлама ж±мысын аяќтайды.
Параметр–айнымалы. Параметр – айнымалылар процедураныњ нєтижесін негізгі бағдарламаѓа єкелу (ќайтару) ‰шін ќолданылады.

Параметр–айнымалылар негізгі бағдарламадаѓы фактілік параметрлерге ыќпал етіп, оларды µзгерте алады.


2-мысал. Санныњ дєрежесін табуды процедура етіп алып, у=a4*x4+a3*x3+a2*x2 мєнін есептеу бағдарламасын ќ±ру. М±ндаѓы, а4, а3, а2,х – клавиатурадан енгізіледі.
program kosindi;

var x, a4, a3, a2, y, s,:real

procedure dareje (a: real; n: byte; var d: real);

var i:byte;

begin {процедура денесі}

d:=1;


for i:=1 to n do

d:= d * a

end;

begin {негізгі бағдарламаның денесі}



readln(x, a4, a3, a2);

dareje(x,4,s); y:=s*a4;

dareje(x,3,s); y:= y +s*a3; dareje(x,2,s); y:=y+s*a2;

writeln (‘y=’, y); readln;

end.

Бағдарламадағы процедураѓа сипаттама. Процедура Dareje деп аталады. Онда а саныныњ n дєрежесі есептеліп, нєтижесі d-ѓа меншіктеледі. A,n,d- формальдыќ параметрлер. Дєреженіњ нєтижесі d негізгі бағдарламаѓа ќайтарылатындыќтан var d:real сипаттамасы жазылады. і-формальдыќ параметр емес, сондыќтан ол процедураныњ сипаттама бµлімінде жазылѓан.

Процедура денесінде а саныныњ n рет кµбейтіндісі есептеледі, а мен n-ніњ мєндері негізгі бағдарламадан беріледі.



Негізгі бағдарламаѓа сипаттама. Негізгі бағдарламада ќолданылатын фактілік параметрлер: х, а4, а3, а2, у, s; у-нєтиже, ал s-санныњ дєрежесініњ нєтижесі.

х, а4, а3, а2-мєндері клавиатурадан енгізіледі.

х4, s-параметрлерімен dаreje процедурасы шаќырылады.

Процедурадаѓы a=x, n=4 мєндеріне ие болып, х-тіњ 4 дєрежесі есептеледі. Нєтижесі S параметрімен негізгі бағдарламаѓа ќайтарылады, яѓни s:=d болады.

Негізгі бағдарламада y:=s*a4 мєні есептеледі.

x,3,s параметрлерімен процедура таѓы да шаќырылады, яѓни a=x, n=3 мєндерінде х-тіњ 3 дєрежесі есептеледі. Нєтижесі, яѓни d–ныњ мєні s-ке меншіктеледі, s жања мєнге ие болады да, негізгі бағдарламада y:=y+s*a3 есептеледі. х, 2, s параметрлерімен процедура шаќырылып, іс-єрекет қайталанады.



Функциялар.

Теориялық бөлім
Паскаль тілінде пайдаланушы стандарттыќ функциялардан басќа, µз функциясын аныќтай алады. Ондай функциялардыњ сипаттамасы функцияныњ таќырыбынан жєне функция денесінен т±рады.

Функцияныњ жазылуыныњ жалпы т‰рі:

Function аты(формальді параметрлер тізімі): нєтиженіњ типі;

сипаттама бµлімі

begin

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



end;

Функция негізгі бағдарламадан аты бойынша шаќырылады. Функцияѓа берілетін мєндер, ондаѓы формальдыќ параметрге сєйкес болу керек. Функцияныњ таќырыбында функцияныњ аты жєне типтері кµрсетілген формальды параметрлер тізімі жазылады. Тізім жаќшаѓа алынады. Жаќшаныњ сыртында функция нєтижесініњ типі жазылады.

Функция денесінде кем дегенде бір меншіктеу операторы функцияныњ атына мєн меншіктейтін болу керек!
3-мысал. Санның дәрежесін табуды функция етіп алып, z=(a5+a-3) / (2· am) – өрнегінің мәнін есептеу.

program z_funk;

var m: integer; a, z, r: real;

function dareje (n: integer; x : real): real;

var i: integer; y: real;

begin


y:=1;

for i:= 1 to n do

y:= y*x; dareje:= y;

end;


begin

readln (a, m);

z:= dareje (5,a);

z:= z+ dareje(3,1/a);

if m=0 then r:=1

else if m>0 then r:= dareje (m,a)

else r:=dareje (m,1/a);

z:= z/(2*r);

writeln ('a=',a, 'm=':10, m, 'z=':10, z);

readln; end.


Бағдарламадағы функцияға сипаттама. Функцияның аты dareje деп аталады. Бұл функция хn дәрежесін есептейді. N мен х- функцияның формальды параметрлері: n- дәреже көрсеткіші, типі integer; ал x n дәрежеге шығарылатын сан, типі real. Негізгі пограммаға қайтарылатын функцияның нәтижесі де нақты типті.

Функцияда формальды параметрлерден басқа, і және у айнымалылары сипатталған. i-қайталану санын білдіреді.

Y айнымалысы санды өз-өзіне і рет көбейтудің нәтижесін сақтайды. N-дәреже есептеліп болған соң, dareje функциясына y-тің мәні меншіктеледі.
Негізгі бағдарламаға сипаттама. Негізгі бағдарламада m,a,z,r айнымалылары сипатталады. m - дәреже көрсеткіші; a - берілген сан;

r - аn дәрежесінің нәтижесі; z - нәтиже.

Бағдарлама орындалғанда а және m мәндері клавиатурадан енгізіледі. z:=dareje(5,a) жолында 5 және а фактілік параметрлерімен dareje функциясы шақырылады.

Функциядаѓы n жєне x параметрлері сєйкес мєндерге ие болады, яѓни n:=5, x:=a. a5 есептеліп, нєтижесі dareje айнымалысына меншіктеледі. Негізгі бағдарламаѓа оралѓан соњ, функцияныњ мєні z айнымалысына меншіктеледі.

Z:=z+dareje(3,1/а) жолы орындалѓанда функцияныњ формальды параметрлері мына мєндерге ие болады. n:=3, x:=1/a; себебі, (a-n)=(1/an).

Функцияныњ орындалуы алдыңѓыдай. Негізгі бағдарлама орындалѓан соњ, z мєніне dareje мєні ќосылады. Шарттыќ операторда n-ніњ мєні тексеріледі. Соныњ нєтижесіне байланысты r-ді аныќтайды. Атап айтќанда, егер m=0 болса, онда r:=1;

егер m>0 болса, онда r:=am;

егер m<0 болса, онда r:=(1/am);

m,a параметрлерімен dareje функциясы шаќырылады, нєтижесі r-ге меншіктеледі. z:=z/(2*r) жолында z/(2*r) нєтижесі z-ке меншіктеледі.

Нєтиже экранѓа шыѓарылады.


Функциясы бар бағдарламаныњ орындалу тєртібі

1.Негізгі бағдарламадан фактілік параметрмен функция шаќырылады.

2.Функциядаѓы формальді параметрлер фактілік мєндерге ие болады.

3.Функцияныњ нєтижесі аныќталады, функцияныњ атына мєн меншіктеледі.

4.Негізгі бағдарламада функцияныњ мєні пайдаланылады.
Пайдаланылатын әдебиет: [2], 57-64 беттер; [1], 130-157 беттер;
8-9 зертханалық жұмыс. Бір өлшемді массивті өңдеу.

Екі өлшемді массивті өңдеу.

Массив дегенiмiз - бiрдей типтегi элементтердiң жиыны. Массив екі түрге бөлінеді:

- бір өлшемді (вектор)- бір ғана жолдан немесе бағанадан төрады; А[45 12 -98  100]

- екі өлшемді (матрица)- жолдар мен бағаналардан төрады;



Массив элементтерi массивтегi орналасу ретi бойынша нөмiрленедi, сондықтан массив реттелген тип деп аталады. Массив элементiнiң реттiк номерi индекс деп аталады. Индекстер тек скаляр типте болады. Индекстiң типi массив мәндерiнiң шегiн анықтайды.



Бір өлшемді массивтер. Сипатталу форматы:

<атау,…> : array индекс типi of компонент типi;

Пайдалану мысалы: А: array1..4 of integer – бүтiн типтегi 50 элементтен төратын А массивінiң сипатталуы. Мөндағы, А- массивтің атын білдіретін атау; 1..4 - элементтердің бастапқы және соңғы индекстері;

Массивтiң кез келген элементi массив атымен (атау) және индексiмен анықталады. Аi – А массивiнiң i-шi элементi. А1=45; А3=-98; Klas[16] – Klas массивiнiң 16-шы элементiнің белгіленуі.

Егер тип типтердi сипаттау бөлiмiнде алдын-ала көрсетiлсе, онда былай пайдаланылады:

type

<тип аты> = array индекс типi of компонент типi;

var


<атау,…>: <тип аты>;

Пайдалану мысалы: type m1 = array 1..35 of real;

var х,у: m1;

Бұл мысалда нақты 35 саннан тұратын m1 типі сипатталған. Ал х және у айнымалылары реттелген m1 типтi, сондықтан олардың әрбiреуi нақты 35 саннан тұрады.

Массив сипаттамасында оның элементтер санын төрақты шамамен сипаттау ыңғайлы. Себебi, егер массив элементтерiнiң саны өзгеретiн болса, онда ол Бағдарлама тексiнiң бәрiнде емес, тек төрақтыны сипаттау бөлiмiнде ғана өзгертiледi.

Пайдалану мысалы: const n=20;

var m: array[1…n] of real;

Массивтiң әрбiр элементi индекстелген, олар индекстелген айнымалылар деп аталады. Индекстелген айнымалылар да жай айнымалылар сияқты пайдаланылады.

D3, Nom17 жазулары D массивiнiң 3-элементiн, Nom массивiнiң 17-элементiн бiлдiредi. Егер массивтi сипаттауда бiр индекс болса, ол бiр өлшемдi (сызықтық таблица; вектор) деп аталады; екi индекс болса, екi өлшемдi (тiк төртбұрышты таблица; матрица) деп аталады. Klas:array 1.. 20,1.. 20 of integer; - Klas 20 жолдан және 20 бағанадан тұратын екi өлшемдi массив.

Массивтермен жиi кездесетiн әрекеттердi қарастырамыз.



1.Массивтердi тұтастай пайдалану. Массивтi тұтастай қарастыру үшiн, индекстерi көрсетiлмеген массив атауы пайдаланылады.

Егер А және В массивтерi var a,b: array 1..20 of real; болса, онда оларға мынадай операцияларды қолдануға болады:



- салыстыру:

A=B, егер A массивiнiң элементi B массивiнiң сәйкес элементiне тең болса, нәтижесi true;

A<>B, егер A массивiнiң кем дегенде бiр элементi B массивiнiң сәйкес элементiне тең емес болса, нәтижесi true;

- меншiктеу: A:=B; А массивiнiң әрбiр элементiне В массивi-нiң сәйкес элементi меншiктеледi. В - өзгерiссiз қалады.

2. Бастапқы мәндерiн беру (толтыру, инициялизациялау):

- массивтiң барлық элементтерiне базалық типке сай бiр мәндi меншiктеу;

For i:=1 to 4 do {А массивiнiң барлық элементiне

Ai:=0; де 0 мәнi берiледi}

- массив элементтерiнiң мәнiн клавиатурадан толтыру;

For i:=1 to 5 do {C массивiнiң барлық 5 элементiнiң

Readln (Ci) ; мәндерi клавиатурадан енгiзiледi}

Readln D5 {D массивiнiң 5-шi элементiн енгiзедi}



- массивті кездейсоқ сандармен толтыру;

randomize; for i:=1 to 7 do

k[i]:=random(105)

3. Массив элементтерiн экранға шығару

- бағанамен;

for i:=1 to 4 do

writeln (ai);


жүктеу 0,89 Mb.

Достарыңызбен бөлісу:
1   2   3




©g.engime.org 2024
әкімшілігінің қараңыз

    Басты бет
рсетілетін қызмет
халықаралық қаржы
Астана халықаралық
қызмет регламенті
бекіту туралы
туралы ережені
орталығы туралы
субсидиялау мемлекеттік
кеңес туралы
ніндегі кеңес
орталығын басқару
қаржы орталығын
қаржы орталығы
құрамын бекіту
неркәсіптік кешен
міндетті құпия
болуына ерікті
тексерілу мемлекеттік
медициналық тексерілу
құпия медициналық
ерікті анонимді
Бастауыш тәлім
қатысуға жолдамалар
қызметшілері арасындағы
академиялық демалыс
алушыларға академиялық
білім алушыларға
ұйымдарында білім
туралы хабарландыру
конкурс туралы
мемлекеттік қызметшілері
мемлекеттік әкімшілік
органдардың мемлекеттік
мемлекеттік органдардың
барлық мемлекеттік
арналған барлық
орналасуға арналған
лауазымына орналасуға
әкімшілік лауазымына
инфекцияның болуына
жәрдемдесудің белсенді
шараларына қатысуға
саласындағы дайындаушы
ленген қосылған
шегінде бюджетке
салығы шегінде
есептелген қосылған
ұйымдарға есептелген
дайындаушы ұйымдарға
кешен саласындағы
сомасын субсидиялау