Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Programuv_good.doc
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
990.21 Кб
Скачать
  1. Наявність умови зупинки, при якій деякому параметру рекурсії передається деяке значення рекурсії.

  2. Чітко визначений алгоритм, при обчисленні кожного вищого рівня рекурсії через попередній рівень.

В загальному випадку рекурсивну систему можна описати так:

Нехай f(x,y), x, y – вхідні параметри алгоритму, реалізує повторювальний алгоритм. І є ще дві алгоритмічні функції з строго визначеним алгоритмом, тоді ця рекурсивна функцію можна побудувати так.

Таким чином, якщо вдасться певним чином побудувати алгоритм g(x) ma h(x, y, z), то на основі останнього співвідношення реалізується будь-який рекурсивний алгоритм. Для алгоритму обчислення факторіалу

g(x)=1

h(x, y, z) = y*f(y-1).

Підпрограми в якості параметрів інших підпрограм

Розглянуті раніше процедури та функції отримували в якості фактичних параметрів величини стандартних типів або структурованих, в ряді випадків виникає потреба передавати в якості параметра не лише дані, а й інші підпрограми.

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

Під функціональним або процедурним типом розуміється повна сукупність всіх функцій( процедур), які мають однаковий заголовок (інтерфейс).

Тіло кожної із функцій або процедур може бути відмінним, але всі вони повинні мати однакову кількість, порядок, тип параметрів, а для функцій тип результату.

Оголошуються функціональні (процедурні) типи в розділі type через службові слова procedure, function.

TYPE

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

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

Наприклад

TYPE

funct1= function(x:real): real;

func2=function(x, y:integer): boolean;

proc1=procedure(p:integer; var f:longint);

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

VAR

f1: funct1;

f2: funct2;

p1:proc1;

Присвоєння виду f1:=sin(x) не є коректним, оскільки змінна має тип function, а змінна х real.

ТЕМА: ФАЙЛИ

Файлові змінні

Розглянуті раніше способи структурування даних мають суттєвий недолік: після завершення роботи програми всі дані пропадають в оперативній пам’яті, крім цього обмеження розміру статичної частини оперативної пам’яті, де зберігаються всі змінні, які обмежені в програмі ( менше 64 кбайт), накладається обмеження на кількість структурованих даних.

Наприклад

Для бази даних про студентів з попереднього прикладу можна використати масив, розмір якого k визначається із співвідношення k*321<=65530, k<=204.

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

Файли – пойменовані ділянки пам’яті, які містять деякі дані.

Традиційно файли зберігаються на дисках – дискові файли. Файли можуть розміщуватися в оперативній пам’яті на віртуальних дисках.

В програмі файли представляються спеціальними змінними – файловими. Ця змінна є свого роду буфером між конкретним файлом на диску, з яким вона зв’язана, і програмою.

Одна і та ж змінна може бути зв’язана із різними файлами, але не одночасно.

В залежності від способу структурування даних в Pascal відрізняють три види файлів і файлових змінних:

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]