- •3. Система программитрования турбо паскаль
- •3.1 Окно среды разработчика
- •3.2. Элементы диалоговой среды
- •3.3. Команды редактора
- •3.4. Модули
- •4. Общие сведения о языке паскаль
- •4.1 Алфавит языка
- •4.2. Типы данных в TurboPascal 7.0
- •4.3. Операции и выражения в языке Паскаль
- •4.4 Стандартные функции в языке Паскаль
- •5. Линейные алгоритмы
- •5.1. Структура программы на языке Паскаль
- •5.2. Конструкция «следование»
- •6. Разветвляющиеся алгоритмы
- •And, * (умножение), / (деление), div, mod;
- •6.1. Операторы условных переходов
- •Var a, b, c : Real; lv : Boolean;
- •Var a, b, c : Real; lv : Boolean;
- •Var X, y : Real;
- •6.2. Оператор безусловного перехода
- •Var n, p, X : Real;
- •20: WriteLn('Факториал числа ' , n:4:2,' равен ' ,p:4:2);
- •7. Циклические алгоритмы
- •7.1. Цикл с предусловием While
- •X, xn, xk, dx, y, s, p: real;
- •7.2. Цикл с постусловием repeat
- •X1, x0, X, eps: real;
- •7.3. Цикл с параметром for
- •I: integer; c: char;
- •7.4. Принудительное завершение цикла
- •X, xn, xk, dx: real;
- •8. Символьный тип
- •8.1. Особенности символьного типа
- •8.2. Объявление символьной переменной
- •8.3. Операции с символами
- •Строковые переменные
- •9.1. Определение и типы строк
- •9.2. Упакованный строковый тип
- •9.3. Строковый тип
- •9.5. Примеры работы со строками
- •9.6. Индивидуальные задания по работе со строками и символами
- •10. Массивы
- •10.1. Организация данных в массиве
- •10.2. Объявление массивов
- •10.3. Ввод и вывод значений элементов массива
- •10.4. Подсчет количества элементов по заданному условию
- •10.5. Поиск минимального элемента массива
- •10.6. Вычисление произведения ненулевых элементов массива
- •10.7. Сортировка элементов массива
- •10.8. Заполнение массива случайными числами
- •10. 9. Индивидуальные задания по работе с массивам
- •11. Процедуры и функции
- •11.1. Понятие подпрограммы
- •11.2. Описание процедуры
- •11.3. Описание функции
- •11.4. Области действия имен
- •11.5. Индивидуальные задания по разработке процедур и функций
- •Var k,l; real;
7. Циклические алгоритмы
Цикл задает многократное выполнение оператора и относится к базовым конструкциям структурного программирования, Поэтому они могут вкладываться друг в друга. Например, цикл может содержать следование из двух ветвей, каждые из которых может включать вложенные циклы. Целью использования базовых конструкций является получение программы простой структуры. Такую программу легко читать, отлаживать и при необходимости модифицировать.
Рис.8.1. Циклы
Начальные установки, проверка условия продолжения цикла и модификация параметра цикла служат для управления процессом повторения вычислений.
Операторы цикла используются для вычислений повторяющихся многократно. Проверка условия продолжения цикла повторяется на каждом повторении цикла (на каждой итерации) или до тела цикла (цикл с предусловием, рис 8.1 а) или после тела цикла (цикл с поступлением, рис 8.1 б).
Цикл завершается, если условие его продолжения не выполняется.
В Паскале три вида циклов:
Цикл с предусловием while,
Цикл с постусловием repeat,
Цикл с параметром for.
Каждый из них состоит из определенной последовательности операторов.
7.1. Цикл с предусловием While
Обращение к оператору While… do переводится как «пока… делать» и формат оператора
While<условие>do<оператор>;
Простой или составной оператор, стоящий после служебного слова do и называемый телом цикла, будет выполняться циклически, пока логическое условие истинно.
Условие может быть логической константой, переменной или логическим выражением. While…do предназначен для реализации циклов с предусловием. Например: Вычислить каждое значение y=cos(x) при изменении х от начального значения xn до конечного значения xk с шагом dx. Вычислить сумму положительных значений y, произведения ненулевые y, количество отрицательных y.
Рис 8.2 Алгоритм
решения
Program cicle_predusl; Uses CRT; Var K:
integer; Begin CLRSCR
{Вводисходныхданных} Write
(‘xn=’); readln(xn); Write
(‘xk=’); readln(xk); Write
(‘dx=’); readln(dx); S:=0;
{присвоение начального значения суммы
S} P:=1;
{ присвоение начального значения
произведения P} K:=0;
{ присвоение начального значения
количество отрицательных y} {
присвоение параметру цикла начального
значения } X:=xn; While
x<=xk do
Begin {началоциклаwhile} y:=cos(x);
wriiteln(‘x=’, x:1:2,’ y=’,y:1:2); if
y>=0 then s:=s+y else k:=k+1; if
y<>0 then p:=p*y; x:=x+dx;
{наращивание параметра цикла} end;
{конецциклаwhile} writeln
(‘ k= ‘, k); readln; end.
X, xn, xk, dx, y, s, p: real;
Значение x изменяются внутри цикла. Следует так написать тело цикла, чтобы оператор, вычисляющий на условие, был последним в блоке. Это является гарантией от нежелательных переборов.