- •5,6 Семестр Общие принципы проектирования программных систем. Этапы жизненного цикла программной системы.
- •1. Постановка задачи:
- •Требования, предъявляемые к программным системам:
- •2. Разработка:
- •3. Реализация:
- •Нисходящее и восходящее проектирование.
- •Структурное программирование (без go to).
- •2) Ветвление (if): 3) цикл с предусловием (do while):
- •1.2.4. Язык проектирования (метаязык)
- •Глава 2. Структуры данных.
- •2.1. Агрегативные переменные
- •2.2. Динамические структуры данных.
- •2.2.1. Списки. (Списочные структуры).
- •2.2.2. Очереди
- •2.2.3. Стеки
- •2.2.4. Множества
- •2.2.5. Деревья и графы
- •1 . Направленный граф:
- •2 . Ненаправленный граф:
- •2.3. Абстрактные структуры данных
- •2.3.2. Объекты
- •2.4. Файловые типы данных
- •2.4.4. Операции над файлами
- •4. Специальные операции:
- •Специальные типы файлов языка Pascal.
- •Файлы в других языках
- •3. Алгоритмы
- •3.1. Типы алгоритмов. Сложность алгоритмов.
- •3.2. Способы реализации алгоритмов.
- •5.2 Реализация наследования в Паскале
- •5.3 Проблема наследования статических методов
- •6.1 Объекты и их жизненный цикл
- •6.2. Инкапсуляция. Св-ва
- •6.3 Наследование
- •6.4. Области видимости
- •6.5 Информация о классе
- •Особенности архитектуры программ
- •7 .1 Обработчики сообщений Windows в Delphi
- •Средства разработки Windows приложений
- •4.4.2 Основные понятия ооп
- •4.4.3 Типы оос
- •4.4.4 Общие принципы работы оос-м
- •Особенности объектно-ориентированных систем
- •4.1 Декомпозиция и абстракция
- •Методы проектирования ориентированные на обработку
- •4.2.1 Модульное программирование
- •4.2.2 Функциональная декомпозиция
- •1. Пошаговое уточнение:
- •2. Метод анализа потоков данных:
- •Связанность модулей
- •Сцепление модулей
- •4.2.3. Технология структурного анализа проекта
- •4.2.4 Язык определения задач psl/psa
- •Методология Джексона
- •Методология Уорнера
- •4.2.6. Метод иерархических диаграмм hipo
- •Методы проектирования ориентированные на данные
2.2.2. Очереди
Очередь – упорядоченный набор элементов, в котором элементы всегда добавляются в начало, а изымаются только из конца.
( Для очереди допустима вставка только в начало. Не вводится операция поиска элемента. Операция удаления применяется только к последнему элементу)
Использование очередей: множество запросов к ресурсу; в программах, моделирующих алгоритмы теории массового обслуживания и т.д.
Реализация: (список на основе указателей)
Процедура добавления элемента в конец списка (начало очереди):
var Head,Tail:Link;
…
procedure AddItem(A:Link);
begin
if Head=nil then Head:=A; {если очередь пустая}
else Tail^.Next:=A;
Tail:=A;
end;
Процедура извлечения элемента из очереди:
var Head, Tail:Link;
…
procedure DellItem(Var A:Link);
begin
A:=Head;
Head:=Head^.Next
end;
2.2.3. Стеки
С тек – (динамическая структура) упорядоченный список, в котором элементы добавляются в начало и изымаются из начала.
Push – добавить, Pop – извлечь эл-т, Empy – проверка стека на пустоту (true - пуст), SP-переменная, хранящая текущее значение индекса стека.
Использование: везде, где используются подпрограммы (обработка прерываний).
Пример реализации стека на основе списка, реализованного на основе массива:
type
NameStr=string[15];
Student=record;
Name:NameStr;
Mark:integer;
…
end;
Const StackSize=100; {max размер стека}
Var
List:array[1..StackSize] of Student;
SP:integer; {указатель (вершины) стека}
…
SP:=1; {пустому стеку соответствует значение указателя 1}
…
Процедура добавления элемента:
procedure Push(Item:Student);
begin
if SP>StackSize then Exit; {стек переполнен}
List[SP]:=Item;
SP:=SP+1;
end;
Определение: пуст ли стек:
function Empty: Boolean;
begin
if SP=1 then Empty:=True;
else Empty:=False;
end;
Извлечение элемента из стека:
procedure Pop (Var Item:Student);
begin
if Empty then Exit;
SP:=SP-1;
Item:=List[SP]
end;
Реализация стека на основе динамических переменных:
Процедура добавления – AddFirst.
Процедура удаления – DelFirst.
Функция Empty: (if SP=1) заменить на (First=nil).
2.2.4. Множества
М ножество – (в контексте программирования) это неупорядоченный набор элементов данных одного типа.
Операции: добавление элемента, удаление, операция определения вхождения в множество (Member) (это логическая ф-ция).
В Pascal’е есть стандартный множественный тип:
С интаксическая диаграмма:
Примеры:
1) Мн-во целых чисел от 0 до 7:
Opcode: set of 0..7;
2) Мн-во символов (букв):
Letter: set of char;
Операции над мн-вами:
1) 2) 3) 4) , где - некоторый элемент (переменная) 5) равенство, неравенство – , 6) операции включения – ( подмн-во ), ( подмн-во ).
Реализация мн-ва на основе списка:
Добавление эл-та ( ) – (можно и в конец списка)
Удаление эл-та ( ) – , где - удаление не 1-го эл-та.
получается из ф-ции с исправлениями:
вместо пишем
вместо пишем