Знак логической операции AND, поставленный между двумя условиями, говорит о том, что должны выполняться сразу оба эти условия

Begin Begin

a:=98; a:=’Привет всем’;

Writeln(a) writeln(a)

End. End.

Внимание! Текст в программе отмечен апострофами(одинарными кавычками).В противном случае компьютер откажется ее выполнять.

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

Компьютер выводит на экран:

Здравствуй, я компьютер, а тебя как зовут?

Человек вводит с клавиатуры:

Коля

Компьютер выводит на экран:

Очень приятно, Коля. Сколько тебе лет?

Человек вводит с клавиатуры:

Компьютер выводит на экран:

Ого! Целых 17 лет! Ты уже взрослый!

Программа выглядит так:

Var imya:string;

vozrast:integer;

Begin

Writeln(‘Здравствуй, я компьютер, а тебя как зовут?’);

Readln(imya);

Writeln(‘Очень приятно,’, imya’. Сколько тебе лет?’);

Readln(vozrast);

Writeln(‘Ого! Целых’ ,vozrast,’ лет! Ты уже взрослый!’

End.

Мы с вами составляли простейшие программы для линейных вычислений. Теперь поговорим о разветвляющихся алгоритмах.

В большинстве случаев в программе необходимо делать выбор: например, игра в шахматы. В таких программах используется оператор, который имеет определенный шаблон записи. В русском языке существует такое понятие как «синтаксис». Это часть грамматики, состоящая из определенных правил для выстраивания предложения. В языках программирования тоже есть предложения, которыми являются операторы. Таким оператором является

Условный оператор IF:

IF условие THEN оператор ELSE оператор

Пример:

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

Переводится так: если а=28 то печатай f иначе присвой переменной k значение 44.

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

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

Программа:

Var a,b,y:integer;

Begin

a:=167;

b:=121;

y:=a*b;

if y>2000 then Writeln (‘ПРОИЗВЕДЕНИЕ БОЛЬШОЕ’)

else Writeln (‘ПРОИЗВЕДЕНИЕ МАЛЕНЬКОЕ’);

Writeln(y)

End.

Рассмотрим еще одну задачу и ее решение в трех вариантах.

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

1 вариант:

var a1, 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.

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

В синтаксической записи оператора IF используются знаки сравнения. Их шесть:

> больше;

< меньше;

>= больше или равно;

<= меньше или равно;

= равно;

<> не равно.

Полезное замечание:

Вычисляя выражения, стоящие в условиях оператора IF, Паскаль не записывает их значения в память. Например, после выполнения фрагмента b:=6; if b+1>0 then S:=20 в ячейке b будет храниться 6, а не7. То же относится и к выражениям из оператора Writeln. Например:

b:=6; Writeln(b+1). И здесь в ячейке b останется храниться 6, а не 7.

ВЫВОД: информация в ячейках памяти не меняется при вычислении выражений.

Составной оператор

Рассмотрим два фрагмента программы:

Writeln(‘Введите два числа’);

Readln(a,b);

Writeln(‘Сумма равна=’ ,a+b)

Writeln(‘Введите число’);

Readln(a);

Writeln(‘Квадрат числа равен=’ ,a*a)

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

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

Var a,b:integer;

Otvet:string;

Begin

Writeln(‘Чем займемся – сложением или возведением в квадрат?’);

Readln(Otvet);

If Otvet=’сложением’

Then

Begin Writeln(‘Введите два числа’);

Readln(a,b);

Writeln(‘Сумма равна=’ ,a+b)

End

Else

Begin Writeln(‘Введите число’);

Readln(a);

Writeln(‘Квадрат числа равен=’ ,a*a)

End;

Writeln(‘Счет завершен’)

End.

Вложенные операторы

Мы с вами рассмотрели самый простой выбор, т.е. один вариант из двух возможных. А если возникает необходимость выбора, к примеру: один из трех. В таком случае в синтаксическую схему оператора IF добавляется вложенный оператор. К примеру: В компьютер вводится число(пусть для конкретности это будет дальность выстрела). Если число находится в интервале от 28 до 30, нужно напечатать текст «ПОПАЛ», иначе – «НЕ ПОПАЛ». Задача осложняется тем, что здесь указан интервал. Как это отразить в программе? Попробуем написать программу.

Var a:real;

Begin

Readln(a);

If a>28 then if a<30 then writeln (‘ПОПАЛ’)

Else writeln(‘НЕ ПОПАЛ’)

Else Writeln(‘НЕ ПОПАЛ’)

End.

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

Var a:real;

Begin

Readln(a);

If (a>28) and (a<30) then writeln (‘ПОПАЛ’)

Else writeln(‘НЕ ПОПАЛ’)

End.

Знак логической операции AND, поставленный между двумя условиями, говорит о том, что должны выполняться сразу оба эти условия.

Рассмотрим другую задачу, где применяется другой знак логической операции.

Наши рекомендации