Информатика |
Глава 9. Основные приемы программирования | назад оглавление вперед |
9.4. Порядок решения задач с использованием ЭВМ
Решение задач с использованием ЭВМ включает следующие этапы: формулировка - задачи на профессиональном языке, математическая постановка задачи, выбор метода решения, выбор структуры данных и разработка алгоритма, программирование, отладка и тестирование программы, счет по готовой программе и анализ результатов. Подробно эти этапы рассмотрены в п. 7. Здесь в упрощенном виде рассмотрены те этапы, выполнение которых необходимо при решении простых задач в начальный период изучения программирования.
1. Точная формулировка цели решения задачи, т.е. - определение, что именно нужно получить в результате решения задачи и в каком виде желательно получить результат.
2. Выбор обозначений для переменных программы. Выделение исходных данных и результатов.
Обозначения переменных должны быть согласованы с возможностями обозначения переменных в алгоритмическом языке (в частности, в Basic). Информацию об используемых переменных удобно разместить в таблице 9.5.
Таблица 9.5. Характеристика переменных программы
Имя переменной в программе |
Физический смысл переменой |
Назначение переменной |
Ограничения на исходные данные |
|
|
|
|
Эту таблицу обычно не удается полностью заполнить перед составлением программы, так как в процессе разработки программы может появиться необходимость в дополнительных переменных для хранения промежуточных результатов, поэтому таблицу приходится дополнять при составлении программы (алгоритма).
3. Разработка алгоритма решения задачи, т. е. расчленение исходной задачи на отдельные простые этапы.
На этом этапе нужно выделить циклы и продумать их организацию. При разработке алгоритма необходимо использовать только типовые структуры алгоритмов и их сочетания. Алгоритм можно фиксировать в виде схемы, причем нужно иметь в виду, что схему приходится обычно переделывать много раз, до получения ее окончательного варианта.
4. Написание по схеме программы на Basic.
При составлении программы нужно следить за тем, чтобы переменные, являющиеся исходными данными, вводились оператором INPUT, а результаты выводились оператором PRINT. В программе нужно предусмотреть печать необходимых заголовков и пояснений к выводимым результатам, а также печать указаний для выполнения операторов ввода.
Работа по составлению программы на Basic не должна вызывать трудностей. Если вы испытываете трудности, значит, плохо был выполнен этап разработки алгоритма.
5. Ввод программы в машину и проверка ее работы на различных исходных данных.
Используя эти правила, составим программу для решения следующей задачи.
Задача . Представим себе пирамиду из шаров, основание которой представляет собой квадрат со стороной, состоящей из N шаров. Следующий слой состоит из шаров, лежащих в углублениях нижнего слоя, т. е. представляет собой квадрат со стороной, состоящей из N—1 шаров и т. д. Верхний слой содержит один шар. Требуется определить, сколько шаров потребуется для строительства пирамиды из N слоев.
Решение . Легко заметить, что один слой содержит число шаров, равное квадрату номера слоя (верхний слой, содержащий один шар, считаем первым). Поэтому математически задача сводится к вычислению суммы квадратов натуральных чисел от 1 до N. т. е. вычислению 12+22+. . .+ N2.
В результате решения задачи должно быть получено одно число — суммарное количество шаров, необходимое для строительства пирамиды. Это число должно быть выведено на экран с поясняющим текстом.
Исходными данными для задачи является количество слоев пирамиды, которое обозначим через N. Результат решения задачи — суммарное число шаров обозначим через К. Понадобится еще вспомогательная переменная: текущий номер слоя — обозначим его через К. Заполним таблицу 9.6 для переменных программы.
Для решения задачи будем постепенно накапливать в переменной R сумму (“текущее” общее количество) шаров, составляющих один слой, два слоя, три слоя и т.д. После окончания суммирования в R будет получена сумма шаров, составляющих все N слоев, т. е. результат решения задачи.
Таблица 9.6. Характеристика переменных программы
Имя переменной |
Физический смысл переменной |
Назначение переменной |
Ограничения н исходные данные |
R |
“Текущее” общее число шаров |
Результат |
|
N |
Число слоев пирамиды |
Исх. дан. |
Любое натуральное |
K |
Число слоев, обработанных к данному моменту |
Вспомогат. перемен. |
|
Таким образом, программа должна содержать цикл по номеру слоя. Данные, необходимые для организации цикла, внесем в таблицу 9.7.
Таблица 9.7
Управляющая переменная цикла |
Начальное значение |
Конечное значение |
Шаг изменения |
Количество повторений цикла |
К |
1 |
N |
1 |
N |
Составим промежуточный вариант схемы (рис. 9.1а), в котором показана организация цикла, но некоторые блоки (обозначены пунктирной линией) требуют конкретизации. Уточним их содержание. Начнем с тела цикла. Тело цикла должно содержать действия, выполняемые для одного слоя. Это—вычисление числа шаров в К-м слое, равное К*К, и прибавление его к “текущему” общему R. Это действие записывается как
R= R + K*K
Рис.
9.1а
|
Рис.
9.1б
|
Начальными операторами должны быть заданы значения тех переменных, которые используются в цикле, с тем чтобы при первом прохождении цикла переменные в правых частях операторов присваивания и в операциях сравнения имели значения. Для нашей задачи переменной R должно быть присвоено значение 0 и введено значение N.
Введем эти уточнения и составим схему в окончательном варианте (рис. 9.1б).
Далее приводится программа 9.3, составленная в соответствии со схемой, и результат ее выполнения при N=4.
Программа 9.3
10 PRINT
"СКОЛЬКО СЛОЕВ"
20 INPUT N
30 R=0
40 К=1
50 К=К+К*К
60 К=К+1
70 IF К<=N
GO ТО 50
80 PRINT R;”Шаров
понадобится”
90 SТОР
RUNNH
СКОЛЬКО СЛОЕВ
? 4
30 ШАРОВ ПОНАДОБИТСЯ