Информатика -взгляд 2

       

Пример на Бейсике Разведение кроликов


В данном и последующих разделах рассматриваются три примера, реализованные с помощью разных систем программирования: QBasic корпорации Microsoft (интерпретирующая версия Бейсика для операционной системы MS-DOS), Borland Delphi 4 (система визуального программирования на Паскале) и Borland C++Builder 4 (система визуального программирования на Си++) компании Inprise. Эти примеры включают в себя описание основных приемов работы с данными системами.

 

Постановка задачи

Итальянский математик Леонардо Фибоначчи придумал оригинальную числовую последовательность, названную в его честь, которая описывает рост численности поколений кроликов. Считается, что каждый год каждая пара животных приносит приплод — новую пару (самца и самку), которые в свою очередь начинают давать приплод через два года (смертность не учитывается). То есть каждый следующий член последовательности равен сумме двух предыдущих, а классическая последовательность Фибоначчи выглядит так:

1, 1, 2, 3, 5, 8, 13, 21, ...

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

 

Запуск QBasic

Интерпретатор QBasic входит в стандартную поставку MS-DOS и расположен обычно в каталоге \DOS. Программа-интерпретатор называется qbasic.exe. После ее запуска на экране появится приветствие, которое пропускается нажатием на клавишу ENTER, после чего QBasic вызывает встроенную справочную систему на английском языке. Она закрывается нажатием клавиши ESC.

Рабочая область экрана (рис. 20.1) поделена на две части. В нижней части, в окне Immediate (Немедленное выполнение) можно вводить операторы Бейсика и тут же их выполнять.

                        Рис. 20.1. Окно программы Qbasic

 

Вывод на экран

Каждый язык программирования имеет оригинальные средства вывода информации, сильно зависящие от операционной системы. В Бейсике реализован оператор PRINT, который выводит значение следующего за ним выражения на экран, в новую строку.

Для перехода в окно Immediate (Немедленное выполнение) надо нажать клавишу F6.
Чтобы сразу получить ответную реакцию от QBasic, достаточно набрать оператор
PRINT 2+2
и нажать клавишу ENTER, чтобы этот оператор выполнился.
На экране вывода появится число 4 (результат вычисления выражения 2+2), а в нижней строке — сообщение Press any key to continue (Нажмите любую клавишу для продолжения). Чтобы вернуться в QBasic, надо это сделать.
В операторе вывода можно указывать несколько значений через запятую, тогда они будут выведены в одной строке. Ранее веденный оператор можно изменить, добавив к нему текстовую подсказку:
PRINT "Сумма =” 2+3
Если теперь нажать клавишу ENTER, то на экране вывода в новой строке (под ранее напечатанной четверкой) появится фраза
Сумма = 5
Редактор программы
Таким образом можно познакомиться с работой разных операторов Бейсика, однако выполнять их удастся только по одному. Чтобы выполнить группу операторов, их надо объединить в программу.
Набор и редактирование исходного текста программы осуществляется в верхнем окне интерпретатора. Для перехода в него используется клавиша F6.
Решать данную задачу удобнее всего с помощью нисходящего метода. В программе будет бесконечный главный цикл, в котором осуществляется ввод очередного значения количества особей, происходит расчет числа лет, необходимых для размножения, полученный результат печатается, и цикл повторяется снова. Если человек вводит ноль, это будет означать, что программу надо завершить.
 
Ввод информации от пользователя
В Бейсике ввести в переменную значение с экрана можно с помощью оператора INPUT. Сначала указывается необязательная текстовая подсказка, а потом — имя переменной. Например, оператор
INPUT "Введите число: ", х
при выполнении напечатает в новой строке подсказку
Введите число:
и будет ожидать, когда пользователь введет число и нажмет клавишу ENTER. В результате в переменную х запишется новое, введенное с клавиатуры значение.
 
Главная часть программы
Ввод и редактирование текста программы осуществляется во встроенном редакторе QBasic, правила работы с которым аналогичны правилам работы с большинством известных текстовых редакторов.


Главная часть программы набирается в этом редакторе и должна выглядеть так (комментарии вводить не обязательно):
¢ описание переменной N — числа особей
DIM N AS INTEGER
' начало бесконечного цикла
DO
1 ввод числа особей в переменную N
INPUT "Введите количество особей: ", N
¢ если введен 0, то
IF N = О THEN
' закончить программу
END
END IF
' напечатать результат:
PRINT "Требуемое число лет: ", Years%(N)
' продолжить цикл с начала
LOOP
В тексте используется оператор END, который предназначен для немедленного завершения работы программы. Операторы, вложенные в цикл и в условные операторы, выделяются отступами, чтобы структура текста была более понятной и наглядной.
Основная, глобальная часть алгоритма реализована. Осталось «спуститься вниз» и запрограммировать функцию Years%(), которая в качестве аргумента получает количество особей и возвращает число лет, требуемое для их разведения.
 
Типы данных в Бейсике
В конце названия функции Years% указан символ %. Таким образом в Бейсике описывается тип возвращаемого функцией значения. Допустимые символы приведены в таблице.


Тип переменной
Символ в конце имени
переменной
INTEGER
%
STRING
$
DOUBLE
#

 
Добавление новой функции
В QBasic имеется удобная возможность добавить в программу новую функцию, избежав при этом дополнительного ручного кодирования. Это делает команда Edit > New Function (Правка > Создать функцию). В появившемся диалоговом окне надо ввести название функции Years% и нажать клавишу ENTER. Основной текст программы временно пропадет, и появится автоматически сгенерированное описание новой функции:
FUNCTION Years%
END FUNCTION
Для того чтобы вернуться обратно к главному тексту, а из него — к любой введенной подпрограмме, необходимо использовать клавишу F2. При ее нажатии на экран выводится список всех созданных подпрограмм, а в первой строке — имя главного модуля.
Функции Years% надо указать список аргументов.


В данном случае он будет состоять из одного параметра:
FUNCTION Years%(X AS INTEGER)
 
Расчет популяции
Так как для определения нового члена последовательности Фибоначчи требуется знать значения двух предыдущих членов, прежде всего надо описать три локальных переменных F1, F2 и F3, хранящие три очередных значения последовательности. Исходно первые три значения 1,1 и 2 запишутся в переменные F1, F2 и F3 явно, а в дальнейшем новые значения будут вычисляться программно.
Сам расчет представляет собой условный цикл, который выполняется до тех пор, пока очередное значение не превысит заданное количество особей. Число таких циклов — число лет — будет подсчитываться в локальной переменной-счетчике YearsNum, первоначально имеющей значение 3.
FUNCTION Years%(X AS INTEGER)
' описание переменных
DIM Fl AS INTEGER, F2 AS INTEGER, F3 AS INTEGER
DIM YearsNum AS INTEGER
' задание начальных значений
Fl = 1: F2 = 1: F3 = 2: YearsNum = 3
1 цикл, пока число кроликов меньше заданного
DO WHILE F3 < X
1 определяем новый член последовательности
Fl = F2: F2 = F3
F3 = Fl + F2 ' увеличиваем число лет на 1:
YearsNum = YearsNum + 1 ' повторяем цикл
LOOP
' в качестве возвращаемого значения
' используется значение переменной YearsNum
Years% = YearsNum
END FUNCTION
 
Сохранение текста программы в файле
После того как текст программы набран, его желательно сохранить в файле, чтобы потом снова обращаться к нему, улучшать, изменять или просто повторно запускать готовую программу.
Сохранение текста программы в файле осуществляется командой File > Save (Файл > Сохранить), в результате чего на экране показывается диалоговое окно выбора каталога и имени файла. В качестве такого имени можно указать kroliki, выбрать нужный каталог и нажать клавишу ENTER. По умолчанию к названию kroliki припишется расширение .BAS. В дальнейшем эту программу можно снова загрузить в QBasic командой File > Open (Файл > Открыть).
 
Запуск программы
Для запуска программы надо перейти к ее главной части (с помощью клавиши F2) — при этом в самом ее начале автоматически добавится строка с объявлением только что определенной функции:
DECLARE FUNCTION Years% (X AS INTEGER)
Теперь надо нажать клавишу F5 (Запуск). Программа начинает работать. Возможный вариант диалога:
Введите количество особей: 10 Требуемое число лет: 7 Введите количество особей: 100 Требуемое число лет: 12 Введите количество особей: 1000 Требуемое число лет: 17 Введите количество особей: 10000 Требуемое число лет: 21 Введите количество особей: О
Первую сотню кроликов надо разводить довольно долго, зато потом их приплод будет увеличиваться стремительными темпами.
 

Содержание раздела