- •Інформація та інформаційні процеси Поняття інформації.
- •Одиниці вимірювання інформації.
- •Подання інформації та типи комп'ютерів.
- •Способи пересилання інформації.
- •Будова комп'ютера
- •Пристрої введення-виведення інформації.
- •Процесор
- •Принципи функціонування комп'ютера Фізичні принципи
- •Програмний принцип
- •Поняття про середовища програмування
- •Загальна характеристика мови паскаль
- •Поняття інтегрованого середовища
- •Команда New
- •Команда Open
- •Основи алгоритмізації Алгоритми та їх властивості
- •Блок-схеми
- •Загальна характеристика Паскаль-програми
- •Структура Паскаль-програми
- •Елементи мови Паскаль
- •Прості типи даних
- •Стандартні типи даних
- •Дійсний тип
- •Логічний тип
- •Символьний тип
- •Конструйовані типи
- •Перелічуваний тип
- •Оператори надання значень змінним Оператор присвоєння
- •Уведення-виведення
- •Порядок виконання операцій
- •Складений оператор
- •Стиль запису програми
- •Структури керування
- •Структура послідовного виконання
- •Структура розгалуження
- •Умовний оператор
- •Оператор варіанта
- •Оператор безумовного переходу
- •Структура повторення
- •Цикл з параметром
- •Цикл з передумовою
- •Цикл з післяумовою
- •Ітераційні цикли
- •Обчислення суми знакозмінного ряду із заданою точністю
- •Процедури і функції
- •Процедури з параметрами. Параметри-значення
- •Одномірні масиви
- •Поняття масиву. Одномірний масив та його опис в програмі
- •Обчислення скалярного добутку двох векторів
- •Знаходження найбільшого (найменшого) значень серед елементів масиву
- •Обчислення суми та добутку елементів масиву
- •Перетворення масиву по заданому закону
- •Впорядкування одномірних масивів
- •Впорядкування шляхом вибору
- •Впорядкування обмінами
- •Впорядкування вставками
- •Зливання впорядкованих масивів
- •Двомірні масиви Поняття двомірного масиву та його опис у програмі
- •Ввід та вивід значень елементів двомірного масиву Ввід значень елементів двомірного масиву
- •Вивід значень елементів двомірного масиву a[m,n]
- •Рядковий тип (string)
- •Комбіновані типи Організація комбінованих типів у Паскалі
- •Оператор приєднання
- •Множинні типи Організація множин
- •Файлові типи Організація файлів
- •Підготовчі та завершальні операції
- •Операції уведення-виведення
- •Стандартні файли input і output
- •Модулі Модуль і його структура
- •Стандартні модулі
- •Наближене знаходження коренів рівнянь Дослідження рівняння. Відокремлення коренів
- •Метод поділу проміжку пополам
- •Метод хорд
- •Метод дотичних
- •Чисельне інтегрування
- •Квадратурні формули прямокутників
- •Загальні формули прямокутників
- •Квадратурна формула трапецій
- •Практичні оцінки точності квадратурних формул. Вибір кроку інтегрування
- •Список літератури
Цикл з передумовою
Часто на практиці доводиться стикатися з циклічними обчисленнями, коли кількість повторень циклу наперед невідома, зате задана деяка умова закінчення циклу. Для таких випадків у мові Паскаль є два типи операторів - цикл з передумовою і цикл з післяумовою.
Розглянемо ще раз задачу з гармонічним рядом, проте сформулюємо її так: скільки членів гармонічного ряду потрібно, щоб сума ряду перевищила деяке число - границю, тобто
1+1/2+1/3+…+1/n > границя.
Звичайно, маємо на увазі мінімальну кількість членів. У цій задачі невідома кількість повторень, однак задана умова закінчення - сума > границя. Для розв'язування цієї задачі можна використати цикл з передумовою.
Загальний вигляд оператора циклу з передумовою такий:
while <умова> do <оператор>;
де <умова> - це будь-який логічний вираз, <оператор> -довільний оператор мови Паскаль. Оператор виконується в циклі доти, доки умова має значення true. Як тільки значення умови стане false, відбувається вихід з циклу і виконуватиметься наступний оператор. Оператор у циклі з передумовою може не виконуватись зовсім, якщо умова дорівнює false з самого початку.
Задачу обчислення мінімальної кількості членів гармонічного ряду, сума яких перевищує деяку границю, можна реалізувати за допомогою оператора циклу з передумовою:
sum:=0;
numb:=0;
while sum<=board do
begin
numb:=numb+1;
sum:=sum+1/numb
end;
За допомогою оператора while можна розв’язати задачу табулювання функції (обчислення та виведення на друк всіх значень функції y=f(x), якщо аргумент x функції набуває значень з проміжку [a,b], змінюючись кожен раз на величину кроку h=∆x).
Програма табулювання функції y=sin(3x) на інтервалі [1,3] з кроком 0.2.
program TabFunc;
uses
Crt;
var
x,y:real;
begin
ClrScr;
x:=1;
while x<=3.05 do
begin
y:=sin(3*x);
writeln('x=',x:9:3,' y=',y:9:3);
x:=x+0.2;
end;
readln;
end.
Зазначимо, що структура циклу з передумовою передбачає перевірку умови завершення циклу перед виконанням оператора в циклі, що дає змогу не виконувати цього оператора жодного разу.
Цикл з післяумовою
Іншим способом організації циклічного процесу, коли кількість повторень невідома, є використання оператора циклу з післяумовою. Загальний вигляд цього оператора такий:
repeat
<оператор 1>;
<оператор 2>;
......................
<оператор n>
until <умова>;
де <умова> - це логічний вираз; <оператор 1> ... <оператор n> - будь-які оператори мови Паскаль.
Дія оператора з післяумовою подібна до дії оператора з передумовою (while), однак перевіряється умова закінчення циклу після виконання кожного циклу. Тому цикл з післяумовою виконується мінімум один раз. У ньому виконуються всі оператори, записані між словами repeat і until, які відіграють роль операторних дужок. Оператори виконуються доти, доки умова дорівнює false.
Фрагмент програми обчислення мінімальної кількості членів гармонічного ряду, сума яких перевищує деяку границю, із застосуванням оператора циклу з післяумовою:
sum:=0;
numb:=0;
repeat
numb:=numb+1;
sum:=sum+1/numb
until sum>board;
Задаючи циклічні обчислення за допомогою операторів з перед- і післяумовою, треба враховувати таке:
перед кожним виконанням циклу умова його закінчення повинна бути визначена, тобто мати конкретне значення;
тіло циклу повинно містити оператори, які впливають на умову закінчення, інакше цикл буде виконуватись безкінечно;
умова закінчення циклу повинна врешті-решт виконатися.
Наведемо приклад, коли цикл доцільно організувати за допомогою оператора циклу з післяумовою. Нехай треба вводити по черзі символи і виводити їх, доки не буде введено символ "*".
{Введення і виведення символу до введення символу ‘*’}
program DrucSym;
uses
Crt;
var
sym: char;
begin
repeat
read(sym);
writeln(sym)
until sym = '*'
end.
Тут перевірка умови можлива тільки після введення чергового символу.