- •А.Д. Кононов, а.А. Кононов основы программирования на языке паскаль.
- •Введение
- •Понятие о языках программирования
- •Базовые элементы языка паскаль
- •Алфавит языка
- •Типы данных
- •Простейшие конструкции языка Паскаль
- •3. Операции и выражения
- •Арифметические операции
- •Логические операции
- •Операции отношения
- •Операции со строками
- •Выражения
- •Стандартные функции языка паскаль
- •Арифметические функции
- •4.2. Функции преобразования типа
- •Функции для величин порядкового типа
- •5. Структура программы
- •Заголовок программы
- •5.6. Раздел объявления переменных
- •5.7. Раздел объявления процедур и функций
- •5.8. Раздел операторов
- •Заключение
- •Знаки пунктуации
- •Служебные (зарезервированные) слова
- •Диагностика ошибок трансляции
- •Основы программирования на языке паскаль
- •394006, Воронеж, ул. 20-летия Октября, 84
3. Операции и выражения
Все операции в языке Турбо Паскале можно разделить на четыре группы:
- арифметические;
- логические;
- операции отношения;
- операции со строками.
Если в операциях используются несколько операндов, то их типы должны быть либо идентичными, либо совместимыми.
Арифметические операции
Арифметические операции применимы только к величинам целых и вещественных типов (табл.3).
Отметим, что три первые операции дают результат целого типа, если конструкции (константы, переменные, стандартные функции), над которыми выполняются эти действия, целого типа; в противном случае результат имеет вещественный тип (табл.3). При использовании знаков операций DIV или MOD они должны быть отделены от операндов хотя бы одним пробелом.
Пример:
A MOD B {если, например A=10 и B=3, то результат =1}
C DIV D {если, например C=10 и D=3, то результат =3}
13 DIV - 4 = - 3 13 MOD -4 = 1
Всегда А MOD В = А- (А DIV В) * В
Таблица 3
Зависимость типа результата от типа операндов
Знак |
Операция |
Тип операндов |
Тип результата |
+
-
*
/
DIV
MOD |
сложение
вычитание
умножение
деление
деление целых чисел
вычисление остатка от деления целых чисел |
целый хотя бы один вещественный целый хотя бы один вещественный целый хотя бы один вещественный целый или вещественный
целый
целый |
целый вещественный
целый вещественный
целый вещественный
вещественный
целый
целый |
Логические операции
Для математического описания работы вычислительных устройств, синтеза и анализа схем широко используется алгебра логики. В основе решения логических задач лежит несколько основных логических операций, применяемых в алгебре логики. Алгебра логики – определенная часть математической логики, часто называемая исчислением высказываний.
Под высказыванием понимается всякое предложение, в котором содержится смысл утверждения (истинности) или отрицания (ложности). Одно и то же высказывание не может быть одновременно истинным и ложным или не истинным и не ложным. Отдельные высказывания можно обозначить заглавными буквами латинского алфавита A, B, C, … Если высказывание (суждение) А истинно, то, например, А = 1. Если С = 0, то высказывание С ложно.
Итак, рассматриваются только два значения высказывания: истинное или ложное (1 или 0). Такое условие алгебры логики приводит к соответствию между логическими высказываниями в математической логике и двоичными цифрами в двоичной системе счисления, что позволяет описывать работу схем и блоков машины и проводить их анализ и синтез с помощью алгебры логики.
Основными логическими операциями являются логическое отрицание, логическое умножение, логическое сложение, сложение по модулю 2.
Логические операции применяются к величинам логического типа, результат операций также логического типа.
В Паскале используются следующие логические операции:
NOT («не» - отрицание), AND («и» - логическое умножение, конъюнкция), OR («или» - логическое сложение, дизъюнкция), XOR (исключающее или). Операнды и результат могут принимать одно из значений: TRUE (истина) или FALSE (ложь).
Результаты операций определяются таблицей истинности (табл.4)
Таблица 4
Таблица истинности
X |
Y |
NOT X |
X AND Y |
X OR Y |
X XOR Y |
TRUE TRUE FALSE FALSE |
TRUE FALSE TRUE FALSE |
FALSE FALSE TRUE TRUE |
TRUE FALSE FALSE FALSE |
TRUE TRUE TRUE FALSE |
FALSE TRUE TRUE FALSE |
Логическое отрицание (операция НЕ, инверсия).
Пусть имеется некоторое высказывание А. Отрицание этого высказывания обозначается , которое принято читать: не А.
Если высказывание А истинно (А=1), то высказывание ложно ( = 0). Если высказывание А ложно (А=0), то высказывание истинно ( =1 ). Таким образом, для логического отрицания справедливо следующее правило: = 1; = 0.
Логическое умножение (операция И, конъюнкция).
Операцию логического умножения двух переменных А и В обозначают А/\В (принято читать: А и В). Высказывание А/\В истинно только в том случае, если А истинно (А=1) и В истинно (В=1), то есть А/\В =1. Во всех остальных случаях это высказывание ложно, т.е. А/\В = 0. Следовательно, при логическом умножении справедливо следующее правило: 0/\0 =0; 0/\1=0; 1/\0=0; 1/\ 1 =1.
Правила логического умножения справедливы не только для двух сомножителей, но и для любого их количества, т.е. А/\В/\С/\D/\ ….
Логическое сложение (операция ИЛИ, дизъюнкция).
Операцию логического сложения двух переменных А и В обозначают А\/В (принято читать: А или В). Высказывание А\/В истинно (А\/В =1) в том случае, если хотя бы одно из значений А или В истинно (А =1 или В =1). Если же это условие не выполняется, то высказывание ложно (А\/В =0) Таким образом, при логическом сложении справедливо следующее правило:
0\/0 =0; 0\/1 =1; 1\/0 =1; 1\/1 =1.
Правило логического сложения справедливо не только для двух слагаемых, но и для любого их числа, т.е. А\/В\/С\/D\/….
Сложение по модулю 2 (ИЛИ исключающее).
Операцию сложения двух переменных А и В по модулю 2 обозначают А В. Высказывание А В истинно ( А В =1) в том случае, если только одно из переменных А или В истинно ( А =1, В =0 или А =0, В =1). Если же это условие не выполняется, то высказывание ложно (А В=0). Таким образом, сложение по модулю 2 выполняется по такому правилу:
0 0 =0; 0 1 =1; 1 0 =1; 1 1 =0.
На основе рассмотренных логических высказываний можно представить любое сложное высказывание, то есть любую логическую связь можно выразить посредством логических операций сложения, умножения и отрицания.
В алгебре логики существуют правила, с помощью которых производятся преобразования формул.
Основные правила преобразования следующие:
А /\ = А /\ 0 =0;
А \/ = А \/ 1 =1;
А /\ А = А \/ А = А /\ 1 = А \/ 0 = А;
А /\ В = В /\ А; А \/ В = В \/ А;
(А /\ В) /\ С = А /\ (В /\ С) = А /\ В /\ С;
(А \/ В) \/ С = А \/ (В \/ С) = А \/ В \/ С;
(А /\ В) \/ С = (А \/ С) /\ (В \/ С);
(А \/ В) /\ С = (А /\ С) \/ (В /\ С);
= \/ ; = /\ ;
А В= (А /\ ) \/ ( /\ В) = (А \/ В) /\ ( \/ );
Если подставить в эти выражения значения 0 и 1 для всех переменных, то можно убедиться в справедливости рассмотренных формул алгебры логики.
При разработке узлов ЭВМ смысл ложных или истинных высказываний А, В, С во внимание не принимается; аппарат логики используется для выполнения заданных логических преобразований. Например, арифметические преобразования (сложение, вычитание) задаются в виде совокупности логических преобразований над аргументами.
Упражнения к разделу
Упражнение 1. Какие операции определены над переменными булевского типа?
Упражнение 2. Объясните ошибки в следующих записях:
а) 1 and 0 б) true + false в) true < 0 г) not 2 = 5
д) true or (1/0 > 1) е) x > 0 or y =4 ж) not not b or or d
Упражнение 3. Какие из приведенных ниже записей являются правильными с точки зрения языка Паскаль?
а) ‘A’ < ‘C’ б) ‘1’ < ‘9’ в) FALSE < TRUE
г) ‘A’< ‘B’ and 1 < 2 д) ‘0’ or ‘9’ е) (‘D’ > ‘C’) and (1 < 2)
Упражнение 4. Указать порядок выполнения операций при вычислении выражения:
а) a and b or not c and d
б) (x >= 0) or t and odd(x) or (y*y<> 4)
Упражнение 5. Вычислить следующие выражения при a = true и b = false:
а) a or b and not a б) (a or b) and not a
в) not a and b г) not (a and b)
Упражнение 6. Доказать тождества:
а) a and ( not a) = false б) a or ( not a) = true
в) not (not a) = a г) true or a = true
д) false and a = false е) a or a = a.
Упражнение 7. Записать на Паскале отношение, истинное при выполнении указанного условия и ложное в противном случае:
а) целое к делится на 7;
б) уравнение ax2 + bx + c =0 ( a≠0 ) не имеет вещественных корней;
в) точка ( x,y ) лежит вне круга радиуса r с центром в точке ( 1, 0);
г) 0 < x < 1;
д) x = max (x,y,z);
e) x лежит вне отрезка [ 0,1];
ж) x принадлежит отрезку [ 2,5] или [ -1,1];
з) значение x принадлежит одному из отрезков [ -5, -4], [ 0,3], [ 4.2, 7]