Præsentation er lastning. Vent venligst

Præsentation er lastning. Vent venligst

FEN 2006-11-6IntroJava2006 - AAU1 Loops og algoritmer Sweep – for-loop Søgning – while-loop.

Lignende præsentationer


Præsentationer af emnet: "FEN 2006-11-6IntroJava2006 - AAU1 Loops og algoritmer Sweep – for-loop Søgning – while-loop."— Præsentationens transcript:

1 FEN 2006-11-6IntroJava2006 - AAU1 Loops og algoritmer Sweep – for-loop Søgning – while-loop

2 FEN 2006-11-6IntroJava2006 - AAU2 Algoritmeskabeloner – eller mønstre Mange problemer kan løses ved algoritmer, som følger et givet mønster Et mønster er en abstrakt beskrivelse af løsning på en familie af problemer Et mønster beskriver en velprøvet og god løsning Ved eksplicit at arbejde med mønstre –udgår man at opfinde den dybe tallerken hver gang (genbruger gode ideer) –det bliver lettere at dokumentere og kommunikere løsninger Mønstre (ikke kun for algoritmer) er et centralt begreb i softwarekonstruktion

3 FEN 2006-11-6IntroJava2006 - AAU3 Algoritmemønstre … Der findes mange: Sweep Pattern Search Pattern Merge Pattern Divide and Conquer Pattern Greedy Pattern Backtracking Pattern Dynamic Programming Pattern And many others… Vi ser kun på swep og search her.

4 FEN 2006-11-6IntroJava2006 - AAU4 Sweep-algoritmer Gennemløber en collection (fx array) af elementer, ser på hvert element og gør evt. noget ved elementet Løber altid hele collectionen i gennem Eksempler: –Summere tallene i et array, finde gennemsnit, finde maximum og/eller minimum –Tælle antal elementer med en eller anden egenskab; fx tælle antal studenter, som har opnået en given karakter –Beregne en kundes totale køb

5 FEN 2006-11-6IntroJava2006 - AAU5 Søgealgoritmer Finder et objekt med en bestemt egenskab i en collection Terminerer, når første element med den eftersøgte egenskab findes Eksempler: –Afgør om et bestemt tal findes i et array –Finde index på første forekomst af en værdi i et array –Finde en kunde med navn ”Hansen”

6 FEN 2006-11-6IntroJava2006 - AAU6 Lav en metode, som returnerer antallet af lige tal i et int[ ]. Test den. (Vink: et tal er lige, hvis rest ved division med 2 er 0). public int countEvens(int[] a) {//sweep int count= 0; for(int i= 0; i<a.length; i++) { if(a[i]%2 == 0)//a[i] is even count++; } return count; } public class LoopSolutions{ private int[] myArray1= {11, 2, 5, 3}; private int[] myArray2= {1, 22, 5, 13, 12, 1}; public void main(){ System.out.println("Antal lige: “ + countEvens(myArray2)); } //--- Sweep gennem arrayet Tæl op, hvis tallet er lige

7 FEN 2006-11-6IntroJava2006 - AAU7 Lav en metode, som tager en int x som parameter, og returnerer true, hvis x findes i et int [ ]. public boolean findX(int[] a, int x) {//search boolean found= false; int i= 0; while(!found && i<a.length){ if(a[i]==x) found= true; else i++; } return found; } Stop når elementet findes public class LoopSolutions{ private int[] myArray2= {1, 22, 5, 13, 12, 1}; public void main(){ System.out.println("Er 13 i myArray2?: " + findX(myArray2,13)); System.out.println("Er 7 i myArray2?: " + findX(myArray2,7)); } …eller hvis der ikke er flere elementer

8 FEN 2006-11-6IntroJava2006 - AAU8 Lav en metode, som finder antallet af vokaler i et char[ ]. public int countVocals(char[] a) {//sweep int count= 0; for(int i= 0; i<a.length;i++){ if(isVocal(a[i])) count++; } return count; } Hvordan laves den? private boolean isVocal(char ch){ char[] vocals= {'a','e','i','o','u','y'}; boolean found= false; int i= 0; while(!found && i<vocals.length){ if(ch==vocals[i]) found= true; else i++; } return found; } Først et sweep Med en søgning blandt alle vokaler!! Her er vokalerne Her søges

9 FEN 2006-11-6IntroJava2006 - AAU9 Og test: public class LoopSolutions { private char[] charArray= {'s','a','w','a','o','i'}; public void main() { System.out.println("Antal vokaler: "+ countVocals(charArray)); } //--- } public int countVocals(char[] a){ //--- if(isVocal(a[i])) //--- } private boolean isVocal(char ch){ //--- if(ch==vocals[i]) //--- }

10 FEN 2006-11-6IntroJava2006 - AAU10 Og resten…? Arrays Tag udgangspunkt i klassen Methods i projektet javaFundamentals (.zip).zip 1.Lav en metode, som returnerer antallet af lige tal i et int[ ]. Test den. (Vink: et tal er lige, hvis rest ved division med 2 er 0) 2.Lav en metode, som returnerer antallet af tal i et double[ ], som ligger mellem 10,0 og 20,0. Test den. 3.Lav en metode, som tager en int x som parameter, og returnerer true, hvis x findes i et int [ ]. Ænder metoden, så index på første forekomst af x i arrayet returneres. 4.Lav en metode, som finder første forekomst af et tegn i et char[ ]. 5.Lav en metode, som finder antallet af vokaler i et char[ ]. (Vink: lav først en metode, som tager et bogstav som parameter, og returnerer true, hvis bogstavet er en vokal, ellers false.) Loops Tag udgangspunkt i projektet Drawer (.zip). Brug loops..zip 1.Ænder højhusmetoden, så der tegnes vha. et loop 2.Lav en metode, som tegner en trappe. 3.Overvej, hvordan en figur kan animeres. Afprøv din løsning på en simpel figur, fx en ”flyvende box”.


Download ppt "FEN 2006-11-6IntroJava2006 - AAU1 Loops og algoritmer Sweep – for-loop Søgning – while-loop."

Lignende præsentationer


Annoncer fra Google