programiranje_-_qbasic

44
PROGRAMIRANJE - QBASIC U prethodnom poglavlju već je rečeno da je izbor jezičkog procesora - alata za programiranje, jedna od faza razvoja programske potpore. Koji izabrati? Izbor je vrlo širok. Prvo treba razlučiti da li će se programski proizvod koristiti na jednoj ili više platformi odnosno hoće li se izvršavati u: DOS okruženju Windows okruženju Unix okruženju Specifičnom okruženju ili na nekom od drugih okruženja, ili pak mora zadovoljiti rad na više okruženja. Potom po izboru platforme treba izabrati onaj jezički procesor koji će pružiti mogućnost izrade programske potpore po svim potrebnim zadanim elementima, na primjer da se izvršava u Windows XP okruženju, omogućava dostup vlastitim bazama podataka ili može pristupiti bazama podataka drugih proizvođača, ima potporu za pristup podacima na nekom poslužitelju preko Interneta i slično. Dobar izbor za Windows XP platformu bio je na primjer 'Borland Delphi Studio', firme Borland Software Corporation, dostupan kao četiri različita proizvoda za izradu programske potpore i to: delphi_personal delphi_professional delphi_enterprise delphi_architect Tehnički kriteriji potrebiti za ovaj programski paket su: o Intel Pentium 233 MHz or higher

Upload: velaxsa

Post on 15-Oct-2014

81 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: PROGRAMIRANJE_-_QBASIC

PROGRAMIRANJE - QBASICU prethodnom poglavlju već je rečeno da je izbor jezičkog procesora - alata za

programiranje, jedna od faza razvoja programske potpore. Koji izabrati? Izbor je vrlo širok. Prvo treba razlučiti da li će se programski proizvod koristiti na jednoj ili više platformi odnosno hoće li se izvršavati u:

DOS okruženju Windows okruženju

Unix okruženju

Specifičnom okruženju

ili na nekom od drugih okruženja, ili pak mora zadovoljiti rad na više okruženja. Potom po izboru platforme treba izabrati onaj jezički procesor koji će pružiti mogućnost izrade programske potpore po svim potrebnim zadanim elementima, na primjer da se izvršava u Windows XP okruženju, omogućava dostup vlastitim bazama podataka ili može pristupiti bazama podataka drugih proizvođača, ima potporu za pristup podacima na nekom poslužitelju preko Interneta i slično.

Dobar izbor za Windows XP platformu bio je na primjer 'Borland Delphi Studio', firme Borland Software Corporation, dostupan kao četiri različita proizvoda za izradu programske potpore i to:

delphi_personal

delphi_professional

delphi_enterprise

delphi_architect

Tehnički kriteriji potrebiti za ovaj programski paket su: o Intel Pentium 233 MHz or higher o 64 MB RAM (128 MB recommended)

o 124 MB hard disk space (compact installation)

o 520 MB hard disk space (full installation)

o CD-ROM drive

o SVGA or higher resolution monitor

o Mouse or other pointing device

Page 2: PROGRAMIRANJE_-_QBASIC

o Microsoft Windows 98, 2000, and Windows XP

Mogućnosti pojedinih od navedenih delphi_proizvoda u prethodnoj listi, označenih redno od 1 do 4, date su u narednoj komparativnoj tablici:

BORLAND® DELPHI™ 7 STUDIO

1* 2 3 4

Interoperability and migration support for Microsoft® .NETDelphi™ compiler warnings and hints for .NET compatibility

* * * *

Import any .NET assembly as a COM object * * * *

Use Delphi COM objects in .NET managed applications * * *

Delphi for Microsoft .NET prerelease preview Visual Component Libraryfor .NET framework for migrating existing applications**

* * * *

.NET preview CIL compiler to create managed applications * * * *

.NET migration documentation * * * *

Model-driven designVisual modeling and refactoring tool based on UML™ technology

* *

Native Delphi integration, reverse engineering, and instant visualization * *

Web application development. Deploy your application to the Internet,utilizing drag-and-drop visual Web application development

* * *

Add interactive content to your Web sites by rapidly and visuallybuilding dynamic server-side HTML Web applications

* * *

Transparently manages Web application details such as cookie,session, and user management

* *

Nevrona Rave™ technology. Powerful Rave ReportsBorland Edition visual report designer and code-based API

* * *

PDF, HTML, RTF, and text rendering formats * * *

Native support for VCL and Borland Component Libraryfor Cross-platform (CLX™) applications

* * *

Bold® for Delphi™Maintain less code with a true Model Driven Architecture™ (MDA™)

*

UML technology: full support for class diagrams, tagged values, *

Page 3: PROGRAMIRANJE_-_QBASIC

stereotypes,associations, visibility, and mixed transient/persistent elements & classes

Integrated support for Rational Rose® and ModelMaker;import/export model information from/to Bold® Model Editor

*

Windows XP™ ThemesEnable applications to take part of Windows XP™ Themes

* * * *

Borland Kylix™ 3 IDE in the Delphi languageKylix 3 IDE in the Delphi language for cross-platform development on Linux®

* * *

Borland BizSnap™ — Web Services with XML technologiesUDDI browser to visually locate and import registered Web Services

* * *

Automatic UDDI client fail-over support * * *

Rapidly build server-side W3C-compliant Web Services usingSOAP, XML, WSDL, and more

* * *

* Delphi 7 Personal is not a studio product, and it is for noncommercial use only.** Available as a download for registered users.

Tablica 6.2.1 Različite verzije alata 'Borland Delphi Studio'

Osim navedenog postoje i moćniji i slabiji jezički procesori, i naravno noviji iz opisane porodice alata. Navedeni primjer datira još iz 2002 godine, ali lijepo ilustrira što bi jedan profesionalni alata za programiranje trebao sadržavati. Noviji proizvod navedene firme za brzi razvoj programske potpore u Windows okruženju je 'CodeGear RAD Studio 2007' (Rapid Application Development), raspoloživ u tri edicije slično primjeru osim što nema besplatne 'Personal' verzije, kombinira 'Delphi for .NET' i 'C++Builder' u jedinstveno programsko okruženje za razvoj korisničkih, korisnik-poslužitelj i web aplikacija uz podršku za mnoštvo različitih baza podataka. Danas, kada je gotovo svugdje prisutno grafičko sučelje dobro je izabrati jezički procesor koji se koristi upravo njime, te da posjeduje 'čarobnjake', odnosno alate za brzu i jednostavnu izradu na primjer formi za unos podataka, izvješća i slično, što je osobito korisno za početnike. Iskusni korisnik može napisati izvorni kod (source code) u običnom editoru, kao što je 'Notepad' u Windows okruženju, te s alatima za 'linkanje' i 'kompajliranje' od njega načiniti izvršivu '.com' ili '.exe' datoteku za Windows okruženje.

Osoba koja se bavi izradom programske potpore često se naziva PROGRAMER, a alati za izradu programske potpore s kojima se služi nazivaju se programerski alati. Firma Microsoft za razvoj programske potpore nudi alate prikazane na narednim slikama besplatno, uz registriraju korisnika ako je potrebno, što nije od značaja ako se poštuju prava koja su naveli u licenčnim uvjetima. Naredne slike s kratkim opisom svakog od njih ujedno su spojnice prema stranicama gdje se može više saznati o pojedinim programskim alatima i preuzeti ih.

Page 4: PROGRAMIRANJE_-_QBASIC

'Express Edition' su jednostavni programerski alati laki za upotrebu i laki za učenje. Proizvodi koji su kreirani za one kojima je programiranje hobi, učenike, studente i neprofitabilne organizacije. Kao takvi, nemaju sve funkcije koje se mogu naći u potpunim profesionalnim inačicama. Svako 'Express Edition' izdanje sadrži dobru dokumentaciju koja će pomoći programeru-početniku da brzo nauči koncepte koji su neophodni da bi se izgradile napredne aplikacije. Korisnička sučelja su dobro organizirana kako bi se osiguralo razumljivost u procesu učenja. Nova generacija programerskih alata zasigurno će morati podržati izradu aplikacija koje će uspješno koristiti prednosti procesora s više jezgri i višenitnost, kao i nadolazeći koncept uspješnog korištenja resursa GPU.

Apsolutni korisnik početnik izabrati će za učenje neki još jednostavniji alat za izradu programske potpore, kao na primjer 'MS-DOS QBasic' ili 'MS-DOS QuickBASIC' firme Microsoft Corporation. Navedeni alat doživio je brojna poboljšanja i verzije od kojih je najslabija 1.0 pod nazivom QBasic a najmoćnija 4.5 pod nazivom QuickBASIC (Quick Beginner's All-Purpose Symbolic Instruction Code). U Windows 9x okruženju ukomponiran je jezički procesor 'MS-DOS QBasic' verzija 1.1 koji može poslužiti kao osnova za učenje izrade programske potpore.

Page 5: PROGRAMIRANJE_-_QBASIC

Slika 6.2.2 Uvodni prozor programske potpore QBasic.

Navedena programska potpora, odnosno programerski alat, spada u grupu interpretera i u ovoj verziji nema mogućnost 'kompajliranja', odnosno kreiranja izvršive datoteke. Ovo je na neki način besplatna verzija alata QuickBasic koji navedenu mogućnost ima. Osnove razvoja programske potpore, odnosno 5. i 6. faza prema poglavlju 6.1, nadalje će se prikazati upravo u alatu 'MS-DOS QBasic' verzija 1.1. Na Internetu se mogu pronaći besplatni alati slični navedenom koji u potpunosti poštuju sintaksu BASIC-a i imaju dodatne mogućnosti glede kreiranja formi i prozora pa čak i izrade izvršive datoteke, ali su prilagođeni Windows okruženju, kao što su 'ThinBasic BASIC Interpreter', 'Emergence BASIC (EBASIC)' ili sve popularniji 'FreeBASIC compiler' dizajniran u verzijama za DOS, Linux ili Windows okruženje. Novi proizvod iz Redmonda - 'Microsoft Small Basic', konceptualno mali i jednostavan programski jezik, jednostavan za učenje s pristupačnim razvojnim 'windows' okruženjem koje je u osnovi uvod u 'express' ili 'profesionalne' alate, moguće je najbolji izbor za početnike. Sa stanovišta učenja kompatibilni su s opisima koji slijede u narednim poglavljima.

Za profesionalnu uporabu dosta su popularni MS Visual C++ i Java programerski alati, te nova generacija profesionalnih razvojnih alata .NET grupe proizvoda firme Microsoft. Za profesionalan rad jako je važno da programerski alati znaju 'raditi' s bazom podataka, jednom vrstom ili više njih, kao što su SQL ili ORACLE. Sve se više zahtijevaju web-olike aplikacije te mogućnost rada s PHP (Hypertext Pre-processor) skriptnim jezikom i pristupa bazama podataka smještenih na web-poslužitelju preko njega.

SAŽETAK:

Iz dosad navedenog jasno je da bavljenje programiranjem, odnosno razvojem programske potpore, iziskuje obrazovanje te stjecanje znanja i vještina u svrhu razvijanja

Page 6: PROGRAMIRANJE_-_QBASIC

sposobnosti apstrakcije, odnosno sposobnosti raščlanjivanja i sagledavanja problema ili zadatka s različitim pristupima glede njegovog rješavanja uz odvajanje bitnih od nebitnih svojstava. Banalni primjer je izračunavanje trigonometrijskih funkcija. Prihvaćanje gotovih činjenica bez razmišljanja o tome kako su ustanovljene, kao što su na primjer vrijednosti osnovnih kutova, bez sposobnosti predočavanja kruženja jediničnog vektora u koordinatnom sustavu kao bitnog čimbenika glede promjena koje pri tome nastaju, nisu osobitost koja odlikuje učinkovitog programera. Dali je u razvoju programske potpore za knjigovodstveni servis bitna točnost izračuna na više od dvije decimale? Ili jedan potpuno matematički problem; 1/3=0.333333... - 0.333333...×3=1?

Poznavanje engleskog jezika, matematike, fizike, tehničkog crtanja, likovnog, glazbenog i sličnih 'nepotrebnih' znanja glede navedenog nije na odmet, dapače permanentno cjeloživotno obrazovanje, školsko i samostalno, preduvjet je za uspješan rad dobrog programera kojemu programiranje može postati posao. Kakav posao? Recimo:

o dizajn i administracija baza podataka, o dizajn i programiranje sučelja (desktop),

o programiranje web aplikacija i web dizajn,

o programiranje mrežne programske potpore (NOS),

o programiranje upravljačkih programa uređaja (driver),

o programiranje uslužnih-pomoćnih programskih alata (utility),

o programiranje multimedijskih alata,

o programiranje i dizajn igara, simulatora ...

o programiranje razvojnog okruženja - programerskih alata,

o programiranje operativnih sustava,

o programiranje mikrokontrolera,

o programiranje BIOS-a,

o instalacija, održavanje i konfiguriranje .....

o i još štošta drugo .....

Programska potpora za računovodstveni servis ili urudžbeni ured, ovisno o obimu posla, broju uposlenika u njima i raspoloživoj računalnoj opremi, može sadržavati malo ili prilično od navedenog, a u razvoju programske potpore može učestvovati jedna ili više osoba. Izrada kvalitetne računalne igre, na primjer, traži napredne vještine od njenog samog dizajna pa do izrade programskog koda za operativni sustav na kojem će se igra koristiti. Vrlo je teško od jedne osobe očekivati uspješnost i zavidnu vještinu u više kategorija, a objedinjavanje djelatnosti vještih osoba u cilju ostvarivanja željenih rezultata također je vještina. Timski rad je neophodan.

Page 7: PROGRAMIRANJE_-_QBASIC

Od ideje pa do njenog ostvarenja dug je put. Uspješan i relativno brz primjer ostvarivanja cilja je 'Google'. Dakle, potrebna su poprilična znanja, vještina u prepoznavanja problema ili zadatka i jasna vizija njegovog rješavanja.

Naravno, da bi se u potpunosti ovladalo korištenjem nekog programskog proizvoda, potrebno je konzultirati popratnu literaturu, te ako je moguće prućiti jednostavnije primjere. Svaka programska potpora uz sebe obično ima više ili manje uspješnu pomoć (Help), koja je itekako dobrodošla u radu. Nekad su to male enciklopedije. Za učenje programiranja, za početak najpogodniji je QBASIC (Quick Beginner's All-Purpose Symbolic Instruction Code). Tim više što ovaj programerski alat pri izradi izvornog koda provjerava greške i ukazuje na njih. Ima dobar i koristan vodič koji prikazuje kako se koriste pojedine komande i sadrži primjere funkcija.

Uvodni ekran pomoći programske potpore QBasica sastoji se od tri dijela:

Index (Abecedni popis i link-ovi prema naredbama i funkcijama) Contents (Sadržaj Help-a po poglavljima)

Using Help (način uporabe Help-a)

Prvo treba proučiti način uporabe Help-a, odnosno uputu kako Help prikaze dohvatiti i koristiti. Link-ovi 'Contents' i 'Contents' prisustni su na svakom prikazu. Uvodni 'Contents' prikaz izgleda prema narednoj slici.

Slika 6.2.3 Uvodni ekran sadržaja 'Content' prozora pomoći.

Cjelina 'Orientation' sadži upute kako koristi prikaze pomoći, te kako koristiti komande samog alata Qbasic. To je u suštini 'toolbar' po windows terminologiji preko kojeg se dolazi do pojedinih komandi programske potpore QBasic unutar pripadnih padajućih izbornika,

Page 8: PROGRAMIRANJE_-_QBASIC

kao što je otvaranje i spremanje datoteka (unutar FILE izbornika) ili uređivanje programskih linija u editoru QBasic-a (unutar EDIT izbornika). Iz literature ili iz programske potpore pomoći samog alata, najvažnije je prvo upoznati SINTAKSU jezičkog procesora. Sintaksa je skup pravila potrebnih da se ispravno napišu i poslože naredbe i funkcije koje jezički procesor koristi. Na narednoj slici prikazan je opis koji korisnika upućuje kako da rastumači upute koje slijede uz svaku KLUČNU RIJEČ jezičkog procesora.

Slika 6.2.4 Upoznavanje s pravilima tumačenja sitakse QBasic-a.

Program je u suštini smišljeni skup naredbi koje se slijedno izvršavaju prema dijagramu toka odnosno redoslijed akcija nanizanih jedna za drugom. Svaka naredba može se sastojati od:

Ključne riječi (keyword) Objekta ili objekata djelovanja ključne riječi (placeholders)

Dodatnih naputaka ključnoj riječi (optional item)

Isključivo jednog izbora od ponuđenih (choice x)

Obrade više pojmova u slijedu (items)

Strukture od više ključnih riječi (block)

Page 9: PROGRAMIRANJE_-_QBASIC

Ključna riječ je nalog-naredba interpreteru da izvrši programski kod unutar jezičkog procesora koji pripada toj riječi (na primjer ABS, BEEP itd.) uz poštivanje svih dodataka koji su toj ključnoj riječi pridruženi. Kako su te rezervirane riječi upravo pozivi prema pojedinom programskim rutinama (izvršivi kod) ne smiju se te riječi uporabiti kao imena varijabli, konstanti ili funkcija prilikom pisanja programskih linija da prilikom njihovog interpretiranja ne bi došlo do zbrke. Nije dobro nazvati ni funkciju imenom 'absolutno' jer to ime u sebi sadrži ključnu riječ ABS što može opet biti uzrok zbrci prilikom interpretiranja naredbi.

Svakoj ključnoj riječi pripada opis na koga se njeno djelovanje odnosi (placeholder). To može biti ime datoteke koju treba otvoriti ili zatvoriti, varijable (kao 'ime_osobe' i-ili prezime_osobe), uređaja (rezolucija ekrana na primjer) i slično. No ne mora biti ništa definirano, ali se tada izvršava podrazumna akcija (default) ako ključna riječ ustanovi da nema ovog opisa.

Dodatni naputak - opcija (optional) pobliže definirana ponašanje ključne riječi i kako nije obvezan izvršit će se podrazumni. Ovaj dodatni nalog u prikazu ispravnog pisanja naredbe postavlja se u uglate zagrade. Dakle može se dopisati, ali ne mora i može ih biti više.

U vitičastim zagradama su pojmovi (item) koji mogu biti, na primjer unutar opcija, i koji kažu da se može uporabiti samo jedan od njih unutar vitičastih zagrada. Dakle, to je opis uporabe isključivo jednog izbora od ponuđenih.

Pojmovi u slijedu odnose se najčešće na skup zapisa koji se moraju upisati u polje( tablicu) ili u datoteku, ili se iz njih pročitati, kao na primjer ime1, prezime1, ime2, prezime2 itd. Najčešće su pojmovi vezani uz naredbe koje se nalaze unutar nekakve strukture.

Struktura je više naredbenih linija koje započinju i završavaju početnom i završnom ključnom riječi strukture. Dakle pojam s najmanje dvije ključne riječi. Unutar strukture mogu biti neke druge naredbene linije koje ne sadrže ključne riječi strukture. Moguće je da se unutar jeden strukture nalazi još jedna struktura, ali tada treba paziti da se ne 'ukrižaju'. Naime početak i kraj jedne strukture (unutarnje) mora biti omeđen ključnim riječima druge strukture (vanjske). Unutar strukture obično se nalazi naredba koja u određenim okolnostima daje nalog za napuštanje strukture.

Ključnih riječi ima popriličan broj. Stoga je od velike pomoći abecedni popis ključnih riječi (indeks) preko kojeg se dolazi do opisa naredbe kako se koristi ključna riječ. Početni dio indeksa prikazan je na narednoj slici.

Page 10: PROGRAMIRANJE_-_QBASIC

Slika 6.2.5 Abecedni popis naredbi i funkcija QBasic-a

Pri odabiru željene ključne riječi, po opisu naredbe kako se koristi, kod složenijih naredbi slijedi i jednostavan primjer kako se koristi odabrana naredba ili struktura (example), te link-ovi prema ključnim riječima i strukturama (see also) koji pripadaju uz odabranu ključnu riječ ili su srodne po načinu izvršavanja. Uputa od tri točke u vrhu slike vrlo jednostavno opisuje kako doći do željene ključne riječi.

Kako ima oko 240 ključnih riječi jasno je da ih treba pomno proučiti kako bi se znale ispravno uporabiti. Jedan te isti skup naredbi može se izvršiti s različitom brzinom, ovisno o tome kako su uporabljene pojedine ključne riječi ili koje su strukture uporabljene za istu zadaću. Stoga je potrebno uz njihovo poznavanje znati u mogućnosti koje QBasic nudi glede uporabe računalni resursa. Jasno je da treba poštovati minimalne zahtjeve za računalnu opremu koje proizvođač QBasic-a ili Delphi-ja traži za ispravan i učinkovit rad njihovog proizvoda.

Većina jezičkih procesora, pa tako i QBasic koristi konstante i varijable i svom radu. Prema vrsti podatka koji se i njima čuva konstante i varijable mogu biti znakovne-tekstualne (string-$) ili brojčane. Kakva je razlika između konstanti i varijabli? Razlika je u načinu ponašanja tijekom izvođenja programa. Uvriježeno da se konstante zadaju odmah na početku programa (kao PI =3.141592 i slično) i njihova se vrijednost tijekom izvođenja ne može mijenjati, a varijable svoju vrijednost mijenjaju tijekom izvođenja programa i podrazumna početna vrijednost je nula ako se drugačije ne odredi. Na primjer X=X+1 znači da se X-u koji je s lijeve strane imao vrijednost nula pridružuje operacija s desne strane koja ga uvećava za 1 pa je po izvršenju ove naredbe X=1. Naravno sukladno rečenom PI=PI+1 neće se izvršiti ako je PI proglašeno kao konstanta. Iz ovog primjera vidi se da za trivijalne matematičke operacije ne treba ključna riječ.

Page 11: PROGRAMIRANJE_-_QBASIC

Ime varijable može imati najviše 40 znakova a najmanje jedan. Nije dobro da ime varijable počne s brojem i nije dobro da sadrži posebne znakove van znakova abecede ASCII koda (osobito naše grafeme). Za ovaj jezički procesor nebitno je jesu li mala ili velika slova jer ih tumači jednako.

Na narednoj slici prikazane su najmanje i najveće vrijednosti dozvoljene pri radu s varijablama, datotekama, poljima i ostalim relevantnim računalnim čimbenicima.

Slika 6.2.6 Granice uporabe resursa QBasic-a.

Znakovne varijable mogu sadržavati sve znakove ASCII koda te se recimo i znamenka tada tretira kao tekst. Naravno postoje naredbe (ključne riječi) koje mogu znamenku kao tekst pretvoriti u znamenku kao broj i obratno. Osim toga moguće je od svakog znaka dobiti njegovu vrijednost po ASCII kodu što će omogućiti, recimo sortiranje popisa s imenima.

Page 12: PROGRAMIRANJE_-_QBASIC

Brojčane varijable su posebna zanimljivost. Mogu se izraziti kao varijable sa cjelobrojnim (integer) sadržajem kapaciteta 16 bit-a ili 32 bit-a (jedan bit koristi se za predznak), te kao varijable brojeva s decimalnom točkom koje broj čuvaju s 7 ili 15 znamenaka (jedno mjesto koristi se za predznak) uz faktor množenja po osnovi 10 (E+38 je 1038, a D+308 je 10308). Kakva je razlika između E i D ako su oba 10? Sukladno navedenom ako se pridoda odgovarajući sufiks imenu varijable dobiju se i njihove različite mogućnosti. X%, X&, X! i X# različito će se ponašati.

Smisao navedenog je upravo u brzini izvršavanja programa. Nije isto brojiti od 1 do 10 kao i brojiti od 1,0000000000000D+000 do 1,0000000000000D+001. Dakle u matematičkim operacijama brojanja studenata uporabiti će se integer varijabla, ali u izračunavanju njihove prosječne težine varijabla s decimalnom točkom.

Slika 6.2.7 Simboli i operatori QBasic-a.

Matematičke i logičke operatore ne treba posebno objašnjavati. Specijalni znakovi služe za dopisivanje komentara te za nadzor izgleda ekrana prilikom upisa ili ispisa podataka (sadržaja varijabli).

Zbog velikog broja ključnih riječi, u programskoj potpori za pomoć, svrstane su i po načinu pripadnosti jednoj od specifičnih grupa kako su redom nabrojene prema slici 6.2.8.

Upravljanje odvijanja programa (uglavnom strukture) Definiranje konstanti i varijabli (od svojstava pa do brisanja sadržaja)

Page 13: PROGRAMIRANJE_-_QBASIC

Definicija i pozivi BASIC-ovih procedura (kao pokretanje programa)

Rad s ulazni i izlazni uređajima (ekran i pisač)

Crtanje i unos slike (crtanje i bojanje zatvorenih likova)

Upravljanje datotekama i imenicima na disku (otvori, briši ..)

Upis i ispis iz datoteka (dohvat a ne ispis podataka)

Upravljanje RAM-om (brisanje, čitanje određene ćelije ..)

Obrada teksta (manipulacija znakovima u string varijabli)

Matematičke operacije (vlastite funkcije!)

Zamke (lovljenje prekoračenja i preopterećenja i slično)

Page 14: PROGRAMIRANJE_-_QBASIC

Slika 6.2.8 Ključne riječi grupirane prema namijeni.

Što ako je rezultat neke matematiče operacije veći od kapaciteta varijable? Program će se prekinuti u izvršavanju i jezički procesor izbaciti će poruku tipa 'overflow', 'division by zero' ili nešto slično. Dakle, treba predvidjeti ovakve situacije i naredbama za nadzor toka programa spriječiti prekid izvršavanja programa. Što ako je zabunom umjesto znamenke upisan znak 'A' za brojčanu varijablu? Opet će doći do prekida programa i upozorenja na grešku. Ponovo su u 'igri' nadzorne strukture.

Dakle, oko 25% koda cjelokupnog programsko koda odnositi će se na njegovu matematičku funkcionalnost, oko 35% koda odnositi će se za sprječavanje 'nebuloznih' unosa,

Page 15: PROGRAMIRANJE_-_QBASIC

rezultata i izračuna, a ostatak na oblikovanje formi za unos podataka te ispis na ekranu odnosno pisaču. Naravno, faza testiranja je neizbježna i tada treba namjerno praviti sve moguće greške u radu s programom kako bi se došlo do 'stabilnog i robusnog rezultata' otpornog na sve moguće 'zamisli' korisnika. Uobičajeno je da testiranje vrši tim koji s izradom programskog proizvoda nema doticaja, što je i razumljivo jer je programeru vrlo teško pronaći svoje vlastite greške. Kada programski proizvod konačno dođe u produkciju završno testiranje vrši tim koji opet s prethodno navedenima nema nikakve veze. Opisano je dio koji pripada točki 6. u poglavlju o razvoj programske potpore. Programska potpora ne izrađuje se 'preko noći' uz jedno piće i picu.

Programiranju se može pristupiti na više načina. Recimo da je cijeli programski kod je jedinstvena cjelina, ili da je cjelokupni kod podijeljen na glavni dio i pod-programe izdvojeni od osnovnog koda ili se pak pozivaju drugi programi da obave zadaću za program koji se izrađuje. Glede jednostavnosti ovdje će se prikazati samo prva mogućnost.

Prva naredba koja će se uporabiti je CLS.

Slika 6.2.9 Help-ekran ključne riječi CLS.

Zadaća joj je da obriše sliku u prozoru u kojem se program odvija. Bilo bi vrlo nezgodno da ako program krene iz početka, da se vide ispisi prethodnog pokretanja. No nekad možda treba izbrisati tekstualne ispise a ostaviti sliku. Tada će se uporabiti jedna od opcija uz ključnu riječ CLS. Opis na ekranu na slici 6.2.9 ukazuje na to da se QBasic služi slojevima za prikaz na ekranu i to jedan za tekst a drugi za grafiku, kao da se radi o dvije prozirne slike jedna preko druge (analogno dvjema folijama na grafoskopu). Dakle iz pomoći se vidi da se ne može napisati naredba 'CLS 1 2' jer to sintaksa ne dozvoljava (vitičasta zagrada).

Druga naredba od značaja je CLEAR.

Page 16: PROGRAMIRANJE_-_QBASIC

Slika 6.2.10 Help-ekran ključne riječi CLEAR.

Zašto ovu naredbu staviti odmah na početak?. Naime QBasic-ova naredba RUN/START iz ToolBar-a nije ista kao RESTART povratak u prvu naredbenu liniju. RUN postavlja varijable na početnu vrijednost (nula, naravno), a programski povratak u prvu liniju ne, te se u slučaju vračanja programa na izvršavanje iz početka, bez prekida rada, može dogoditi da su neke varijable sačuvale već izračunatu vrijednost, pa bi tako ukupni broj studenata bio udvostručen i 'kilaža' dvostruko veća, ako bi se rukovodili opisom s prethodnih strana.

Svaki programski kod ima svoj početak i kraj. Za definiranje kraja programskog koda služi naredba END.

Page 17: PROGRAMIRANJE_-_QBASIC

Slika 6.2.11 Help-ekran klučne riječi END.

Ako se ova naredba ne bi zadala po izvršavanju programskog koda ne bi se na primjer zatvorile sve datoteke kojima se je pristupilo. To bi prilikom ponovnog pokretanja programa moglo onemogućiti pristup nekoj od već otvorenih datoteka jer je već 'zauzeta' (access deny). Osim navedenog iza naredbe END slijede pod-programi koji su jako korisni ako se pozivaju sa više mjesta iz glavnog programa, te se isti programski kod ne mora više puta pisati. No treba razlučiti da END i END IF nisu dvije iste stvari. Prva naredba prekida program a drugu programsku strukturu unutar programa koja započinje sa IF ključnom riječi. Dakle, unutar glavnog koda programa može biti više zatvaranja programskih struktura, ali je samo jedan kraj programa. Unutar glavnog programskog koda nije dobro koristiti naredbu END za prestanak rada programa na više mjesta.

Dakle prema navedenom početak osnovna struktura nekog programa bila bi prema narednoj slici.

Page 18: PROGRAMIRANJE_-_QBASIC

Slika 6.2.12 Načini pisanja programskog koda u QBasic-u.

QBasic dozvoljava pisanje koda sa i bez brojčanih oznaka ispred svake naredbene linije. Da bi primjeri nadalje lakše shvatili biti će prikazani s brojevima ispred svake programske linije. Broj linije je nebitan, važan je sam ispravan slijed. Na primjer 10,20,90 isto je kao da je napisano 1,2,9 ali je tada premalo mjesta za dodavanje naredbi između 2 i 9. Stoga je bolje koristiti veće brojevne raspone.

U narednim primjerima prikazano je deset jednostavnih zadataka koji predstavljaju izradu dijagrama toka i programskog koda u QBASIC-u prema zadanom algoritmu. Za izradu dijagrama toka korišteni su grafički oblici prikazani na slici 3.4.6.

Page 19: PROGRAMIRANJE_-_QBASIC

Primjer I

Napiši algoritam i dijagram toka za računanje razlike, umnoška i količnika dva zadana broja.

Algoritam:

početak-----------------------------------------------------upiši A, BC = A - BD = A × BE = A / Bispiši C, D, E-----------------------------------------------------

krajDijagram toka: Programski kod:

CLSCLEARINPUT a, bc = a - bd = a * be = a / bPRINT a, b, cEND

Page 20: PROGRAMIRANJE_-_QBASIC

Primjer II

Napiši algoritam i dijagram toka za računanje opsega i površine kvadrata, ako je zadana duljina stranice kvadrata.

Algoritam:

početak-----------------------------------------------------upiši AOPSEG = 4 × APOVRŠINA = A × Aispiši OPSEG, POVRŠINA-----------------------------------------------------

krajDijagram toka: Programski kod:

CLSCLEARINPUT aOpseg = 4 * aPovrsina = a * aPRINT Opseg, PovrsinaEND

Page 21: PROGRAMIRANJE_-_QBASIC

Primjer III

Napiši algoritam i dijagram toka za računanje prosjeka 4 zadana broja.

Algoritam:

početak-----------------------------------------------------upiši A,B,C,DPROSJEK = (A + B + C + D) / 4ispiši PROSJEK-----------------------------------------------------

krajDijagram toka: Programski kod:

CLSCLEARINPUT a, b, c, dProsjek = (a + b + c + d) / 4PRINT ProsjekEND

Page 22: PROGRAMIRANJE_-_QBASIC

Primjer IV

Napiši algoritam i dijagram toka za pretvaranje duljine izražene u mjernoj jedinici 'centimetar' u mjernoj jedinici 'metar'. Zadaje se mjerni broj u centimetrima, a treba odrediti koliko je to metara.

Algoritam:

početak-----------------------------------------------------upiši XMETRI = X / 100ispiši METRI-----------------------------------------------------

krajDijagram toka: Programski kod:

CLSCLEARINPUT XMETRI = X / 100PRINT METRIEND

Page 23: PROGRAMIRANJE_-_QBASIC

Primjer V

Napiši algoritam i dijagram toka koji zadani broj A uvećava 100 puta ako je A manji od 100, a inače A umanji za 100. Ispisati dobiveni rezultat.

Algoritam:

početak-----------------------------------------------------upiši Aako je A < 100 onda A = A × 100 inače A = A - 100ispiši A-----------------------------------------------------

krajDijagram toka: Programski kod:

CLSCLEARINPUT A IF A < 100 THEN A = A * 100 ELSE A = A - 100 END IFPRINT AEND

Page 24: PROGRAMIRANJE_-_QBASIC

Primjer VI

Napiši algoritam i dijagram toka za računanje opsega i površine kvadrata, ako je zadana duljina stranice kvadrata A. Prije računanja provjeriti je li A veće od 0, a ako nije ispisati poruku: 'Stranica kvadrata mora biti pozitivan broj.'

Algoritam:

početak-----------------------------------------------------upiši Aako je A > 0 onda opseg = 4 × A, ispiši opseginače ispiši 'Stranica kvadrata mora biti pozitivan broj.'-----------------------------------------------------

krajDijagram toka: Programski kod:

CLSCLEARINPUT A IF A > 0 THEN Opseg = A * 4 PRINT "Opseg="; Opseg ELSE PRINT "Stranica kvadrata mora biti" PRINT "pozitivan broj." END IFEND

Page 25: PROGRAMIRANJE_-_QBASIC

Primjer VII

Napiši algoritam i dijagram toka za program s kojim se izračunava apsolutna vrijednost cijelog broja. Uputa: Apsolutna vrijednost je udaljenost cijelog broja od nule. (|-3|=3, |3|= 3, |0|=0).

Algoritam:

početak-----------------------------------------------------upiši Aako je A < 0 onda APS = (-1) * A inače APS = Aispiši APS-----------------------------------------------------

krajDijagram toka: Programski kod:

CLSCLEARINPUT "Upisi vrijednost za A:"; A IF A < 0 THEN APS = (-1) * A ELSE APS = A END IFPRINT "Apsolutno od A je:"; APSEND

Page 26: PROGRAMIRANJE_-_QBASIC

Primjer VIII

Napiši algoritam i dijagram toka za program koji će ispisivati svaki prirodni broj u rasponu između zadanih brojeva A i B. Pretpostavite da su A i B zadani tako da je A+1<B (treba ispisati barem jedan broj).

Algoritam:

početak-----------------------------------------------------upiši A, BX = A + 1ispiši XX = X + 1 ako je X < B onda vrati se na naredbu ispiši Xinače idi na kraj-----------------------------------------------------

krajDijagram toka: Programski kod:

Page 27: PROGRAMIRANJE_-_QBASIC

10 CLS20 CLEAR30 INPUT "Upisi A,B, uz A < B"; a, b40 x = a + 1 ' Pocetna vrijednost x je 0 DO PRINT "Vrijednost za X je:"; x x = x + 1 ' x se uvecava za 1 LOOP WHILE x < b REM 'LOOP UNTIL' po prvom zadovoljenom izlazi iz petlje50 END

Primjer IX

Napiši algoritam i dijagram toka za zbrajanje prvih N prirodnih brojeva.

Algoritam:

početak-----------------------------------------------------X=0ZBROJ = 0upiši NX = X + 1ZBROJ = ZBROJ + X ako je X < N onda vrati se na naredbu X = X + 1ispiši ZBROJ-----------------------------------------------------

krajDijagram toka: Programski kod:

Page 28: PROGRAMIRANJE_-_QBASIC

-----------------------------------------------------------10 CLS20 CLEAR30 X = 0: Zbroj = 040 INPUT "Upisi granicu zbrajanja"; N DO X = X + 1 Zbroj = Zbroj + X LOOP WHILE X < N REM 'LOOP UNTIL' po prvom zadovoljenom izlazi iz petlje50 PRINT "Zbroj je:"; Zbroj60 END-----------------------------------------------------------10 CLS20 CLEAR30 x = 0: Zbroj = 040 INPUT "Upisi granicu zbrajanja"; N FOR i = 1 TO N STEP 1 x = x + 1 Zbroj = Zbroj + x NEXT i50 PRINT "Zbroj je:"; Zbroj60 END-----------------------------------------------------------

Primjer X

Napiši algoritam i dijagram toka koji učitava N cijelih brojeva. Izračunati zbroj svih pozitivnih i zbroj svih negativnih brojeva.

Algoritam:

početak-----------------------------------------------------upiši Nbroj = 0pozitivni = 0negativni = 0upiši xako je x > 0 onda pozitivni = pozitivni + x inače negativni = negativni + xbroj = broj + 1

Page 29: PROGRAMIRANJE_-_QBASIC

ako je broj < N onda vrati se na naredbu: upiši xispiši pozitivni, negativni-----------------------------------------------------

krajDijagram toka: Programski kod:

10 CLS20 CLEAR30 broj = 0: pozitivni = 0: negativni = 040 INPUT "Upisi granicu zbrajanja"; N DO INPUT "Upisi jedan broj:"; X IF X > 0 THEN pozitivni = pozitivni + X ELSE negativni = negativni + X END IF broj = broj + 1 LOOP WHILE X < N REM 'LOOP UNTIL' po prvom zadovoljenom izlazi iz petlje50 PRINT "Zbroj pozitivnih je:"; pozitivni60 PRINT "Zbroj negetivnih je:"; negativni70 END

Page 30: PROGRAMIRANJE_-_QBASIC

10 CLS ' Naredba za brisanje ekrana11 CLEAR ' Naredba za brisanje sadrzaja svih varijabli12 DEFINT I-K, M-N13 DEFLNG L, O14 DEFDBL D-E15 DEFSNG F-G16 DEFSTR R-S20 REM Od ovog broja nadalje pocinje programski kod25 RANDOMIZE TIMER ' Odredjuje slucajan pocetak RND sekvence30 I = INT((RND) * 1000)40 M = M + 150 INPUT J60 IF J < I THEN PRINT "Upisani broj je manji od trazenog": GOTO 4070 IF J > I THEN PRINT "Upisani broj je veci od trazenog": GOTO 4080 PRINT "Pogodio si iz "; M; " puta"90 INPUT "Izlaz (D/N)"; stop$100 IF stop$ = "N" OR stop$ = "n" THEN GOTO 10999 END ' Zavrsetak osnovnog programskog koda1000 REM Od ovog broja nadalje pocinju pod-programi

Generator slučajnog broja jezičkog procesora uvijek generira istu sekvencu. Da bi se izbjegao početak uvijek s istim slijedom koristi se naredba RANDOMIZE TIMER koja koristi interni sat računala za odabir mjesta slučajnog početka u sekvenci.

Način ponašanja naredbe INPUT u linijama 50 i 90 nije isti. U čemu je razlika?

Umjesto linije 100 bolje je uporabiti naredbe koje sadrže ključnu riječ INKEY$ koja očitava pritisnutu tipku. Dakle treba uporabiti DO-LOOP-UNTIL strukturu te upoznati se s kodovima koje 'šalje' tipkovnica.

Kako rastumačiti izvršavanje linije 40 M = M + 1 kad je naizgled matematički nemoguća.

10 CLS ' Naredba za brisanje ekrana11 CLEAR ' Naredba za brisanje sadrzaja svih varijabli14 DEFDBL A-F, P-Z20 REM Od ovog broja nadalje pocinje programski kod30 INPUT "Unesi vrijednost za a"; a40 INPUT "Unesi vrijednost za b"; b50 INPUT "Unesi vrijednost za c"; c60 INPUT "Unesi vrijednost za d"; d70 INPUT "Unesi vrijednost za e"; e80 INPUT "Unesi vrijednost za f"; f

Page 31: PROGRAMIRANJE_-_QBASIC

90 p = a - d: q = b - a100 IF p = 0 AND q = 0 THEN PRINT "Nema rjesenja!": GOTO 900200 y = (c * d - a * f) / (a * e - b * d)300 x = (c * e - b * f) / (a * e - b * d)400 PRINT "x="; x, "y="; y900 SLEEP999 END ' Zavrsetak osnovnog programskog koda1000 REM Od ovog broja nadalje pocinju pod-programi

Naredba INPUT mogla se je umjesto 6 linija 30-80 upisati samo s jednom. Kako?

Promijeniti DEFDBL A-F, P-Z u DEFSNG A-F , P-Z te u DEFINT A-F, P-Z. Analizirati način prikazivanja rezultata za svaku od promjena.

Umjesto SLEEP korisnije je uporabiti strukturu koja pita da li se želi nadalje koristiti program ini ne, koja je povezana s pritiskom na jednu tipku. Koje naredbe za to treba koristiti?

10 CLS ' Naredba za brisanje ekrana11 CLEAR ' Naredba za brisanje sadrzaja svih varijabli14 DEFDBL O15 DEFSNG P17 CONST cpi = 3.14592927#20 REM Od ovog broja nadalje pocinje programski kod30 INPUT "Unesi radius kruznice"; R40 P1 = R ^ 2 * cpi50 P2 = 2 * R ^ 260 P3 = 2 * R ^ 2 * (SIN(cpi / 3)) ^ 370 P4 = (P1 - P2) / 480 P5 = (P1 - P3) / 3140 O1 = 2 * R * cpi150 O2 = 4 * 2 ^ (1 / 2) * R160 O3 = 6 * R * SIN(cpi / 3)210 PRINT "P1="; P1220 PRINT "P2="; P2230 PRINT "P3="; P3240 PRINT "P4="; P4250 PRINT "P5="; P5310 PRINT "O1="; O1320 PRINT "O2="; O2330 PRINT "O3="; O3900 SLEEP999 END ' Zavrsetak osnovnog programskog koda1000 REM Od ovog broja nadalje pocinju pod-programi

U liniji 30 traži se unos radijusa kružnice. Što treba napraviti da se ne prihvati unos negativnog broja? Što će se dogoditi ako se umjesto brojke unese neko slovo?

U čemu je razlika između prikaza izračunatih opsega i površina? Koje naredbene linije definiraju navedene prikaze?

Page 32: PROGRAMIRANJE_-_QBASIC

Ako se u liniji 17 napiše 17 CONST cpi = 3.14, nestaje oznaka '#'. Zašto?

10 CLS ' Naredba za brisanje ekrana11 CLEAR ' Naredba za brisanje sadrzaja svih varijabli12 DEFINT I-K, M-N, Z14 DEFSNG A-D15 DEFDBL X-Y17 CONST CPI = 3.1415927#20 REM Od ovog broja nadalje pocinje programski kod30 y = CPI / 640 k = 145 PRINT "kut°", "sin", "cos", "tan", "cntag"50 a = SIN(y * k)60 b = COS(y * k)70 c = TAN(y * k)80 d = 1 / c150 z = 30 * k200 k = k + 1250 PRINT z, a, b, c, d300 IF k < 13 THEN GOTO 50900 SLEEP999 END ' Zavrsetak osnovnog programskog koda1000 REM Od ovog broja nadalje pocinju pod-programi

Ovaj program nema nikakvih upita za unos već, koristi poznati matematički aparat da se izračunaju i prikažu vrijednosti trigonometrijskih funkcija.

Zašto se za poznate veličine od 90 180, 270 i 360 stupnjeva ne izračunavaju vrijednosti kao u tablicama? Što bi se dogodili s izvršavanjem linije 80 kada bi varijabla 'k' imala početnu vrijednost 0 a ne 1?

Ima li smisla varijable a, b, c i d deklarirati da budu cjelobrojne?

Proširite program na način da se rezultati prikazuju sa četiri decimale, na primjer s preinakom linije 50 u

a = INT(SIN(y * k) * 1000) / 1000.

Što se je s time u osnovi napravilo?

Page 33: PROGRAMIRANJE_-_QBASIC

10 CLS ' Naredba za brisanje ekrana11 CLEAR ' Naredba za brisanje sadrzaja svih varijabli12 DEFINT B, I-K, M-N13 DEFLNG D-G16 DEFSTR P-S20 REM Od ovog broja nadalje pocinje programski kod30 DIM A$(9): DIM B(9)40 N = 050 REM mjesto povratka po izboru100 PRINT "Unesi ime u "; N; ". polje matrice"; : INPUT A$(N)110 B(N) = LEN(A$(N))120 N = N + 1130 IF N <= 9 THEN GOTO 50200 GOSUB 1100210 N = 0 FOR N = 0 TO 9 PRINT N, A$(N) PRINT NEXT N900 SLEEP999 END ' Zavrsetak osnovnog programskog koda1000 REM Od ovog broja nadalje pocinju pod-programi1100 I = 0: J = 0: N = 91200 REM Mjesto povratka po izboru IF B(I) < B(J) THEN GOTO 1400 ELSE brojveci = B(I): podatak$ = A$(I) B(I) = B(J): A$(I) = A$(J) B(J) = brojveci: A$(J) = podatak$ END IF1400 IF J < N THEN J = J + 1: GOTO 12001600 IF I < N THEN I = I + 1: J = I: GOTO 12002000 RETURN

U liniji 200 ovog programa nalazi se poziv za sub-program (pod-program). Pod-programi uvijek završavaju s naredbo RETURN, da bi se nastavilo izvršavanje glavno programa od naredne linije nakon poziva pod-programa, u ovo primjeru od linije 210.

Ako ima potrebe u nekom programu izračunavati nekoliko desetaka puta jednu te istu funkciju, ali svaki put s drum ulaznom varijablom, matematički aparat funkcije dobro je u programu postaviti u pod-program. Zbog čega?

Page 34: PROGRAMIRANJE_-_QBASIC

Treba uočiti da nije nužno pisati brojeve pojedinih linija, što se u ovom primjeru vidi iz prikaza FOR-NEXT i IF-THEN-ELSE-END IF programskih struktura. Kako onda izvršiti programski skok po naredbi GOTO? Pročitati u Help stranicama (RTFM)!

10 CLS ' Naredba za brisanje ekrana11 CLEAR ' Naredba za brisanje sadrzaja svih varijabli12 DEFINT I-K, P13 DEFLNG L15 DEFSNG Q-Z17 CONST CPI = 3.14593318 CONST CGr = 9.80664520 REM Od ovog broja nadalje pocinje programski kod25 SCREEN 030 INPUT "Unesi pocetna brzinu tijela:"; v IF v = 0 OR v > 1500 THEN PRINT "Pocetna brzina nije u zadanim granicama" PRINT "Unesite vrijednost unutar zadanih!" SLEEP 5 CLS : GOTO 30 END IF40 INPUT "Unesi vrijednost kuta pod kojim je tijelo izbaceno:"; q IF q <= 0 OR q >= 90 THEN CLS PRINT "Kutevi manji od 0 i veci od 90 nemaju smisla." PRINT "Unesite vrijednost unutar zadanih!" SLEEP 5 GOTO 40 ELSE CLS PRINT "Pocetna brzina izbacaja iznosi: "; v, "m/s" PRINT "Vrijednost kuta izbacaja tijela iznosi: "; q, "stupnjeva" Z = (q * CPI) / 180 Tm = (Z * v * SIN(Z)) / CGr MaxY = (v ^ 2 * (SIN(Z)) ^ 2) / (2 * CGr) MaxX = (v ^ 2 * (SIN(2 * Z))) / CGr PRINT PRINT "Maksimalna visina tijela je: "; MaxY; "m" PRINT "Domet kosog hica iznosi: "; MaxX; "m" PRINT "Vrijem leta tijela iznosi: "; Tm; "sek" PRINT PRINT "Slijedi crtanje krivulje leta" SLEEP 5 END IF800 GOSUB 1100900 SLEEP999 END ' Zavrsetak osnovnog programskog koda1000 REM Od ovog broja nadalje pocinju pod-programi

Page 35: PROGRAMIRANJE_-_QBASIC

1100 SCREEN 01150 CLS1200 t = 01250 koef = 5500 ' normalizacija prema velicinu ekrana za najveci x i y1300 REM Povratak na crtanje x = v * t * COS(Z) y = v * t * SIN(Z) - (CGr * t ^ 2) / 2 px = x / koef py = y / koefIF py >= 23 OR py < 0 OR px < 0 OR px >= 79 THEN GOTO 2000ELSE LOCATE (24 - py), (2 + px), 0: PRINT "*";END IF t = t + 1: GOTO 13002000 RETURN

U ovom primjeru koristi se programska struktura za nadzor prilikom dodijele vrijednosti varijablama. Nedostaje još dio koji bi nadzirao da li je pritisnuto slovo umjesto znamenke. To se može riješiti uporabom INKEY$ i nadzorom tipki s ucrtanim znamenkama. Naravno da se programski jod proširuje ali je stabilniji i robusniji. Dakle za naprednije korištenje uvijek konsultirati RTFM.

Matematika izračunavanja kosog hica nije neki napor ali je veliku problem u ovom jezičkom procesoru priječi iz prikaza s karakterima u grafički prikaz (SCREEN MOD-ovi), osobiti na novijim platformama. Zbog toga je za prikaz krivulje iskorišten karakter-mod , te su se rezultati morali obraditi na način da se mogu prikazati u polju od 24X80 karaktera sa zvjezdicama. Čemu služi normalizacija rezultata?

U ovom primjeru u pojedinim naredbenim linijama koriste se i logički operatori. No treba imati na umu da je logička konstrukcija tipa py >= 23 OR py <0 ispravna, a 23 <= py <0 nije.