
- •Основные понятия языка программирования паскаль
- •Структурное программирование
- •Основные символы языка
- •Элементы языка
- •Интегрированная среда turbo pascal
- •Структура программы в turbo pascal
- •Определение типов
- •Операторы в программе
- •Операторные скобки
- •Операторы ввода
- •Оператор присваивания
- •Оператор условного перехода
- •Оперетор безусловного перехода
- •Организация циклов
- •Использование операторов условного и безусловного перехода
- •Цикл с параметром
- •Цикл с предусловием - цикл while
- •Цикл с постусловием - цикл repeat
- •Оператор выбора варианта
- •Концепция типов данных
- •Стандартные простые типы Целый тип
- •Операции над данными целого типа:
- •Действительный тип
- •Операции над данными действительного типа:
- •Логический тип
- •Символьный тип
- •Символьные строковые константы
- •Нестандартные простые типы (определяемые пользователем)
- •Перечисляемый тип
- •Ограниченный тип (диапазон, интервал)
- •Процедуры и функции
- •Описание процедур
- •Стандартные процедуры
- •Описание функций
- •Стандартные функции
- •Итерация и рекурсия
- •Побочный эффект рекурсии
- •Предварительное описание (ссылки вперед)
- •Регулярные типы Одномерный массив
- •Алгоритмы сортировки массивов
- •1. Метод пузырька (метод обменной сортировки с выбором)
- •Многомерные массивы
- •Упакованные массивы
- •Множественные типы
- •Свойства множеств
- •Операции над множествами
- •Комбинированные типы Описание записей и действия с ними
- •Оператор присоединения.
- •Записи с вариантами
- •Типизированная константа
- •Простая типизированная константа
- •Структурированная (сложная) типизированная константа Типизированная константа массива
- •Типизированная константа записи
- •Типизированная константа множества.
- •Преобразование типов
- •Неявные преобразования типов
- •Использование стандартных функций для преобразования
- •Явные преобразования типов
- •Эквивалентность типов
- •Совместимость типов
- •Файловые типы
- •Определение файлового типа
- •Структура файла
- •Имя файла
- •Описание файлового типа
- •Файловая переменная
- •Операции над файлами
- •Типизированные файлы
- •Ссылочные типы (указатели) Статические и динамические переменные
- •Ссылочные типы (указатели)
- •Удаление узла из стека:
- •Человек
- •Человек
- •Вставка
- •Динамические переменные
- •Процедуры создания и удаления динамических переменных
- •Динамические списковые структуры
- •Однонаправленные списки
- •Двунаправленные списки
- •Очереди
- •Деревья
- •Модульная система turbo pascal
- •Uses mod 1, mod 2, mod 3; (подключение трех модулей) Общая структура модуля
- •Использование идентификаторов модуля
- •Использование модуля в программе
- •Компиляция модулей
- •Системный файл turbo.Tpl
- •Стандартные модули
- •Модуль crt
- •Модуль dos
- •Модуль printer
- •Модуль overlay
- •Модуль string
- •Процедуры модуля graph
- •Графические процедуры
- •Координаты. Окна. Страницы
- •Линии и точки
- •Многоугольники
- •Дуги,окружности, эллипсы
Типизированная константа множества.
Она образуется из одной или нескольких спецификаций элементов, разделенных запятыми и заключенных в квадратные скобки.
Спецификацией элемента может быть константа или выражение идентификатора. Оно состоит из двух констант, разделенных двумя точками.
Пример:
Type Propisnoy = Set of ‘A’..’Z’;
Strochny = Set of ‘a’..’z’;
Const PropBukw : Propis =[‘A’..’Z’];
StrochnBukw : Stroch =[‘a’, ’e’, ‘l’, ‘c’, ‘u’];
Simvol : Set of char = [‘’..’/’, ‘:’..’?’, ‘[‘..’^’, ‘{‘..’~’];
Преобразование типов
Тип переменной позволяет не только установить длину ее внутреннего представления, но и контролировать те действия, которые осуществляются над ней в программе. Контроль за использованием переменных еще на этапе компиляции программы – важное преимущество Турбо Паскаля перед другими языками программирования, в которых допускается автоматическое преобразование типов. Фактически именно та вольность, с какой, например, PL/1 преобразует по умолчанию различные типы данных, послужила объектом наиболее сильной его критики.
Неявные преобразования типов
В Паскале почти невозможны неявные (автоматические) преобразования типов. Исключение сделано только в отношении констант и переменных типа Integer, которые разрешается использовать в выражениях типа Real.
Пример:
Var X : Integer;
Y : Real;
Y:=X+2 - правильно, хотя справа от знака присваивания стоит целочисленное выражение, а слева – вещественная переменная. Компилятор сделает необходимые преобразования автоматически.
X=2.0 – неверно, так как автоматическое преобразование типа Real в тип Integer в Паскале запрещено.
Использование стандартных функций для преобразования
Разумеется, запрет на автоматическое преобразование типов еще не означает, что в языке программирования Паскаль нет средства преобразования данных. Эти средства есть, но их нужно использовать явно. Для преобразования данных существуют встроенные функции, которые получают в качестве параметра значения одного типа, а возвращают результат в виде значения другого типа.
В частности, для преобразования Real в Integer имеются две встроенные функции:
Round округляет Real до ближайшего целого,
Trung усекает Real путем отбрасывания дробной части.
X:=Y/X – нельзя,
X:=round(Y/X) – можно.
Ord преобразует Char в Integer,
Chr преобразует Integer в Char.
Пример. Программа выводит на экран символ и соответствующий ему внутренний код.
Var simvol : char;
Begin readln (simvol);
Writeln (simvol, ‘=’, ord(simvol));
End.
Явные преобразования типов
Наличие двух операций деления есть еще одно появление основополагающего принципа языка программирования Паскаль: программист должен явно подтверждать компилятору, что он готов к возможным последствиям преобразования типов.
В языке программирования Паскаль выражение 1/2 всегда имеет значение 0.5 и поэтому оператор X:=1/2 для целого Х просто недопустим. В то же время
Var Y : Real;
--------------
Y : = 1 div 2;
самим фактом использования операции целочисленного деления div программист свидетельствует, что он сознательно отбрасывает дробную часть.
Эквивалентность типов
Еще две функции для целого типа:
Dec (X[,N]) – уменьшение значения X на N; если N не задан, то на 1,
Inc (X[,N]) – увеличение.
Над символами и строками символов (тип string) применима единственная операция – сцепление строк (+).
Var slovo: string;
Begin
Slovo:= ‘turbo’ + ‘-‘ + ‘pascal’;
Writeln (slovo);
End.
Пример: А,В, С – типа integer.
А = В and С < 0 где ошибка?
Надо (А = В) and (С < 0) так как логические операции имеют более высокий приоритет, чем операции отношения:
not
* / div mod and chr chi
+ - or xor
= <> < > <= >= in.