- •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 при компиляции модулей
- •Косвенные и перекрестные ссылки на модули
- •Пример модуля (стек)
- •Модули и большие программы
while (логическое_выражение) do тело_цикла;
Repeat тело_цикла until (логическое_выражение);
b:= логическое_выражение
if (логическое_выражение)
then...действие_если_истина..
else действие_если_ложь.;
Пример более сложного логического выражения:
((x + 1 < y) and not (x > 5)) or ((y > 0) and true)
Вычислим значение этого выражения при x = 5, y = 5:
((6 < 1) and not (5 > 5)) or ((5 > 0) and true) ===>
( false and not false ) or ( true and true )
( false and true ) or ( true and true )
false or true
true
Переменные логического типа часто используются в качестве «флажков», которые взводятся (устанавливаются в true) в случае наступления во время выполнения программы определенных событий (выход значения переменной за определенный диапазон, считывание из входной последовательности символов определенного символа и т.д.). Значение флажка обычно используется в качестве признака (обычно единственного) описания ситуации выхода из бесконечного цикла (ожидания наступления определенного события). Пример см. в документе «Основы алгоритмизации» там, где рассматривается обработка текста восходящим и нисходящим методами. Там использовалась логическая переменная конец_обработки.
Имеются стандартные функции, возвращающие результат логического типа:
Odd(аргумент – целый) возвращает True, когда аргумент нечетный, и возвращает False, когда аргумент четный.
Eoln(аргумент – текстовый файл) возвращает True, если текущим символом строки является символ конца строки.
Eof(аргумент – файл) возвращает True, если текущий указатель файла установлен на конец файла .
6.4.3 Целые типы Выделяют целые типы ------------- со знаком – shortint, integer, longint)
------------- без знака - byte, word.
Shortint - занимает 1 байт в памяти со знаком. Диапазон значений: от -128 до +127.
Byte - однобайтовый тип. Данные этого типа только положительные. Диапазон значений: от 0 до 255.
Integer - 2 байта со знаком. Диапазон значений: от -32768 (-215) до +32767 (215-1). Имеется предопределенная константа MaxInt, равная 32767 и определяющая максимальное значение целого числа типа integer.
Word - 2 байта без знака. Диапазон значений: от 0 до 65535.
Longint - занимает 4 байта со знаком. Диапазон значений: - 2 147 483 648 (-231) .. 2 147 483 647 (231-1) .
В Турбо-Паскале предопределены константы MaxLongint, равная 2 147 483 647, и MaxInt, равная 32767.
Для каждого значения этих типов нужно различать:
а) запись значения числа (в одной из систем счисления) в строковом представлении;
б) представление этого значения в виде двоичного кода
в) внутреннее представление (побайтное расположение) этого двоичного (многобайтового) кода в памяти ЭВМ
Рассмотрим пример на то, чем отличаются а) и б) для типов данных shortint и byte.
7 6 5 4 3 2 1 0 -------номера разрядов
26 25 24 23 22 21 20--------веса разрядов
S Shortint
Знаковый разряд (не участвует в выработке значения)
7 6 5 4 3 2 1 0 -------номера разрядов
27 26 25 24 23 22 21 20--------веса разрядов
Byte
старший разряд значения
Для типа shortint знак записывается в самом старшем разряде. А для типа byte этот разряд является частью значения. Поэтому для этих типов в одних тех же 8 битах одно и то же представление в двоичном коде будет соответствовать разным значениям:
Для
shortint 11111111 = -1
1
1 1 1 1 1 1 1
Для byte 11111111 = +255
-1 для (shortint) получена потому, что 1 в знаковом разряде соответствует отрицательному числу. Отрицательные (и положительные тоже) числа хранятся в так называемом дополнительном коде. Он получается в 2 приема:
- абсолютное значение числа надо записать в виде двоичного кода и проинвертировать все разряды (0 → 1 1 → 0)
- далее к младшему разряду прибавляется единица. Полученное изображение и будет дополнительным кодом числа (знаковый разряд содержит 0 или 1 и говорит о знаке числа).
Рассмотрим теперь пример на то, чем в) отличается от б). Значения многобайтовых типов (Integer, Word и Longint) хранятся в памяти не так, как пишутся. Они размещаются в памяти, начиная с младших байтов.
Пусть запись целой многобайтовой константы имеет вид:
$
12 34 - здесь 2 байта.
старший младший
байт байт
Этой
записи числа в дампе памяти
в отладчике будет соответствовать
следующий код: 34 12
возрастания адресов слева
направо
(совпадает с направлением просмотра)
С данными целых типов могут использоваться несколько стандартных функций и операций:
