лекция по информатике 9.pptx
- Количество слайдов: 36
Структура данных – общее свойство информационного объекта, с которым взаимодействует та или иная программа. Это общее свойство характеризуется: – множеством допустимых значений данной структуры; – набором допустимых операций; – характером организованности. 1
Любая структура на абстрактном уровне может быть представлена в виде двойки <D, R> где D – конечное множество элементов, которые могут быть типами данных, либо структурами данных, R – множество отношений, свойства которого определяют различные типы структур данных на абстрактном уровне. 2
Основные виды (типы) структур данных: • • Множество – конечная совокупность элементов, у которой R=. Последовательность – абстрактная структура, у которой множество R состоит из одного отношения линейного порядка (т. е. для каждого элемента, кроме первого и последнего, имеются предыдущий и последующий элементы). 3
• • • Матрица – структура, у которой множество R состоит из двух отношений линейного порядка. Дерево – множество R состоит из одного отношения иерархического порядка. Граф – множество R состоит из одного отношения бинарного порядка. 4
Вырожденные (простейшие) структуры данных называются также типами данных. Различают следующие уровни описания данных: – абстрактный (математический) уровень – логический уровень – физический уровень 5
Классификация СД 6
Категории типов данных 1. Встроенные типы данных, т. е. типы, предопределенные в языке программирования или языке баз данных 2. уточняемые типы данных 3. перечисляемый тип данных 4. конструируемый тип (составной) 7
Категории типов 5. Указательные типы дают возможность работы с типизированными множествами абстрактных адресов переменных, содержащих значения некоторого типа 8
Встроенные типы данных В современных компьютерах к таким "машинным" типам относятся 1) целые числа разного размера (2 -8 байтов) 2) числа с плавающей точкой одинарной и двойной точности (4 и 8 байт соответственно) 3) тип CHARACTER (или CHAR) - это набор печатных символов из алфавита, зафиксированного в описании языка (ASCII) 9
Уточняемые типы данных Type T = min. . max; ПРИМЕРЫ Type year = (1900. . 2001); digit = (‘ 0’. . ’ 9’); 10
Перечисляемые типы данных TYPE T = (C 1, C 2, . . . , Cn) где Т — идентификатор нового типа, Ci — идентификаторы новых констант 11
Перечисляемые типы данных ПРИМЕРЫ: Type color = (red, yellow, green); destination = (hell, purgatory, heaven); 12
Массивы <Имя>: array [n. . k] of < тип >; var m 1: array[-2. . 2] of real; 13
Записи Запись - конечное упорядоченное множество полей, характеризующихся различным типом данных. 14
Записи var rec: record num : byte; { номер студента } name : string[20]; { Ф. И. О. } fac, group: string[7]; math, comp, lang: byte; {оценки} end; 15
Множества Множество - такая структура, которая представляет собой набор неповторяющихся данных одного и того же типа. type T =set of To Примеры type bitset = set of (0. . 15); type tapestatus = set of exception; 16
Указатели Понятие указателя в языках программирования является абстракцией понятия машинного адреса. Подобно тому, как зная машинный адрес можно обратиться к нужному элементу памяти, имея значение указателя, можно обратиться к соответствующей переменной. var ipt : ^integer; cpt : ^char; 17
Линейный алгоритм Задача. Ввести два целых числа и вывести на экран их сумму. Простейшее решение: program qq; var a, b, c: integer; begin read ( a, b ); c : = a + b; writeln ( c ); end. 18
Полное решение program qq; var a, b, c: integer; begin writeln('Введите два целых числа'); read ( a, b ); c : = a + b; writeln ( a, '+', b, '=', c ); end. Протокол: это выводит компьютер Введите два целых числа 25 30 это вводит пользователь 25+30=55 19
Разветвляющиеся алгоритмы Задача. Ввести два целых числа и вывести на экран наибольшее из них. Идея решения: надо вывести на экран первое число, если оно больше второго, или второе, если оно больше первого. Особенность: действия исполнителя зависят от некоторых условий (если … иначе …). 20
Программа program qq; var a, b, max: integer; begin writeln('Введите два целых числа'); read ( a, b ); полная форма if a > b then begin условного max : = a; оператора end else begin max : = b; end; writeln ('Наибольшее число ', max); end. 21
Условный оператор if <условие> then begin {что делать, если условие верно} end else begin {что делать, если условие неверно} end; Особенности: • перед else НЕ ставится точка с запятой • вторая часть (else …) может отсутствовать (неполная форма) • если в блоке один оператор, можно убрать слова begin и end 22
Сложные условия Сложное условие – это условие, состоящее из нескольких простых условий (отношений), связанных с помощью логических операций: • not – НЕ (отрицание, инверсия) • and – И (логическое умножение, конъюнкция, одновременное выполнение условий) • or – ИЛИ (логическое сложение, дизъюнкция, выполнение хотя бы одного из условий) • xor – исключающее ИЛИ (выполнение только одного из двух условий, но не обоих) Простые условия (отношения) < <= > равно >= = не равно <> 23
Сложные условия Порядок выполнения • выражения в скобках • not • and • or, xor • <, <=, >, >=, =, <> Особенность – каждое из простых условий обязательно заключать в скобки. Пример 4 1 6 2 5 3 if not (a > b) or (c <> d) and (b <> a) then begin. . . end 24
Циклы Задача. Вывести на экран квадраты и кубы целых чисел от 1 до 8 (от a до b). Особенность: одинаковые действия выполняются 8 раз. 25
Программа program qq; var i, i 2, i 3: integer; начальное значение begin переменная цикла конечное значение for i: =1 to 8 do begin i 2 : = i*i; i 3 : = i 2*i; writeln(i: 4, i 2: 4, i 3: 4); end. 26
Цикл с уменьшением переменной Задача. Вывести на экран квадраты и кубы целых чисел от 8 до 1 (в обратном порядке). Особенность: переменная цикла должна уменьшаться. Решение: for i: =8 downto 1 do begin i 2 : = i*i; i 3 : = i 2*i; writeln(i: 4, i 2: 4, i 3: 4); end; 27
Цикл с переменной Увеличение переменной на 1: for <переменная> : = <начальное значение> to <конечное значение> do begin {тело цикла} end; Уменьшение переменной на 1: for <переменная> : = <начальное значение> downto <конечное значение> do begin {тело цикла} end; 28
Цикл с переменной Особенности: • переменная цикла (integer) может быть только целой • шаг изменения переменной цикла всегда равен 1 (to) или -1 (downto) • если в теле цикла только один оператор, слова begin и end можно не писать: for i: =1 to 8 do writeln('Привет'); • если конечное значение меньше начального, цикл (to) не выполняется ни разу 29
Цикл с переменной Особенности: • в теле цикла не разрешается изменять переменную цикла • при изменении начального и конечного значения внутри цикла количество шагов не изменится: 30
Цикл с предусловием while <условие> do begin {тело цикла} end; Особенности: • можно использовать сложные условия: while (a<b) and (b<c) do begin {тело цикла} end; • если в теле цикла только один оператор, слова begin и end можно не писать: while a < b do a : = a + 1; 31
Цикл с предусловием Особенности: • условие пересчитывается каждый раз при входе в цикл • если условие на входе в цикл ложно, цикл не выполняется ни разу a : = 4; b : = 6; while a > b do a : = a – b; • если условие никогда не станет ложным, программа зацикливается a : = 4; b : = 6; while a < b do d : = a + b; 32
Цикл с постусловием Программа program qq; var n: integer; begin repeat writeln('Введите положительное число'); read(n); условие ВЫХОДА until n > 0; . . . { основной алгоритм } end. Особенности: • тело цикла всегда выполняется хотя бы один раз • после слова until ("до тех пор, пока не…") ставится условие ВЫХОДА из цикла 33
Оператор выбора Особенности: • после case может быть имя переменной арифметическое выражение целого типа (integer) или case i+3 of 1: begin a : = b; end; 2: begin a : = c; end; или символьного типа (char) var c: char; . . . case c of 'а': writeln('Антилопа'); 'б': writeln('Барсук'); else writeln('Не знаю'); end; 34
Оператор выбора Особенности: • если нужно выполнить только один оператор, слова begin и end можно не писать case i+3 of 1: a : = b; 2: a : = c; end; • нельзя ставить два одинаковых значения case i+3 of 1: a : = b; 1: a : = c; end; 35
Оператор выбора Особенности: • значения, при которых выполняются одинаковые действия, можно группировать перечисление диапазон смесь case i of 1: a : = b; 2, 4, 6: a : = c; 10. . 15: a : = d; 20, 21, 25. . 30: a : = e; else writeln('Ошибка'); end; 36
лекция по информатике 9.pptx