Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Pascal.doc
Скачиваний:
32
Добавлен:
12.03.2016
Размер:
3.29 Mб
Скачать
      1. Диалог с компьютером

Напишем программу, которая осуществляла бы такой диалог человека с компьютером:

КОМПЬЮТЕР ВЫВОДИТ НА ЭКРАН: Здравствуй, я компьютер, а тебя как зовут?

ЧЕЛОВЕК ВВОДИТ С КЛАВИАТУРЫ: Коля

КОМПЬЮТЕР ВЫВОДИТ НА ЭКРАН: Очень приятно, Коля. .Сколько тебе лет?

ЧЕЛОВЕК ВВОДИТ С КЛАВИАТУРЫ: 16

КОМПЬЮТЕР ВЫВОДИТ НА ЭКРАН: Ого!Целых 16 лет!Ты уже совсем взрослый!

Вот программа:

VARimya :String; vozrast :Integer;BEGINWriteLn ('Здравствуй, я компьютер, а тебя как зовут?'); ReadLn (imya); WriteLn ('Очень приятно, ', imya, ' . Сколько тебе лет?'); ReadLn (vozrast); WriteLn ('Ого! Целых ' ,vozrast, ' лет! Ты уже совсем взрослый!')END.

Диалог будет отличаться только той информацией, которую вводит человек. Так, в другой раз по этой же программе будет осуществлен следующий диалог:

КОМПЬЮТЕР: Здравствуй, я компьютер, а тебя как зовут?ЧЕЛОВЕК : Фантомас! КОМПЬЮТЕР: Очень приятно, Фантомас! . Сколько тебе лет?ЧЕЛОВЕК: 100 КОМПЬЮТЕР: Ого! Целых 100 лет! Ты уже совсем взрослый!

Не подумайте, что эта программа очень умная. Она совершенно не анализирует, какую информацию человек ввел с клавиатуры. Поэтому с ней возможен и такой диалог:

КОМПЬЮТЕР:Здравствуй, я компьютер, а тебя как зовут?ЧЕЛОВЕК: Сгинь с моих глаз! КОМПЬЮТЕР: Очень приятно, Сгинь с моих глаз! . Сколько тебе лет?ЧЕЛОВЕК: -2 КОМПЬЮТЕР: Ого! Целых -2 лет! Ты уже совсем взрослый!

Задание 17:Напишите программу для следующей задачи: Компьютер спрашивает названия двух планет, радиусы их орбит (в миллионах километров) и скорости движения по орбите (в миллионах километров в сутки). Компьютер вычисляет продолжительность года на планетах и выдает результат в таком виде:Продолжительность года на планете Земля – 365 суток, а на планете Эоэлла – 12 суток.

      1. Константы

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

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

slovo:=’Волга’ здесь строковая константа - Волга

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

y:=(x+1) / (200*x- 0.3) здесь числовые константы - 1 и 200 и 0.3

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

      1. Условный оператор if или как компьютер делает выбор

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

Теперь посмотрим, как писать разветвляющиеся программы на Паскале.

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

if

читается "иф"

переводится "если"

then

читается "зэн"

переводится "то"

else

читается "элз"

переводится "иначе"

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

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

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

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

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

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

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

Программа:

VARa,b,y :Integer;

BEGINa:=167;

b:=121;

y:=a*b;

ify>20000thenWriteLn ('ПРОИЗВЕДЕНИЕ БОЛЬШОЕ')

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

WriteLn (y)

END.

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

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

Обозначим a1- сторону одного кубика,a2- сторону другого,bol- сторону большего кубика,V- объем кубика. Приведем три варианта программы:

ВАРИАНТ 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

VARa1,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

VARa1,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. Компьютер понимает, чтоa1 равно 3,a2равно 2, и переходит к выполнению оператораif. Он видит, что 3>2, и поэтому выполняет операторbol:=a1, а операторbol:=a2не выполняет. В результате в ячейкеbol оказывается число 3. Затем компьютер переходит к следующему оператору -V:=bol*bol*bolи вычисляет V=3*3*3=27. Следующий операторWriteLn (V : 15:5)печатает число 27.00000 .

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

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

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

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

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

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

VARSlovo : String;BEGINReadLn (Slovo); { переменная Slovo будет иметь значением строку символов, введенных с клавиатуры }ifSlovo = 'колхозник'thenSlovo := 'фермер'; WriteLn (Slovo)END.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]