Академический Документы
Профессиональный Документы
Культура Документы
Лекция 05
Лекция 05
1
В первом случае начальное значение параметра цикла должно быть меньше
конечного, во втором – больше.
Кроме того, в PascalABC.net параметр цикла следует описывать
непосредственно в заголовке цикла:
for параметр_ц: тип:= начальное значение to (downto) конечное значение do
оператор
или
for var параметр_ц:= начальное значение to (downto) конечное значение do
оператор
В последнем случае используется автоопределение типа переменной по
типу начального значения.
При описании параметра цикла в заголовке цикла область действия
параметра распространяется до конца тела цикла. Вне тела цикла этот параметр
недоступен.
for i: integer := 1 to 10 do Print(i);
for var i := 1 to 5 do Print(i*i);
Текст от слова for до слова do включительно называется заголовком цикла,
а оператор после do – телом цикла.
Параметр цикла может иметь любой порядковый тип данных
Примеры
1. for var z1:= ‘a’ to ‘k’ do Print(ord(z1));
2. var en: (red, green, blue, white);
...
for en := red to blue do write(Ord(en):2);
Порядок выполнения:
1) присваивание параметру цикла начального значения
2) проверка условия п_ц <= к_з
3) если условие не выполнено, цикл завершается
4) если условие выполнено, выполняется оператор
5) параметр цикла увеличивается на 1
6) переход к п. 2
Блок-схема:
2
Сч = нач_зн, кон_зн
Тело цикла
Усл.
Операторы
5
3) если значение условия false, операторы выполняются снова, иначе
оператор завершает работу.
Блок-схема
Операторы
Усл.
Пример 4. Вычислить, через сколько лет в банке будет сумма S, если начальный
вклад равен V, а годовой процент прироста вклада – P.
begin
var (v, p, s) := ReadReal3(‘Введите вклад, годовой процент
и требуемую сумму’);
var w:= v; var q: real; var k:= 0;
repeat
q:= v*p/100; v:= v + q; inc(k);
until v > s;
println(‘Сумма ', s,’ будет накоплена за‘, k,’лет’);
readln;
end.
Для завершения циклов типа repeat и while необходимо чтобы внутри тела
цикла изменялись параметры, влияющие на значение условия.
4. Вложенные циклы
Возможны случаи, когда внутри тела цикла необходимо повторять некоторую
последовательность операторов, т. е. организовать внутренний цикл. Такая
структура получила название цикла в цикле или вложенных циклов. Глубина
вложения циклов (то есть количество вложенных друг в друга циклов) может быть
различной.
1 1 1
S=1+ + +⋯
Пример: Вычислить сумму 1! 2 ! n! .
begin
var n:= ReadInteger(‘Введите n’);
6
var s:= 1;
for var i:= 1 to n do
begin
var k:= i;
for var j:= 1 to k do k:= k*j;
s += 1/k;
end;
writeln(‘s = ’, s:7:4);
end.
Примеры
7
При помощи оператора с постусловием вычислить сумму сходящегося ряда с
заданной точностью ε .
Пример 1: Вычислить сумму сходящегося ряда с заданной точностью
∞
cosk
∑ k 2+3
S= k =1
Т.к. ряд сходится, будем считать, что для вычисления ряда с точностью ε ,
нужно суммировать слагаемые, до тех пор, пока очередное слагаемое не станет
¿ε (свойство Лейбница).
Поскольку число слагаемых неизвестно лучше воспользоваться
итерационным циклом.
begin
var eps:= ReadlnReal(‘введите точность eps’);
var s:= 0.0; var k:= 0; var a: real;
repeat
k += 1;
a:= cos(k)/(sqr(k) + 3);
s += a
until abs(a) <= eps;
writeln(‘S=’,S:10:4):
end.
i ¿¿
Необходимо вычислить и вывести на экран значения x ¿ и соответствующие
им значения y ¿ .
¿i ¿
Первое значение x равно a, все последующие вычисления с добавлением
шага h к предыдущему значению x, т.е. x:= x + h
program tab;
begin
var (a, b, h):= ReadReal3 (‘Введите границы a, b и шаг h’);
var x:= a;
repeat
8
var y:= exp(x) + 7;
writeln(‘x = ’, x:10:2,’ y = ’, y:10:2);
x:= x + h
until x > b;
end.