Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Программирование / WORD / Лекции по ЯП (часть 1).doc
Скачиваний:
104
Добавлен:
15.04.2015
Размер:
1.69 Mб
Скачать

1. Метод проектирования программных средств

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

Этот метод состоит из следующих этапов:

  1. техническое задание (постановка задачи);

  2. анализ задачи;

  3. разработка алгоритма решения задачи;

  4. выбор языка программирования;

  5. реализация алгоритма;

  6. тестирование и отладка готовой программы;

  7. документирование;

  8. поддержка и обновление программы.

1.1. Техническое задание

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

1.2. Анализ задачи

Анализ задачи означает определение того,

  1. какие требуются входные данные для решения данной задачи;

  2. какие нужно получить выходные данные, т.е. результаты решения задачи;

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

Если этапы 1 и 2 не будут выполнены должным образом, решение проблемы окажется неверным.

Например:

Определить общую стоимость яблок по количеству приобретенных килограммов и стоимости одного килограмма яблок.

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

Входные данные:

  • количество приобретенных яблок (в килограммах);

  • стоимость килограмма яблок (в рублях за килограмм).

Выходные данные:

общая стоимость яблок (в рублях).

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

Вот как может выглядеть универсальная формула, вычисляющая общую стоимость любого продукта:

общая стоимость = стоимость ед-цы продукта * число приобретенных ед-ц

Подставив в эту формулу переменные, которые фигурируют в нашей задаче, мы получим формулу для решения этой конкретной задачи:

общая стоимость яблок =

стоимость килограмма яблок * число приобретенных килограммов

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

1.3. Разработка алгоритма

Понятие алгоритма

Термин «алгоритм» произошел от имени арабского математика аль-Хорезми (IX в.), которым были описаны общие правила (названные позднее алгоритмами) выполнения основных арифметических действий в десятичной системе счисления. Эти алгоритмы изучаются в начальных разделах школьной математики. К числу алгоритмов школьного курса математики относятся также правила решения определенных видов уравнений или неравенств, правила построения различных геометрических фигур и т. п. Понятие алгоритма используется сегодня не только в математике, но и во многих областях человеческой деятельности, например, говорят об алгоритме управления производственным процессом, алгоритме управления полетом ракеты, алгоритме пользования бытовым прибором. Причем интуитивно под алгоритмом понимают некоторую систему правил, обладающих определенными свойствами.

Основные свойства, которыми должен обладать алгоритм:

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

  2. исполнитель может выполнить алгоритм, если он ему понятен, т. е. записан на понятном ему языке и содержит предписания, которые исполнитель может выполнить;

  3. определенность и однозначность – детерминированность. При одних и тех же исходных данных всегда должен получиться один и тот же результат;

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

  5. конечное число шагов. Это обязательное требование к алгоритмам.

В математике известны вычислительные процедуры алгоритмического характера, не обладающие свойством конечности. Например, процедура вычисления числа . Однако если мы введем условие завершения вида «закончить после получения n десятичных знаков числа », то получим алгоритм вычисления п десятичных знаков числа . На этом принципе построены многие вычислительные алгоритмы.

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

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

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

  1. считывание данных;

  2. выполнение вычислений;

  3. вывод результатов.

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

Важным этапом в процессе разработки алгоритма – ручная отладка алгоритма. Отладить алгоритм вручную — значит мысленно выполнить каждый шаг алгоритма, решающий свою подзадачу (так как это впоследствии осуществит компьютер), чтобы убедиться, что данный алгоритм будет функционировать должным образом. Вы сэкономите массу времени и сил, если ошибки в алгоритме будут выявлены на этом этапе.