- •Www.Msta.Ru
- •Москва – 2005
- •1 Цель и задачи дисциплины
- •2 Тематическое содержание программы
- •3 Перечень рекомендуемых лабораторных работ
- •4 Экзаменационные вопросы по дисциплине
- •1. Введение
- •Var a,d: integer; X: real; d: string;.
- •2. Простейшие операторы языка
- •3. Организация ветвлений
- •Var a,b,c: real;
- •4. Логические функции
- •5. Организация циклов
- •Program p5_2; {другой вариант}
- •Var X,y: real;
- •С помощью этого оператора гораздо проще решить пример 5-2 (program p5_2). Оператор цикла с постусловием:
- •6. Массивы
- •Var X,z: array [1..8] of real;
- •Var I,j: integer;
- •Var n,I,j:integer; s,y,sr:real; X: array [1..10,1..5] of real;
- •Var n,I,j,st,kl,k:integer;
- •7. Символьные данные
- •Var n:integer;y:string;
- •Var X:string[1]; d:string; I:integer;
- •8. Записи
- •Var X:vr; y:array [1..5] of vr;
- •9. Файлы
- •Ввод и вывод информации для типизированных и текстовых файлов производится процедурами:
- •X,y:real;
- •X,y:real; I:integer;
- •Im: string[4];
- •I: integer;
- •Im: string[4];
- •I: integer;
- •10. Подпрограммы
- •11. Графика
- •Var d,I,m,rx,ry:integer;
- •Var d,m,rx,ry:integer;
- •X,y,xn,xk,ymin,ymax,dx:real; msy,msx:real;
Т begin x:=3;
while
x<=9 do begin y:=sqr(x–6);
writeln(x,y);
x:=x+2; end; end.Program p5_2; {другой вариант}
Var X,y: real;
readln(x); {Y=Х/2}
while x<>0 do begin
writeln(х, х/2);
readln(x)
end; {оператор while}
С помощью этого оператора гораздо проще решить пример 5-2 (program p5_2). Оператор цикла с постусловием:
REPEAT оператор UNTIL условие
Оператор, в цикле выполняется до тех пор, пока ложно условие. В отличие от оператора WHILE здесь цикл будет выполнен хотя бы раз. Структуру с постусловием удобно применять в случае, если цикл необходимо выполнить хотя бы раз независимо от значения условия или, если само условие формируется в цикле и не может быть оценено до входа в цикл. Внутри цикла нет необходимости использовать блок begin (блок образуют сами слова repeat...until). Пример решения предыдущей задачи приведен справа. В виду того, что здесь оказывается возможным деление на ноль, в программу вставлен оператор if, предотвращающий такую возможность.
В
repeat
{Y=X/2}
readln(x)
if x=0 then break
writeln(х,
х/2);
until
x=0;
BREAK
к оторый переключает программу на оператор, следующий сразу за операторами, включенными в цикл. Принудительный выход из цикла в любое другое место, очевидно, может быть осуществлен и оператором GOTO. Если нужно, не выполняя до конца текущего цикла, начать следующий, следует воспользоваться оператором
СONTINUE
Действие указанных операторов (применительно к циклу FOR) иллюстрирует рисунок справа.
Задание 5.7. Написать программу, в которой вводятся два операнда Х и Y и знак операции (+,–,/,*). Вычислить результат Z в зависимости от знака. Предусмотреть реакции на возможный неверный знак операции, а также на ввод Y=0 при делении. Организовать возможность многократных вычислений без перезагрузки программа (т.е. построить цикл). В качестве символа прекращения вычислений принять ‘0’.
Функциональные ряды. При работе с компьютером возникает впечатление его огромной интеллектуальной силы. На самом деле это не так. Собственно процессор умеет (правда очень быстро) выполнять только четыре арифметических действия и логические операции, т.е. располагает возможностями ученика 1-го класса. Откуда же вся его математическая мощь. Ответ простой – от программистов. Разработчики компиляторов языков (в частности Паскаля) побеспокоились о том, чтобы в нем присутствовали многие математические функции. Когда мы используем выражение exp(x) мы на самом деле вызываем подпрограмму вычисления ex, написанную для нас неизвестным автором из фирмы Borland. Однако мы можем сделать это и сами. Существует методы, позволяющие вычислять функции, используя лишь небогатые возможности процессора. Так из математики хорошо известны функциональные ряды Тейлора (здесь аргумент включен в члены ряда). Хотя такие ряды бесконечны, нам нет необходимости (и возможности) вычислять их целиком. Значения элементов ряда быстро убывают и мы можем прекратить вычисления в тот момент, когда очередной член станет меньше заданной погрешности ε.
Пример 5-7. Вычислить с заданной погрешностью функцию ex для произвольного значения Х<1. Ряд Тейлора для нее выглядит следующим образом.
e x ≈1+x+x2/2!+ x3/3!+ x4/4!+...
Отсюда можно записать аналитические зависимости (справа). Здесь у – искомая функция, r – элемент ряда, i – номер члена разложения. Напишите программу вычисления функции с погрешностью не более 0,001. Это означает, что вычисления можно прекратить, если очередной член разложения становится меньше указанного значения.
Сложные циклы. Этот термин означает вложенность одного цикла в другой.
Пример 5-8. Вычислить значения функции Y=X2+Z для 0≤X≤4 и 0≤Z≤ 10 с шагом 1. В этой функции два аргумента, т.е. она является не плоской кривой, а криволинейной поверхностью. Решение здесь очень простое. Строятся два цикла – внешний (по Х) и внутренний (по Z). Поскольку аргументы и функция целочисленные и шаг равен 1, можно использовать оператор for. В данном случае безразлично, какой параметр поместить снаружи, а какой внутри. Здесь на одно изменение переменной Х произойдет 11 изменений Z.
В следующих заданиях условия целочисленности аргумента и/или шаг=1 не соблюдаются и для организации циклов придется использовать оператор while.
Задание 5.8. Вычислить функции Y=X2+Z для 0≤X≤4 с шагом 1 и 1≤Z≤10 с шагом 2.
Задание 5.9. Вычислить функции Y=X2+Z для 0≤X≤4 с шагом 0,5 и 1≤Z≤10 с шагом 2.
Задание 5.10. Напечатать таблицу умножения.