Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Оператор
немесе for айнымалы: =бастапқ ы мә н downto соң ғ ы мә н do оператор for сө зінен бастап do сө зіне дейінгі мә тін цикл тақ ырыбы деп, ал do –дан кейінгі оператор цикл тұ лғ асы деп аталады. for сө зінен кейінгі айнымалы цикл параметрі деп аталады. to кілттік сө зі бар циклдың бірінші формасы ү шін цикл параметрі ә рдайым бірлікке ө сіп бастапқ ы мә ннен соң ғ ы мә нге дейін ө згереді, ал downto кілттік сө зі бар циклдың екінші формасы ү шін цикл параметрі ә рдайым бірлікке азаяды. Цикл тұ лғ асының бір рет қ айталануы цикл итерациясы деп аталады. Цикл аяқ талғ аннан кейін цикл параметрінің мә ні анық талмағ ан болып саналады. Егер for... to циклы ү шін цикл айнымалысының бастапқ ы мә ні соң ғ ы мә ннен ү лкен болса немесе for... downto циклы ү шін цикл айнымалысының бастапқ ы мә ні соң ғ ы мә ннен аз болса, онда цикл тұ лғ асы бір де бір рет орындалмайды. Егер цикл процедурада немесе функцияда пайдаланылатын болса, онда циклдың параметр-айнымалысы локальды ретінде сипатталуы тиіс. for в Pascal ABC –да цикл тұ лғ асы бос болуы мү мкін емес. Циклдың параметр-айнымалысын цикл ішінде ө згерту логикалық қ ате болып табылады. Мысалы, бірінің ішіне бірі салынғ ан for операторы бар келесі фрагмент қ ате болып табылады: for i: =1 to 10 do for i: =1 to 5 do write(i); Циклдың параметр-айнымалысы кез келген реттік типке ие болуы мү мкін (бү тін, символдық, санақ тап шығ у немесе аралық). Бұ л кезде бастапқ ы жә не соң ғ ы мә ндердің типтері цикл параметрінің типіне сә йкес болуы тиіс. Мысалы: var en: (red, green, blue, white); c: char; ... for en: =red to blue do write(Ord(en): 2); for c: ='a' to 'z' do write(c); for циклының негізгі кемшілігі ол цикл параметрін тек 1-ге ғ ана ө сіруге немесе азайтуғ а мү мкіндік беретіндігінде. Оның негізгі артық шылық тары қ атарына ық шамдық жә не мә ндер аралығ ында символдық жә не санақ тап шығ у типтерін пайдалану мү мкіндігі жатады. Бірнеше мысалдарды қ арастырайық. Блок-схемаларда for цикл операторына 10.4 суреттегі қ ұ рылым сә йкес.
Сурет 10.4 - for операторың жұ мыс жасау блок-схемасы Мысал 10.4. Есептегішті ұ йымдастыру алгоритмі. Кейбір тізбектілік берілген. Тізбектіліктің оң таң балы мү шелер санын анық тау керек. Program P10_4; Var a: real; n, L: integer; Begin L: = 0; for n: = 1 to 50 do begin a: = cos(2 * n - 1); if a> 0 then L: = L + 1; end; writeln('L=‘, L); End. 10.4 Ішкі циклдерді қ ұ растыру (массивтерді ө ндеу, массив компоненттерін реттеу есептерінің мысалдары негізінде) Бір цикл тұ лғ асының ішінде басқ а циклды ұ йымдастыру мү мкіндігі бар. Мү ндай циклды ішіне салынғ ан (кірістірілген) цикл деп атаймыз. Кірістірілген циклды оны қ амтығ ан циклге қ атысты ішкі цикл деп жә не керісінше тұ лғ асында кірістірілген циклды қ амтитын циклды ішкі циклге қ атысты сыртқ ы цикл деп атаймыз. Кірістірілген циклдың ішіне кірістірудің келесі дең гейін қ ұ ра отырып жә не бір циклды салуғ а болады жә не с.с. Кірістіру дең гейлерінің саны ә детте шектелмейді. Ішкі цикл тұ лғ асының қ айталануының толық саны ішкі жә не барлық сыртқ ы циклдардың итерациялар санының кө бейтіндісінен аспайды. Мысалы, ә рқ айсысы 10 итерациядан тұ ратын бірінің ішіне бірі салынғ ан ү ш циклді алсақ сыртқ ы цикл 10 рет, екінші дең гейдегі цикл 100 рет жә не ең ішкі цикл 1000 рет орындалады. Бірінің ішіне бірі салынғ ан циклдарғ а байланысты проблемалардың бірі – олардың ішінен мерзімнен бұ рын шығ уды ұ йымдастыру болып табылады. Паскальда циклды мерзімнен бұ рын аяқ тау exit операторы бар, бырақ ол ә детте ө зі шақ ырылғ ан дең гейдегі циклдан шығ уды қ амтамасыз етеді. Бірінің ішіне бірі салынғ ан циклдардан шығ у проблемасының бірнеше шешімдері бар. Ең қ арапайымы – кірістірілген циклдан кейін тікелей ілескен программаның нү ктесіне шығ у ү шін шартсыз ө ту goto операторын қ олдану. Альтернатива — қ ажет болғ ан жағ дайларда ө ндеуді дер кезінде аяқ тауды талап ететін арнайы жалаушаларды қ ойып циклдарды аяқ таудың штатты қ ұ ралдарын пайдалану. Кемшілік — кодтың кү рделенуі, ө німділіктің тө мендеуі. Кірістірілген циклды процедурада орналастыру. Мысал 10.5. Нақ ты сандардың матрицасында ә р жолдағ ы бірінші элементті сол жолдағ ы минималды элементпен орындарын ауыстыру керек. Алмастырудан кейін пайда болғ ан Х матрицаны экранғ а шығ ару. Program P10_5; Var X: array [1..3, 1..6] of real; i, j, jmin: integer; min: real; Begin writeln('Х матрицаны енгізің із'); for i: = 1 to 3 do for j: = 1 to 6 do read(x[i, j]); for i: =1 to 3 do begin min: =+1E6; for j: =1 to 6 do if x[i, j]< min then begin min: =x[i, j]; jmin: =j; end; x[i, jmin]: =x[i, 1]; x[i, 1]: =min; end; for i: =1 to 3 do begin for j: =1 to 6 do write (x[i, j]: 6: 1); writeln; end; End. Мысал 10.6. Нақ ты сандардың матрицасы берілген. P1 жә не P2 – сә йкесінше матрицаның оң таң балы жә не терістаң балы элементтерінің кө бейтіндісі болатын Z мә нін есептеу керек. Program P10_6; Var A: array [1..4, 1..6] of real; i, j: integer; P1, P2, Z: real; Begin writeln(‘А матрицаны енгізің із'); for i: = 1 to 4 do for j: = 1 to 6 do read(a[i, j]); P1: = 1; P2: = 1; for i: = 1 to 4 do for j: =1 to 6 do begin if a[i, j]> 0 then P1: = P1 * a[i, j]; if a[i, j]< 0 then P2: = P2 * a[i, j]; end; Z: = P1*abs(P2); writeln(‘Z=’, Z: 10: 2); end. Лекция
|