napredni qbasic

31
Ljubinko Vidanović, prof. NAPREDNO NAPREDNO PROGRAMIRANJE PROGRAMIRANJE QBASIC QBASIC

Upload: fejza

Post on 31-Dec-2015

136 views

Category:

Documents


10 download

TRANSCRIPT

Page 1: napredni QBASIC

Ljubinko Vidanović, prof.

NAPREDNO NAPREDNO PROGRAMIRANJEPROGRAMIRANJE

QBASICQBASIC

NAPREDNO NAPREDNO PROGRAMIRANJEPROGRAMIRANJE

QBASICQBASIC

Page 2: napredni QBASIC

ZADATAK• Zadatak je neki problem koji moramo riješiti.• Da bi neki zadatak uspješno riješili moramo ga

dobro proučiti.• Nakon toga trebamo napraviti plan rješavanja

zadatka.• Ako je zadatak složeniji, moramo ga rastaviti

na manje dijelove, te svaki pojedinačno riješiti.

• Postoje trivijalni i netrivijalni zadaci (rješenja).

Page 3: napredni QBASIC

ALGORITAMAlgoritam je načelno rješenje nekog konkretnog

problema (zadatka). ili Razrada postupka rješenja određenog problema

nazivamo algoritam.• - algoritam je i određeni recept za pripremu jela• - nastavna priprema• - turistički plan obilaska neke zemlje • - putanja kretanja po ulicama kroz grad• -putanja kretanja od mjesta do mjesta• -itd.

Page 4: napredni QBASIC

DIJAGRAM TOKA• Dijagram toka je algoritam napisan u

grafičkom obliku i koristi se standardnim grafičkim simbolima.

• Dijagram toka se naročito preporuča kad se rješavaju složeni zadaci iz programiranja.

• Dijagram toka – dijagram tijeka.

Page 5: napredni QBASIC

OSNOVNI SIMBOLIDIJAGRAMA TOKA

• Početak i kraj

• Unos podataka

• Obrada podataka

• Ispis podataka

• Odlučivanje

• Poveznice

Page 6: napredni QBASIC

PROGRAMSKI JEZIKQBASIC

• Programski jezik BASIC (Beginner´s All-purpose Symbolic Instruction Code)

• QBASIC = QuickBASIC (Microsoft)• Viši programski jezik namijenjen

programerskim početnicima• Lak prijelaz s QBASIC-a na neki drugi

programski jezik (npr. PASCAL,C++, COBOL, …..)

Page 7: napredni QBASIC

1. ZADATAK • Napiši program koji će na zaslonu

ispisati sve prirodne neparne brojeve od 1 do 100.

• Brojevi trebaju biti ispisani jedan iza drugoga.

• 1 3 5 7 9 …………..95 97 99

Page 8: napredni QBASIC

DIJAGRAM TOKA ZADATAK 1.

X=1

X < 100

X

X =X + 2

POC

KRAJ

NE

DA

Page 9: napredni QBASIC

1. RJEŠENJE

• CLS• FOR x = 1 TO 100 STEP 2• PRINT x;• NEXT• END

Page 10: napredni QBASIC

2. ZADATAK Upiši peteroznamenkasti broj. Ispiši sve znamenke

upisanog broja jednu ispod druge te nakon dva preskočena retka njihov zbroj. Pogledaj ulaz i izlaz.

• Primjer:• ulaz izlaz• 23402 2 • 3 • 4• 0• 2 • -----• 11

Page 11: napredni QBASIC

ALGORITAM ZADATAK 2.

obriši zaslon• upiši peteroznamenkasti broj• pretvori upisani broj u string varijablu

(alfanumerik) • petlju izvrši pet puta• na zaslon ispiši od prve do pete znamenke• jednu po jednu znamenku, svaku u svoj red• pretvori znamenku u broj i dodaj u zbroj• kraj petlje• preskoči dva reda i nacrtaj crtu• na zaslon ispiši zbroj svih znamenki

Page 12: napredni QBASIC

2. RJEŠENJE

• CLS• INPUT ”Upiši peteroznamenkasti broj: ”, a• a$ = LTRIM$(STR$(a))• FOR x = 1 TO LEN(a$)• PRINT MID$(a$, x, 1)• zbr = zbr + VAL(MID$(a$, x, 1))• NEXT• PRINT• PRINT ”___”• PRINT zbr• END

Page 13: napredni QBASIC

3. ZADATAK Napiši program koji će dopustiti upis

peteroznamenkastog broja. Napravi kontrolu da broj znamenki ne bude veći ili manji od 5. Ako je veći ili manji od 5, treba napisati poruku „Ponovite upis.” i omogućiti upis novog broja. Kada se upiše peteroznamenkasti broj, treba zbrojiti taj broj s brojem napisanim pomoću istih znamenki obrnutim redom.

• Primjer:• ulaz izlaz• 23579 23579• + 97532• -----------• 121111

Page 14: napredni QBASIC

ALGORITAM ZADATAK 3.

obriši zaslon• upiši peteroznamenkasti broj• provjeri logičku kontrolu na 5 znamenki• pretvori upisani broj u string varijablu (alfanumerik) • petlju izvrši pet puta• prebaci iz upisanog broja u novi string od pete do prve

znamenke• kraj petlje• na zaslon ispiši upisan broj• na zaslon ispiši dobiveni broj (obrnuti)• na zaslonu nacrtaj crtu ispod brojeva• zbroj ta dva broja ispiši na zaslonu

Page 15: napredni QBASIC

3. RJEŠENJE • CLS• start:• INPUT ”Upiši peteroznamenkasti broj: ”, a• a$ = LTRIM$(STR$(a))• IF LEN(a$) < > 5 THEN GOTO start• FOR x = LEN(a$) TO 1 STEP -1• b$ = b$ + MID$(a$, x, 1)• NEXT• PRINT ” ”; a$• PRINT ”+”; b$• PRINT ”--------”• PRINT VAL(a$) + VAL(b$)• END

Page 16: napredni QBASIC

4. ZADATAK• Upiši jedno jednodimenzionalno

polje x od 15 brojeva. Izrazi:• najveći broj i njegovu poziciju u

polju,• najmanji broj i njegovu poziciju u

polju.– 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15X

Page 17: napredni QBASIC

4. RJEŠENJE• CLS• DIM x(15)• DIM p(15)• FOR y = 1 TO 15• INPUT ”Broj > ”, x(y)• p(y) = y• NEXT• FOR c = 1 TO 15• FOR cc = 1 TO 15• IF x(c) < x(cc) THEN SWAP x(c), x(cc): SWAP p(c), p(cc)• NEXT• NEXT• PRINT x(1); p(1)• PRINT x(15); p(15)• END

Page 18: napredni QBASIC

5. ZADATAK Kuća ima 4 stana na svakom katu. Broj katova može

biti od 1 do 7. Nakon upisa broja katova (1-7) stanove treba popuniti velikim slovima naše abecede počevši od najvišeg kata i ispisati ih na zaslonu.

• Primjer: za 3 kata• A B C Č• Ć D Đ DŽ• E F G H• Nakon upisa slova jednog stanara treba ispisati sve

njegove susjede gore, dolje, lijevo i desno.

• Primjer: stanar D Primjer: stanar A• susjedi: B, F, Ć, Đ susjedi: B, Ć

Page 19: napredni QBASIC

5. RJEŠENJE • CLS• INPUT ”Upiši broj katova (1-7): ”, n• DIM a$(n, 4)• FOR x = 1 TO n• FOR y = 1 TO 4• READ b$• a$(x, y) = b$• NEXT• NEXT• DATA

”A”,”B”,”C”,”Č”,”Ć”,”D”,”Đ”,”DŽ”,”E”,”F”,”G”,”H”,”I”,”J”,”K”,”L”

• DATA ”LJ”,”M”,”N”,”NJ”,”O”,”P”,”R”,”S”,”Š”,”T”,”U”,”V”,”Z”,”Ž”

Page 20: napredni QBASIC

NASTAVAK 5. ZADATKA• REM Ispis svih stanara• FOR x = 1 TO n• FOR y = 1 TO 4• PRINT a$(x, y); ” ”;• NEXT• PRINT• NEXT• INPUT ”Upiši stanara: ”, s$• REM Traženje stanara• FOR x = 1 TO n• FOR y = 1 TO 4• IF s$ = a$(x, y) THEN GOTO van• NEXT• NEXT

Page 21: napredni QBASIC

NASTAVAK 5. ZADATKA

• van:• REM Ispis susjeda od zadanog stanara• IF x > 1 THEN PRINT a$(x - 1, y);• IF x < n THEN PRINT a$(x + 1, y);• IF y > 1 THEN PRINT a$(x, y - 1);• IF y < 4 THEN PRINT a$(x, y + 1);• END

Page 22: napredni QBASIC

ZADATAKTRIMETE

Page 23: napredni QBASIC

ALGORITAM Glavnog

programaTRIMETE

• obriši zaslon• postavi grafički zaslon 640 x 480• postavi varijablu x na 120. stupac• postavi varijablu y na 240. redak• petlju izvrši tri puta• pričekaj jednu sekundu• pozovi potprogram nacrtaj• postavi radijus kružnice na nulu• postavi boju kružnice na nulu• povećaj stupac x za 200• kraj petlje

Page 24: napredni QBASIC

Glavni program TRIMETE

• DECLARE SUB nacrtaj (x!, y!, r!, c!)• CLS• SCREEN 12• x = 120• y = 240• FOR i = 1 TO 3• SLEEP 1• CALL nacrtaj(x, y, r, c)• r = 0• c = 0• x = x + 200• NEXT i

Page 25: napredni QBASIC

ALGORITAM Potprogram nacrtaj

• preuzmi varijable x, y, r i c• petlju izvrši deset puta• povećaj radijus r za 10• povećaj boju kružnice c za 1• nacrtaj kružnicu• kraj petlje• kraj potprograma

Page 26: napredni QBASIC

Potprogram nacrtaj• SUB nacrtaj (x, y, r, c)• FOR j = 1 TO 10• r = r + 10• c = c + 1• CIRCLE (x, y), r, c• NEXT• END SUB

Page 27: napredni QBASIC

ZADATAKNACRTATI STRUKTURNU

FORMULU ALKANA

Page 28: napredni QBASIC

Napiši program u QBASIC-u koji će omogućiti upis broja atoma ugljika (C) nekog alkana.

Upisani broj ne smije biti manji od 1 i veći od 10.

Nakon upisa broja atoma ugljika na zaslonu nacrtati strukturnu formulu alkana.

Page 29: napredni QBASIC

DECLARE SUB ugljik (r!, s!)CLSpoc:INPUT "Upiši broj atoma ugljika (C) u alkanu: ", cIF c < 1 OR c > 10 THEN PRINT "Pogrešan upis!" GOTO pocEND IFREM r = redak , s = stupacr = 10s = 10LOCATE r, sPRINT "H -";FOR x = 1 TO c LOCATE r, s s = s + 4 CALL ugljik(r, s)NEXT xs = s + 2LOCATE r, sPRINT "- H"END

Glavni program

Page 30: napredni QBASIC

SUB ugljik (r, s) r = r - 2LOCATE r, sPRINT "H"r = r + 1LOCATE r, sPRINT "|"r = r + 1LOCATE r, sPRINT "C -"r = r + 1LOCATE r, sPRINT "|"r = r + 1LOCATE r, sPRINT "H"r = r - 2END SUB

Potprogram

Page 31: napredni QBASIC

KRAJ