Слайд 2
Общие замечания
Структурированные типы данных определяют упорядоченную совокуп-ность скалярных
переменных и харак-теризуются типом своих компонентов.
Слайд 3
Общие замечания
В Паскале допускаются следующие структурированные типы
данных:
строки
массивы
множества
записи
файлы
указатели
процедурные типы
объекты
Слайд 4
О чем пойдет речь
Строковый (строки)
Строковые операции функции и
процедуры
Массивы
Множества. Операции над множествами
Записи
Структурированные типы данных
Слайд 5
Строковый тип данных
Строковая константа – последовательность символов, заключенная
в апострофы.
Максимальная длина строковой
константы 255 символов
Пример: ‘234’, ‘константа’
Два следующих
друг за другом апострофа (‘’) обозначают пустую строку, т.е. строку
с нулевой длиной
Слайд 6
Строковый тип данных
Строковые переменные
Строки в Pascal имеют тип
string и состоят не более чем из 255 символов.
Под
переменную S отводится 256 байт, при этом в нулевом байте хранится длина строки.
При описании var S: string;
Тип String и стандартный тип Char совместимы. Строки и символы могут использоваться в одних выражениях
Слайд 7
Строковый тип данных
Для экономии памяти предусмотрено описание вида
var S1: string[n];
В этом случае под строку отводится n+1
байт (нулевой байт - под длину строки). В случае присваивания переменной S1 строки из более чем n символов лишние символы отсекаются, и длина строки S1 полагается равной n.
Пример: var S1:string[40]
Слайд 8
Строковый тип данных
К символам в строке можно обращать-ся,
используя индекс: s[i] обозначает i-тый символ в строке. Обращение
к нулевому символу s[0] считается ошибочным.
Если индекс i выходит за пределы дли-ны строки, то сообщение об ошибке не выдается.
Индекс i принимает значения от 1 до 255, если длина строки не указана или от 1 до n, где n – максимальная длина строки, указанная при описании переменной.
Слайд 9
Операции над строками
Операция сцепления (конкатенации) – (+)
Применяется для
соединения нескольких строк в одну результирующую строку. Сцеплять мож-но
как строковые константы, так и переменные.
Пример:
‘Мама ’+’мыла ’+’раму’ = ‘Мама мыла раму’.
Длина результирующей строки не должна превышать 255 символов
Слайд 10
Операции над строками
Операция отношения: =, >, =,
false.
Сравнение строк происходит слева направо до первого несовпадающего символа, и та строка считается больше, в которой первый несовпада-ющий символ имеет больший номер в таблице символьной кодировки.
Если строки имеют разную длину и в общей части символы совпадают, то более короткая строка считается меньше.
Слайд 11
Строковые функции
Синтаксис записи: a := Length(s)
Пример:
Length (S)
– определяет длину строки S.
Результат – значение целого типа
Слайд 12
Строковые функции
Синтаксис записи: a := Copy (S, Poz,
N)
Пример:
Copy (S, Poz, N) – выделяет из строки
S подстроку длиной N символов, начиная с позиции Poz.
Здесь N и Poz целочисленные выражения.
Слайд 13
Строковые функции
Синтаксис записи: a := Pos (S1,S2)
Пример:
Pos
(S1,S2) – обнаруживает первое появление в строке S2 подстроки
S1.
Результат – целое число, равное номеру позиции, где находится первый символ подстроки S1. Если в S2 под-строки S1 не обнаружено, то результат равен 0.
Слайд 14
Строковые функции
Синтаксис записи: a := concat (S1,S2, …,Sn)
Пример:
Concat (S1,S2, …,Sn) – выполняет сцепление (конкатенацию) строк S1,
S1, … Sn в одну строку
Слайд 15
Строковые функции
Синтаксис записи: S := IntToStr(N)
Пример:
IntToStr(N) –
преобразует целое число к строке
Слайд 16
Строковые функции
Синтаксис записи: N := StrToInt(S)
Пример:
StrToInt(S) –
преобразует строку в целое число
Слайд 17
Строковые функции
Синтаксис записи: S1 := Trim(S)
Пример:
Trim(S) –
возвращает копию строки S с удаленными лидирующими и заключительными
пробелами
Слайд 18
Строковые процедуры
Пример:
Val(S, v, code) - преобразует строку S
к числовому представлению и записывает результат в переменную v.
Если преобразование возможно, то в переменной code возвращается 0, если невозможно, то в code возвращается ненулевое значение. Переменные V и code должны иметь тип integer.
Синтаксис записи: Val(S, v, code)
Слайд 19
Строковые процедуры
Пример:
Str(x, s) - преобразует число x к
строковому представлению
Переменная Х может иметь тип integer или real
Синтаксис
записи: Str(x, S)
Слайд 20
Строковые процедуры
Синтаксис записи: delete (S, Poz, N)
Пример:
Delete
(S, Poz, N) – удаление N символов из строки
S, начиная с позиции Poz.
Здесь N и Poz целочисленные выражения.
Слайд 21
Строковые процедуры
Синтаксис записи: Insert (S1, S2, Poz)
Пример:
S1:=‘мыла ’
Insert (S1, S2,Poz) – вставка строки S1 в
строку S2, начиная с позиции Poz.
назад
Слайд 22
Массивы элементов
МАССИВ – это пронумерованная ко-нечная последовательность однотипных
величин. Величины входящие в состав массива называют элементами массива.
Каждый
элемент массива имеет два атрибута: индекс и значение.
Индекс элементов меняться не может в отличии от значения элемента массива.
Слайд 23
Массивы элементов
Обращение к элементам массива происходит по его
имени и индексу.
Имя элемента массива совпадает
с именем массива
Например :
а[5]; b[1,7]
ИНДЕКС – константа, переменная или выражение целого типа, определяющее порядковый номер элемента в массиве.
Слайд 24
Массивы элементов
Линейные (одномерные) массивы – это массивы элементу
у которых – простые переменные.
В одномерных массивах хранят значения
линейных таблиц.
Значения температуры в таблице – это элементы массива: Т [1], Т[2], . . . Т[12]
Слайд 25
Массивы элементов
Описание линейных массивов
Var
: array [нижняя
граница массива . . верхняя граница массива] of
массива>
Пример:
Var a: array [1..10] of integer;
b: array [1..12] of real;
с: array [‘a’..’z’] of real;
Слайд 26
Массивы элементов
Двумерные массивы – структура данных, хранящая прямоугольную
матрицу (таблицу).
В матрице каждый элемент определяется ном-ером строки
и номером столбца, на пересече-нии которых он расположен.
Слайд 27
Массивы элементов
Двумерные массивы – структура данных, хранящая прямоугольную
матрицу (таблицу).
В матрице каждый элемент определяется номером строки
и номером столбца, на пересечении которых он расположен.
В Паскале двумерный массив рассматрива-ют как массив, элементами которого являются линейные массивы, т.е. массив линейных массивов
Слайд 28
Массивы элементов
Описание двумерных массивов
Пример:
Var a: array [1..10,1..5] of
integer;
b: array [1..12,1..50] of real;
Элементы
двумерного массива идентифицирую-тся переменными в двумя индексами. Первый индекс связывают с номером строки, второй – с номером столбца матрицы (прямоугольной таблицы)
Слайд 29
Массивы элементов
Фундаментальное отличие компонента массива от простой переменной
состоит в том, что для элемента массива в квадратных
скобках может стоять не только непосредственное значение индекса, но и выражение, приводящее к значению индексного типа. Таким образом реализуется косвенная адресация:
B[15] - прямая адресация;
B[K] - косвенная адресация через переменную K, значение которой будет использовано в качестве индекса элемента массива B.
Такая организация работы с такой структурой данных, как массив, позволяет использовать цикл для заполнения, обработки и распечатки его содержимого.
Слайд 30
Массивы элементов
Заполнение массивов происходит поэлементно с использованием операторов
цикла.
Пример:
1. Заполнение линейного массива
For i:=1 to 10 do
b[i]:=i;
2. Заполнение двумерного массива
for i:=1 to 10 do
for J:=1 to 5 do a[i,j] := i+j;
назад
Слайд 31
Множества
Множество – это структурированный тип данных, представляющий собой
набор взаимосвязанных по какому-либо признаку или группе признаков объектов,
которые можно рассматривать как единое целое.
Основные понятия
Слайд 32
Множества
Каждый элемент в множестве называется элементом множества.
Все элементы
множества должны принадлежать одному из скалярных типов, кроме вещественного.
Этот тип называется базовым типом множества. Базовый тип задается диапазоном или перечисле-нием.
Область значений типа множество – набор всевозможных подмножеств, составленных из элементов базового типа
Основные понятия
Слайд 33
Множества
В выражениях на языке Паскаль значения элементов множества
указывается в квадратных скобках: [1,2,3,4], [‘a‘, ’b’, ’c’], [1..20].
Если
множество не имеет элементов оно называется пустым и обозначается как [ ].
Количество элементов множества называется его мощностью.
В Паскале отсутствуют средства ввода-вывода элементов множества.
Основные понятия
Слайд 34
Множества
Формат записи множественных типов
Type
= set
of ;
Var :
типа>
Пример:
Type exmpl = set of ‘a’, ‘b’, ‘z’;
namber = set of 1..31;
Var a: exmpl ; b: namber ;
Описание множеств. Вариант 1
Слайд 35
Множества
Задать множественный тип можно и без предварительного описания
Var
: set of
Пример:
Var
a: set of ‘a’, ‘b’, ‘z’;
b: set of 1..31;
Описание множеств. Вариант 2
Слайд 36
Операции над множествами
Операция «равно» (=). Два множества А
и В считаются равными, если они состоят из одних
и тех же элементов. Порядок следования элементов в множества м.б. любым.
Слайд 37
Операции над множествами
Операция «не равно» (< >). Два
множества А и В считаются не равными, если они
отличаются по мощности или по значению хотя бы одного элемента
Слайд 38
Операции над множествами
Операция «больше или равно» (>=). Множество
А >= множества В, если все элементы множества В
содержатся в множестве А, т.е. множество В явля-ется частью множества А.
Слайд 39
Операции над множествами
Операция «меньше или равно» (>=). Множество
А
содержатся в множестве B, т.е. множество A явля-ется частью множества B.
Слайд 40
Операции над множествами
Операция «in». Данная операция используется для
проверки принадлежности какого-либо значения указан-ному множеству. Обычно применяется в
условных операторах.
При использовании операции «in» проверяемое на принадлежность значение и множество в квадратных скобках не обязательно предварительно описывать в разделе описаний.
Слайд 41
Операции над множествами
Объединение множеств (+) – объединением двух
множеств является третье множество, содержащее элементы обоих множеств.
Слайд 42
Операции над множествами
Пересечение множеств (*) – пересечением двух
мно-жеств является третье множество, которое содержит элементы, входящие одновременно
в оба множества.
Слайд 43
Операции над множествами
Разность множеств (-) – разностью двух
множеств является третье множество, которое содержит элемен-ты первого множества,
не входящие во второе множество.
назад
Слайд 44
Записи
Запись – это структурированный тип данных, состоящий из
компонентов одного или нескольких типов.
Определение типа записи начинается иденти-фикатором
record и заканчивается зарезервиро-ванным словом end.
Между ними заключен список компонентов, называемых полями, с указанием идентификато-ров полей и типа каждого поля.
Слайд 45
Записи
Пример описания записи:
Type
Car = record
Numbe : integer; {Номер}
Marka
: string[40]; {Марка авто}
FIO : string[40]; {Фамилия, имя, отчество}
Address
: string[60] {Адрес владельца авто}
end;
Var M, V: Car;
Идентификатор поля д.б. уникален только в пределах записи, однако во избежание ошибок лучше делать его уникальным в пределах всей программы.
Слайд 46
Записи
Обращение к значению поля осуществляется с помощью идентификатора
переменной и иденти-фикатора поля, разделенных точкой.
Такая комбинация называется
составным именем.
Например:
M.Namber; M.FIO; M.Addres
Слайд 47
Записи
Составное имя можно использовать везде, где допустимо применение
типа поле.
Примеры:
M.Namber := 163 M.Marka := ‘ГАЗ-24’
Read
(M.Namber, M.FIO);
Write (M.Addres, M.Marka);
Слайд 48
Записи
В ряде задач удобно пользоваться массивами из записей.
Их можно определить т.о.
Type
Person = record
Name_1 : string[20];
Name_2 :
string[20];
Age : byte;
Prof : string[30];
end.
Var List: array[1..59 ] of Person;
Слайд 49
Записи
Обращение к полям записи имеет несколько громоздкий вид.
Для решения этой проблемы в языке Паскаль предусмотрен оператор
With, который имеет следующий формат:
With <переменная типа запись> do begin
поле_1 записи <оператор>;
поле_2 записи <оператор>;
поле_3 записи <оператор>;
End;