- •Міністерство освіти україни український державний морський технічний університет
- •До виконання лабораторних робіт з курсу “основи програмування та алгоритмічні мови” Частина 1 миколаїв - 1999
- •© Український державний морський технічний університет, 1999 вступ
- •Робота № 1 Розробка та реалізація програми з лінійною структурою
- •Короткі теоретичні відомості
- •Завдання 1.1
- •Завдання 1.2 Представити математичний запис виразу і показати порядок дій.
- •Завдання 1.3
- •Приклад виконання роботи Завдання 1.1. Данні математичні вирази записати мовою Pascal:
- •Розв’язання:
- •Розв’язання:
- •Розв’язання:
- •Контрольні питання
- •Короткі теоретичні відомості
- •Завдання 2.1
- •Приклад виконання роботи
- •Короткі теоретичні відомості
- •Завдання 3.1
- •Завдання 3.2
- •Приклад виконання роботи
- •Розв’язання:
- •Розв’язання:
- •3.4.2 Присвоїти хнове значення, яке дорівнює старому значеннюхплюс крокh.
- •Контрольні питання
- •Робота № 4
- •Короткі теоретичні відомості
- •Завдання 4.1
- •Завдання 4.2
- •Завдання 4.3
- •Приклад виконання роботи
- •Розв’язання:
- •Розв’язання:
- •2.5. Надрукувати елементи масивуапісля перестановки.
- •Контрольні питання
- •Робота № 5
- •Короткі теоретичні відомості
- •Завдання 5.1
- •Завдання 5.2
- •Завдання 5-3 Оцінити ефективність алгоритму бінарного пошуку (непарні варіанти) та т-блочного пошуку (парні варіанти) за завданням 4.3.
- •Розв’язання:
- •Розв’язання:
- •Контрольні питання
- •Робота № 6 Розробка та реалізація програми з використанням процедур та функцій
- •Короткі теоретичні відомості
- •Процедура має ту саму структуру, що й програма, і складається
- •Завдання 6.1
- •Завдання 6.2
- •Розв’язання:
- •Розв’язання:
- •40 11 26 5 60 47 14 9 16 19 2 13 36 55 54 17 56 27 Масив а після перестановки
- •Результат
- •Завдання 7.1
- •Завдання 7.2
- •Приклад виконання роботи
- •Розв’язання:
- •Розв’язання:
- •Контрольні питання
- •Робота № 8
- •Завдання 8.1
- •Завдання 8.2
- •Розв’язання:
- •40 11 26 5 60 47 14 9 16 19 2 13 36 55 54 17 56 27 Масив а після перестановки
- •Контрольні питання
- •Список рекомендованої літератури
- •Алфавіт мови Turbo Pascal 6.0 (7.0)
- •Службові слова мови Turbo Pascal 6.0 та 7.0
Розв’язання:
Цей фрагмент програми находить найменший елемент одновимі- рного масиву (вектора) а={40; 11; 26; 5}, х=min а„ (і=1, 2, 3, 4). Після виконання цього фрагмента Х=5.
Завдання 4.2. Скласти програму перестановки елементів масиву ав зворотному порядку і виконати її у середовищі системи програмуванняTurbo Pascal 6.0, якщо елементи масиву визначаються за формулою а,+1= (37-0,+3)mod 64. Значення а, дорівнюєN (номеру варіанта за списком групи);ізмінюється від 1 до 17.
Розв’язання:
Постановка задачі
Скласти програму перестановки елементів масиву ав зворотному порядку на мовіTurbo Pascal, якщо елементи масиву визначаються за формулою а1т1= (37я,+3)mod 64. Значення а, дорівнює 40; і змінюється від 1 до 17.
Алгоритм розв’язання задачі
Алгоритм розв’язання задачі можна представити у вигляді такої послідовності дій:
Ввести елементи масиву а;
Визначити М - кількість перестановок елементів масиву а, як результат цілочислового ділення числа елементів масивуN на 2;
Присвоїти J - номеру поточного елемента масиву, який переставляється на місце елемента з меншим номером - значенняN;
Повторювати М разів наступні дії (1= 1, 2, ..., М):
Присвоїти X - змінної для тимчасового зберігання елемента з меншим номером - значення 1-го елемента масиву а;
Присвоїти 1-му елементу масиву азначенняJ-ro елемента;
Присвоїти J-му елементу масивуазначення X;
Зменшити значення J на 1;
2.5. Надрукувати елементи масивуапісля перестановки.
Запишемо алгоритм розв’язання задачі мовою Turbo Pascal, позначив масивачерез А, елементи якого мають типInteger. Змінні
J,N, М, X мають типInteger. Врахував те, що оскільки кількістьповторень тіла циклу заздалегідь відома, то логічнішевживати циклforз параметром циклу І (типуInteger).
Текст програми program LR4;
{програма перестановки елементів масиву А[1..N]) uses Crt; const N=18;
var A: array[l..N] of integer; I, J, M, X : integer; begin
ClrScr; Writeln(' Вводимо масив A[1..',N:2,']');
A[ 1] :=40 ;
for I :=1 to N-1 do A[I + 1]: = (37*A[I]+3) mod 64; for I:=l to N do Write(A[I): 3); Writeln;
M:=N div 2; J:=N; for I :=1 to M do begin
X:=A[I]; A[I]:=A[J]; A[J]:=X; J:=J-1 end;
Writeln(' Масив А після перестановки'); for I:=l to N do Write(A[I]:3); Writeln; end.
Результати роботи програми
Вводимо масив А[1..18]
40 11 26 5 60 47 14 9 16 19 2 13 36 55 54 17 56 27
Масив А після перестановки
МЕТОДИЧНІ ВКАЗІВКИ 1
аЬ= А] В і + А2 '^2+ Aj -В3 , (1*1) 14
max(S) maxjg' j. 26
avg (Я) = І1/,<7г9 31
' (>[]{}#$ Л ; 64
Створити масив a за формулою аі+1=(37а,+3)mod 64. Значення Яі дорівнює 40;ізмінюється від 1 до 17; а18=30.
Скласти програму послідовного пошуку ключа k в масиві а, якщоfe=4l.
Обчислити avg за формулою (4.2).
Якщо можливо, зменшити avg, розміщуючи елементи, що зустрічаються частіше, на початку масиву, та обчислитиavg.
Зробити висновки щодо поліпшення ефективності алгоритму послідовного пошуку.
Текст програми
program LR4_2;
(програма послідовного пошуку ключа К в масиві А[1..N]} uses Crt; const N=20;
var A: array[l..N] of integer; I, M, K: integer; begin
ClrScr; Write!1ввести ключ K='); Readln(K);
Writeln(1 Вводимо масив A[1..1,N:2,'J1);
A[1] :=40; A[18]:=30; (створення масиву)
for I:=1 tc N-2 do A[I+1];=(37*A[I]+3) mod 64;
for I:=l to N do Write(A[I]:3)
Writeln; M:=0; (послідовний пошук) for I:=l to N do if At I]=K then
begin Writeln(' A[',1:2, '] = ',A[I]:3); M:=l end; if M=0 then
Writeln(’ Ключ 1,K,’ в масиві не зустрічається1);
end.
Результати роботи програми
Ввести ключ К=41 Вводимо масив А[1..18]
40 11 26 5 60 47 14 9 16 19 2 13 36 55 54 17 56 ЗО
Ключ 41 в масиві не зустрічається
Обчислення avg
avg (Я) = І1/,<7г9
Зменшення avg
Зменшити avg не можливо тому, що частота використання кожного елемента масиву однакова,/=1/18.
Висновки
Поліпшити ефективність послідовного пошуку ключа k=41 вмасиві не можливо тому, що частота використання кожного елемента масиву однакова.