Скачать презентацию Лекция 26 Тема 6 АЛГОРИТМИЗАЦИЯ И ПРОГРАММИРОВАНИЕ Скачать презентацию Лекция 26 Тема 6 АЛГОРИТМИЗАЦИЯ И ПРОГРАММИРОВАНИЕ

Лекция 26.pptx

  • Количество слайдов: 32

Лекция 26 Тема № 6 АЛГОРИТМИЗАЦИЯ И ПРОГРАММИРОВАНИЕ Структурированные типы данных: массивы, записи, множества. Лекция 26 Тема № 6 АЛГОРИТМИЗАЦИЯ И ПРОГРАММИРОВАНИЕ Структурированные типы данных: массивы, записи, множества.

СТРУКТУРИРОВАННЫЕ типы данных (Массивы, Строки, Записи, Файлы, Множества) Массивы представляют собой ограниченную упорядоченную совокупность СТРУКТУРИРОВАННЫЕ типы данных (Массивы, Строки, Записи, Файлы, Множества) Массивы представляют собой ограниченную упорядоченную совокупность однотипных величин, снабженных индексами. Type Arr = Array [1. . 3] of Real; {тип массив из 3 вещественных чисел} Мatrix = Array [1. . 3, 1. . 2] of Integer; {тип двумерный массив из 3 строк и 2 столбцов} Var Matr: Matrix; M 1, M 2: Array [1. . 6] of Real; Const M 3: Arr = (2, 4, 8); M 4: Matrix = ((1, 2), (3, 4), (5, 6)); Begin x : = M 3(2); y : = M 4(2, 1); ……… End.

Имя типа = ARRAY [ диапазоны индексов ] OF тип элемента массива; ПРИМЕР: Три Имя типа = ARRAY [ диапазоны индексов ] OF тип элемента массива; ПРИМЕР: Три способа описания одного и того же типа массива: type {1} M 1 = array [0. . 5] of integer; M 2 = array [char] of M 1; M 3 = array [-2. . 2] of M 2; {2} M 3 = array [-2. . 2] of array [char] of array [0. . 5] of integer; {3} M 3 = array [-2. . 2, char, 0. . 5] of integer; var A: M 3; {Обращаться к элементам массива можно следующим образом: } read(A[-1, 'a', 3]); read(A[1]['x'][0]); A[1]['c', 1]: =100;

Заполнение массива var a: array[1. . 100] of byte; kol: byte; BEGIN writeln('vvedite kolichestvo'); Заполнение массива var a: array[1. . 100] of byte; kol: byte; BEGIN writeln('vvedite kolichestvo'); readln(kol); writeln('vvedite elementi'); for i: =1 to kol do readln(a[i]); …. End.

Заполнение массива случайными числами var a: array[1. . 100] of byte; kol: byte; BEGIN Заполнение массива случайными числами var a: array[1. . 100] of byte; kol: byte; BEGIN writeln('vvedite kolichestvo'); readln(kol); writeln('vvedite elementi'); for i: =1 to kol do a[i]: =random(100); … END.

Вывод массива Type mas=array [-5. . 5] of char; Var a: mas; i: byte; Вывод массива Type mas=array [-5. . 5] of char; Var a: mas; i: byte; begin writeln('elementi '); for i: =1 to 11 do write(a[i]: 4); … End.

Определить максимальный элемент max: = a[1]; for i: =1 to n do if max<a[i] Определить максимальный элемент max: = a[1]; for i: =1 to n do if max

 многомерные массивы- массивы, элементами которых являются массивы. Var a: array [1. . 5] многомерные массивы- массивы, элементами которых являются массивы. Var a: array [1. . 5] of array [1. . 3] of integer; Var a: array [1. . 5, 1. . 3] of integer; графический образ I j 1 2 3 4 5 1 9 20 33 39 70 2 5 44 12 23 2 3 14 89 77 90 75 A[1, 1]=9 А[3, 2]=12

В памяти [1, 1] [1, 2] [1, 3] [2, 1] [2, 3] [2, 4] В памяти [1, 1] [1, 2] [1, 3] [2, 1] [2, 3] [2, 4] 9 5 14 20 44 89 …. Для хранения элементов массива отводятся рядом стоящие ячейки памяти.

Доступ к элементам многомерного массива a 2[4, 2] или a 2[4][2] type TMy = Доступ к элементам многомерного массива a 2[4, 2] или a 2[4][2] type TMy = array[1. . 10, char, 1. . 20] of Real; Var C: TMy; Begin c[1, ‘A’, 10]: =1. 5;

Ввод многомерного массива Type mas=array[1. . 10, 1. . 4] of byte; var a: Ввод многомерного массива Type mas=array[1. . 10, 1. . 4] of byte; var a: mas; i, j: Integer; … writeln('vvedite elementi'); for i: =1 to 10 do for j: =1 to 4 do readln(a[i, j]);

Вывод многомерного массива Type mas=array[1. . 10, 1. . 4] of byte; var a: Вывод многомерного массива Type mas=array[1. . 10, 1. . 4] of byte; var a: mas; n, m: byte; … Writeln(’vvedite razmer’); for i: =1 to n do Readln(n, m); writeln('elementi'); begin for j: =1 to m do for i: =1 to n do write(a[i, j], ‘ ‘); for j: =1 to m do writeln; write(a[i, j], ‘ ‘); end; …

Операции с массивами Для массивов одного типа определена операция присваивания. Например: Var a, b: Операции с массивами Для массивов одного типа определена операция присваивания. Например: Var a, b: array [1. . 4] of char; То в результате присваивания a: =b; Значения элементов массива b присвоятся соответствующим элементам массива А. Для любого массива F определены следующие функции: Length(F) – число элементов массива High (F)- Наибольшее значение индекса Low(F)-Наименьшее значение индекса

процедура Fill. Char: Fill. Char( var V; NBytes: Word; B: Byte ); Эта процедура процедура Fill. Char: Fill. Char( var V; NBytes: Word; B: Byte ); Эта процедура заполняет участок памяти однобайтовым значением. Например, для обнуления массива A[1. . 10] of Real можно записать: Fill. Char(A, 80, 0);

Запись – это структурированный тип данных, состоящий из фиксированного числа компонентов одного или нескольких Запись – это структурированный тип данных, состоящий из фиксированного числа компонентов одного или нескольких типов, называемых полями Описание записи type имя_типа = record описание 1 -го поля записи; описание 2 -го поля записи; . . . описание n-го поля записи; end; Обычно запись содержит совокупность разнотипных атрибутов, относящихся к одному объекту.

Пример описания записи Type Car = Record Number : Integer; Marka : String[20]; FIO Пример описания записи Type Car = Record Number : Integer; Marka : String[20]; FIO : String[40]; Address : String[60]; End; Var M, V : Car; {объявление записи из 4 -х полей} {номер} {марка} {фамилия и инициалы владельца} {адрес владельца} {окончание описания записи} {объявление переменных типа- запись} Обращение к записи Для организации доступа к отдельным компонентам записи используется СОСТАВНОЕ ИМЯ, которое имеет следующую структуру: <имя переменной>. <имя поля> Например: M. Number, M. marka, M. Number : =1678; M. Marka : =’ГАЗ-24’;

v. Поля записи могут иметь любой тип, в частности, сами могут быть записями. В v. Поля записи могут иметь любой тип, в частности, сами могут быть записями. В программе могут использоваться массивы записей. Например: Type info = record Fio : string[50]; pol : char; kurs: 1. . 5; stip: real; end; var grupa_stud: array [1. . 30] of info; Чаще всего записи используются как элементы файлов.

Для вложенных полей : type Birth. Day = record Day, Month: Byte; Year : Для вложенных полей : type Birth. Day = record Day, Month: Byte; Year : Word; end; var с: record Name : String; Bd : Birth. Day; end; begin if c. Bd. Year = 1989 then. . . end.

Обработка записей: Любая обработка записей (в том числе ввод и вывод) производится путем обращения Обработка записей: Любая обработка записей (в том числе ввод и вывод) производится путем обращения к отдельным полям. Например: write(‘Введите ФИО: ’); readln(student. fio); write(‘Введите пол: ’); readln(student. pol); write(‘Введите адрес: ’); readln(student. adres); и т. д. для всех полей записи.

Оператор присоединения With <переменная типа запись> do <оператор>; Например: with student do begin write(‘Введите Оператор присоединения With <переменная типа запись> do <оператор>; Например: with student do begin write(‘Введите ФИО: ’); readln(fio); write(‘Введите пол: ’); readln(pol); write(‘Введите адрес: ’); readln(adres); . . . end;

Пример вариантной записи 22 type figure = (rect, triangle, circle); shape = record x, Пример вариантной записи 22 type figure = (rect, triangle, circle); shape = record x, y : real; case kind : figure of rect : (height, width : real); triangle : (x 2, y 2, x 3, y 3 : real); circle : (radius : real); end;

ТИП-МНОЖЕСТВО – это множество всевозможных сочетаний объектов исходного множества. Для построения конкретного множественного типа ТИП-МНОЖЕСТВО – это множество всевозможных сочетаний объектов исходного множества. Для построения конкретного множественного типа используется перечисляемый или интервальный тип данных. Тип элементов, составляющих множество, называется базовым типом. Type M= Set of 'A‘. . 'D'; С= set of (PL, MIN, MULT, DIV); Var MS: M; Index: set of ‘ 0’. . ‘ 9’; Const Oper : C = [PL, DIV]; Num : set of 0. . 9 = [0. . 9] • Элементы множества не пронумерованы, не упорядочены. • Действия можно выполнять только над множеством в целом. • Множество может содержать от 0 до 255 элементов.

К переменным и константам множественного типа применимы операции присваивания(: =), объединения(+), пересечения(*) и вычитания(-): К переменным и константам множественного типа применимы операции присваивания(: =), объединения(+), пересечения(*) и вычитания(-): ['A', 'B'] + ['A', 'D'] даст ['A', 'B', 'D'] ['A'] * ['A', 'B', 'C'] даст ['A'] ['A', 'B', 'C'] - ['A', 'B'] даст ['C']. Операции с множествами Знак Название : = присваивание + объединение * пересечение - вычитание = тождественность <> нетождественность <= содержится в >= содержит in принадлежность

v. Конкретные элементы множества задаются в виде списка элементов множества, заключенных в [ ]. v. Конкретные элементы множества задаются в виде списка элементов множества, заключенных в [ ]. vпример: v. S 1: = [1, 2, 7]; v. S 2: = [0. . 3, 6]; v. S 3: = ['2', '9', 'a'. . 'f']; v. S 4: =[]; - пустое множество v. Порядок записи элементов множества не имеет значения. [1, 2, 3]=[3, 1, 2] v. Каждый элемент в множестве учитывается только один раз. [1, 1, 1, 2, 2, 3, 2. . 4] = [1, 2, 3, 4] Ø Нельзя вводить и выводить значения переменных множественного типа с помощью операторов ввода-вывода. Ø Множественная переменная может получить конкретное значение только в результате выполнения оператора : =. пример: a: =[]; b: =[‘a’, ’c’, ’b’]; b: =a;

Операции над множествами Объединение множеств. Знак операции объединения - ’+’ [ 1, 2, 3] Операции над множествами Объединение множеств. Знак операции объединения - ’+’ [ 1, 2, 3] + [3. . 5] = [1, 2, 3, 4, 5]

Пересечение множеств Знак операции пересечения - ’*’ [ 1, 2, 3, 4, 5] * Пересечение множеств Знак операции пересечения - ’*’ [ 1, 2, 3, 4, 5] * [1, 5, 7, 9] =[1, 5] [1, 2, 3] * [ 5, 6] = [ ]

Разность множеств Знак операции - ’-’ [ 1, 2, 3, 4]-[ 3, 4, 5, Разность множеств Знак операции - ’-’ [ 1, 2, 3, 4]-[ 3, 4, 5, 6]=[1, 2] [1. . 5] - [4, 1. . 3, 6, 7, 5] = [ ]

 Операции отношения A=B, когда множества А и В совпадают A<>B, множества А и Операции отношения A=B, когда множества А и В совпадают A<>B, множества А и В не совпадают A<=B, все элементы А принадлежат В A>=B, все элементы В принадлежат А

Операция вхождения: x in M x- величина, тип которой совпадает с базовым типом множества Операция вхождения: x in M x- величина, тип которой совпадает с базовым типом множества М-множество пример Пусть М= [2, 4, 5, 7] и x=6, y=5; 4 in M = true x in M = false y in M = true

Вывод элементов множества Осуществляется перебором и проверкой на вхождение всевозможных значений элементов множества Пример Вывод элементов множества Осуществляется перебором и проверкой на вхождение всевозможных значений элементов множества Пример Var s: set of byte; i: byte; Begin … For i: =0 to 255 do If i in s then write(i, ‘ ‘);

Добавление элемента в множество var a: set of byte; c: byte; readln(c); a: =a+[c]; Добавление элемента в множество var a: set of byte; c: byte; readln(c); a: =a+[c]; a: =a+[4] For i: =1 to 5 do a: =a+[i]; For i: =1 to 5 do a: =a+[random(256)]; Пустое множество [ ] A: =[ ]

Вывод множества В цикле перебираются все возможные значения, которые могут принимать элементы множества и Вывод множества В цикле перебираются все возможные значения, которые могут принимать элементы множества и проверяют, если встретили такое, которое есть в множестве, то его выводят на экран. Var a: set of byte; c: set of ‘a’. . ’z’; Begin … For i: =0 to 255 do For e: =‘a’ to ‘z’ do if i in a then writeln(i); if e in c then writeln(е); … End.