- •1. Структура (состав) языка
- •2. Алфавит
- •3. Лексическая структура языка
- •4. Структура программной единицы
- •5. Стиль записи программ на языке Паскаль
- •6. Типы данных в Паскале
- •6.3 Классификация типов данных в Турбо Паскале
- •6.4 Порядковые типы
- •6.4.2 Булевский (логический) тип
- •Repeat тело_цикла until (логическое_выражение);
- •6.4.3 Целые типы Выделяют целые типы ------------- со знаком – shortint, integer, longint)
- •1 Группа функций:
- •2 Группа функций:
- •3 Группа функций:
- •6.4.4 Перечисляемый тип.
- •6.4.6 Символьный тип
- •6.5 Вещественные типы.
- •7. Выражения в языке Паскаль.
- •10. Вычисление по формулам.
- •10.1 Оператор присваивания .
- •10.2 Характер использования переменных в математике и в программах.
- •10.3 Бесконечности
- •10.4 Нестандартные операции
- •6.6 Строки
- •1) Операции присваивания и сравнения.
- •3) Заполнение строки одним символом
- •4) Стандартные функции и процедуры для работы со строками:
- •5) Подпрограммы преобразования из строкового представления в числовое и наоборот:
- •8. Совместимость и преобразование типов.
- •Совместимость типов
- •8.2 Тип результата арифметических выражений.
- •8.3 Преобразование (приведение) типов и значений.
- •8.3.1 Явное преобразование (приведение) типов.
- •8.3.2 Неявное преобразование или приведение типов.
- •9. Простейший ввод-вывод на Паскале
- •Стандартные файлы Input и Output
- •9.2 Процедуры ввода информации (с клавиатуры.
- •9.3 Процедуры вывода в тр.
- •10. Вычисление по формулам (продолжение)
- •10.6. Уточнение многоместных (n - арных) операций
- •11. Средства языка Паскаль для циклов с известным числом повторений.
- •12. Табулирование функций
- •13. Разветвляющиеся алгоритмы
- •13.1 Таблица ситуаций и команда выбора.
- •13.2 Средства языка Паскаль для программирования разветствляющихся алгоритмов
- •13.4 Описание ситуаций
- •13.5 Запись команды выбора (case) (уточнение таблицы ситуаций) с помощью набора команд ветвления
- •13.6 Запись последовательных команд ветвления в случае, когда соседние зависимые ситуации имеют общие признаки.
- •13.6.1 Восходящий подход
- •13.6.2 Нисходящий подход
- •14. Циклы с неизвестным числом повторений
- •15. Структурированные типы данных. Массивы
- •15.1 Классификация (особенности) структурированных типов данных
- •15. 2. Определение массива
- •15.3 Объявление массива на Турбо Паскале
- •15.4 Хранение элементов массива. Доступ к элементам и частям массива
- •15.5 Уточнение команд обработки массива
- •16. Правила разработки цикла
- •15. 6 Действия над массивами
- •17. Множества.
- •17.1 Множества в Паскале и в математике. Сходства и различия между ними.
- •17.2 Объявление множества на Паскале
- •17.3 Присваивание значений множествам. Конструктор множества
- •17.4 Операции над множествами.
- •17.5 Сравнение множеств.
- •17.6 Применение множеств.
- •18. Вспомогательные алгоритмы (подпрограммы).
- •18.1 Три способа записи повторяющихся команд
- •18.2 Понятие блока
- •18.3 Объекты подпрограммы (то, над чем выполняются действия).
- •18.4 Свойства локальных и глобальных объектов
- •Свойства глобальных объектов:
- •18.5 Выделение памяти под локальные и глобальные переменные
- •18.6 Передача параметров в подпрограммы.
- •Фактические параметры
- •18.7 Подпрограммы, возвращающие значение (функции)
- •18.8 Особенности использования процедур и функций в Турбо Паскале
- •18.9. Побочный эффект (side effect)
- •18.10 Опережающее определение процедур и функций.
- •18.11 Рекурсия и итерация.
- •18.12 Процедуры и функции как параметры.
- •18.13 Директивы подпрограмм
- •Директива forward
- •Директивы far и near
- •Директива external
- •Директива assembler
- •Директива inline
- •Директива interrupt
- •Отладка и тестирование программ, содержащих подпрограммы
- •18.14.1 Нисходящее тестирование и подпрограммы-заглушки
- •18.14.2 Восходящее тестирование и программы-тестеры
- •18.14.3 Рекомендации по отладке программ, содержащих подпрограммы
- •18.14.4 Использование отладчика для трассировки процедур
- •18.14.5 Область действия идентификаторов и переменные в окне Watch
- •18.15. Получение доступа а параметрам командной строки, запуск внешних программ.
- •19. Записи.
- •19.1 Понятие записи. Объявление записи в программе.
- •19.2 Доступ к полям записи.
- •19.3 Оператор with
- •19.4 Действия над записями
- •19.5 Записи с вариантами
- •Замечание1:Порядок частей – именно такой, как показано: фиксированная часть всегда первая (или единственная)
- •19.6 Типизированные константы - записи
- •20. Модули (Unit)
- •20.1 Что такое модуль?
- •20.2 Зачем нужны модули и какие есть средства, аналогтчные (в какой-то мере) модулям
- •Интерфейсная секция
- •Секция реализации
- •Секция инициализации
- •Подключение других модулей к данному (модулю)
- •20.4 Ссылки на описания модуля
- •Пример создания модуля
- •Использование модулей. Режимы Compile, Build и Make при компиляции модулей
- •Косвенные и перекрестные ссылки на модули
- •Пример модуля (стек)
- •Модули и большие программы
3. Лексическая структура языка
Минимальная конструкция языка, имеющая смысл, называется лексемой (аналог в обычном языке – слово). Фразы (аналог в обычном языке – предложение) на языке Паскаль записываются с использованием лексем и разделителей.
Замечание: Правильнее говоря, разделители являются особым типом лексем вместе со знаками операций и ключевыми (служебными) словами. Эти особого вида лексемы заранее известны (задаются) компилятору.
В качестве разделителей используются пустые и спец. символы. При этом между двумя соседними лексемами должен находиться хотя бы один разделитель. Сами лексемы строятся из символов алфавита.
Пример:
-
разделители,
-
лексемы (for, to,
do – лексемы типа
зарезервированное слово, i
– лексема типа идентификатор, 1 и 10 –
лексемы типа константа).
Анализ правильности слов (лексем) в программе выполняет программа- parser (сканер) (строит и передает синтаксическому анализатору таблицу кодов лексем), а анализ правильности предложений (операторов) языка выполняет программа – scanner (синтаксический анализатор) (на основе таблицы кодов лексем и синтаксических правил проверяет правильность слов и их порядок в предложении).
В Паскале имеются следующие классы лексем: служебные слова, идентификаторы, метки константы, комментарии, директивы.
Служебные (зарезервированные) слова (begin, end, type, var ….)– за ними в языке закреплены определенные функции и они не должны использоваться в других целях. То есть нельзя, например, использовать служебные слова в качестве идентификаторов в программе:
Type:=10;
Begin:=a;
или
Program str;
...
сообщение компилятора «Ожидается
точка»
begin
str (...); Ошибка: здесь имя программы совпало с именем процедуры STR.
end.
Идентификаторы – используются в программах на Паскале для обозначения имен следующих конструкций: констант, переменных, процедур, функций, меток, модулей, объектов, программ, полей в записи. В Паскале ограничений на длину идентификатора не накладываются, но только первые 63 символа считаются значимыми. Идентификатор может начинаться только с буквы, за которой могут следовать (в любом порядке) буквы или цифры или знаки подчеркивания. Нельзя в идентификаторах использовать буквы русского алфавита, специальные символы и пробелы. В Паскале не различаются регистры букв (прописные или строчные). Идентификаторы могут быть простыми и составными. Составные идентификаторы записываются с использованием символа ‘.’ , который разделяет одну часть сложного имени от другой, например,
aaa.bbb
Три объекта – aaa, bbb
и ccc – имеют в своем составе
поле bbb.
ccc.bbb В составном имени ccc.bbb то, что слева от точки указывает, какому
ddd.bbb конкретному объекту принадлежит поле bbb
Метки – существует два способа записи меток: 1) в виде целых чисел без знака в диапазоне от 0 до 9999. 2) в виде правильных идентификаторов (имен). Метки используются в программах для обозначения точек перехода и отделяются от операторов двоеточием:
goto
metka;
….. метка в операторе безусловного перехода
…..
оператор, на который происходит
безусловный переход
metka:
a:=a+1;
метка отмечает место перехода
Константы – Простая константа используется для явного (непосредственного) представление значения (за каждой константой закрепляется одно значение) в программе. Существует два вида простых, т.е. нетипизированных, констант:
без имени (литерал, строковое представление константы): с:= а + 2;
с именем: Const N=2.
Для удобства в программе значению константы может быть присвоено имя:
Константы делятся на числовые (целые и вещественные), символьные, логические и строковые.
целые – десятичные и шестнадцатиричные. Десятичные записываются с помощью арабских цифр и знака перед числом. Шестнадцатиричные – строятся с использованием шестнадцатиричных цифр, которым предшествует символ $, причем шестнадцатиричные константы м.б. только положительными, т.е. -$25 является правильной константой, а. $-25 является неправильной.
вещественные – имеют две формы записи: с фиксированной точкой и плавающей точкой. C фиксированной точкой – 1.25 . С плавающей точкой: 1.25E-05 (читается как 1.25 на 10 в степени минус 05).
3) символьные имеют две формы записи: 1) 'с' 2) #ЦЦ, где ЦЦ – код символа (в 10-ной системе счисления). Соответствие между символом и его кодом представлено в кодовых таблицах. Для ПЭВМ обычно используется таблица ASCII (American Standard Code for Information Interchange). В этой таблице записаны 256 символов с порядковыми номерами 0..255 (цифры, большие и малые буквы, знаки операций, знаки препинания и др.). Порядковый номер символа в таблице ASCII - это код данного символа.
В кавычки заключаются изображения символов, которые можно ввести с клавиатуры. С помощью решетки и номера обычно обозначают неотображаемые символы, например,. #32 - символ с кодом 32 (пробел). Тот же самый символ можно обозначить с помощью шестнадцатиричного кода символа = #$20.
логические: true (истина) и false (ложь).
строковые - представляют из себя последовательность символов (кроме символа с кодом 13), заключенную слева и справа в кавычки.
В отличие от конструкции языка в строке допустимы символы русского алфавита. Можно разрывать длинную строку и в разрыве ставить символ #:
' Строка 1' #7 ' Строка 2'
Комментарии: в правилах Паскаля комментарий начинается и заканчивается фигурными скобками:
{Комментарий}.
Вместо фигурных скобок можно использовать (* и *):
(* То же комментарий *).
В отличие от других языков Паскаль не допускает вложения комментариев с ограничителями одного типа друг в друга (с ограничителями разных типов - можно).
Директивы (компилятору) - на Паскале директивы записываются как особая форма комментария: {$I+} {$N+} В директиве за левой скобкой идет знак доллара, за ним текст самой директивы. Имеется три вида директив: 1) ключевые директивы 2) директивы параметров 3) директивы условной компиляции. Ключевые директивы содержат указание компилятору включить (I+) или выключить (I-) определенные свои возможности. Директивы параметров определяют значения различных параметров, используемых при компиляции (директива М определяет размер памяти, отводимой компилируемой программе). Директивы условной компиляции позволяют в зависимости от задания тех или иных условий компилировать или исключать из компиляции фрагменты программы (м.б. удобно для отладки программ).
