- •Міністерство освіти україни український державний морський технічний університет
- •До виконання лабораторних робіт з курсу “основи програмування та алгоритмічні мови” Частина 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 60 47 14 9 16 19 2 13 36 55 54 17 56 27 Масив а після перестановки
27 56 17 54 55 36 13 2 19 16 9 14 47 60 5 26 11 40
Контрольні питання
Яка різниця між фактичними і формальними параметрами?
Що таке глобальна змінна?
Коли використовують параметри-значення, а коли параметри- змінні?
Чим функція відрізняється від процедури?
Які особливості використання процедур та функцій є у мові Turbo Pascal 7.0?
Робота № 7
Розробка та реалізація програми з використанням рядкового типу даних
Ціль роботи: оволодіння навичками складання програми з використанням рядкового типу данихтавиконанняїї усередовищісистеми програмуванняTurbo Pascal 6.0
Завдання:
Визначити дію фрагмента програми і обчислити значення змінних X та Y після його виконання (завдання 7.1).
Скласти програму для виконання наступних дій і виконати її у середовищі системи програмування Turbo Pascal (завдання 7.2).
Короткі теоретичні відомості
Рядок - це послідовність довільних символів, які при використанні беруться в апострофи. В рядку може міститися від 0 до 255 символів. Опис рядкового типу складається з ключового слова string, за яким в квадратних дужках може бути записано максимальну кількість символів, яку може мати змінна описуваного типу. Наприклад,var SI: string[ЗО] ;
Символи рядка мають номери від 0 до 255, причому ASCII код символу з номером 0 дорівнює поточній довжині даного рядка. До окремого символу рядка можна звернутися за допомогою індексу, так само, як при звертанні до елемента масиву.
Для контролю правильності діапазону значень номера символу призначена директива компілятора {$R+}. Якщо встановленатака директива, то при спробі доступу до елемента, наприклад,S[76| масиву з попереднього приклада, буде зафіксована помилка. За замовчуванням встановлюється директива компілятора тобто
перевірка не проводиться.
Над даними рядкового типу визначено операції додавання (конкатенації), відношення і оператор присвоєння.
Зчеплення двох чи більше рядків в один реалізується за допомогою операції конкатенації, яка позначається знаком “+”. Додаватися можуть рядки довільної довжини, але необхідно, щоб довжина рядка-результату не перевищувала 255. Так, у результаті конкатенації ’Turbo ’-(-’Pascal ’+”+’v.6.0’ маємо’Turbo Pascal v.6.0’. Від- значемо:пара апострофів, щойдуть підряд, зображає порожній символ. Він не відображається на екрані і не має порядкового номера.
Довільні два рядки можна порівнювати один з одним за допомогою операцій відношення (=, о, <, >, <=, >=). Порівняння рядків відбувається зліва направо, до першого відмінного символу. Два рядки рівні, якщо вони мають однакову довжину і складаються з однакових символів, що йдуть в одному порядку. Меншим буде той
рядок, в якому символ, що не збігається, має менший порядковий (ординальний) номер. Якщо рядки мають різну довжину, але в спільній частині збігаються, то меншим є коротший рядок.
False
TrueРезультат
Оператор присвоєння використовується для присвоєння рядковій змінній результату виразу рядкового типу. Якщо вираз рядкового типу містить більше символів, ніж може містити рядкова змінна, то зайві праві символи відкидаються. В операторі присвоєння допускається змішування символьного і рядкового типів. Якщо при цьому символьній величині присвоюється рядок, поточна довжина якої більше 1, то виникає помилка при виконанні.
Для обробки рядків є стандартні процедури і функції При подальшому описі цих процедур і функцій під типом anystringбудемо розуміти будь-який рядковий тип. Для обробки рядків є такі стандартні процедури:Delete,Insert,Str, Val.
Delete(var S: anystring; N,M: integer)- вилученняM символів з рядкаS, починаючи з символуN. ЯкщоNбільше довжини рядка, то не відбувається ніяких дій. ЯкщоN+M більше довжини рядка, то вилучаються всі символи до кінця рядка. ЗначенняN повинно лежати в межах 1..255. Так, після виконання наступного фрагмента програми:S:=’Turbo’; Delete(S,2,3); зміннаS має значення ’То’.
Insert(S:anystring;varR:anystring;N:integer) - вставлення рядкаSв рядокR перед символом з номеромN. ЯкщоNбільше довжини рядка, то відбувається конкатенаціяR іS. Якщо довжина результату перевищує максимальну довжину рядкаR, то вR залишаються тільки ліві символи. ЗначенняNповинно леясати в межах 1..255. Так, після виконання наступного фрагмента програми:R:=’Turbo’; Insert(’.com’,R,6); зміннаR має значення ’Turbo.com’.
Str(N:integer{a6oreal};varS:anystring) - перетворення цілого або дійсного значенняNу рядокS. ПісляNможе бути вказаний формат, як у процедуріWrite. Якщо у форматі вказано кількість позицій, яка більша за довжину рядкаS, то зайві праві символи будуть відкинуті. Наприклад, після виконання оператораStr(13:3,S); зміннаS має значення ’ 13’.
Val(S:anystring;var N: integer{o6o real}; var 1er: integer)- перетворення рядкаS y числоN. РядокS повинен бути зображенням деякого числа і не повинен містити початкових і кінцевих пропусків. Якщо перетворення відбулось успішно, то Іег=0, в противному разі значенняNне визначене, а змінна 1er дорівнює номеру першого помилкового символу в рядкуS. Так, після виконання
оператора Val(’3.14’,N, 1er) зміннаNмає значення 3.14 (дляNдійсного типу, Іег=0) і не визначена, якщоNмає цілий тип (Іег=2).
Для обробки рядків є такі стандартні функції: Length,Pos,Copy,Concat.
Length(S:anystring):byte- результатом є поточна довжина рядкаS, тобто кількість в ньому символів. Наприклад, результатом виразуLength(’Turbo’) є 5.
Pos(S,T:anystring): byte - результатом є номер символу, починаючи з якого рядокS входить в рядок Т. Якщо входження немає, то результатом буде 0. Так, результатом виразуPos(’ur’,’Turbo’) є 2.
Copy(S:anystring;N,M:integer):anystring- результатом є рядок
з М символів рядка S, починаючи з символу з номеромN. ЯкщоN більше довжини рядкаS, то результатом функції буде порожній символ. ЯкщоN+M більше довжини рядкаS, то результатом функції будуть кінцеві символи, починаючи із символу з номеромN. ЗначенняN повинно лежати в межах 1..255. Наприклад, результатом виразуCopy(’Turbo’,3,2) є ’rb’.
Concat(Sl,S2,...,Sn:anystring):anystring- конкатенація рядківSl,S2,...,Snв один у вказаному порядку. Якщо довжина рядка- результату перевищить 255, то виникне помилка при виконанні. Так, результатом виразуConcat(’TurVbo’) є’Turbo’.