Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Символьный тип данныхChar




END.

BEGIN

END.

BEGIN

WriteLn ('Каков цвет ваших глаз?');

ReadLn (Tsvet);

WriteLn ('Введите ваш рост в сантиметрах');

ReadLn (Rost);

if (Tsvet ='Голубой') AND (Rost<140) {Если цвет голубой И рост<140}

then WriteLn ('ВЫ МНЕ ПОДОЙДЕТЕ')

else WriteLn ('ДО СВИДАНИЯ')

Мы видим, что условие в операторе if уже не такое простое, как мы описывали раньше, а сложное, то есть состоящее из двух взятых в скобки условий[6], соединенных знаком логической операции AND (читается "энд", переводится "и"). Весь оператор if можно прочесть так - если цвет глаз голубой И рост меньше 140 сантиметров, то печатай ВЫ МНЕ ПОДОЙДЕТЕ, иначе печатай ДО СВИДАНИЯ.

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

Поэтому наш оператор if ответит ДО СВИДАНИЯ и высоким голубоглазым и высоким неголубоглазым и маленьким неголубоглазым. И лишь маленьким голубоглазым он ответит ВЫ МНЕ ПОДОЙДЕТЕ.

 

Программа для задачи ПОПАЛ - НЕ ПОПАЛ при использовании логических операций значительно упростится:

VAR a:Real;
BEGIN
ReadLn (a);
if (a>28) AND (a<30) then WriteLn ('ПОПАЛ')
else WriteLn ('НЕ ПОПАЛ')
END.

Задача "Неразборчивая принцесса". Неразборчивой принцессе нравятся все маленькие независимо от цвета глаз и все голубоглазые независимо от роста. Программа неразборчивой принцессы будет отличаться от программы разборчивой одним единственным знаком логической операции:

if (Tsvet ='Голубой') OR(Rost<140) {Если цвет голубой ИЛИрост<140}

Знак логической операции OR читается "о", переводится "или".

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

Поэтому теперь оператор if ответит ВЫ МНЕ ПОДОЙДЕТЕ и высоким голубоглазым и маленьким голубоглазым и маленьким неголубоглазым. И лишь высоким неголубоглазым он ответит ДО СВИДАНИЯ.

Знаками AND и OR можно объединять сколько угодно условий. Например:

if (a>2) OR (x=b) OR (c<>1) then k:=99 else k:=33

Здесь выполнится оператор k:=99, если верно хотя бы одно из трех условий, и лишь когда все три неверны, будет выполняться оператор k:=33.

Кроме логических операций AND и OR применяется еще логическая операция NOT (читается "нот", переводится "не"). Запись if NOT(a>b) then... переводится так - ЕСЛИ НЕПРАВДА, ЧТО a больше b, ТО.... Вот фрагмент:

a:=2; b:=3; if NOT(a>b) then k:=1 else k:=0

Здесь выполнится оператор k:=1, так как неправда, что 2>3.

 

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

Внутри скобок можно писать не только простые, но и сложные условия. Например, фрагмент if NOT ((a>2) AND (b>3)) AND (s>8)) then... можно перевести так - если неправда, что одновременно верны три условия - a>2, b>3, s>8, то...

Примеры:

ФРАГМЕНТ РЕЗУЛЬТАТ
a:=8; b:=6; if (a>b) AND (b>7) then k:=1 else k:=0 k=0
a:=8; b:=6; if (a>b) OR (b>7) then k:=1 else k:=0 k=1
a:=8; b:=6; if (a<b) OR (b>7) then k:=1 else k:=0 k=0
a:=8; b:=6; if NOT (a=8) then k:=1 else k:=0 k=0

Задание 26: "Замысловатая принцесса". Определите, кто нравится принцессе, по фрагменту из ее программы:

if (Tsvet ='Черный') AND ((Rost<180) OR (Rost>184))

then WriteLn ('ВЫ МНЕ ПОДОЙДЕТЕ')

else WriteLn ('ДО СВИДАНИЯ')

 

До сих пор мы применяли оператор if для выбора одной из двух возможностей. Покажем, как применять его для выбора одной из нескольких. Усложним нашу задачу про ПОПАЛ - НЕ ПОПАЛ:

Человек вводит в компьютер число. Если оно находится в интервале от 28 до 30, то нужно напечатать текст ПОПАЛ, если оно больше или равно 30 - то ПЕРЕЛЕТ, если оно находится на отрезке от 0 до 28, то НЕДОЛЕТ, если число меньше нуля - НЕ БЕЙ ПО СВОИМ.

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

VAR a: Real;

ReadLn (a);

if (a>28) AND (a<30) then WriteLn ('ПОПАЛ');

if a>=30 then WriteLn ('ПЕРЕЛЕТ');

if (a>=0) AND (a<=28) then WriteLn ('НЕДОЛЕТ');

if a<0 then WriteLn ('НЕ БЕЙ ПО СВОИМ')

Необходимо обращать внимание на аккуратную расстановку знаков сравнения и числовых границ диапазонов. Если во втором if вместо a>=30 мы напишем a>=20, то при вводе числа 25 компьютер даст нам двусмыс­ленный ответ:

ПЕРЕЛЕТ
НЕДОЛЕТ

Если же мы вместо a>=30 напишем a>30, то при вводе числа 30 мы вообще не получим от компьютера никакого ответа.

Задание 27:

Человек вводит с клавиатуры строку, смысл которой - приветствие при встрече. Компьютер тоже должен ответить приветствием. Отвечать нужно в соответствии со следующей таблицей:

ПРИВЕТСТВИЕ ЧЕЛОВЕКА ОТВЕТ КОМПЬЮТЕРА
Привет Привет
Здравствуйте Здравствуйте
Здорово Здравствуйте
Добрый день Салют
Приветик Салют
Салют Салют
Здравия желаю Вольно

 

Для того, чтобы получить более полное представление о возможностях оператора варианта case, который нам предстоит изучить, познакомимся сначала с новым типом данных. Мы с вами уже познакомились с четырьмя типами данных в Паскале: Integer и LongInt (целые числа), Real (вещественные числа) и String (строки символов). Введем еще один тип - Char(символьный). По-английски Char читается - "кэр", это сокращение от Character - "символ".

Описание VAR a,b: Char означает, что переменные a иbимеют право принимать значения любых символов, с которыми может работать компьютер. (О символах мы говорили в 3.5) Мы можем записать a:='Л'; b:='+', что означает приказ присвоить переменной a значение символа Л, а переменной b- значение символа +. Мы можем записать ReadLn (a), что означает приказ компьютеру ждать ввода с клавиатуры любого одного символа и присвоить его значение переменной a. Мы можем записать WriteLn (b) и на экране появится плюсик.

Вот программа, переворачивающая любое трехбуквенное слово, введенное человеком с клавиатуры:

VAR c1,c2,c3: Char;
BEGIN
ReadLn (c1,c2,c3);
WriteLn (c3,c2,c1)
END.

Если мы по оператору ReadLn введем символы ТОК, то оператор WriteLn напечатает КОТ. При вводе нескольких символов одним оператором ReadLn, все символы набираются на клавиатуре подряд, без пробелов, которыми мы привыкли разделять при вводе числовые данные. После ввода последнего символа нажимаем клавишу Enter. Таким образом, ввод трех символов одним оператором ReadLn не отличается от ввода одной трехсимвольной строки. Вообще, тип Char похож на тип String. Строка состоит из символов, да и сам символ - это как бы очень короткая строка длиной в один символ.




Поделиться с друзьями:


Дата добавления: 2014-12-27; Просмотров: 373; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.011 сек.