
- •1. Файловые системы, файлы, директории, пути
- •2.Основные команды операционной системы для работы с файлами.
- •3 Физические носители данных. Их классификация, характеристики и назначение.
- •4 Статическая и динамическая области оперативной памяти. Их назначение и использование.
- •5. Указатель
- •6. Типы данных (целые и вещественные числа). Размер используемой памяти, пределы изменения и точность представляемых данных.
- •7. Приоритеты выполнения операций при вычислении значений арифметических и логических выражений.
- •9.2. Логические выражения
- •9.3. Строковые выражения
- •11. Простые операторы
- •11.1. Оператор присваивания
- •8. Структурированные типы данных. Назначение и способы реализации.
- •8.1. Массивы
- •9. Алгоритм, его свойства и формы представления. Типовые структуры алгоритма.
- •10. Линейная структура и ее свойства. Ввод и вывод данных. Оператор присваивания.
- •11. Циклическая структура. Назначение и основные элементы.
- •12. Цикл с явно заданным количеством повторений. Основные элементы и варианты реализации.
- •13. Цикл с неявно заданным количеством повторений. Основные элементы и варианты реализации.
- •14. Типовая структура – разветвление. Основные элементы и варианты реализации.
- •15. Процедуры. Назначение, варианты реализации.
- •16. Функции. Назначение, варианты реализации.
- •17. Формальные и фактические параметры. Назначение, варианты реализации.
- •18. Линейный список. Реализация с использованием массивов. Реализация многомерного массива.
- •19. Линейный список. Реализация с использованием связных списков. Примеры применения
- •20. Поиск в линейном списке. Назначение и варианты реализации.
- •21. Сортировка данных в линейном списке. Назначение и варианты реализации.
- •22. Стек и очередь. Назначение, варианты реализации и примеры применения.
- •23. Дерево. Назначение, варианты реализации и примеры применения.
- •24. Текстовые и типизированные файлы. Обмен данных с внешними носителями.
9.3. Строковые выражения
Строковые выражения, частными случаями которых могут быть пустой символ '' или одиночный символ (например 'A'), строятся из строковых или символьных значений, констант, переменных и строковых функций при помощи строковой операции конкатенации (присоединения). Эта операция обозначена символом + (плюс). Скобки в строковых выражениях не применяются.
Пример:
|Выражение: |'Object '+'Pascal '+' для Delphi' |
|Результат: |'Object Pascal для Delphi' |
10. Операторы Оператор – языковая конструкция, представляющая описание команды или комплекса команд по обработке и преобразованию данных. Все операторы делятся на две части – простые операторы и структурные операторы.
11. Простые операторы
К их числу относятся: оператор присваивания, оператор безусловного перехода, составной оператор, оператор процедур, специальные операторы.
11.1. Оператор присваивания
имеет вид x := y;
где x – имя переменной или функции; y – совместимое по типу выражение. Символы ":=" обозначают операцию присваивания, в соответствии с которой вычисленное значение выражения y присваивается переменной x. Примеры операторов присваивания (комментарии показывают присвоенные
значения):
Var
Ch: Char;
S: String[5];
8. Структурированные типы данных. Назначение и способы реализации.
Структурированный тип представляет собой набор элементов - данных, объединенных программистом в единый блок в соответствии с особенностями решаемой задачи. Данные, входящие в блок, могут быть однотипными или разнотипными, весь блок данных имеет общее имя. Каждый элемент отличается от других либо порядковым номером (индексом) - в массиве или в строке, либо своим именем - в записи, либо своим значением - во множестве. Файловые типы, относящиеся к структурированным типам.
8.1. Массивы
Довольно часто возникают задачи, для решения которых необходимо ввести большое количество данных одинакового типа, к тому же при обработке этих данных необходимо выполнять одни и те же операции, например, задача сортировки последовательности введенных чисел. Рассмотрим ее на следующем примере. Вводится десять произвольных целых чисел, для хранения каждого из которых достаточно использовать переменную типа Integer. Необходимо расположить их в порядке убывания значений и вывести на экран. Одним из известных алгоритмов решения этой задачи является алгоритм сортировки методом «пузырька», который заключается в следующем. Элементы введенной последовательности просматриваются в цикле от первого до предпоследнего значения. Значение каждого элемента сравнивается со следующим по порядку, и если следующее значение больше, то они меняются местами. В результате выполнения этого цикла самое меньшее (самое «легкое») значение обязательно переместится в конец последовательности. Отсюда, кстати, и название метода. Теперь надо снова выполнить цикл просмотра для всех элементов последовательности, но за исключением уже двух элементов - предпоследнего и последнего. Таких циклов просмотра в самом неудачном случае надо выполнить на единицу меньше числа элементов в последовательности, и их включают во внешний цикл. В этом алгоритме важен порядок расположения значений, а не их имена. Поэтому имя у всех введенных чисел может быть одно, что необходимо, кстати, для организации цикла, а различаться они должны по номеру в последовательности. Такой способ обращения к данным и обеспечивают массивы. Массивом называется фиксированный набор индексированных элементов любого, но обязательно одного и того же типа. Элемент массива имеет общее для всего массива имя и персональный индекс, который называют номером, если он представляет собой число. При обращении к «цементу массива указывается имя -массива и значение индекса этого элемента. Например, если мы дадим массиву имя mas, то имя пятого элемента массива - mas[5]. Переменная типа массив объявляется в разделе описаний, причем при объявлении указывается тип индекса и тип элемента массива. Запись Var mas:Array[1..1O] of Integer; означает, что переменная mas объявлена как массив (Array - зарезервированное слово), имеющий 10 элементов с индексами от 1 до 10 (тип-диапазон); каждый элемент массива (Of - зарезервированное слово) является переменной типа Integer. Рассмотрим, как используются массивы в программе, реализующей описанный алгоритм сортировки.
Структурированные типы данных
Данные одинакового простого типа (кроме вещественного) могут объединяться в множество.
В общем виде тип множество описывается:
TYPE <идентификатор типа>= SET OF <тип компонент>;
Тип компонент множества (базовый тип) обычно интервальный или перечисляемый. Значения переменной типа множества изображаются перечислением компонент, разделенных запятыми и заключенных в квадратные скобки.
Например,
TYPE INTERVAL=5..10;
MN=SET OF INTERVAL;
VAR PR:MN;
Переменная PR может принимать значения:
[5,6,7,8,9,10], [5], [6],…, [5,6], [5,7],…, [6,7,8],…, [ ],
где [ ] – пустое множество, т.к. оно не содержит выражения, указывающего базовый тип. Оно совместимо со всеми типами множеств.
В языке Турбо Паскаль на множества накладываются следующие ограничения:
Число элементов множества не должно превышать 256.
Элементами множества могут быть только данные простых типов (кроме вещественных).
Элементы, входящие в состав множества должны быть определены заранее.
Порядок элементов множества произвольный.
Свойства множеств
1. Если все элементы одного множества совпадают с элементами другого множества, то они (множества) считаются равными.
Множества [1..5] и [1,2,3,4,5] равны.
2. Если все элементы одного множества являются членами другого множества, то 1 множество включено во 2 множество.
[C,E] включено в множество [A..Z].
3. Если нижнее граничное значение больше, чем верхнее граничное значение, то множество является пустым.
[5..1] – пустое множество, т.е. эквивалентно [ ].
Переменным типа множество присваивают результат выражений над множествами с помощью обычного оператора присваивания.
Операции над множествами
1) * – пересечение множеств (произведение).
Пусть X=[1,2,3,4,7,9], а Y=[1,2,3,10,5], тогда при выполнении оператора
Z: = X * Y;
множество Z содержит элементы, которые принадлежат как множеству X, так и множеству Y, т.е. Z=[1,2,3].
2) + – объединение множеств (сумма).
Пусть X=[1,2,3,4,7,9], а Y=[1,2,3,10,5], тогда при выполнении оператора
Z:= X + Y;
множество Z содержит элементы, которые принадлежат либо множеству X, либо множеству Y, т.е. Z=[1,2,3,4,5,7,9,10].
3) – – разность множеств или относительное дополнение.
Пусть X=[1,2,3,4,7,9], а Y=[1,2,3,10,5], тогда при выполнении оператора
Z: = X – Y;
множество Z содержит элементы множества X, которые не принадлежат множеству Y, т.е. Z=[4,7,9].
4) = – проверка на равенство.
Если все элементы множества X являются элементами множества Y, то результатом выполнения операции будет TRUE, в противном случае – FALSE. Пусть X=[1,2,3,4,7,9], а Y=[1,2,3,10,5], тогда при выполнении оператора
F: = X = Y;
F получит значение FALSE.
5) <> – проверка на неравенство.
Если какие-то элементы множества X не являются элементами множества Y или наоборот, то результатом выполнения операции будет TRUE, в противном случае – FALSE. Пусть X=[1,2,3,4,7,9], а Y=[1,2,3,10,5], тогда при выполнении оператора
F:=X<>Y;
F получит значение TRUE.
6) >= – проверка на включение.
Если все элементы множества Y являются элементами множества X, то результатом выполнения операции будет TRUE, в противном случае – FALSE. Пусть X=[1,2,3,4,7,9], а Y=[1,2,3], тогда при выполнении оператора
F: = X >= Y;
F получит значение TRUE.
7) <= – проверка на включение.
Если все элементы множества X являются элементами множества Y, то результатом выполнения операции будет TRUE, в противном случае – FALSE. Пусть X=[1,2,3], а Y=[1,2,3,10,5], тогда при выполнении оператора
F: = X < = Y;
F получит значение TRUE.
8) IN – проверка принадлежности отдельного элемента множеству.
Слева от знака операции записывается выражение того же типа, что и базовый, а справа – множество. Если левый операнд является элементом множества Y, то результатом выполнения операции будет TRUE, в противном случае – FALSE. Пусть A=5, а Y=[1,2,3,10,5], тогда при выполнении оператора
F: = A IN Y;
F получит значение TRUE.
Отношения > и < для множеств не определены.
Рассмотрим некоторые примеры, в которых используются операции над множествами.
Вводится строка символов. Требуется составить программу, распознающую является ли введенная строка идентификатором.