Upload
tass
View
48
Download
0
Embed Size (px)
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.