Информатика. Курс лекций. Громов Ю.Ю - 81 стр.

UptoLike

описан с подобным уровнем детализации, то, несомненно, это будет программа, пригодная для выполнения машиной. Одна-
ко описание алгоритма на таком уровне детализации весьма утомительно, поэтому обычно используется набор примитивов
более высокого уровня, каждый из которых является абстрактным инструментом, сконструированным из примитивов более
низкого уровня, представляемых машинным языком. В результате будет получен формальный язык программирования, по-
зволяющий описывать алгоритмы на более высоком концептуальном уровне, чем это возможно в собственно машинном
языке. Такие языки программирования мы подробно обсудим в следующей главе.
Псевдокод. При построении алгоритма человек должен учитывать влияние большого количества связанных идей. Эта
задача может выходить за рамки возможностей человеческого разума. Джордж А. Миллер (George A. Miller) в своей статье
1956 г. "Психологическое обозрение" (Psychological Review) изложил результаты исследования, которое показало, что человек
может манипулировать одновременно только семью элементами. Поэтому разработчику сложных алгоритмов необходимо средст-
во записи частей алгоритма для последующего возвращения к ним.
В 50-х и 60-х гг. XX в. для создания алгоритмов использовались блок-схемы, в которых алгоритм изображался с помо-
щью геометрических фигур, соединенных стрелками. Однако блок-схемы часто становились запутанной паутиной перепле-
тающихся стрелок, что значительно осложняло понимание лежащего в основе алгоритма. Поэтому блок-схемы уступили
дорогу другим средствам проектирования алгоритмов. Примером может послужить псевдокод (pseudocode), в соответствии с
которым алгоритмы записываются с помощью строго определенных текстовых структур (примитивов), предназначенных
для неформального представления идей в процессе разработки алгоритмов.
Один из путей создания псевдокода состоит в простом ослаблении правил того формального языка программирования,
на котором требуется записать окончательную версию алгоритма. Этот подход обычно используется, когда целевой язык
программирования известен заранее. В подобной ситуации псевдокод, используемый на ранних стадиях разработки про-
граммы, может состоять из синтаксических и семантических структур, аналогичных структурам целевого языка программи-
рования, но не столь формализованных.
В заключение стоит отметить, что блок-схемы могут быть полезны, когда целью является изображение алгоритма, а не
его построение. Например, на рис. 4.8 и 4.9 используется представление в виде блок-схемы, чтобы наглядно продемонстри-
ровать алгоритмические структуры, представленные операторами управления.
Поиск лучших средств записи все еще продолжается. В главе 6 мы увидим, что сохраняется тенденция использования
графики в создании крупных систем программного обеспечения, а псевдокод остается распространенным средством разра-
ботки меньших процедурных компонентов системы.
Пример псевдокода. Начиная с этого момента, мы отказываемся от использования команд формального языка про-
граммирования в пользу менее формальной и более интуитивной системы обозначений, известной как псевдокод.
Однако наша задачарассмотреть проблемы разработки и представления алгоритмов, не концентрируя внимание на
каком-либо определенном языке программирования. Поэтому выбранный здесь подход к созданию псевдокода состоит в
разработке непротиворечивой и краткой системы обозначений для представления повторяющихся семантических структур.
В свою очередь, эти структуры станут примитивами, с помощью которых мы попытаемся выразить дальнейшие идеи.
Одна из таких повторяющихся семантических структурприсвоение значения описательному имени. Например, будем
использовать для значений такие имена: Температура, СуммарноеКоличествоОсадков, БалансБанка и Положение. Для уста-
новления связи между именем и значением будем использовать форму
имя выражение
где имяэто описательное имя, а выражение описывает значение, которое присваивается этому имени. Такое утверждение
читается как "присвоить имени значение выражения". Например, утверждение
Итог Цена + Налог
присваивает результат сложения значений Цена и Налог имени Итог.
Другая повторяющаяся семантическая структуравыбор одного из действий в зависимости от истинности или ложно-
сти какого-либо условия.
Примеры:
Если валовой внутренний продукт растет, покупать обыкновенные акции; в противном слу-
чае продавать обыкновенные акции.
Покупать обыкновенные акции, если валовой внутренний продукт растет, и продавать их в
противном случае.
Покупать или продавать обыкновенные акции в зависимости от того, растет или уменьшает-
ся валовой внутренний продукт.
Каждое из этих предложений можно переписать так, чтобы оно соответствовало следующей структуре:
if (условие) then {действие} else {действие}
В этой структуре ключевые слова if (если), then (то) и else (иначе) используются для того, чтобы объявить различ-
ные подструктуры внутри основной структуры, а скобки позволяют обозначить границы этих подструктур. Включив такую
синтаксическую структуру в наш псевдокод, мы получаем универсальный способ описания указанной общей семантической
структуры. Это и есть то, что требовалось сделать.
Рассмотрим приведенное ниже предложение.
В зависимости от того, является год високосным или нет, разделить итог на 366 или 365,
соответственно.
Хотя приведенный выше вариант больше отвечает литературному стилю, мы будем использовать следующую его вер-
сию:
if (год високосный) then {разделить итог на 366} else {разделить итог на 365}