- •Глава 1. Основы алгоритмизации задач
- •Последовательность подготовки и решения задачи на эвм
- •1.2. Правила составления схем алгоритмов
- •1.3. Типовые структуры алгоритмов
- •1.3.1. Линейная структура
- •1.3.2. Ветвящаяся структура
- •1.3.3. Циклическая структура
- •Циклическая структура
- •1.4. Проектирование алгоритмов
- •1.4.1. Постановка задачи
- •1.4.2. Математическая формулировка задачи
- •1.4.3. Проектирование алгоритма задачи
- •1 .5. Вопросы для самоконтроля
1.4.1. Постановка задачи
Условие задачи представляет ее словесную формулировку, из которой ясны цель задачи и ее содержание. Исходными данными являются количество студентов в группе и их оценки, которые можно представить в виде одномерного массива, состоящего из 25 элементов.
Результатом счета должно быть количество студентов, оценки которых ниже среднего балла группы.
Для достижения поставленной цели необходимо:
1) вычислить средний балл группы;
2) путем сравнения оценки каждого студента со средним баллом группы выявить те из них, которые меньше среднего балла, и сосчитать их количество.
1.4.2. Математическая формулировка задачи
где ki - оценка i-го студента ( i=1,2,...,25 );
SR - средний балл группы;
N - количество студентов, оценки которых ниже среднего балла.
Задачу можно решить, используя только арифметические операции, поэтому необходимости в использовании численных методов нет.
1.4.3. Проектирование алгоритма задачи
1-й шаг. Расчленим нашу задачу на две подзадачи:
а) вычисление среднего балла группы;
б) подсчет количества оценок меньших среднего балла группы.
Добавим к этим подзадачам обязательные операции ввода исходных данных и вывода результатов счета.
Алгоритм задачи
2-й шаг. Предназначен для детализации подзадачи А1 и А2.
Подзадачу А1 расчленим на две подзадачи более низкого уровня: подзадачу А11, назначение которой состоит в вычислении суммы оценок, полученных студентами группы, и подзадачи А12, с помощью которой вычисляется средний балл группы.
Алгоритм подзадачи А1 (2-й шаг)
3-й шаг. Подзадача А11 представляет собой типовую задачу и расчленяется на две структуры, не нуждающиеся в дальнейшей детализации: линейной структуры, состоящей из одного символа и предназначенной для подготовки цикла и циклической, с помощью которой вычисляется сумма оценок.
Алгоритм подзадачи А11 (3-й шаг)
П одзадача А12 представляет собой линейную структуру, состоящую из одного символа. В дальнейшей детализации она не нуждается.
Рассмотрим теперь дальнейшую детализацию подзадачи А2, полученной в результате детализации задачи на первом шаге.
2-й шаг (продолжение). Алгоритм этой подзадачи аналогичен алгоритму подзадачи А11 и представляет собой линейную и циклическую структуру, соединенные между собой последовательно. Отличие же заключается только в том, что в задаче А2 телом цикла является не линейная, а ветвящаяся структура (ответвление).
Алгоритм подзадачи А2 (2-й шаг)
В результате применения метода пошаговой детализации получена совокупность подзадач в виде иерархической структуры, основанием которой являются подзадачи, не требующие дальнейшей детализации. Вершиной же структуры является сама задача.
Алгоритм задачи в целом получают путем “сборки” его из алгоритмов подзадач, полученных на предыдущем этапе.
Алгоритм задачи в целом