Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ответы АиП.docx
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
164.48 Кб
Скачать
  1. Команда поліваріантного вибору мови Pascal

Узагальненням альтернативного розгалуження є алгоритмічна конструкція полі-варіантного вибору, що дозволяє виконувати одну з декількох алгоритмічних гілок залежно від значення деякого виразу. У мові Pascal цю алгоритмічну конструкцію реалізовано оператором вибору. Наведемо його синтаксис:

case <селектор> of      <список констант1>:<оператор1>;      <список констант2>:<оператор2>; .....      [else <операторn>]; end;

Тут case, of, else — це зарезервовані слова, що перекладаються як «випадок», «з», «інакше»; <селектор> - змінна або вираз, який має довільний перелічуваний тип; <список констант> — перелік розділених комами значень того самого типу, що і селектор; <оператор> - будь-який оператор; end - кінець оператора case.

Оператор вибору виконується за таким алгоритмом. Спочатку обчислюється значення виразу-селектора. Потім вибирається той список констант, до якого належить отримане значення, виконується відповідний оператор і на цьому дія оператора case завершується. Якщо поточне значення селектора не збігається з жодною з констант вибору, то виконується гілка else, а якщо її немає, то виконання оператора вибору завершується.

Тип селектора має бути перелічуваним. Неприпустимим є використання селекторів дійсних або структурованих типів.

  1. Зчитування і запис текстових файлів мови 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.