Итальянский математик Леонардо Фибоначчи придумал оригинальную числовую последовательность, названную в его честь, которая описывает рост численности поколений кроликов. Считается, что каждый год каждая пара животных приносит приплод — новую пару (самца и самку), которые в свою очередь начинают давать приплод через два года (смертность не учитывается). То есть каждый следующий член последовательности равен сумме двух предыдущих, а классическая последовательность Фибоначчи выглядит так:
1,1,2,3,5,8,13,21,...
Надо определить, через сколько лет будет достигнута популяция в N особей.
Рабочая область экрана (рис. 20.1) поделена на две части. В нижней части, в окне
Immediate (Немедленное выполнение) можно вводить операторы Бейсика и тут же их выполнять.Каждый язык программирования имеет оригинальные средства вывода информации, сильно зависящие от операционной системы. В Бейсике реализован оператор PRINT, который выводит значение следующего за ним выражения на экран, в новую строку.
20.7. Пример на Бейсике. Разведение кроликов
Для перехода в окно Immediate (Немедленное выполнение) надо нажать клавишу
F6. Чтобы сразу получить ответную реакцию от QBasic, достаточно набрать оператор
PRINT 2+2 и нажать клавишу ENTER, чтобы этот оператор выполнился.
На экране вывода появится число 4 (результат вычисления выражения 2+2), а в нижней строке — сообщение Press any key to continue (Нажмите любую клавишу для продолжения). Чтобы вернуться в QBasic, надо это сделать.В операторе вывода можно указывать несколько значений через запятую, тогда они будут выведены в одной строке. Ранее введенный оператор можно изменить, добавив к нему текстовую подсказку:
PRINT "Сумма = "; 2+3
Если теперь нажать клавишу ENTER, то на экране вывода в новой строке (под ранее напечатанной четверкой) появится фраза
Сумма = 5
Набор и редактирование исходного текста программы осуществляется в верхнем окне интерпретатора. Для перехода в него используется клавиша F6.
Решать данную задачу удобнее всего с помощью нисходящего метода. В программе будет бесконечный главный цикл, в котором осуществляется ввод очередного значения количества особей, происходит расчет числа лет, необходимых для размножения, полученный результат печатается, и цикл повторяется снова. Если человек вводит ноль, это будет означать, что программу надо завершить.
INPUT "Введите число: ", х
при выполнении напечатает в новой строке подсказку
Введите число:и будет ожидать, когда пользователь введет число и нажмет клавишу ENTER. В результате в переменную х запишется новое, введенное с клавиатуры значение.
Ввод и редактирование текста программы осуществляется во встроенном редакторе
QBasic, правила работы с которым аналогичны правилам работы с большинством известных текстовых редакторов.
Глава 20. Основы программирования
Рис. 20.1. Окно программы QBasic
Главная часть программы набирается в этом редакторе и должна выглядеть так (комментарии вводить не обязательно):
' описание переменной N — числа, особейГлавная часть программы набирается в этом редакторе и должна выглядеть так (комментарии вводить не обязательно):
' описание переменной N — числа особей DIM N AS INTEGER
' начало бесконечного цикла DO
' ввод числа особей в переменную N
? INPUT "Введите количество особей: ", N • если введен 0, то IF N = 0 THEN' закончить программу
торы, взавершенагляднВ текст' прLOOне ыделяюапENDPой.ния рабодолжиRINTсполчатEND IF аьзуется оператор END, котороты программы. Операторы, втся отступами, чтобы структ"Требуемое число лет:ть цикл с началаь результат: ло">ыурай ж енные в цикл текста была преднYears%(N)значени в условные опера-более понятной и для немедленного
20.7. Пример на Бейсике. Разведение кроликов
Основная, глобальная часть алгоритма реализована. Осталось «спуститься вниз» и запрограммировать функцию Years%(), которая в качестве аргумента получает количество особей и возвращает число лет, требуемое для их разведения.В конце названия функции Years% указан символ %. Таким образом в Бейсике описывается тип возвращаемого функцией значения. Допустимые символы приведены в таблице.
Тип переменной | Символ в конце имени переменной |
INTEGER | % |
STRING | $ |
DOUBLE | # |
, FUNCTION Years%
END FUNCTION
Для того чтобы вернуться обратно к главному тексту, а из него — к любой введенной подпрограмме, необходимо использовать клавишу F2. При ее нажатии на экран выводится список всех созданных подпрограмм, а в первой строке — имя главного модуля.
Функции Years% надо указать список аргументов. В данном случае он будет состоять из одного параметра:
FUNCTION Years% (X AS INTEGER)
' описание переменных
Глава 20. Основы программирования
DIM Fl AS INTEGER, F2 AS INTEGER, F3 AS INTEGER DIM YearsNum AS INTEGER задание начальных значений Fl = 1: F2 = 1: F3 = 2: YearsNum = 3 цикл, пока число кроликов меньше заданногоDO WHILE F3 < X определяем новый член последовательности
Fl = F2: F2 = F3
F3 = Fl + F2
' увеличиваем число лет на 1: YearsNum = YearsNum + 1
' повторяем цикл LOOP
' в качестве возвращаемого значения
' используется значение переменной YearsNum
Years%.= YearsNum END FUNCTIONСохранение текста программы е файле
После того как текст программы набран, его желательно сохранить в файле, чтобы потом снова обращаться к нему, улучшать, изменять или просто повторно запускать готовую программу.