Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
AEP_LEKTsII.doc
Скачиваний:
90
Добавлен:
28.03.2015
Размер:
1.27 Mб
Скачать

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.

11 Лекция

11.1 Жолдық деректер

Символдардан тұратын жолдар туралы біз 6-ші лекцияда әнгімелескенбіз. Pascal ABC-те жолдар string типіне ие және саны 255-тен аспайтын символдардан тұрады. Сипаттау барысында:

Var s: string;

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

Жадыны үнемдеу үшін сипаттаудың келесі түрі көзделген:

Var s1: string[40];

Бұл жағдайда жол үшін 41 байт орын беріледі (нөлінші байт – жолдың ұзындығына). s1 айнымалыға 40 символдан асатын жолды меншіктеген жағдайда артық символдар алынып тасталады да s1 жолдың ұзындығы 40 байт болып есептеледі.

s1+s1 түрдегі конкатенация операциясы орындалғанда нәтиже string типті жол болып саналады, яғни 256 байт орын алады. Бырақ, егер конкатенация барысында нәтиже 255 символдан артық орын алатын болса, онда программа қателікпен аяқталады.

Жолдағы символдарға индексті пайдалану арқылы сілтеуге болады: s[i] – жолдағы i-ші символды белгілейді. Нөлінші s[0] символға сілтеу қате болып саналады. Жолдың ұзындығын өзгерту үшін SetLength процедурасын пайдалану керек. Егер индекс i жолға берілген жадының шегінен шығып кететін болса, онда қате туралы хабарлама беріледі. Бырақ, егер индекс i тек жол ұзындығының шектерінен ғана шығып кетсе, онда қате туралы хабарлама берілмейді.

Жолдармен жұмыс жасауға арналған стандартты процедуралар мен функциялар кестеде келтірілген

Кесте 11.1

Жолдармен жұмыс жасауға арналған стандартты процедуралар мен функциялар

Аталуы және параметрлер

Процедура немесе функция

Параметрлердің типтері

Қайтарылатын мәннің типі

Амал

Length(s)

функция

s - string

integer

s жолдың ұзындығын қайтарады

Copy(s,index,count)

функция

s - string, index, count - integer

string

indexпозициясынан бастап s жолдың ұзынды-ғы count болатын ішкі жолды қайтарады

Delete(s,index,count)

процедура

s - string, index, count - integer

 

index позициясынан бастап s жолдың count символдарын жояды

Insert(subs,s,index)

процедура

s, subs - string, index - integer

 

index позициясынан бастап s жолға subs ішкі жолды кірістіреді

Pos(subs,s)

функция

s, subs - string

integer

s жолда бірінші рет кездесетін subs ішкі жолдың позициясын (немесе егер ішкі жол табылмаса 0) қайтарады.

SetLength(s,n)

процедура

s - string,

n - integer

 

sжолдың ұзындығын n-ге тең етіп орнатады

Str(x,s)

Str(x:n,s)

Str(x:n:m,s)

процедура

s - string, x - integer,

n, m - integer

 

x-ті жолдық бейнелеуге түрлендіреді (2-i және 3-i жағдайда n және m арқылы орнатылатын форматқа сәйкес) және нәтижені s жолға жазады

Val(s,v,code)

процедура

s - string, v - integer,

code - integer

 

s жолды сандық бейнелеуге түрлендіреді де нәтижені v айнымалыға жазады. Егер түрлендіру мүмкін болса онда code айнымалыға 0, егер мүмкін болмаса онда code-ге нөльдік емес мән қайтарылады.

Concat(s1,...,sn)

функция

s1,..., sn - string

string

s1,...,sn жолдардың қосылу нәтижесі болып табылатын жолды қайтарады.Нәтиже s1+s2+...+snөрнектін нәтижесімен бірдей

IntToStr(i)

функция

i - integer

string

бүтін санды жолға түрлендіреді

StrToInt(s)

функция

s - string

integer

жолды бүтін санға түрлендіреді.Егер түрлен-діру мүмкін болмаса, онда қате орын алады

FloatToStr(r)

функция

r - real

string

нақты санды жолға түрлендіреді

StrToFloat(s)

функция

s - string

real

жолды нақты санға түрлендіреді.Егер түрлен-діру мүмкін болмаса, онда қате орын алады

UpCase(c)

функция

c - char

char

жоғары регистрге түрлендірілген с символды қайтарады

LowCase(c)

функция

c - char

char

төменгі регистрге түрлендірілген с символды қайтарады

UpperCase(s)

функция

s - string

string

жоғары регистрге түрлендірілген s жолды қайтарады

LowerCase(s)

функция

s - string

string

төменгі регистрге түрлендірілген s жолды қайтарады

Trim(s)

функция

s - string

string

s жолдың бастапқы және соңғы бос орындары жойылған көшірмесін қайтарады

TrimLeft(s)

функция

s - string

string

s жолдың бастапқы бос орындары жойылған көшірмесін қайтарады

TrimRight(s)

функция

s - string

string

s жолдың соңғы бос орындары жойылған көшірмесін қайтарады

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]