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

Циклическая структура

Пример 1.14

Вычислить сумму элементов массива А(50).

Схема алгоритма

В ычислительный процесс основан на использовании рекуррентного соотношения1 S = S+ai, которое позволяет получить искомую сумму путем последовательного накопления слагаемых в переменной S. Начальное значение S = 0 задается перед входом в цикл. Вычисления в цикле ведутся по схеме:

S = S+a1; S = a1

S = S+a2; S= a1+a2

…………………………………..

S = S+a50; S= a1+a2+...+a50

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

Первое заключается в том, что начальное значение произведения, задаваемое перед входом в цикл, полагается равным 1, а не 0.

Второе же состоит в том, что при вычислении текущего значения произведения используется операция умножения, а не сложения.

Пример 1.15

Дан массив B(100). Найти наибольший элемент этого массива.

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

. Схема алгоритма

Алгоритм поиска минимального элемента массива аналогичен изложенному

Пример 1.16

Дан массив а(100), состоящий из положительных и отрицательных элементов. Сформировать массив d из положительных элементов исходного массива. При решении задачи считать, что индексация элементов исходного массива начинается с 1, а вновь формируемого - с 0.

Схема алгоритма

1.4. Проектирование алгоритмов

Конечной целью, к достижению которой должен стремиться каждый программист, является короткая, легко читаемая и, что самое главное, работающая программа. По мнению специалистов, программа, которая работает правильно только в течение 90% времени, является на 100% бесполезной.

Считается, что лучше не иметь никакой программы, чем иметь ненадежную.

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

  1. использование, где это возможно и целесообразно, подпрограмм;

  2. предварительное проектирование алгоритма задачи с последующей записью его в виде программы на одном из языков программирования;

  3. применение при проектировании алгоритма одного из методов пошаговой детализации, например, метода «сверху-вниз»;

  4. построение алгоритма только из типовых структур - линейной, ветвящейся и циклической.

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

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

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

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

После того, как функции всех подзадач определены, задача считается определенной в целом.

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

Подзадача, требующая детализации, обозначается символом с чертой.

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

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

Пример 1.17

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]