Program
Sasha&Masha;
var
S, M: real;
begin
write ('Возраст
С а ш и : ');
r e a d ln(S);
write ('Возраст
М а ш и :');
r e a d l n ( M ) ;
if
S > M
then
w r i t e ('Саша
старше Маши')
else if
S = M
then
write (' Саша
и Маша ровесники')
else
w r i t e ('Маша
старше Саши')
end.
300
Алг
СОРТИРОВКА-3
вещ
А, В, С , X
нач
ввод А, В, С
если
А > В
то
Program
S0RT_3;
var
А , В , С , X : real;
begin
r e a d l n (А, В,
if
А > В
then begin
С) ;
X
:= A;
X := A;
A
:= В;
A := В;
В
:= X
В := X
KB
end;
если
В > С
if
В
>
С
то
X
В
с
= В;
= С;
= X
кв
если
А > В
то
X
А
В
кв
вывод А,В,С
= А;
= В;
= X
then begin
X := В;
В := С;
С := X
end;
if
А > В
then begin
X : = A;
A : = B;
В : = X
end;
e(A,B ,C)
кон
end.
По поводу рассмотренной задачи сделаем следующее замеча
ние. Эта задача, которая выводит на идею использования вспомо
гательных алгоритмов. Упорядочение трех переменных произво
дится трехкратным применением алгоритма упорядочения двух пе
ременных, поэтому разумно этот алгоритм оформить как
вспомогательный. Программы, реализующие вспомогательные ал
горитмы, называются подпрограммами. В Паскале есть два вида
подпрограмм: подпрограммы-процедуры и подпрограммы-функ
ции. В данной задаче можно использовать процедуру.
В учебнике [6] подпрограммы не рассматриваются. Это объяс
няется ограниченностью учебного времени, которое можно вы
делить в базовом курсе на тему «Введение в программирование».
При наличии дополнительного времени рекомендуется дать уче
никам представление о подпрограммах. Рассмотренная здесь зада
ча может быть использована как опорная для раскрытия этой темы.
Приведем пример программы сортировки значений трех перемен
ных с использованием процедуры (правила работы с процедура
ми смотрите в учебниках по Паскалю).
Program Sort_3;
var
А, В, С: real;
Procedure
S 0 R 2
(var
X,Y:
r e a l ) ;
301
var
Z: real;
begin
Z:=X; X := Y ; Y:=Z
end;
begin
r e a d l n (А,В,C ) ;
S 0 R 2
(A,B)
;
S 0 R 2
(B,C)
;
S 0 R 2
(A,B)
;
writeln(A, B, C)
end.
Пример 3. Дано вещественное число
X
и натуральное
N.
Соста
вить алгоритм вычисления
X N.
Написать программу на Паскале.
Р е ш е н и е . В Паскале нет операции возведения в степень. Если
показатель степени — целое положительное число, то возводить в
степень нужно путем ^-кратного умножения основания самого
на себя. Реализуется это циклическим алгоритмом:
алг
Степень
цел
N,i;
вещ X;
нач
ввод N
ввод X
i : = l ;
Y :
=1;
пока
i<=N,
повторять
нц
Y : =Y*X
i : =i +l
кц
вывод Y
кон
Program
Power;
var
N,i: integer;
X: real;
begin
readln(N);
rea d l n ( X ) ;
i : =1;
Y: = 1;
while
i<=N
do
begin
Y :=Y*X;
i :=i+l
end;
write(Y)
end.
При выполнении трассировки этого алгоритма обязательно сле
дует проверить правильность его работы при
N =
0. Как известно
из математики, JST° = 1. Трассировка доказывает, что и в этом слу
чае алгоритм будет давать правильный результат.
Пример 4. Последовательно вводятся ^целы х чисел. Найти мак
симальное из них.
Р е ш е н и е . В программировании часто приходится решать за
дачу поиска максимального (минимального) значения в число
вом массиве. В базовом курсе могут не рассматриваться структури
рованные данные, в том числе массивы. Однако эту задачу можно
решить и без использования массива, ограничившись простыми
переменными. Для этого ввод данных и обработку надо совместить
в одном цикле. Вот как это делается:
302
|