Структурные типы данных

Preview:

DESCRIPTION

Структурные типы данных. Массивы Строки Записи Множества Файлы. Массивы. Массив – это конечная именованная последовательность однотипных величин Каждый элемент массива имеет определённое число указателей – индексов, обеспечивающих поиск и идентификацию элементов. Одномерный массив - PowerPoint PPT Presentation

Citation preview

Структурные типы данных

1. Массивы2. Строки3. Записи4. Множества5. Файлы

Массивы

•Массив – это конечная именованная последовательность однотипных величин

•Каждый элемент массива имеет определённое число указателей – индексов, обеспечивающих поиск и идентификацию элементов

•Одномерный массив

•Двухмерный массив

0 1 2 … n

Имя

0 1 2 … n

Имя

0

1

2

m

Описание массива

1. в разделе описания переменных

Var Имя : Array [нижний_индекс .. верхний_индекс] Of тип_данных;

• Var a: Array [1..10] Of Real;• Var b: Array [-5..5, 0..4] Of String; • Var c: Array [0..9, 0..4, 0..4] Of Char;

2. в разделе описания типов данных

Type Имя = Array [нижний_индекс .. верхний_индекс] Of тип_данных;

• Type MyArray = Array [1..10] Of Real;  Var a: MyArray; • Type MyArray2 = Array [-5..5, 0..4] Of String;  Var b: MyArray2; • Type MyArray3 = Array [0..9, 0..4, 0..4] Of Char;  Var c: MyArray3;

•Доступ к элементу массива осуществляется путём указания имени массива и индексов в квадратных скобках:

a [10] := 1.5;b [0, 2] := 'Pascal';c [9, 3, 1] := 'P';

Program Massiv1;Uses CRT;Var mas: Array [0..9] Of Integer;

i, n: Integer;Begin

ClrScr;Randomize;For i := 0 To 9 DoBegin

mas [i] := Random (100);Write (mas [i]: 4);

End;WriteLn;n := 0;For i := 1 To 9 Do If mas [i] > mas [n] Then n := i;WriteLn (‘n = ’, n+1, ‘ mas [n] = ’, mas [n]);ReadLn;

End.

Program Massiv2;Uses CRT;Var i, j, m : Integer;

mas: Array [0..3, 0..5] Of Integer;Begin

ClrScr;Randomize;For i := 0 To 3 DoBegin

For j := 0 To 5 DoBegin

mas [i, j] := Random (200) – 100;Write (mas [i, j]:5);

End; WriteLn;End;m := mas [0, 0];For i := 0 To 3 Do

For j := 0 To 5 DoIf mas [i, j] < m Then m := mas [i, j];

WriteLn (‘m = ’, m);ReadLn;

End.

Строки

•Строковые переменные используются для хранения последовательности символов и их можно рассматривать как одномерный массив символов

•a := ‘Pascal’;0 1 2 3 4 5 6

a 6 P a s c a l

Описание в программе строковых переменных

•Var a: String [10];

•Var a: String;

Основные операторы, функции и процедуры, используемые при работе со строками:

• объединение строкc := a + ' ' + b;

• копированиеCopy (строка, номер_символа,

количество_символов);

• удаление символов из строкиDelete (строка, номер_символа,

количество_символов);

• вставка символов в строкуInsert (подстрока, строка,

номер_символа);

a := 'Turbo'; b:='Pascal';

• c := a + ' ' + b;'Turbo Pascal'

• c := Copy (a, 2, 3);'urb'

• Delete (b, 4, 3);'Pas'

• Insert (a, b, 4);'PasTurbocal'

• Определение длины строкиLength (строка);

• Поиск подстроки в строкеPos (подстрока, строка);

• Преобразование числа в строкуStr (число: длина:

после_запятой, строка);

• Преобразование строки в числоVal (строка, число, код_преображения);

• k := Lenght (a);5

• k := Pos ('rb', a); 3• k := Pos (a, b); 0

• Str (x, c);

• Val (c, x, k);

Program A;Var s: String [25];

k, n: Integer;Begin

Write ('Vvedite stroku: ');ReadLn (s);k := 0;Repeat

n := Pos ('а', s);If n <> 0 Then Begin

k := k+1; Delete (s, 1, n); WriteLn (s);

End;Until n = 0;

WriteLn (' k= ', k);ReadLn;

End.

Program A2;Var s: String [25];

k, i: Integer;Begin

Write ('Vvedite stroku: ');ReadLn (s);k := 0;For i := 1 To Length (s) Do

If s[i] = 'a' Then k := k+1; WriteLn (' k= ', k);ReadLn;

End.

Program Change;Var s, n: String [25];

i: Integer;Begin

Write ('Vvedite stroku: ');ReadLn (s);n := ' ';For i := 1 To Length (s) Do Begin

n := n + Copy (s, Length (s) + 1 - i, 1);WriteLn (n);

End;ReadLn ;

End.

Записи• Запись – это совокупность ограниченного

числа логически связанных компонент, принадлежащих к разным типам

RecordПоле_1: тип;Поле_2: тип;…поле_N: тип;

End;

Объявление записи

1. Type Row = RecordFIO: String [20];TEL: String [14];

End;

Var Str: Row;

2. Var Str: RecordFIO: String [20];TEL: String [14];

End;

•Обращение к записи в целом допускается только в операторах присваивания, где слева и справа от знака присваивания используются имена записей одинакового типа

•Имя поля:

Str.FIOStr.TEL

Обращение к компонентам записей можно упростить, используя оператор With

с оператором With Без оператора With

With Str Do Begin

FIO := 'Иванов С.А.';TEL := '(4752)' + TEL;

End;

Str.FIO := 'Иванов С.А.';Str.TEL := '(4752)' +

Str.TEL;

В языке Pascal допускается описание записи, состоящей из общей и вариантной частей:

RecordПоле_1: тип;Поле_2: тип;…Case ключ: тип OfВариант_1: (поля);Вариант_2: (поля);…вариант_N : (поля);

End;

Множества• Множества – это ограниченная совокупность

однотипных логических связанных друг с другом элементов

• В Pascal множества могут включать элементы только порядковых типов, значения которых не превышает 255

Описание множестваимя = Set Of тип_данных;

1. В разделе описания типов данных

• Type Smаlletters = Set Of 'a'..'z';• Type Colors = Set Of (Red, Green, Brue);• Type Numbers = Set Of Byte;

2. В разделе описания переменных

• Var Figures: Set Of 0..9;

Разница между интервалом и множествомИнтервал Множество

Var P: 1..3;

• 1• 2• 3

Var T: Set Of 1..3;

• [ ]• [1]• [2]• [3]• [1, 2]• [1, 3]• [2, 3]• [1, 2, 3]

Операции над множествамиНазвание Математи

-ческое обозна-чение

Знак Тип результата

Примечание

Объединение + Множество

Дополнение - Множество

Пересечение * Множество

Тождественность = = Логический

Нетождественность

≠ <> Логический

Надмножество () >= Логический

Подмножество () <= Логический

Принадлежность in Логический

A B

A B

A B

A B

A х

Program Lotto;Var nb, k: Set Of 1..36;

kol, l, i, n: Integer;Begin

Randomize;Write (' Kolichestvo kartochek:');ReadLn (kol);nb := [1..36]; For i := 1 To kol DoBegin

k := []; For l := 1 To 5 DoBegin

Repeatn := Random (36)

Until (n in nb) AND NOT (n in k);k := k+[n];Write (n: 4);

End;WriteLn;

End;ReadLn;

End.

Файлы• Файл - именованная область внешней памяти

компьютера или логическое устройство• у файла количество элементов в процессе

работы может изменяться• файл располагается на внешних носителях

информации• в конце файла располагается специальный

символ конца файла Eof

Файл имеет три характерные особенности1. имя2. содержит компоненты только одного

типа3. длина ограничивается только

емкостью устройств внешней памяти

Типы файлов

стандартные

текстовый

нетипизированный

• Для выполнения операций с конкретным файлом в программе обычно используется файловая переменная

• Файловая переменная связывается с файлом, выполняемые с ней операции, приводят к соответствующим изменениям в файле

Описывание файловых переменных:

• ТипизированныйVar имя: File Of тип;

• ТекстовыйVar имя: Text;

• НетипизированныйVar имя: File;

Доступ к файлам

последовательный

•очередной элемент можно прочитать и записать только после аналогичной операции с предыдущим элементом

прямой•чтение и запись произвольного элемента выполняется по заданному адресу

• к текстовым файлам доступ только последовательный• к типизированным и нетипизированным файлам доступ

может быть как последовательным, так и прямым

Текстовый файл

код символа

код символа

… EOLN

код символа

код символа

… код символа

код символа

EOLN

код символа

код символа

… код символа

EOFFile Of Integer

целое число

целое число

целое число

… целое число

EOF

File Of T

T = Record a: Byte;b: Char;c: Integer;

End;

байт код символ

а

целое число

… байт код символ

а

целое

число

EOF

• переменная файлового типа - логический файл

• реальное устройство / файл на диске – физический файл

• для работы с физическим файлом, необходимо связать файловую переменную с именем этого файла

Assign (файловая_переменная, имя_файла);

• 'Myfile.dat' – имя файла в текущем каталоге• 'D:\Users\Myfile.dat' – полное имя файла• 'PRN' – имя устройства (принтера)

Инициализация файла

• После того как файл был связан с файловой переменной, его необходимо открыть для работы

• Режимы инициализации файла

• Rewrite (файл_перемен);Создание нового файла

и открытие его для записи

• Reset (файл_перемен);Открытие ранее существующего файла

• Append (файл_перемен);Открывает ранее

существующего текстового файл для добавления в него

новых данных

• По окончании работы файл необходимо закрыть

Close (файловая_перемененная);

• Чтение данных из файлов▫для типизированных файлов Read▫для текстового файла Read и ReadLn

Read (файловая_переменная, список_ввода);

• Запись данных в файлы▫для типизированных файлов Write▫для текстового файла Write и WriteLn

Write (файловая_переменная, список_вывода);

• определение конца файлаEof (файловая_переменная);

• определение конца строкиEoln (файловая_переменная);

Program Neg_pos_file;Var f1, f2, f3: File Of Integer;

a: Integer; Begin

Assign (f1, 'data.dat'); Assign (f2, 'pos.dat'); Assign (f3, 'neg.dat');Reset (f1); Rewrite (f2); Rewrite (f3);While NOT EOF (f1) DoBegin

Read (f1, a);If a > 0 Then Write (f2, a); If a < 0 Then Write (f3, a);

End;Close (f1); Close (f2);Close (f3);

End.

Recommended