Мітки та переходи
У Турбо Паскаль для указання таких переходів є спеціальні оператори, відповідно, exit, continue і break, тобто "вийти" (з підпрограми), "продовжувати" і "перервати" (виконання циклу). Розумно використовуючи ці оператори, можна обійтися без міток і goto. Насправді ці три оператори – виклики процедур. Їх імена не є службовими словами, але ми будемо виділяти їхнім жирним шрифтом. Приклади їх використання – у наступному підрозділі.
Читання послідовностей
Існує чимало задач, у процесі розв'язання яких читаються та обробляються послідовності значень невідомої заздалегідь довжини. До них віноситься практично все, що пов'язано з обробкою файлів – від завантаження машинної програми до друкування списків. У цьому параграфі ми розглянемо задачі, у яких для обробки вхідної послідовності незалежно від її довжини достатньо кількох змінних. На прикладі цих задач ми опишемо три способи завдання кінця послідовності і, відповідно, три види циклів читання й обробки даних.
1. Спочатку читається кількість значень n, n maxint, потім самі значення в кількості, яка визначається за n. Для опису читання зручно скористатися for-оператором.
Приклад 1. Многочлен, він же поліном pnxn+pn-1xn-1+ … +p1x+p0 задається послідовністю з n+1 коефіцієнтів pn,pn-1, … , p1, p0. Треба прочитати значення x, степінь і коефіцієнти полінома та обчислити його значення в точці x. Оскільки
pnxn+pn-1xn-1+ … +p1x+p0=(... (pnx+pn-1)x+ … +p1)x+p0,
то значення v полінома можна подати як значення останнього члена послідовності: v0=0, v1=v0 x+pn, v2=v1 x+pn-1, … , vn+1=vn x+p0. Неважко переконатися, що вона задається рекурентним співвідношенням
vi=vi-1 x+pn+1-i, i=1, 2, … n+1,
причому перед його першим застосуванням треба знати лише перший коефіцієнт, перед другим – другий тощо. Тому цикл має складатися з читання чергового коефіцієнта й застосування співвідношення. У будь-який момент виконання програми треба знати лише один, останній прочитаний коефіцієнт, тому для збереження коефіцієнтів достатньо однієї змінної.
Отже, спочатку прочитаємо значення x, потім степінь полінома n, потім n+1 коефіцієнт, застосовуючи "по дорозі" рекурентне співвідношення:
V:=0;
writeln('задайте точку дійсної прямої :'); readln(x);
writeln('задайте цілий невід'ємний степінь полінома :'); readln(n);
for i:=1 to n+1 do
begin
writeln( 'задайте ', n+1-i, '-й коеф-т :'); readln(p);
V:=V*x+p
end;
{прочитано n+1 коефіцієнт; значення V – шукане}
Оформлення алгоритму у вигляді підпрограми залишаємо вправою.