ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 21.03.2025

Просмотров: 1648

Скачиваний: 1

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

СОДЕРЖАНИЕ

Московский государственный социальный университет

Часть I

Лекция 1: Введение в программирование.

Лекция 2: Язык Паскаль и системы программирования на Паскале.

Лекции 3-4: Базисные конструкции языка.

Лекции 5-6: Простые операторы и программы с линейной структурой.

Лекция 7: Операторы с условиями.

Лекция 8: Методика разработки простых программ.

Лекция 9: Концепция типа данных.

Лекция 10: Структурный тип - Массив.

Лекция 11: Структурный тип - Строка.

Лекция 15: Структурный тип - Множество.

Лекция 16: Структурный тип - Запись.

Часть II

Лекции 17-19: Модули и их использование.

Interface

Interface

Implementation

Interface

Implementation

Лекция 20: Структурный тип - Файл.

Лекции 21-22: Основные задачи обработки файлов.

Interface

Implementation

Лекция 23: Динамическая память и указатели.

Лекции 24-25: Использование указателей для представления динамически структур данных.

Лекции 26-27: Объекты и объектно-ориентированное программирование.

Interface

Implementation

Оглавление

Часть I 3

Часть II 53

Замечание

Символ апостроф ' в строке символов представляется парой апострофов. Например: 'Это есть '' - апостроф'.

Булевский (логический) тип 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 .