программирование на языке бейсик

 

УРОК 15. Другие вопросы

Для вывода рамок в текстовом режиме можно воспользоваться элементами псевдографики, которые используются также и в программе Norton Commander. Для того, чтобы использовать коды данных символов, воспользуемся следующей программой:

CLS

FOR i1% = 176 TO 223

PRINT i1%; " "; CHR$(i1%); " ";

NEXT i1%





Теперь попробуем нарисовать рамку, в которой находится текст:

CLS: a1$ = CHR$(205)

a2$ = CHR$(186)

Установка угловых символов

LOCATE 2, 2: PRINT CHR$(201)

LOCATE 10, 2: PRINT CHR$(200)

LOCATE 2, 28: PRINT CHR$(187)

LOCATE 10, 28: PRINT CHR$(188)

установка горизонтальных линий

FOR i1% = 3 TO 27

LOCATE 2, i1%: PRINT a1$;

NEXT i1%

FOR i1% = 3 TO 27

LOCATE 7, i1%: PRINT a1$;

NEXT i1%


FOR i1% = 3 TO 27

LOCATE 10, i1%: PRINT a1$;

NEXT i1%

Установка вертикальных линий

FOR i1% = 3 TO 9

LOCATE i1%, 2: PRINT a2$;

NEXT i1%

FOR i1% = 3 TO 9

LOCATE i1%, 28: PRINT a2$;

NEXT i1%

Установка средних пересечений

LOCATE 7, 2: PRINT CHR$(204);

LOCATE 7, 28: PRINT CHR$(185);

Вывод текста

LOCATE 4, 9: PRINT " Пример рамки "

LOCATE 9, 14: PRINT "OK"

Помимо рамок при помощи данных символов можно рисовать и другие рисунки, но, к сожалению, достаточно ограниченное их число.

Допустимо также ввести символы псевдографики непосредственно в оператор программы. Для этого нужно нажать на клавишу Alt и, не отпуская ее, ввести код символа. После того, как клавиша Alt будет отпущена, на экране появится введенный символ.

Для рамки можно создать и ее тень, что выполнено нижеприведенной программой.

a1$ = CHR$(205): a2$ = CHR$(186)

COLOR 0, 7: CLS

LOCATE 2, 2: PRINT CHR$(201)

LOCATE 10, 2: PRINT CHR$(200)

LOCATE 2, 28: PRINT CHR$(187)

LOCATE 10, 28: PRINT CHR$(188)

FOR i1% = 3 TO 27: LOCATE 2, i1%: PRINT a1$; : NEXT i1%

FOR i1% = 3 TO 27: LOCATE 7, i1%: PRINT a1$; : NEXT i1%

FOR i1% = 3 TO 27: LOCATE 10, i1%: PRINT a1$; : NEXT i1%

FOR i1% = 3 TO 9: LOCATE i1%, 2: PRINT a2$; : NEXT i1%

FOR i1% = 3 TO 9: LOCATE i1%, 28: PRINT a2$; : NEXT i1%

LOCATE 7, 2: PRINT CHR$(204); : LOCATE 7, 28: PRINT CHR$(185);

LOCATE 4, 6: PRINT " Вывод текста рамки ": LOCATE 9, 14: PRINT " ОК "

FOR i1% = 4 TO 29: LOCATE 11, i1%: PRINT CHR$(219); : NEXT i1%

FOR i1% = 4 TO 10: LOCATE i1%, 29: PRINT CHR$(219); : NEXT i1%

Символами псевдографики можно также выводить рисунки на экран, однако, лучше делать это в графическом режиме.

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

SCREEN 9

delta = .5

FOR i1 = 0 TO 6.2 STEP .1

x = 100 * SIN(i1) * COS(2 * i1) + 100

y = 100 * SIN(i1 + delta) + 100

PSET (x, y), 3

NEXT i1

В данном примере вычисляем значения координат х и у от некоторых функций синусов и косинусов. Так как полученные значения лежат в интервале от -1 до 1, то умножим на 100 и прибавим также 100, в результате принимаемые значения координат будут находиться в пределах от 0 до 100. Можно прибавить большее значение, чтобы рисунок был в центре экрана. Как видно из полученной картинки, точки находятся на некотором расстоянии друг от друга. Это можно поправить, уменьшив шаг цикла с .1 до .01, а конечное значение с 6.2 до 6.28. Кроме того, при таком шаге точки появляются последовательно одна за другой, поэтому интересно смотреть, как фигура появляется на экране. Можно попробовать вывести данную фигуру для разных значений параметра delta, например, 0.01, 1, 1.5 и так далее.


Немного разнообразим формулу для координаты у, поставив дополнительно функцию косинуса.

SCREEN 9

delta = .05

FOR i1 = 0 TO 6.28 STEP .01

x = 100 * SIN(i1) * COS(2 * i1) + 100

y = 100 * SIN(i1 + delta) * COS(i1) + 100

PSET (x + 10, y + 10), 3

NEXT i1

Используя комбинации синусов и косинусов, можно получить разные виды графиков, как это показано ниже.


SCREEN 9: delta = 1.05

FOR i1 = 0 TO 6.28 STEP .01

x = 100 * SIN(i1) * COS(2 * i1) + 100

y = 100 * SIN(i1 + delta) * COS(i1) + 100

PSET (x + 10, y + 10), 3

NEXT i1



SCREEN 9: delta = 1.05

FOR i1 = 0 TO 6.28 STEP .01

x = 100 * SIN(i1) * COS(2 * i1) + 100

y = 100 * SIN(i1 + delta) * COS(3 * i1) + 100

PSET (x + 10, y + 10), 3

NEXT i1



SCREEN 9: delta = 1.05

FOR i1 = 0 TO 12.56 STEP .01

x = 100 * SIN(i1) * COS(2 * i1) + 100

y = 100 * SIN(i1 + delta) * COS(.5 * i1) + 100

PSET (x + 10, y + 10), 3

NEXT i1


SCREEN 9: delta = .05

FOR i1 = 0 TO 6.28 STEP .01

x = 100 * SIN(i1) * COS(2 * i1) + 100

y = 100 * SIN(i1 + delta) * COS(.5 * i1) + 100

PSET (x + 10, y + 10), 3

NEXT i1



SCREEN 9: delta = .05

FOR i1 = 0 TO 3.14 STEP .01

x = 100 * SIN(2 * i1) * COS(i1) + 100

y = 100 * SIN(2 * i1 + delta) * SIN(i1) + 100

PSET (x + 10, y + 10), 3

NEXT i1


SCREEN 9: delta = .305

FOR i1 = 0 TO 20 STEP .01

x = 5 * i1 * SIN(2 * i1) * COS(i1) + 100

y = 5 * i1 * SIN(2 * i1 + delta) * SIN(i1) + 100

PSET (x + 10, y + 10), 3

NEXT i1



SCREEN 9: delta = 1.105

FOR i1 = 0 TO 20.14 STEP .01

x = 100 * SIN(2 * i1) * COS(i1) + 100

y = 100 * SIN(3 * i1 + delta * i1) * SIN(2 * i1) + 100

PSET (x + 10, y + 10), 3

NEXT i1


Изменяя параметр delta и комбинацию синусов и косинусов, можно получить и другие виды рисунков. Кроме того, дополнительные возможности обеспечивает ввод функции тангенса, разные степени синусов и косинусов, а также умножая значения синуса и косинуса или аргумент синусов и косинусов на степени параметра i1.

Графики можно выводить в полярной системе координат, причем для перехода к этой системе используются формулы:

x = r * COS(fi)

y = r * SIN(fi)

Например, для вывода окружности, воспользуемся программой:

SCREEN 9

r = 100

FOR fi = 0 TO 6.28 STEP .01

x = r * SIN(fi) + 100

y = r * COS(fi) + 100

PSET (x + 10, y + 10), 3

NEXT fi

Для вывода спирали:

SCREEN 9

FOR fi = 0 TO 100 STEP .01

x = fi * SIN(fi) + 100

y = fi * COS(fi) + 100

PSET (x + 10, y + 10), 3

NEXT fi

Можно вывести многоугольники:

SCREEN 9

x0 = 100: y0 = 200

FOR i1 = 0 TO 6.3 STEP .9

x = 100 * SIN(i1) + 100

y = 100 * COS(i1) + 100

LINE (x0, y0)-(x, y), 2

x0 = x: y0 = y

NEXT i1

Чтобы разнообразить график данной программы, изменим шаг в цикле:

SCREEN 9

x0 = 100: y0 = 200

FOR i1 = 0 TO 40 STEP 2.9

x = 100 * SIN(i1) + 100

y = 100 * COS(i1) + 100

LINE (x0, y0)-(x, y), 2

x0 = x: y0 = y

NEXT i1

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

Задачи.

1. Выведите несколько кривых с разными параметрами.

2. Нарисуйте флаги разных стран.

3. Нарисуйте крылья бабочки с имитацией ее полета.

4. Создайте картинку вращающегося пропеллера.


(переход на следующую страницу)

 

О↙О↘О↙О↘О↙О↘О↙О↘О↙О↘О↙О↘О↙О↘О↙О↘О











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

Запрещается использовать материалы для получения личной финансовой выгоды, а также размещать на сайтах в интернете.


 
 
 
Яндекс.Метрика


Каталог@MAIL.RU - каталог ресурсов интернет