Главная стр 1стр 2
скачать


МИНИСТЕРСТВО ОБРАЗОВАНИЯ

РОССИЙСКОЙ ФЕДЕРАЦИИ

МОСКОВСКИЙ ПЕДАГОГИЧЕСКИЙ УНИВЕРСИТЕТ

Р.В.МИТИН

САМОСТОЯТЕЛЬНАЯ РАБОТА УЧАЩИХСЯ В КЛАССЕ КОМПЬЮТЕРОВ IBM

ИЗУЧЕНИЕ ЯЗЫКА БЕЙСИК

Учебное пособие для студентов МПУ

МОСКВА 2000

Печатается по решению кафедры ИТО и

редакционно-издательского Совета МПУ


УДК 519.6

Учебное пособие для студентов МПУ

" Самостоятельная работа учащихся в классе компьютеров IBM "

Москва, МПУ, 2000 г., 57 страниц

В пособии приведены сведения, позволяющие получить начальные представления о языке программирования Бейсик. Материал излагается, начиная с самых простых понятий с постепенным усложнением. Приведенные в работе программы ориентированы на конкретный тип ПЭВМ – IBM 286, но могут быть использованы на других ПЭВМ после небольшой коррекции. Предполагается, что в течение занятия учащиеся, пользуясь данным пособием , самостоятельно осваивают работу с языком Бейсик, пользуясь консультацией учителя. Приведенные в пособии компьтерные программы либо составлены автором, либо основаны на некоторых материалах, приведенных в использованной литературе (после значительной переработки и упрощения). Пособие основано на опыте преподавания автором в течение ряда лет курса информатики на некоторых факультетах МПУ.

© Автор текста и компьютерного оформления - проф., дфмн Р.В.Митин, каф. ИТО, МПУ, 2000

§ 1. НАЧАЛО РАБОТЫ С ЯЗЫКОМ БЕЙСИК. ОСНОВНЫЕ ПОНЯТИЯ


После того, как вы включили компьютер, на экране появятся две синие таблицы. Это - так называемые таблицы Нортон-коммандера, названные по имени их автора. Как работает Нортон-коммандер, можно разобрать отдельно, сейчас ограничимся основными простыми понятиями. В таблице Нортона по сути приведен каталог главных разделов (директорий), имеющихся на жестком диске компьютера. В каждом разделе может находиться несколько подразделов, и в каждом подразделе находится определенное количество компьютерных документов - файлов. В общем, все устроено точно так же, как в каталоге любой библиотеки. Чтобы начать вашу самостоятельную работу с компьютером, создадим сначала каталог, в котором будете работать лично вы. Для этого нажмите клавишу F7 из верхнего ряда, на экране появится табличка с надписью create the directory (создать директорию), наберите grup35, если вы учитесь, предположим, в 35 группе, после этого нажмите клавишу Enter. В таблице перед вами появится новая директория GRUP35. Нажимая клавиши со стрелками , переместите курсор (подсвеченное название) на эту директорию и нажмите Enter. При этом вы войдете внутрь директории, в которой пока ничего не содержится - перед вами горит только курсор. Создадим теперь здесь поддиректорию с вашей фамилией, нажмите F7 и наберите первые несколько букв вашей фамилии (латинскими буквами), например fedot, если фамилия Федотов. При этом появится поддиректория FEDOT, переместите курсор на нее и нажмите Enter (войдите в нее).

Теперь вы находитесь внутри вашего личного каталога и можете работать с нужными вам программами, не влияя на работу в других директориях. Поскольку вы хотите работать с языком программирования Бейсик, вам нужно создать внутри вашего каталога поддиректорию Бейсик. Для этого нажмите еще раз F7 и наберите basicf, нажмите Enter , перед вами появится BASICF (мы добавили первую букву вашей фамилии, чтобы не возникало путаницы). Теперь вам осталось выполнить еще одну важную операцию - записать в поддиректорию BASICF файл, запускающий работу программы с языком Бейсик. Этот файл выглядит так gwbasic.exe и находится в каталоге (директории) BASIC. Итак, войдите в вашу поддиректорию BASICF, нажмите клавишу Tab, при этом курсор переместится на правую таблицу, найдите в этой таблице директорию BASIC, войдите в нее, найдите внутри файл gwbasic.exe, переместите курсор на него и нажмите клавишу F5 в верхнем ряду. Перед вами появится табличка с надписью Copy gwbasic.exe to C:\GRUP35\FEDOT\BASICF то есть копирую gwbasic.exe в... и указан путь перехода из каталога в подкаталог и так далее в указанное вами место, в этой команде C:\ означает название главного каталога (корневого), находящегося на жестком диске (диске С). Нажмите Enter и внутри поддиректории BASICF возникнет файл gwbasic.exe. Вот теперь вы, наконец, можете начать работу с языком программирования Бейсик. Запустите файл gwbasic.exe, то есть переместите на него курсор и нажмите Enter. Экран компьютера станет темным и в левом верхнем углу появится OK, это значит, что язык Бейсик загружен в оперативную память компьютера и можно начать изучение этого языка программирования.


Язык Бейсик это один из наиболее простых языков общения с персональными ЭВМ. Ваш "разговор" с ПЭВМ на языке Бейсик состоит в том, что вы приказываете ПЭВМ выполнить то или иное действие, употребляя для этой цели определенные команды. В качестве команд используется небольшое количество слов на английском языке. Для знакомства с тем, как это происходит, рассмотрим ряд простых примеров.

Сосчитать: (1)

Набираем на клавиатуре:

PRINT (3+4)*6/(25-4)

Разъясним это выражение, написанное на языке Бейсик. . Слово означает ПЕЧАТАЙ. Мы видим, что знак умножения выглядит как * , знак деления это косая черта /, написание же знаков сложения и вычитания не отличается от общепринятых. Обратим внимание, что на языке Бейсик все пишется в одну строчку. Итак, мы набрали строчку (команду) и на экране ПЭВМ также появилась знак за знаком эта строчка. Нажимаем теперь клавишу Enter ( и на экране образуется:

PRINT (3+4)*6/(25-4)

2 (2)

OK

Обозначение OK является сигналом от ПЭВМ, что она выполнила ваше задание и ждет следующих указаний. Как легко проверить, результат решения примера действительно двойка. Команда PRINT (ПЕЧАТАЙ) может быть использована и для печати на экране ПЭВМ какого-либо текста. Например, мы дадим следующую команду компьютеру:



PRINT "Результат вычислений равен -", (3+4)*6/(25-4) 

На экране образуется:

Результат вычислений равен - 2 (3)

OK

Итак, для печати текста, мы видим, нужно использовать открывающие и закрывающие скобки. Таким образом, мы уже научились формировать осмысленные выражения на экране ПЭВМ.



То, чем мы занимались до сих пор, называется режимом непосредственного исполнения. В этом режиме ПЭВМ выполняет ваше задание сразу же после его формирования. Однако, так можно делать, если задания короткие, небольшие. В случае более сложных заданий используется другой режим работы ПЭВМ - режим составления программ. Изучим особенности этого режима. Для начала возьмем самые простые задания.

Пусть наша программа выглядит так:

10 LET A=3 

20 LET B=4 

30 LET C=A+B  (4)

40 PRINT A,B,C 

50 END 

Слово LET означает по-русски ПУСТЬ, слово END - КОНЕЦ. Слово LET в языке Бейсик означает оператор присваивания. Таким образом, LET A=3 означает - присвоить величине А значение, равное числу 3. Что такое операция присваивания, мы уже знаем [1,2]. Но раньше мы написали бы а:=3, а весь алгоритм нашего задания мы написали бы в виде:

1 a:=3

2 b:=4


3 c:=a+b (5)

4 печатать a,b,c

5 конец

Сравнивая (4) и (5), мы видим, что в командах языка Бейсик используются только заглавные буквы латинского алфавита. Каждая строка программы имеет свой номер, обычно принято писать в программах номера с интервалом 10. Это позволяет при необходимости вставить между строками еще некоторое количество новых строк с промежуточными номерами (если возникает необходимость).



При наборе программы на клавиатуре одновременно весь текст программы строка за строкой появляется на экране. Как же теперь заставить ПЭВМ выполнить программу? Для этого существует специальная команда - так называемая директива RUN -в переводе с английского (БЕГИ, ГОНИ). Таким образом, окончательно:

10 LET A=3

20 LET B=4

30 LET C=A+B (6)

40 PRINT A,B,C

50 END


RUN 

3 4 7


OK
Однако, все будет так, только если мы не допустили ошибок при наборе программы, а такие ошибки вначале неизбежно будут. Как быть с такими ошибками? Для этого существуют специальные приемы. Во-первых, клавиша "забой"  (расположена крайней справа в верхнем ряду, там, где цифры). Эта клавиша работает в пределах одной текущей строки. Таким образом, если вы, например, набрали 20 LET BB=, то для того, чтобы исправить ошибку, нужно нажать на клавишу  2 раза (в этом случае), тогда три последних знака зачеркнутся и можно будет продолжить набор строки уже правильно, т.е. продолжить B=4  .

Если же вы уже набрали 20 LET BB=4  , то вы уже перешли на новую строку и клавиша  вам не поможет. Но выход есть - нужно снова набрать строку 20, но постараться сделать это без ошибок.

В результате на экране будет:

20 LET BB=4

20 LET B=4 (7)

Предположим, что при наборе программы (10) оказалось, что вы забыли набрать строку 40. Ничего страшного, наберите ее вслед за последней строкой программы. А теперь наведем порядок в набранной нами программе. Для этого служит специальная команда - директива LIST (по-английски - СПИСОК). Наберите это слово с новой строки, затем  и на экране появится отредактированная программа уже в нужном нам виде:

10 LET A=3 LIST 

20 LET BB=4 10 LET A=3

20 LET B=4 20 LET B=4

30 LET C=A+B 30 LET C=A+B

50 END 40 PRINT A,B,C (8)

40 PRINT A,B,C 50 END

Таким образом, автоматически неправильная строка 20 заменена верной строкой, и автоматически строки расположились в порядке возрастания номеров - директива LIST отредактировала программу. Остается только набрать RUN  и ПЭВМ исполнит программу.

Существует еще один способ исправления (редактирования) уже набранной строки - использование специальной команды EDIT (редактируй). Нужно набрать EDIT 20 и на экране появится строка 20 с курсором внутри нее, передвигаем курсор в те места, которые нужно исправить, вносим исправления и нажимаем . Этот прием удобно применять и при наборе не слишком отличающихся друг от друга строк программы. Например, в программе (12) строки 20 и 30 можно создать, просто два раза отредактировав набранную уже строку 10, при этом изменяя номер строки и внося нужные изменения. Ясно, что в случае набора длинной программы с мало отличающимися строками будет большая экономия времени.

Пусть теперь мы хотим выполнить какую-либо другую программу. Перед ее набором неплохо уничтожить программу, с которой мы работали только что. Это можно сделать, нажав клавиши:

10  20  30  40  50  (9)

Набрав после этого LIST, мы убедимся, что программа действительно исчезла. Таким образом мы вычеркнули всю программу строчку за строчкой. Существует и более быстрый прием вычеркивания ненужных строчек: DELETE 10-30 -вычеркиваются строки с 10-й по 30-ю. Слово DELETE означает -СТИРАТЬ. Всю программу можно быстро вычеркнуть, убрать из оперативной памяти ПЭВМ, набрав NEW  (НОВАЯ).

Выполним теперь пример на умножение:

100 LET F=5

110 LET M=15

120 LET P=F*M (10)

130 PRINT F,M,P

140 END

RUN


5 15 75
Если мы теперь заменим строку 130 на следующую:

130 PRINT F;"умножить на";M;"равно";P

то после команды RUN на экране появится более "человеческая" строчка: 5 умножить на 15 равно 75.

Обратим внимание на то, что использование знака ; в строке 130 приводит к печати результата на экране с интервалами в один пробел между числами и словами, если бы мы использовали в этих местах запятую, то интервал при печати был бы в семь пробелов - редкая печать. В рассмотренном примере она не подходит.

Обратимся теперь к примеру, уже знакомому нам по работе [3]:

найти по формуле у = значение "у" при заданном значении “х”. Пусть, например, х=9. Тогда можно написать два варианта решения этой задачи.


10 LET X=9:LET A=2*X 10 LET X=9

20 LET B=A+3:LET C=3*X 20 PRINT (2*X+3)/(3*X-4)

30 LET D=C-4:LET Y=B/D 30 END

40 PRINT Y

50 END (11)

В этой задаче мы дополнительно встречаемся с новым знаком "двоеточие" - в языке Бейсик это означает соединение двух, или более соседних строчек (команд) в одну строчку, при этом запись программы, конечно, оказывается более компактной.

Рассмотрим, как выглядят на языке Бейсик некоторые алгебраические выражения.

sin общепринятая запись


SIN ((9.5-SQR(5))/(5.6+2.6)) запись на языке Бейсик
a общепринятая запись
A * B^3/C/D + E*F/LOG(X) запись на языке Бейсик
Итак, мы видим, что в языке Бейсик используются только заглавные буквы латинского алфавита, формулы пишутся в одну строку, корень квадратный пишется SQR, логарифм натуральный - LOG, при возведении в степень используется знак - ^.

§ 2. ОРГАНИЗАЦИЯ ДИАЛОГА С ПЭВМ


Усложним задачу (11). Пусть нам нужно найти "у" при разных значениях "х", которые будем задавать произвольно. В этом случае программа выглядит так:

10 INPUT X

20 PRINT (2*X+3)/(3*X-4)

30 END (12)

Итак, мы используем новый оператор INPUT (ВВОД). Как он работает? После набора RUN на экране появляется знак вопроса:

RUN (машина ждет, когда вы, по-вашему

? желанию назначите значение х)

Вы должны теперь ответить на вопрос машины - набрать на клавиатуре нужное число. Пусть это будет 2. Тогда ваш разговор с ПЭВМ будет выглядеть так:

10 INPUT X

20 PRINT (2*X+3)/(3*X-4)

30 END

RUN  (13)



?

2 


3.5

OK

Итак, на экране появилось число 3.5 - это и есть значение "у". Пусть теперь мы хотим, чтобы программа могла по очереди вычислять значение "у" при разных значениях "х". Для этого изменим программу:



10 INPUT X

20 PRINT (2*X+3)/(3*X-4) (14)

30 GOTO 10

Команда GOTO 10 означает ИДИ К 10, т.е. перейти к строке 10. GOTO - это оператор безусловного перехода. Как будет теперь работать наша программа?

10 INPUT X

20 PRINT (2*x+3)/(3*X-4)

30 GOTO 10

40 END (15)

RUN 

? (ПЭВМ спрашивает значение "х")



2 

3.5


? (ПЭВМ спрашивает новое значение "х")

4 


1.375

? (и так далее)

Мы можем сделать наш разговор с ПЭВМ более "человеческим". Изменим для этого программу. Однако сначала нам нужно выйти из программы (15), иначе она будет без конца задавать вопросы о новых значениях "х". Нажмем клавишу Ctrl и, удерживая ее, нажмем клавишу Pause - на экране сразу же появится OK, можно продолжать работу. Итак, изменим программу (15):
5 PRINT "введи значение х"

10 INPUT X

20 PRINT "у равно";(2*X+3)/(3*X-4)

30 GOTO 10 (16)

40 END

Теперь диалог с машиной будет таким:



RUN 

введи значение х

?

2 


у равно 3.5

введи значение х

?

4 


у равно 1.375

введи значение х (и так далее)

?

Остановить работу программы (16) можно, нажав две клавиши Ctrl Pause. Однако, можно поступить иначе, изменив программу так:



10 INPUT X

15 IF X=0 THEN 40

20 PRINT (2*X+3)/(3*X-4)

30 GOTO 10 (17)

40 END

Мы ввели дополнительную строку 15, которая по-русски звучала бы так: ЕСЛИ Х=0 ТОГДА 40. Итак, мы используем новые для нас операторы языка Бейсик - IF, THEN - операторы условного перехода (то есть перехода по какому-то условию). В нашем случае таким условием является равенство Х=0, если мы, когда нам надоест работать с программой, в ответ на вопрос машины (INPUT X) введем ноль, то осуществится переход по адресу 40, и программа прекратит работу.


Обратим внимание на то, что внизу экрана имеются надписи 1 LIST 2 RUN 3 LOAD" 4 SAVE " и так далее, из них для нас важны первые четыре. Первые две означают, что известные вам команды LIST и RUN можно быстро вызвать, нажимая клавиши F1 и F2. Четвертая запись позволяет сохранить (по английски SAVE) любую программу из тех, что вы набираете. Например, вы работаете с программой 17 и хотите сохранить ее, для этого нужно нажать клавишу F4 и после появления на экране команды SAVE " набрать проивольное имя программы, например fed17 (обязательно латинскими буквами), и нажать  . Теперь в любой момент вы сможете вызвать эту программу для работы с ней, даже на следующем занятии. Для этого нужно нажать F3, на экране появится LOAD" (по-английски - загрузить), набрать имя fed17, нажать  и перед вами появится программа 17. Если вы к следующему занятию забыли это имя, наберите команду files (файлы), перед вами появится список имеющихся в вашей Бейсиковской директории файлов и вы сможете увидеть имя программы, которую вы хотите загрузить.
§ 3. ПРОГРАММЫ ДЛЯ ЦИКЛИЧЕСКИХ АЛГОРИТМОВ
Попробуем задать ПЭВМ следующую задачу - надо вычислить квадраты целых чисел от 1 до 20 и напечатать на экране сами числа и их квадраты. Изобразим блок-схему алгоритма этой задачи:

Рис. 1


А теперь напишем программу на языке Бейсик, соответствующую этому алгоритму.
10 LET N=1 пусть N=1

20 IF N>20 THEN 70 если N>20 тогда 70

30 LET S=N^2 пусть S равно N в квадрате

40 PRINT N,S печатай N и S

50 LET N=N+1 пусть N=N+1

60 GOTO 20 иди к 20 (18)

70 END конец

Мы видим, что программа и блок-схема шаг за шагом в точности соответствуют друг другу. Обратим внимание, что N в квадрате на языке Бейсик - это N^2. Если мы теперь запустим программу, то на экране мы увидим:

RUN

1 1


2 4

3 9


. . (19)

и так далее

. .

20 400


OK
Таким образом, мы организовали исполнение циклического алгоритма, используя операторы условного (IF ....THEN) и безусловного (GOTO) переходов. Однако в языках программирования и соответственно в Бейсике существует специальный, более простой способ для осуществления циклических программ.

Запишем снова нашу программу, но уже в новом виде:


10 FOR N=1 TO 20 для N от 1 до 20

20 PRINT N,N^2 печатай N и N2 (20)

30 NEXT N cледующее N

40 END конец


Итак, FOR, TO, NEXT - это ключевые слова операции организации цикла. Программы типа (18) и (20) могут быть использованы для создания циклов, не имеющих никакого отношения к вычислениям. Например, следующая программа (в двух способах написания):
10 LET N=1

20 IF N>30 THEN 60

30 PRINT "желаю успехов"

40 LET N=N+1 (21)

50 GOTO 20

60 END
10 FOR N=1 TO 30

20 PRINT "желаю успехов"

30 NEXT N (22)

40 END
Эти программы печатают 30 раз фразу "желаю успехов". Обратим внимание, что число N играет теперь просто роль счетчика. Продемонстрируем теперь возможности ПЭВМ в выполнении быстрых и довольно сложных вычислений.

Требуется решить такой пример из [5]:


X6 +46 +86 +86 +36 +46 =X48834 (23)
Надо найти такое число "X" в интервале 1-9, которое было бы решением примера (23). Решить этот пример, даже пользуясь микрокалькулятором, довольно сложно. Для ПЭВМ же достаточно написать простую программу и ответ будет получен через несколько секунд при ее исполнении.
Итак, эта программа и ее исполнение:
10 FOR X=1 TO 9

20 PRINT X^6+4^6+8^6+8^6+3^6+4^6,

30 PRINT X*100000+48834

40 NEXT X (24)

50 END
Запустим программу:

RUN


533210 148834

533237 248834

533938 348834

537305 448834

548834 548834 Вот решение: Х=5

579865 648834

650858 748834

795353 848834

1064650 948834

OK
Эти две колонки цифр возникают практически мгновенно - вот каковы возможности ПЭВМ (и хорошей программы для решения). Рассмотрим теперь пример, который покажет, что хотя ЭВМ считает быстрее, хороший ученик все равно остается умнее ее.

Задача - сосчитать сумму целых чисел от 1 до 100. Машина решит эту задачу с помощью программы:
10 LET S=0

20 FOR N=1 TO 100

30 LET S=S+N

40 NEXT N (25)

50 PRINT S

60 END


RUN

5050

Таким образом, машина просто сложит все числа одно за другим. Умный же ученик поступит так:

100


1+99=100

2+98=100


3+97=100 100+49х100+50=5050

. . .


47+53=100 (26)

48+52=100

49+51=100

50
§ 4 ШКОЛЬНАЯ ТАБЛИЦА УМНОЖЕНИЯ


Попробуем теперь использовать операторы организации цикла для печати на экране ПЭВМ школьной таблицы умножения.
100 LET A=3

110 FOR B=1 TO 5

120 PRINT A,B,A*B

130 NEXT B

140 END

RUN (27)


3 1 3

3 2 6


3 3 9

3 4 12


3 5 15
Программа проста и не требует пояснений. Теперь усложним ее.

100 FOR A=3 TO 4

110 FOR B=1 TO 5

120 PRINT A,B,A*B (28)

130 NEXT B

140 NEXT A

150 END

RUN


3 1 3 умножить на 3

3 2 6 числа от 1 до 5

3 3 9

3 4 12


3 5 15

4 1 4 умножить на 4

4 2 8 числа от 1 до 5

4 3 12


4 4 16

4 5 20


Программа (28) является двойным циклом, в ней имеется внутренний цикл - изменение В от 1 до 5, и внешний цикл - изменение А от 3 до 4. Сравнивая (28) и (27), мы видим, что программа (28) является естественным продолжением программы (27). Если в программе (27) мы меняли только значение второго сомножителя, то в программе (28) мы меняем и значение первого сомножителя. В результате получаем на экране ПЭВМ часть таблицы умножения. Чтобы получить всю таблицу умножения, сначала поступим так:
100 FOR A=1 TO 10

110 FOR B=1 TO 5

120 PRINT A,B,A*B,

130 NEXT B (29)

140 NEXT A

150 END
При выполнении программы (29) мы получим только половину таблицы умножения. Совершим, наконец, последнее изменение:


100 FOR A=1 TO 10

110 FOR B=1 TO 10

120 PRINT A,B,A*B,

130 NEXT B (30)

140 NEXT A

150 END


Эта программа уже напечатает на экране строчка за строчкой всю таблицу умножения. Конечно ,такое изображение неудобно для рассматривания. Мы можем улучшить дело и добиться того, чтобы на экране возникла таблица умножения именно в том виде, как она выглядит на обложке школьной тетради. Итак, программа:

10 FOR A=2 TO 9

20 FOR B=2 TO 5

30 PRINT B;"x";A;"=";A*B,

40 NEXT B

50 NEXT A

55 PRINT (31)

60 FOR A=2 TO 9

70 FOR B=6 TO 9

80 PRINT B;"x";A;"=";A*B,

90 NEXT B

100 NEXT A

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

Разъясним теперь действие строчек 30 и 80. Точка с запятой, как мы помним, означает, что следующий знак нужно печатать близко от предыдущего, а вот запятая означает, что надо отступить на некоторое число позиций - как раз, чтобы перейти к печати соседней колонки таблицы умножения; "х" - означает печать на экране знака умножения; "=" - означает печатание знака равенства.

Команда 55 означает, что нужно печатать - что? - пустую строку, то есть ничего не печатать, пропустить одну строку. Эта пустая строка как раз и имеется в школьной таблице умножения, она разделяет верхнюю и нижнюю половины таблицы.
§ 5 ПРИМЕРЫ ИСПОЛЬЗОВАНИЯ ПЭВМ НА УРОКАХ
Познакомимся еще с одной программой и ее исполнением.
10 PRINT "Вычисление суммы чисел"

20 DATA 3,6

30 READ C,D

40 LET S=C+D

50 PRINT C,D,"сумма=";S

60 END (32)

RUN

Вычисление суммы чисел



3 6 сумма=9
Разъясним работу программы. Мы используем новые операторы - операторы ввода данных: DATA - ДАННЫЕ, READ - ЧИТАЙ. Команды 20 и 30 означают то же самое, как если было бы:

20 LET C=3

30 LET D=6

Теперь пусть мы хотим, воспользовавшись нашими новыми знаниями, напечатать заголовок какого-либо документа. Например, пусть мы начали нашу программу так:


10 PRINT "20.06.2000"

20 PRINT "ТАБЕЛЬ УСПЕВАЕМОСТИ"


При исполнении программы на экране появится в левом верхнем углу:

20.06.2000

ТАБЕЛЬ УСПЕВАЕМОСТИ

Однако, это нам не нравится. Мы хотели бы, чтобы дата оказалась в правом углу, а заголовок - на середине строки. Можно так сделать, для этого используем программу:


10 PRINT TAB(50)"20.06.2000"

20 PRINT TAB(20)"ТАБЕЛЬ УСПЕВАЕМОСТИ"


и тогда на экране получится то, что мы и хотели. Это произойдет потому, что мы использовали новый оператор PRINT TAB. Команда PRINT TAB(50) означает - печатай, отступя 50 позиций от левого края. Покажем, как можно применить этот оператор для конкретной задачи - построения графика зависимости, допустим, успеваемости за пять лет по годам.

Пусть мы имеем следующий набор чисел: 30,20,10,24,40 - это количества неуспевающих учеников по годам пятилетки. Принято говорить, что мы имеем так называемый информационный массив чисел N(1)=30, N(2)=20, N(3)=10, N(4)=24, N(5)=40. Рассмотрим теперь работу следующей программы:


10 DIM N(5) задается длина массива

20 DATA 30,20,10,24,40 задаются числа массива

30 FOR I=1 TO 5 заголовок цикла (33)

40 READ N(I) читай очередное число

50 PRINT TAB(N(I))"*" печатай * на расстоянии N(I)

60 NEXT I следующее I - следующий год

70 END
Команда 10 использует новый оператор DIM - в переводе с английского (DIMENSION) это означает - размер, величина. Итак DIM N(5) означает, что наш информационный массив содержит пять чисел (строго говоря, шесть чисел, так как может быть и число N(0)). Остальные строки программы объяснены справа от программы. При выполнении программа (33) напечатает по сути график изменения по годам количества неуспевающих учеников. Конечно, неудобно, что график повернут на бок, однако если у нас есть возможность работать с принтером, то есть переносить текст с экрана ПЭВМ на бумагу, тогда уже нетрудно листок бумаги повернуть в нужное положение.

Рассмотрим еще один пример использования оператора PRINT TAB для рисования графиков.


10 FOR X=1 TO 8

20 LET Y=X^2

30 PRINT TAB(Y)"*"

40 NEXT X (34)

50 END
При выполнении этой программы на экране появится зависимость Y=X2 ,- парабола. Такой прием позволяет изображать на экране графики и других зависимостей, для этого нужно изменить написание строки 20.

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


10 LET X=RND(1)*6+1

20 LET A=INT(X)

30 PRINT A (35)

40 END
В строке 10 появилось новое - функция RND(1) -ее значение равно любому случайному числу (десятичной дроби) в интервале от 0 до 1. RND(1)*6 -умножение на 6 приводит к тому, что интервал увеличится от 0 до числа 5,.....- какое-то число знаков после запятой. Тогда RND(1)*6+1 изменит интервал, числа будут от 1 до 6,....... В строке 20 используется еще одна функция -INT(X) -это означает целую часть от десятичного числа. То есть, если, например, Х=3,1423, то INT(X)=3, знаки после запятой отбрасываются.

Итак, LET A=INT(X) в нашем случае будет означать, что число А будет принимать значения целых чисел, лежащих в интервале 1-6. И вся наша программа будет при каждом ее исполнении печатать на экране произвольно любое целое число в интервале 1-6, то есть будет имитировать бросание игральной кости.

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

Вот эта программа и ее возможная работа:

10 LET A=INT(RND(1)*10+1) (любое число из 1-10)

20 LET B=INT(RND(1)*20+1) (любое число из 1-20)

30 LET C=A*B

40 PRINT"Сколько получится, если перемножить числа"

50 PRINT A,B

60 INPUT X

70 IF X=C THEN PRINT"Правильно":GOTO 10

80 PRINT"Неверно":GOTO 10

90 END (36)

RUN

Сколько получится, если перемножить числа



6 17

? (Вы должны ответить)

102

Правильно



Сколько получится, если перемножить числа

3 8


?

26

Неверно (и так далее)


Таким образом, ПЭВМ каждый раз выбирает два произвольных числа А и В, перемножает их и предлагает вам ответить, каков будет этот результат. Обратим внимание, что в строках 70 и 80 используется действие знака "двоеточие" - в языке Бейсик это означает разделение двух соседних команд. В строке 80 хочется написать в ее начале IF X<>C THEN....(Х не равно С), однако, немного подумав, мы поймем, что это уже были бы лишние слова.

Дадим теперь примеры использования языка Бейсик на уроках иностранного языка. Первая программа (проверка знания английских слов):


10 LET C=1

20 ON C GOTO 31,32,33,34,35,36,37

31 PRINT "Mother":LET A=3:GOTO 40

32 PRINT "Father":LET A=2:GOTO 40

33 PRINT "Sister":LET A=1:GOTO 40

34 PRINT "Brother":LET A=5:GOTO 40

35 PRINT "Daughter":LET A=4:GOTO 40

36 PRINT "Son":LET A=6:GOTO 40 (37)

37 GOTO 90

40 PRINT "Введите номер нужного русского слова"

50 PRINT "Брат 3, Дочь 4, Мать 5"

55 PRINT "Отец 6, Сестра 7, Сын 2"

60 INPUT B

70 IF A+B=8 THEN PRINT "Верно":LET C=C+1:GOTO 20

80 PRINT "Неправильно":LET C=C+1:GOTO 20

90 END


Разберем, как работает эта программа. Здесь мы применили еще один новый оператор языка Бейсик - ON - так называемый оператор-переключатель, в нашей программе при изменении С от 1 до 7 происходит переход из строки 20 в строки 31-37 соответственно. При каждом прохождении программы С увеличивается на единицу согласно строкам 70 и 80. Пусть, например, С=4. Тогда выполняется строка 34 - на экране появляется слово Brother, переменной величине А присваивается значение 5 (этого ученик не узнает), и происходит переход к строке 40, то есть ПЭВМ предлагает из шести русских слов выбрать правильное слово. Если вы выберете слово Брат (число 3), то согласно строке 70 на экране появится "Верно" и С станет равным 5. Если же вы ошиблись, то условие А+В=8 не выполнится, на экране появится "Неправильно", С станет равным 5, на экране появится следующее английское слово.

Программа будет "вежливой", если мы изменим строку 90 так:

90 PRINT "До свиданья!":END

Как легко понять, программа закончит свою работу при условии С=7. Мы можем улучшить работу программы, добавив строку 5 и так изменив строки 80 и 90:

5 LET N=0

80 PRINT "Неправильно":LET C=C+1:LET N=N+1:GOTO 20

90 PRINT "До свиданья! Вы допустили ошибок -";N:END

Рассмотрим еще одну простую программу, которую можно назвать "Русско-немецкий словарь"

10 PRINT "Брат 1, Дочь 2, Мать 3"

15 PRINT "Отец 4, Сестра 5, Сын 6"

20 PRINT "Введите номер слова"

30 INPUT C (38)

40 IF C=0 THEN 120

50 ON C GOTO 60,70,80,90,100,110

60 PRINT "Bruder":GOTO 20

70 PRINT "Tochter":GOTO 20

80 PRINT "Mutter":GOTO 20

90 PRINT "Fater":GOTO 20

100 PRINT "Schwester":GOTO 20

110 PRINT "Sohn":GOTO 20

120 PRINT "Всего хорошего!":END
Работу этой программы нет нужды разъяснять. Строка 40 служит для окончания работы.
§ 6 ПОЗНАВАТЕЛЬНЫЕ ИГРОВЫЕ ПРОГРАММЫ
Рассмотрим теперь несколько игровых программ, эти игры, однако, потребуют определенных полезных размышлений, то есть это познавательные игры. Введем в дальнейшие программы следующее упрощение - будем опускать оператор LET, то есть вместо LET K=1, LET L=0 писать - A=1, L=0. Примененная версия языка Бэйсик позволяет это делать, при этом конечно предполагается выполнение операции присваивания, а не равенства.

Итак, игра - Угадай число.

10 A=INT(RND(1)*100+1)

20 K=1:N=100:L=0

30 PRINT "Угадай целое число, загаданное ЭВМ"

40 PRINT "Число находится в интервале"

50 PRINT K,N (39)

60 INPUT B:L=L+1

70 IF B=A THEN PRINT "Угадал с "L"-го раза":GOTO 10

80 IF B>A THEN PRINT K,B:N=B:GOTO 60

90 PRINT B,N:K=B:GOTO 60

100 END
Как работает эта программа. Строка 10 - ЭВМ выбирает случайное целое число из интервала 1-100. Затем идет текст на экране согласно 30,40. Строка 50 печатает числа 1-100, т.е. интервал. Строка 60 - ЭВМ ожидает ввода вашего числа и засчитывается ваша попытка (число L увеличивается на единицу). Строка 70 понятна. Как работают строки 80 и 90, лучше понять из конкретного примера. Пусть, например, машина загадала число 36 (вам неизвестное). Тогда ваш разговор с машиной может быть таким:

RUN

Угадай целое число, загаданное ЭВМ



Число находится в интервале

1 100


?

60 1-я попытка

1 60 новый интервал согласно 80

?

25 2-я попытка



25 60 новый интервал согласно 90

?

40 и так далее



25 40

?

36



Угадал с 4-го раза

ОК

После этого ЭВМ возвращается к началу программы и загадывает новое число.



Следующие три программы построены по тем же простым алгоритмам, которыми мы пользовались, когда изучали программируемый микрокалькулятор [2].

Итак, программа игры - Артиллерия.


10 L1=1000:N=0:S=20:L2=2000

20 INPUT A:N=N+1 (40)

30 R=3.1416*A/180:L=L2*SIN(2*R)

40 IF (L-L1)^2

50 PRINT "Перелет (недолет) на "L-L1" метров":GOTO 20

60 END


В строке 10 L1 это расстояние до цели, N будет считать число выстрелов, S -площадь поражения цели, L2 -максимальная дальность стрельбы вашей пушки. В строке 20 ЭВМ запрашивает угол А - угол возвышения (в градусах) и производится выстрел. В сроке 30 градусы переводятся в радианы и вычисляется дальность полета снаряда для данного выстрела. При попадании снаряда внутрь площади поражения (строка 40) игра заканчивается, иначе (строка 50) отмечается перелет или недолет (положительное или отрицательное значение числа (L-L1) ) и запрашивается новое значение угла А. Отметим, что в языке Бейсик углы должны быть в радианах. Условия вашей стрельбы можно изменить, изменив значения исходных данных L1,S,L2.
Следующая программа - Танковая атака.

10 L1=1000:L2=1000:S=50:V=10:T=9

20 INPUT A:L1=L1-V*T (41)

30 R=3.1416*A/180:L=L2*SIN(2*R)

40 IF (L-L1)^2

50 IF L1<0 THEN PRINT "Проиграл":GOTO 70

60 PRINT "Промах",(L-L1),L1:GOTO 20

70 END


Напоминаем, что в этой игре вы стреляете по движущемуся на вас танку. В строке 10 задаются первоначальное расстояние до танка, максимальная дальность стрельбы (при угле 45 градусов) , площадь поражения (м2 ) скорость движения танка (м/сек), промежуток времени между вашими выстрелами (в нашем случае мы выбрали 9 сек). В строке 20 - выбор угла А для выстрела и уменьшение расстояния до танка. Окончание игры - либо при вашем попадании - строка 40, либо поражении, танк "давит" вашу пушку - строка 50.
Наконец, приведем программу - Посадка на Луну:

10 M=90:H=50:V=8:PRINT M,H,V

20 INPUT Z (42)

30 A=1.62-Z*0.045:M=M-Z*0.15

40 H=H-V-A/2:V=V+A:PRINT M,H,V

50 IF H<0.2 THEN IF V<2 THEN PRINT "Посадка!":GOTO 90

60 IF H<0.2 THEN IF V>=2 THEN PRINT "Авария!":GOTO 90

70 IF M<=0 THEN M=0:Z=0:GOTO 30

80 GOTO 20

90 END


В строке 10 задаются исходные данные: горючее - 90 кг, высота - 50 м, скорость движения ракеты к Луне - 8 м/сек. Строка 20 - вы должны выбрать и ввести величину тяги двигателя (меняется в пределах 1-100, проценты от максимальной тяги). В строках 30,40 используются уже известные нам [1,2] простые формулы для изменения ускорения, массы горючего, высоты над поверхностью Луны и скорости ракеты через одну секунду полета при выбранной тяге Z. Строка 50 определяет условия удачной посадки ракеты на Луну (высота меньше 0,2 метра, скорость меньше 2 м/сек). Строка 60 определяет условия неудачи. Строка 70 учитывает тот случай, когда вы сожгли все горючее, плохо управляя работой двигателя, тогда, конечно, тяга равна нулю и ракета летит неуправляемо под действием только силы тяготения Луны (многократный переход с 70 на 30, пока ракета не разобьется). Строка 80 относится к случаю, когда горючее в баках еще есть и можно управлять полетом, меняя тягу (переход на 20).

Набрав эту простую программу, можно легко и быстро проверить свое умение управлять таким сложным аппаратом, как ракета возле Луны. Напоминаем [1,2], что поскольку все формулы движения ракеты используются реальные, то и наш полет максимально приближен к реальной обстановке.


§ 7. "ГРАФИКА" БЕЗ ГРАФИЧЕСКИХ ОПЕРАТОРОВ
Для рисования графических изображений (рисунков, кривых, графиков и т.п.) обычно используют так называемые графические операторы языка Бейсик. К рассмотрению этих операторов мы перейдем несколько позже, а сейчас посмотрим, как можно "рисовать" на экране ПЭВМ, применяя уже известный нам оператор PRINT TAB.

Два примера такого рисования мы уже рассматривали в § 5 этого пособия (программы 33 и 34 -парабола и график успеваемости учеников). Приведем еще один простой пример рисования синусоиды:


5 FOR X=0 TO 40:PRINT"-";:NEXT X

10 FOR X=0 TO 15 STEP .5 (43)

20 PRINT "I":PRINT TAB(30+15*SIN(X));"*"

30 NEXT X

40 END

В этом примере, кроме самой синусоиды, мы нарисовали еще и координатные оси при помощи командной строки 5 и команды PRINT"I" в начале строки 20. Конечно же, недостатком является вертикальное расположение графиков при таком способе рисования. Это неудобство исчезает, как мы уже говорили, при переносе графиков на бумагу с помощью принтера. В этом случае оператор PRINT нужно заменить на LPRINT (при этом к компьютеру должен быть подключен принтер).



Более полно возможности такого способа рисования без графических операторов покажем на примере нескольких контролирующе-обучающих и игровых программ.

В (44) приведена часть программы, проверяющей знания ученика по астрономии. Программа содержит 8 вопросов, требуется ответить на 4 из них, номера вопросов выбираются учениками. На экране дисплея по мере прохождения программы появляются изображения созвездий. Ученик должен указать правильное имя созвездия. В командах 102-107 с помощью оператора PRINT TAB на экране дисплея формируется изображение созвездия Кассиопея.

Аналогичным образом построены изображения других созвездий в оставшихся семи вопросах, переход к этим вопросам производится с помощью так называемого переключателя ON GOTO в строке 40 нашей программы.
3 CLS

5 K=0:L=0:DIM M(4)

7 PRINT TAB(20)"АСТРОНОМИЯ":PRINT (44)

10 PRINT TAB(10)"в программе имеется 8 вопросов":PRINT

15 PRINT TAB(8)"вам нужно ответить на 4 вопроса"

17 PRINT" (варианты ответов предлагаются)"

30 IF K=4 THEN PRINT"номера ваших вопросов-";:

32 FOR K=1 TO 4:PRINT M(K):NEXT K:PRINT"всего ошибок-"L":GOTO 70

34 K=K+1:PRINT

35 PRINT TAB(20)"выберите номер вопроса (1-8)":INPUT N:M(K)=N

40 ON N GOTO 100,200,300,400,500,600,700,800

70 IF L=0 THEN PRINT" отлично"

72 IF L=1 THEN PRINT" неплохо"

74 IF L>=4 THEN PRINT"вам надо поучиться"

76 IF L<4 THEN IF L>=2 THEN PRINT" слабовато"

80 PRINT"если хотите повторить, нажмите 1, если нет - 0"

85 INPUT Z:IF Z<>1 THEN PRINT" ДО СВИДАНЬЯ!":GOTO 99

90 K=1:L=0:GOTO 35

99 END

100 PRINT" ВОПРОС №1"



101 PRINT:PRINT

102 PRINT TAB(14)"+"

103 PRINT:PRINT:PRINT:PRINT

104 PRINT TAB(18)"+",TAB(28)"*"

105 PRINT TAB(43)"*"

106 PRINT:PRINT:PRINT

107 PRINT TAB(32)"*"

108 PRINT:PRINT

110 PRINT"варианты - 1)Лев, 2)Орион, 3)Кассиопея, 4) Дельфин"

120 INPUT V

130 IF V<>3 THEN PRINT"неверно, еще раз-":L=L+1:GOTO 100

140 PRINT"правильно":GOTO 30

200 PRINT" ВОПРОС №2"

и так далее...


Новая команда в строке 3 CLS очищает экран от всех букв и цифр перед началом работы нашей программы, конечно так удобнее. В строке 5 K - считает вопросы, на которые вы отвечаете, L - считает ошибки, допущенные вами при ответах. Об этом и сообщается вам в конце работы при помощи строки 30. M(K) - информационный массив, в который записываются номера выбранных вопросов, согласно строке 30 они на всякий случай сообщаются вам в конце работы. Остальные строки программы Астрономия по-видимому не требуют дополнительных разъяснений.

Полностью программа Астрономия содержится в файле astron.bas , находящемся в директории BASIC. Необходимо заметить, что программа (44) имеет недостатки - ученик должен сам выбирать номер вопроса, используется только выборочный вариант поиска правильного ответа (строка 110). Однако можно сделать так, чтобы компьютер сам произвольным образом выбирал для ученика вопросы. Для этого в программу (44) нужно добавить следующие строки:

6 RANDOMIZE(TIMER)

8 DIM A(8)

35 N=INT(1+8*RND(1)):IF A(N)=1 THEN 35 (45)

36 A(N)=1

37 T=T+1

38 M(K)=N

78 IF T=8 THEN 99

В строке 35 номер вопроса теперь задается случайным образом, использование переменной A(N) в конце строки и в строке 36 не позволяет снова задать тот вопрос, который уже задавался раньше. В строке 8 задается размер переменной A(N). В строке 6 используется новый оператор языка Бейсик, здесь он задает случайным образом начало работы строки 35 (в зависимости от времени запуска программы 44, определяемого по встроенному в компьютер счетчику времени). Строки 37 и 78 прекращают работу программы, когда вопросы закончатся.

Такие изменения сделаны в файле astron1.bas, (директория BASIC). Кроме того в него внесены необходимые изменения, обеспечивающие разнообразие выбора правильного ответа - теперь иногда нужно определить правильный ответ из вариантов ответа, последовательно появляющихся на экране, иногда нужно просто самому напечатать правильный ответ. Первый случай осуществится, если к примеру в вопросе №1 строки после 108-й записать так:

110 PRINT"ЛЕВ"

112 INPUT N:IF N=1 THEN PRINT"неверно":L=L+1

114 PRINT"ОРИОН" (46)

116 INPUT N:IF N=1 THEN PRINT"неправильно":L=L+1

118 PRINT"ДЕЛЬФИН"

120 INPUT N:IF N=1 THEN PRINT"ошибка":L=L+1

122 PRINT"КАССИОПЕЯ"

124 INPUT N:IF N=1 THEN PRINT"верно":GOTO 30

126 PRINT"неверно, правильный ответ - КАССИОПЕЯ":L=L+1:GOTO 30

В 46 предполагается, что ответ - да - соответствует нажатию 1 (N=1), а ответ – нет - нажатию другой цифры (например 0).

Во втором случае строки будут выглядеть так:

120 M=0

122 INPUT N$



124 IF N$="КАССИОПЕЯ" THEN PRINT"верно":GOTO 30 (47)

126 IF M=2 THEN 130

128 PRINT"ошибка, попробуйте еще раз":M=M+1:GOTO 122

130 PRINT"неверно, правильный ответ - КАССИОПЕЯ":L=L+1:GOTO 30

В 47 мы используем новое понятие - строковая переменная (N$). Теперь в ответ на запрос программы в строке 122 нужно вводить не число, а любое слово. Если это слово в нашем случае - КАССИОПЕЯ, то строка 124 определит, что ответ верен. Если ученик наберет неправильное название созвездия, то он сможет ошибиться не более двух раз (строки 120, 126, 128), после чего ему будет выдан правильный ответ и засчитана ошибка (строка 130). Заметим, что в 47 предполагается при ответе на вопрос использовать заглавные буквы, поэтому ответы : кассиопея, Кассиопея не будут считаться правильными . Нельзя также помещать пробелы до или после ввода слова.

Итак, в программе Астрономия1 использованы описанные три варианта предоставления возможности ответов на заданные вопросы.

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

Следующая программа Скорпион (48) основана на простой физической задаче движения брошенного тела по параболе под действием силы тяжести. Первобытный охотник, стоящий на вершине скалы, должен бросить камень и попасть в скорпиона, бегающего внизу и стремящегося спрятаться под скалой. В строке 10 программы (50) величины Z1 и S1 задают размеры изображения на экране, величина N считает броски охотника и тем самым отмеряет время с начала "охоты". Здесь же используется новый для нас оператор языка Бейсик GOSUB (переход к подпрограмме). В данном случае подпрограмма (строки 190,200) "рисует" на экране изображение охотника. Команда RETURN (ВОЗВРАТ) в строке 200 возвращает работу программы к очередной строке 20. Строки 20-40 изображают при помощи простой формулы "скалу". Строка 50 обращается к подпрограмме рисования изображения "скорпиона". Команды 60,70 осуществляют диалог с учеником с целью задания исходных данных задачи (выбор скорости скорпиона и силы броска охотника). После этого на экране формируется следующая часть кадра - команды 100-130 рисуют траекторию камня и одновременно профиль обрыва скалы, команды 140 и 210 рисуют скорпиона на новом расстоянии от края экрана S, определяемом выбранной скоростью скорпиона и величиной N. Траектория камня - парабола (формулу в строке 110 легко представить в виде Z+1=Const (X-L1)2 ).

10 CLS:Z1=6:S1=40:N=1:GOSUB 190

20 FOR Z=0 TO Z1

30 L=6-6*SQR(Z/Z1):PRINT TAB(L)"Щ" GOTO 30

40 NEXT Z

50 S=S1:GOSUB 210

60 PRINT"скорость? (1-2-3)":INPUT V (48)

70 PRINT"сила броска? (0-100)":INPUT F

80 GOSUB 190

90 L1=7:X1=L1+.5*F*SQR((Z1+2)/Z1)

100 FOR Z=0 TO Z1

110 X=L1+.5*F*SQR((Z+1)/Z1):L=6-6*SQR(Z/Z1)

120 PRINT TAB(L)"Щ";TAB(X)"о"

130 NEXT Z

140 S=S1-N*V*5:GOSUB 210

150 IF ABS(X1-S-2)<1.5 THEN PRINT"Попал!":GOTO 180

160 IF S<5 THEN PRINT"Неудача!":GOTO 180

170 N=N+1:PRINT"Промах!":GOTO 70

180 END


190 PRINT TAB(5)"*":PRINT TAB(4)"<@+-"

200 PRINT TAB(4)"/> о":RETURN

210 PRINT TAB(S)">00=-,":RETURN
Величина X1 это дальность полета камня. Команда 150 в случае совпадения с точностью до 2 величин X1 и местоположения головы скорпиона (S+2) фиксирует попадание. Команда 160 описывает тот случай, когда скорпион успел убежать под скалу. Команда 170 фиксирует промах, увеличивает N на единицу (это соответствует последующему перемещению скорпиона по экрану влево) и запрашивает новую силу броска (70). И так далее..

Первый "кадр" выполнения задачи Скорпион изображен на Рис. 2. Мы выбрали скорость 2 и силу броска 70. После этого на экране появляется следующий кадр (Рис. 3) нашего "диафильма", причем скорпион перемещается на расстояние 5V влево, а на экране появится траектория движения камня. Траектория появляется точка за точкой по мере перемещения всего кадра вверх по экрану, образуется своеобразная иллюзия падения брошенного камня.



Рис. 2


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

Программы подобного типа могут быть легко составлены для решения похожих задач на уроках физики и астрономии.


Рис. 3


Например, можно учесть силу попутного или встречного ветра, учесть влияние сопротивления воздуха. Можно подобным образом составить программу по изучению понятия первой космической скорости -горизонтальная стрельба из пушки, стоящей на вершине высокой горы (известная задача Ньютона). В этом случае надо принять во внимание кривизну земной поверхности и использовать закон тяготения Ньютона в его общем виде.

Рассмотрим теперь программу Космодром (49). Эту программу мы уже видели в задачах "Посадка на Луну" для микрокалькуляторов МКШ-2 и МК-56 [1,2] ,для ПЭВМ Д3-28 и ДВК-1 [ 4] и для учебного класса IBM (§ 6). По сравнению с упрощенным вариантом, рассмотренным в (§ 6), ниже приведенная программа усилена изображениями звездного неба и летящей ракеты, таким образом диалог с ПЭВМ иллюстрируется "диафильмом", рисующим на экране отдельные кадры полета ракеты к поверхности Луны (Рис.4).

10 CLS:V=8:M=90:H=30

20 PRINT TAB(53)"*":PRINT:PRINT:PRINT:PRINT

30 PRINT TAB(12)"*";TAB(22)"*";TAB(34)"+";TAB(56)"*"

40 PRINT:PRINT"+":PRINT TAB(41)"*"

50 R=10:Y=6:L=INT(H*Y/30)

60 IF H<1 THEN IF V>2 THEN 150

70 IF H<1 THEN IF V<=2 THEN 160 (49)

80 PRINT TAB(R)"-oo-"

90 FOR K=1 TO L:PRINT"I":NEXT K

100 PRINT “ПППППППППППППППП”

110 PRINT M,H,V

120 IF M<1 THEN M=0:Z=0:GOTO 140

130 PRINT"тяга? (0-100)":INPUT Z

140 A=1.62-Z* .045:M=M-Z* .15:H=H-V-A/2:V=V+A:N=N+1:GOTO 20

150 PRINT TAB(R+1)"\!/":PRINT TAB(R)"@-*-@":END

160 PRINT TAB(R)"-oo-":PRINT TAB(R+1)"MM":END


Сравнивая программу (49) с программой Посадка на Луну из (§ 6), видим что главные отличия заключаются в наличии строк 20-40 -это изображение звездного неба, строк 80-90 -это рисунок нашей ракеты и "пустого" пространства высотой L под нею. Изменены также строки, описывающие окончание полета.

Ниже приведен первый кадр (Рис. 4) полета ракеты к Луне.


Рис. 4


Согласно строкам 150,160 программы (49) возможны два варианта окончания - корабль разбился и корабль совершил мягкую посадку:

Рис. 5
Как мы видели в работе [ 4], выполнение программы Космодром выглядит более зрелищно, чем только что рассмотренное. Это связано с тем, что мы использовали только 16 строк на экране дисплея (это дает возможность использования программы для ПЭВМ типа Корвет). А для используемых в [ 4] ПЭВМ на экране размещается 25 строк. Это позволяет добавить изображения летающей тарелки и лунохода, двигающихся независимым от ученика образом, нарисовать "выхлоп" реактивной струи из двигателя нашей ракеты, причем размер выхлопа зависит от выбранной тяги, и так далее. Такие же замечания относятся и к программе Скорпион - в [ 4] изображение скорпиона более естественное (оно занимает три строки на экране дисплея).

В заключение приведем использованные в строке 140 формулы программы (49) в более привычном виде:

m = m -0,15 Z t - изменение массы горючего при времени работы двигателя t с силой тяги Z. Коэффициент 0,15 задан (он связан с величиной скорости истечения газов из сопла ракеты)

a =- - величина ускорения ракеты при одновременном действии силы притяжения Луны (в шесть раз слабее, чем на Земле) и силы тяги двигателя F - максимально возможное значение силы тяги (36000 Н в нашем случае), M - масса ракеты (8000 кг)

h = h - v t - , v = v + a t эти две формулы не требуют, надеемся, разъяснений.

Программы Скорпион и Космодром можно сделать более выразительными, пойдя на некоторые усложнения. Это сделано в файлах scorp.bas и kosmo.bas, имеющихся в директории BASIC. Так в программе Космодром добавлены изображения летающей тарелки и лунохода, двигающихся независимым от ученика образом, нарисованы "выхлоп" реактивной струи из двигателя нашей ракеты, причем размер выхлопа зависит от выбранной тяги. На Рис. 6 показан один из кадров работы такой программы.



Рис. 6


скачать

следующая >>
Смотрите также:
Учебное пособие для студентов мпу москва 2000 Печатается по решению кафедры ито и редакционно-издательского Совета мпу
553.05kb.
Учебное пособие для студентов мгоу москва 2003 Печатается по решению кафедры ито и редакционно-издательского Совета мгоу
567.32kb.
Печатается по решению редакционно-издательского совета факультета управления, экономики и права кгту
560.85kb.
Г. А. Розман Очерки о
889.68kb.
Учебное пособие для студентов II курса педагогических университетов Москва 2003 Печатается по решению Ученого Совета Химического факультета мпгу
1131.94kb.
С. П. Поцелуев политические парадиалоги
5585.04kb.
Пермяков Ю. Е
3733.61kb.
Учебно-методическое пособие по хозяйственному праву могилев, 2013 ббк 67. 3 (2Á) т печатается по решению редакционно-издательского совета
2393.23kb.
Семья в психологической консультации
2773.34kb.
Практикум Санкт-Петербург 2003 ббк 73
414.05kb.
Единого государственного экзамена
3175.33kb.
Учебное пособие для студентов, интернов, клинических ординаторов и врачей г. Барнаул, 1997г.. 2 Печатается по решению координационного методического Совета
942.92kb.