Програми на BASIC
         Нека да разгледаме няколко прости основни примера. Въпреки че саголеми и малки, всяка езавършена програма.Опитах се да накарам всяка от тях да направи нещо полезно или да има елемент на забавление. Виждал съм много програми, но ако даден пример еинтересен,обикновено е многоголям и труденза разбиране. Ако програмата бешемалка, тогава тя обикновено демонстрира някакъв вид изчислителен алгоритъм или метод за изчисление и бешемного скучна.Дадените примери според мен нямат тези недостатъци. Всеки от тях може да бъде въведен в средата за програмиране за 10 - 15 минути.Опитайте се да промените нещо,добаветекъм процеса на програмиранеелемент на творчество.В този случай вие ще оцените по-съзнателно възможностите на програмата и нейната функционалност. Всички програми са тествани всредата за програмиране QBasic, въпреки че трябва да работят и в други BASIC.Умишлено не използвах механизма на процедурите в тях, тъй като в този случай се губи тяхната универсалност. И така, нека да започнем.
Кой не е виждал на живонапръстници-измамници, но ето програма, която крие топката в чаша, само чечестно я показваи ако сте познали, ще ви похвали. Има възможност за работа с тази програма.Обърнете, например, само чаша с балон, увеличете или намалете броя на чашите.
CLS СЛУЧАЙНО РАЗМЕЩАНЕ (ТАЙМЕР) НАМИРАНЕ 10, 20: ПЕЧАТ „ПОЗНАЙТЕ КЪДЕ Е ТОПКАТА?“ A = 99 * RND(1) АКО A 66 THEN B = 3 ELSE B = 2 НАМЕРЕТЕ 11, 20: ПЕЧАТ "_ _ _" НАМЕРЕТЕ 12, 20: ПЕЧАТ "/ \ / \ / \" НАМЕРЕТЕ 13, 20: ПЕЧАТ " 1 2 3" ВЪВЕДЕТЕ "ВЪВЕДЕТЕ НЯМА МЯРКА ЗА ЧАША", C АКО C = B ТОГАВАПЕЧАТ "ПОЗНАТО! БРАВО ПРИЯТЕЛ!" ELSE PRINT "ПРОКЛЕТО ПРЕДПОСТАНА! КЪСМЕТЛИК!" НАМЕРЕТЕ 11, 20: ПЕЧАТА " " НАМЕРЕТЕ 12, 20: ПЕЧАТЕТЕ "\_/ \_/ \_/ " НАМЕРЕТЕ 12, 17 + 4 * B: ПЕЧАТЕТЕ "O"
За целостта на програмата нейният анализ е описан по-долу.CLS изчиства екрана. След това генераторът на произволни числа се нулира с броя секунди от полунощ, което означава, че генераторът гарантира, че ще генерира произволни числа. Показваме заглавието на програмата и в същото време съвет, който се изисква от този, който е стартирал програмата. Получаваме произволно число А в диапазона от 0 до 99. И в зависимост от това дали числото е в диапазона до 33, между 33 и 66 или повече от 66, избираме номера на чашата, в която е попаднала топката. След това показваме първоначалната позиция: 3 чаши с главата надолу за това, три реда с изразите LOCATE и PRINT. След това ви молим да въведете номера на чашата, в която, както предполага предполагаемият, се намира топката. Сравнявайки номера на въведената чаша с тази, в която е скрита топката, ние поздравяваме или наскърбяваме изпитателя на съдбата. Накрая изваждаме чашите в нормално положение обърнати с главата надолу с топка в една от тях.
КАПКИ.Има огромен брой клавиатурни симулатори, които са изградени на принципа на падащи букви, докато буквата пада, трябва да я натиснете върху клавиатурата. Защо не напишем наш собствен симулатор на Kapel. Казано, сторено.В тази програма можете да промените броя на буквите, т.е. опитите за улавяне на буква, скоростта на падане, българската азбука или друга и много повече, превръщайки проста програма в истинска програма с много различни режими.
Коментари от програмата могат да бъдат изключени чрез ръчно въвеждане.
REM DROPS ПРОГРАМА CLS: N = 10 : REM Брой букви, които все още не сме уловили ПЕЧАТ „Включетебългарско оформление. Буквите ще паднат и ги въведете." PRINT "Ако сте готови, натиснете клавиш" REM Празен цикъл в очакване за натискане на който и да е клавиш DO: LOOP WHILE INKEY$ = "" REM Цикл от общия брой букви, които трябва да бъдат уловени чрез натискане на клавиш. FOR K = 1 ДО 10 CLS : RANDOMIZE (TIMER) : REM Clear RUS: REM Вземете произволно число, което ще бъде преобразувано в буква A = INT(300 * RND) REM Ако буквата е извън обхвата на българските главни букви, тогава познайте числото отново IF A 159 THEN GOTO ENG REM Вземете знак от числото C$ = CHR$(A) REM Изберете вертикала по която ще падне буквата V = RND * 75 REM Loop drop letter FOR I = 1 TO 24 REM го поставете на горния ред за I=1 и след това все по-надолу LOCATE I, V: PRINT C$ FOR J = 1 TO 15000: REM Loop catch натиснат клавиш REM АКТИВНО ЗАДАВА СКОРОСТ НА ОТПУСКАНЕ НА БУКВАТА Q $ = INKEY$: R EM Поставете знака на натиснатия клавиш в променлива Q REM Ако въведеният знак съвпада, изчистете екрана REM Намалете броя на липсващите букви. Продължете напред, за да получите следващата буква. АКО UCASE$(Q$) = C$ THEN CLS : N = N - 1: GOTO SLED REM Цикъл за улавяне на букви, въведени от клавиатурата. СЛЕДВАЩ J REM Изтрийте буква на този ред в подготовка за начертаването й на следващия. LOCATE I, V: PRINT " " REM Цикъл за преместване на буквата надолу NEXT I REM Етикетът, към който програмата скача, ако буквата е въведена правилно. SLED: REM Цикъл за избор на следващата буква, има общо 10. NEXT K REM Покажете колко капки са пропуснати. НАМЕРЕТЕ 5, 10: ПЕЧАТ "Пропуснати капки: "; н
ЧАСОВНИК.Ето още едно творение. Има много програми, които рисуват на екранацифров часовник. Написах ги сам и дори няколкомодификации: в Pascal и 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 броя ЗА I = 0 ДО 360 СТЪПКА 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 > ТАЙМЕР 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 ТОГАВА Chas = 0: sek = 1: Min = 0 REM Изключете цвета COLOR 0 REM И начертайте черни стрелки в текущите координати, REM, за да презапишете старата им позиция LINE (150, 100)-(150 + XS, 100 - YS) LINE (150, 100)-(150 + XM, 10 0 - 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) 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, 1) 00)-(150 + XCH, 100 - YCH) REM Ако не е натиснат клавиш, цикълът на часовника се повтаря. LOOP WHILE INKEY$ = ""
MINERОще един пример. Няма компютърни специалисти, коитоне биха играли на миньор.Има такава игра: бъркате с мишката в квадратчетата, след като помислите, разбира се, и програмата показва дали сте ударили мина и колко са наблизо. Моята програма простопоказва какработи и за какво може да се използвадвуизмерен масив: матрица.На този фонвие се опитвате да определите къде компютърът е скрил минана поле 4x4. Тази програма има необработено поле за нейното усъвършенстване и модернизиране.Ако искате да зададете няколко мини, стартирайте търсенето, докато не ги намерите, покажетеподсказка коя моя от посочената клетка и т.н.Въпреки че тук всичко е ясно, няма да променя правилото, но е следното: обяснявам всичко много подробно, за тези, които не се интересуват, има стотици други сайтове за програмиране. Това е всичко за начинаещи.Колко често в уроците по информатика, когато създавам програма за решаване на задача заедно с учениците, чувам намеци от тези, които вече са схванали нейния смисъл. Но по някаква причина в следващия урок, когато изпълнявате самостоятелна задача на подобна тема, изведнъж възникват ТРУДНОСТИ. И това предполага, че дори всичко да ви е ясно в програмата, това не означава, че вие сами можете да направите нещо подобно.REM Изчистете екрана и нулирайте генератора на произволни числа CLS : RANDOMIZE TIMER REM Кажете ни какво се случва тук PRINT "COMPUTER HID A MINE IN A 4X4 FIELD" REM Дефинирайте променлива - масив DIM M(4, 4) REM Намерете координатите на мината X = INT( RN D * 3 + 1) Y = INT(RND * 3 + 1) REM Скрийте го в полето, съжалявам, поставете го в масив M(X, Y) = 1 REM Моля, опитайте се да отгатнете къде е скрит, като поискате координати X и Y ВЪВЕДЕТЕ „СПЕЦИФИРАЙТЕ КООРДИНАТИ X,Y“; X, Y REM Проверка дали мина е намерена или не IF M(X, Y) = 1 THEN PRINT "GUESSED": GOTO T REM Това е точно такъв метод на преход, може да се запише чрез ELSE PRINT "NO GUESSED" REM Етикетът, където отивате, ако сте познали T: REM И все пак трябва да покажете мината, REM каквото и да не мисли никой бил е измамен. Показване на матрицата на екрана. ЗА I = 1 ДО 4 ЗА J = 1 ДО 4 PRINT M(I, J); " "; СЛЕДВАЩ J ПЕЧАТ СЛЕДВАЩ I
Историята за прости и интересни програми ще бъде продължена, това, което бих искал да ви предложа в момента, е повече от дузина. И колко още са планирани! В програмиранетоне е лесно да се въведе и следователноколкото повече различни ситуациипод формата на програмище бъдат разгледани, толкова по-добре.