Главная » Все файлы » Просмотр файлов из архивов » PDF-файлы » Структуры данных и алгоритмы

Структуры данных и алгоритмы, страница 10

PDF-файл Структуры данных и алгоритмы, страница 10 Теория графов (10448): Книга - 3 семестрСтруктуры данных и алгоритмы: Теория графов - PDF, страница 10 (10448) - СтудИзба2017-07-10СтудИзба

Описание файла

PDF-файл из архива "Структуры данных и алгоритмы", который расположен в категории "". Всё это находится в предмете "теория графов" из 3 семестр, которые можно найти в файловом архиве РТУ МИРЭА. Не смотря на прямую связь этого архива с РТУ МИРЭА, его также можно найти и в других разделах. Архив можно найти в разделе "книги и методические указания", в предмете "теория графов" в общих файлах.

Просмотр PDF-файла онлайн

Текст 10 страницы из PDF

Читатель может проследить применение приведенныхрекомендаций при разработке программ в этой книге, а также может проверить ихдейственность в собственной практике программирования.1.2.3.Планируйте этапы, разработки программы. Мы описывали в разделе 1.1 этапыразработки программы: сначала черновой набросок алгоритма в неформальномстиле, затем псевдопрограмма, далее — последовательная формализация псевдопрограммы, т.е.

переход к уровню исполняемого кода. Эта стратегия организуети дисциплинирует процесс создания конечной программы, которая будет простойв отладке и в дальнейшей поддержке и сопровождении.Применяйте инкапсуляцию. Все процедуры, реализующие АТД, поместите в одно место программного листинга. В дальнейшем, если возникнет необходимостьизменить реализацию АТД, можно будет корректно и без особых затрат внестикакие-либо изменения, так как все необходимые процедуры локализованы в одном месте программы.Используйте и модифицируйте уже существующие программы.

Один из неэффективных подходов к процессу программирования заключается в том, что каждый новый проект рассматривается "с нуля", без учета уже существующих про-1.6. ПРАКТИКА ПРОГРАММИРОВАНИЯ37грамм. Обычно среди программ, реализованных на момент начала проекта, можно найти такие, которые если решают не всю исходную задачу, то хотя бы еечасть.

После создания законченной программы полезно оглянуться вокруг и посмотреть, где еще ее можно применить (возможно, вариант ее применения окажется совсем непредвиденным).4. Станьте "кузнецом" инструментов. На языке программистов инструмент(tool) — это программа с широким спектром применения. При создании программы подумайте, нельзя ли ее каким-либо образом обобщить, т.е. сделать более универсальной (конечно, с минимальными программистскими усилиями).Например, предположим, что вам необходимо написать программу, составляющую расписание экзаменов. Вместо заказанной программы можно написать программу-инструмент, раскрашивающий вершины обычного графа (по возможности минимальным количеством цветов) таким образом, чтобы любые две вершины, соединенные ребром, были закрашены в разные цвета.

В контекстерасписания экзаменов вершины графа — это классы, цвета — время проведенияэкзаменов, а ребра, соединяющие две вершины-класса, обозначают, что в этихклассах экзамены принимает одна и та же экзаменационная комиссия. Такаяпрограмма раскраски графа вместе с подпрограммой перевода списка классов вмножество вершин графа и цветов в заданные временные интервалы проведенияэкзаменов составит расписание экзаменов. Программу раскраски можно использовать для решения задач, совсем не связанных с составлением расписаний, например для задания режимов работы светофоров на сложном перекрестке, какбыло показано в разделе 1.1.5.

Программируйте на командном уровне. Часто бывает, что в библиотеке программ не удается найти программу, необходимую для выполнения именно нашейзадачи, но мы можем адаптировать для этих целей ту или иную программуинструмент. Развитые операционные системы предоставляют программам, разработанным для различных платформ, возможность совместной работы в сетивовсе без модификации их кода, за исключением списка команд операционнойсистемы. Чтобы сделать команды компонуемыми, как правило, необходимо, чтобы каждая из них вела себя как фильтр, т.е. как программа с одним входным иодним выходным файлом. Отметим, что можно компоновать любое количествофильтров, и, если командный язык операционной системы достаточно интеллектуален, достаточно просто составить список команд в том порядке, в каком онибудут востребованы программой.Пример 1.11.

В качестве примера рассмотрим программу spell, написанную Джонсоном (S.C. Johnson) с использованием команд UNIX . На вход этой программы поступает файл /1, состоящий из текста на английском языке, на выходе получаем всеслова из / lt не совпадающие со словами из небольшого словаря2.

Эта программа воспринимает имена и правильно написанные слова, которых нет в словаре, как орфографические ошибки. Но обычно выходной список ошибок достаточно короткий, поэтому его можно быстро пробежать глазами и определить, какие слова в нем не являются ошибками.Первый фильтр, используемый программой spell, — это команда translate, которая имеет соответствующие параметры и заменяет прописные буквы на строчные,пробелы — на начало новых строк, а остальные символы оставляет без изменений.На выходе этой команды мы получаем файл f2, состоящий из тех же сле^в, что ифайл /1, но каждое слово расположено в отдельной строке. Далее выполняется команда sort, упорядочивающая строки входного файла в алфавитном порядке.

Результатом выполнения этой команды является файл f3, содержащий отсортированныйсписок (возможно, с повторениями) слов из файла /2- Затем команда unique удаляет1UNIX — торговая марка Bell Laboratories.Мы могли бы использовать полный словарь, но многие орфографические ошибки совпадают со словами, которые почти никогда не применяются.238ГЛАВА 1. ПОСТРОЕНИЕ И АНАЛИЗ АЛГОРИТМОВ•Xповторяющиеся строки в своем входном файле f3, создавая выходной файл f4, содержащий слова из исходного файла (без прописных букв и повторений), упорядоченныев алфавитном порядке.

Наконец, к файлу /4 применяется команда diff, имеющая параметр, который указывает на файл /5. содержащий в алфавитном порядке слова изсловаря, расположенные по одному в строке. Результатом этой команды будет списокслов из файла /4» которые не совпадают со словами из файла /5. т.е. те слова из исходного списка, которых нет в словаре. Программа spell состоит из следующей последовательности команд:spell:translate [A-Z] -» [a-z], пробел —» новая строкаsortuniquediff словарьКомандный уровень программирования требует дисциплины от команды программистов. Они должны писать программы как фильтры везде, где это возможно, исоздавать программы-инструменты вместо узкоспециализированных программ всегда, когда для этого есть условия.

Существенным вознаграждением за это будет значительное повышение вашего коэффициента отношения результата к затраченнымусилиям. П1.7. Расширение языка PascalБольшинство программ в этой книге написаны на языке Pascal. Чтобы сделатьлистинги программ более читабельными, мы иногда будем применять три конструкции, которые вы не найдете в стандартном Pascal, но которые легко трансформируются в операторы языка Pascal. Одна из таких конструкций — нечисловые метки.Если в программе необходимо использовать несколько меток, то нечисловые меткизначительно облегчат понимание программы.

Например, оператор goto выход, очевидно, более понятен, чем goto 561. Для преобразования программы с нечисловымиметками в "чистую" программу Pascal, надо заменить все нечисловые метки различными числами и затем объявить их метками (label) в начале программы. Этот процесс можно полностью автоматизировать.Другой нестандартной конструкцией является оператор возврата return, которыйпозволяет писать более понятные программы без использования операторов goto.Оператор возврата будем использовать в следующей форме: ге1игп(выражение), гдескобка (выражение) необязательна. Преобразовать процедуру с операторами возвратав стандартную программу Pascal очень просто. Сначала надо объявить новую метку,скажем 999, и затем поместить ее на последний оператор end процедуры.

Например,оператор return(x) в некой функции zap заменяется следующим блоком:beginzap: = x;goto 999endОператор return, не имеющий аргументов, просто заменяется на оператор goto 999.Пример 1.12. В листинге 1.6 представлена программа, вычисляющая факториал,в которой использованы операторы возврата. В листинге 1.7 показана та же программа после замены операторов return стандартными операторами Pascal.

DЛистинг 1.6. Программа вычисления факториала с операторами возвратаfunction fact ( n: integer ) : integer;beginif n <= 1 then: ,'1.7. РАСШИРЕНИЕ ЯЗЫКА PASCAL.:••'•'.•-"••'•.i.'.-i.- • • , . .39return(1)elsereturnfn * fact(n - 1))end; { fact }Листинг 1.7. Программа вычисления факториала на языке Pascal•; ; - /:.,:"„.

",:,..,. ,,.., •• •::<:•:ГГfunction fact ( n: integer ): integer;label999;beginif n <= 1 thenbeginfact:= 1;goto 999endelsebeginfact:= n * fact(n - 1);goto 999endqqqУУ? .,end; { fact }Третье расширение языка Pascal, которое мы будем применять, заключается в постоянном использовании выражений, описывающих типы, в качестве имен типов. Например, выражения, подобные Т celltype, мы считаем допустимыми в качестве имен типов,но недопустимыми для типов параметров процедур или значений, возвращаемых функциями. Технически Pascal требует, чтобы мы использовали имена для типов данных, например prtocell (указатель на ячейку). В этой книге мы будем допускать такие описывающие выражения в качестве имен типов, надеясь, что читатель сможет придумать имядля типа данных и механически заменить описывающее тип выражение именем типа.1Другими словами, мы будем использовать операторы, подобныеfunction zap( A: array[1..10] of integer ) : t celltypeподразумевая под этим следующий оператор (здесь arrayofinteger обозначает "массивцелых чисел"):function zap( A: arrayofinteger ): prtocell,Наконец, замечание о применяемых нами соглашениях в отношении листинговпрограмм.

Свежие статьи
Популярно сейчас
А знаете ли Вы, что из года в год задания практически не меняются? Математика, преподаваемая в учебных заведениях, никак не менялась минимум 30 лет. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
5209
Авторов
на СтудИзбе
430
Средний доход
с одного платного файла
Обучение Подробнее