ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 21.03.2025
Просмотров: 1665
Скачиваний: 1
СОДЕРЖАНИЕ
Московский государственный социальный университет
Лекция 1: Введение в программирование.
Лекция 2: Язык Паскаль и системы программирования на Паскале.
Лекции 3-4: Базисные конструкции языка.
Лекции 5-6: Простые операторы и программы с линейной структурой.
Лекция 7: Операторы с условиями.
Лекция 8: Методика разработки простых программ.
Лекция 9: Концепция типа данных.
Лекция 10: Структурный тип - Массив.
Лекция 11: Структурный тип - Строка.
Лекция 15: Структурный тип - Множество.
Лекция 16: Структурный тип - Запись.
Лекции 17-19: Модули и их использование.
Лекция 20: Структурный тип - Файл.
Лекции 21-22: Основные задачи обработки файлов.
Лекция 23: Динамическая память и указатели.
Лекции 24-25: Использование указателей для представления динамически структур данных.
Лекции 26-27: Объекты и объектно-ориентированное программирование.
|
Замечание
|
Символ апостроф ' в строке символов представляется парой апострофов. Например: 'Это есть '' - апостроф'. |
Булевский (логический) тип Boolean содержит всего лишь два значения - true и false, обозначающие соответственно истинное и ложное значение. Значение типа Boolean часто используется для результата бинарных отношений между числами (типов integer или real), символами или строками. Это уже упоминаемые выше 6 отношений: <, <=, >, >=, =, <>.
Для чисел смысл этих отношений очевиден, при этом следует проявлять осторожность при использовании отношения = для сравнения чисел типа real, представляемых, как уже указывалось, приближенно.
Для символов - это отношения между кодами символов как целыми числами. Для строк - отношения для лексикографического порядка на строках. Лексикографический порядок строк - упорядоченность строк в соответствии с порядком кодов символов при сравнении строк посимвольно слева направо (короткая строка выравнивается до длинной строки добавлением пробелов справа).
Например: 'Турбо' < 'Турбо Паскаль' даёт результатом true, а 'F'>'G' - false.
Для данных типа Boolean допустимы булевские операции and, or, xor, not , представляющие связки "И", "ИЛИ", "ИСКЛЮЧИТЕЛЬНО ИЛИ", "НЕ" в соответствии с таблицей:
Таблица 1. Таблица истинности булевских операций.
|
x1 |
x2 |
x1 and x2 |
x1 or x2 |
x1 xor x2 |
not x1 |
|
True |
true |
true |
true |
false |
false |
|
True |
false |
false |
true |
true |
false |
|
False |
true |
false |
true |
true |
true |
|
False |
false |
false |
false |
false |
true |
Эти операции позволяют представлять более сложные отношения, в частности цепочки бинарных отношений. Например: (4<7) and (7<10) представляет цепочку отношений 4<7<10.
|
Замечание
|
Заметим, что использование скобок для указания приоритета операций - наиболее простой путь избежать ошибок, связанных с незнанием приоритетов, принятых по умолчанию для логических и прочих операций в Турбо Паскале. |
Рассмотренные выше операции над значениями стандартных типов являются частными случаями более общей конструкции, называемой выражением. Аналогом выражения является формула для вычисления значений. Выражение может содержать константы, переменные, операции (или функции), а также круглые скобки. Как и для операций, выражение вычисляет значение некоторого фиксированного типа в качестве своего результата. Тип результата называется типом выражения. Так могут быть выражения целого типа, вещественного типа, символьные, строковые выражения, и, наконец, булевские (логические) выражения.
Например: (4+ alfa)*3*(5-sqr(x-1)) - выражение типа integer (если alfa и x - переменные типа integer) либо типа real (если хотя бы одно из alfa и x имеют тип real).
В Турбо Паскале выражение - промежуточная конструкция, используемая для построения операторов.
Для некоторых из рассмотренных выше операций типы операндов не являются строго фиксированными. Это имеет место в частности, для арифметических операций (+, -, *, sqr) и для сцепления строк (+). В этих случаях действуют правила автоматического преобразования типов в выражениях:
Если в арифметических операциях или в бинарных отношениях между числами операнды имеют различные типы (real и integer), то операнд типа integer автоматически преобразуется к типу real;
Если в операции сцепления строк или в бинарных отношениях между строками операнды имеют различные типы (string и char), то операнд типа char автоматически преобразуется к типу string[1].
Заметим, что автоматические преобразования типов односторонние:
integer real или char string[1] .
Обратные преобразования не выполняются автоматически. Для явного выполнения преобразований между типами могут использоваться соответствующие процедуры или функции. Особо отметим стандартные процедуры преобразования между числами и строками:
Str(x, st) -преобразование числа х (вещественного или целого типов) в строку st.
Val(st, x, err) -преобразование строки st в число х (целое или вещественное) (err =0 при отсутствии ошибки преобразования).
Лекции 5-6: Простые операторы и программы с линейной структурой.
1. Оператор присваивания.
2. Простые операторы ввода и вывода.
3. Простые операторы управления вводом-выводом в текстовом режиме.
4. Примеры программ с линейной структурой.
1. Оператор присваивания.
Важнейшим из простых операторов Паскаля является оператор присваивания. Он позволяет изменять значение переменных в процессе выполнения программы без чего не может обойтись почти ни один алгоритм. Синтаксическая структура этого оператора:
< переменная > := < выражение >;
Оператор присваивания состоит из левой и правой частей, которые разделяются знаками присваивания (:=). Левая часть - это переменная любого типа, правая часть - выражение, совместимое по типу с переменной левой части. При выполнении этого оператора вычисляется значение выражения правой части и это значение становится значением переменной левой части. Таким образом, присваивание, это - "передача значения" справа налево.
Следует усвоить, что присваивание не является обычным равенством (почему и используется знак присваивания, отличный от равенства). Действительно, пусть Х - переменная типа integer. Тогда при выполнении последовательности присваиваний Х:=2; Х:=Х+5; переменная Х получит значение 7, в то же время, очевидно, что второе присваивание не является равенством. Заметим, что присваивание такого вида часто используется в программах, и в Турбо Паскале предусмотрен сокращенный вариант записи этих присваиваний (стандартные процедуры inc и dec):
inc(X,j) ~ X:=X + j; dec(X,j) ~ X - j; где j - любое выражение типа integer.
Если j=1, возможна и ещё более короткая запись: inc(X) или dec(X).
Совместимость левой и правой частей присваивания по типу означает либо равенство типов, либо случаи, когда тип выражения правой части автоматически преобразуется к типу левой части. Эти случаи автоматического преобразования типов (для известных нам стандартных типов) исчерпываются следующими:
Тип переменной левой части real, а тип выражения правой части - integer, т.е. преобразование вида real integer.
Тип переменной левой части string, а тип выражения правой части - char, т.е. преобразование вида string char.
Для согласования типа выражения с типом переменной левой части присваивания иногда могут потребоваться явные преобразования типов, которые можно выполнить с помощью стандартных функций Паскаля.
2. Простые операторы ввода и вывода.
Эти операторы Турбо Паскаля обеспечивают простейшие формы ввода с клавиатуры и вывода на экран дисплея в текстовом режиме. Они относятся к числу часто используемых операторов, особенно в простых программах (у начинающих программистов). К простым операторам ввода и вывода относятся операторы read, readln, write, writeln, реализующие так называемый потоковый ввод-вывод, при котором ввод и вывод рассматриваются как непрерывный поток символов и строк, "протекающий" через экран дисплея. На экране отображается последняя порция этого потока так, что нижняя строка экрана всегда остается свободной для отображения очередной строки вывода (вывод идёт в нижнюю строку экрана). Простые операторы ввода-вывода хорошо приспособлены для ввода и вывода чисел и строк.
Операторы ввода read и readln. Синтаксическая структура этих операторов:
read( < список переменных >);| readln( < список переменных >);
< список переменных > ::= <переменная> { ,< переменная >}
Переменные могут быть любого типа (из рассмотренных выше стандартных типов, кроме типа Boolean). Смысл этих операторов заключается в том, что вводимые с клавиатуры значения становятся значениями соответствующих переменных из списка, т.е. действие этих операторов подобно присваиванию. Когда процессор начинает выполнять операторы read или readln, программа приостанавливается и ожидает ввода символов с клавиатуры. При этом список переменных просматривается слева направо до его исчерпания. Каждое последующее вводимое значение должно отделяться от предыдущего значения хотя бы одним пробелом, и оно присваивается очередной переменной списка.
Набранная на клавиатуре последовательность символов накапливается в буфере клавиатуры и становится доступной процессору только после нажатия Еnter. До нажатия Enter можно вносить исправления в набранную последовательность, используя клавишу стирания предшествующего символа - "Забой". Выполнение операторов read и readln сопровождается эхо-повтором - отображением набираемых символов на экране дисплея.
Отличие оператора readln от read в том, что после считывания данных для последней переменной списка осуществляется переход к новой строке ввода. Процедуру readln можно использовать и без списка ввода, что вызовет просто переход на новую строку ввода.
|
Замечание
|
Следует избегать использования оператора read для ввода строк и символов, особенно внутри циклов. Используйте в этих случаях оператор readln . |