Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Тurbo Pascal 7+.doc
Скачиваний:
12
Добавлен:
24.12.2018
Размер:
10.09 Mб
Скачать

4.16. Константы

Кроме переменных величин, в тексте программы мы встречаем константы. Это те значения, которые или присваиваются переменным, или встречаются в выражениях, или сравниваются с выражениями. Например:

х:=25 здесь числовая константа - 25

slоvо:='Волга' здесь строковая константа - Волга

simvol:='!' здесь символьная константа - !

у.=(х+1) / (200*х - 0.3) здесь числовые константы - 1 и 200 и 0,3

Глава 5. Разветвляющиеся программы

5.1. Условный оператор if

Вся мыслительная деятельность во всех программах (в том числе и той, что выиграла в шахматы у Каспарова) осуществляется только при помощи ветвления (выбора), Теперь посмотрим, как писать разветвляющиеся программы на Паскале.

Выучим сначала 3 английских слова:

if - "иф", переводится как "если";

then - "зэн", переводится как "то";

alse - "элз", переводится как "иначе".

Теперь приведем пример нового для вас оператора

IF а=28 THEN WriteLn(f) ELSE k:=44

Переводится он так:

ЕСЛИ а=28 ТО печатай f ИНАЧЕ присвой переменной k значение 44.

Другими словами, мы предлагаем компьютеру сначала подумать, правда ли, что а = 28 , и если правда, то выполнить оператор WriteLn (f), в противном случае выполнить оператор k:=44. Таким образом, мы с вами впервые написали оператор, при выполнении которого компьютер не просто выполняет, что приказано, а сначала думает и делает выбор (пока одного варианта из двух).

Мы видим, что оператор if включает в себя другие операторы, которые выполняются или не выполняются в зависимости от какого-то условия. Чтобы понять, зачем может пригодиться оператор if, рассмотрим следующие задачи.

Задача 1. Компьютер должен перемножить два числа - 167 и 121. Если их произведение превышает 2000, то компьютер должен напе­чатать текст ПРОИЗВЕДЕНИЕ БОЛЬШОЕ, иначе - текст ПРОИЗВЕДЕНИЕ МАЛЕНЬКОЕ. После этого компьютер в любом случае должен напечатать само произведение.

Программа:

VAR a,b,y '.Integer;

BEGIN

а;=167;

b:=121;

y:=a*b;

if y > 20000 then WriteLn ('ПРОИЗВЕДЕНИЕ БОЛЬШОЕ’)

else WriteLn ('ПРОИЗВЕДЕНИЕ МАЛЕНЬКОЕ');

WriteLn (у)

END.

Пояснение. В программе 5 операторов, последний - WriteLn (у). Поскольку эти 5 операторов выполняются по порядку, то последний оператор выполнится обязательно.

Задача 2, В компьютер вводятся два произвольных положитель­ных числа - длины сторон двух кубиков. Компьютер должен под­считать объем одного кубика - большего по размеру.

Введем обозначения: а1 - сторона одного кубика, а2 - сторона другого, bol - сторона большего кубика, V - объем кубика. Приведем 3 варианта программы:

Вариант 1

VARa1,a2:Real;

BEGIN

ReadLn (a1 ,a2);

if a1>a2 then WriteLn (a1*a1*a1 :15:5)

else WriteLn (a2*a2*a2 :15:5)

END.

Вариант 2

VAR a1,a2,V: Real;

BEGIN

ReadLn (a1 ,a2);

If a1>a2 then V:=a1*a1*a1

else V:=a2*a2*a2;

WriteLn (V : 15:5)

END.

Вариант 3

VAR a1, a2, bol, V :Real;

BEGIN

ReadLn(a1,a2);

if a1>a2 then bol:=a1

else bol:=a2;

V:=bol*bol*bol;

WriteLn(V :15:5)

END.

Поясним последний вариант. Программа состоит из четырех операторов, которые выполняются в порядке записи. Первым после пуска выполняется оператор ReadLn (a1,a2), который ждет от нас ввода двух чисел. Пусть мы сегодня ввели числа 3 и 2. Компьютер понимает, что а1 равно трем, а2 равно двум, и переходит к выпол­нению оператора if. Он видит, что 3 > 2, и поэтому выполняет опе­ратор bо1:=а1, а оператор bоl:=а2 не выполняет. В результате в ячей­ке bol оказывается число 3. Затем компьютер переходит к следую­щему оператору - V:=borbol*bol и вычисляет V = 3*3*3 = 27. Сле­дующий оператор, WriteLn (V : 15:5) печатает число 27.00000.

Если завтра мы запустим эту же программу и введем числа 6 и 10, то компьютер увидит, что утверждение 6 > 10 ложно, и поэто­му выполнит оператор bо1:=а2, а оператор bо1:=а1 выполнять не станет. В результате в ячейке bol окажется число 10 и будет напеча­тано число 1000.00000.

А теперь, дорогой читатель, нам пришла пора освоить пошаговый режим выполнения программы на компьютере. В обычном режиме компьютер выполняет программу настолько быстро, что вы не успеваете заметить, в каком порядке он выполняет отдельные операторы программы, а без этого часто невозможно понять ее логику. Пошаговый режим заставляет компьютер при выполнении программы задерживаться на каждой строке программы столько, сколько нужно человеку. Сейчас вам необходимо проделать то, что сказано в части 4 в пункте "Пошаговый режим" параграфа "Исправление ошибок. Отладка программы".

Итак, если паровая машина избавила человека от тяжелого физического труда, то оператор if избавил человека от тяжелого умст­венного труда (в нашем случае - от необходимости решать, какое из двух чисел больше другого).

Оператор if можно записывать и без части else. Например: if s<t then w:=a+1. Это означает, что если s<t, то нужно выполнить оператор w:=a+1, в противном случае ничего не делать, а просто перейти к следующему оператору.

Для примера рассмотрим простейшую задачу: в компьютер вводится слово. Компьютер должен просто распечатать его. Однако ес­ли введенным словом будет "колхозник", то компьютер должен на­печатать вместо него слово "фермер".

Вот как будет выглядеть наша программа:

VAR Slovo : String;

BEGIN

ReadLn (Slovo); {переменная Slovo будет иметь значением строку

символов, введенных с клавиатуры}

if Slovo = 'колхозник' then Slovo := 'фермер’;

WriteLn (Slovo)

END.