
- •Лекции по
- •(Те что я нашел)
- •Информация и данные.
- •Анализ программ, не содержащих ветвлений
- •Если p{ а }q и q{ b }r, то выполняется p{ a;b }r.
- •Проектирование цикла с помощью инварианта Задача 1. Найти сумму величин 1/iот 1 до тех пор, пока она не станет больше некоторого наперед заданного числаa.
- •Будем искать решение нашей задачи в виде цикла, имеющего следующий вид:
- •Линейные структуры данных.
- •Операции над линейной структурой данных
- •Виды линейных структур данных.
- •4)Стек на базе массива
- •Тема: Анализ создаваемых абстракций
- •Полнота
- •Аназиз типов данных
- •Операции egual, similar и copy
- •Функция абстракции
- •Функция абстракции есть
Линейные структуры данных.
1)Интуитивное понятие о реализуемой структуре данных.
2)Функциональное описание структуры данных.
(Спецификация): РОР (PUSH(S,X)) =S-аксиома.
3)Логическое описание.
Описываем в определенных ранее понятиях.
Новое понятие определяем через набор операций:
а) логическое описание структуры;
б) логическое описание операций над этой структурой;
(логическое описание на абстрактном уровне).
4)Физическое представление.
(Реализация операций над представителем).
Объединение, соединение, разделение вариантов.
Операции над линейной структурой данных
1)Создать(CREATE,INIT,…)
CREATE– для динамических структур;
INIT- для статических структур;
2)получить доступ к k-му элементу структуры с целью исследования или изменения этого элемента (селектор);
3)включить новый элемент непосредственно перед заданным (после);
4)исключить заданный элемент
Если 3) и 4) существуют, то структуру данных будем называть динамической;
5)объединить две структуры данных в одну (конкатенация строк)
6)разбить структуру на две;
7) сделать копию структуры данных;
8)определить количество элементов в структуре (операции наблюдателя);
9)сортировать элементы структуры данных в некотором порядке;
10)искать;
11)уничтожить структуру данных (деструктор);
(done,Dtstroy).
Виды линейных структур данных.
Стек (диверсивная память).
Очередь типа LIFO–lost-in-first-out.
Очередь – такая линейная структура, где доступ, добавление – с одного конца,а выборка с другого.
выборка
хвост (tail)
000000 голова(head)
добавление
Очередь – кольцевой буфер, циклическая память или очередь типа (FIFO).
Дек– двухвходовая очередь(Double-Ended-Quene).
.
000000
Разновидности дека:
дек с ограниченным входом – архив;
дек с ограниченным выходом – перечень или реестр.
Приоритетная очередь – выборка производится с одного конца (головы), а включение в любое место – в зависимости от приоритета.
Дек:
Реализация стека.
СТЕК
1).Интуитивное понятие.
Операции:
пополнение стека; (PUSH)
просмотр верхнего элемента; (TOP)
уничтожение верхнего элемента; (POP)
проверка стека на пустоту; (ISEMPTY)
2,3)Логическое описание.
- верхушка
- тело
стека=новый стек новая
вершина
новое дно
тело
Типстек_Т={непустой_ стек_T/пустой_
стек_T} рекурсивное
определение
непустой_ стек_T=(вершина;T;тело: стек_T) стека
АЛГ. NEW:стек_Т;
newпустой_ стек_T
АЛГ.PUSH(S: стек_Т,t:T): стек_Т;
pushстек_Т(непустой_ стек_T(t,s))
АЛГ.POP(S: стек_Т): стек_Т;
еслиSесть непустой стек_Т,то
popтело (S),
иначеошибка
АЛГ. SIZE(S:стек_Т):INT;
sizeеслиSесть пустой_
стек_T,то0
иначе 1+size(тело(S))
АЛГ. IS EMPTY (S:стек_T):bool;
isemptySесть
пустой_ стек_T
4.Физическое представление
Способы реализации объекта стек_T:
о
граниченная реализация на база вектора
А
-
дескриптор
rep
REPresantation - представление
-
тело
В
Дескриптор содержит общую информацию обовсей структуре. Дескриптор указывает, где находится тело.
Неявная связь: тело начинается сразу за дескриптором.
body const
topint
rep
2
3 ……………..maxsize
дно
вершина
дно const C
2)неограниченный
стек на базе списка
стек вершина
В
ддддддддддд юll.юбютело вершина
-представление
Астека на базе списка
тело вершина
пустое тело
1 1
1 0
3)маленький
стекиз 0 и 1 на базе слова
свободная
часть
Частный случай.
Д
стек
А
стекВва
стека в сумме не превосходящие определенный
размер
A:
.
.
2
B:
1
Тип стек_Т=…
varA,B:стек_Т; (Статическая реализация)
INIT(A);INIT(B);
Для динамического регулирования стека:
а) дескриптор и тело выделяются статически;
б) дескриптор – статически, тело - динамически;
varA,B:стек_Т
С
Аcreate(A,k1);
- такие стеки тяжело
Вcreate(B,k2);
разделять через
k1
разные
куча ссылки
k2
в) выделять и тела, и дескрипторы динамически
create(A,k1); create(B,k2);
A1A
A2k1
B
k2
Замечание по поводу обработки ошибок.
1) Обнаружить ошибку и, непрерывая выполнение программы, известить пользователя с помощью сообщения об ошибке (напр.протокол ошибок).
2)Завести
специальный параметр “Код завершения”.несовре-
При возникновении ошибки формировать специальное менное
значение кода завершения и обрабатывать его. решение
3)Использование исключительных ситуаций–современный способ
Типы ошибок при работе со стеком.
1-Overflow-переполнение
стека.
2-Underflow-опустошение
стека(натолкнулись на дно).
Неправильный анализ предметной области (ПО).
Логическая ошибка программиста.