Post Reply 
 
Thread Rating:
  • 0 Votes - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
QBasic za apsolutne početnike vol.2
Author Message
Google63 Offline
Novi korisnik
*

Posts: 14
Joined: Mar 2007
Reputation: 3
Post: #1
QBasic za apsolutne početnike vol.2
IF-THEN-ELSE naredbe
Ako znate imalo engleskog, shvatili ste o cemu se radi. IF-THEN-ELSE znaci AKO-ONDA-INACE, dakle imamo posla s uvjetima. Evo jednostavnog primjera za pocetak. Treba nam program koji ce nam reci je li ucitan broj veci od nule.
Code:
CLS
INPUT "Upiši broj: ", x
IF x > 0 THEN PRINT "Je."
Stvarno je jednostavno. Naredbu IF (zadnji red) citamo onako kako je napisano:
Code:
AKO je x veci od nule, ONDA ispiši "Je".
I sad vama cudno... pricalo se o nekom ELSEu... Pa evo vam! Prvom primjeru dodajte da napiše je li veci ili manji od nule.
Code:
CLS
INPUT "Upiši broj: ", x
IF x > 0 THEN PRINT "Je." ELSE PRINT "Nije."
Ovo citate kao i prvi primjer, samo mislim da bolje zvuci kad umjesto INACE kažete A AKO NIJE:
Code:
AKO je x veci od nule, ONDA ispiši "Je", A AKO NIJE (INACE), ispiši "Nije".
A sad zamislite da smo to sve htjeli napisati lijepo: "Broj (taj i taj) je veci od nule" (ili nije). Gledajte:
Code:
CLS
INPUT "Upiši broj: ", x
IF x > 0 THEN PRINT "Broj"; x; "je veci od nule." ELSE PRINT "Broj"; x; "nije veci od nule."
Ajme gužve u jednom redu!!! Zato je bolje pisati u više redova.
Code:
CLS
INPUT "Upiši broj: ", x
IF x > 0 THEN
PRINT "Broj"; x; "je veci od nule."
ELSE
PRINT "Broj"; x; "nije veci od nule."
END IF
Eto, sad je ljepše, jedino morate zapamtiti da, kad pišete u više redova, na kraju mora pisati END IF. Kad pišete u jednom redu, NE SMIJE!!!

Još jedan jednostavan primjer: password. Evo programcica koji kaže je li lozinka ispravna (u ovom primjeru, lozinka je tutorijali.net).
Code:
CLS
INPUT "Password? ", a$
IF a$ = "tutorijali.net" THEN
PRINT "Gogy, vratio si se."
ELSE
PRINT "Ti nisi Gogy."
END IF

Vratimo se sad drugom primjeru. Tamo imamo grešku. Ako upišemo broj 0, program ce napisati da je nula manja od nule!!! Sad nam treba naredba ELSEIF (ne ELSE IF!!!):
Code:
CLS
INPUT "Upiši broj: ", x
IF x > 0 THEN
PRINT "Broj"; x; "je veci od nule."
ELSEIF x < 0 THEN
PRINT "Broj"; x; "nije veci od nule."
ELSE
PRINT "Upisali ste nulu."
END IF

Citamo:
Code:
AKO je x veci od nule, ONDA
ispiši "Je"
INACE, AKO je x manji od nule (odnosno, "AKO nije veci od nule, nego je manji")
ispiši "Nije".
INACE
ispiši "Upisali ste nulu."
KRAJ

Napomena: broj ELSEIF naredbi je neogranicen.


Evo još jednog (stvarno debilnog) primjera koji postoji samo da bi se ljudi zapitali ima li smisla nastaviti s ucenjem programiranja. Uglavnom, program pita pada li kiša i kaže je li potrebno ponjeti kišobran.
Code:
CLS
INPUT "Pada li kiša? ", a$
IF a$ = "Da" THEN
PRINT "Ponesi kišobran."
ELSEIF a$ = "Ne" THEN
PRINT "Nemoj ponijeti kišobran."
ELSE
PRINT "Daj, piši razgovjetnije!!!"
END IF

Ovaj zadnji PRINT je tu jer, ako korisnik napiše "ne" (s malim n), QBasic to nece procitati kao "Ne", i to nece valjat.


CASE naredba
Pogledajte ovaj primjer. Recimo da vam jednom u nekom programu za rad s datumima zatreba dio programa koji ce ispisivati hrvatski naziv mjeseca (a poznat je redni broj):
Code:
CLS
INPUT "Broj mjeseca: ", x

IF x = 1 THEN
PRINT "Sijecanj"
ELSEIF x = 2 THEN
PRINT "Veljaca"
ELSEIF x = 3 THEN
PRINT "Ožujak"
ELSEIF x = 4 THEN
PRINT "Travanj"
ELSEIF x = 5 THEN
PRINT "Svibanj"
ELSEIF x = 6 THEN
PRINT "Lipanj"
ELSEIF x = 7 THEN
PRINT "Srpanj"
ELSEIF x = 8 THEN
PRINT "Kolovoz"
ELSEIF x = 9 THEN
PRINT "Rujan"
ELSEIF x = 10 THEN
PRINT "Listopad"
ELSEIF x = 11 THEN
PRINT "Studeni"
ELSEIF x = 12 THEN
PRINT "Prosinac"
ELSE
PRINT "Taj mjesec ne postoji."
END IF

Puno pisanja, jel'da? Za to služi CASE naredba. Najbolje cete skužiti na primjeru, pa evo vam isto ovo pomocu naredbe CASE:
Code:
CLS
INPUT "Upiši broj mjeseca: ", x

SELECT CASE x
CASE 1
PRINT "Sijecanj"
CASE 2
PRINT "Veljaca"
CASE 3
PRINT "Ožujak"
CASE 4
PRINT "Travanj"
CASE 5
PRINT "Svibanj"
CASE 6
PRINT "Lipanj"
CASE 7
PRINT "Srpanj"
CASE 8
PRINT "Kolovoz"
CASE 9
PRINT "Rujan"
CASE 10
PRINT "Listopad"
CASE 11
PRINT "Studeni"
CASE 12
PRINT "Prosinac"
CASE ELSE
PRINT "Taj mjesec ne postoji."
END SELECT

Manje texta, preglednije, lakše za copy/paste... Znaci, na pocetku naredbe ide:
SELECT CASE varijabla

Poslije toga za svaku vrijednost:
CASE vrijednost
(vrijednost može biti i niz slova, onda se to stavlja u navodnike i treba biti $ poslije varijable)

Umjesto ELSE:
Code:
CASE ELSE

I na kraju:
Code:
END SELECT

GOTO naredba
GOTO se sastoji do dvije riječi: GO TO (ko bi reko!), odnosno IDI NA. Služi za preskakanje dijela kôda ili vraćanje nazad, ali nema neku pretjeranu primjenu. Mislim da se svako korištenje naredbe GOTO može napisati na drugačiji način (bilo grananjem, petljama...). Uglavnom, na početku jednog reda se napiše broj, a kad bilo gdje u programu bude napisano GOTO taj broj, QBasic se vraća nazad ili preskače kôd do linije na čijem je početku taj broj. (sad sam ga malo zakomplicirao, al skužit ćete.)
Primjer: program upisuje brojeve dok se ne upiše nula. Onda ispiše zbroj svih upisanih brojeva:
Code:
CLS
zbroj = 0

20 INPUT "Upiši broj: ", x

IF x = 0 THEN
GOTO 10
ELSE
zbroj = zbroj + x
GOTO 20
END IF

10 PRINT zbroj

Znači, kad QBasic dođe na GOTO 10, on ode na 10, odnosno, izvrši naredbu PRINT zbroj. Onda ide dalje, a dalje nema ništa, pa je program gotov.
Kad dođe na GOTO 20, ode na 20, odnosno, vrati se na INPUT, izvrši ga i ide dalje, na naredbu IF.
Isprobavajte, pa ćete skužiti.


Matematika i logika
Uskoro će vam trebati neke žešće matematičke operacije (i funkcije itd.) osim +, -, *, /, <, > i =. Evo vam pregled svih za koje se sad mogu sjetiti.
Code:
+, -, *, /, =
--- to znate
Code:
<, >
--- manje od, veće od
Code:
<=, >=, <>
--- manje ili jednako, veće ili jednako, nejednako
Code:
MOD
--- daje ostatak pri dijeljenju.
13 MOD 5 = 3
(13 / 5 = 2 i ostatak 3)
Code:
ABS
--- daje apsolutnu vrijednost broja.
ABS(-5) = 5
(matematički napisano: |-5| = 5)
Code:
^ ([ALT] + [94])
--- exponencija.
2 ^ 3 = 8
Code:
SQR
--- kratica od square root – kvadratni korijen
SQR(16) = 4
Code:
SIN, COS, TAN
--- daje sin, cos i tan nekog kuta U RADIJANIMA.
COS(pi) = -1

Napomene:
- Da biste pretvorili stupnjeve u radijane, pomnožite stupnjeve sa (pi / 180).
SIN(90 * (pi / 180)) = 1
- kad radite s brojem pi, bilo bi dobro da na početku programa napišete
pi = 3.141592654
Code:
EXP
--- e na n-tu.
EXP(1) = 2.718281828
Code:
LOG
--- limes.
LOG(EXP(1)) = 1
Code:
INT
--- zaokružuje na prvi manji cijeli broj
INT(5.76) = 5
INT(-5.2) = -6
Code:
FIX
--- miče decimalni dio broja
FIX(1.8) = 1
FIX(-5.2) = -5
Code:
CINT
--- zaokružuje na najbliži cijeli broj
CINT(2.9) = 3
CINT(-2.2) = -2
CINT(2.5) = 2
Bilo bi dobro da ovo imate uz sebe stalno (dobro, ne stalno, samo kad programirate!!!). Pa si ovo isprintajte.


Logički operateri (tako ih svi zovu, nemam pojma šta točno znači "operater", i nije važno) su male riječi koje nam pomažu u nekim stvarima. Prvo pregled, onda primjer. Dobro ga proučite.
Code:
AND - i
obje strane moraju biti istinite
Code:
OR - ili
bar jedna strana mora biti istinita
Code:
XOR
jedna strana mora biti istinita, ali ne i druga.
(iskreno, ovo nikad nisam koristio)

Primjer:
Code:
x = 2
y = 7
IF x = 2 AND y > 5 THEN PRINT "Da." ELSE PRINT "Ne.";
IF x = 3 AND y > 5 THEN PRINT "Da." ELSE PRINT "Ne.";
IF x <> 3 AND y >= 5 THEN PRINT "Da." ELSE PRINT "Ne."

IF x = 3 OR y > 5 THEN PRINT "Da." ELSE PRINT "Ne.";
IF x = 2 OR y = 5 THEN PRINT "Da." ELSE PRINT "Ne.";
IF x = 1 OR y = 5 THEN PRINT "Da." ELSE PRINT "Ne."

IF x => 2 XOR y = 5 THEN PRINT "Da." ELSE PRINT "Ne.";
IF x > 2 XOR y = 7 THEN PRINT "Da." ELSE PRINT "Ne.";
IF x = 2 XOR y < 8 THEN PRINT "Da." ELSE PRINT "Ne."


Ispis:
Code:
Da. Ne. Da.
Da. Da. Ne.
Da. Da. Ne.



Evo vam i zadaci: http://rapidshare.com/files/28070232/QB2z.zip.html
26-04-2007 08:27 PM
Find all posts by this user Quote this message in a reply
stefo Offline
Forumaš
***

Posts: 443
Joined: Jun 2006
Reputation: 3
Post: #2
RE: QBasic za apsolutne početnike vol.2
meni je qbasic primitivan

Kako kokoshka abortira? Snese jaje na beton.

http://www.stefosimple.co.nr - nekad bilo, sad se spominjalo :(
26-04-2007 09:18 PM
Find all posts by this user Quote this message in a reply
hurmash1ca Offline
Forum policeman
*

Posts: 516
Joined: Jun 2006
Reputation: 9
Post: #3
RE: QBasic za apsolutne početnike vol.2
congrats, svaka cast sto si imo zivaca da pises :)

RTFM!
26-04-2007 09:33 PM
Visit this user's website Find all posts by this user Quote this message in a reply
Morrissey Offline
Forumaš
***

Posts: 691
Joined: Mar 2007
Reputation: 13
Post: #4
RE: QBasic za apsolutne početnike vol.2
svaka čast na tutorialu(pisanju) ali prog. jezik QBasic no comment
26-04-2007 09:48 PM
Find all posts by this user Quote this message in a reply
schmrz Offline
____
*

Posts: 567
Joined: Feb 2007
Post: #5
RE: QBasic za apsolutne početnike vol.2
Daj popustite covjeka da pise...

Cestitam!
26-04-2007 10:02 PM
Find all posts by this user Quote this message in a reply
Google63 Offline
Novi korisnik
*

Posts: 14
Joined: Mar 2007
Reputation: 3
Post: #6
RE: QBasic za apsolutne početnike vol.2
ma znam da se vama koji već programirate php,c++... neće ovo sviđati(npr. Gogy ,njega znam[bez uvrede])ali oni koji su tek počeli i hoču se upustiti u Programerske vode njima če ovo biti zanimljivo i možda baš krenu od qbasic-a. Palac-gore
btw. još ću napisati 2 djela
26-04-2007 10:46 PM
Find all posts by this user Quote this message in a reply
Morrissey Offline
Forumaš
***

Posts: 691
Joined: Mar 2007
Reputation: 13
Post: #7
RE: QBasic za apsolutne početnike vol.2
nije sad da pametujemo ali želimo samo savjetovati ljude što da prvo počnu učiti jer npr
ovdje možeš naučit osnove ali to nije to jer kad ideš progrmairati ozbiljniji jezik ti češ početi totalno iz početka,ovo ti ništa neče pomoći onda,php je skriptni jezik btw...
tako sam se ja zeznuo kaj sam učio PAscal i VB,sad sam se priviknuo na profesionalne jezike poput c# i c++ i mogu reći da je stvarno bolje i nikad se ne može sve naučiti
i ne kažem da je njegovo pisanje tutorijala uzaludno,dapače,tko voli nek izvoli,i to je početak
26-04-2007 10:56 PM
Find all posts by this user Quote this message in a reply
schmrz Offline
____
*

Posts: 567
Joined: Feb 2007
Post: #8
RE: QBasic za apsolutne početnike vol.2
Kazes da je C# profesionalan, a VB .NET nije... Ajd' de nam reci zasto je to tako...

Bilo da programiras u VB .NET-u, C#, C++, Assembleru nikad ne mozes sve naucit... Oni koji kazu da znaju sve, ne znaju nista.
27-04-2007 02:45 PM
Find all posts by this user Quote this message in a reply
Morrissey Offline
Forumaš
***

Posts: 691
Joined: Mar 2007
Reputation: 13
Post: #9
RE: QBasic za apsolutne početnike vol.2
kao prvo..

gdje sam igdje u postu spomenuo VB .NET..ako sve tako ljepo znaš onda sigurno znaš da Visual BAsic i VB .NET nisu ista stvar

drugo,zašto .NET platforma,zato jer se danas svaka aplikacija programira tim frameworkom
a zašto ne ovi pratsari prog jezcii,ljepo,jer nečeš tako naučiti objektno orijentirano programiranje nikad gdje .NET dolazi u punu prednost.
(This post was last modified: 27-04-2007 04:35 PM by Morrissey.)
27-04-2007 04:32 PM
Find all posts by this user Quote this message in a reply
schmrz Offline
____
*

Posts: 567
Joined: Feb 2007
Post: #10
RE: QBasic za apsolutne početnike vol.2
Morrison Wrote:kao prvo..

gdje sam igdje u postu spomenuo VB .NET..ako sve tako ljepo znaš onda sigurno znaš da Visual BAsic i VB .NET nisu ista stvar

drugo,zašto .NET platforma,zato jer se danas svaka aplikacija programira tim frameworkom
a zašto ne ovi pratsari prog jezcii,ljepo,jer nečeš tako naučiti objektno orijentirano programiranje nikad gdje .NET dolazi u punu prednost.

Prije svega zamolio bih te da malo bolje formuliras svoje recenice.

Ja ne znam sve, ja znam ono sto je meni potrebno. Ne zelim da neko misli da se "razbacujem" sa svojim znanjem.

Ako neko zeli da programira, a mlad je (7-10g), treba da pocne sa QBasic-om je ce nauciti temelje programiranja, a onda treba da prede na neki drugi, "napredniji" programski jezik. Nakon QBasic-a je nevjerovatno lako preci na Visual Basic, a zatim i na Visual Basic .NET.

Temeljno ucenje programiranja, pogotovo samostalno bez knjiga je najbolji nacin ucenja programiranja.

Decko je zelio da napise tutor, da podijeli svoje znanje sa drugima. Ako se tebi ne svida njegov tutor, nemoj ga citati. Vrlo jednostavno!
27-04-2007 06:27 PM
Find all posts by this user Quote this message in a reply
Post Reply 


Forum Jump:


User(s) browsing this thread: 1 Guest(s)