КАТЕГОРИИ: Архитектура-(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) |
Алгоритмы с разветвляющейся структурой (продолжение)
End
Else
ifa<1934 thenwriteln(‘Вы получаете утешительный приз’)
else
writeln(‘Сегодня приз получит другой’);
Здесь мы описали более сложное выражение, чем в предыдущих примерах, так как у нас условие имеет не 2 варианта, а уже 4: год рождения пользователя меньше 1980 года и больше или равен 1934 году (не получает приз) больше 1980 года и месяц рождения относится ко второй половине года (получает приз) больше 1980 года и месяц рождения относится к первой половине года (не получает приз) год рождения меньше 1980 и меньше 1934 года (получает утешительный приз)
В качестве примера можно рассмотреть программу, которая запрашивает у пользователя 2 числа и возводит в квадрат те из чисел, которые являются положительными:
program Example1;
{$APPTYPE CONSOLE}
{Программа возводит введённые пользователем числа в степень в том случае, если они оказываются неотрицательными}
uses
SysUtils;
Var a,b: real;
begin
Writeln('Vvedite pervoe chislo');
Readln(a);
If a>=0 then a:=a*a;
writeln(a);
Writeln('Vvedite vtoroe chislo');
Readln(b);
If b>=0 then b:=b*b;
writeln(b);
Readln;
end. Логический тип данных.
В языке TurboPascalесть специальный тип данных, который может принимать всего 2 значения – истину или ложь (trueили false). Переменные такого типа описываются следующим образом:
Var
a: boolean;
b: Boolean;
Переменным этого типа можно присваивать логические выражения, например,
a:=(x=10);
Если в программе xокажется равным 10, то значение переменной aстанет истиной (true), а иначе окажется ложью (false).
Значения переменных логического типа можно выводить на экран монитора, их можно сравнивать между собой, например, ifa>b. При этом значение trueсчитается больше значения false.
Поскольку логический тип данных Boolean относится к порядковым типам данных, то к логическому типу данных применимы знакомые нам функции:
Ord(a); //ord(false)=0, ord(true)=1;
Pred(a); //pred(true)=false;
Succ(a); //succ(false)=true;
Odd(x); //odd(3)=true, odd(2)=false;
Как пример применения логического типа данных можно рассмотреть следующий фрагменты программы:
Var
t: boolean;
a,b: integer;
Begin
t:=a>b
If a<>b then if t then writeln(‘Наибольшее= ',a)
else writeln(‘Наибольшее=’,b)
В этом фрагменте программы сначала высчитывается значение логической переменной типа boolean – t:=a>b. При этом, если a>b, то значение t будет равным trueи оператор ift выполнится, если a=b или a<b, то значение переменной t станет равным false.
Если значения a и b не равны, то программа выведет наибольшее из этих двух значений. Логические выражения и логические операции.
Чаще всего логический тип данных используется пи расчёте значения логического выражения. В таком выражении принимают участие логические операнды – логические высказывания. Логическое высказывание – это повествовательное предложение, в котором что-то утверждается. В отношении такого утверждения всегда можно однозначно сказать, истинно оно или ложно. Например, утверждение «Москва – столица России» истинно, а утверждение «Все солдаты РФ храбрые» однозначно ложное.
С такими высказываниями применяют операции: Операция «ИЛИ». Эта операция Логическое высказывание 1 ИЛИ Логическое высказывание 2 даст значение Истина в том случае, если хотя бы одно из логических высказываний будет истинным.
Возможные значения этой операции можно увидеть в таблице:
Как видите, логическую операцию «ИЛИ» в программе Turbo Pascal представляют как or.
Пример использования операции «ИЛИ»:
Нужно определить, равен ли х пяти: х=5,
либо больше ли х числа 96? Если это так и хотя бы в одном случае значение х удовлетворяет нашим условиям, то произвести над х какие-то операции.
В программе это выражение запишется так:
If (x=5) or (x>96) then набор операций
Заметьте, что оба логических условия обязательно необходимо заключать в скобки, иначе оператор orбудет работать непосредственно с наиболее близкими к нему значениями и будет выполняться 5 orx, что не будет иметь смысла. Операция «И». Эта операция Логическое высказывание 1 И Логическое высказывание 2 даст значение Истина в том случае, если оба из логических высказываний будут истинны.
Возможные значения этой операции можно увидеть в таблице:
Логическую операцию «И» в программе Turbo Pascal представляют как and.
Пример использования операции and:
Нужно определить, принадлежит ли x диапазону [-27;-15] или [896;12507].
В программе это будет указано так:
If ((x>=-27) and (x<=15)) or ((x>=896) and (x<=12507)) then набор операций
Здесь указывается 2 диапазона и между ними ставится оператор or. Получается, что всё выражение вычисляет, принадлежит ли х одному из диапазонов. А сами диапазоны задаются с помощью логического оператора and:
(x>=-27) and (x<=15)
и
(x>=896) and (x<=12507) Операция «НЕ». Эта операция применяется к одному операнду и меняет его значение на противоположное:
НЕ(Логическое высказывание) даст значение Истина в том случае, если само логическое высказывание будет иметь ложное значение, и даст Ложь, если высказывание будет истинным.
Возможные значения этой операции можно увидеть в таблице: a Not(a) false true true false
Логическую операцию «НЕ» в программе Turbo Pascal представляют как not.
Чаще всего операцию not применяют как вспомогательную. Например, нам нужно, чтобы xне принадлежал указанному диапазону из предыдущего примера.
Тогда условие запишется так:
t:=((x>=-27) and (x<=15)) or((x>=896) and (x<=12507)) //t—логическая переменная, которая примет определённое значение (false или true) в зависимости от значения х.
If not(t) then набор операций Операция «ИЛИ-НЕ». Эта операция Логическое высказывание 1 ИЛИ-НЕ Логическое высказывание 2 даст значение Истина в том случае, если логические высказывания будут разными по значениям и даст Ложь, если будут равны друг другу.
Возможные значения этой операции можно увидеть в таблице:
Логическую операцию «ИЛИ-НЕ» в программе Turbo Pascal представляют как XOR.
Как видим, операция XOR отличается от операции AND только в 4-й строчке таблицы, когда оба логических значения равняются true.
Пример использования операции XOR:
Мама попросила дочь в магазине купить ряженку фирмы «Вологодские кружева» или любые сырочки, но и ряженку и сырочки вместе покупать не нужно. Программа показывает, будет ли мама довольна покупкой своей дочери:
Var
t1: boolean; //покупка ряженки (если купила, t1=true)
t2: boolean; //фирма ряженки (если фирма ряженки «Вологодские кружева», t2=true)
t3:boolean; //покупка сырочков (если купила, t3=true)
…
If ((t1 and t2) XOR (t3)) then writeln(‘Мама довольна’)
elsewriteln(‘Мама не довольна’)
Теперь давайте потренируемся выполнять логические условия по заданиям.
Записать выражения на языке TurboPascal, которые возвращают значение истина в результате своего выполнения: 0<x<1: (x>0) and (x<1) x=max(x,y,z): (x>y) and (x>z) x <>(не равно) max(x,y,z): (x<=y) or (x<=z) xне принадлежит диапазону [0;1]: (x<0) or (x>1) Каждое из чисел x,y,z положительное: (x>0) and (y>0) and (z>0) Хотя бы одно из чисел x,y,z положительное: (x>0) or (y>0) or (z>0) Ни одно число не является положительным: (x<=0) and (y<=0) and (z<=0) Только одно из чисел положительное: (x>0) XOR (y>0) XOR (z>0) Из чисел x,y,z только 2 числа равны между собой: (x=y) XOR (y=z) XOR (x=z) Число p делится нацело на число q: (pmodq=0) and (q<>0) Самостоятельное задание. Задача 1.
В программе вводятся 3 числа – x, y и z.
Записать программу, вычисляющую выражение
min(x,y,z)*x3/(z+y)
в зависимости от условия задачи. Если условие задачи выполняется, программа выводит результат вычислений, если условие не выполняется, то программа выводит на экран сообщение «Условие не выполняется».
Дата добавления: 2014-01-07; Просмотров: 486; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |