2 семестрп / Lab_5
.doc
Лабораторна робота 5
Тема: Розробка та реалізація програми з вкладеними циклами
Ціль роботи: оволодіння навичками складання програми з вкладеними циклами та виконання її у середовищі системи програмування ТигЬо Равсаі 6.0; придбання уміння використовувати найпростіші методи сортувння масивів та методи пошуку для упорядкованих масивів.
Короткі теоретичні відомості
Тіло циклу одного оператора циклу може містити інші оператори циклу. Такі цикли називаються вкладеними. При складанні програм з вкладеними циклами треба пам'ятати про наступне:
* передача керування дозволена з внутрішнього циклу в зовнішній, але не навпаки;
* область дії внутрішнього циклу не повинна виходити за межі зовнішнього циклу.
Крім того, для операторів циклу fог діє ще одне правило: імена параметрів зовнішнього і внутрішнього циклів повинні бути відмінними. В випадку вкладених циклів fог при коленому фіксованому значенні параметра зовнішнього циклу параметр внутрішнього циклу пробігає усі свої значення.
При роботі з двовимірними масивами (матрицями) вкладені цикли рекомендується організовувати так, щоб у зовнішньому циклі змінювався індекс рядка (перший індекс), а у внутрішньому - індекс стовпця (другий індекс), що підвищує ефективність Раscal-
програми завдяки послідовному зчитуванню елементів масиву з пам'яті. Для виведення елементів матриці А рядків, М стовпців) по рядкам використовують наступний фрагмент:
for i:=1 to n do
begin
for j:=1 to m do write(a[i,j]);
writeln;
end;
Завдання 5.1
Представити математичний запис фрагмента програми і обчислити значення змінної X після його виконання, якщо елементи масивуA(який описується як var a: array[1..3,1..3]of integer) визначаються за формулами та .
Фрагмент програми: X:=A[1,3]; N1:=0; N:=3;
FOR I:=1 TO N DO
FOR J:=1 TO N DO
IF X>A[I,J] THEN
BEGIN X: A[I,J];
N1:=I;
END;
Розв’язок
Ця програма шукає найменший елемент масиву A[I] 3:3 після виконання програми X набуває значення 3, N1=1.
Завдання 5.2
Скласти програму сортування масиву в порядку зростання його елементів визначеним методом та виконати її у середовищі системи програмування Тurbо Раscal 6.0, якщо елементи масиву визначаються за формулою . Значення змінюється від 1 до 19.
Умова: обмінне сортування
Розв’язок
program lr5;
const n=19;
var a:array[1..100] of integer;
i,j,k,v:integer;
begin
writeln('Введите номер студента в списке');
read(a[1]);
for i:=1 to n-1 do a[i+1]:=(37*a[i]+3) mod 64;
for i:=1 to n do write (a[i]:3);
writeln;
for i:=1 to n-1 do
begin
if (a[i]>a[i+1]) then
begin
v:=a[i+1];
a[i+1]:=a[i];
a[i]:=v;
end;
end;
writeln('Результат');
for i:=1 to n do writeln(a[i]);
end.
Результати роботи програми:
Введите номер студента в списке
4
4 23 22 49 24 59 10 53 44 31 62 57 0 3 50 61 20 39 38
Результат
4
22
23
24
49
10
53
44
31
59
57
0
3
50
61
20
39
38
62
Завдання 5.3
Оцінити ефективність алгоритму бінарного пошуку за завданням 4.3:
Розв’язок
program lr4;
const n=20;
var a:array[1..n]of integer;
i,m,k:integer;
begin
write('Ввести ключ k=');readln(k);
writeln('Вводимо масив a[1..',n:2,']');
a[1]:=1; a[20]:=219830;
for i:=1 to n-2 do a[i+1]:=(37*a[i]+3)mod 64;
for i:=1 to n do writeln(a[i]);
writeln;
m:=0;
for i:=1 to n do
if a[i]=k then begin writeln ('a[',i:2,']=',a[i]);m:=i
end;
if m=0 then
writeln('Ключ',k,'в масиві не зустрічається');
end.
Результати роботи програми:
Ввести ключ k=2
Вводимо масив a[1..20]
1
40
11
26
5
60
47
14
9
16
19
2
13
36
55
54
17
56
27
219830
a[12]=2
Висновок:
Захист
Program lr5_z;
uses crt;
Var a:array [1..20,1..20] of integer;
max,s,m,n: integer;
Begin
Writeln('Vvedite razmernost matrici');
readln(s);
Writeln('vvedit elementi');
for m:=1 to s do
for n:=1 to s do
Readln(a[m,n]);
max:=a[1,1];
for m:=1 to trunc(s/2) do
for n:=1 to m do
begin
if(a[m,n]>max) then max:=a[m,n];
if(a[m,s-n+1]>max) then max:=a[m,s-n+1];
end;
for m:=1 to trunc(s/2) do
for n:=1 to m do
begin
if(a[s-m+1,n]>max) then max:=a[s-m+1,n];
if(a[s-m+1,s-n+1]>max) then max:=a[s-m+1,s-n+1];
end;
if (s mod 2)>0 then
for n:=1 to s do
if (a[(trunc(s/2)+1),n]>max) then max:=a[(trunc(s/2)+1),n] ;
writeln('Max=',max);
end.
ЛР05-
6.050103.1157-01