- •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.2. Цикл с постусловием repeat
В цикле с предусловием предварительной проверкой определяется, выполнить тело цикла или нет, до первой итерации. Если это не соответствует логике алгоритма, то можно использовать цикл с постусловием, то есть цикл, в котором проверяется делать или нет очередную итерацию, лишь после завершения предыдущей. Это имеет принципиальное значение лишь на первом шаге, а далее циклы ведут себя одинаково.
Оператор repeat…until реализует цикл с постусловием. Цикл с пост условием всега будет выполнен хотя бы один раз.
Repeat <оператор
1>; <оператор
2>; ……………… Until<условие>
В цикле repeat выполняется тело цикла, пока условие истинно.
Итак: цикл while условие do<оператор>
––– пока условие истинно выполнять оператор.
Цикл repeat операторы until условие.
выполнять операторы до тех пор пока условие ложно.
То есть, в операторе while истинным должно являться условие повторения вычислений, а в операторе repeat – условие их окончания.
Например:
Вычислить отрицательный корень управления x3-x+0,5=0, используя рекуррентную форму.
(k=0, 1, 2, …) x0=-1,3; ε=10-4.
Определить количество итераций; вычисления прекратить при |xk+1 - xk|<ε
Блок-схема алгоритма решения:
начало
x1, E
K=0
x0=x1
x1=
K=k+1
|x1-x0|<E
нет
да
x=x1
X, k
Рисунок 8.3
Конец
Program cicle_postusl; Uses CRT; Var K:
integer; Begin CLRSCR; Write
(‘x0=’); readln(x1); {Вводначальногозначения}
Write (‘eps=’); readln(eps);
{Вводточности} K:=0;
{ начальное значения количества итераций} Repeat
{начало цикла} X0:=x1; X1:=exp(1/3*ln(x0-0,5)); K:=k+1; Untilabs(x1-x0)<eps;
{Пока условие логично выполнять тело
цикла} X:=x1
{присвоение переменной х значение
корня управления} Writeln
(‘x=’, x:1:2,’ k=’,k); Readln end.
X1, x0, X, eps: real;
7.3. Цикл с параметром for
Этот цикл применяется, когда известно количество повторений цикла. Параметр цикла на каждом проходе автоматически либо увеличивается, либо уменьшается на единицу.
Формат оператора.
For<параметр_цикла>:=<начальные_значения>to<конечное_значение>do<оператор>;
for<параметр_цикла>:<конечное_значение>dowto<начальное_значение>do<оператор>;
Начальные и конечные значения счетчика, вычисляются один раз до входа в цикл. Оператор, представляющий собой тело цикла, может быть простым или составным. Например:
………………………….. Var Begin
{Вывод в печать целых чисел от 1 до
10} For
i:=1 to 10 do writeln (i); {Шагцикларавен
1} {
Вывод в печать чисел от 10 до -10} For
i:=10 downto -10 do writeln (i); {шагравен
-1} {Вывод
на печать латинских символов от а до
z}
{Параметр цикла изменяется от а до
r в
алфавитном порядке} For c:=’a’
to “z” do writeln (c); end.
I: integer; c: char;
Начальные и конечные значения должны быть того же типа, что и параметр цикла.
Например: Вычислить факториал числа N (N!=1, 2, 3…N)
Блок схема алгоритма приведена рис. 5.4
Вводится число N. Переменной factorial (выходные данные) присваивается начальное значение. Параметру цикла I присваивается начальное значение 1, и цикл повторяется до N с шагом 1. Когда параметр I становится больше N, цикл заканчивается, и на печать выводится значение переменной factorial, которая вычисляется в теле цикла.
Начало
n
Factorial = 1
I=2, n
Factorial = factorial*i
Factorial
Конец
Рис. 7.4 Алгоритм
решения
Программа решение задачи.
Program cicle_for; Uses crt; Var Factorial, n,
i: integer; Begin CLRSCR; Write (‘n=’);
readln(n); Factorial:=1;
{начальноезначение} For i:=2 to n
do Factorial:=factorial*I; Writeln
(factorial); Readln; End.