Міністерство освіти і науки України
Національний університет „Львівська Політехніка”
Кафедра ЕОМ
Звіт
про виконання лабораторної роботи № 6
з курсу „Основи алгоритмізації та програмування”
Тема: Робота з масивами.
Оголошення та використання процедури.
Виконано:
стдент групи КІ-1
Львів – 2003
МЕТА РОБОТИ: Вивчити способи оголошення, організації, ініціалізації та алгоритми обробки масивів даних, а також оголошення та використання підпрограм-процедур.
ТЕОРЕТИЧНІ ВІДОМОСТІ
Масиви.
Масив - це впорядкований набір змінних одного типу. Масиви містять обмежену кількість елементів. Узагальнений формат оголошення типу "масив" має вигляд:
type ім'я_типу = array [T1] of T2, де ім'я_типу – правильний ідентифікатор,
T1 – тип індексів, – довільний порядковий тип, крім longint та діапазону типу longint,
T2 – тип елементів масиву, – довільний тип Паскаля.
Тип індексів та тип елементів визначають діапазон їх можливих значень тільки для оголошення формальних параметрів-змінних.
Масиви можуть бути багатомірними. Кількість вимірів не обмежується, але сумарна довжина внутрішнього представлення елементів масиву повинна бути менша або рівна 65520 байт.
Оголошення типу "багатомірний масив" має вигляд:
type ім'я_типу = array [T1] of array [T2] of {...} array [Tn] of Tm,
де T1-Tn - типи індексів, а Tm - базовий тип елементів.
Останнє оголошення еквівалентне наступному:
type ім'я_типу = array [T1,T2,...,Tn] of Tm;
Доступ до елементів масиву забезпечується вказанням їх індексів, сумісних з оголошеним індексним типом.
Ввід-вивід масивів здійснюється поелементно за допомогою операторів циклу. Для вводу використиовується процедура Read, а для виводу - процедура Write. Обмеженням на ввід-вивід масивів є значення їх базового типу.
Два масиви називаються тотожніми, якщо вони оголошені разом, або якщо для їх оголошення використовується один і той же ідентифікатор типу. Для тотожніх масивів у Паскалі визначена операція поелементного присвоєння без використання оператора циклу.
Процедури.
Якщо по алгоритму необхідно виводити бiльше нiж одне значення результату, то, як правило, використовуються пiдпрограми-процедури.
В описах програм-процедур i функцiй вiдрiзняються два типи параметрiв - параметри-змiннi i параметри-значення. Слово var перед iдентифiкатором в заголовку пiдпрограми означає параметр-змiнну, так як в процедурах iм'я процедури не використовується для передачi результату, для цього використовуються формальнi параметри-змiннi. Формальнi параметри-змiннi передають свої значення вiдповiдним фактичним параметрам при поверненнi з процедури у викликаючу програму.
ЗАВДАННЯ
Розробити алгоритм та програму на мові Turbo Pascal, в яких використовуються масиви.
Варіант 7. Вiдсортувати по спаданню значень елементи вектора дiйсних чисел шляхом пошуку мiнiмального елемента i запису його в кiнець списку. Потiм ця процедура застосовується до всiх елементiв, крiм останнього, i т.д.;
Блок-схема програми
вивід S
початок
n=6; j:=1
false
j<=(n-1)
buf:=a[j]; a[j]:=a[k]; a[k]:=buf; j:=j+1
k:=j; i:=j+1
false
true
buf:=a[j]; i:=i+1
i<=n
true
i:=j
true
i<=n
false
true
false
buf:=a[i]; k:=i;
a[i] > buf
i:=i+1
ввід масиву a
кінець
Програма
program lab6;
{$APPTYPE CONSOLE}
uses
SysUtils;
const
n=6;
var
a : array[1..6] of real;
i,j,k : integer;
buf : real;
begin
writeln('Vvedit'' ',n,' chysel');
for i:=1 to n do
read(a[i]);
for j:=1 to (n-1) do begin
for i:=j to n do
buf:=a[j];
k:=j;
for i:=j+1 to n do begin
if a[i] > buf then begin
buf:=a[i];
k:=i;
end;
end;
buf:=a[j];
a[j]:=a[k];
a[k]:=buf;
end;
writeln('Posortovani po spadanniu chysla:');
for i:=1 to 6 do writeln(a[i]:13:3);
readln;
readln
end.
Висновок: На цій лабораторній роботі я вивчив способи оголошення, організації, ініціалізації та алгоритми обробки масивів даних, а також оголошення та використання підпрограм-процедур; склав блок-схему виконання програми та написав програму.