- •Внутреннее представление данных
- •1) Представление чисел
- •2) Представление текстовых данных.
- •3) Представление мультимедийной информации
- •2. Основные этапы обработки программ пользователя.
- •Средства записи алгоритмов. Виды алгоритмов
- •4. Основные этапы решения задачи на компьютере.
- •Структура программы на языке Паскаль
- •6. Идентификаторы, числа, строки, выражения .
- •Операторы ввода/вывода данных
- •8. Числовые типы данных .
- •Полезные функции
- •Логические операции над битами
- •Символьный тип данных
- •10. Логический тип данных (Boolean) .
- •11.Перечисляемый и ограниченный типы.
- •Функция succ(X)
- •Функция pred(X)
- •Функция ord(X)
- •12. Раздел описания типов и констант . Типизированные константы.
- •Оператор присваивания, составной и условные операторы
- •Составной оператор
- •Оператор if-else
- •14. Операторы цикла.
- •Циклы включают в себя
- •Цикл for
- •Итерационные циклы Цикл while
- •Цикл repeat
- •16. Оператор выбора.
- •Массивы и переменные с индексами
- •18. Сортировка массивов.
- •Метод "пузырька"
- •Сортировка вставками
- •Строковые типы данных.
- •20. Приведение типов в Паскале.
- •Правила работы с типами данных
- •Пример задачи, где используется явное преобразование типов
- •21. Тип множество (Set).
- •23. Файловые типы данных
- •Классификация файлов в tp
- •24. Типизированные файлы. Создание и просмотр файлов.
- •25. Корректировка и дозапись компонент в типизированных файлах.
- •26. Текстовые файлы.
- •27. Корректировка и дозапись информации в текстовый файл.
- •28.Описание и вызов процедур в Паскале.
- •Параметры-значения, параметры-переменные
- •29. Описание и вызов функций в Паскале.
- •30.Область действия переменных при использовании подпрограмм.
- •31.Способы передачи параметров в подпрограммы.
- •32.Рекурсивное описание процедур и функций.
- •Существует два вида рекурсий:
- •33. Динамические типы данных. Простейшие действия с указателями.
- •34.Создание и обработка динамических списков
- •35. Создание и обработка стеков.
- •36.Создание и обработка очередей.
- •37. Создание и использование таблиц.
- •40.Буферизированный и небуферизированный ввод данных.
20. Приведение типов в Паскале.
При компиляции программы выполняется контроль правильности использования типов данных в выражениях и операторах присваивания.
“Type mismatch” (несоответствие типов)
Var k:byte;
x:integer;
y:real;
ch:char;
Правила работы с типами данных
y:=x, x:=k – повышение типов (разрешено в Паскале)
x:=10/k - – понижение типов (запрещено)
x:=10+’5’ – понижение типов (запрещено)
x:=round (y); x:=trunc (y); {вещественное в целое (целая часть / округление}
k:=ord(ch); ch:=chr(k); {символ в код(число) и наоборот}
val (str:string, var number, var code:byte) {Текстовые строки, представляющие запись числовых констант – в числа}
В ряде случаев в Pascal происходит автоматический переход от одного типа данных к другому (от целого к действительному, от символьного к строковому и т.д.). Существует также ряд функций, осуществляющих преобразование типов (ord, chr, trunc, round). Наряду с этим в Паскаль возможно явное преобразование типов (ретипизация данных). Для того, чтобы осуществить явное преобразование типа, необходимо использовать имя типа аналогично тому, как используется имя функции. В качестве параметра в этом случае указывается имя преобразуемой переменной.
Преобразовать можно любой тип к любому другому, однако следует выполнять требование: в операторе присваивания переменная слева должна занимать в памяти столько же или больше байт, сколько занимает преобразуемое значение.
Пример задачи, где используется явное преобразование типов
Вычислить значение функции sign(x) = 1 при x>0; 0 при x=0; -1 при x<0.
var
x: real;
sign: integer;
begin
readln(x);
sign:= byte(x>0)-byte(x<0);
writeln(sign);
end.
В программе при положительном значении x выражение x>0 принимает значение true, а выражение x<0 — false. В результате получается, что byte(x>0) = 1, byte(x<0)=0, а sign=1. При отрицательном значении x byte(x>0)=0, byte(x<0)=1, sign=-1. При нулевом значении x sign=0.
21. Тип множество (Set).
В языке программирования Pascal существует понятие множества, имеющее смысл некоторого собрания элементов, одно и того же базового типа. Базовый тип определяет перечень всех элементов, которые вообще могут содержаться в данном множестве. В качестве базового типа может выступать любой простой порядковый тип. Но вещественные числа (realне порядковый тип) и строки (не простой и не порядковый тип) не могут быть элементами множества.
Отрицательные элементы множеств в Turbo Pascal не допускаются. Поэтому базовыми типами не могут быть типы shortint, integer, longint. Если же необходимо множество целочисленных объектов, то базовый тип должен объявлен как диапазон типаbyte.
Порядок элементов во множестве не имеет значения. Так, записав [3, 6, 9] или [9, 3, 6], мы будем иметь дело с одним и тем же множеством. Более того, многократное повторение одного и того же элемента не меняет множество. Например, [4, 7, 3] и [3, 7, 4, 4] – это одно и то же множество.
По форме записи объявление переменной типа множество сходно с объявлением одномерного массива:
var
имя: set of тип;
Например, объявление переменной ch, рассматриваемой как множество с базовым типомchar, имеет вид:
var
ch: set of char;
В отличие от элементов массива, элементы множества не упорядочены и не имеют индексов.
Довольно часто в качестве базового типа множества используется тип перечисления или некоторый его диапазон:
type
week_days = (Mon, Tue, Wed, Thu, Fri);
var
work_days: set of week_days;
lett: set of 'A'..'Z';
Объявление переменной-множества не дает ей определенного значения.
Построение множества
Чтобы во множестве появились элементы, необходимо выполнить оператор присваивания, в левой части которого стоит имя переменной-множества, а в правой — конструктор множества или некоторое выражение над множествами.
Конструктор множества — это заключенный в квадратные скобки перечень элементов, разделенных запятыми. В качестве элементов могут использоваться диапазоны значений:
type
week_days = (Mon, Tue, Wed, Thu, Fri);
var
work_days: set of week_days;
lett: set of 'A'..'Z';
begin
work_days := [Mon, Wed, Thu];
lett := ['C', 'E'..'M', 'Z']
end.
Следует помнить, что при задании множества порядок его элементов безразличен, но при задании диапазона такой порядок важен.
Множество, в котором нет элементов, называется пустым (или нуль-множеством). В языке программирования Паскаль обозначается квадратными скобками, между которыми нет элементов:
work_days := [ ];
Элементы множества нельзя вводить и выводить. Для организации ввода-вывода элементов множества следует использовать вспомогательные переменные. В то же время можно использовать множества как элементы типизированных файлов.
Операции, применимые к множественному типу:
Объединение
[1,3,4]+[1,2,4,6]=[1…4,6]
Пересечение
[1,3,4]*[1,2,6]=[1]
Вычитание (элементы первого множества, не вошедшие во второе)
[1,3,4]-[1,2,4,6]=[3]
Проверка эквивалентности
P:=([1,2,5]=[1..5]); {p=false}
Проверка неэквивалентности
P:=([1,2,3]<>[1..5]); {p=true}
Проверка на принадлежность элементов множеству
2 in [1,2,4,6] – true
Включение подмножества в множество
[1,5]<=[1,3,5,6] – true
[1,5]>=[1,3,5] – false
Манипулируя операциями над множествами, можно добавлять элементы к множествам или удалять их.
Для вставки и удаления элементов при работе с множествами в Pascal введены две процедуры:
include (имя_множества, элемент)
exclude (имя_множества, элемент)
Первая из них позволяет выполнить добавление одного элемента в указанное множество, а вторая удалить. Например:
include (chs1, 'g'); { аналогично chs1 + ['g'] }
exclude (chs2, 'a'); { аналогично chs2 - ['a'] }
Другие операции над множествами
Над множествами можно выполнять четыре операции сравнения: =, <>, >=, <=.
Два множества A и B равны (A = B), если каждый элемент множества A является элементом множества B и наоборот.
Два множества A и B не равны (A <> B), если они отличаются хотя бы одним элементом.
Множество A является подмножеством множества B (A <= B, или B >= A), если каждый элемент из A присутствует в B.
Имеется также возможность выяснить, принадлежит ли данный элемент некоторому множеству. Для этого служит операция in. ПустьA– множество элементов некоторого базового типа, аx– переменная (константа, выражение) этого типа. Тогда выражениеx in Aистинно, если значениеxявляется элементом множестваA.
Все операции сравнения множеств, а также операция inвозвращают логическое значениеtrueилиfalse.
В сложных выражениях над множествами операции имеют следующие приоритеты:
*
+, -
=, <>, <=, >=, in