- •Поняття алгоритму та його основні властивості.
- •Поняття двовимірного масиву, його означення на мові Pascal.
- •Способи опису алгоритму.
- •Алгоритмічна мова
- •Базові операції обробки двовимірного масиву на мові р.
- •Алгоритмічна структура розгалуження
- •Сортування двовимірного масиву
- •Алгоритмічна структура повторення
- •Поняття рядка та оголошення змінних рядкового типу на мові Pascal
- •Структура програми на мові Pascal
- •Операції над рядками та рядкові вирази мови Pascal
- •Прості типи даних у мові Pascal
- •Запис та його оголошення на мові Pascal
- •Константи мови Pascal
- •Доступ до компонентів та операції над запиcами мови Pascal
- •Змінні мови Pascal
- •Масиви записів мови Pascal
- •Арифметичний вираз мови Pascal
- •Опис та виконання метки у мові Pascal
- •Оператор присвоєння мови Pascal
- •Логічний вираз мови Pascal
- •Процедура введення даних мови Pascal
- •Цикл із передумовою while мови Pascal
- •Процедура виведення даних мови Pascal
- •Цикл з післяумовою repeat мови Pascal
- •Команда вибору із двох альтернатив мови Pascal
- •Типи файлів й оголошення файлових змінних мови Pascal
- •Вкладеність конструкцій вибору мови Pascal
- •Установка відповідностей між логічним і фізичним файлами мови Pascal
- •Операторний блок мови Pascal
- •Відкриття і закриття файлів мови Pascal
- •Команда поліваріантного вибору мови Pascal
- •Зчитування і запис текстових файлів мови Pascal
- •Цикл із лічильником for у мові Pascal
- •Стандартні функції мови Pascal
- •Процедури користувача мови Pascal
- •Поняття одновимірного масиву та його визначення у мові Pascal
- •Функції користувача мови Pascal
- •Базові операції обробки одновимірного масиву мови Pascal
- •Сортування одновимірного масиву мови Pascal
- •Оператор безумовного переходу у мові Pascal
Команда поліваріантного вибору мови Pascal
Узагальненням альтернативного розгалуження є алгоритмічна конструкція полі-варіантного вибору, що дозволяє виконувати одну з декількох алгоритмічних гілок залежно від значення деякого виразу. У мові Pascal цю алгоритмічну конструкцію реалізовано оператором вибору. Наведемо його синтаксис:
case <селектор> of <список констант1>:<оператор1>; <список констант2>:<оператор2>; ..... [else <операторn>]; end;
Тут case, of, else — це зарезервовані слова, що перекладаються як «випадок», «з», «інакше»; <селектор> - змінна або вираз, який має довільний перелічуваний тип; <список констант> — перелік розділених комами значень того самого типу, що і селектор; <оператор> - будь-який оператор; end - кінець оператора case.
Оператор вибору виконується за таким алгоритмом. Спочатку обчислюється значення виразу-селектора. Потім вибирається той список констант, до якого належить отримане значення, виконується відповідний оператор і на цьому дія оператора case завершується. Якщо поточне значення селектора не збігається з жодною з констант вибору, то виконується гілка else, а якщо її немає, то виконання оператора вибору завершується.
Тип селектора має бути перелічуваним. Неприпустимим є використання селекторів дійсних або структурованих типів.
Зчитування і запис текстових файлів мови Pascal
Зчитування даних із текстового файла здійснюється процедурами Read та Readl n за таким синтаксисом:
Read(<файлова змінна>;<список введення>); Readln(<файлова змінна>;<список введення>);
Тут <список введення> є переліком змінних символьного, рядкового, цілочислового або дійсного типу.
Після зчитування певного компонента файловий покажчик зсувається до наступного компонента. Якщо виконується зчитування з файла до змінної типу char, то процедура Read зчитує один символ. Коли досягнуто кінця рядка, результатом зчитування є символ кінця рядка, #13, а коли досягнуто кінця файла, зчитується символ кінця файла, #26.
Під час зчитування значення до змінної цілочислового або дійсного типу спочатку виділяється підрядок, в якому видалені всі ведучі пробіли, символи та-буляції (#9) і маркери кінця рядка. Далі зчитуються всі символи, що утворюють число зі знаком. Зчитування припиняється при виявленні першого пробілу, маркера кінця рядка або символу табуляції. Зчитаний рядок цифрових символів перетворюється на число, що присвоюється відповідній змінній. Наступна операція зчитування починається з пробілу (маркера кінця рядка, символу табуляції тощо).
Якщо виділений підрядок містить нецифрові символи, то виникає помилка введення-виведення Error 106: Invalid numeric format (Некоректний числовий формат).
Під час зчитування даних до змінної типу string процедура Read зчитує всі символи до маркера кінця рядка. Якщо кількість символів рядка у файлі більша за кількість, вказану в оголошенні рядкової змінної, то зайві символи не зчитуються. Якщо процедурою Read певний рядок було зчитано повністю, то під час наступного її виклику зчитування починається з маркера кінця рядка, а значить, буде зчитано рядок нульової довжини. Отже, процедура Read не переводить файловий покажчик на наступний рядок символів і тому її не можна використовувати для зчитування послідовності рядків.
Процедура Readl n зчитує всі символи рядка із символом його кінця включно, що забезпечує переведення файлового покажчика на новий рядок. Процедуру можна викликати без параметрів, що спричинить переведення файлового покажчика на початок наступного рядка файла без зчитування попереднього рядка. Отже, для введення даних із одного рядка файла використовують процедуру Read, для введення даних із різних рядків — процедуру Read! n. Застосовуючи процедуру Readl n для зчитування чисел, слід враховувати, що після зчитування останньої цифри числа всі символи тексту, що залишилися до маркера кінця рядка, будуть пропущені, і доступним стане перший символ наступного рядка текстового файла.
Запис до текстового файла здійснюється за допомогою процедур Write та Writeln, що мають такий синтаксис:
Write(<файлова змінна>;<список виведення>); Writeln(<файлова змінна>;<список виведення>);
Тут <файлова змінна> — змінна типу text; <список виведення> — перелік змінних або виразів символьного, рядкового, цілочислового, дійсного чи логічного типу.
Зауважимо, що процедура запису до текстового файла відрізняється від процедури виведення на екран лише тим, що першим її параметром є файлова змінна. Тому всі особливості застосування процедур Write і Writeln, що були розглянуті в розділі 2.5.3, зберігаються і в разі виведення даних до текстового файла.
Різниця між процедурами Write та Writeln полягає в тому, що рядок, який записується до файла за допомогою процедури Writeln, завершується символом кінця рядка. Якщо процедура Writeln використовується без списку виведення, то до файла записується порожній рядок.
Під час зчитування з текстового файла кількість його рядків зазвичай є невідомою. Тому для зчитування з файла всіх даних потрібно використовувати функцію Eof, яка визначає, чи досягнуто кінця файла. Наведемо синтаксис цієї функції.
Еоf(<файлова змінна>) : boolean;
Дана функція повертає значення булевого типу. Якщо файловий покажчик посилається на кінець файла, буде повернено значення true. Отже, послідовне зчитування всіх компонентів із файла, розмір якого невідомий, може бути реалізоване таким циклом:
While not eof(f) do Readln(f,s):
Функція Eoln визначає, чи посилається файловий покажчик на маркер кінця рядка. Наведемо її синтаксис:
Еоln(<файлова змінна>) : boolean;
Якщо поточним символом є маркер кінця рядка, функція Eoln повертає значення true.
