1 / 37

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

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

tass
Download Presentation

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

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

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

  3. Одномерный массив • Двухмерный массив

  4. Описание массива • в разделе описания переменных 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;

  5. в разделе описания типов данных 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;

  6. Доступ к элементу массива осуществляется путём указания имени массива и индексов в квадратных скобках: a [10] := 1.5; b [0, 2] := 'Pascal'; c [9, 3, 1] := 'P';

  7. ProgramMassiv1; Uses CRT; Varmas: Array[0..9] Of Integer; i, n: Integer; Begin ClrScr; Randomize; Fori := 0To9Do Begin mas [i] := Random (100); Write (mas [i]: 4); End; WriteLn; n := 0; Fori := 1To9DoIfmas [i] > mas [n] Then n := i; WriteLn(‘n = ’, n+1, ‘ mas[n] = ’, mas [n]); ReadLn; End.

  8. Program Massiv2; Uses CRT; Vari, j, m : Integer; mas: Array [0..3, 0..5] Of Integer; Begin ClrScr; Randomize; Fori := 0To 3 Do Begin For j := 0To 5 Do Begin mas [i, j] := Random (200) – 100; Write (mas [i, j]:5); End; WriteLn; End; m := mas [0, 0]; Fori := 0To 3 Do For j := 0To 5 Do Ifmas [i, j] < m Then m := mas [i, j]; WriteLn(‘m = ’, m); ReadLn; End.

  9. Строки • Строковые переменные используются для хранения последовательности символов и их можно рассматривать как одномерный массив символов • a := ‘Pascal’;

  10. Описание в программе строковых переменных • Var a: String [10]; • Var a: String;

  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'

  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);

  13. Program A; Vars: String [25]; k, n: Integer; Begin Write ('Vveditestroku: '); 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.

  14. Program A2; Vars: String [25]; k, i: Integer; Begin Write ('Vveditestroku: '); ReadLn (s); k := 0; For i := 1 To Length (s) Do If s[i] = 'a' Then k := k+1; WriteLn(' k= ', k); ReadLn; End.

  15. Program Change; Vars, n: String [25]; i: Integer; Begin Write ('Vveditestroku: '); ReadLn (s); n := ' '; Fori := 1 ToLength (s) Do Begin n := n + Copy (s, Length (s) + 1 - i, 1); WriteLn(n); End; ReadLn ; End.

  16. Записи • Запись – это совокупность ограниченного числа логически связанных компонент, принадлежащих к разным типам Record Поле_1: тип; Поле_2: тип; … поле_N: тип; End;

  17. Объявление записи • Type Row = Record FIO: String [20]; TEL: String [14]; End; VarStr: Row; • VarStr: Record FIO: String [20]; TEL: String [14]; End;

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

  19. Обращение к компонентам записей можно упростить, используя оператор With с оператором With Без оператора With WithStrDo Begin FIO := 'Иванов С.А.'; TEL := '(4752)' + TEL; End; Str.FIO := 'Иванов С.А.'; Str.TEL := '(4752)' + Str.TEL;

  20. В языке Pascal допускается описание записи, состоящей из общей и вариантной частей: Record Поле_1: тип; Поле_2: тип; … Case ключ: тип Of Вариант_1: (поля); Вариант_2: (поля); … вариант_N : (поля); End;

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

  22. Описание множества имя = SetOfтип_данных; • В разделе описания типов данных • TypeSmаlletters = SetOf 'a'..'z'; • Type Colors = SetOf (Red, Green, Brue); • Type Numbers = SetOf Byte; • В разделе описания переменных • VarFigures: SetOf 0..9;

  23. Разница между интервалом и множеством Интервал Множество Var P: 1..3; • 1 • 2 • 3 VarT: SetOf 1..3; • [ ] • [1] • [2] • [3] • [1, 2] • [1, 3] • [2, 3] • [1, 2, 3]

  24. A A A B A B B х Операции над множествами A B

  25. Program Lotto; Varnb, k: Set Of 1..36; kol, l, i, n: Integer; Begin Randomize; Write(' Kolichestvokartochek:'); ReadLn(kol); nb:= [1..36]; Fori:= 1 TokolDo Begin k := []; For l := 1 To5 Do Begin Repeat n := Random (36) Until (n in nb) ANDNOT (n in k); k := k+[n]; Write (n: 4); End; WriteLn; End; ReadLn; End.

  26. Файлы • Файл - именованная область внешней памяти компьютера или логическое устройство • у файла количество элементов в процессе работы может изменяться • файл располагается на внешних носителях информации • в конце файла располагается специальный символ конца файла Eof

  27. Файл имеет три характерные особенности • имя • содержит компоненты только одного типа • длина ограничивается только емкостью устройств внешней памяти

  28. Типы файлов

  29. Для выполнения операций с конкретным файлом в программе обычно используется файловая переменная • Файловая переменная связывается с файлом, выполняемые с ней операции, приводят к соответствующим изменениям в файле

  30. Описывание файловых переменных: • Типизированный Varимя: File Of тип; • Текстовый Var имя: Text; • Нетипизированный Var имя: File;

  31. Доступ к файлам • к текстовым файлам доступ только последовательный • к типизированным и нетипизированным файлам доступ может быть как последовательным, так и прямым

  32. переменная файлового типа - логический файл • реальное устройство / файл на диске – физический файл • для работы с физическим файлом, необходимо связать файловую переменную с именем этого файла Assign (файловая_переменная, имя_файла); • 'Myfile.dat' – имя файла в текущем каталоге • 'D:\Users\Myfile.dat' – полное имя файла • 'PRN' – имя устройства (принтера)

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

  34. По окончании работы файл необходимо закрыть Close (файловая_перемененная); • Чтение данных из файлов • для типизированных файлов Read • для текстового файла Read и ReadLn Read (файловая_переменная, список_ввода);

  35. Запись данных в файлы • для типизированных файлов Write • для текстового файла Write и WriteLn Write (файловая_переменная, список_вывода); • определение конца файла Eof(файловая_переменная); • определение конца строки Eoln(файловая_переменная);

  36. ProgramNeg_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) Do Begin 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.

More Related