- •Министерство образования российской федерации
- •Var X,y: real;
- •Var X,y: real;
- •Var t:integer; p:char;
- •0..17: Write('детство');
- •20..30: Write('молодость');
- •31..54: Write('зрелость');
- •Var s:char;
- • Оператор цикла с предусловием имеет вид
- •Program p5_8;
- •Var y,X,z: integer;
- •Var I,j:integer; X,y,r:real;
- •Var I,j: integer;
- •Var n,I,j:integer; s,y,sr:real; X: array [1..10,1..5] of real;
- •Var I,j,n,m: integer;
- •X:array [1..10] of integer;
- •Var n,I,j,st,kl,k:integer;
- •Var st: char; sm: string[32]; ss: string;
- •Var n:integer;y:string;
- •Var k,I:integer; X: string;
- •Var X:string[1]; d:string; I:integer;
- •Var X:vr; y:array [1..5] of vr;
- •Ввод и вывод информации для типизированных и текстовых файлов производится процедурами:
- •X,y:real;
- •X,y:real; I:integer;
- •Im: string[4];
- •I: integer;
- •Im: string[4];
- •I: integer;
- •Im:string[4]
- •Im:string;
- •Var d,I,m,rx,ry:integer;
- •Var d,m,rx,ry:integer;
- •X,y,xn,xk,ymin,ymax,dx:real;
- •Ответы на тестовые задания, имеющиеся в тексте пособия:
- •& Тесты по курсу
- •Тираж: 150. Заказ №
Оператор цикла с предусловием имеет вид
WHILE условие DO оператор
Такая конструкция позволяет легко организовывать итерационные циклы (циклы с заранее неизвестным числом повторений). Оператор, входящий в тело цикла выполняется до тех пор, пока истинно условие. Для примера решим задачу – вычислять и печатать Y=2/X до обнаружения первого Х=0 (на ноль делить нельзя). Программа приведена ниже.
r
PROGRAM P5_2; var
x,y: real;
{другой
вариант} begin x:=3; while
x<=9 do begin
y:=sqr(x–6);
writeln(x,y); x:=x+2; end; end.
while x<>0 do begin
writeln(х, 2/x);
readln(x)
end;
С помощью этого оператора гораздо удобнее программировать пример 5-2 (program P5_2 выше справа).
Тест. 5.2. Сколько раз будет выполнен цикл и чему будет равно k по завершению программы. Выберите один из трех ответов: 1).0, 2).1, 3).-1.
var k:integer;
begin
k:=13;
while k>0 do k:=k-2;
end.
Оператор цикла с постусловием:
REPEAT оператор UNTIL условие
Оператор, в цикле выполняется до тех пор, пока ложно условие. В отличие от оператора WHILE здесь цикл будет выполнен хотя бы раз. Структуру с постусловием удобно применять в случае, если цикл необходимо выполнить хотя бы раз независимо от значения условия или, если само условие формируется в цикле и не может быть оценено до входа в цикл. Внутри цикла нет необходимости использовать блок begin (блок образуют сами слова repeat...until). Справа приведено решение предыдущего примера для функции Y=2/X. Однако здесь он не удачен. Поскольку хотя бы раз деление в цикле выполняется, может оказаться, что если самое первое Х=0, произойдет ошибка (деление на 0).
В
repeat
{Y=2/Х} readln(x)
writeln(х,
2/x); until
x=0;
BREAK
который переключает программу на оператор, следующий сразу за операторами, включенными в цикл. Принудительный выход из цикла в любое другое место, очевидно, может быть осуществлен и оператором GOTO.
Если нужно, не выполняя до конца текущего цикла, начать следующий, следует воспользоваться оператором
СONTINUE
Действие указанных операторов (применительно к циклу FOR) иллюстрирует рисунок выше.
Тест. 5.3. Сколько раз будет выполнен цикл и чему будет равно k по завершению программы. Выберите один из трех ответов: k= 1).0, 2).1, 3).-1.
var k:integer;
begin
k:=-13;
repeat k:=k+2 until k>0;
end.
Задание 5.6. Написать программу, в которой вводятся два операнда Х и Y и знак операции (+,–,/,*). Вычислить результат Z в зависимости от знака. Предусмотреть реакции на возможный неверный знак операции, а также на ввод Y=0 при делении. Организовать возможность многократных вычислений без перезагрузки программа (т.е. построить цикл). В качестве символа прекращения вычислений принять ‘0’.
Функциональные ряды. При работе с компьютером возникает впечатление его огромной интеллектуальной силы. На самом деле это не так. Собственно процессор умеет (правда очень быстро) выполнять только четыре арифметических действия и логические операции, т.е. располагает возможностями ученика 1-го класса. Откуда же вся его математическая мощь. Ответ простой – от программистов. Разработчики компиляторов языков (в частности Паскаля) побеспокоились о том, чтобы в нем присутствовали многие математические функции. Когда мы используем выражение exp(x) мы на самом деле вызываем подпрограмму вычисления ex, написанную для нас неизвестным автором из фирмы Borland. Однако мы можем и сами это сделать. Существует методы, позволяющие вычислять функции, используя лишь небогатые возможности процессора. Так из математики хорошо известны функциональные ряды Тейлора (здесь аргумент включен в члены ряда). Хотя такие ряды бесконечны, нам нет необходимости (и возможности) вычислять их целиком. Значения элементов ряда быстро убывают и мы можем прекратить вычисления в тот момент, когда очередной член станет меньше заданной погрешности ε.
Пример 5-7. Вычислить с заданной погрешностью функцию ex для произвольного значения Х<1. Ряд Тейлора для нее выглядит следующим образом.
ex ≈1+x+x2/2!+ x3/3!+ x4/4!+...
Отсюда можно записать аналитические зависимости (выше справа). Здесь у – искомая функция, r – элемент ряда, i – номер члена разложения.
Задание 5.7. Вычислить с заданной погрешностью функцию, отображаемую рядом:
y=x11!/2!–x32!/3!+ x43!/4!– x54!/5!+...
Сложные циклы. Этот термин означает вложенность одного цикла в другой.
Пример 5-8. Вычислить значения функции Y=X2+Z для 0≤X≤4 и 0≤Z≤10 с шагом 1.