МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ
НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ “ЛЬВІВСЬКА ПОЛІТЕХНІКА”
ІКТА
Кафедра ЗІ
Звіт
до ЛАБОРАТОРНОЇ РОБОТИ №3
З КУРСУ:”Алгоритмічні мови та програмування” на тему:
“ РОБОТА З МАСИВАМИ. ВИКОРИСТАННЯ ПРОЦЕДУР ТА ФУНКЦІЙ”
Варіант 1
Львів – 2006
Мета роботи - вивчити синтаксис опису і використання в програмах змінних типу масив, навчитися використовувати масиви для оброблення матриць, вивчити основні алгоритми сортування масивів; навчитися описувати та застосовувати у програмах процедури і функції для виконання логічно закінчених алгоритмів.
Повний текст завдання
Написати програму алгоритмічною мовою Турбо-Паскаль згідно з завданням, отриманим від викладача за табл.1: задану прямокутну матрицю A={aij} відсортувати за вказаним алгоритмом; для відсортованої матриці знайти значення функції F(fi(aij)); алгоритм сортування оформити у вигляді процедури; обчислення fi(aij) оформити у вигляді функції; елементи матриці вводити з клавіатури; програма повинна вивести на екран відсортовану матрицю, всі значення fi(aij) та значення функції F(fi(aij)).
Таблиця 1
№ п/п
Алгоритм впорядкування матриці
Алгоритм для розрахунку fi(aij) та F(fi(aij))
Матриця
1
Впорядкувати елементи стовпців матриці за спаданням їх значень методом вставки
fi(aij) - максимальний елемент у кожному рядку матриці;
F(fi(aij)) - сума fi(aij).
-12 7 23 13 4
67 15 34 -5 9
2 5 17 -23 45
26 -6 23 -5 -9
18 37 -8 26 12
Блок-схема алгоритму програми
Процедура Sort (Бдок-схема)
Список ідентифікаторів констант, змінних, процедур і
функцій, використаних в програмі, та їх пояснення
clrsqr – процедура очищення екрану
Write – процедура виведення на монітор повідомлення в лапках
Writeln - процедура виводу тексту на дисплей (курсор переходить на новий рядок);
Readln – процедура вводу змінних з клавіатури(курсор переходить на новий рядок);
For - oператор циклу з лічильником
Остаточно відлагоджений текст програми згідно з
отриманим завданням
Program Laba;
uses crt;
const N=5;
var
mas:array[1..N,1..N] of Integer;
maxe:array[1..N] of Integer;
i1,j1,a,max,sum:integer;
procedure InsertSort(j:integer);
var
y,k,i:integer;
begin
for k:=2 to n do
begin
y:=mas[k,j];
i:=k-1;
while (i>=1) and (y>mas[i,j]) do
begin
mas[i+1,j]:=mas[i,j];
i:=i-1;
end;
mas[i+1,j]:=y
end
end;
begin
sum:=0;
clrscr;
writeln('Zapovnit masiv');
for i1:=1 to N do
for j1:=1 to N do
readln(mas[i1,j1]);
clrscr;
for i1:=1 to N do
begin
max:=mas[1,1];
for j1:=2 to N do
if mas[i1,j1]>max then max:=mas[i1,j1];
maxe[i1]:=max;
sum:=sum+max;
end;
writeln('Masiv do sortyvanie vstavkoy');
writeln;
for i1:=1 to N do
begin
for j1:=1 to N do
write(mas[i1,j1]:5);
writeln;
end;
for a:=1 to N do InsertSort(a);
writeln;
writeln('Masiv pislia sortyvanie vstavkoy');
writeln;
for i1:=1 to N do
begin
for j1:=1 to N do
write(mas[i1,j1]:5);
writeln;
end;
writeln;
for a:=1 to N do writeln('f',a,'= ',maxe[a]:5);
writeln;
writeln('F(f)=',sum);
end.
ЗМIСТ ЗВIТУ
1. Повний текст завдання.
2. Блок-схема алгоритму програми.
3. Список ідентифікаторів констант, змінних, процедур і функцій, використаних в програмі, та їх пояснення.
4. Остаточно відлагоджений текст програми згідно з отриманим завданням.
5. Результати виконання програми.
4. КОНТРОЛЬНI ЗАПИТАННЯ
1. Поясніть, як можна описати змінну-масив мовою Турбо-Паскаль.
2. Як здійснюється доступ до елементів масиву ?
3. Як описуються процедури і функції мовою Турбо-Паскаль? В чому полягає різниця між процедурою і функцією ?
4. Як передаються фактичні параметри при виклику процедур і функцій ?
5. Який з простих методів сортування, на Ваш погляд, є найкращим, а який найгіршим ? Поясніть чому ?