мерация строк у QBasic в общем случае не нужна, а вместо номера строки можно использовать символьную метку.
Если пустить такую программу командой RUN, то получим: X= 1.414214 i= 3
Эти результаты совпадают с ручным вычислением по описанному алгоритму. Поздравляем вас с первой работающей программой!
4.7.4. Циклы и коды ASCII в QBasic
Мы уже не раз упоминали коды ASCII. Настала пора познакомиться с ними более подробно, а заодно рассмотреть и более совершенную организацию циклов в QBasic.
Начнем с циклов. Уже первые версии языка Basic имели следующую конструкцию для создания циклов с заданным числом их повторения:
FOR I = Nначальное TO Nконечное Тело цикла
NEXT I
В этой конструкции управляющая переменная I меняется от начального значения Nначальное до конечного Nконечное с шагом, равным +1. При этом каждый раз выполняется тело цикла, расположенное между строкой с оператором FOR (для) и оператором выхода из цикла NEXT (следующий). Как только I становится равным N, тело цикла выполняется последний раз и происходит переход к следующей за этой конструкцией строке программы.
Теперь нам нетрудно разобраться с простой программой построения таблиц ASCII, представленной на рис. 4.36.
Эта простая программа имеет целый «букет» интересных особенностей. Так, видно, что оператор PRINT “Комментарий” выводит на экран дисплея текст комментария. Пустой оператор PRINT дает вывод пустой строки – иначе, перевод строки.
Далее в программе имеется подпрограмма вычисления в двойном цикле десятичного кода (I+J) и вывода его вместе со значением соответствующего символа - Conv:. Преобразование кода в символ осуществляет функция CHR$(I+J). При этом с помощью логических условий вывод осуществляется только для кодов, начиная с 32, коды с меньшими значениями являются управляющими и могут вызывать необычные эффекты, например, перевод строки, подачу звукового сигнала и т.д. Вызов подпрограммы осуществляется операторами
COSUB Conv.
Подпрограмма преобразования вызывается два раза для кодов от 0 до 127 и от 128 до 255. Это соответствует выводу основной и аль-
190
тернативной таблиц ASСII. Перед выводом каждой таблицы экран очищается оператором CLS.
Рис. 4.36. Программа построения таблиц ASCII в окне редактора программ интегрированной системы QBasic
Буквально несколько слов об интерфейсе QBasic, который детально изучается на практических занятиях. Это стандартный интерфейс в виде окна с полем редактирования программы и меню. В поле окна видны линейки прокрутки для просмотра больших программ, которые управляются мышью. Меню содержит ряд пунктов, активизация которых создает выпадающие меню (подменю). Среди них есть подменю Run, используемое для запуска введенной программы - командой Start. Она ведет к выводу на экран основной таблицы кодов и символов ASCII:
0 |
|
1 |
|
2 |
|
3 |
|
4 |
|
5 |
|
6 |
|
7 |
|
8 |
|
9 |
|
10 |
|
11 |
|
12 |
|
13 |
|
14 |
|
15 |
|
16 |
|
17 |
|
18 |
|
19 |
|
20 |
|
21 |
|
22 |
|
23 |
|
24 |
|
25 |
! |
26 |
" |
27 |
# |
28 |
$ |
29 |
% |
30 |
& |
31 |
' |
32 |
( |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
|||||||
40 |
41 |
) |
42 |
* |
43 |
+ |
44 |
, |
45 |
- |
46 . |
47 |
/ |
||
48 |
0 |
49 |
1 |
50 |
2 |
51 |
3 |
52 |
4 |
53 |
5 |
54 |
6 |
55 |
7 |
56 |
8 |
57 |
9 |
58 |
: |
59 |
; |
60 |
< |
61 |
= |
62 |
> |
63 |
? |
64 |
@ |
65 |
A |
66 |
B |
67 |
C |
68 |
D |
69 |
E |
70 |
F |
71 |
G |
72 |
H |
73 |
I |
74 |
J |
75 |
K |
76 |
L |
77 |
M |
78 |
N |
79 |
O |
80 |
P |
81 |
Q |
82 |
R |
83 |
S |
84 |
T |
85 |
U |
86 |
V |
87 |
W |
88 |
X |
89 |
Y |
90 |
Z |
91 |
[ |
92 |
\ |
93 |
] |
94 |
^ |
95 |
_ |
96 |
` |
97 |
a |
98 |
b |
99 |
c |
100 d |
101 e |
102 f |
103 g |
||||
104 h |
105 i |
106 j |
107 k |
108 l |
109 m |
110 n |
111 o |
||||||||
112 p |
113 q |
114 r |
115 s |
116 t |
117 u |
118 v |
119 w |
||||||||
120 x |
121 y |
122 z |
123 { |
124 | |
125 } |
126 ~ |
127 |
191
Вид первых 32 символов может быть разным на разных ПК, поскольку эти символы относятся к управляющим. Вывод их можно блокировать, задав С=32. По команде символьного ввода INPUT$(1) вывод останавливается до нажатия любой клавиши. После этого будет выведена альтернативная таблица (в деталях эта таблица может иметь различные виды в зависимости от применяемого ПК):
128 |
Ђ |
129 |
Ѓ |
130 |
‚ |
131 |
ѓ |
132 |
„ |
133 |
… |
134 |
† |
135 |
‡ |
136 |
€ |
137 |
‰ |
138 |
Љ |
139 |
‹ |
140 |
Њ |
141 |
Ќ |
142 |
Ћ |
143 |
Џ |
144 |
ђ |
145 |
‘ |
146 |
’ |
147 |
“ |
148 |
” |
149 |
• |
150 |
– |
151 |
— |
152 |
|
153 |
™ |
154 |
љ |
155 |
› |
156 |
њ |
157 |
ќ |
158 |
ћ |
159 |
џ |
160 |
Ё |
161 |
Ў |
162 |
ў |
163 |
Ј |
164 |
¤ |
165 |
Ґ |
166 |
¦ |
167 |
§ |
168 |
169 |
© |
170 |
Є |
171 |
« |
172 |
¬ |
173 |
- |
174 |
® |
175 |
Ї |
|
176 |
° |
177 |
± |
178 |
І |
179 |
і |
180 |
ґ |
181 |
µ |
182 |
¶ |
183 |
· |
184 |
ё |
185 |
№ |
186 |
є |
187 |
» |
188 |
ј |
189 |
Ѕ |
190 |
ѕ |
191 |
ї |
192 |
А |
193 |
Б |
194 |
В |
195 |
Г |
196 |
Д |
197 |
Е |
198 |
Ж |
199 |
З |
200 |
И |
201 |
Й |
202 |
К |
203 |
Л |
204 |
М |
205 |
Н |
206 |
О |
207 |
П |
208 |
Р |
209 |
С |
210 |
Т |
211 |
У |
212 |
Ф |
213 |
Х |
214 |
Ц |
215 |
Ч |
216 |
Ш |
217 |
Щ |
218 |
Ъ |
219 |
Ы |
220 |
Ь |
221 |
Э |
222 |
Ю |
223 |
Я |
224 |
а |
225 |
б |
226 |
в |
227 |
г |
228 |
д |
229 |
е |
230 |
ж |
231 |
з |
232 |
и |
233 |
й |
234 |
к |
235 |
л |
236 |
м |
237 |
н |
238 |
о |
239 |
п |
240 |
р |
241 |
с |
242 |
т |
243 |
у |
244 |
ф |
245 |
х |
246 |
ц |
247 |
ч |
248 |
ш |
249 |
щ |
250 |
ъ |
251 |
ы |
252 |
ь |
253 |
э |
254 |
ю |
255 |
я |
Первые версии языка Бейсик имели около двух десятков операторов и функций. Практически все они использованы в описанных выше простых программах. Современные версии Бейсика, например, тот же Qbasic, имеют свыше 200 операторов и функций и позволяют, хотя и с разной эффективностью, готовить любые программы: системные, для обработки текстов, для выполнения математических вычислений, для программирования игр и построения графиков и даже для создания анимационной графики. Достаточно полное описание
QBasic можно найти в книгах [5, 27], а по Visual Basic - в [28, 29].
4.7.5. Графические возможности QBasic
QBasic имеет минимум средств реализации цветной машинной графики. Это операторы задания типа экрана SCREEN, очистки экрана CLS, локализации вывода надписей LOCATE, построения и гашения точки на экране дисплея PSET и PRESET, построения отрезков прямых LINE, дуг, окружностей и эллипсов CIRCLE и др.
Для знакомства с их действием составим простейшую обучающую программу на QBasic:
SCREEN 9: CLS
PSET (5, 5), 15
LOCATE 1, 3: PRINT "PSET (5,5),15" PRESET (5, 35), 15
LOCATE 3, 3: PRINT "PRESET (5,35),15" LINE (250, 5)-(350, 30)
LOCATE 1, 23: PRINT "(250,5)"
192
LOCATE 3, 43: PRINT "(350,30)"
LOCATE 2, 44: PRINT "LINE (250,5)-(350,30)" LINE (10, 50)-(250, 100), , B
LOCATE 6, 4: PRINT "LINE (10,50)-(250,100),,B" LINE (280, 50)-(580, 100), 15, B, 30
LOCATE 6, 39: PRINT "LINE (280,50)-(580,100),15,B,30" LINE (10, 130)-(60, 160), 15, BF
LOCATE 11, 10: PRINT "LINE (10,130)-(60,160),15,BF" PSET (320, 120): LINE -(400, 180), , , 30
LOCATE 9, 42: PRINT "PSET (320,120)"
LOCATE 11, 47: PRINT "LINE -(400,180),,,30" CIRCLE (60, 240), 50
LOCATE 22, 1: PRINT "CIRCLE (60,240)" CIRCLE (200, 240), 50, 15, 0, 2
LOCATE 22, 17: PRINT "CIRCLE (200,240),50,15,0,2" CIRCLE (180, 260), 50, 15, -.1, -2
LOCATE 23, 17: PRINT "CIRCLE (180,260),50,15,-.1,-2" CIRCLE (350, 230), 30, , , , 3
LOCATE 17, 47: PRINT "CIRCLE (350,230),30,,,,3" CIRCLE (460, 275), 70, , -.2, 5, .2
LOCATE 22, 48: PRINT "CIRCLE (460,275),70,,-.2,5,.2" LOCATE 24, 12
PRINT "Применение операторов PSET, PRESET, LINE и CIRCLE"; F$ = INPUT$(1)
Эта программа широко использует оператор LOCATE m, n для вывода тестовой надписи в заданное место окна, начиная со знакоместа в строке m и столбце n. Программа составлена так, что она демонстрирует запись на Бейсике того или иного графического оператора и затем иллюстрирует результат его исполнения (рис. 4.37).
Рис. 4.37. Примеры применения графических операторов QBasic
193
QBasic позволяет создавать и простые анимационные и игровые программы. Приведем пример программы, строящей силуэт автомобиля, перемещающийся на экране слева направо на фоне некоторого изображения:
`Декларация процедуры построения изображения автомобиля
DECLARE SUB DrawTruck ()
`Подготовка массива изображения автомобиля
SCREEN 1, 0 CALL DrawTruck DIM truck%(629)
GET (20, 21)-(119, 70), truck% CLS `Очистка экрана `Построение фонового рисунка
LINE (0, 0)-(319, 148), , B CIRCLE (0, 0), 20
LINE (14, 14)-(50, 50)
LINE (19, 3)-(70, 10)
LINE (3, 17)-(12, 65)
`Цикл перемещения изображения автомобиля
FOR n = 1 TO 210
PUT (n, 100), truck%, PSET LINE (0, 148)-(319, 148)
NEXT n
F$ = INPUT$(1) END
`Процедура построения изображения автомобиля
SUB DrawTruck
CIRCLE (105, 60), 10 PAINT (105, 60), 3 CIRCLE (35, 60), 10 PAINT (35, 60), 3
LINE (21, 21)-(101, 40), , BF
LINE (21, 40)-(119, 60), , BF END SUB
В данной программе объявлена процедура DrawTruck построения изображения автомобиля (сам текст процедуры представлен под программой). Построенный в нижнем левом углу экрана силуэт автомобиля с помощью оператора GET запоминается в целочисленном массиве truck%. После этого строится фоновый рисунок - прямоугольник и солнышко в левом верхнем углу экрана (рис. 4.38).
Для перемещения силуэта автомобиля используется принцип мультипликации - строится на некоторое время изображение автомобиля, затем оно стирается и снова строится чуть правее (рис. 4.38). Для этого в программе организован цикл таких построений FOR-
194
NEXT. В этом цикле с помощью оператора PUT выводится силуэт автомобиля в разных местах экрана.
Рис. 4.38. Конечный кадр перемещения автомобиля
Методические указания
Описание большинства программ этой главы не является исчерпывающе полным. По каждой из описанных программ опубликованы обширные справочники и руководства пользователя, по объему намного превосходящие данное учебное пособие. Тем не менее выше были даны сведения, вполне достаточные для начала работы с программами и их обычного (не профессионального) применения.
10 главных вопросов
1.Что такое электронная таблица и какими параметрами она характеризуется?
2.Что может делать табличный процессор Excel?
3.Как строятся графические диаграммы в Excel?
4.Что такое база данных и системы управления базами данных?
5.Какими возможностями обладает СУБД Access?
6.Как готовятся презентации в PowerPoint?
7.На каких принципах основан компьютерный перевод?
8.Что такое компьютерные вирусы и как с ними бороться?
9.Что вы знаете о языках программирования ПК?
10.Какими средствами обладает язык программирования QBasic?
195