Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ВІдповіді на теоретичні питання з основ програм...doc
Скачиваний:
4
Добавлен:
20.09.2019
Размер:
299.01 Кб
Скачать
  • Процедури. Формальні і фактичні параметри. Параметри - значення і параметри - змінні. Порядок виклику процедур.

Процедура – це підпрограма, яка має будь-яку кількість вхідних і вихідних даних та включає обчислення і передачу в програму одного або більше результатів. Процедура може бути описана без параметрів і з параметрами. Для передавання даних до процедури і отримання з неї результатів використовуються формальні і фактичні параметри.

Загальний вигляд опису процедури :

procedure <ім’я_процед.>(<список_парам.>);

Begin

<тіло_процедури>

end;

Формальними параметрами називаються змінні описані у заголовку процедури чи функції та ініціалізація яких відбувається при виклику процедури чи функції. Формальні параметри процедури поділяються на параметри – значення і параметри – змінні.

Параметри - значення --- параметри, перед якими не стоїть службове слово var; вони приймають значення з програми.

Параметри – змінні – змінні вказуються після службового слова var і призначені для передавання програмі значень обчислених у процедурі.

Фактичними параметрами є змінні, що при виклику процедури чи функції записуються у круглих дужках після її назви і можуть або передавати свої значення у процедуру чи функцію, або набувати значень, що передаються у точку повернення процедури.

Для виклику процедури потрібно записати її ім’я і якщо потрібно у круглих дужка через кому потрібно записати фактичні параметри, типи яких повинні співпадати з типами формальних параметрів.

  • Процедури роботи з файлами в мові Паскаль.

Файл представляє собою послідовність компонент однакового типу.

Файл має такі властивоті:

1) файл зберігається на диску;

2) при описі файлу кількість елементів файлу не вказується;

3) елементи файлу не мають індексів.

В будь-який момент часу доступною є тільки одна компонента файла на яку встановлено вказівник файла. Цей вказівник автоматично переміщується на наступну компоненту файла, при записуванні чи читанні поточної компоненти файлу.

При роботі з файлами використовується стандартна функція EOF(F), де F - ім'я файла. Якщо вказівник файла перемістився за останній компонент (готовність до запису), то ця функція приймає значення TRUE, інакше — FALSE.

Мова програмування Паскаль допускає два доступи до вмістимого файлів: послідовний доступ, при якому з проточного елемента файла можна перейти тільки на наступний, і прямий, що дає можливість переходу на заздалегідь визначений блок файла.

Реалізація прямого доступу здійснюється за допомогою функцій і процедур Filesize, Filepos, Seek.

Функція

Filesize(var f) : Longint

повертає кількість блоків в відкритому файлі f.

Функція

Filepos(var f) : Longint

повертає поточну позицію в файлі f. Позиція в файлі - це номер умовної межі.

Процедура

Seek(<ім’я файлової змінної>,<номер елемента>)

змінює положення вікна, поміщаючи його на елемент файлу з заданим номером.

Всі основні процедури і функції обробки файлів, працюють тільки з логічними файлами, попередньо пов’язані з фізичним файлом. Це є процедури і функції Assign, Reset, Rewrite, Close, Rename, Erase, Eof, Ioresult, Flush, Read, Write.

Процедура

Assign(var f; Filename : String)

зв'язує логічний файл f із фізичним файлом, повне ім'я якого задано в стрічці Filename.

Процедура

Reset(var f)

відкриває логічний файл f для наступного читання даних.

Процедура

Rewrite(var f)

відкриває логічний файл f для наступного запису даних ( відкриває вихідної файл).

Процедура

Close(var f)

закриває відкритий до цього логічний файл.

Логічна функція

Eof(var f) : Boolean

повертає значення True, коли при читанні досягнуть кінця файлу.

Процедура

Rename(var f; Newname : String)

дозволяє перейменувати фізичний файл на диску, зв'язаний із логічним файлом f. Це можливо лише після закриття файлу.

Процедура

Erase(var f)

знищує фізичний файл на диску, який був пов'язаний із файловою змінною і є закритим f.

Функція

Ioresult : Integer

повертає ціле число, відповідне коду останньої помилки вводу-виводу.

Процедура

Flush(<ім’я файлової змінної>)

«скидає» з буферу останні елементи в файл під час записування.

Процедура

Read(<ім’я файлової змінної>, <перелік змінних, що одержать значення файлової змінної>)

записує значення активного елемента файлу у змінні, що є у переліку змінних.

Процедура

Write(<ім’я файлової змінної>,<ім’я змінної>)

Записує у активний елемент значення змінної.

  • Використання функцій в мові С++.

Функція - це сукупність оголошень і операторів, зазвичай призначена для вирішення певного завдання. Кожна функція повинна мати ім'я, яке використовується для її оголошення, визначення і виклику. У будь-якій програмі на СІ повинна бути функція з ім'ям main (головна функція), саме з цієї функції, в якому б місці програми вона не знаходилася, починається виконання програми.

З використанням функцій в мові СІ зв'язано три поняття:

  • визначення функції (опис дій, що виконуються функцією),

  • оголошення функції (завдання форми звернення до функції),

  • виклик функції.

Синтаксис визначення функції такий:

<тип функції> <ім’я функції>(<список формальних параметрів>);

{ тіло функції return <ідентифікатор змінної, значення якої передається функції>;};

Тіло функції є складним оператором (блоком), котрий об'єднує описи внутрішніх змінних функції та оператори, котрі реалізують функцію. Визначення використовуваних функцій можуть слідувати за визначенням функції main, перед ним, або знаходиться в іншому файлі.

Виклик функції - це вираз, значенням якого є результат, що виробляється функцією. Якщо вираз функції використовується як окремий оператор (тобто не у виразі), то значення, котре повертає функція втрачається. Якщо функція описана з типом void, то її значення вважається невизначеним.

Існує два способи виклику функцій:

<ім'я функцїї> (<список фактичних параметрів>)

або

(*<вказівник на функцію>)(<список фактичних параметрів>)

Вказівником на функцію є деякий вираз, значенням якого є адреса цієї функції.

При виклику функції локальним змінним відводиться пам'ять в стеку і проводиться їх ініціалізація. Управління передається першому операторові тіла функції і починається виконання функції, яке продовжується поки не зустрінеться оператор return або останній оператор тіла функції. Управління при цьому повертається в точку, наступну за точкою виклику, а локальні змінні стають недоступними.

Функція може змінювати значення змінних, що передаються у функцію тільки тоді коли формальним параметрам є змінна типу покажчик, якій передаються адреси цих змінних.

Оператор повернення використовується для того, щоб можна було завершити виконання функції в довільному місці.

В мові Сі використовуються два типи оператора повернення:

  • один для повернення управління з функцій (котрі не повертають значень return;),

другий для повернення значень ( return <вираз>);

  • Визначення функції. Порядок організації функцій. Виклик функції.

Алгоритм рішення задачі проектується шляхом декомпозициi всього завдання в окремі під задачі, що реалізуються у вигляді підпрограм. Підпрограма - це послідовність операторів, що визначені і записані в одному місці програми, проте їх можна викликати для виконання з однієї або декількох точок програми. В мові Паскаль існують два типи підпрограм - процедури і функції.

Опис підпрограми-функції повинен бути в розділі опису процедур і функцій. Загальний вигляд опису функций:

Function <ім’я_функції>(<список_формал._парам. Та їх типів>):<тип_функції>

Var <опис локальних мінних>;

Begin

<тіло_функції>

end;

Іменем функції може бути довільний ідентифікатор. Список параметрів містить перелік ідентифікаторів змінних – параметрів функції, які використовуються для передачі даних з програми в функцію.

Внутрішня структура функції аналогічна до структкри програми, тобто спочатку ідуть описи, а потім після слова begin оператори, що виконуються. Функції можуть містити описи інших підпрограм. В тілі функції повинен бути принаймні один оператор типу

<ім’я_функції>:=<вираз>;

Виклик функції здійснюється так:

<ім’я змінної, якій передається значення функції>:=<ім’я_функції>(<список змінних, значення яких передаються в функцію>);

  • Ввід-вивід файлів в мові С++.