Nizovi
Nizovi Mnogi programi rade s velikom količinom podataka. Ako se radi o tisućama brojeva (npr. plaća radnika), onda bi trebalo smisliti isto toliko različitih naziva varijabli. U QBasic-u možemo koristiti niz za spremanje veće količine istovrsnih podataka.
Zamislite da imate 10,000 šešira i da morate svakome od njih dati jedinstvenu oznaku. Kako biste to napravili? Bilo bi razumno svakom šeširu dati njegov broj. Sada možete tražiti “šešir 8432” ili poslati “šešir 844” na čišćenje. Korištenjem brojeva za označavanje šešira imate neiscrpnu zalihu imena za šešire.
Zamislite sada da imate kolekciju od 2,000 kravata Zamislite sada da imate kolekciju od 2,000 kravata. Možete li dati svakoj kravati njen broj? Sada vam je lako tražiti šešir 1,982 i kravatu 1,999 Dvije su stvari koje označavaju element: Ime kolekcije (“šešir" ili “kravata") Broj objekta Numeriranje unutar kolekcije ne ovisi o nijednoj drugoj kolekciji. Možete imati i šešir broj 863 i kravatu broj 863. Ne možete tražiti kravatu broj 2005 jer vaša kolekcija sadrži samo 2000 kravata…
Definiranje niza Niz definiramo primjenom instrukcije DIM DIM naziv_tip (broj elemenata niza) Primjer: DIM broj(5) – brojevni niz od 5 elemenata DIM mjesec$(12) – niz stringova od 12 elemenata
Označavanje jednog elementa niza Ime_niza(indeks) Npr., neka je DAY$ niz stringova koji označavaju dane u tjednu. Tada je DAY$(1) = "Monday" prvi element niza. DAY$ je naziv niza Koja je vrijednost varijable DAY$(1)?
Mora se unaprijed kazati koliko će elemenata biti u nizu DIM ime_niza( veličina ) Npr., DIM DAY$( 7 ) – računalo će rezervirati 7 lokacija DIM x(10) – računalo će rezervirati 10 lokacija DIM y(20,20) – dvodimenzionalna matrica Ako je DAY$ kao gore, da li je sljedeća linija moguća: DAY$(8) = “Neradni dan"
Indeksi elemenata niza mogu biti aritmetički izrazi. Npr., DAY$(n+3) Elementu niza može se pridijeliti i vrijednost neke druge varijable istog tipa podataka. Npr., DAY$(2)=a$
Niz je lista varijabli istog tipa Niz je lista varijabli istog tipa. Nizovi pomažu kod organiziranja višestrukih varijabli. DIM naredba služi za kreiranje niza (određuje se dimenzija niza). DIM a(5) Kreira niz a od 5 elemenata. 5 je dimenzija niza a(1) a(2) a(3) a(4) a(5) DIM a(5) FOR i = 1 to 5 READ a(i) NEXT i DATA 2, 4, 6, 8, 10 PRINT a(i); a = 2 b = 4 c = 6 d = 8 e = 10 PRINT a, b, c, d, e 2 4 6 8 10
Primjer 1. Kiša je padala dva od tri dana: Dan 1: 3.54 l Dan 2: 0.00 l Napišite program koji će pohraniti ove vrijednosti u niz RAIN i izračunati i ispisati prosjek padalina
Primjer 1. DIM RAIN(3) RAIN(1) = 3.54 RAIN(2) = 0 RAIN(3) = 1.79 SUM = RAIN(1) + RAIN(2) + RAIN(3) AVG = SUM / 3 PRINT "Prosjek: "; AVG; " litara" END Omogućite sada korisniku unošenje padalina.
Primjer 2. DIM RAIN(3) PRINT “Upišite padaline za dan 1:" INPUT RAIN(1) PRINT "Upišite padaline za dan 2:" INPUT RAIN(2) PRINT "Upišite padaline za dan 3:" INPUT RAIN(3) SUM = RAIN(1) + RAIN(2) + RAIN(3) AVG = SUM / 3 PRINT “Prosjek:", AVG, " litara“ END
Primjer 2. – s petljom DIM RAIN(3) FOR i=1 to 3 PRINT "Upišite padaline za dan " ; i INPUT RAIN(i) NEXT i SUM = RAIN(1) + RAIN(2) + RAIN(3) AVG = SUM / 3 PRINT “Prosjek:", AVG, " litara“ END
Primjer 3. Napišite program koji će izračunati prosjek padalina za proizvoljan broj dana Korisnik prvo mora kazati koliko dana želi. Unijeti količine padalina za svaki dan. Izračunati i ispisati prosjek padalina. Ispisati samo one dane kojima su padaline ispod prosjeka
Primjer 4. Pronađite grešku: PRINT “Koliko ima elemenata niza?" INPUT n DIM MYDATA( n ) FOR i=1 TO 25 MYDATA( i ) = 48.23 NEXT i FOR i=1 TO n PRINT MYDATA( i )
Primjer 5. Program za unos i smještanje u memoriju n brojeva, te njihov ispis u jednom redu ‘Unos i ispis niza od n brojeva CLS INPUT “Koliko ima brojeva?” , n 'definiranje niza DIM broj(n) 'unos clanova niza FOR i = 1 TO n INPUT "Unesi broj: ", broj(i) NEXT i 'Ispis niza PRINT "Ispis:" PRINT broj(i);
Primjer 6. (maksimum niza) Primjer: Sastaviti algoritam za određivanje najvećeg broja u nizu zadanih realnih brojeva.
Primjer 6. (maksimum niza) CLS PRINT “Koliko ima brojeva”; INPUT n DIM a(n) FOR i=1 TO n PRINT “Unesi “;i;”. broj “; INPUT a(i) NEXT I max=a(1) FOR i=1 TO n IF a(i)>max THEN max=a(i) END IF NEXT I PRINT “Najveći broj je “;max END
Primjer 6. (maksimum niza) CLS PRINT “Koliko ima brojeva”; INPUT n DIM a(n) FOR i=1 TO n PRINT “Unesi “;i;”. broj “; INPUT a(i) NEXT I max=a(1) poz=1 FOR i=1 TO n IF a(i)>max THEN max=a(i) poz=i END IF NEXT I PRINT “Najveći broj je “;max END Na kojoj poziciji u nizu se nalazi najveći element, tj. koji je indeks najvećeg elementa niza?