Що таке трасування

Для операторів, що виконують перевірку умов (if, for і т. П.) В стовпці «Умова» прийнято вказувати результат перевірки. В даному випадку в циклі for перевіряється умова продовження циклу.
Символи «. »Підкреслюють, що значення лічильника циклу після виходу з циклу вважається невизначеним.

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

Обчислення суми ряду

Розглянемо задачу обчислення суми ряду:
1 / (1 * 1) + 1 / (2 * 2) + 1 / (3 * 3) + 1 / (4 * 4) + 1 / (5 * 5)

Тут ми маємо ряд дробів, у яких в знаменниках записані квадрати чисел від 1 до 5.
Розглянемо кожну дріб як твір двох дробів, наприклад:
1 / (3 * 3) = 1/3 * 1/3

У загальному вигляді це можна записати так:
1 / (N * N) = 1 / N * 1 / N

Блок-схема алгоритму розв'язання задачі представлена ​​на рис. 6.4.

Мал. 6.4. Блок-схема алгоритму обчислення суми ряду

Завдання 6.5.
Написати програму обчислення n! (Факторіал числа n), де n позитивно. Визначення факторіала:

Іншими словами, n! - це твір перших n натуральних чисел.

Кожен наступний результат (позначимо його Р) виходить шляхом множення попереднього результату (попереднього Р) на лічильник, який пробігає значення від 1 до n.
Позначимо значення лічильника буквою k.

Отримуємо загальний вигляд вираження: Р = Р * k (тобто скористаємося рекуррентной формулою обчислення факторіала: n! = (N - 1)! * N).

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

Завдання 6.6.
Написати програму обчислення суми рядаS = 1 + 2 + 3 + 4 + 5 + 6 Намалювати блок-схему і заповнити таблицю трасування. Переконатися при трасуванні, що сума дорівнює 21.

Таблиця 6.2. Заготівля для таблиці трасування алгоритму із завдання 6.6

Завдання 6.6.
Написати програму обчислення суми ряду для n доданків (n вводиться з клавіатури):
1 / (1 * 2 * 3) + 1 / (2 * 3 * 4) + 1 / (3 * 4 * 5) + 1 / (4 * 5 * 6) + ...

Завдання 6.7.
Використовуючи можливості модуля Crt для роботи з екраном в текстовому режимі, написати програму, яка 16 разів змінює колір екрану і виводить будь-який текст на новому тлі в центр екрану.
Пояснення: розумно, якщо колір фону і параметр циклу будуть однією змінною (палітра кольорів змінюється в діапазоні 0-15).

Завдання 6.8.
Використовуючи можливості модуля Crt, напишіть програму, в якій символ «зірочка» (*) пробігає по всьому периметру екрану з верхнього лівого кута.
Пояснення: в програмі організуйте 4 циклу. В якості лічильника використовуйте координати X і Y. Намалюйте блок-схему алгоритму.
Спробуйте змінити програму, використовуючи всього два циклу: в одному циклі зірочки біжать відразу по верхній і нижній рядках екрану, в іншому - відразу по лівому і правому краю. Нехай кожна наступна зірочка виводиться випадковим кольором.

Завдання 6.9.
По екрану порозсипайте 1000 зірочок у випадковому місці випадковим кольором з невеликою затримкою. Не забудьте ініціалізувати датчик випадкових чисел на початку програми - один раз! Намалюйте блок-схему алгоритму.

1. Для організації багаторазово повторюваних дій із заздалегідь відомим числом повторень використовується оператор циклу for.
2. Лічильник циклу завжди має порядковий тип.
3. Лічильник циклу змінюється з кроком +1, якщо оператор має форму
for. =. to. do
4. Лічильник циклу змінюється з кроком -1, якщо оператор має форму
for. =. downto. do
5. Щоб дізнатися, скільки разів виконається тіло циклу for, потрібно знайти різницю між крайніми значеннями лічильника (по модулю) і додати до результату 1.
6. Не рекомендується змінювати лічильник циклу в тілі циклу.
7. Якщо всередині циклу for поставити ще один цикл for, то кількість разів, яке виконається тіло внутрішнього циклу, дорівнює добутку числа повторень зовнішнього циклу на число повторень внутрішнього.
8. Для перевірки правильності роботи алгоритму його виконують вручну, крок за кроком, відстежуючи зміни всіх змінних. Це називається трасуванням.

1. Який оператор потрібно використовувати, щоб вивести в кожному рядку екрану слово «Привіт»?
2. Чим відрізняються форми «to» і «downto» оператора for?
3. Змінні якого типу повинні використовуватися в якості лічильника циклу for?
4. Скільки разів виконається тіло внутрішнього циклу:
for i: = 2 to 6 do
for j: = 5 downto 3 do
writeln ( '*').
5. Написана програма видає дивний результат. Ймовірно, програма написана з помилкою. Як зрозуміти, де міститься помилка?
6. Потрібно послідовно привласнити змінної N значення всіх тризначних чисел. Напишіть оператор, що присвоює змінної N потрібні значення.