Taaaa..."piekna mamy jesień tego lata"...co prawda gdy to czytacie, to rzeczywiście jest juz jesień, ale dla mnie w tej chwili jest środek "lata"...rower stoi w garażu, strój kąpielowy upchnięty głęboko w szafie, a ja witam Was w czwartej części zmagań z QBasiciem - jednym słowem siedzę przy kompie zamiast opalać się na piaszczystej plaży u boku...no dobra, przecież nie o tym miałam pisać. :)) W każdym razie należy Wam się wyjaśnienie. W ostatnim numerze AM nie było kursu Wybaczcie, po prostu sobie wyjechałam. :) Taki..odpoczynek od kompa. :) W każdym razie juz jestem i mogę Wam obiecać, ze taka sytuacja juz się nie powtorzy...no, chyba, ze za pól roku jak sobie pojadę gdzieś na ferie ;)
{Oby, oby :)))}
No, włączyłam czadowa muzylę i teraz zaczynam szalec...czyli: bierzemy się do pracy ludziska!!! :)

Ostatnio obiecałam skończyć pętelki czyż nie? Ano jasne, ze tak ;) a wiec dwie następne bardzo podobne do siebie, różniące się tylko odwrotnością sprawdzanych warunków.

Pętla typu <<<DO WHILE>>>

Pętla ta przydaje się w momencie gdy nie wiemy ile razy procedura będzie musiała być powtórzona. Z samej nazwy pętli (wykonuj dopóki) wynika, iż pętla zakończy powtarzanie procedury w momencie gdy zostanie spełniony określony warunek.

Przykład 1
-------------------------------------------------------
CLS
DO
PRINT "Devi pisze 4 czesc kursu"
INPUT "Jeszcze raz (t/n)"; odp$
LOOP WHILE (odp$ = "T" OR odp$ = "t")
END
-------------------------------------------------------

Pętla typu <<<DO UNTIL>>>

Ta pętla jest bardzo podobna do poprzedniej, jednak warunek zakończenia pętli jest odwrotny (pętla wykonuj dopóki nie).

Przykład 2
-------------------------------------------------------
CLS
DO
PRINT "Devi pisze 4 czesc kursu"
INPUT "Jeszcze raz (t/n)"; odp$
LOOP UNTIL (odp$ = "N" OR odp$ = "n")
END
-------------------------------------------------------

Zapytacie: czym tak właściwie różnią się te dwie pętle? Wyobraźcie sobie, ze musicie powpisywać na listę masę nazwisk i każdemu z nich przypasować jakaś tam dana. Wystarczy wtedy, ze zastosujecie pętle Do WHILE która powtarzać będzie procedurę do momentu wyczerpania się nazwisk. Gdy natomiast napiszecie program/grę gdzie zadaniem użytkownika będzie odgadniecie losowo generowanej liczby pętla typu DO UNTIL powtarzać będzie procedurę do momentu gdy prawidłowa liczba zostanie przez użytkownika podana. Zasadniczo jednak pętlę tę można stosować zamiennie.

Uff, czyżbyśmy uporali się do końca z pętlami? Ano, ano...:)

A teraz pomaltretuję Was czym innym...hehe! :) Taaak, wiem, ze czekacie na grafikę, ale to za miesiąc. Teraz troszke...muzyki! Panie Szlachcianki (chlip, dziewczyny, czemu mnie nie czytacie, czy tylko mnie interesuje QBasic?!?!?), Panowie Szlachta - poloneza czas zacząć!!!

Wiecie, ze Wasz PC ma w swych wnętrznościach wbudowany taki maleńki glośniczek? To on właśnie odgrywa piękna, charakterystyczna symfonie gdy łączycie się z netem. Jeżeli graliście kiedyś w dosowe banalnie proste gry wiecie również, ze może on odegrać całkiem ciekawa melodyjke...ja pamiętam np. melodie z jednej gierki...to był "Skrzypek na dachu". :)
QBasic daje możliwość nakłonienia tego właśnie glośniczka do wydania pojedynczego dźwięku, szeregu dźwięków, melodii...mozecie się nawet pobawić w kompozytorow...no, ale przejdę do konkretów.

***Pojedynczy dzwięk***

Aby komp takowy wydal wystarczy instrukcja BEEP. :) I tyle. :)
Przykładu dawać nie musze prawda?

***Szereg dzwiekow***

Potrzebna jest nam do tego juz inna instrukcja. Jest nią SOUND. Określają ja dwa parametry. Częstotliwość dźwięku (w hercach) i jego dlugość.

%%% WAŻNE %%%


Czestotliwość:
Nuta C (do) - 440 Hz, każde następne C o oktawę niżej to częstotliwość poprzedniego C podzielona przez dwa. Czyli C o oktawę niżej od C = 440 Hz to 220 Hz, następne to 110 Hz, następne 55 Hz itd.

Czas trwania:
Mierzony liczba impulsów zegarowych w czasie trwania dźwięku. Zegar procesora generuje 18,2 impulsu na sekundę, czyli dźwięk o wartości 18 będzie trwał prawie sekundę.

Przykład 3
----------------------------------------------------------
CLS
SOUND 440, 18 'Nuta C trwajaca sekunde
END
----------------------------------------------------------

Aby komp wydal z siebie jakiś przyzwoity szereg dźwięków należy wpisać w jakim przedziale częstotliwości te dźwięki maja być oraz to , czy maja być odegrane wszystkie możliwe dźwięki z podanego przedziału, czy tylko określone.

Przykład 4
----------------------------------------------------------
CLS
PRINT "Generuje szereg dzwiekow"
FOR nuta 440 TO 880 STEP 5
SOUND nuta, 5
NEXT nuta
END
----------------------------------------------------------

FOR nuta 440 TO 880 STEP 5 - podajemy zakres częstotliwości oraz co jaka ilość herców ma następować skok.

***Troche muzyki***

Jak juz wspominałam QBasic daje również możliwość stworzenia własnej melodii. Służy do tego instrukcja PLAY. Dzięki niej możemy z łatwością zakodować jednogłosową melodie.

Tabela 1
-------------------------

L - lenth - długość (jak długo dany dźwięk ma być odtwarzany).
To może być dlugość:

L16 - szesnastki
L4 - ćwierćnuty
L3 - półnuty
L2 - półnuty z kropka
L1 - calej nuty

P - pause - pauza (czas trwania pauzy).
To może być dlugość:

P16 - szesnastki
P4 - ćwierćnuty
P3 - półnuty
P2 - półnuty z kropka
P1 - calej nuty

CDEFGAH - alfabet muzyczny.

< - zmiana oktawy w dół
> - zmiana oktawy w gore

. (kropka) przy nucie wydłuża czas jej trwania o polowe

C2 - liczba przy nucie zmienia jej czas trwania. (Zmiana dotyczy jednak tylko tej konkretnej nuty a nie ciągu nut następujących za nią).

No! Koniec na dziś. Życzę Wam miłego komponowania...aha...i przyślijcie to co stworzyliście, z chęcią posłucham. Oczywiście programy nie mogą być skompilowane, execow nie odpalam. Za miesiąc zaczynamy grafikę.
Z tym odcinkiem macie jeden programik. Przejrzyjcie kod, odpalcie...calkiem ładna syrena mi wyszła. ;) A co do pytan...ostatnio dostałam masę maili z jednym tylko: Jak z *.bas zrobić *.exe. To proste, skompilować program. W edytorze tego zrobić nie można, trza mieć kompilator (heh, w tym przypadku interpreter). Gdzie go znaleźć? W sieci. Jest na większości stron traktujących o QBasicu. :) Poszukajcie, z pewnością znajdziecie.

Ok, pozdrawiam Was serdecznie. Jak zwykle pytania i uwagi ślijcie na adres:

kursqbasic@pf.pl

Devi