Tobias. Skrevet 14. februar 2009 Del Skrevet 14. februar 2009 (endret) Kunne noe kort fortalt meg logikken i en for løkke, har ikke helt skjønt mer enn dette: for(int i = 0; i < 17; ii++){ i=0, hvis i er mindre enn 17, så skal i øke med en, men fatter ikke helt hvordan dette brukes. Endret 14. februar 2009 av Tobias. Lenke til kommentar
kjartana Skrevet 14. februar 2009 Del Skrevet 14. februar 2009 (endret) Kunne noe kort fortalt meg logikken i en for løkke, har ikke helt skjønt mer enn dette: for(int i = 0; i < 17; ii++){ i=0, hvis i er mindre enn 17, så skal i øke med en, men fatter ikke helt hvordan dette brukes. Løkken sier at for alle heltall i fra i er 0 til 16 så skal det som står inne i påfølgende { } utføres. Og man bruker gjerne verdien i inne i løkken til noe om man vil Endret 14. februar 2009 av kjartana Lenke til kommentar
pgdx Skrevet 15. februar 2009 Del Skrevet 15. februar 2009 for(int i = 0; i < 17; ii++){ System.out.println(i); } Er mye det samme som: int i = 0; while (i < 17) { System.out.println(i); i++; } Men for-løkken har den fordelen at i forsvinner etter løkkekroppen. i=0, hvis i er mindre enn 17, så skal i øke med en, men fatter ikke helt hvordan dette brukes.Når skal dette brukes? Når man har en liste / array og vil gjøre det samme med hvert element. La oss si du har en liste over ansatte i en bedrift og vil skrive ut alle sammen: for (int i = 0; i < ansatte.length; i++) { System.out.println(ansatte[i]); } Eller hvis du bare vil skrive ut 8 mellomrom: for (int i = 0; i < 8; i++) { System.out.print(" "); } Lenke til kommentar
Cyberfrog Skrevet 15. februar 2009 Del Skrevet 15. februar 2009 Kan her også kanskje nevne "for-each"-varianten. Eksemplet nedenfor er lånt fra Sun (http://java.sun.com/j2se/1.5.0/docs/guide/...ge/foreach.html): // Returns the sum of the elements of a int sum(int[] a) { int result = 0; for (int i : a) result += i; return result; } ... som kunne sett slik ut med "vanlige" for-løkker: int sum(int[] a) { int result = 0; for (int i = 0; i < a.length; i++) result += a[i]; return result; } "For-each"-varianten fungerer ikke til alle "for-løkkeoppgaver" - noen begrensninger er beskrevet på siden jeg linket til. Men den er ofte veldig kjekk å ha. Lenke til kommentar
___ Skrevet 15. februar 2009 Del Skrevet 15. februar 2009 (endret) Kunne noe kort fortalt meg logikken i en for løkke, har ikke helt skjønt mer enn dette: for(int i = 0; i < 17; ii++){ i=0, hvis i er mindre enn 17, så skal i øke med en, men fatter ikke helt hvordan dette brukes. For-løkka benyttes hvis man har kode man skal utføre et bestemt antall ganger. I ditt eksempel vil for-løkka utføre eventuell kode innenfor krøllparentesene 17 ganger. I sin enkleste form kan for-løkka brukes slik: for (;;) {} Setningen over er ikke særlig nyttig, da løkka aldri vil stoppe. Inni for-løkkas parenteser kan vi plassere forskjellige typer uttrykk: * Initialisering * Terminering * Inkrementering / dekrementering Altså: for (<initialisering>; <terminering>; <inkrementering / dekrementering>) { <kode> } I eksempelet ditt er initialiseringsuttrykket ditt: int i=0; Termineringsuttrykket ditt er: i < 17 Så har du et inkrementeringsuttrykk, nemlig: i++ Initialiseringsuttrykket kjøres i det for-løkka starter. Da setter du 0 inn i variabelen i. Så er det slik at for-løkka kjører så lenge termineringsuttrykket ditt, i < 17, er sant (returnerer true). Når uttrykket ikke lenger er sant, så er for-løkka utført. For hver løkke utføres inkrementeringsuttrykket. I ditt tilfelle er det i++, altså variabelen i økes med en for hver gang. Husk at termineringsuttrykket hele tiden "passer på" om løkka skal kjøre, ved å sjekke om i < 17. Variabelen i er tilgjengelig innenfor for-løkkas parentes, men også innenfor krøllparentesene, det vil si i selve for-kroppen. Den kan du bruke, eller du kan la være. Eksempel: for(int i = 0; i < 17; i++) { System.out.println("variabelen i har nå verdien " + i); } Dette gir følgende output: variabelen i har nå verdien 0 variabelen i har nå verdien 1 variabelen i har nå verdien 2 variabelen i har nå verdien 3 variabelen i har nå verdien 4 variabelen i har nå verdien 5 variabelen i har nå verdien 6 variabelen i har nå verdien 7 variabelen i har nå verdien 8 variabelen i har nå verdien 9 variabelen i har nå verdien 10 variabelen i har nå verdien 11 variabelen i har nå verdien 12 variabelen i har nå verdien 13 variabelen i har nå verdien 14 variabelen i har nå verdien 15 variabelen i har nå verdien 16 Håper du ikke ble enda mer forvirret nå Hilsen Werner Endret 15. februar 2009 av wernie Lenke til kommentar
Tobias. Skrevet 15. februar 2009 Forfatter Del Skrevet 15. februar 2009 Takk, dette ble så mye klarere nå! Har lest "java for alle" men det står ikke så nøye forklart der. Vurderer meg å kjøpe "head first at java", er dette en god bok? andre anbefallinger? Lenke til kommentar
pgdx Skrevet 15. februar 2009 Del Skrevet 15. februar 2009 Dropp bøkene, get to programming! Finn deg noen kjekke oppgaver og spør her. Lenke til kommentar
Skagen Skrevet 15. februar 2009 Del Skrevet 15. februar 2009 (endret) Du har nok allerede forstått at FOR-løkker gjentar koden som man putter mellom { }. Men for å fortelle datamaskinen hvor mange ganger den skal kjøre igjennom løkka, så må vi lage et uttrykk som kan være sant eller usant. Så lenge uttrykket er sant, så vil datamaskinen starte på nytt i løkka når den har fullført en gjennomkjøring. Men for at vi skal kunne fortelle datamaskinen dette må vi oppgi tre argumenter, eller "regler", for FOR-løkka: 1. Hva utgangspunktet eller utgangsverdien skal være 2. Uttrykket som skal evalueres 3. Hva datamaskinen skal gjøre hver gang den har fullført en gjennomkjøring Vi kan bryte argumentene i FOR-løkka di opp i biter: FOR (int i = 0; i < 17; i++) { } Utgangspunktet: int i = 0 Vi deklarerer en heltallvariabel i som vi kan teste, et slags utgangspunkt. Variabelen i vil også holde tellinga på eksakt hvor mange ganger datamaskinen har gått igjennom FOR-løkka. Denne variabelen kan også være et annet heltall enn 0 om vi ønsker å starte tellinga på f.eks 4 eller -5. Uttrykket som skal evalueres: i < 17 Så lenge variabelen er mindre enn 17, så vil datamaskinen gjenta koden i løkka. Denne reglen er absolutt, og vi må passe på at vi ikke lager uttrykk som aldri blir usant. Ellers får vi en uendelig løkke. Hva som skal gjøres etter en gjennomkjøring: i++ Dette betyr det samme som "i + 1". Altså vi legger til én til variabelen i for hver gang løkka er kjørt igjennom. Når i settes til 0 betyr dette at løkka kjøres igjennom 17 ganger. Etter den 17ende gangen vil ikke i lengre være mindre enn 17, og uttrykket er usant. Da stopper også gjennomkjøringa av løkka. Endret 15. februar 2009 av Skagen Lenke til kommentar
iNeo Skrevet 15. februar 2009 Del Skrevet 15. februar 2009 Kan ingenting i Java, men det ser ut som at hver gang løkken starter på nytt pga. den er mindre en 17, vil den også settes til 0. Altså, det jeg mener er at i koden din så har du skrevet en For løkke, men i den løkka så har du "int i = 0; neste; neste", hver gang den løkka kjører vil jo den kjøre int i = 0??? Lenke til kommentar
steingrim Skrevet 15. februar 2009 Del Skrevet 15. februar 2009 for (intiialisering; uttrykk; oppdatering) initialiserings-setningen utføres bare én gang, før løkken starter. Løkken kjører så lenge uttrykket er sant og for hver iterasjon kjøres oppdaterings-setningen. Altså vil den ikke kjøre int i=0 hver gang, bare første gang. Lenke til kommentar
Tobias. Skrevet 15. februar 2009 Forfatter Del Skrevet 15. februar 2009 Dropp bøkene, get to programming! Finn deg noen kjekke oppgaver og spør her. Ref. signatur har noen linker til oppgaver som har blitt gitt på Høyskoler, universiteter eller lettere oppgaver? Lenke til kommentar
x871kx6167ss7 Skrevet 15. februar 2009 Del Skrevet 15. februar 2009 http://www.uio.no/studier/emner/matnat/ifi/INF1000/ Inf1000 er UiO sitt innføringskurs i java. Trykk deg inn på semestersidene (står på høyre side, vår2008 osv). Der kan du finne: Ukeoppgaver Obligatoriske oppgaver (oblig). Forelesningsnotater (Skjekk under detaljert undervisningsplan.) Lenke til kommentar
pgdx Skrevet 15. februar 2009 Del Skrevet 15. februar 2009 Dropp bøkene, get to programming! Finn deg noen kjekke oppgaver og spør her. Ref. signatur har noen linker til oppgaver som har blitt gitt på Høyskoler, universiteter eller lettere oppgaver? Tja, de største universitetene i Norge har ofte massevis ute, for UiB er det INF100 som er mest aktuelt for deg. Men i tillegg kan du også få massevis av oppgaver andre steder, for eksempel på Project Euler, UVa Online Judge og Sphere Online Judge. Der er det flere oppgaver enn det er mulig å løse iløpet av et helt liv. Det eneste det står på er motivasjonen. Hvis du er glad i matematikk, anbefaler jeg deg Project Euler, ellers vil det kanskje være fornuftig å begynne på Sphere. Opprett en ny tråd dersom du setter deg fast. Lenke til kommentar
Z_AGo Skrevet 16. februar 2009 Del Skrevet 16. februar 2009 Sett deg ned men penn og papir! skriv hvert steg i koden! da skjønner du det tro meg! hehe Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå