Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
МетодАлгКП.doc
Скачиваний:
109
Добавлен:
18.02.2016
Размер:
2.27 Mб
Скачать

Практикалық жұмыс №6

Тақырыбы: PASCAL тілінің циклдік операторлары

Жұмыс мақсаты: PASCAL тілінің циклдық операторын программа құруда қолдануға үйрету.

Жұмыс орындау тәртібі

  1. Теориялық мəліметтермен танысу. Бақылау сұрақтарына жауап беру.

  2. Жеке нұсқада тапсырмалар орындау.

  3. For циклдық операторын қолданып келесі есепті шығару үшін программа құру: Х саны берілген. Мұғалімнің көрсеткен варианты бойынша Х қатарына қатысты қосындыны есептеу. Есептеу жүргізу, егер x=1, x=1.5, x=2.

  4. 1 пунктінде берілген есепті While (тақ номері бар варианттарға) циклін қолданып немесе Repeat (жұп номері бар варианттарға) циклдық операторын қолданып шығару. Сандық есептеу жүргізіп алынған нәтижені 2 пунктіндегі нәтижемен салыстыру. 

  5. Орындалған жұмыс туралы жазбаша есеп беру. Есепте жұмыс тақырыбы, мақсаты, тапсырманың математикалық үлгісі, алгоритмнің блок – схемасы, листингі болуы қажет.

6.1 Негізгі түсініктер

6.1.1 Қайталану саны белгілі цикл операторы

Кейбір программаларда белгілі – бір шарттардың сақталуына тәуелді командалардың қандай да бір бөлігі бірнеше рет қайталанады. Мұндай әрекеттерді жүзеге асыратын командаларды қайталау командасы деп атайды. Турбо Паскаль тілінде программаның қайталанатын бөлігін программалау үшін әртүрлі 3 оператор қолданылады.

Олар: 1) Қайталану саны белгілі цикл операторы (немесе үшін циклі)

2) Шарты алдын ала берілген цикл операторы

3) Шарты соңынан тексерілетін цикл операторы

Цикл операторлары құрамына кіретін операторлар тобын бірнеше рет қайталау үшін қолданылады. Турбо Паскаль тілінде арифметикалық прогресия түріндегі (FOR – санауышы бар цикл операторы) параметрлік жəне итерациялық түрдегі қадамдық цикл операторлары (WHILE жəне REPEAT) бар.

Арифметикалық прогресия түріндегі цикл операторы циклдің қайталану саны алдын ала белгілі болған жағдайда қол- данылады. Мұнда цикл параметрінің өзгеру қадамы +1 немесе –1 болуы мүмкін.

Оператордың жазылуы:

TO

FOR <цикл параметрі>:= <1 өрнек> DOWNTO <2 өрнек> DO <oператор>;

<цикл параметрі> – бұл кез келген типтегі айнымалы (бүтін, символдық, санауыш, интервалды);

TO – цикл параметрінің өзгеру қадамы +1 болған кезде қолданылатын түйінді сөз;

DOWNTO – цикл параметрінің өзгеру қадамы -1 болған кез- де қолданылатын түйінді сөз;

<1 өрнек> – цикл параметрінің бастапқы мəні, өрнек типі цикл параметрінің типімен бірдей;

<2 өрнек> – цикл параметрінің соңғы мəні, өрнек типі цикл параметрінің типімен бірдей;

<оператор> – цикл тұлғасы – жəй немесе құрама оператор.

FOR операторы төмендегі ереже бойынша орындалады:

• <1 өрнек> есептеліп, цикл параметріне меншіктеледі;

• цикл соңы шарты тексеріледі: <цикл параметрі> үлкен < 2

өрнек> болса TO сөзі қолданылады жəне <цикл параметрі> кем

< 2 өрнек> болса DOWNTO сөзі қолданылады;

• цикл тұлғасы орындалады;

• цикл параметрі бірге өседі (TO) немесе кемиді (DOWNTO);

• циклдің бірінші сатысынан басқасы қайталанады.

Бұл операторды пайдаланғанда, мына жағдайларды есте сақтау керек:

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

• Қадамы +1 болып келетін нұсқада цикл параметрінің бастапқы мəні соңғы мəнінен үлкен болса, цикл бір де бір рет орындалмайды. Сол сияқты, цикл қадамы –1 болғанда да, бастапқы мəн соңғы мəннен кем болса, ол бір де бір рет атқарылмайды.

• Циклден шығу GOTO операторы немесе BREAK процедурасы көмегімен орындалған кездерден басқа жағдайлардың барлығында цикл параметрінің мəні анықталмаған болып саналады.

• Цикл тұлғасы ретінде басқа оператор қолданылуы мүмкін. Мысалы, F=N! факториалының мəнін есептеу үшін төмендегі

операторларды қолдануға болады:

a) … F:=1; b) … F:=1;

FOR I:=1 TO N DO FOR I:=N DOWNTO 1 DO

F:=F*I; … F:=F*I; …

Келесі мысалда цикл 26 рет орындалады жəне SIM айнымалысы мəн терінде ’A’-дан ‘Z’-ке дейінгі латын əріптерін қабылдайды.

...

FOR SIM:=’A’ TO ‘Z’ DO WRITELN(SIM);

...

Егер цикл ішінде тағы да басқа цикл болса, онда бұндай цикл

қабатталған цикл немесе күрделі цикл деп аталады. Ішінде циклі бар цикл сыртқы цикл деп, ал сыртқы цикл ішіндегі цикл ішкі цикл деп аталады. Ішкі жəне сыртқы циклдерде жоғарыда айтылған үш циклдің кез келгені болуы мүмкін: FOR, WHILE немесе REPEAT. Қабаттасқан цикл құрастырған кезде, ішкі циклдің барлық операторлары сыртқы цикл тұлғасының ішінде болуы керек. Циклдерді бір-біріне қабаттастыру саны компьютердің жады көлемімен шектеледі. Алдымен ішкі цикл орындалады, сонан кейін сыртқы цикл параметрі өзгеріп, тағы да ішкі цикл орындалады, т.с.с.

Мысал 1. Алғашқы 20 натурал санның қосындысын және көбейтіндісін табындар.

а) var i, s, p: integer; б) var i, s, p; integer;

begin P:=1; S:=0; begin p:=1; S:=0;

for i:=1 to 20 do for i:=20 to 1 do

begin begin

S:= S+i; S:= S+i;

P:= P*I; end; P:= P*I; end;

Writeln (‘S=’,S, ‘P=’,P); Writeln (‘S=’,S, ‘P=’,P);

end. end.

Цикл денесі құрамы оператордан болса, онда олар begin, end операторлық жақшаға алынады.

Мысал 2. n! - ды есептеу програмасын жазындар.

Program m2;

Var i, n, P: integer;

begin

P:=1; read (n);

For i:= 1 to n do

P:= P*i;

Write (‘n!=’,P);

end.

Мысал 3. 5 санының көбейту кестесін экранға шығаратын программа құрындар.

1 * 5 = 5

2 * 5 = 10

3 * 5 = 15

9 * 5 = 45

Program m3;

Var i, p: integer;

begin

for i:= 1 to 9 do

begin

p:=5 *i;

Writeln (i, ‘*5=’,p);

end;

end.

6.1.2 Шарты алдын ала берілген цикл операторы

Итерациялық түрдегі цикл операторлары циклдің қайталану саны алын ала белгісіз болғанда немесе цикл параметрінің өзгеру қадамы +1 немесе –1-ден өзгеше болған жағдайда қолданылады.

Шарты алдын ала берілген цикл операторының жазылуы:

WHILE <логикалық өрнек> DO <оператор>;

Логикалық өрнек, яғни шарт цикл тұлғасының əр орындалу алдында есептелді.

Сурет 6.1. Шарты алдын ала тексерілетін цикл алгоритмінің орындалу схемасы

Егер логикалық өрнек АҚИҚАТ (TRUE) мəнін қабылдаса, онда цикл тұлғасы орындалады, егер мəн ЖАЛҒАН (FALSE) болса циклден шығу жүзеге асырылады. Логикалық өрнек бірден жалған болған жағдайда цикл тұлғасы бір де бір рет орындалмайды. Цикл тұлғасы жəй немесе құрама оператор болуы мүмкін.

Мысал 1. n! - мәнін есептеу программасын әзір циклі арқылы жазайық.

Program m1;

Var i, n: integer; P: longint;

begin

read (n);

P:=1;

i:=1;

while i<=n do

begin

P:= P*i;

i:= i+1;

end;

write (‘n!=’,P);

end.

Мысал 2. x-тің мәні – 5- тен 5 –ке дейін 0,2 қадаммен өзгерген мәндері үшін y=x2 -1функциясының мәндерін экранға шығарындар.

Program m2;

Var x,y: real;

begin

x:=-5;

while x<=5 do

begin

y:= sqr(x)-1;

writeln (x,’---’,y);

x:=x+0.2;

end;

end.

6.1.3 Шарты соңынан тексерілетін цикл операторы

REPEAT

< 1 оператор > ;

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

< n оператор >

UNTIL <логикалық өрнек>;

Бұл цикл қайталану саны белгісіз, бірақ циклден шығу шарты белгілі болған жағдайда қолданылады. Циклді басқаратын логикалық өрнек циклден шығу шарты болып саналады. Егер шарт АҚИҚАТ (TRUE) мəнін қабылдаса, онда цикл тоқтатылады. REPEAT операторын қолданғанда, цикл тұлғасы кем дегенде бір рет орындалады. Цикл операторларының басқа түріне қарағанда, бұл оператор BEGIN – END операторлық жақшасын керек етпейді, себебі операторлық жақша қызметін REPEAT – UNTIL түйінді сөздері атқарады.

Мысал 1. n! – ды есептеуді дейін циклін қолданып программалауды қарастырайық.

Program m1;

var i, n: integer;

P: longint;

begin

read (n);

P:=1;

i:=1;

Repeat

P:=P*1;

i:=1+1;

until i>n

writeln (‘n!=’, P);

еnd.

6.1.4 Жұмысты орындауға арналған әдістемелік кеңестер

Қосындыны табуға арналған стандарттық есепті шешкен кезде ең біріншіден тізбектің құрылу заңдылығын білу керек, яғни санның реттік номеріне байланысты.

Мысалы, қосынды тізбегінің мына түрінде

cos(x)+cos(2x)+cos(3x)+…+cos(7x) 

k номері бар қосылғыштың жалпы түрі мынадай түрде болады cos(k*x), мұнда k 1-ден 7-ге дейін өзгереді.

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

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

s:=0;

for k:=1 to 7 do s:=s+cos(k*x);

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

end.

While операторының көмегімен:

s:=0; k:=1;

while k<=7 do

begin

s:=s+cos(k*x); k:=k+1;

end;

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

end.

Repeat операторының көмегімен:

s:=0; k:=1;

repeat

s:=s+cos(k*x); k:=k+1;

until k>7;

writeln(‘қосынды =’, s); end.

ЖЕКЕ ТАПСЫРМАЛАР НҰСҚАЛАРЫ

16. Барлық екі сандар ішінен 3-ке бөлінетін, бірақ 5-ке бөлінбейтін сандарды табыңдар.

17. Алғашқы 50 жұп санның арифметикалық ортасын табыңдар.

18. Дәрежелеу амалын қолданбай 3-тің 5 дәрежесін есептеңіз.

19. 1000-нан 10000-ға дейін 1000 қадаммен өзгерген теңге мәндерін курсқа байланысты доллармен өрнектеңдер.

20. 1-ден 9-ға дейінгі берілген кез-келген санның көбейту кестесін шығаратын программа құрыңдар.

21. Бағана бойынша бейнелеңіз:

А) 20-дан 35-ке дейінгі барлық бүтін сандарды;

В) 10-нан b дейінгі барлық бүтін сандардың квадратын (b мәні клавиатурадан енгізіледі; b ≥ 10);

22. Белгілі-бір тауардың біреуінің бағасы 204 тенге. Осы тауардың 2, 3,...,20 құнын кесте түрінде баспаға шығарыңыз.

23. Табыңыз:

А) 10-нан 50-ге дейінгі барлық бүтін сандар квадраттарының қосындысын;

В) а-дан 50-ге дейінгі барлық бүтін сандар квадраттарының қосындысын(а мәні клавиатурадан енгізіледі, а ≤ 50);

24. 20-дан 40-қа дейінгі барлық бүтін сандар кубтарының қосындысын табыңыз.

25. қосындысын есептеңіз.

26. қосындысын есептеңіз.

27. Азамат 1 наурызда банкте 100000 тенге салып, есеп ашты. Әр ай сайын салым бар сомадан 2% -ке өсіп отырады. Анықтаңыз:

А) бірінші, екінші,...,оныншы ай өсімін;

В) қанша айдан кейін салым 120000-нан астам болады.

28. Белгілі –бір жылы (шартты оны бірінші деп атайық) 100 гектар жерде арпа өнімділігі әр гектардан 20 центнер құрады. Осыдан кейін әр жыл жер аумағы 5%-ке өсіп, ал өнімділік 2 % болып отырды. Анықтаңыз:

а) екінші, үшінші,.., сегізінші жылғы өнімділікті;

б) төртінші, бесінші,..., жетінші жылғы жер аумағын;

в) өнімділігі 22 центнерден асқан жылды;

г) бірінші алты жылғы жалпы өнімділікті;

д) нешінші жылы жер аумағы 120 гектардан асады;

е) бірінші жылдан бастап жиналған жалпы өнім, нешінші жылы 800 центнерден асады.

Бақылау сұрақтары

  1. Цикл дегеніміз не, цикл денесі?

  2. Pascal Тілінің қандай циклдік операторларын білесіздер?

  3. For операторларының өздеріңе белгілі форматын айтыңыз.

  4. For операторының параметрлері қаншалықты қадаммен өзгереді?

  5. For операторының қадам сандарын қалай санауға болады?

  6. Шартты алдын-ала тексеру циклі мен шартты соңынан тексеру циклінің айырмашылықтарын түсіндір.

  7. Whileоператорының форматы.

  8. While операторындағы цикл денесі бірде-бір рет орындалмайтын есепке мысал келтір.

  9. Repeat операторының форматына мысал келтір.

  10. Repeat операторының қайталануы қай кезде тоқтатылынады, түсіндір.

Ұсынылатын әдебиеттер: 1, 4, 7