- •Содержание.
- •Учимся программировать! Конспекты школьника. Алгоритмы.
- •Введение в язык программирования Basic.
- •Линейная структура программы.
- •Циклы в алгоритмах и программах.
- •Массивы. Одномерные массивы.
- •Массивы. Двумерные массивы.
- •Символьные и строчные переменные.
- •Подпрограммы. Функции.
- •Создание движущихся изображений.
- •Работа с файлами.
Подпрограммы. Функции.
Функции отличаются от процедур тем, что не только выполняют определенные действия, но еще и возвращают вызывающей программе какое-то значение.
Процедуры и функции бывают стандартными и нестандартными. Стандартные подпрограммы входят в библиотеку, которая поставляется вместе с системой программирования. Нестандартные процедуры и функции программисты пишут сами.
Вы уже использовали стандартные функции, теперь давайте напишем свою функцию.
FUNCTION имя (список параметров) тело функции - список операторов END FUNCTION
Пример: функция возвращающая куб числа
FUNCTION kub (x) kub=x*x*x END FUNCTION
REM Вывод кубов натуральных чисел от 1 до 10 CLS FOR I=1 TO 10 PRINT kub(I) NEXT END
В этой программе в цикле происходит обращение к функции kub, которая вычисляет куб числа.
Процесс, когда в процедуре происходит обращение к самой себе, называется рекурсией (рекурсия - возврат). (Происходит от латинского recurreus - возвращающийся).
Рекурсия - это такой способ организации подпрограммы, при котором в ходе выполнения она обращается сама к себе.
Ниже приведена программа вычисления факториала числа, в которой используется рекурсивная процедура fak:
FUNCTION fak (f) IF f = 0 OR f = 1 THEN fak = 1 ELSE fak = fak(f - 1) * f END IF END FUNCTION
REM "Вычисление факториала" INPUT "Введите число: ", a PRINT "Факториал = ", fak(a) END
Для вычисления факториала числа n, т.е. n! надо умножить последовательно n натуральных чисел от 1 до n: n!=1*2*3*4. Так, 4! будет равно: 4!=1*2*3*4. Это прямой путь вычисления или итеративный. Возможен и другой путь вычисления: n!=n*(n-1)*...*1. Т.е. 4!=4*3*2*1. Этот путь можно назвать возвратным или рекурсивным. Именно на этом принципе основана работа приведенной функции.
Графический режим работы.
Ну и теперь, наверное, самое интересное. Будем рисовать. Кто же не любит это занятие?!
Программы могут выводит данные на экран в текстовом и графическом режиме работы. Для перехода в графический режим работы служит оператор:
SCREEN <mode>
<mode> - целочисленная константа, указывающая режим работы для данного экрана и адаптера.
Пример:
SCREEN 1 SCREEN 2 ... SCREEN 11 ...
Для рисования можно использовать следующие операторы:
CLS |
Очистка экрана |
PSET(X,Y),C |
Изобразить точку. X,Y - координаты точки, С -цвет. |
PSET STEP(X,Y),C |
Изобразить точку. X,Y - смешение от данной точки, С - цвет. |
LINE(X1,Y1)-(X2,Y2),C |
Прямая линия.X1,Y2 и X2,Y2- координаты концов линии, С - цвет. |
LINE -(X2,Y2),C |
Прямая линия. От текущего положения курсора до X2,Y2- координаты конца линии, С - цвет. |
LINE(X1,Y1)-(X2,Y2),C,B |
Прямоугольник. X1,Y2 и X2,Y2- координаты концов диагонали, С - цвет. |
LINE(X1,Y1)-(X2,Y2),C,BR |
Закрашенный прямоугольник. X1,Y2 и X2,Y2- координаты концов диагонали, С - цвет. |
CIRCLE(X,Y),R,C |
Окружность. X,Y - координаты центра, С -цвет. |
CIRCLE STEP(X,Y),R,C |
Окружность. X,Y - смешение от данной точки, С -цвет. |
CIRCLE(X,Y),R,C,A1,A2 |
Дуга окружности. X,Y - координаты центра, С -цвет, А1,А2 - угловые меры начальной и конечной точки дуги. |
CIRCLE(X,Y),R,C,,,K CIRCLE(X,Y),R,C,А1,А2,K |
Элипс. К - коэффициент сжатия. |
PAINT(X,Y),C1,C2 |
Закрасить область. С1 - цвет закраски, С2 - цвет границы. |
LOCATE T1,T2 |
Установка курсора в данную позицию. Т1, Т2 - номер строки и столбца. |
Оператор вывода текста |
Пример: использования LINE
REM использование LINE SCREEN 12 LINE (10, 10)-(200, 10) LINE (10, 20)-(200, 40), 2, B LINE (10, 50)-(200, 70), 2, BF END
Результат работы программы:
Пример: использование CIRCLE
REM ОКРУЖНОСТЬ, ДУГА, ЭЛЛИПС CONST PI = 3.141593 SCREEN 2 REM ОКРУЖНОСТЬ CIRCLE (350, 115), 30 REM ДУГА ОКРУЖНОСТИ CIRCLE (320, 100), 200, , -PI, -PI / 2 REM ОКРУЖНОСТЬ CIRCLE STEP(-100, -42), 100 REM ЭЛЛИПС CIRCLE STEP(0, 0), 100, , , , 5 / 25 REM ВЫВЕСТИ НАДПИСЬ В СТРОКЕ 25 И СТОЛБЦЕ 1 LOCATE 25, 1: PRINT "Press any key to end."; REM ЖДЕМ НАЖАТИЯ ЛЮБОЙ КЛАВИШИ DO LOOP WHILE INKEY$ = ""
Результат работы программы:
Пример: построение окружности
REM окружность CLS INPUT "Введите координаты центра x,y: ", x,y INPUT "Введите радиус окружности R: ", r SCREEN 1 CIRCLE (x, y), r END
Сейчас на улице зима, а значит и ... Пример: программа "Снеговик"
REM
Снеговик
SCREEN
12
x
= 320
y
= 240
r
= 50
c
= 3
c1
= 8
c2
= 5
c3
= 6
REM
Снег
FOR
i
= 1 TO
300
PSET
(RND
* 640, RND
* 480), 1
NEXT
REM
Сугроб
FOR
i
= 1 TO
20
LINE
(0 + 2 * i,
y
+ 3 * r
+ 61 - i)-(640
- 2 * i,
y
+ 3 * r
+ 61 - i),
1
NEXT
REM
Тело снеговика
CIRCLE
(x,
y
- 80), r
- 20, c
CIRCLE
(x,
y),
r,
c
CIRCLE
(x,
y
+ 120), r
+ 20, c
CIRCLE
(x
- 52, y
- 30), 10, c
CIRCLE
(x
+ 52, y
- 30), 10, c
PAINT
(x,
y
- 80), c,
c
PAINT
(x,
y),
c,
c
PAINT
(x,
y
+ 120), c,
c
PAINT
(x
- 52, y
- 30), c,
c
PAINT
(x
+ 52, y
- 30), c,
c
REM
Оформление лица
CIRCLE
(x
- 15, y
- 90), 2, 1
PAINT
(x
- 15, y
- 90), 1, 1
CIRCLE
(x
+ 15, y
- 90), 2, 1
PAINT
(x
+ 15, y
- 90), 1, 1
CIRCLE
(x,
y
- 80), 10, 4, , , .5
PAINT
(x,
y
- 80), 4, 4
CIRCLE
(x,
y
- 75), 20, 4, 4, 6, 0.5
REM
Метла
LINE
(x
- 50, y
- 100)-(x
- 54, y
+ 100), c1,
BF
FOR
i
= 1 TO
20
LINE
(x
- 53, y
- 100)-(x
- 53 - 40 * RND
+ 20, y
- 100 - 40 * RND),
c1
NEXT
REM
Ведро
LINE
(x
- 30, y
- r
- 2 * (r
- 20) + 10)-(x
+ 30, y
- r
- 2 * (r
- 20) + 10), c2
LINE
(x
- 15, y
- r
- 2 * (r
- 20) - 30)-(x
+ 15, y
- r
- 2 * (r
- 20) - 30), c2
LINE
(x
- 30, y
- r
- 2 * (r
- 20) + 10)-(x
- 15, y
- r
- 2 * (r
- 20) - 30), c2
LINE
(x
+ 15, y
- r
- 2 * (r
- 20) - 30)-(x
+ 30, y
- r
- 2 * (r
- 20) + 10), c2
PAINT
(x,
y
- r
- 2 * (r
- 20)), c2,
c2
REM
Пуговицы
FOR
i
= 1 TO
5
CIRCLE
(x,
y
- r
+ 30 * i),
3, c3
PAINT
(x,
y
- r
+ 30 * i),
c4,
c3
NEXT
END
Результат
работы программы:
Пример: построение графика функции.
FUNCTION F (x)
F = x *
x
END FUNCTION
REM ГРАФИК
ФУНКЦИИ
SCREEN
12
REM Строим
оси
FOR
I = 0 TO 3
LOCATE 16, 38 + 10 * I: PRINT 4 * I
NEXT
FOR
I = 0 TO 3
s$ = "-" + STR$(4 * I)
LOCATE 16, 38 -
10 * I: PRINT s$
NEXT
FOR I = 0 TO 4
LOCATE 16 - 3 *
I, 38: PRINT 5 * I
NEXT
FOR I = 0 TO 3
s$ = "-"
+ STR$(5 * I)
LOCATE 16 + 3 * I, 37: PRINT s$
NEXT
LINE
(10, 240)-(630, 240)
LINE (320, 10)-(320, 470)
COLOR
3
LOCATE 1, 38: PRINT "Y"
LOCATE 17, 77: PRINT
"X"
REM Строим
график
функции
COLOR
2
PSET (20*(-10) + 320, 240 - 10 * F(-10))
FOR x = -10 TO
10 STEP .1
XX = 20 * x + 320
YY = 240 - 10 * F(x)
LINE
-(XX, YY)
NEXT
END Результат
работы
программы
для
y=x2
Результат
работы
программы
для
y=x3-2.5
Оператор DRAW позволяет выполнять разнообразные графические операции.
· Команды черчения по восьми направлениям: U, D, L, R, E, F, G, H.
H |
U |
E |
L |
|
R |
G |
D |
F |
Команда М чертит от текущей точки до точки с координатами x, y. Если перед координатами стоит знак плюс или минус, то координаты относительные, а не абсолютные.
Команда S изменяет масштаб черчения.
Команда А поворачивает изображение (А0-0, А1-90, А2-180, А3-270 градусов).
Пример: Рисование флагов.
REM Флаги SCREEN 1 PSET (50, 10) DRAW "R20 G5 F5 L20 U10" DRAW "B D20" DRAW "S5 R20 G5 F5 L20 U10" DRAW "BD20" DRAW "S4 R20 G5 F5 L20 U10" DRAW "BD20" DRAW "R20 G5 F5 L20 U10" DRAW "BD40" DRAW "A3 R20 G5 F5 L20 U10" END
Результат работы программы:
