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

 

УРОК 16 Другие примеры программ

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

- делайте как можно больше комментариев в программе, чтобы по истечении некоторого времени быстро вспомнить, как она работает;

- создавайте больше подпрограмм, что упрощает саму программу и улучшает понимание исходного текста;

- давайте имена переменным таким образом, чтобы потом по этому имени было легко вспомнить функции, для которых она предназначена;

- то же самое применяйте для подпрограмм и функций;

- используйте удобный интерфейс в программе, чтобы те сообщения, которые выводятся на экран были легко понятны;

- предусматривайте ошибочные действия пользователя;

- вывод на экран должен быть привлекательным, чтобы пользователю было интересным с ним работать. Сочетайте разные шрифты, используйте наклонные символы, продумайте фон экрана и так далее;

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

Колония бактерий.

В отрасли биологии, которая занимается изучением распространения бактерий, имеется одна довольно забавная задача, в которой при небольшом количестве бактерий они развиваются, а при большом или очень маленьком - уничтожаются.

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

DIM m1(51, 51), m2(50, 50)

SCREEN 9: CLS : COLOR 8

strok% = 50: stolb% = 50

FOR i1 = 1 TO 1750 ‘ первоначальное заполнение

x = RND * (stolb%-1) + 1

y = RND * (strok%-1) + 1: m1(x, y) = 1

NEXT i1

GOSUB cetkaпрорисовка сетки

FOR ii% = 1 TO 77 ‘ цикл по поколениям

GOSUB raschetподсчет нового поколения

GOSUB kletkaвывод результатов на экран

NEXT ii%

END


cetka:

FOR i1% = 1 TO stolb% + 1

LINE (i1% * 5, 5)-(i1% * 5, (strok% + 1) * 5)

NEXT i1%

FOR i1% = 1 TO strok% + 1

LINE (5, i1% * 5)-((stolb% + 1) * 5, i1% * 5)

NEXT i1%

RETURN

kletka:

заполнение клеток сетки в зависимости от

значений массива М1

FOR i1% = 1 TO strok%

FOR i2% = 1 TO stolb%

PAINT (i2% * 5 + 2, i1% * 5 + 2), m1(i1%, i2%), 8

NEXT i2%

NEXT i1%

RETURN


raschet:

FOR i1% = 1 TO stolb%

FOR i2% = 1 TO strok%

подсчет соседей

i3% = 0 ‘ количество существ-соседей

IF m1(i1% - 1, i2% - 1) = 1 THEN i3% = i3% + 1

IF m1(i1% - 1, i2%) = 1 THEN i3% = i3% + 1

IF m1(i1% - 1, i2% + 1) = 1 THEN i3% = i3% + 1

IF m1(i1%, i2% - 1) = 1 THEN i3% = i3% + 1

IF m1(i1%, i2% + 1) = 1 THEN i3% = i3% + 1

IF m1(i1% + 1, i2% - 1) = 1 THEN i3% = i3% + 1

IF m1(i1% + 1, i2%) = 1 THEN i3% = i3% + 1

IF m1(i1% + 1, i2% + 1) = 1 THEN i3% = i3% + 1

i4% = m1(i1%, i2%)


установка M2(i1%,i2%) в зависимости

от количества соседей

IF i4% = 0 AND i3% <> 3 THEN m2(i1%, i2%) = 0

IF i4% = 0 AND i3% = 3 THEN m2(i1%, i2%) = 1

IF i4% = 1 AND i3% > 3 THEN m2(i1%, i2%) = 0

IF i4% = 1 AND i3% < 2 THEN m2(i1%, i2%) = 0

IF i4% = 1 AND (i3% = 2 OR i3% = 3) THEN

m2(i1%, i2%) = 1

ENDIF

NEXT i2%

NEXT i1%

пересылка значений из М2 в М1

FOR i1% = 1 TO stolb%

FOR i2% = 1 TO strok%

m1(i1%, i2%) = m2(i1%, i2%)

NEXT i2%

NEXT i1%

RETURN


В самом начале работы программы массив М1 заполняется случайным образом значениями, которые содержат сведения о наличии существа в клетке: 0 - не имеется, 1 - имеется. Массив М2 содержит значения, которые вычисляются на основе значений массива М1, то есть содержит новое поколение существ. После вычисления значений нового поколения, данные перемещаются из массива М2 в массив М1.

Переменная i1 определяет количество шагов эволюций развития бактерий, причем каждый шаг выводится на экран дисплея. В результате появляются узоры, один вид которого показан слева. Можно изменять значения количества первоначального заполнения массива М1, количества поколений. Кроме того, можно заново инициировать счетчик случайных чисел оператором RANDOMIZE, размерность сетки и так далее.

Графические символы.

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

С начала определим размер символа. Предположим, что каждый символ имеет размер 8х8. Далее нарисуем контур по клеткам, как это показано на рисунке выше. Нарисовать символ «а» на экране можно многими способами. Рассмотрим два из них.

Первый способ.

SCREEN 9

DATA 0, 0, 0, 1, 1, 1, 0, 0

DATA 0, 0, 1, 0, 0, 0, 1, 0

DATA 0, 1, 0, 0, 0, 0, 0, 1

DATA 0, 1, 0, 0, 0, 0, 0, 1

DATA 0, 1, 1, 1, 1, 1, 1, 1

DATA 0, 1, 0, 0, 0, 0, 0, 1

DATA 0, 1, 0, 0, 0, 0, 0, 1

DATA 0, 0, 0, 0, 0, 0, 0, 0

x = 100: y = 100

FOR i1 = 1 TO 8

FOR i2 = 1 TO 8

READ id%

IF id% = 1 THEN PSET (x + i2, y + i1), 3

NEXT i2

NEXT i1

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

Второй способ.

SCREEN 9

DATA &h1C,&h22,&h41, &h41,&h7F,&h41,&h41,&h00

x = 100: y = 100

FOR i1 = 1 TO 8

READ i2%: LINE (x, y + i1)-(x + 15, y + i1), 3, , i2%

NEXT i1

Сначала определяются данные для оператора DATA следующим образом. Первую строчку символа разделим на две части по четыре клетки и переведем в шестнадцатеричную систему. При этом будем полагать, что значение закрашенной клетки равна 1, не закрашенной - 0. Таким образом первые четыре клетки определяют число 1, так как первые три клетки не закрашены, а четвертая закрашена (1 = 0*23 + 0*22 + 0*21 + 1*20), следующие - символ С (12 = 1*23 + 1*22 + 0*21 + 0*20). Во второй строчке первый и второй символ равны 2 и так далее. Для того, чтобы легче было переводить, можно использовать следующую таблицу.


0-0000

1-0001

2-0010

3-0011

4-0100

5-0101

6-0110

7-0111

8-1000

9-1001

A-1010

B-1011

C-1100

D-1101

E-1110

F-1111

 

Оператор DATA в последнем своем параметре устанавливает шаблон узора для выводимой линии. Рассмотрим пример.

LINE (50, 30)-(90, 30), 3, , &HCCCC

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

LINE (50, 30)-(11, 70), 3,В , &HCCCC

Также будем выводить и линии символа. Однако, отметим, что переменная, которая считывает данные из оператора DATA, имеет размерность в 4 байта или 16 бит. Поэтому длина линии должна иметь не больше 16 точек, в нашем случае от 0 до15.

Подобным образом можно выводить другие символы разной размерности. Если ширина символа больше 16 точек, то для него нужно использовать простую переменную двойной точности. Если больше 32, то применяется оператор LINE на одной строчке два или более раз.

Помимо вывода указанного символа, можно нарисовать жирные символы или курсив, создать свой стиль и так далее.

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

Машинописный тренажер.

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

SCREEN 9: CLS : COLOR 14, 7: COLOR 4, 2

nstrok = 15: nstolb = 60: nklav = 13: GOSUB knopka:

nstrok = 30: nstolb = 100: nklav = 12: GOSUB knopka

nstrok = 45: nstolb = 145: nklav = 11: GOSUB knopka

nstrok = 67: nstolb = 187: nklav = 10: GOSUB knopka

bstr = 6: bstlb = 4: ab$ = "E1234567890-=": GOSUB bukva

bstr = 9: bstlb = 6: ab$ = "ЙЦУКЕНГШЩЗХЪ": GOSUB bukva

bstr = 12: bstlb = 8: ab$ = "ФЫВАПРОЛДЖЭ": GOSUB bukva

bstr = 15: bstlb = 11: ab$ = "ЯЧСМИТЬБЮ.": GOSUB bukva: PAINT (1, 1), 5, 3

OPEN "isx.txt" FOR INPUT AS #1: ierr = 0: LOCATE 17, 1: PRINT "Ошибок - "; 0

DO UNTIL EOF(1)

INPUT #1, ab$: LOCATE 1, 1: PRINT ab$: an$ = ""

LOCATE 19, 1: PRINT STRING$(79, " ");

m1: FOR i1% = 1 TO LEN(ab$)

an$ = an$ + a1$: LOCATE 19, 1: PRINT an$: a1$ = ""

a1$ = INPUT$(1): IF a1$ = CHR$(27) THEN GOTO endpr:

IF a1$ = "/" THEN a1$ = "."

IF a1$ <> MID$(ab$, i1%, 1) THEN

ierr = ierr + 1: LOCATE 17, 10: PRINT ierr; : PRINT CHR$(7)

LOCATE 1, 1: PRINT STRING$(79, " ");

ab$ = MID$(ab$, i1%, LEN(ab$) - i1% + 1): LOCATE 1, 1: PRINT ab$

LOCATE 20, 2: PRINT ASC(a1$)

GOTO m1

END IF

NEXT i1%

LOOP

endpr: END


bukva:

LOCATE bstr, bstlb

FOR i1% = 1 TO LEN(ab$): LOCATE bstr, bstlb + (i1% - 1) * 5

PRINT MID$(ab$, i1%, 1); : NEXT i1%

RETURN


knopka:

FOR i1% = 0 TO nklav - 1

LINE (nstrok + i1% * 40, nstolb)-(nstrok + i1% * 40 + 32, nstolb + 32), 3, B

NEXT i1%

RETURN

Данная программа выводит сверху экрана текст, который нужно набрать с клавиатуры. Этот текст находится в файле под именем isx.txt и желательно иметь записи небольшие по количеству символов на строчке, например, 50.

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

При вводе символов с клавиатуры текст в верхней части экрана будет уменьшаться, оставляя только те символы, которые следует ввести. Данная программа приведена как пробная и поэтому ее можно расширять новыми возможностями. Например, можно выделять клавиши, которые нужно нажимать; в ней не предусмотрено исправление символов, то есть дополнить удаление последнего неверно введенного символа нажатием на клавишу Backspace; можно ввести показатель введенных символов за единицу времени. Эти возможности не требуют больших знаний в программировании, но могут служить хорошей практикой при написании программ.

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

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

DATA &H60,&H1E,&H0E,&H1F,&HA1,&H18,&H00,&HCD,&H33,&H89,&H1E,&H1A

DATA &H00,&H89,&H0E,&H1C,&H00,&H89,&H16,&H1E,&H00,&H1F,&H61,&HCB

DIM ms(1 TO 20) AS INTEGER

'SCREEN 9

DEF SEG = VARSEG(ms(1)): msp& = VARPTR(ms(1))

FOR i = 0 TO 23: READ code%: POKE msp& + i, code%: NEXT i

ms(13) = 1: CALL absolute(msp&)

DO

ms(13) = 3: CALL absolute(msp&):

i3% = ms(14): i4% = ms(15): i2% = ms(16)

LOCATE 1, 1: PRINT i3%, i4%, i2%

LOOP WHILE i3% = 0

END

В данной программе, в операторах DATA присутствует программа, написанная на языке ассемблера для использования прерывания 33, которая вызывает драйвер мыши и работает с ним. Первый оператор CALL absolute(msp&) вызывает программу, которая загружена в массив ms, а по своему действию инициирует драйвер, для чего в 13й элемент массива ms заносится значение 1. Следующий вызов данной подпрограммы (CALL absolute(msp&)) с параметром в 13м элементе массива равным трем (ms(13) = 3) позволяет считывать значения курсора мыши. Причем в 14м элементе массива ms будет находиться признак нажатия на кнопку мыши (0 - кнопки не нажаты, 1 - нажата левая кнопка, 2 - нажата правая кнопка), в 15м элементе массива - координата х, в 16 - координата у. Таким образом на рисунке справа от текста программы показано состояние указателя мыши (0 - кнопки мыши не нажаты, курсор мыши находится с координатами (224, 112)).

Запрос состояния мыши производится в цикле, поэтому при передвижении курсора мыши значения координат будут меняться. Выход из цикла и из программы осуществляется при нажатии на любую кнопку мыши.

Калькулятор.

Следующий пример: программа работы с калькулятором.

SCREEN 9: CLS : COLOR 4, 2

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

FOR i1% = 1 TO 4: FOR i2% = 1 TO 3

LINE (i2% * 40, i1% * 40)-(i2% * 40 + 32, i1% * 40 + 32), 4, B

NEXT i2%: NEXT i1%

LINE (160, 40)-(192, 72), 4, B: LINE (160, 80)-(192, 152), 4, B

LINE (160, 160)-(192, 232), 4, B: LINE (40, 200)-(112, 232), 4, B

LINE (120, 200)-(152, 232), 4, B: LINE (40, 250)-(300, 266), 4, B

установка символов на кнопки

LOCATE 4, 13: PRINT "/": LOCATE 4, 18: PRINT "*": LOCATE 4, 23: PRINT "-"

LOCATE 7, 8: PRINT "7": LOCATE 7, 13: PRINT "8": LOCATE 7, 18: PRINT "9"

LOCATE 7, 23: PRINT "+": LOCATE 10, 8: PRINT "4": LOCATE 10, 13: PRINT "5"

LOCATE 10, 18: PRINT "6": LOCATE 13, 8: PRINT "1": LOCATE 13, 13: PRINT "2"

LOCATE 13, 18: PRINT "3": LOCATE 13, 23: PRINT "=": LOCATE 16, 8: PRINT "0"

LOCATE 16, 18: PRINT ".": LOCATE 19, 7: PRINT "0"

окраска фона экрана, кроме кнопок, установка начальных значений переменных

ii# - один операнд, ii1# - второй операнд

op% - признак, указывающее какое число вводится: 0 - целая часть, 1 - дробная

> 1 то позиция цифры в дробной части числа

op1% - вид операции: 0 - нет операции, 1 - операция деления, 2 - умножения,

3 - вычитание, 4 - сложение

PAINT (1, 1), 5, 4: ii# = 0: op% = 0: op1% = 0: i2% = 0: ii1# = 0


DO

ввод символа и проверка нажатия на клавишу Esc.

a1$ = INPUT$(1): IF a1$ = CHR$(27) THEN GOTO endpr:

ввод числа для первого операнда

IF op% = 0 AND (a1$ >= "0" AND a1$ <= "9") THEN

ii# = ii# * 10 + ASC(a1$) - 48: GOTO endloop

END IF

ввод точки, после ввода целой части числа

IF a1$ = "." THEN op% = 1: GOTO endloop

ввод второго операнда

IF op% > 0 AND (a1$ >= "0" AND a1$ <= "9") THEN

ii# = ii# + (ASC(a1$) - 48) * 10 ^ (-op%): op% = op% + 1: GOTO endloop

END IF

установка вида операции

IF a1$ = "/" THEN ii1# = ii#: ii# = 0: op1% = 1: op% = 0: GOTO endloop

IF a1$ = "*" THEN ii1# = ii#: ii# = 0: op1% = 2: op% = 0: GOTO endloop

IF a1$ = "-" THEN ii1# = ii#: ii# = 0: op1% = 3: op% = 0: GOTO endloop

IF a1$ = "+" THEN ii1# = ii#: ii# = 0: op1% = 4: op% = 0: GOTO endloop

очистка переменных

IF a1$ = "y" OR a1$ = "Y" THEN ii# = 0: ii1# = 0: GOTO endloop

вывод результата операции

IF ASC(a1$) = 13 THEN

IF op1% = 1 THEN ii# = ii1# / ii#: ii1# = 0: op1% = 0: op% = 0: GOTO endloop

IF op1% = 2 THEN ii# = ii1# * ii#: ii1# = 0: op1% = 0: op% = 0: GOTO endloop

IF op1% = 3 THEN ii# = ii1# - ii#: ii1# = 0: op1% = 0: op% = 0: GOTO endloop

IF op1% = 4 THEN ii# = ii1# + ii#: ii1# = 0: op1% = 0: op% = 0: GOTO endloop

END IF

вывод полученного значения

endloop: LOCATE 19, 7: PRINT SPC(30); : LOCATE 19, 7: PRINT ii#;

IF op% = 1 THEN PRINT "."; ‘

LOOP

endpr: END

Приведенная программа довольно небольшая, и возможности ее ограничены. Она может производить операции с двумя операторами. Введите сначала одно число, затем знак операции: умножение (*), деление (/), вычитание (-) и сложение(+), после чего введите второе число. Если вводится число с дробной частью, то нужно сначала ввести целую часть, затем точку и дробную часть. Для того, чтобы получить результат, нажмите на клавишу Enter.

С полученным числом можно выполнить новую арифметическую операцию и так далее. Для того, чтобы очистить память и провести новые операции, нажмите клавишу «Y».

Для того, чтобы выйти из программы, нажмите на клавишу Esc.

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

- установить проверку, чтобы не было ошибочных действий, например, деления на ноль;

- добавить ввод числа не при помощи клавиатуры, а мыши;

- показывать на экране оба операнда;

- складывать подряд три операнда, без нажатия на клавишу Enter;

- добавить новые режимы, например, нажав на клавишу «С», получить значение синуса. Можно вычислить значение косинуса, логарифма и других функций;

- можно установить память в калькуляторе и так далее.

Сортировка данных.

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

DIM mas(20): COLOR 0, 7: CLS : RANDOMIZE TIMER

FOR i1% = 1 TO 20: i2% = RND * 1000: mas(i1%) = i2%: PRINT i2%, : NEXT i1%

m1: i2% = 0: FOR i1% = 1 TO 19

IF mas(i1%) > mas(i1% + 1) THEN

i2% = 1: i3% = mas(i1% + 1)

mas(i1% + 1) = mas(i1%)

mas(i1%) = i3%

END IF

NEXT i1%

IF i2% > 0 THEN GOTO m1

PRINT : PRINT : FOR i1% = 1 TO 20: PRINT mas(i1%), : NEXT i1%

END

В данной программе, массив mas сначала заполняется случайными числами от 0 до 1000, затем происходит сортировка следующим образом. Просматриваются все элементы массива и сравниваются соседние, если следующий элемент больше текущего, то они меняются местами. Таким образом просматриваются все элементы массива, если перестановка завершилась, то переменной i2% присваивается значение 1, что означает, что нужен еще один просмотр элементов массива. В конце работы программы выполняется печать содержимого массива.

Если увеличить размерность массива, то таким образом увеличивается количество данных. Можно также изменить пределы чисел, находящихся в массиве.

Создание списка простых чисел.

Следующая программа выводит на экран простые числа.

DIM a%(2000)

a%(1) = 2

a%(2) = 3

a%(3) = 5

a%(4) = 7

ia% = 5

FOR i1% = 1 TO 200

i2% = i1% * 10 + 1

GOSUB vich

i2% = i1% * 10 + 3

GOSUB vich

i2% = i1% * 10 + 7

GOSUB vich

i2% = i1% * 10 + 9

GOSUB vich

NEXT i1%

FOR i1% = 1 TO ia% - 1: PRINT a%(i1%); : NEXT i1%: PRINT : PRINT i1%

END

vich:

FOR i3% = 1 TO ia% - 1

i4% = INT(i2% / a%(i3%))

IF i4% * a%(i3%) = i2% THEN GOTO m1

NEXT i3%

a%(ia%) = i2%: ia% = ia% + 1

m1: RETURN

В программе в массив a% заносятся полученные простые целые числа. Первые простые целочисленные значения (2, 3, 5, 7) заносятся в начале работы программы, остальные вычисляются. При проверке числа, является оно простым или нет, выбираются числа, которые оканчиваются на цифры: 1, 3, 7 и 9, так как, если число имеет другое окончание, то оно составное. После этого выбранное число проверяется, имеет ли оно делители или нет в подпрограмме vich. В этой подпрограмме производится деление числа на найденные простые значения из массива a%. Если выбранное число не делится на них без остатка, то оно простое и заносится в массив.

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

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

SCREEN 9: COLOR 14, 7

CLS : COLOR 4, 2

RANDOMIZE TIMER

VIEW (10, 10)-(420, 210)

WINDOW (0, 0)-(1, 1)

DO

a$ = INKEY$

IF a$ <> "" THEN GOTO endpr

LINE (RND, RND)-(RND, RND), RND * 15

LOOP

endpr: END

Конечно, динамику вывода отрезков в книге трудно показать, поэтому лучше набрать текст программы и выполнить ее на компьютере. В данной программе используется оператор VIEW, который позволяет отметить область на экране, в которую будет проводиться вывод информации. Далее оператор указывает в определенной области координаты, по которым будут выводиться данные. Таким образом, в прямоугольник с координатами от (10,10) до (420,210) пикселов будет выводиться информация, координаты которой должны быть от (0,0) до (1,1).

Далее в цикле выводятся отрезки прямых линий, а в случае нажатия на какую-либо клавишу, произойдет выход из программы.

Задачи. 1. Напишите исходный текст программы рисования. Слева на экране установите квадраты с цветовыми заливками, а справа поле, где будет происходить прорисовка фигур. Ввод можно организовать при помощи клавиш на клавиатуре, например, цвет выбирается путем ввод цифр, а клавиши со стрелками - для рисования линий в разных направлениях. Вторым вариантом будет использование мыши для выбора цвета и прорисовки линий.

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

3. Введите в массив вопросы, номера ответов и номер правильного ответа, после чего занесите их в файл. Потом введите данные в массив и, выбирая случайным образом вопросы, выведите их на экран. Пример вопроса: «Как называется воспитатель спортсменов?» и вариантов ответов к нему: «1. Воспитатель, 2. Тренер, 3. Учитель, 4. Преподаватель, 5. Родитель». Выведите на экран рамку с вопросом и ответами на него и дайте возможность вашим друзьям ответить на него. При правильном или неправильном ответах выведите соответствующее сообщение об этом. Выведите общее количество вопросов и правильных ответов.

4. Выведите на экран часы, в которых перемещаются минутная и часовая стрелки. Как вариант, дополните часы секундной стрелкой, а также создайте будильник.

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

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

7. Напишите программу игры в пятнашки. Фишки можно передвигать при помощи клавиатуры.

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

9. Напишите программу, которая перемещает шарик на экране, а при достижении стенок экрана, шарик будет отражаться от них.

10. Напишите программу, которая проводит те же действия, что и программа гашения экрана, например, выводит в произвольном порядке звездочки на экран и их гасит.

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

 

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











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

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


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


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