- •Конспект лекций по информатике
- •Организация данных в эвм и основы программирования
- •1. Основные понятия языка программирования паскаль
- •1.1. Структурное программирование
- •1.2. Основные символы языка
- •1.3. Элементы языка
- •1.4. Интегрированная среда turbo pascal
- •1.5. Структура программы в turbo pascal
- •1.6. Определение типов
- •1.7. Операторы в программе
- •1.7.1. Операторные скобки
- •1.7.2. Операторы ввода
- •1.7.3. Оператор присваивания
- •1.7.4. Условный оператор
- •1.7.5. Пример простой программы
- •1.7.6. Оперетор безусловного перехода
- •1.8. Организация циклов
- •1.8.1. Использование операторов условного и безусловного перехода
- •1.8.2. Цикл с параметром
- •1.8.3. Цикл с предусловием - цикл while
- •1.8.4. Цикл с постусловием - цикл repeat
- •1.9. Оператор выбора варианта
- •1.10. Расположение операторов в программе
- •1.11. Концепция типов данных
- •2. Стандартные простые типы
- •2.1 Целый тип
- •2.1.1. Операции над данными целого типа:
- •2.2. Действительный тип
- •2.2.1. Операции над данными действительного типа:
- •2.3. Логический тип
- •Var p, q, r : Boolean;
- •2.3.1. Алгебра логики в Паскале
- •2.3.2. Законы алгебры логики в Паскале
- •2.4. Символьный тип
- •2.4.1. Символьные строковые константы
- •3. Нестандартные простые типы (определяемые пользователем)
- •3.1. Перечисляемый тип
- •3.2. Ограниченный тип (диапазон, интервал)
- •4. Процедуры и функции
- •4.1. Описание процедур
- •4.2. Стандартные процедуры
- •4.3. Описание функций
- •4.4. Стандартные функции
- •4.5. Итерация и рекурсия
- •4.6. Побочный эффект рекурсии
- •4.7. Предварительное описание (ссылки вперед)
- •5. Регулярные типы
- •5.1. Одномерный массив, или переменные с индексами
- •Алгоритмы сортировки массивов
- •1. Метод пузырька (метод обменной сортировки с выбором)
- •2. Сортировка выбором
- •3. Метод Шелла
- •4. Метод Хoopа
- •5.2. Многомерные массивы
- •5.3. Упакованные массивы
- •5.4. Строки
- •6. Множественные типы
- •6.1. Свойства множеств
- •6.2. Операции над множествами
- •7. Комбинированные типы
- •7.1. Описание записей и действия с ними
- •7.2. Оператор присоединения.
- •7.3. Записи с вариантами
- •8. Типизированная константа
- •8.1. Простая типизированная константа
- •8.2. Структурированная (сложная) типизированная константа
- •8.2.1. Типизированная константа массива
- •8.2.2. Типизированная константа записи
- •8.2.3. Типизированная константа множества.
- •9. Преобразование типов
- •9.1. Неявные преобразования типов
- •9.2. Использование стандартных функций для преобразования
- •9.3. Явные преобразования типов
- •9.5. Совместимость типов
- •10. Файловые типы
- •10.1. Определение файлового типа
- •10.2. Структура файла
- •10.3. Имя файла
- •10.4. Описание файлового типа
- •10.5. Файловая переменная
- •10.6. Операции над файлами
- •10.7. Типизированные файлы
- •10.8. Текстовые файлы
- •10.9. Нетипизированные файлы
- •10.10. Стандартные файлы inpuTиOutput
2.3.2. Законы алгебры логики в Паскале
Закон коммутативности (переместительный)
P Or Q = Q Or P
P And Q = Q And P
Закон ассоциативности (сочетательный)
(P Or Q) Or R = P Or (Q Or R)
(P And Q) And R = P And (Q And R)
Закон дистрибутивности (распределительный)
(P And Q) Or R = (P Or R) And (Q Or R)
(P Or Q) And R = (P And R) Or (Q And R)
Закон де Моргана
Not (P Or Q) = (Not P) And (Not Q)
Not (P And Q) = (Not P) Or (Not Q)
Правила отрицания:
Not(NotP) =P
Not (A = B) = A <>B
Not (A <= B) = A > B
Not (A< B) = A > = B и.т.д.
Пример.
Not ((A < = B) And (c = D)) = (A > B) Or (C < > D)
Обратим внимание на следующий факт. Логический тип в языке Паскаль задается как перечисляемый тип, содержащий лишь 2 стандартных идентификатора: TrueиFalse. Элементы перечисляемого типа упорядочены. Поэтому оказывается, чтоFalseменьше, чемTrue. Этим можно воспользоваться:
ForP:=FalseToTrueDoS;
S- оператор, он будет выполняться сначала для значения Р, равногоFalse, а затем для значенияTrue. Если надо наоборот, то:
For P:= True Downto False Do S;
Пример.
Написать программу для составления таблицы истинности для логической функции F=PAndNot(QOrR)AndT. Для каждого из значений логических переменныхP,Q,R,Tнеобходимо вычислить и напечатать значение функцииF.
Program logic;
Var P,Q,R,T,F:Boolean;
Begin
For P:=False To True Do
For Q:=False To True Do
For R:=False To True Do
For T:=False To True Do
Begin
F:=P And Not (Q Or T) And T
Write(‘P=’,P,’Q=’,Q,’R=’,R,’T=’,T);
Write(‘F=’,F);
writeln;
End;
End.
Логические выражения очень часто используются в программах. Без них трудно обойтись при записи условных операторов, а также циклов WhileиRepeat.
В языке Паскаль нельзя записать двухстороннее неравенство 1< X<2. Вместо этого надо воспользоваться логическим выражением: (X>1)And(X<2).
Нельзя записать X=Y=Z, а надо: (X=Y)And(X=Z).
Если надо записать, что Х не лежит в диапазоне от - 2 до +2, то:
Not ((X>-2) And (X>=2)) или (X<=-2) Or (X>=2)
Стандартные идентификаторы TrueиFalseможно использовать в качестве логических констант. Равноправные операторы.
If P Then S;
If P=True Then S;
Функция Odd(x)=TrueприX=2n-1,n=1,2,3,...
FalseприX=2n
2.4. Символьный тип
Символьная константа - это символ , заключенный в апострофы (чтобы представить апостроф , его повторяют дважды).
‘A’, ‘R’,’+, ‘7’
В описании констант:
Const Sim = ‘A’;
A = ‘A’;
S= ‘+’;
D1 = ‘;’;
Символьная переменная принимает значение одного символа. Она описывается в разделе переменных как CHAR.
Var Bukwa: Char;
B1, B2, R: Char;
В операторе присваивания:
Bukwa: = ‘+’;
R: =Bukwa;
К символьным данным применимы операции сравнения, т.к. все символы упорядочены, каждый символ имеет свой порядковый номер.
Ввод символьных данных имеет особенности: символьные данные вводят сплошной строкой, без пробелов, т.к. пробел - это тоже символ!!!
Var S1, S2, S : Char;
Read (S1 , S2 , S3 )
- - - - - - - - - - - - - - -
ABC —> S1 = ‘A’ , S2 = ‘B’ , S3 = ‘C’
A_B_C_ —> S1 = ‘A’ , S2 = _ , S3 = ‘B’
Формат: X : M
‘_’ : 7 - вывод семи пробелов.
Результатом операции сравнения является логическая константа TrueилиFalse. ‘A’<’B’
Встроенные функции:
Ord(x) - определяет порядковый номер символа Х,например,ORD(‘R’) = 82.
Chr(x) - определяет символ, стоящий по порядковому номеру Х,например,CHR(68)= ‘D’.
Эти две функции носят название функций преобразования.
Очевидно , что Chr(Ord(S)) = S; Ord(chr(68)) = 68.
Если С1 и С2 - переменные символьного типа, то С1<С2 , если Ord(C1) <Ord(C2)
Pred(x)- дает предыдущий символ но относительно к Х,например,.Pred(‘N’) = ‘M’.
Succ(x)- определяет следующий за Х символ,например,.Succ(‘R’) = ‘S’, Succ(‘9’) = ‘:’
Справедливы равенства:
Ord(false) = 0Ord(True) = 1
Succ (False) =True Pred (True) = False