Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
4 основи програмування книга.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
1.77 Mб
Скачать

7.2. Циклічні програми. Складність циклічної програми. Оптимізація циклічних програм

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

Складність Тц найпростішої циклічної програми, що містить арифметичний цикл, визначається формулою Tц = NTb де N - кількість повторень циклу, Tb - складність тіла циклу. Якщо арифметичний цикл завершується нормально, то N = |Ord(MaxVal) - Ord(MinVal)|, де MaxVal, MinVal – нижня і верхня межі параметра. Таким чином, оптимізація програми за часом полягає у зменшенні складності тіла циклу і (якщо це можливо) зменшенні кількості повторень циклу.

Для оптимізації тіла циклу використовують наступні прийоми:

Попереднє (поза циклу) обчислення підвиразів, значення яких не змінюється в циклі. Наприклад, у програмі Tabulation до входу в цикл обчислено значення Coef=1/Sqrt(Pi);

Використання співвідношень, що зв’язують змінні, які змінюються в циклі, для обчислень однієї з них через інші. У програмі SeriesSumma змінні u1 і u2 - члени ряду - визначені як функції від х, і:

u1(x, i) = xi / i2; u2(x, i) = xi / i3;

Тому має місце рівність u2*i = u1, яка використовується для обчислення u2.

7.3. Обмежені типи

Обмежений тип у мові Паскаль можна визначити, накладаючи обмеження на вже визначений скалярний тип – його називають базовим скалярним типом. Обмеження визначаються діапазоном – мінімальним і максимальним значеннями констант базового скалярного типу. Обмеження стандартного типу Real не допускається.

Синтаксична діаграма обмеження має вид:

О бмежений

тип

Наприклад:

а) Type

Day = 1..30; - обмеження на тип integer;

б) Digit = ‘0’..’9’; - обмеження на тип char;

в) Type

Weekday = (Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday);

Workday = Monday..Friday; - обмеження на скалярний тип Weekday.

Базовий скалярний тип визначає допустимість всіх операцій і відношень над значеннями обмеженого типу. Обмежені типи дають можливість описувати алгоритм у більш наочній формі. Крім цього, у процесі трансляції і виконання програми з’являється можливість економити пам’ять і здійснювати контроль присвоювань.

Приклад 7.5.

Program Time_Table;

Type

Weekday = (Monday, Tuesday, Wednesday, Thursday, Friday,

Saturday, Sunday);

Workday = Monday .. Friday;

Var

i : Workday;

Begin

For i := Monday to Friday do

Case i of

Monday: Writeln(‘фізика‘, ’інформатика‘, ’історія’);

Tuesday, Friday: Writeln(‘мат. аналіз‘,’історія‘, ‘англійська’);

Wednesday, Thursday: Writeln(‘фізика ‘,’алгебра‘,’інформатика’)

end

End.

7.4. Складні (складені) типи

У мові Pascal реалізований механізм визначення складних (складених) типів даних. Новий тип даних визначається як структурована сукупність даних-компонент стандартних або раніше визначених типів. Оскільки типи компонент можуть бути також складеними, можна будувати складні ієрархії типів. Методи структурування даних у мові дозволяють будувати масиви, записи, множини і файли. Ці методи називають статичними, оскільки їх опис здійснюється попередньо. Більш складні структури можна створити динамічно – у процесі виконання програми – за допомогою посилань. При вивченні складних типів основна увага приділяється способам конструювання даного і способам доступу до компонентів даного.