24.01.2007.Кафедра ОСУ1 Структуры и алгоритмы обработки данных Лк – 18 часов Лб – 18 часов Зачет, КР в след.семестре.

Презентация:



Advertisements
Похожие презентации
Кафедра ОСУ1 Структуры и алгоритмы обработки данных Весенний: Лк – 18 часов, Лб – 18 часов, Зачет Осенний: Лк -26, Лб-10, Пр-18, КР, Экзамен.
Advertisements

Кафедра ОСУ, САОД Кафедра ОСУ, САОД1 Структуры и алгоритмы обработки данных Осенний: Лк -46, Лб-36, Пр-10, КР, Экзамен.
Массивы Материалы к урокам по программированию. МАССИВ это УПОРЯДОЧЕННАЯ последовательность данных ОДНОГО ТИПА. Массивы относятся к структурированным.
ОДНОМЕРНЫЕ МАССИВЫ. РАБОТА С ЭЛЕМЕНТАМИ СТРУКТУРИРОВАННЫЕ ТИПЫ ДАННЫХ.
Массивы Паскаль. Массивы - это Заранее известное число однотипных элементов Элементы (каждое данное массива) имеют общее имя(имя массива) и тип (тип элементов.
Тема урока: Одномерные массивы. - Где в жизни мы можем встретиться с таблицами?
Одномерные массивы. Массив – это конечный, последовательный набор элементов одного типа, связанных общим именем Простейшая форма – одномерный массив(линейная.
Двумерные массивы. Задачи обработки двумерных массивов.
Материалы к урокам по программированию Автор: Судакова Лариса Владимировна, учитель биологии и информатики МОУ СОШ 37 г. Буя Костромской области.
Массивы Вариант 1 Program upr1; Var s,a:real; I: integer; Begin S:=0; For I:=1 to 10 do Begin Writeln (введите очередное число'); Readln(a); S: =s+a; End;
© М.Е.Макарова
Урок повторения по теме: «Сила». Задание 1 Задание 2.
ПРОГРАММИРОВАНИЕ/ ЯЗЫКИ ПРОГРАММИРОВАНИЯ Лекция 4 Работа с бинарными файлами (весенний семестр 2012 г.) Доцент Кафедры вычислительных систем, к.т.н. Поляков.
Одномерный массив. Цель урока: познакомить учащихся с понятием одномерный массив Задачи: дать определение массива дать представление: об описании массива.
© М.Е.Макарова
Язык программирования Паскаль 9 часть. Массивы.
Указатели Динамические структуры данных. 2 Статические данные переменная (массив) имеет имя, по которому к ней можно обращаться размер заранее известен.
Массивы Описание массива. Виды и назначение массивов. Заполнение и вывод элементов массива.
Стрельникова Л.В.. План изучения нового материала 1.Понятие массива 2.Виды массивов 3.Описание массивов 4.Формирование массивов Стрельникова.
- это структура данных, представляющая собой упорядоченную совокупность значений одного типа.
Транксрипт:

Кафедра ОСУ1 Структуры и алгоритмы обработки данных Лк – 18 часов Лб – 18 часов Зачет, КР в след.семестре

Кафедра ОСУ 2 Литература Вирт Н. Алгоритмы+структуры данных = программы: Пер. с англ.-М.Мир, с., ил. Вирт Н. Алгоритмы и структуры данных: Пер. с англ.-М.Мир, с., ил. Кнут Д. Искусство программирования для ЭВМ. В семи томах. т.1. Основные алгоритмы. М.: Мир, 1976 Кнут Д. Искусство программирования для ЭВМ. В семи томах. т.3. Сортировка и поиск. М.: Мир, 1978 Ахо А., Хопкрофт,Д., Ульман Д. Структуры данных и алгоритмы. Вильямс, С-П, 2000

Кафедра ОСУ 3 Литература ftp://exilim.osu.cctpu.edu.ru/

Кафедра ОСУ 4 Введение Структура данных – общее свойство информационного объекта, с которым взаимодействует та или иная программа. Это общее свойство характеризуется: множеством допустимых значений данной структуры; набором допустимых операций; характером организованности.

Кафедра ОСУ 5 Введение Любая структура на абстрактном уровне может быть представлена в виде двойки где D – конечное множество элементов, которые могут быть типами данных, либо структурами данных, R – множество отношений, свойства которого определяют различные типы структур данных на абстрактном уровне.

Кафедра ОСУ 6 Введение Основные виды (типы) структур данных: Множество – конечная совокупность элементов, у которой R=. Последовательность – абстрактная структура, у которой множество R состоит из одного отношения линейного порядка (т. е. для каждого элемента, кроме первого и последнего, имеются предыдущий и последующий элементы).

Кафедра ОСУ 7 Введение Матрица – структура, у которой множество R состоит из двух отношений линейного порядка. Дерево – множество R состоит из одного отношения иерархического порядка. Граф – множество R состоит из одного отношения бинарного порядка.

Кафедра ОСУ 8 Введение Вырожденные (простейшие) структуры данных называются также типами данных. Различают следующие уровни описания данных: абстрактный (математический) уровень; логический уровень; физический уровень. Классификация СД

Кафедра ОСУ 9 Введение

Кафедра ОСУ 10 к атегории типов данных Встроенные типы данных, т.е. типы, предопределенные в языке программирования или языке баз данных. уточняемые типы данных перечисляемый тип данных конструируемый тип (составной)

Кафедра ОСУ 11 к атегории типов Указательные типы дают возможность работы с типизированными множествами абстрактных адресов переменных, содержащих значения некоторого типа

Кафедра ОСУ 12 Встроенные типы данных В современных компьютерах к таким "машинным" типам относятся целые числа разного размера (2-8 байтов)

Кафедра ОСУ 13 Встроенные типы данных числа с плавающей точкой одинарной и двойной точности (обычно четыре и восемь байт соответственно)

Кафедра ОСУ 14 Встроенные типы данных Тип CHARACTER (или CHAR) в разных языках - это либо набор печатных символов из алфавита, зафиксированного в описании языка (для большинства языков соответствует кодовому набору ASCII); либо произвольная комбинация нулей и единиц, размещаемых в одном байте или 2 байтах

Кафедра ОСУ 15 Уточняемые типы данных Type T = min..max; ПРИМЕРЫ Type year = ( ); digit = (0..9); Var y : year; d : digit;

Кафедра ОСУ 16 Перечисляемые типы данных TYPE T = (C 1,C 2,...,Cn) где Т идентификатор нового типа, Ci идентификаторы новых констант

Кафедра ОСУ 17 Перечисляемые типы данных ПРИМЕРЫ: Type color = (red, yellow, green); destination = (hell, purgatory, heaven); Var c: color; d: destination; … C := red; D := heaven;

Кафедра ОСУ 18 Массивы Type t = array [Ti] of To ; Type row = array [1.. 5] of real; Type card = array [1.. 80] of char; Type alfa = array [0.. 15] of char; … Var x: row; С: int x[4] int x[] = { 0, 2, 8, 22}

Кафедра ОСУ 19 Массивы : array [n..k] of ;

Кафедра ОСУ 20 Массивы var m1:array[-2..2] of real;

Кафедра ОСУ 21 Массивы Количество байтов непрерывной области памяти, занятых одновременно вектором, определяется по формуле: ByteSise = ( k - n + 1 ) * Sizeof (тип)

Кафедра ОСУ 22 Массивы Обращение к i-тому элементу вектора выполняется по адресу вектора плюс смещение к данному элементу. Смещение i-ого элемента вектора определяется по формуле: ByteNumer = ( i- n ) * Sizeof (тип), а адрес ByteNumber имя + ByteNumber. имя - адрес первого элемента вектора.

Кафедра ОСУ 23 Массивы Информация, содержащаяся в дескрипторе вектора, должна позволять, сократить время доступа, (A0 - n*Sizeof(тип) ) обеспечивает проверку правильности обращения (верхняя и нижняя границы массива).

Кафедра ОСУ 24 Массивы (многомерные) Var Mas2D : Array [n1..k1, n2..k2] of

Кафедра ОСУ 25 Массивы Количество байтов памяти, занятых двумерным массивом, определяется по формуле : ByteSize = (k1-n1+1)*(k2-n2+1) *SizeOf(Тип) Адресом массива является адрес первого байта начального компонента массива.

Кафедра ОСУ 26 Массивы Смещение к элементу массива Mas[i1,i2] определяется по формуле: ByteNumber = [(i1-n1)*(k2-n2+1)+(i2-n2)] *SizeOf(Тип) его адрес + ByteNumber.

Кафедра ОСУ 27 Массивы НапримерНапример: var Mas : Array [3..5] [7..8] of Word; Этот массив будет занимать в памяти: (5-3+1)*(8-7+1)*2=12 байт; а адрес элемента

Кафедра ОСУ 28 Массивы для двумерного массива c границами изменения индексов: [B(1)..E(1)][B(2)..E(2)], размещенного в памяти по строкам, адрес элемента с индексами [I(1),I(2)] может быть вычислен как: Addr[I(1),I(2)] = Addr[B(1),B(2)] + { [I(1)-B(1)] * [E(2)-B(2)+1] + [I(2)-B(2)] } *SizeOf(Тип)

Кафедра ОСУ 29 Массивы для массива произвольной размерности: Mas[B(1)..E(2)][B(2)..E(2)]...[B(n)..E(n)] получим: Addr[I(1),I(2),...,I(n)] = Addr[B(1),B(2),...B(n)] - Sizeof(Тип)* [B(m)*D(m)] + Sizeof(Тип)* [I(m)*D(m)] (m=1..n) где Dm зависит от способа размещения массива. При размещении по строкам: D(m)=[E(m+1)-B(m+1)+1]*D(m+1), где m = n-1,...,1 и D(n)=1

Кафедра ОСУ 30 Массивы При вычислении адреса элемента наиболее сложным является вычисление третьей составляющей формулы, т.к. первые две не зависят от индексов и могут быть вычислены заранее. Для ускорения вычислений множители D(m) также могут быть вычислены заранее и сохраняться в дескрипторе массива

Кафедра ОСУ 31 Массивы Дескриптор массива, таким образом, содержит: начальный адрес массива - Addr[I(1),I(2),...,I(n)]; число измерений в массиве - n; постоянную составляющую формулы линеаризации (первые две составляющие формулы); для каждого из n измерений массива: значения граничных индексов - B(i), E(i); множитель формулы линеаризации - D(i).

Кафедра ОСУ 32 Массивы Представление массивов с помощью векторов Айлиффа Для массива любой мерности формируется набор дескрипторов: основного и несколько уровней вспомогательных дескрипторов, называемых векторами Айлиффа. Каждый вектор Айлиффа определенного уровня содержит указатель на нулевые компоненты векторов Айлиффа следующего, более низкого уровня, а векторы Айлиффа самого нижнего уровня содержат указатели групп элементов отображаемого массива.Айлиффа

Кафедра ОСУ 33 Записи Запись - конечное упорядоченное множество полей, характеризующихся различным типом данных. type complex = record re: real; im: real end ; var x: complex; C: struct complex { float re; float im; } struct complex x;

Кафедра ОСУ 34 Записи struct { float re; float im; } x, y; x=y; … struct { float r; float i; } z;

Кафедра ОСУ 35 Записи var rec:record num :byte; { номер студента } name :string[20]; { Ф.И.О. } fac, group:string[7]; math,comp,lang:byte;{оценки} end;

Кафедра ОСУ 36 Записи Представление в виде последовательности полей, занимающих непрерывную область памяти АВТ Ф 852 0

Кафедра ОСУ 37 Записи в виде связного списка с указателями на значения полей записи

Кафедра ОСУ 38 Множества Множество - такая структура, которая представляет собой набор неповторяющихся данных одного и того же типа. Type T =set of To ПРИМЕРЫ Type bitset = set of (0..15); type tapestatus = set of exception; Var B : bitset; t : array [1.. 6] of tapestatus

Кафедра ОСУ 39 Множества Множество в памяти хранится как массив битов, в котором каждый бит указывает является ли элемент принадлежащим объявленному множеству или нет. Т.е. максимальное число элементов множества 256, а данные типа множество могут занимать не более 32 байт.

Кафедра ОСУ 40 Множества - адрес данного типа множество.

Кафедра ОСУ 41 Множества Число байтов, выделяемых для данных типа множество, вычисляется по формуле: ByteSize = (max div 8)-(min div 8) + 1, где max и min - верхняя и нижняя границы базового типа данного множества. Номер байта для конкретного элемента Е вычисляется по формуле: ByteNumber = (E div 8)-(min div 8), номер бита внутри этого байта по формуле: BitNumber = E mod 8

Кафедра ОСУ 42 Множества Например, S : set of byte; S:=[15,19]; Содержимое памяти при этом будет –

Кафедра ОСУ 43 Указатели Понятие указателя в языках программирования является абстракцией понятия машинного адреса. Подобно тому, как зная машинный адрес можно обратиться к нужному элементу памяти, имея значение указателя, можно обратиться к соответствующей переменной. Var ipt : ^integer; cpt : ^char; C: int *ipt; char *cpt;

Кафедра ОСУ 44 Динамическая память ( указатели ) Статическое распределение памяти Динамическое распределение памяти Os, Finder б иблиотеки Паскаля Исходный текст Объектный код Область динамического распределения Рекурсивный стек Heap

Кафедра ОСУ 45 Указатели Описание переменных типа указатель Type c = array [1..100] of real; Var p1 : ^integer ; p2 : ^real ; p3,p4 : ^c; a, b : integer ; p1 a p2 b p3 p4 p1 := nil ;.. p4 := nil; a := 5; b := 7;

Кафедра ОСУ 46 Указатели Процедуры работы с указателями: New ( p )- выделить память в Heap для переменной, на которую указывает p Dispose ( p )-освободить память в Heap, выделенную для переменной, на которую указывает p Var p1, p2, p3: ^integer; begin New ( p1 ); p1^ := 10; New ( p2 ); p2^ := 53; p1 p1^ 10 p2p2^ 53 p1 p2

Кафедра ОСУ 47 Указатели p1 := p2; Dispose ( p1 ); Dispose ( p2 ); p1 p p1 p2 p1 p2

Кафедра ОСУ 48 Указатели Обмен данными массивов Program DemoPointer; Const n=1000; Type mas = array [ 1..n] of integer; Var p1,p2,p3 : ^mas; i : integer;

Кафедра ОСУ 49 Указатели begin New ( p1 ); New ( p2 ); for i :=1 to n do begin Write (Введи,i, эл-т 1-го массива ); Readln (p1^[i]); Write (Введи,i, эл-т 2-го массива ); Readln (p2^[i]) end;

Кафедра ОСУ 50 Указатели …. { обмен данными } p3 := p1; p1:= p2; p2 := p3;... Dispose ( p1 );...