
- •М іністерство транспорту та Зв’язку україни Дніпропетровський національний університет залізничного транспорту імені академіка в. Лазаряна
- •49010, Вул. Акад. Лазаряна, 2, Дніпропетровськ, 10 Лабораторна робота n 3 Тема: Типи даних. Організація циклів.
- •1. Мета роботи
- •2. Підготовка до роботи
- •3. Порядок виконання роботи
- •5. Короткі теоретичні відомості
- •5.1. Типи даних
- •5.1.1. Стандартні типи даних
- •5.1.2. Користувацькі типи даних
- •5.2. Вирази, операнди, операції
- •5.2.1. Арифметичні вирази й операції
- •5.2.2. Вирази й операції співвідношення
- •5.2.4. Пріоритет операцій
- •6. Приклади розробки алгоритмів і програм
- •Протокол роботи програми lr1a:
- •Обчислення нод. Розкладаємо числа на прості множники:
- •Протокол роботи програми lr1 b:
- •7. Завдання до лабораторної роботи № 3 Розробити три програми (у кожній по одному з операторів циклу)
- •Лабораторна робота № 4 Тема: Структуровані типи даних. Масив.
- •4. Короткі теоретичні відомості.
- •4.1. Масив. Опис типу
- •4.2. Дії над елементами масиву
- •5. Приклад
- •6. Варіанти індивідуальних завдань до лабораторної роботи
4.2. Дії над елементами масиву
Після визначення масиву, кожний його елемент можна обробити, вказавши ідентифікатор (ім'я) масиву і індекс в квадратних дужках. Наприклад, запис mas2[2], mas3[10], mas4[3,4] дозволяє звернутися до другого елемента масиву mas2, до десятого елемента масиву mas3 і до елемента, що знаходиться в третьому рядку четвертого стовпця масиву mas4.
Елементи масиву називаються індексованими змінними і можуть бути використані так само, як і прості змінні.
Розглянемо типові ситуації, що виникають при роботі з даними типу array. Для цього опишемо три масиви і чотири допоміжні змінні:
var A, B : array [1..4] of real;
C : array [1..10, 1..15] of integer;
i, j , k : integer;
s : real;
Ініціалізація масиву полягає в присвоєні кожному елементу масиву одного і того ж значення, відповідного базовому типу. Найбільш ефективно ця операція виконується за допомогою оператора for: for i :=1 to 4 do A[i]:=0;
Для ініціалізації двомірного масиву звичайно використовуються утрішній оператор циклу з параметром:
for i := 1 to 10 do
for j := 1 to 15 do
C[i,j]:= 0;
Паскаль не має засобів введення - виводу елементів масиву відразу, тому введення і вивод значень проводиться поелементно.
Інформація має бути занесена в масив з клавіатури з використанням звернення до підпрограм
read(список вводу);
readln(список вводу);
де список вводу включає імена змінних (елементів масиву) через кому.
Для друку використовується звернення до підпрограмми
write();
або
writeln();
При цьому треба зазначити, що список вводу може включати в себе окрім імен зміннх константи (числові та текстові) і вирази
for i:=1 to 4 do
begin
write(‘A[‘, i , ‘]=‘); { підказка }
readln (A[i]);
end;
Значення двомірного масиву вводяться за допомогою вкладеного оператора for:
for i := 1 to 10 do
for j := 1 to 15 do
begin
write(‘C[‘, i , ‘,‘, j , ‘]=‘); { підказка }
readln (C[i,j]);
end;
Вивод значень елементів масиву виконується аналогічним чином, але використовуються підпрограми write або writeln.
for i:=1 to 4 do writeln(‘A[‘,i, ‘]=‘,A[i]); {для одномірного масиву}
або
for i := 1 to 10 do {для двомірного масиву}
for j := 1 to 15 do
write(‘C[‘, i , ‘,‘, j , ‘]=‘, C[i,j]);
Копіюванням масивів називається присвоєння значень всіх елементів одного масиву відповідним елементам іншого масиву. Копіювання можна виконати одним оператором присвоєння, наприклад A := B; або за допомогою оператора for: for i := 1 to 4 do A[i]:= B[i];
Слід зауважити, що у першому випадку змінні А і В повинні бути задекларовані за допомогою одного і тогож імені типу.
Приклад:
Const n =10;
Type
Vect = array[1..n] of real;
Var
A, B: Vect
C = array[1..n] of real;
Begin
A:=B;{присвоєння виконано корректно коректно}
C:=B{помилка виконання}
У другому випадкузмінні А і В можуть визначатись окремо, але мати однакові базові типи і ідеентичні типи індексів.
Приклад:
Const
n=10;
M=7;
Var
A:array [1..n] of real;
B:array [1..m] of real;
I:integer;
Begin
For i:=1 to m do
A[i]:=B[i];
End.
У цьому прикладі перші m елементівмасиву А будуть мати значення, які зберігаються в масиві В.
Останні n-m значень масиву будуть не визначені.
Іноді вимагається здійснити пошук в масиві елементів, що задоволь-няють деяким відомим умовам. Хай, наприклад, треба з'ясувати, скільки елементів масиву A мають нульове значення, а також знайти максимальний елемент масиву (його значення і індекс). Для відповіді на це питання введемо додаткові змінні k, max, imax і скористаємося операторами for і if:
k := 0;
max := A[1];imax := 1;
for i := 1 to 4 do
begin
if A[i] = 0 then k := k + 1;
if max < A[i]
then begin max := A[i]; imax:=i; end;
end;
Після виконання циклу змінна k міститиме кількість елементів масиву A з нульовим значенням, а змінні max і imax містять відповідно максимальне значення елемента масиву і його індекс.
Перестановка значень елементів масиву здійснюється за допомогою додаткової змінної того ж типу, що і базовий тип масиву. Наприклад, вимагається поміняти значення першого і четвертого елементів масиву А:
rab := A[1]; { rab - допоміжна змінна)
A[1] := A[4];
A[4] := rab;