Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
инфа экзамен.docx
Скачиваний:
9
Добавлен:
25.09.2019
Размер:
235.09 Кб
Скачать

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.

Отношения  > и < для множеств не определены.

Рассмотрим некоторые примеры, в которых используются операции над множествами.

Вводится строка символов. Требуется составить программу, распознающую является ли введенная строка идентификатором.