
Учебное пособие_Алгоритмизация
.pdf
Операторы ввода-вывода
Для ввода информации применяются операторы read(х1, x2 , … , xn) и readln(х1, x2 , … , xn). При использовании оператора readln данные для следующего оператора readln будут считываться с начала новой строки.
Для вывода информации на экран служат операторы write(х1, x2 , … , xn)
и writeln(х1, x2 , … , xn). Если используется оператор writeln, то после вывода информации курсор перемещается на новую строку.
В операторах write и writeln можно указать константы целочисленного типа, определяющие ширину поля вывода и количество позиций, необходимых для дробной части числа. Она указывается через двоеточие после имени выводимой переменной, например:
writeln('а=', а:6:2).
ПРИМЕР 10. Напишите программу вычисления площади
треугольника, если известна длина основания и высота (рис. 24).
Начало
Ввод а, h
S=0,5 a h
Вывод S
Конец
Рис. 24. Блок-схема к примеру 10
Листинг программы: program treugolnik ;
var a, h, s: real ;
40
begin
writeln ('Введите длину основания треугольника в сантиметрах') ; readln (a) ;
writeln ('Введите высоту треугольника в сантиметрах') ; readln (h) ;
s:=0.5*a*h ;
writeln ('Площадь треугольника равна', s:8:2, 'см. кв.') ;
end.
Составной оператор
Группа операторов, заключенная между служебными словами begin и end, называется составным оператором.
begin
<оператор 1>; <оператор 2>;
………………..; <оператор n>
end;
Среди операторов, входящих в состав составного оператора, могут быть и другие составные операторы:
begin
………………..
begin
…………..
begin
………..
………...
end;
…………..
end;
…………………….
end;
41

Задания для самостоятельной работы
1.Разработать алгоритм для вычисления объема шара (V 43 R3 ).
2.Разработать алгоритм для вычисления объема конуса (V 13 R 2 H ).
3. Разработать алгоритм для вычисления объема усеченного конуса
V13 H (R2 Rr r 2 ) .
4.Разработать линейный алгоритм пересчета величины временного интервала, заданного в минутах, в величину, выраженную в часах и минутах.
При составлении программы воспользоваться операциями div (вычисляет целое от деления) и mod (вычисляет остаток от деления).
5. |
Разработать алгоритм решения линейного уравнения вида kx b 0 . |
|||||
6. |
Разработать |
алгоритм |
для |
вычисления |
значения |
функции |
y(x) | arcsin( x 5) | . |
|
|
|
|
|
|
7. |
Разработать |
алгоритм |
для |
вычисления |
значения |
функции |
y(x) | tg x x2 | . |
|
|
|
|
|
|
8. |
Разработать |
алгоритм |
для |
вычисления |
значения |
функции |
y(x) | tg x x2 | . |
|
|
|
|
|
|
9. |
Разработать алгоритм для вычисления значения функции y(x) e|cos x| . |
|||||
10. |
Разработать |
алгоритм |
для |
вычисления |
значения |
функции |
y(x) | ex arctg x | .
42

Структурные операторы языка Паскаль
Условный оператор
Условный оператор позволяет проверить некоторое условие и в зависимости от результатов проверки выполнить то или иное действие.
Структура условного оператора имеет вид
if <условие> then <оператор 1> else <оператор 2>, где if, then, else –
зарезервированные слова (если, то, иначе).
В Турбо Паскале else соответствует ближайшему оператору if.
При неполном ветвлении условный оператор принимает вид if <условие> then <оператор>;
ПРИМЕР 11. Напишите программу, которая сравнивает два целых
числа, введенные с клавиатуры. Программа должна указать, какое число больше, или, если числа равны, вывести соответствующее сообщение.
|
Начало |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Ввод |
|
|
|
|
|
a, b |
|
|
|
|
Да |
a = b |
Нет |
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
Да |
a < b |
Нет |
|
Вывод |
|
|
|
|
|
|
|
|
|
|
|
a равно b |
|
|
|
|
|
|
Вывод |
|
|
Вывод |
|
|
a < b |
|
|
a > b |
Конец
Рис. 25. Блок-схема к примеру 11
43
Листинг программы: program sravnenie ; var a, b: integer ;
begin
writeln ('Введите два целых числа') ; readln (a, b) ;
if a = b
then writeln ('Числа равны')
else if a < b then writeln (а, 'меньше' , b) else writeln (а, 'больше' , b);
readln;
end.
Оператор выбора
Оператор выбора позволяет в зависимости от значений какой-либо переменной выполнить те или иные операторы.
Структура оператора выбора имеет следующий вид: case <управляющая переменная> of
<список значений 1>:<оператор 1>;
………
<список значений n>:<оператор n>
else
<оператор k> end.
В качестве управляющей переменной можно использовать переменную целого или символьного типа.
ПРИМЕР 12. Напишите программу, которая запрашивает у
пользователя номер месяца и выводит соответствующее название времени
года.
Листинг программы:
44
program vremena_goda ; var x: integer ;
uses crt ;
begin
clrscr;
writeln ('Введите номер месяца') ; readln (х) ;
case х of
1, 2, 12: writeln ('Зима') ; 3..5: writeln ('Весна') ; 6..8: writeln ('Лето') ; 9..11: writeln ('Осень')
else writeln ('Ошибка ввода данных, число должно быть от 1 до 12'); end;
readln;
end.
Оператор цикла с параметром
Оператор цикла с параметром имеет следующую структуру:
for i:=<начальное значение> to <конечное значение> do <оператор>;
В данном случае шаг изменения параметра цикла i постоянен и равен +1.
Существует еще одна форма записи цикла с параметром, при которой значение шага равно -1:
for i:=< конечное значение> downto < начальное значение> do
<оператор>;
ПРИМЕР 13. Напишите программу, которая вычисляет сумму
первых n членов ряда 1 + 1/2 + 1/3 + 1/4 +…
Листинг программы:
program summa ;
var
45

n, i: integer ; s: real ;
uses crt ;
begin
clrscr;
writeln ('Введите количество членов ряда') ; readln (n) ;
s:=0;
for i:=1 to n do
s:=s+1/i;
writeln ('Сумма первых ', n, 'членов ряда равна ', s:6:2) ;
readln;
end.
Начало
Ввод
N
S = 0
i= 1, N, 1
S = S + 1/i
Вывод S
Конец
Рис. 26. Блок-схема к примеру 13
46
Оператор цикла с предусловием
Оператор цикла с предусловием имеет следующую структуру: while <условие> do <оператор>.
Оператор while … do переводится как «пока … делать».
В данном операторе условие проверяется до выполнения оператора.
ПРИМЕР 14. Напишите программу, которая вычисляет наибольший общий делитель двух целых чисел.
Листинг программы: program delitel ;
var
n, m: integer ; uses crt ;
begin
clrscr;
writeln ('Введите два числа') ; readln (n, m) ;
while m < > n do
begin
if m > n then m:=m-n else n:=n-m;
end;
writeln ('Наибольший общий делитель равен ', m) ;
readln;
end.
47

Начало
Ввод m, n
m n
m > n
n = n - m |
|
|
|
|
|
|
m = m - n |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Вывод m
Конец
Рис. 27. Блок-схема к примеру 14
Оператор цикла с постусловием
Цикл с постусловием имеет следующий вид: repeat <тело цикла> until <условие>
Repeat и until – это зарезервированные слова, которые переводятся как
«повторять», «пока не …». Цикл с постусловием всегда выполняется хотя бы один раз. Рассмотрим оператор repeat … until на примере.
ПРИМЕР 15. Напишите программу, которая вычисляет значение y,
соответствующее каждому значению х (хn x xk), по формуле
48
x 2 5 x, x 0, y
ln(x), x 0.
program sistema ;
var
x, xn, xk, dx, y: real ; uses crt ;
begin
clrscr;
writeln ('Введите начальное, конечное значение х и шаг') ; readln (xn, xk,dx) ;
x:=xn;
repeat
if x > 0 then y:=ln(x) else y:=sqr(x)+5*x;
writeln ('x=', x:6:2, 'y=',y) ;
x:=x+dx; {Наращивание переменной х}
until x > xk; {Пока условие ложно, выполнять тело цикла}
readln;
end.
49