Студопедия

КАТЕГОРИИ:


Архитектура-(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)

Var flag:Boolean




Begin

Else

End

Begin

<оператор 1>; <оператор 2>; ……….. <оператор m>

<оператор 1>; <оператор 2>; ……….. <оператор n >

end;

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

Программа для решения этой задачи приведена на рис. 7.5.4. В этой программе используются три переменных вещественного типа: sum – сумма покупки без учета скидок, skidka – величина трехпроцентной скидки, sumsk – стоимость покупки с учетом скидки.

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

На рис. 7.5.4 под текстом программы приведены результаты ее работы для обоих возможных случаев (сумма больше 1000 и сумма меньше 1000).


 
 

 


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

 

7.5.2. Логические переменные. Логические операции

Результатом операции сравнения двух чисел может быть величина, которая принимает одно из двух возможных значений: «истинно» (если указанное соотношение действительно выполняется) и «ложно» (если соотношение не выполняется). По-английски «истинно» и «ложно» пишется соответственно True и False. Константы и переменные, значениями которых может быть только эти две величины (True или False) называются логическими или булевскими константами и переменными. Название это дано в честь английского математика XIX века Джона Буля. Для описания таких переменных в языке Паскаль существует специальный тип – boolean. Пример описания логической переменной flag:

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

flag:=x>=15;

то есть переменной логического типа flag мы присваиваем значение операции сравнения x>=15. В случае, если указанное неравенство выполняется, значение переменной будет равно true. В противоположном случае ее значение будет равно false. Имя логической переменной, которой присвоено значение операции сравнения, можно подставлять в условный оператор вместо самой этой операции. Такой прием позволяет сделать программу более компактной в том случае, если одна и та же операция сравнения повторяется в программе несколько раз. Значения логической переменной можно выводить на экран компьютера оператором writeln подобно значениям числовых переменных. Можно присваивать значения true и false логическим переменным и напрямую: flag:=true;

Именно такой способ присваивания значений логической переменной мы и используем в следующей программе. Эта программа проверяет, имеется ли в ряду из трех целых чисел хотя бы одно положительное. Эти числа, как обычно, мы будем вводить с клавиатуры, а сообщение о результатах проверки будет выведено на экран компьютера. В программе, текст которой приведен на рис.7.5.5 используются три переменные целого типа x, y и z для вводимых числовых значений и одна переменная логического типа flag, назначение которой в данной программе мы рассмотрим ниже. Описание переменной или переменных, относящихся к одному типу, составляет отдельную группу, которую от следующей группы отделяет точка с запятой. При этом слово var, открывающее раздел описания переменных ставится только один раз.

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

 

 
 

 
 

 

 


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

 

Далее в программе расположен полный условный оператор, который проверяет итоговое значение переменной flag и если она имеет значение true, то выводится сообщение о наличии среди введенных чисел, хотя бы одного положительного, а иначе выводится сообщение о том, что все введенные числа отрицательны. На рис. 7.5.5 под текстом программы показаны результаты ее работы при различных исходных данных.

Над величинами логического типа можно производить логические операции. Результатом логических операций могут быть только логические величины, то есть величины, имеющие значения true и false. Всего в Паскале используется 4 логических операции: not (НЕТ) -логическое отрицание, and (И) – логическое И, or (ИЛИ) – логическое ИЛИ, xor (Исключающее ИЛИ). Эти операции подразделяются на унарные, то есть такие, которые производятся только над одной величиной, и бинарные, то есть те которые производятся сразу над двумя величинами. К первому типу операций относится not, ко второму – все остальные. При выполнении логических операций соблюдается, как и для арифметических операций, определенный приоритет. Наиболее высоким приоритетом обладает операция not, то есть она выполняется в первую очередь. Далее выполняется операция and.

Самый низкий приоритет имеют операции or и xor. Если в выражении необходимо изменить порядок выполнения логических операций, для этого используются скобки, потому что выражение, заключенное в скобки, обладает высшим приоритетом.

Для логических величин существует таблицы, в которой указаны результаты логических операций при различных исходных данных. Такая таблица называется таблицей истинности. Ниже приведена такая таблица для унарных (табл.1) и (табл.2) бинарных операций.

 

Таблица 1. Унарные операции.

 

X Not(X)
False True
True False

 

Из данной таблицы видно, что в результате операции not, производимой над любой величиной, ее значение изменяется на противоположное.

Если рассмотреть результаты, показанные в таблице 2, то можно сделать вывод о том, что для операции and значение будет равно true только тогда, когда обе исходных величины X и Y, над которыми производится эта операция (такие величины называются операндами) имеют значение true. Во всех остальных случаях результатом операции будет false. Для операции or значение будет true, если хотя бы один из операндов (или X или Y) имеет значение true. Результат операции or будет равен false только тогда, когда оба операнда имеют значение false. Для операции xor значение будет true, если значения операндов не совпадают. Если же значения операндов совпадают (вне зависимости от того, будут ли эти значения равны false или true) то итог операции будет равен false.

 

Таблица 2. Бинарные операции.

 

  Y X and Y X or Y X xor Y
False False False False False
False True False True True
True False False True True
True True True True False

 

Логические операции используют при составлении программ, в которых требуется проверить сразу несколько условий. Например, если некоторое действие должно выполняться при условии, что значение переменной a находится в диапазоне от 5 до 20, то есть a должно быть больше или равно 5 и меньше или равно 20 то это условие можно записать следующим образом:

(a>=5) and (a<=20).

При этом группируемые операции сравнения заключаются в скобки как в вышеприведенном выражении.

 

7.5.3. Оператор Case

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

Общий вид оператора case следующий:

Case < селектор > of

< Значение 1 >: < Вариант1 >;

< Значение 2 >: < Вариант2 >;

.......................................

< Значение n >: < Вариант N >;

Else < Вариант N+1 >;

end;

где Case, of, Else – служебные слова языка Паскаль. Словосочетание Case of переводится на русский как «В случае если». Селектором называется переменная целого или символьного типа (о символьных переменных мы расскажем более подробно в разделе «Работа с символами и строками»). Переменная-селектор может принимать различные значения. После заголовка в операторе идет перечень возможных значений переменной- селектора. Каждому из этих значений соответствует определенный вариант действий, который реализуется в том случае, если в программе селектор принимает это значение. Этот вариант указывается после двоеточия, отделяющего его от значения, и представляет собой простой или составной оператор. Если переменная-селектор не принимает ни одно из перечисленных в операторе case значений, то выполняется альтернативный вариант, который указан после служебного слова else. Обратите внимание на то, что в отличие от условного оператора if в операторе case перед вариантом с else ставится точка с запятой. Эта часть оператора (else с соответствующим ему вариантом) не является обязательной. Возможен сокращенный вариант оператора без этой части. Заканчивается оператор case служебным словом end, после которого ставится точка с запятой.

Разберем следующий фрагмент программы, в которой использован оператора case:




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


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


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



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




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