Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Lektsia6_Modeli_Etapy_reshenia_zadach.doc
Скачиваний:
22
Добавлен:
26.08.2019
Размер:
233.98 Кб
Скачать

2.3Разработка алгоритма решения задачи

Алгоритм - это точное предписание, определяющее вычислительный процесс, ведущий от варьируемых начальных данных к искомому результату (ГОСТ 19.781-74).

Алгоритм содержит указание о том, какие операции необходимо выполнить над исходными данными и в какой последовательности для решения задачи.

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

К алгоритмам предъявляются следующие требования.

Определенность (детерминированность) означает однозначность толкования отображаемого алгоритмом вычислительного процесса.

Результативность алгоритма заключается в возможности получения результата решения задачи для допустимых исходных данных за конечное число шагов.

Массовость означает, что решение однотипных задач с различными исходными данными может быть осуществлено по одному алгоритму.

Дискретность означает, что определяемый алгоритмом вычислительный процесс может быть расчленен на отдельные этапы, элементарные операции.

Понятность (доступность) – алгоритм должен учитывать специфику исполнителя и, при необходимости, ему должны предоставляться дополнительные сведения; На практике используются следующие формы представления алгоритмов:

  1. Словесная запись (не формализованная запись алгоритма на естественном языке, например, рецепт приготовления манной каши);

  2. Блок-схема (наиболее наглядная графическая форма представления алгоритмов, используемая профессионалами особенно в тех случаях, когда алгоритм обладает изощренной логикой исполнения);

  3. Псевдокоды (язык программирования для бедных, когда нет возможности преподавать основы алгоритмизации с использованием ЭВМ – полуформализованные описания алгоритмов, включающий в себя как элементы "птичьего" языка программирования);

  4. Компьютерная программа (жестко формализованная запись алгоритма, ориентированная на исполнителя – ЭВМ). Для разработки компьютерных программ используются инструментальные средства, называемые языками программирования.

Рассмотрим запись алгоритма Евклида нахождения наибольшего общего делителя (НОД) для двух натуральных чисел во всех четырех перечисленных выше формах.

начало, конец алгоритма

простое действие, вычисление

задание исходных данных, вывод результата

проверка условия

Это линейный тип алгоритма (следование)

к содержанию

задание исходных данных, вывод результата

Правила разработки, оформления и обращения программ и программной документации определяются ЕДИНОЙ системой программной документации (ЕСПД) - комплексов государственных стандартов (ГОСТ 19.001-77).

Требования стандартов ЕСПД предъявляются к оформлению программ и программной документации в любой области, где применяются вычислительные машины.

2.4Выбор языка программирования

Для составления программ используются следующие языки: машинные, машинно-ориентированные и машинно-независимые (алгоритмические языки).

Машинный язык представляет собой свод правил кодирования в цифровом виде определенных операций (арифметических, логических, посылочных и др.), которые способен выполнять компьютер.

Программы для современных компьютеров, как правило, составляют на языках высокого уровня, однако для выполнения программы на компьютере необходимо переводить ее на машинный язык, так как непосредственное выполнение программы на компьютере осуществляется на машинном языке. Данный перевод осуществляется автоматически с помощью специальных программ (трансляторов, компиляторов или интерпретаторов).

Необходимо отметить, что в ряде случаев (например, при ограниченных ресурсах компьютера) программы составляются на машинных языках (для микропроцессорных систем, микрокалькуляторов, при необходимости для мини- и микро- компьютеров, для специализированных компьютеров).

На языке машины программа представляется в виде последовательности команд, каждая из которых записывается в специальной цифровой форме.

Команда представляет собой управляющую информацию представленную в виде машинного слова и предназначенную для управления работой компьютера при выполнении одной машинной операции.

В каждой команде указывается:

- код операции;

- адреса ячеек памяти, из которых необходимо выбрать операнды для выполнения операции, а также указывается куда (в какую ячейку памяти) направить результат операции или указывается способ определения этих адресов.

Характерные особенности программирования на машинном языке:

- детальное разбиение алгоритма на элементарные шаги;

- предварительное распределение ячеек памяти.

Достоинства: экономичность программ (малый объем памяти, высокое быстродействие и точность).

Недостатки: трудоемкость процесса составления программ, громоздкость текста (записи) программ (т.к. они состоят из элементарных операций машины).

Машинно-ориентированный язык отличается от машинного только тем, что вместо числовых значений, выражающих код операции команды и адреса операндов, используются символические (буквенные обозначения).

Машинная ориентированность означает, что в основе этих языков лежит система команд вычислительной машины.

Примером является язык АССЕМБЛЕР, каждый оператор которого соответствует одной команде компьютера.

Программа на АССЕМБЛЕРе также детализирована, как и при использовании машинного языка. Однако применение АССЕМБЛЕРа имеет ряд преимуществ:

- с символическим языком удобнее работать, чем с цифровыми кодами;

- текст программы, записанный на АССЕМБЛЕРе перерабатывается в программу на машинном языке с помощью транслятора, который обеспечивает распределение ячеек памяти, представление оператора языка в машинном формате и др.

Программирование на машинно-ориентированных языках требует знания не только сущности задачи и алгоритма ее решения, но и структуры, технических особенностей компьютера, способов программирования на ней.

Часто сознательно избирают АССЕМБЛЕР, если стремятся наиболее эффективно использовать возможности машины.

Машинно-независимые (алгоритмические) языки высокого уровня ориентированы на особенности задач и не зависят от конкретных компьютеров.

В настоящее время широкое применение находят языки программирования Си++, Паскаль, Бейсик.