
- •Курсовая работа
- •Пояснительная записка
- •Аннотация
- •Введение
- •1 Постановка задачи и сфера её применения
- •2 Теоретическая часть
- •2.2 Алгоритм Дейкстры
- •3 Особенности работы в среде
- •4 Диаграммы насси-шнейдермана
- •5 Программная реализация
- •6 Инструкция пользователя
- •Заключение
- •Литература
- •Приложение а
- •Приложение б
- •Приложение в
Какую работу нужно написать?
4 Диаграммы насси-шнейдермана
Диаграмма Насси — Шнейдермана -это графический способ представления структурированных алгоритмов и программ, разработанный в 1972 году американскими аспирантами Беном Шнейдерманом и Айзеком Насси.
Поскольку в структурном программировании не используется безусловный переход, то Бен Шнейдерман решил, что для записи структурированных алгоритмов не нужны используемые в блок-схемах стрелки. Придумав разные способы изображения основных структур управления (последовательностей, ветвлений и циклов), он затем вместе с Айзеком Насси подробно проработал свою идею. Вместе они написали статью «Техника блок-схем для структурного программирования», которая была опубликована в научном журнале «SIGPLAN Notices» в августе 1973 года.
Диаграммы Насси — Шнейдермана получили широкое распространение в некоторых странах, особенно в Германии, где для них даже был разработан официальный стандарт Немецким институтом по стандартизации: DIN 66261.
Диаграммы Насси — Шнейдермана имеют ряд преимуществ перед блок-схемами при разработке структурированных алгоритмов и программ:
1 Запись является более компактной (в первую очередь за счёт отсутствия стрелок между элементами).
2 Изобразив алгоритм или программу в виде диаграммы Насси — Шнейдермана, можно быть гарантировано уверенным в том, что принципы структурного программирования соблюдены (при использовании блок-схем можно случайно получить неструктурированный алгоритм, если быть невнимательным).
3 Диаграммы Насси — Шнейдермана удобнее использовать для пошаговой детализации задачи, так как они тоже строятся по принципу пошаговой детализации — изначально диаграмма представляет собой один прямоугольник (исходная задача), затем в нём рисуется некоторая структура управления, в которой имеется несколько прямоугольников (подзадач исходной задачи), и далее с каждым прямоугольником (подзадачей) может быть проделана та же операция.
Описание алгоритма Дейкстры в диаграмме Насси-Шнейдермана представлено в приложении Б стр. 25
5 Программная реализация
5.1 Описание структуры программы
Программа выводит минимальный путь между двумя указанными вершинами в графе и его длину.
При запуске программы на экран выводится запрос о вводе начальной и конечной вершин графа. В случае, если начальная и конечная вершины совпадают, отображается соответствующее сообщение и работа программы завершается. В противном случае выполняется непосредственно алгоритм Дейкстры, схема которого приведена в приложении В.
Результатом программы является вывод на экран вершин, через которые проходит минимальный путь, а также вывод длины маршрута. Если пути между заданными точками не существует – выводится соответствующее сообщение.
Алгоритм использует три массива из N (= числу вершин сети) чисел каждый. Первый массив A содержит метки с двумя значения: 0 (вершина еще не рассмотрена) и 1 (вершина уже рассмотрена); второй массив B содержит расстояния - текущие кратчайшие рас- стояния от до соответствующей вершины; третий массив с содержит номера вершин - k-й элемент С[k] есть номер предпоследней вершины на текущем кратчайшем пути из Vi в Vk. Матрица расстояний D[i,k] задает длины дуге D[i,k]; если такой дуги нет, то D[i,k] присваивается большое число Б, равное "машинной бесконечности".
5.2 Описание использованных программных средств
Таблица 5.2.1–Описание переменных
Переменная |
Тип |
Описание |
n |
int |
Количество точек (вершин) грифа |
i,j |
int |
Счётчики |
k |
int |
Номер кратчайшего пути и наименьшей длины пути |
start |
int |
Номер начальной точки (вершины) |
finish |
int |
Номер конечной точки (вершины) |
A[i] |
boolean |
Массив, i-й элемент которого имеет значение false, когда i-й путь и расстояние временные, и принимает значение true, когда i-й путь и расстояние становятся постоянными |
D[i,j] |
int |
Массив i-j элемент которого содержит расстояние между i-й и j-й точками (вершинами) Замечание:
|
C[i] |
int |
Массив,который содержит номера вершин |
path[80][11] |
char |
Массив строк, который содержит пути Замечание: После прохождения обработки по алгоритму Дейкстры p-й элемент массива содержит кратчайший путь. |