Программирование

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

10 CLS

Далее будет не бесполезно вывести собственную «заставку» о предназначении данной программы, например, с помощью оператора PRINT:

20 PRINT "Расчет платежей по кредиту"

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

30 INPUT "Сумма кредита =", Kr

40 INPUT "Ставка %(годовых) =", Pr

50 INPUT "Вид кредита: 1-твердая ставка; 2-льготный; 3-прогрессивный ", Vkr

60 INPUT "Срок (месяцев)=", N

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

70 Pr = Pr / 100

80 OsnPlat = Kr / N

90 SummPlat = 0

Как уже отмечалось, выбор того или иного варианта кредитования реализуется условным оператор IF … THEN, например, с последующим указанием перехода - GOTO … к заданному в алгоритме месту программы (отмеченному номеру оператора):

100 IF Vkr = 1 THEN Pr = Pr / 12: GOTO 120

110 IF Vkr = 2 THEN Pr = Pr / 24

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

Повторные операции реализуются, как известно, с помощью оператора FOR…TO …STEP (для …до … с шагом…). Если шаг не задан, то по умолчанию он равен 1:

120 FOR I = 1 TO N

130 Pr = Pr / 12 + .2 /100 * (I - 1)

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

140 Ost = Kr - OsnPlat * (I - 1)

150 ProcPlat = Ost * Pr

160 Plat = OsnPlat + ProcPlat

170 SummPlat = SummPlat + Plat

180 PRINT "Текущий платеж ", I, "=", Plat

190 NEXT I

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

200 PRINT "Сумма платежей=", sPlat

210 END

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

10 CLS

20 PRINT "Расчет платежей по кредиту"

30 INPUT "Сумма кредита =", Kr

40 INPUT "Ставка %(годовых) =", Pr

50 INPUT "Вид кредита: 1-твердая ставка; 2-льготный; 3-прогрессивный ", Vkr

60 INPUT "Срок (месяцев)=", N

70 Pr = Pr / 100

80 OsnPlat = Kr / N

90 SummPlat = 0

100 IF Vkr = 1 THEN Pr = Pr / 12: GOTO 120

110 IF Vkr = 2 THEN Pr = Pr / 24

120 FOR I = 1 TO N

130 Pr = Pr / 12 + .2 /100 * (I - 1)

140 Ost = Kr - OsnPlat * (I - 1)

150 ProcPlat = Ost * Pr

160 Plat = OsnPlat + ProcPlat

170 SummPlat = SummPlat + Plat

180 PRINT "Текущий платеж ", I, "=", Plat

190 NEXT I

200 PRINT "Cумма платежей=", sPlat

210 END