Начальный курс информатики. Часть 2. Учебное пособие
.pdfПосле набора каждой строки данных нажимается клавиша ввода <Enter>.
Процедура вывода write производит вывод числовых данных, символов, строк и логических значений.
Формат: write (y1, y2, y3, . . . , yn), где y1, y2, y3, . . . , yn -
список вывода. Например,
write (123); {выражение представлено числовой константой}. write (i/2 - С); {выводится результат выражения}
write ('Результат: 2+3 =', 2+3);
{выводится текст и результат выражения «Результат: 2+3=5»} Оператор writeln аналогичен процедуре write, но после вывода последнего в списке значения для текущей процедуры
writeln происходит перевод курсора к началу следующей строки. Процедура writeln, записанная без параметров, вызывает перевод строки (рис. 13).
Например,
var А, В, C:integer; |
Вывод: |
Begin |
|
A:=4; B:=6; C:=55; |
A = 4 B = 6 C = 55 |
writeln ('A = ', A, 'B = ', B, 'C = ', C); |
A+B = 10 A-B = -2 |
write ('A + B = ', A+B); |
|
write (' A-B=', A-B) |
|
end. |
|
Рис. 13. Структура описания
Пример 14. Что будет выведено на экран в результате выполнения программы, если для ввода заданы числа 1,5 и -0,8?
program К1;
var A: integer; B: real; D: boolean; begin
A: = l; B: = -4; D: = false;
write(A); writeln(B, D); writeln(not D) writeln (A+B,'2+3')
end.
51
Решение: выводим значения переменных и выражений в соответствии с особенностями вывода: элементы вывода не разделяются пробелами, если специально не предусмотреть вывод пробела: 1 - 4 false. True. -32 + 3
4.6. Составной оператор
Составной оператор относится к числу производных операторов. Он состоит из ряда операторов, выполняемых в той последовательности, в которой они записаны в программе.
Форма записи:
begin <оператор>; <оператор>; ...; <оператор> end; Например:
begin i:= 0 end;
begin Y:= X/2; X: = X + H end; begin
k: = 2; begin
i:= 0; k:= k + 1 end.
Вопросы и задания
1. Что будет выведено на экран в результате выполнения программы, если для ввода заданы числа 1,5 и -0,8?
a) program K1;
var A: real; B: integer; D: char; begin
A:=3.5; B:= 253; D:= '+';
writeln(A); writeln('A', D, 'B = ', A+B); end.
b) program К2;
var X: :real; T: boolean;; begin
read(X); T:= X<round(X); read(X); T:= T and (X<trunc(X)); writeln(T)
end.
52
2.Написать программу, которая запрашивает возраст и выводит фразу «Мне <возраст> лет».
3.Написать программу, которая печатает true или false в зависимости от того, имеют три заданных целых числа одинаковую четность или нет.
4.Как будут располагаться числа, напечатанные следующей последовательностью процедур:
write(l); write(2,3); writeln(4); write(5,6); writeln; writeln(7,8).
5.Даны два вещественных числа А и В. Получать их сумму, разность и произведение.
6.Дана длина ребра куба. Найти объем куба и площадь его боковой поверхности.
7.Даны катеты прямоугольного треугольника. Найти его гипотенузу и площадь.
8.Найти площадь кольца, внутренний радиус которого равен 20, а внешний - заданному числу R (R > 20).
4.7. Условный оператор
Условный оператор предназначен для организации выбора одной из двух серий команд. Имеются две формы условного оператора: полная и сокращенная.
Полная форма условного оператора: if <логическое выражение>
then <оператор1> else <оператор2>.
Выполнение условного оператора начинается с вычисления значения логического выражения, выполняющего роль условия (рис. 14).
Значением логического выражения является или true или false. В первом случае выполняется<оператор1>, во втором - <оператор2>. В качестве <оператор1> или <оператор2> может
выступать любой, оператор языка программирования, частности и составной оператор, и условный оператор.
53
true |
false |
Лог. выр.
Операт. 1 |
|
Операт. 2 |
||
|
|
|
|
|
|
|
|
|
|
Рис. 14. Блок-схема условного оператора
Пример 15.
1) If X<0 then I:=I+1 else K:=K+1;
условие оператор 1 оператор
Пусть I=0, К= 1. Если X = -5, то выполнение оператора |
||||
изменит значение переменной I. Оно станет равным 1. При Х=5 - |
||||
изменится значение К. Оно станет равным 2. |
|
|||
Пример 16. Программа вывода на экран наибольшего из |
||||
двух данных чисел. |
|
|
|
|
program МАХ2; |
|
|
||
var X, Y: integer; |
|
|
||
begin |
|
|
|
|
writeln ('Введите два целых числа'); |
|
|||
readln (X, Y); |
|
|
||
if X > Y then |
writeln ('max - ', X) else writeln ('max - ', Y); |
|||
end. |
|
|
|
|
Если |
при |
выполнении(или невыполнении) |
заданного |
|
условия |
надо |
выполнить |
некоторую |
последовательность |
операторов, то их надо объединить в серию(единый, составной оператор), используя операторные скобки begin и end.
54
Пример 17. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (X < Y) and D |
При |
|
|
|
|
|
|
||||
|
|
|
|
|
X = 2, |
|
|
|
|
|
|
then |
|
|
|
|
Y = 5, |
|
|
|
|
|
|
|
условие |
|
|
|
|
|
|
|
|
||
begin |
|
|
D = true, |
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|||
X:=X+H; |
|
серия 1 |
H = 3 |
|
|
|
|
|
|
||
Y:=Y-H |
|
будет |
выполняться 1-ая |
|
|
|
|||||
D:= not D |
|
|
|
|
серия команд, так как значение |
|
|
|
|||
end |
|
|
|
|
логического |
выражения - |
true. |
|
|
|
|
else |
|
|
|
|
Значения переменных |
станут |
|
|
|
||
begin |
|
|
|
|
равными Х = 5, 7 = 2, D = false. |
|
|
|
|||
X:= 0; |
серия 2 |
|
|
|
|
|
|
|
|||
Y:= 0 |
|
|
|
|
|
|
|
|
|
|
|
end; |
|
|
|
|
|
|
|
|
|
|
|
Пример 18. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
if (X >= Y) and (X>=Z) |
|
В данном примере серия 2 |
|
|
|||||||
|
|
|
|
|
представляет |
собой |
|
оператор |
|||
условие |
|
|
|
|
ветвления. |
|
|
|
|
|
|
|
|
|
|
При Х = 2, Y = 5, Z = 7 |
|
||||||
then X:=0 |
|
|
|
|
|
||||||
|
серия 1 |
|
значение |
|
|
логического |
|||||
else |
|
|
выражения |
false, |
поэтому |
|
|||||
|
|
|
|
|
|||||||
if Y>=Z |
|
|
|
|
выполняются команды серии 2. |
|
|||||
then |
|
серия 2 |
|
Выполнение |
начинается |
с |
|||||
Y:=0 |
|
|
вычисления |
|
|
|
|
|
значения |
||
|
|
|
|
выражения Y>= Z, |
|||||||
else Z:=0; |
|
|
|
|
логического |
|
|||||
|
|
|
|
|
которое равно false, а это значит |
|
|||||
|
|
|
|
|
будет выполнен оператор Z:= 0 |
|
|
||||
Допускается запись неполного условного оператора. Для этого пользуется его сокращенной формой.
55
if < логическое выражение> then |
<оператор>; |
|
|
||||||
Очевидно, что если значение логического выражения true, |
|
||||||||
то выполняется оператор, в противном случае никаких иных |
|
||||||||
действий, |
кроме |
вычисления |
логического |
выражения |
не |
||||
производится. |
|
|
|
|
|
|
|
|
|
Пример 19. |
Написать фрагмент |
программы вычисления |
|
||||||
абсолютного значения величины X. |
|
|
|
|
|
|
|||
Решение: if X < 0 then X := -X; |
|
|
|
|
|
|
|||
Наличие |
сокращенной |
формы |
условного |
оператора |
|||||
требует большой осторожности при использовании условных |
|
||||||||
операторов. Особенно в случаях: |
|
|
|
|
|
|
|||
if |
<логическое |
выражение 1> |
then |
if |
<логическое |
|
|||
выражение 2> then <серия1> else <серия2>. |
|
|
|
|
|||||
По правилам считается, что |
каждое else |
соответствует |
|
||||||
первому предшествующему ему then. |
|
|
|
|
|
||||
Пример 20. Написать программу определения максимального значения из заданных трех чисел.
Program MAX3;
var X, Y, Z: integer;
begin
writeln(‘Введите три целых числа’);
readln(X, Y, Z);
if X > Y then
if X > Z then writeln(‘max – ‘, X) else writeln(‘max – ‘, Z)
else
if Y > Z then writeln(‘max - ’, Y) else writeln ('max - ', Z)
end.
56
Вопросы и задания
1. Определить значение переменной c после выполнения следующего фрагмента программы:
a) a := 100; |
b) a := 40; |
b := 30; |
b := 10; |
a := a – b · 3; |
b := a – 2 · b; |
if a > b then c := a – b |
if a < 2 · b then c := a |
else c := b – a; |
else c := b; |
|
|
c) a := 30; |
d) a := 30; |
b := 6; |
b := 14; |
a := a / 2 · b; |
a := a – 2 · b; |
if a > b then c := a - 3 · b |
if a > b then c := b + 2 · a |
else c := a + 3 · b; |
else c := b - 2 · a; |
|
|
e) a:= 30; |
f) a:= 30; |
b:= 6; |
b:= 6; |
a:= a/5 – (b – 3); |
a:= a · 3 / b; |
if 2 · a > b then |
if a > b then |
с:= a – 5 · b + 2; |
с:= 2 · a – 5 · (b+2) |
else с:= a + 5 · b + 2; |
else |
|
с:= 2 · a + 5 · (b+2); |
2. Записать условный оператор, который эквивалентен оператору присваивания Х:= A or В and С (все переменные - логические) и в котором не используются логические операции (например, оператору X:= not А эквивалентен оператор if A then Х:= false else X:= true).
3.Записать оператор присваивания, эквивалентный
условному оператору if A then |
Х:=В else |
Х:=С, где все |
переменные логического типа. |
|
|
Написать программу решения следующих задач: |
||
4. Даны действительные |
числаА, B, |
С. Проверить, |
выполняются ли неравенства А <В<С. |
|
|
57
5.Даны действительные числа А, В, С. Удвоить эти числа, если А ≥ В ≥ С и заменить их абсолютными значениями, если это не так.
6.Даны действительные числа Х, Y, Z. Получить:
a)mах (Х+ Y + Z, X×Y×Z);
b)min2 (X+ Y+ Z/2, X×Y×Z) + 1.
7.Даны два действительных числа. Вывести первое число, если оно больше второго, и оба числа, если это не так.
8.Даны три действительных числа. Выбрать из них те, которые принадлежат интервалу (1,3).
9.Перераспределить значения переменныхX и Y так, чтобы в X оказалось большее из этих значений, а в Y- меньшее.
10.Даны действительные числаХ и Y. Получить max (X, Y), min (Х, Y ).
11.Определить значение Z, если
ìmax( X ,Y ) ïðè X < 0
Z = í
îmin( X ,Y ) ïðè X ³ 0
12.Переменной К присвоить номер четверти плоскости, в которой находится точка с координатами X и Y (X×Y ≠ 0).
13.Даны действительные числа A, B, C (A ≠ 0). Если уравнение АХ2 + ВХ+ С = 0 имеет вещественные корни, то
логической |
переменной Т |
присвоить |
значениеtrue, а |
переменным |
XI и Х2 - сами |
корни, иначе |
же переменнойT |
присвоить false и вывести сообщение об отсутствии корней.
14.Значения переменных А, В, С поменять местами так, чтобы оказалось А ≥ В ≥ С .
15.Даны произвольные числаА, В и С. Если нельзя построить треугольник с такими длинами сторон, то напечатать 0, иначе напечатать 3, 2 или 1 в зависимости от того, равносторонний это треугольник, равнобедренный или какойлибо иной.
16.Даны действительные числаX, Y. Если X и Y отрицательны, то каждое значение заменить его модулем; если отрицательно только одно из них, то оба значения увеличить на
0.5; если оба значения неотрицательны и ни оно из них
58
не принадлежит отрезку [0.5, 2.0], то оба значения уменьшить в 10 раз; в остальных случаях Х и Y оставить без изменения.
17. Даны действительные положительные числа А, В, С, X, Y. Выяснить, пройдет ли кирпич с ребрамиА, В, С в прямоугольное отверстие со сторонамиX и Y. Просовывать кирпич в отверстие разрешается только так, чтобы каждое из его ребер было параллельно или перпендикулярно каждой из сторон отверстия.
4.8. Операторы цикла
Операторы цикла предназначены для организациине однократного повторения серии команд.
Если количество повторений заранее неизвестно, но задано некоторое условие продолжения цикла или его окончания, то используют оператор цикла с предусловиемили постусловием.
Оператор цикла с предусловием
Форма записи:
while <логическое выражение> do <оператор> Логическое выражение играет роль условия, а оператор
составляет тело цикла. В качестве оператора может выступать
любой |
оператор |
языка |
программирования, |
частности, |
|
составной оператор. |
|
|
|
|
|
Порядок выполнения: |
на первом |
шаге вычисляется |
|||
значение |
логического выражения. Если |
оно |
истинно, то |
||
выполняется серия команд, составляющая тело цикла и далее опять - вычисление значения выражения и т.д Повторение выполнения тела цикла происходит до тех пор, пока условие истинно. Если условие ложно, то происходит выход из цикла
(рис. 15.).
Особенности выполнения оператора цикла с предусловием: серия команд, составляющая тело цикла выполняется как единое целое, от первой команды до последней, и только на следующем шаге проверяется условие входа в цикл. Условие определяет количество повторений. Если оно ложно с самого
59
начала исполнения команды цикла, то количество повторений будет равно 0.
true |
false |
Лог. выр.
Оператор
Рис. 15. Блок-схема цикла с предусловием
Пример 21. Определить значение переменной S после выполнения данного фрагмента программы.
Решение: пошаговое выполнение. Обращаем внимание на то, что тело цикла составляет только один оператор присваива-
ния I:= I+1.
Ответ: S = 3.
Пример 22. Определить значение переменной S после выполнения данного фрагмента программы.
Решение: пошаговое выполнение. Обращаем внимание на то, что в теле цикла составной оператор.
60
