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

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

&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp Рассмотрим несколько простых примеров на Basic-е. Хотя размер и небольшой , каждая является законченной программой. Я старался, чтобы каждая из них выполняла что то полезное, или обладала элементом развлекательности.
Мне приходилось видеть множество программ, но если экземпляр был интересным, то он обычно был очень большой и сложный для понимания. Если программа была маленькой то обычно она демонстрировала какой то вычислительный алгоритм или метод расчета и была очень скучной. Приведенные примеры, на мой взгляд, лишены указанных недостатков. Любая из них может быть заведена в среду программирования за 10 — 15 минут. Попробуйте что то изменить , внесите в процесс программирования элемент творчества. В этом случае вы более осознанно оцените возможности программы и ее функциональность.
Все программы опробованы в среде программирования QBasic, хотя в других бейсиках тоже должны работать. Я сознательно не использовал в них механизм процедур, так как в этом случае их универсальность теряется.
Итак, начнем.

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

CLS
RANDOMIZE (TIMER)
LOCATE 10, 20: PRINT «УГАДАЙ ГДЕ ШАРИК?»
A = 99 * RND(1)
IF A 66 THEN B = 3 ELSE B = 2
LOCATE 11, 20: PRINT » _ _ _ »
LOCATE 12, 20: PRINT «/ \ / \ / \»
LOCATE 13, 20: PRINT » 1 2 3″
INPUT «ВВЕДИ НОМЕР СТАКАНА «, C
IF C = B THEN PRINT «УГАДАЛ! МОЛОДЕЦ!» ELSE PRINT «НЕ УГАДАЛ! НЕПОВЕЗЛО!»
LOCATE 11, 20: PRINT » »
LOCATE 12, 20: PRINT «\_/ \_/ \_/ »
LOCATE 12, 17 + 4 * B: PRINT «O»

Для целостности программы ее разбор описан ниже.
CLS чистит экран.
Затем генератор случайных чисел перенастраивается числом секунд прошедших с полуночи, а это значит, что генератор гарантированно будет вырабатывать случайные числа.
Выводим заголовок программы, а заодно и подсказку, что требуется от того, кто программу запустил.
Получаем случайное число A в диапазоне от 0 до 99. И в зависимости от того число попало в диапазон до 33, между 33 и 66 или больше 66 выбираем номер стакана в который попал шарик.
Дальше выводим исходную позицию: 3 стаканчика вверх дном для этого три строчки с оператором LOCATE и PRINT.
Затем просим ввести номер стакана, в котором, как предполагает угадывающий находится шарик.
Сравнив номер введенного стакана с тем в котором спрятан шарик, поздравляем или огорчаем испытателя судьбы.
И, наконец, выводим стаканчики в нормальном положении дном вниз с шариком в одном из них.

Читайте также:  Ошибка программирования реквизита 1009 атол недопустимое сочетание реквизитов

КАПЕЛЬ.

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

Комментарии из программы можно исключить, если набирать ее вручную.

REM ПРОГРАММА КАПЕЛЬ
CLS: N = 10 : REM Количество букв-капель которые мы пока не поймали
PRINT «Включи русскую раскладку. Будут падать буквы вводи их.»
PRINT «Если готов нажми клавишу»
REM Пустой цикл ожидания нажатия любой клавиши
DO: LOOP WHILE INKEY$ = «»
REM Цикл общего количества букв, которые нужно будет поймать, нажав клавишу.
FOR K = 1 TO 10
CLS : RANDOMIZE (TIMER) : REM Очистка и настройка генератора случайных чисел.
RUS:
REM Получение случайного числа, которое будет преобразовано в букву.
A = INT(300 * RND)
REM Если буква вне диапазона русских заглавных то загадать число еще раз.
IF A 159 THEN GOTO RUS
REM Получение символа из числа
C$ = CHR$(A)
REM Выбор вертикали по которой будет падать буква
V = RND * 75
REM Цикл падения буквы
FOR I = 1 TO 24
REM поместить ее на верхнюю строчку для I=1 а потом все ниже и ниже
LOCATE I, V: PRINT C$
FOR J = 1 TO 15000: REM Цикл отлова нажатой клавиши.
REM ФАКТИЧЕСКИ НАСТРОЙКА СКОРОСТИ ПАДЕНИЯ БУКВЫ
Q$ = INKEY$: REM Поместить в переменную Q символ нажатой клавиши
REM Если введенный символ совпал, очистить экран
REM Уменьшить кол-во пропущенных букв. Перейти к получению следующей буквы.
IF UCASE$(Q$) = C$ THEN CLS : N = N — 1: GOTO SLED
REM Цикл отлова вводимых с клавиатуры букв.
NEXT J
REM Стереть букву на этой строке для подготовки ее рисования на следующей.
LOCATE I, V: PRINT » »
REM Цикл перемещения буквы вниз
NEXT I
REM Метка, куда переходит программа в случае если буква введена правильно.
SLED:
REM Цикл выбора следующей буквы, а всего их 10.
NEXT K
REM Показать сколько капель пропущено.
LOCATE 5, 10: PRINT «Пропущено капель: «; N

Читайте также:  Wln kd c1 plus программирование

СТРЕЛОЧНЫЕ ЧАСЫ.

А вот еще одно творение. Существует множество программ, которые рисуют на экране цифровые часы . Я и сам их писал, и даже несколько модификаций: на Паскале и VB. Но вот мне попались в какой то книжке стрелочные часы. Завел я этот исходник, получились какие то малюсенькие часики. Попытался я ее модифицировать, но после двух попыток, как сказал один известный комбинатор плюнул на это дело слюной. Сел и минут за 20 написал свои.
Посмотрите на код: он открыт до безобразия. Можете, используя его вычислительный алгоритм, сделать какие угодно часы на каком угодно языке программирования.

REM Включение графического режима
SCREEN 7
REM Проинициализируем начальные точки стрелок, хотя в BASIC это необязательно XS=0:YS=0:XM=0:YM=0:XCH=0:YCH=0
REM Читаем системное время
VREM$ = TIME$
REM Определяем, который сейчас час
Chas = VAL(MID$(VREM$, 1, 2))
REM А если больше 12, то высчитываем насколько больше
IF Chas > 12 THEN Chas = Chas — 12
REM Теперь смотрим, сколько минут прошло с начала часа
Min = VAL(MID$(VREM$, 4, 2))
REM Теперь секунд и превращаем строчку времени в цифры: часы, минуты, секунды
sek = VAL(MID$(VREM$, 7, 2))
REM Нанесение меток часов — 12 штук
FOR I = 0 TO 360 STEP 30
REM Вычисление координат X и Y меток, переводя при этом градусы в радианы
X = 95 * SIN(I / 180 * 3.14)
Y = 95 * COS(I / 180 * 3.14)
REM Учитывая, что исходная точка в левом верхнем углу, да к тому же
REM экран монитора не квадратный, рисуем эти точки
PSET (150 + X, 100 — Y)
NEXT
REM Показ часов, цикл до нажатия клавиши
DO
REM Берем количество секунд, прошедших после полуночи, и добавляем секунду
T = TIMER + 1
REM Ждем пока эта секунда пройдет
Z: IF T > TIMER GOTO Z
REM Ура прошла, добавляем к тем, что уже было еще одну
sek = sek + 1
REM Смотрим если их больше 60, прибавляем минуту, а секунды превращаем в 1
IF sek > 60 THEN sek = 1: Min = Min + 1
REM Теперь уже проверяем количество минут, и делаем то же с часом
IF Min > 60 THEN Chas = Chas + 1
REM Ну и, наконец, с часами, если их больше 12
IF Chas > 12 THEN Chas = 0: sek = 1: Min = 0
REM Выключаем цвет COLOR 0
REM И рисуем черные стрелки по текущим координатам,
REM чтобы затереть их старое положение
LINE (150, 100)-(150 + XS, 100 — YS)
LINE (150, 100)-(150 + XM, 100 — YM)
LINE (150, 100)-(150 + XCH, 100 — YCH)
REM Вычисляем новые положения концов стрелок для секундной, минутной и часовой
XS = 90 * SIN(sek * 6 / 180 * 3.14)
YS = 90 * COS(sek * 6 / 180 * 3.14)
XM = 80 * SIN(Min * 6 / 180 * 3.14)
YM = 80 * COS(Min * 6 / 180 * 3.14)
XCH = 60 * SIN((Chas * 30 + (Min \ 2)) / 180 * 3.14)
YCH = 60 * COS((Chas * 30 + (Min \ 2)) / 180 * 3.14)
REM Включаем цвет, свой для каждой стрелки
COLOR 1
REM Рисуем стрелки из центра в точки, согласно вычисленным координатам
LINE (150, 100)-(150 + XS, 100 — YS)
COLOR 5
LINE (150, 100)-(150 + XM, 100 — YM)
COLOR 7
LINE (150, 100)-(150 + XCH, 100 — YCH)
REM Если никакая клавиша не нажата, цикл показа часов повторяется.
LOOP WHILE INKEY$ = «»

МИНЕР

Еще пример. Нет таких компьютерщиков, которые бы не играли в минера. Есть такая игра: тыкаешь мышью в квадратики, предварительно подумав, конечно, а программа показывает не попал ли на мину и сколько рядом. Моя программа это просто показ, как устроен и для чего может использоваться двумерный массив: матрица. На этом фоне вы пытаетесь определить, куда компьютер запрятал мину на поле 4×4. В этой программе непаханное поле для ее улучшения и модернизации.
Хотите ставьте несколько мин, запускайте поиск пока не найдете, выводите подсказку на каком от указанной клетки мина и так далее.
Хотя здесь и так все ясно, не буду изменять правилу, а оно таково: я все разъясняю очень подробно, кому неинтересно, есть сотни других сайтов о программировании. На этом все для начинающих.
Как часто на уроках информатики, составляя программу для решения задачи вместе с учениками, я слышу подсказки тех, кто уже уловил ее смысл. Но, почему то, на следующем уроке при выполнении самостоятельного задания по аналогичной тематике вдруг возникают ЗАТРУДНЕНИЯ . А это говорит о том, что даже если тебе в программе все ясно, то это еще не означает, что ты сам сможешь сделать что-то похожее.

REM Очистим экран и перенастроим генератор случайных чисел
CLS : RANDOMIZE TIMER
REM Рассказ о том, что здесь происходит
PRINT «КОМПЬЮТЕР СПРЯТАЛ МИНУ НА ПОЛЕ 4X4»
REM Определим переменную — массив
DIM M(4, 4)
REM Определение координат мины
X = INT(RND * 3 + 1)
Y = INT(RND * 3 + 1)
REM Прячем ее на поле, извините, помещаем в массив
M(X, Y) = 1
REM Просим попытаться угадать, где она спрятана, запросив координаты X и Y
INPUT «УКАЖИ КООРДИНАТЫ X,Y»; X, Y
REM Проверяем, найдена мина или нет
IF M(X, Y) = 1 THEN PRINT «УГАДАЛ»: GOTO T
REM Это просто такой способ перехода, можно было бы написать и через ELSE
PRINT «НЕ УГАДАЛ»
REM Метка, куда переходят если угадали
T: REM А мину то все равно нужно показать,
REM что бы никто не думал, что его обманули. Вывод матрицы на экран.
FOR I = 1 TO 4
FOR J = 1 TO 4
PRINT M(I, J); » «;
NEXT J
PRINT
NEXT I

Рассказ о простых и интересных программах будет продолжен , то что я прямо сейчас хотел бы вам предложить составляет больше десятка. А сколько еще в планах! В программирование въезжать нелегко, а потому, чем б ольше различных ситуаций в виде программ будет рассмотрено, тем лучше.

Источник

Оцените статью