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

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

  • Upload
    tass

  • View
    48

  • Download
    0

Embed Size (px)

DESCRIPTION

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

Citation preview

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

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

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

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

Массивы

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

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

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

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

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

0 1 2 … n

Имя

0 1 2 … n

Имя

0

1

2

m

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

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

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;

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

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;

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

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

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

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

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.

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

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.

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

Строки

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

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

a 6 P a s c a l

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

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

•Var a: String [10];

•Var a: String;

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

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

• объединение строк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'

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

• Определение длины строки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);

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

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.

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

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.

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

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.

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

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

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

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

End;

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

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

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

End;

Var Str: Row;

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

End;

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

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

•Имя поля:

Str.FIOStr.TEL

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

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

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

With Str Do Begin

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

End;

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

Str.TEL;

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

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

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

End;

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

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

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

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

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

Описание множестваимя = 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;

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

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

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]

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

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

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

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

Примечание

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

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

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

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

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

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

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

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

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

A B

A B

A B

A B

A х

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

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.

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

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

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

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

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

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

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

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

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

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

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

Типы файлов

стандартные

текстовый

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

код символа

код символа

… EOLN

код символа

код символа

… код символа

код символа

EOLN

код символа

код символа

… код символа

EOFFile Of Integer

целое число

целое число

целое число

… целое число

EOF

File Of T

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

End;

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

а

целое число

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

а

целое

число

EOF

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

новых данных

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

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

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

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

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

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

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

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

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

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

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

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.