ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 21.03.2025
Просмотров: 1661
Скачиваний: 1
СОДЕРЖАНИЕ
Московский государственный социальный университет
Лекция 1: Введение в программирование.
Лекция 2: Язык Паскаль и системы программирования на Паскале.
Лекции 3-4: Базисные конструкции языка.
Лекции 5-6: Простые операторы и программы с линейной структурой.
Лекция 7: Операторы с условиями.
Лекция 8: Методика разработки простых программ.
Лекция 9: Концепция типа данных.
Лекция 10: Структурный тип - Массив.
Лекция 11: Структурный тип - Строка.
Лекция 15: Структурный тип - Множество.
Лекция 16: Структурный тип - Запись.
Лекции 17-19: Модули и их использование.
Лекция 20: Структурный тип - Файл.
Лекции 21-22: Основные задачи обработки файлов.
Лекция 23: Динамическая память и указатели.
Лекции 24-25: Использование указателей для представления динамически структур данных.
Лекции 26-27: Объекты и объектно-ориентированное программирование.
В языках программирования имена часто используются для обозначения переменных, т.е. объектов, способных изменять своё значение в процессе выполнения программы. В Паскале имена могут использоваться даже для обозначения именованных констант (мнемоническое имя константы, которое легче запомнить, чем значение константы).
Имена (кроме стандартных имён) выбирает программист в процессе разработки программы и этот выбор должен облегчать чтение текста программы: имя должно "говорить само за себя" - пояснять смысл используемого объекта. При этом имена должны быть одновременно и достаточно выразительными и достаточно лаконичными (краткими). Синтаксические ограничения в выборе имени даёт определение имени:
<имя> ::= <латинская буква или символ _> { < латинская буква >| <цифра >| _ }
Примеры имён: alfa, F1, test_1m; неправильные имена: тест1, 2_vol.
Некоторые имена являются стандартными именами Паскаля. К их числу относятся имена стандартных функций, процедур, типов и др. Следует особо отметить, что стандартные имена не являются ключевыми словами (т.е. они могут быть использованы в ином смысле, хотя это не следует делать без особой надобности !). Примеры таких стандартных имён: write, odd, integer, boolean. Заметьте, что русские буквы нельзя использовать в именах Паскаля!
Существуют только три конструкции Паскаля, в которых разрешено использовать любые символы (в том числе и русские буквы):- это символьные константы, строковые константы (литералы) и комментарии.
Символьные и строковые константы - это, соответственно, один символ или любые последовательности символов кодовой таблицы, заключенные в апострофы. Пример: ' Это - строка символов'. Литералы - важные конструкции языка, с которыми мы будем еще неоднократно иметь дело. Они используются в операторах ввода-вывода и при обработке строк.
Комментарии - любые последовательности символов кодовой таблицы (не содержащие фигурных скобок), заключенные в фигурные скобки. Пример комментария: { Программа на TURBO PASCAL}. Заметим, что фигурные скобки есть ограничитель для комментариев, и использовать их ни в каком другом смысле нельзя.
|
Замечание
|
Некоторые комментарии зарезервированы и представляют директивы компилятора. Эти комментарии начинаются символом $. Например: {$R+} -включить контроль границ диапазона. |
Незарезервированные комментарии вы вправе использовать в любом месте программы. Такие комментарии следует использовать для пояснений текста программы, делая этот текст более понятным. Никаких других функций эти комментарии в программе на Паскале не несут.
3. Структура программы.
Любая программа на Турбо Паскале имеет одну и ту же общую структуру:
[ program < имя программы > ; ]
[ <раздел описаний > ]
begin
< раздел операторов >
end.
Эта структура состоит из заголовка программы (необязательного), раздела описаний (который может в особых случаях отсутствовать) и раздела операторов, содержащего хотя бы один оператор.
Заголовок начинается ключевым словом program и имеет единственное назначение - идентифицировать программу. Мы в дальнейшем всегда будем его использовать. Имя программы - идентификатор, выбираемый программистом.
В разделе описаний должны быть описаны все нестандартные имена, используемые далее в разделе операторов этой программы. Раздел описаний реализует принцип сильной типизации, согласно которому каждый используемый объект должен быть описан и каждый объект может быть только одного типа. Описанию подлежат: типы, метки, переменные, именованные константы, процедуры, функции, модули, объекты (классы). Синтаксическая форма описаний зависит от вида описываемого объекта. Общие свойства описаний:
Каждый вид описания начинается некоторым ключевым словом (характеризующим вид описываемого объекта). Например: var - для описания переменных, type - для описания типов, function - для описания функции.
Порядок описаний произвольный (за исключением uses -описания используемых модулей, которое должно быть первым описанием в программе).
Объекты со стандартными именами не описываются (они считаются уже описанными), если эти объекты используются в их стандартном смысле.
Остановимся более подробно на форме описания для переменных и констант. Описание переменных программы использует следующую синтаксическую структуру:
<описание переменных одного типа > ::= var < список переменных > : < тип > ;
где: < список переменных > ::= <имя переменной > {, < имя переменной > }
В разделе описаний может быть несколько записанных подряд описаний переменных разных или одинаковых типов, при этом ключевое слово var достаточно указать лишь один раз. В качестве типа могут указываться имена типов или собственные описания типа. Например:
var math,phys,phil,hist:integer;{баллы по предметам}
average:real; {средний балл}
Константы следует описывать только, если в программе используются ссылки на эти константы по их мнемоническому имени. Синтаксическая структура описания константы имеет вид:
< описание константы > ::= const < имя константы> = < значение константы > ;
Например: const g = 9.8;
Допустим также промежуточный между переменной и константой вид, называемый типизированной константой. По своей сути - это переменные с начальным значением (инициализированные переменные), использование которых часто представляет большие удобства. Синтаксическая структура описания этих констант:
< описание типизированной константы > ::= const < имя >:<тип> = <значение >;
Например: const name:string = ''; { name, инициированная как пустая строка }
Типизированные константы инициализируются только в начале работы программы, а при выходе из подпрограмм сохраняют прежние значения.
В разделе операторов (заключенных в операторные скобки begin - end) записываются операторы, реализующие алгоритм программы. В последовательности операторов один оператор отделяется от другого символом ; (точка с запятой).
|
Замечание
|
Точка с запятой после оператора, за которым следует end, until может быть опущена. |
Оператор представляет самостоятельный элемент действия. Операторы Паскаля могут быть простыми либо составными. Простые операторы – “не расщепляются” на более мелкие операторы, а составные операторы, наоборот, содержат в своем составе другие (простые или составные) операторы. Таким образом, сложные операторы (а, следовательно, и сложные действия) имеют вложенную структуру, комбинирующую в одну конструкцию более простые операторы. Для объединения операторов в сложный оператор помимо последовательного соединения используют и другие важные способы композиции (условные операторы, циклы и др.), которые мы рассмотрим ниже.
|
Замечание
|
Следует различать понятия "оператор" и "операция". Операция в Паскале не является самостоятельным элементом действием. Она может лишь входить в состав операторов. В операциях используют другой способ композиции - суперпозицию, т.е. подстановку операций в качестве операндов в другие операции (при соответствии типов). |
Раздел операторов (как и вся программа) заканчивается символом точка. Этот символ ограничивает текст программы, так что вся последующая информация (если она есть), не воспринимается компилятором и не вызывает никаких действий.
Заметим также, что в структуре программы могут использоваться комментарии (их разрешается вставлять в любую точку структуры программы). Для создания ясных, понятных, легко читаемых текстов программ рекомендуется использовать комментарии для пояснения смысла всей программы (а также функций, процедур, модулей), переменных (особенно входных и выходных), отдельных фрагментов вычислений.
4. Стандартные типы данных, операции, выражения.
Хотя в Турбо Паскале имеется много различных стандартных типов, для простых программ (с которых мы начинаем изучение конструкций Турбо Паскаля) будет достаточно знание лишь 5 стандартных типов:
integer - целые числа;
real - вещественные числа;
char - символьный (литерный) тип;
string - строковый тип;
boolean - булевский (логический) тип.
Целые числа типа integer - это числа диапазона -32768 .. 32767, над которыми допустимы обычные операции арифметики: сложения (+), вычитания (-), умножения (*). Для целочисленного деления предусмотрена операция div, а для получения остатка от деления (остатка по модулю) - операция mod. Примеры: 42 div 8 даёт результат 5, а операция 42 mod 8 даёт результат 2. Константы типа integer - обычные целые числа возможно со знаком. В этих числах недопустимы точка или запятая.
Синтаксическое определение целых чисел имеет вид:
< целое число > ::= [ -| + ] { < цифра > }
В отличие от целых чисел вещественные числа типа real представляются в памяти компьютера приближенно. Константы типа real - числа, возможно с дробной частью (отделяемой от целой части точкой). Дробная часть у этих чисел может и отсутствовать. Например:
1.072359001E -0018 { число, соответствующее 1.072359001*10-18 }
Операции сложения, вычитания, умножения для типа real обозначаются теми же символами, что и для чисел типа integer. Операция деления обозначается символом / и является делением с остатком (результатом является также число типа real).
Типы real и integer - это существенно различные типы чисел. Однако имеются и операции, которые преобразуют типы данных, такие как round(x) - округление вещественного числа x до ближайшего целого, trunc(x) - отбрасывание у вещественного числа x дробной части.
Для типов integer и real допустима также операция возведения в квадрат sqr, и извлечения квадратного корня sqrt (результатом этой операции всегда является число типа real, если этот результат существует).
Символьный тип имеет своими значениями (константами) символы кодовой таблицы ASCII (всего 256 символов). Некоторые из этих символов имеют привычное изображение и могут использоваться как элементы различных текстов (например, буквы, цифры, разделительные символы). Это - информационные символы. Однако в кодовой таблице есть и управляющие символы - неотображаемые при печати текстов (например, символ конца страницы, конца строки, табуляции и др.). Константы информационных символов представляются как символы, заключенные в апострофы. Например: 'G', 'П', 'k', 'л', '4'. Заметим, что '4' не является числом 4, это - символ 4. Важнейшие функции над символами: это ord - преобразование символа в код (номер символа в кодовой таблице) и chr - преобразование кода в символ. Вместо функции chr можно также использовать операцию, обозначаемую знаком #. Например #9 - табуляция, #12 - прогон страницы, #68 - символ 'D'. Таким образом, операция # даёт более универсальный способ представления символов кодовой таблицы.
Строковый тип имеет своими значениями (константами) последовательности символов кодовой таблицы (в том числе и одиночные символы). Строковые константы, как и символьные константы, заключаются в апострофы. Тип string включает все строки длиной до 255 символов, в том числе пустую строку, обозначаемую как ''. В строковом типе можно указывать максимальную длину строки, меньшую 255 в форме string[<длина>], где <длина> - целое число без знака, не превышающее 255. Основная операция над строками - операция сцепления (конкатенация), обозначаемая символом +. Она присоединяет к концу первой строки вторую строку. Например: 'Турбо' +' Паскаль' дает результатом строку 'Турбо Паскаль'.