1 / 10

Loops og algoritmer

Loops og algoritmer. Sweep – for-loop Søgning – while-loop. 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

whitney
Download Presentation

Loops og algoritmer

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Loops og algoritmer Sweep – for-loop Søgning – while-loop IntroJava2006 - AAU

  2. 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 IntroJava2006 - AAU

  3. 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. IntroJava2006 - AAU

  4. 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 IntroJava2006 - AAU

  5. 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” IntroJava2006 - AAU

  6. 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). Sweep gennem arrayet 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; } Tæl op, hvis tallet er lige 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)); } //--- IntroJava2006 - AAU

  7. Lav en metode, som tager en int x som parameter, og returnerer true, hvis x findes i et int [ ]. Stop når elementet findes 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; } …eller hvis der ikke er flere elementer 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)); } IntroJava2006 - AAU

  8. Lav en metode, som finder antallet af vokaler i et char[ ]. Først et sweep Med en søgning blandt alle vokaler!! 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; } Her er vokalerne Her søges IntroJava2006 - AAU

  9. 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]) //--- } IntroJava2006 - AAU

  10. Og resten…? Arrays Tag udgangspunkt i klassen Methods i projektet javaFundamentals (.zip) • 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) • Lav en metode, som returnerer antallet af tal i et double[ ], som ligger mellem 10,0 og 20,0. Test den. • 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. • Lav en metode, som finder første forekomst af et tegn i et char[ ]. • 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. • Ænder højhusmetoden, så der tegnes vha. et loop • Lav en metode, som tegner en trappe. • Overvej, hvordan en figur kan animeres. Afprøv din løsning på en simpel figur, fx en ”flyvende box”. IntroJava2006 - AAU

More Related