Programiranje
Transcription
Programiranje
Osnovni elementi Podatki Konstante Spremenljivke Ukazi Osnove programiranja Prireditve in izrazi - računanje Zajemanje podatkov in izpis Kontrola in vodenje programa (vejitve in zanke) S primeri v programskem jeziku FORTRAN in JavaScript Strukture Komentarji Funkcije, metode in podprogrami Objekti in podatkovne strukture Borut Golob Računalništvo - osnove programiranja Podatki Zapis podatkov v računalniku Konstante – vrednosti se ne spreminjajo Način zapisa v pomnilniku Zapis s števili ali znaki Imenovane konstante (const, parameter …) 2 odvisen od tipa podatkov – različna predstavitev iste kombinacije bitov Natančnost in obseg Spremenljivke – vrednost se lahko spreminja odvisen od dodeljene količine pomnilnika običajno 1 bajt (8 bit), 2 bajta (16bit), 4 bajte (32 bit) ali 8 bajtov (64 bit) v posebnih primerih moţne operacije na nivoju bita Prireditev poljubne vrednosti Odvisno od tipa podatkov Istočasno pomnijo eno vrednost Polja – vrste, tabele … več vrednosti, določene z indeksi Sklicevanje z imeni Borut Golob Računalništvo - osnove programiranja 3 Borut Golob Računalništvo - osnove programiranja Osnovni tipi podatkov Sestavljeni tipi podatkov Numerični podatki Sestavljeni iz osnovnih tipov Običajno jih definira uporabnik – programer Moţnost dostopa do posameznih elementov Cela števila – brez decimalk + Absolutna natančnost, - omejen obseg Decimalna števila – zapis s plavajočo vejico (angl. Floating point) + povečan obseg, - omejena natančnost Zgled: Definiran tip “Zobnik” – vsebuje podatke: Nenumerični podatki Besedilo – poljubni znaki Logični podatki – dve vrednosti: true, false Borut Golob Računalništvo - osnove programiranja 5 Odvisen od programskega jezika Različna slovnična pravila Običajno razdeljen na ukazne vrstice Uporaba dovoljenih simbolov Rezervirana imena – programski ukazi Komentarji Računalništvo - osnove programiranja Borut Golob besedilo, 10 znakov celo število decimalno število logična vrednost Računalništvo - osnove programiranja 6 Opredelitev podatkov definicija spremenljivk Vhod – vnos potrebnih podatkov Obdelava podatkov Namenjeni programerju, ne računalniku Izboljšajo preglednost kode in olajšajo spremembe Večinoma ne vplivajo na hitrost izvajanja Borut Golob Oznaka: Število zob: Modul : Čelni zobnik: Elementarni deli programa Zapis programske kode 4 7 Algebraične rešitve (numerične) Razvejitev – logične odločitve Ponavljanje – zanke Izhod – prikaz rezultatov Shranjevanje (podatkov in rezultatov). Borut Golob Računalništvo - osnove programiranja 8 Razlike v zapisu FORTRAN = FORmula TRANslation Zapis komentarja in programske vrstice v treh programskih jezikih Najboljši jezik za znanstvene aplikacije in numerično matematiko. Je standarden: vsebuje sintaktična pravila, ki jih je mogoče na kateremkoli računalniku: pisati, prevajati in izvajati. Standardi se dopolnjujejo z razvojem programskih jezikov. Verzije: ! Fortran IF (n>0) x=-x ’ VisualBasic IF n>0 then x=-x // JavaScript IF (n>0) {x=-x} Borut Golob Računalništvo - osnove programiranja FORTRAN I FORTRAN IV (ANSI 1960) FORTRAN 77 (ANSI 1977) FORTRAN 95 (ANSI 1995) FORTRAN II FORTRAN 66 (ANSI 1966) FORTRAN 90 (ANSI 1990) FORTRAN 2003 (zadnja verzija) HPF – High Preformance Fortran – paralelno procesiranje 9 Borut Golob Računalništvo - osnove programiranja 10 Zgled programa Program v FORTRAN90 Računanje korenov kvadratne enačbe: Ax2+Bx+C=0 ima znano rešitev PROGRAM REALNI_KORENI ! Program resi kvadratno enačbo: Ax**2+Bx+C=0 IMPLICIT NONE REAL :: A,B,C ! Deklaracija spremenljivk REAL :: diskriminanta,ko1,ko2 PRINT*,'Vnesi koeficiente A,B,C' READ*,A,B,C ! Bere koeficiente enačbe diskriminanta=b**2-4.0*A*C ! Računa diskriminanto IF(diskriminanta<0.0)THEN PRINT*,' ni realnih korenov' ELSE ! izračun korenov ko1=(-B+SQRT(diskriminanta))/(2.0*A) ko2=(-B-SQRT(diskriminanta))/(2.0*A) PRINT*, 'korena sta:',ko1,ko2 ! Izpise oba korena ENDIF END PROGRAM REALNI_KORENI B B 2 4 AC x 2A kjer so koreni realni če je diskriminanta (B2-4AC) večja ali enaka nič. Izgled programa, ki zahteva koeficiente enačbe (A,B,C) in izpiše realne korene kvadratne enačbe, ponazarja mnoge lastnosti programskega jezika Fortran. Borut Golob Računalništvo - osnove programiranja 11 Borut Golob Računalništvo - osnove programiranja Struktura programa v Fortran JavaScript = ECMAScript ≠ Java Program IME Glava s komentarji, namenom programa, avtor Deklaracija spremenljivk 12 Skriptni jezik – (script = ukazna datoteka) Tolmač (angl. Interpter) – sprotno izvajanje Izvajanje v brskalniku – večina podpira Razvoj 1995 – Sun -> Java Istega leta – Netscape – Live script Telo programa Kasneje preimenovan v JavaScript Konkurenca – Jscript (Microsoft iz VBScript) End Standardizacija – ECMAscript Borut Golob Računalništvo - osnove programiranja 13 Borut Golob Računalništvo - osnove programiranja JavaScript - uporaba JavaScript - umestitev Tekstna datoteka s pripono .html V telo – <body> <html> <body> <script type="text/javascript"> <!-document.write("Program v JavaScriptu"); //--> </script> </body> </html> Borut Golob Računalništvo - osnove programiranja 14 Izvajanje takoj V glavo – <head> Imenovanje – definicija: function Ime() Izvajanje ob klicu Lahko tudi ob nalaganju: <body onload=“Ime()”> Zunanja datoteka s končnico .js Vključitev z določilom src <script type="text/javascript" src="xxx.js"></script> 15 Borut Golob Računalništvo - osnove programiranja 16 Tipi podatkov - FORTRAN Zgled Numerični: // berem podatke – koeficiente enačbe var a=+prompt("Vnesi a","1"); var b=+prompt("Vnesi b","-5"); var c=+prompt("Vnesi c","3"); var d=b*b-4*a*c; //izračun diskriminante – – – – Cela števila Realna (decimalna) števila Kompleksna števila Dvojna natančnosti Nenumerični: if (d<0) { document.write("Ni realnih korenov") } else { //Izračun korenov var x1=(-b+Math.sqrt(d))/(2*a) var x2=(-b-Math.sqrt(d))/2/a document.write("X1="+x1 + ",<BR>X2=" + x2) } Borut Golob INTEGER REAL COMPLEX DOUBLE PRECISION CHARACTER LOGICAL – Znakovni podatki – Logični (.TRUE. .FALSE.) Izvedeni: programer definira kombinacijo tipov spremenljivk (podobno kot v objektnih jezikih) 17 Računalništvo - osnove programiranja Borut Golob Računalništvo - osnove programiranja Cela števila - INTEGER Decimalna števila - REAL Obseg 4 bajte (32 bit) Obseg 4 bajte (32 bit) -231 231-1 Razpon: do -2.147.483.648 do +2.147.483.647 1 bit predznak, 23 bit mantisa, 8 bit eksponent Natančnost 6 mest Razpon: ~ od -1038 do -10-38 , 0 in od 10-38 do 1038 Deklaracija spremenljivk: Deklaracija spremenljivk: INTEGER :: ime INTEGER :: datum, k=4, limita REAL :: ime REAL:: x, y=100.001, z Imenovana konstanta Integer, parameter:: Nula=0 Borut Golob Imenovana konstanta Real, parameter:: Pi=3.141592 20 Računalništvo - osnove programiranja Borut Golob Računalništvo - osnove programiranja Dvojna natančnost Kompleksna števila - COMPLEX Obseg 8 bajt (64 bit) Par realnih števil Natančnost 16 mest Razpon: ~ -10308 do -10-308 in 10-308 do 10308 Obseg 2×4 bajt (2×32 bit) Deklaracija spremenljivk: DOUBLE PRECISION:: ime ali REAL*8 :: ime REAL*8:: determinanta, veliko=1d0 COMPLEX:: z, kompl=(1.0, 2.0) Zapis konstante Par realnih števil v oklepaju, ločen z vejico (0., 0.) (1e0,-3.2e-1) Z = (1.2e3, 0.3) Zapis konstante – eksponentni zapis z D 1D0 1.234567890123456d308 22 Računalništvo - osnove programiranja Logične spremenljivke - LOGICAL Borut Golob Računalništvo - osnove programiranja 23 Znakovne spremenljivke Deklaracija: Obseg: dve moţni vrednosti: .TRUE. CHARACTER [(len=20)] :: ime[*15] CHARACTER, len=5 :: Ime='Janez', B*12 CHARACTER :: beseda*6, C*12 CHARACTER*10::a,niz*25,cifre='0123456789' .FALSE. Deklaracija: Prireditev: LOGICAL :: ime LOGICAL:: predlog =.FALSE., pogoj CHARACTER (len=20):: univerza univerza ="Univerza v Mariboru " univerza ="Ljudska Univerza v Kranju" predolg zapis univerza ="Oxford" - ostanek zapolni s presledki Prireditev: pogoj=.TRUE. Borut Golob 21 Prvo je realni del, drugo imaginarni del števila Deklaracija spremenljivk: Borut Golob 19 Računalništvo - osnove programiranja 24 Borut Golob Računalništvo - osnove programiranja 25 IMPLICIT NONE Podatkovni tipi - JavaScript Izključi privzete deklaracije osnovni tipi: Integer začne s črkami I, J, K, L, M, N, vse druge so real Takoj za stavkom PROGRAM ali SUBROUTINE Vse spremenljivke je potrebno deklarirati – izogibanje napakam program test implicit none deklaracije spremenljivk instrukcije - telo programa end program test Borut Golob objekt - object 26 Realna – celi del, pika, decimalni del, eksponent 3.1415 10. .5 3.1E12 .1e12 2e-12 konstant, spremenljivk, funkcij s pomočjo operacij – aritmetičnih, znakovnih, logičnih Zgledi: 3.1415927; Pi; 'Besedilo' i+1; 2*Pi*r; i+j**2/(1-x*x) SQRT(x**2+y**2); sin(fi*Pi/180) 'Gospod '//Priimek - tekstni izraz .not.(x > y .or. .true.) – logični izraz 28 Računalništvo - osnove programiranja Aritmetični operatorji - FORTRAN predstavitev potenciranje mnoţenje deljenje seštevanje odštevanje Borut Golob Operator Opis 1 2 2 3 3 seštevanje x=y+2 x=7 - odštevanje x=y-2 x=3 * mnoţenje x=y*2 x=10 / deljenje x=y/2 x=2.5 % modulus (ostanek) x=y%2 ++ Increment (porast) x=++y=y+1 x=6 -- Decrement (upad) Enako kot x=y += x+=y x=x+y x=15 -= x-=y x=x-y x=5 *= x*=y x=x*y x=50 /= x/=y x=x/y x=2 %= x%=y x=x%y x=0 Borut Golob b+c*d/e-f**g/h+i*j+k x=5 Računalništvo - osnove programiranja 31 nedovoljene operacije: deljenje z 0, 0neg prednostne operacije (z leve) in oklepaji Rezultat = x=4 Računalništvo - osnove programiranja Osnovne aritmetične operacije Če je x=10 in y=5 zgled x=--y = y-1 x=1 30 Prireditveni operatorji - JavaScript Operator Zgled: y=5 Rezultat + Borut Golob Računalništvo - osnove programiranja 29 Računalništvo - osnove programiranja Aritmetični operatorji - JavaScript prednost pri izvajanju ** * / + - Borut Golob 27 Računalništvo - osnove programiranja Postopek za določitev vrednosti iz Infinity – presega obseg NaN – Not a Number Operator Borut Golob Izraz – aritmetični, znakovni, logični Število - number Borut Golob nedoločen tip - undefined prazen tip - null logični tip - boolean – true, false število - number niz - string – med narekovaji (' ali " - enaki) posebni znaki za \, npr. \", \n – nova vrsta sestavljeni tipi: Računalništvo - osnove programiranja Cela - integer 25 0 812376348 0x5ab7 0Xa0F 0xFFFF 0126 05 aritmetični izraz 1+2*3 10/2*5.0 -b**2/2.0 a/b**2 - c i**j**2 32 Borut Golob se izvede (z oklepaji) 1+(2*3) (10/2)*5.0 -((b**2)/2.0) (a/(b**2)) – c i**(j**2) – potenciranje je izjema (z desne) Računalništvo - osnove programiranja 33 Vgrajene funkcije - FORTRAN Metode objekta Math – JavaScript funkcija opis argument vrednost SQRT(X) kvadratni koren REAL REAL SIN(X) sinus (radiani) REAL REAL COS(X) kosinus (radiani) REAL REAL TAN(X) tangens (radiani) REAL REAL ABS(X) absolutna vrednost INTEGER/REAL INTEGER/REAL EXP(X) naravna eksponentna funkcija e REAL REAL LOG(X) naravni logaritem REAL REAL MAX(X1,...,Xn) maksimum x1 do xN INTEGER/REAL INTEGER/REAL MIN(X1,...,Xn) minimum x1 do xN INTEGER/REAL INTEGER/REAL LEN(C) dolţina znakovne vrednosti CHARACTER INTEGER MOD(y,x) celoštevilčni ostanek pri deljenju y/x INTEGER/REAL INTEGER/REAL LOG10(x) desetiški logaritem REAL REAL INT(X) celoštevilčni del realne vrednosti x REAL INTEGER REAL(I) pretvorba cele vrednosti v realno INTEGER REAL Borut Golob Računalništvo - osnove programiranja 34 Vhod in izhod - FORTRAN Math.log(a) Math.max(a,b) Math.min(a,b) Math.pow(a,b) Math.random() Math.round(a) Math.sin(a) Math.sqrt(a) Math.tan(a) Računalništvo - osnove programiranja READ oblika, seznam PRINT oblika,seznam Stavek READ – privzeta naprava: tipkovnica READ *,a PRINT*,'a=',a * - privzeta oblika – najpogosteje številka stavka FORMAT, ki vsebuje formatna določila formatna določila v oklepaju kot znakovna konstanta seznam – seznam spremenljivk, konstant ali izrazov Stavek PRINT – privzeta naprava: zaslon Oblikovanje izpisa – FORMAT privzeto * Stavek FORMAT (formatna določila) Besedilni niz '(formatna določila)' READ*,a,b; PRINT*,a,b READ*,a READ*,b PRINT*,’To je a:’,a,’ in PI=’,3.1415 PRINT*,"koren stevila ",a," je ",SQRT(a) 36 Borut Golob Računalništvo - osnove programiranja Vhod in Izhod – JavaScript Vhod in Izhod – JavaScript Nima vgrajenih funkcij Nima vgrajenih funkcij Odvisen od gostitelja Odvisen od gostitelja Pojavno okno – alert Pojavno okno – alert alert("To je pojavno okno") Metoda write objekta document document.write("besedilo" + spremenljivka) document.write("besedilo" + spremenljivka) Oblikovanje z uporabo značk html Oblikovanje z uporabo značk html document.write("<h1>Rezultat</h1><big>X <sub>1</sub>="+x1+"</big> <br />X<sub>2</sub>="+x2) Računalništvo - osnove programiranja 37 alert("To je pojavno okno") Metoda write objekta document Borut Golob 35 oblika – podano oblikovanje: Prikaz rezultatov – program izpiše Računalništvo - osnove programiranja Borut Golob Enostavni Vhod in Izhod (IO) Podajanje vrednosti – program bere Borut Golob Math.abs(a) Math.acos(a) Math.asin(a) Math.atan(a) Math.atan2(a,b) Math.ceil(a) Math.cos(a) Math.exp(a) Math.floor(a) document.write("<h1>Rezultat</h1><big>X <sub>1</sub>="+x1+"</big> <br />X<sub>2</sub>="+x2) 38 Branje – vnos podatkov Borut Golob Računalništvo - osnove programiranja 39 Branje – vnos podatkov Formularji na spletnih straneh Pojavno okno prompt – vrne besedilo <form …> Pojavno okno confirm – vrne logično vrednost var ime=prompt("Vnesite ime") Pretvorba v število –parse parseInt(niz,št.sistem) – pretvorba v celo število parseFloat(niz) – pretvorba v realno število Vedno samo ena vrednost var odgovor=confirm("Ţelite nadaljevati“) var vrednost=+promt("Vnesite vrednost") Borut Golob Računalništvo - osnove programiranja 41 Borut Golob Računalništvo - osnove programiranja 42 Primer programa - FORTRAN Imena spremenljivk - čitljivost dobro Sila pospesek masa program pretvorba_F_to_C implicit none ! Pretvorba iz stopinj Fahrenheita v Celsius ! Izpis rezultatov na zaslon real, parameter :: factor = 1.8 real ::temp_fahr, temp_cels print *, 'Vnesi temperaturo v stopinjah Fahrenheit' read *, temp_fahr temp_cels = (temp_fahr – 32.0) / factor print *, ‘Temperatura je', temp_cels,'stopinj C' end program pretvorba_F_to_C Borut Golob 43 Računalništvo - osnove programiranja slabo f a m grdo x y z program crap print *, 'temp' read *, x y = (x – 32.0)/1.8 print *, y end program crap Borut Golob Računalništvo - osnove programiranja 44 Zgled izvajanja Razvejitev programa Pogojni stavki in odločitve Borut Golob 45 Računalništvo - osnove programiranja Vejenje 2. Borut Golob Procesor izvaja ukaze po podanem vrstnem redu, če ne določimo drugače (von Neumann) Odločitev, odvisno od pogojev, ali naj bo niz instrukcij izveden, 46 Izvajanje odvisno od izpolnitve pogoja Pogoj – logični izraz Rezultat: TRUE ali FALSE Zgledi: Odločitev, odvisno od pogojev, kateri (izmed več) niz instrukcij bo izveden 47 Računalništvo - osnove programiranja Primerjalni operatorji (angl.) Večji (Greater Than) Večji ali enak (Greater or Equal) Manjši (Less Than) Manjši ali enak (Less or Equal) Enak (EQual) Neenak (Not-Equal) Logični operatorji IN (oba true) ALI (vsaj eden true) NEGACIJA Borut Golob Računalništvo - osnove programiranja Pogojni stavki Vejenje omogoča: 1. Borut Golob Visual Java Fortran Basic Script > .GT. > > >= .GE. >= >= < .LT. < < <= .LE. <= <= == .EQ. = == /= .NE. <> != .AND. .OR. .NOT. Računalništvo - osnove programiranja And Or Not && || ! 49 X==Y I>0 Ocena>50 && Ocena<=100 Pogoj1 .OR. Pogoj2 .OR. Pogoj3 Borut Golob Računalništvo - osnove programiranja 48 Blok IF – THEN – END IF (Fortran) IF (pogoj) Then Če je pogoj izpolnjen (.true.) se stavki med Then in End If izvedejo, sicer pa ne Izvršilni stavki … END IF Kratka oblika – Stavek IF Če je pogoj izpolnjen se IF (pogoj) Stavek Borut Golob stavek (samo en) izvede, sicer pa ne Računalništvo - osnove programiranja 50 Blok IF – THEN – END IF Pogojni stavek - IF (JavaScript) Stavek IF - Kratka oblika if (pogoj) Stavek IF Sestavljeni stavek Izvršilni stavki … NE Zgled - JavaScript if (X>Max) { Max = X; } Then Izvršilni stavki Kratka oblika } End if Borut Golob 51 Računalništvo - osnove programiranja Oblika zapisa Fortran Java Script Visual Basic if (pogoj) { stavki } IF (n==0) {X=X/100} 53 Blok IF – THEN – ELSE – END IF Zgled DA Else Izvršilni stavki - FORTRAN Borut Golob Zgled Računalništvo - osnove programiranja – JavaScript 55 Blok IF – THEN – ELSEIF – END IF if (pogoj1) { izvršilni stavki } else if(pogoj2) { izvršilni stavki } else { izvršilni stavki ELSE sicer pa stavki med Else in End If END IF Borut Golob 54 Računalništvo - osnove programiranja Če je izpolnjen pogoj1 (.true.) se izvedejo stavki med Then in ElseIf, Izvršilni stavki sicer, če je izpolnjen ELSE IF(pogoj2)Then pogoj2, se izvedejo stavki med Then in Izvršilni stavki naslednjim ElseIf ali Else IF (pogoj1) Then ELSE if(x>y){y=x} else {x=y} End if se izvedejo stavki med Then in Else, Blok IF – THEN – ELSEIF – END IF IF(X>Y)THEN Y = X ELSE X = Y END IF NE Izvršilni stavki Če je pogoj izpolnjen (vrednost = .true.) Izvršilni stavki … IF n=0 then X=X/100 Računalništvo - osnove programiranja 52 Računalništvo - osnove programiranja Izvršilni stavki … IF pogoj Then stavki End If Then Borut Golob IF (pogoj) Then IF (n==0) X=X/100 Pogoj ? if (X>MAX) MAX=x Blok IF – THEN – ELSE – END IF kratka oblika IF (pogoj) THEN stavki ENDIF Borut Golob Če je izpolnjen pogoj1 (.true.) se izvede prvi blok stavkov med { in }, sicer, če je izpolnjen pogoj2, se izvede drugi blok stavkov med { in } Število stavkov ElseIf je neomejeno sicer pa, če noben pogoj ni izpolnjen, se izvede zadnji blok stavkov med { in } Število stavkov ElseIf je neomejeno Izvršilni stavki sicer pa stavki med Else in End If END IF Borut Golob 56 Računalništvo - osnove programiranja Blok IF – THEN – ELSEIF - ELSE IF ELSEIF Pogoj ? NE Pogoj ? DA Then Izvršilni stavki NE DA Then Izvršilni stavki Else Izvršilni stavki End if { Borut Golob Pogoj ? - FORTRAN IF (X>Max) THEN Max = X END IF DA Če je pogoj izpolnjen (.true.) se izvedejo stavki v bloku med { in }, sicer pa ne. if (pogoj) { IF Zgled Če je pogoj izpolnjen se stavek (samo en) izvede, sicer pa ne Računalništvo - osnove programiranja 57 Borut Golob Računalništvo - osnove programiranja 58 Zgled – JavaScript Zgled – Fortran If (X > print Else If print Else print End If if (x > y ) { document.write ('x je večji') } else if (x < y ) { document.write ( 'x je manjši') } else { document.write ( 'x in y sta enaka') } Y ) Then *, 'X je večji' (X < Y ) Then *, 'X je manjši' *, 'X in Y sta enaka' Borut Golob 59 Računalništvo - osnove programiranja Zgled – JavaScript – krajši zapis Select case (izraz) case( izbira 1) then nabor ukazov 1 case( izbira 2) then nabor ukazov 2 ... case default nabor ukazov N Endselect if (x > y ) document.write ('x je večji') else if (x < y ) document.write ( 'x je manjši') Izraz je cela, logična ali znakovna vrednost; izbira je razpon od:do ali seznam else document.write ( 'x in y sta enaka') 61 Računalništvo - osnove programiranja Zgled SELECT CASE – Fortran if (pogoj) { } _________________ if(pogoj) { ukazi … } else { ukazi … } Borut Golob UKAZI 1 DA UKAZI 2 DA UKAZI N NE Izbira 2 NE nobena NE 62 If (pogoj) Ukaz __________________ Ukazi… End If _________________ If(pogoj) Then Ukazi … Else Ukazi … End If 63 Borut Golob If(pogoj) Then Ukazi … Else If(pogoj) Then Ukazi … … poljubno mnogo Elseif Else Ukazi … End If Računalništvo - osnove programiranja 64 – JavaScript if (pogoj) ukaz __________________ ukazi… DA Računalništvo - osnove programiranja If (pogoj) Then Računalništvo - osnove programiranja Povzetek - vejenje Borut Golob Izbira 1 Povzetek - vejenje – Fortran integer:: met, cilj ... select case (met) case(7,11) print*,’ zmaga’ case(2,3,12) print*,’ poraz’ case default cilj = met print*,’ meci dokler nimas’,cilj endselect Borut Golob 60 Računalništvo - osnove programiranja Večkratna izbira (Select case) if (x > y ) document.write ('x je večji') else if (x < y ) document.write ( 'x je manjši') else document.write ( 'x in y sta enaka') Borut Golob Borut Golob Ponavljanje in Zanke if(pogoj) { ukazi … } else if(pogoj) { ukazi … Neštete zanke Zanke z določenim številom ponovitev … poljubno mnogo elseif { else ukazi … Računalništvo - osnove programiranja } 65 Borut Golob Računalništvo - osnove programiranja 66 Ponavljanje izvajana - zanka for ali DO Del programske kode izvedemo večkrat: 1. Ponavljanje enakih stavkov z znanim številom ponavljanj (štete zanke) 2. Ponavljanje enakih stavkov neznano število krat, dokler velja določen pogoj (logične zanke DO in DO WHILE) Borut Golob Računalništvo - osnove programiranja Struktura zank DO - Fortran Izvaja stavke med stavkom DO in END DO. [labela:] DO index = od,do,korak … … … END DO [labela] [labela:] DO ! Neskončna zanka … … … IF(pogoj)EXIT … … … END DO [labela] [labela:] DO WHILE (pogoj) … … … END DO [labela] 67 Borut Golob Računalništvo - osnove programiranja 68 Zanka DO – sintaksa Zanka DO – sintaksa Zanka se prične z ukazom DO in konča s stavkom END DO. Če je podano ime (labela:) zanke DO na začetku, mora biti zapisano enako ime tudi na koncu (ENDDO labela). index – indeks zanke je celo število (INTEGER). od,do,korak – so cela števila ali celoštevilčni izrazi od in do sta skrajni vrednosti. korak (inkrement), ki je lahko pozitiven ali negativen. Če ni podan je njegova vrednost 1. Če je korak pozitiven, bo zanka DO nehala delovati ko je index > do. Zanka DO brez index, mora imeti vsaj eno preverjanje izvajanja. Zanka DO WHILE se izvaja le kadar je pogoj izpolnjen in neha delovati, ko pogoj ni izpolnjen. Uporabimo kadar ne poznamo števila ciklov. Če je gnezdenih več zank DO, mora biti ena zanka v celoti znotraj druge. Ukaz CYCLE - preskoči na konec aktivne zanke. Ukaz EXIT - prekine izvajanje aktivne zanke DO. Izvajanje zanke lahko zapustimo (EXIT), ne moremo pa prenesti izvajanja v zanko. Borut Golob Računalništvo - osnove programiranja 69 Primeri zank – Fortran Računalništvo - osnove programiranja 70 Primeri zank – Fortran Šteta zanka Šteta zanka DO L = 1, 5 PRINT*,L,'. ponovitev' END DO Nešteta zanka L = 1 DO if(L>5) exit PRINT*,L,'. ponovitev‘ L = L + 1 END DO Borut Golob Borut Golob do stevec=1,nmax,2 print*,stevec,liha stevila' Enddo L = 1 DO WHILE(L<=5) PRINT*,L,’. ponovitev’ L=L+1 END DO Računalništvo - osnove programiranja 71 Zanka while - JavaScript Nešteta zanka stevec=2 Do If (stevec>nmax) exit print*,stevec,'parna stevila‘ stevec = stevec + 2 enddo Borut Golob Računalništvo - osnove programiranja 72 Zanka for - JavaScript while ( pogoj) stavek Zgledi: for (start; pogoj; korak) stavek Zgleda: while (confirm("Nadaljujem")) var i=0 while(i<10)document.write("<br>I= "+i++); for (k=3; k<=Math.sqrt(n); k=k+2) { if(n%k==0) document.write(k+' deli '+n+'<br>') } var i=1 while (i<10) { document.write("<br> Število " + i); i=i+2 } Borut Golob Računalništvo - osnove programiranja for (i=0; i<=10; i++) document.write("<br />I= " + i) 73 Borut Golob Računalništvo - osnove programiranja 74 Zanka do - JavaScript Nadzor izvajanja zanke do { CYCLE – Fortran continue – JavaScript stavki } while (pogoj) Vsaj eno izvajanje – kontrola na koncu Obvezno pisanje z { oklepaji } Preskoči ostanek zanke in nadaljuje izvajanje na začetku zanke – nov korak Zgled: EXIT – Fortran break – JavaScript i=0 do { i=i+3 document.write("<br />I= " + i) } while(i<15) Borut Golob Računalništvo - osnove programiranja Začetek zanke Prekine izvajanje zanke in nadaljuje izvajanje na prvem stavku, ki sledi zanki 75 Borut Golob CYCLE continue EXIT break Konec zanke Nadaljevanje Računalništvo - osnove programiranja Zgled – CYCLE / continue Zgled – EXIT / break Izpis števil brez mnogokratnikov števila 3 Ugotavljanje ali je število n praštevilo FORTRAN FORTRAN DO i = 1, n IF(i==i/3*3) CYCLE PRINT *, i END DO DO i = 2, n-1 IF (MOD(N,I)==0) EXIT END DO IF (i==n) PRINT *, n,' je prastevilo‘ JavaScript JavaScript for(i=1;i<=n;i++) { if(i%3==0) continue document.write ('<br>'+i) } for(i=2;i<n;i++) { if(n%i==0) break } if (i==n) document.write (n+' je praštevilo<br>‘) Borut Golob Računalništvo - osnove programiranja 77 Borut Golob Računalništvo - osnove programiranja Gnezdene strukture Označevanje zank Zanke in pogojne stavke (if) lahko gnezdimo Notranja struktura mora biti v celoti vsebovana v zunanji strukturi Zgled: Pravilno Napačno Zanke lahko tudi označimo DO DO IF ( pogoj ) THEN END IF END DO Borut Golob Oznaka – poljubno ime z dvopičjem: zunaj: DO i=1,5 not: DO j=1,3 PRINT *, i, j END DO not END DO zunaj END DO END IF Računalništvo - osnove programiranja 79 78 Izboljšanje preglednosti Sklicevanje na oznako - FORTRAN IF ( pogoj ) THEN 76 Borut Golob -JavaScript Zunaj: for(i=1;i<=5;i++) { Not: for(j=1;j<=3;j++) document.write(i+', '+j) } Računalništvo - osnove programiranja 80