Algoritmen en programmeren: deel 1 - overzicht Ruud van Damme Creation date: 15 maart 2005 Update: 3: september 2006, 5 november 2006, 7 augustus 2007
Overzicht 1 Inleiding 2 Algoritmen 3 Programmeertalen
Overzicht 1 Inleiding 2 Algoritmen 3 Programmeertalen
Rompslomp Presentielijst (eenmalig): Inloggen op PCs gaat met behulp van je studentnummer. Zet op de lijst ook wat je opleiding is (TW/CT/TN/...). Vul ook het tentamenbriefje in.
Indeling van dit vak: Colleges Deel 1: de basics van programmeren en algoritmen: een overzicht Deel 2: voorbeelden van algoritmen; basisconstructies: for, while, if/then/else uitwerken van specifieke voorbeelden: Matlab Deel 3: hoe slim is een algoritme? (complexiteit) Verweven: Ook een aanzet tot het vak Numerieke Wiskunde en Modelleren van kwartiel 2
Indeling van dit vak: Practicum (1) Practica zijn verplicht Eerste weken zend je een (dan bekend gemaakte) opgave in. Deze wordt in principe niet gewaardeerd met een cijfer maar kan in twijfelgevallen meespelen. Laatste vier (TW)/drie (CT/TN) keer aan het eind van het practicum moet je iets inleveren je moet (dus) alleen werken. Dit ingeleverde werk bepaalt het cijfer (geen toets) De WWW-pagina s van het practicum kom je binnen met: Loginnaam: M2007L en password: Q1Y2007 Web-pagina: zie nieuws.
Indeling van dit vak: Practicum (1) Practica zijn verplicht Eerste weken zend je een (dan bekend gemaakte) opgave in. Deze wordt in principe niet gewaardeerd met een cijfer maar kan in twijfelgevallen meespelen. Laatste vier (TW)/drie (CT/TN) keer aan het eind van het practicum moet je iets inleveren je moet (dus) alleen werken. Dit ingeleverde werk bepaalt het cijfer (geen toets) De WWW-pagina s van het practicum kom je binnen met: Loginnaam: M2007L en password: Q1Y2007 Web-pagina: zie nieuws.
Indeling van dit vak: Practicum (1) Practica zijn verplicht Eerste weken zend je een (dan bekend gemaakte) opgave in. Deze wordt in principe niet gewaardeerd met een cijfer maar kan in twijfelgevallen meespelen. Laatste vier (TW)/drie (CT/TN) keer aan het eind van het practicum moet je iets inleveren je moet (dus) alleen werken. Dit ingeleverde werk bepaalt het cijfer (geen toets) De WWW-pagina s van het practicum kom je binnen met: Loginnaam: M2007L en password: Q1Y2007 Web-pagina: zie nieuws.
Indeling van dit vak: Practicum (1) Practica zijn verplicht Eerste weken zend je een (dan bekend gemaakte) opgave in. Deze wordt in principe niet gewaardeerd met een cijfer maar kan in twijfelgevallen meespelen. Laatste vier (TW)/drie (CT/TN) keer aan het eind van het practicum moet je iets inleveren je moet (dus) alleen werken. Dit ingeleverde werk bepaalt het cijfer (geen toets) De WWW-pagina s van het practicum kom je binnen met: Loginnaam: M2007L en password: Q1Y2007 Web-pagina: zie nieuws.
Indeling van dit vak: Practicum (2) Te laat, dan dubbel inleveren: via teletop én mail r.m.j.vandamme@ewi.utwente.nl met erg goede reden. Alle communicatie gaat via teletop: jullie leveren werkende programma s in, ik distribueer bv. ook deze sheets; als je me files inlevert doe je dat gezipt! Definitie van werkende: Deze programma s moeten werken op de PCs van het practicum in Matlab!! Ik moet in weinig tijd kunnen nagaan of de opdracht OK is.
Indeling van dit vak: Practicum (2) Te laat, dan dubbel inleveren: via teletop én mail r.m.j.vandamme@ewi.utwente.nl met erg goede reden. Alle communicatie gaat via teletop: jullie leveren werkende programma s in, ik distribueer bv. ook deze sheets; als je me files inlevert doe je dat gezipt! Definitie van werkende: Deze programma s moeten werken op de PCs van het practicum in Matlab!! Ik moet in weinig tijd kunnen nagaan of de opdracht OK is.
Indeling van dit vak: Practicum (2) Te laat, dan dubbel inleveren: via teletop én mail r.m.j.vandamme@ewi.utwente.nl met erg goede reden. Alle communicatie gaat via teletop: jullie leveren werkende programma s in, ik distribueer bv. ook deze sheets; als je me files inlevert doe je dat gezipt! Definitie van werkende: Deze programma s moeten werken op de PCs van het practicum in Matlab!! Ik moet in weinig tijd kunnen nagaan of de opdracht OK is.
Indeling van dit vak: Huiswerk Na het college (niet altijd de volle twee uur) en vóór het practicum later in de week moet je al zelf aan de slag op die webpagina s: die bevatten eerst inleidende korte vragen over Matlab, die je zelf moet proberen. Over dit huiswerk kun je in het begin van het daarop volgende practicum vragen stellen: ik verwacht dat je de opgaven dus probeeert. Dit vak leer je echt alleen door het zelf vaak te doen!
Indeling van dit vak: Huiswerk Na het college (niet altijd de volle twee uur) en vóór het practicum later in de week moet je al zelf aan de slag op die webpagina s: die bevatten eerst inleidende korte vragen over Matlab, die je zelf moet proberen. Over dit huiswerk kun je in het begin van het daarop volgende practicum vragen stellen: ik verwacht dat je de opgaven dus probeeert. Dit vak leer je echt alleen door het zelf vaak te doen!
O ja In principe vereist dit vak geen voorkennis (behalve een gezond verstand) Vertel me het dus meteen, als een opgave of een stuk tekst niet begrepen is!! De opgaven beginnen op een laag niveau, dus je mag ook besluiten harder door de opgaven heen te gaan.
O ja In principe vereist dit vak geen voorkennis (behalve een gezond verstand) Vertel me het dus meteen, als een opgave of een stuk tekst niet begrepen is!! De opgaven beginnen op een laag niveau, dus je mag ook besluiten harder door de opgaven heen te gaan.
Overzicht 1 Inleiding 2 Algoritmen 3 Programmeertalen
Voorbeelden van algoritmen Bereken N! = N (N 1) 2 1 voor willekeurige N > 0 Bepaal of een graaf verbonden is of niet
Voorbeelden van algoritmen Bereken N! = N (N 1) 2 1 voor willekeurige N > 0 Bepaal of een graaf verbonden is of niet
Bereken N! Houtje touwtje methode: Z=1 Z=Z*2 Z=Z*2 Z=Z*3..etc.. Op zich OK, maar wat als je 50! uit wil rekenen? Computers kunnen zo n herhaling uitvoeren.
Bereken N! Houtje touwtje methode: Z=1 Z=Z*2 Z=Z*2 Z=Z*3..etc.. Op zich OK, maar wat als je 50! uit wil rekenen? Computers kunnen zo n herhaling uitvoeren.
Bereken N! Houtje touwtje methode: Z=1 Z=Z*2 Z=Z*2 Z=Z*3..etc.. Op zich OK, maar wat als je 50! uit wil rekenen? Computers kunnen zo n herhaling uitvoeren.
Bereken N! Houtje touwtje methode: Z=1 Z=Z*2 Z=Z*2 Z=Z*3..etc.. Op zich OK, maar wat als je 50! uit wil rekenen? Computers kunnen zo n herhaling uitvoeren.
Bereken N! Houtje touwtje methode: Z=1 Z=Z*2 Z=Z*2 Z=Z*3..etc.. Op zich OK, maar wat als je 50! uit wil rekenen? Computers kunnen zo n herhaling uitvoeren.
Bereken N! Houtje touwtje methode: Z=1 Z=Z*2 Z=Z*2 Z=Z*3..etc.. Op zich OK, maar wat als je 50! uit wil rekenen? Computers kunnen zo n herhaling uitvoeren.
Bereken N! Eerste methode: Z=1 VOOR K=1,..,N Z = Z * K ANTWOORD = Z
Bereken N! Eerste methode: Z=1 VOOR K=1,..,N Z = Z * K ANTWOORD = Z
Bereken N! Eerste methode: Z=1 VOOR K=1,..,N Z = Z * K ANTWOORD = Z
Bereken N! Eerste methode: Z=1 VOOR K=1,..,N Z = Z * K ANTWOORD = Z
Bereken N! Alternatief: Gebruik van de eigenschap: N!=N * (N-1)!. We maken een entiteit die N! moet uitrekenen, en dat noemen een functie: FUNCTIE FACULTEIT(INPUT N) ALS N>1 DAN ANTWOORD = N * FACULTEIT(N-1) ANDERS ANTWOORD = 1
Bereken N! Alternatief: Gebruik van de eigenschap: N!=N * (N-1)!. We maken een entiteit die N! moet uitrekenen, en dat noemen een functie: FUNCTIE FACULTEIT(INPUT N) ALS N>1 DAN ANTWOORD = N * FACULTEIT(N-1) ANDERS ANTWOORD = 1
Bereken N! Alternatief: Gebruik van de eigenschap: N!=N * (N-1)!. We maken een entiteit die N! moet uitrekenen, en dat noemen een functie: FUNCTIE FACULTEIT(INPUT N) ALS N>1 DAN ANTWOORD = N * FACULTEIT(N-1) ANDERS ANTWOORD = 1
Bereken N! Alternatief: Gebruik van de eigenschap: N!=N * (N-1)!. We maken een entiteit die N! moet uitrekenen, en dat noemen een functie: FUNCTIE FACULTEIT(INPUT N) ALS N>1 DAN ANTWOORD = N * FACULTEIT(N-1) ANDERS ANTWOORD = 1
Voorbeelden van algoritmen Bereken N! = N (N 1) 2 1 voor willekeurige N > 0 Bepaal of een graaf verbonden is of niet
Verbonden graaf?
Verbonden graaf? KLEUR EEN WILLEKEURIG PUNT ROOD ZOLANG ER IETS VERANDERT KLEUR DE BUREN VAN ALLE RODE ROOD ALS ALLES ROOD IS ANTWOORD=JA ZO NIET ANTWOORD=NEE
Verbonden graaf? KLEUR EEN WILLEKEURIG PUNT ROOD ZOLANG ER IETS VERANDERT KLEUR DE BUREN VAN ALLE RODE ROOD ALS ALLES ROOD IS ANTWOORD=JA ZO NIET ANTWOORD=NEE
Verbonden graaf? KLEUR EEN WILLEKEURIG PUNT ROOD ZOLANG ER IETS VERANDERT KLEUR DE BUREN VAN ALLE RODE ROOD ALS ALLES ROOD IS ANTWOORD=JA ZO NIET ANTWOORD=NEE
Verbonden graaf? KLEUR EEN WILLEKEURIG PUNT ROOD ZOLANG ER IETS VERANDERT KLEUR DE BUREN VAN ALLE RODE ROOD ALS ALLES ROOD IS ANTWOORD=JA ZO NIET ANTWOORD=NEE
Verbonden graaf?
Verbonden graaf?
Verbonden graaf?
Verbonden graaf?
Alles in stukjes op een rij VOOR K=1,..,N Z = Z * K ALS N>1 DAN ANTWOORD = N * FACULTEIT(N-1) ANDERS ANTWOORD = 1 ZOLANG ER IETS VERANDERT KLEUR DE BUREN VAN ALLE RODE ROOD
Dit vak, dit college Vind een methode (algoritme) voor een bepaald probleem Hoe vertel ik het de computer??
Dit vak, dit college Vind een methode (algoritme) voor een bepaald probleem Hoe vertel ik het de computer??
Overzicht 1 Inleiding 2 Algoritmen 3 Programmeertalen
Dit vak, dit college Computertalen: Maple, Matlab, C, C++, Java, Basic, Reduce, Macsyma, Pascal, Fortran,... In dit vak: alleen met Matlab; (voor TW ook een beetje C++) Met voorbeelden en niet met formele specificaties Soms is een de beste, dan weer de andere, en nog een andere keer een derde Matlab (en ook Maple) heeft (hebben) veel ingebouwde functies (WIJ ZIJN LUI!!) Maar... C++ kan grotere problemen sneller aan
Dit vak, dit college Computertalen: Maple, Matlab, C, C++, Java, Basic, Reduce, Macsyma, Pascal, Fortran,... In dit vak: alleen met Matlab; (voor TW ook een beetje C++) Met voorbeelden en niet met formele specificaties Soms is een de beste, dan weer de andere, en nog een andere keer een derde Matlab (en ook Maple) heeft (hebben) veel ingebouwde functies (WIJ ZIJN LUI!!) Maar... C++ kan grotere problemen sneller aan
Dit vak, dit college Computertalen: Maple, Matlab, C, C++, Java, Basic, Reduce, Macsyma, Pascal, Fortran,... In dit vak: alleen met Matlab; (voor TW ook een beetje C++) Met voorbeelden en niet met formele specificaties Soms is een de beste, dan weer de andere, en nog een andere keer een derde Matlab (en ook Maple) heeft (hebben) veel ingebouwde functies (WIJ ZIJN LUI!!) Maar... C++ kan grotere problemen sneller aan
Dit vak, dit college Computertalen: Maple, Matlab, C, C++, Java, Basic, Reduce, Macsyma, Pascal, Fortran,... In dit vak: alleen met Matlab; (voor TW ook een beetje C++) Met voorbeelden en niet met formele specificaties Soms is een de beste, dan weer de andere, en nog een andere keer een derde Matlab (en ook Maple) heeft (hebben) veel ingebouwde functies (WIJ ZIJN LUI!!) Maar... C++ kan grotere problemen sneller aan
Dit vak, dit college Computertalen: Maple, Matlab, C, C++, Java, Basic, Reduce, Macsyma, Pascal, Fortran,... In dit vak: alleen met Matlab; (voor TW ook een beetje C++) Met voorbeelden en niet met formele specificaties Soms is een de beste, dan weer de andere, en nog een andere keer een derde Matlab (en ook Maple) heeft (hebben) veel ingebouwde functies (WIJ ZIJN LUI!!) Maar... C++ kan grotere problemen sneller aan
Een eenvoudig Matlab-programma In Matlab kun je in de command window berkeningen doen; Voor ingewikkelder problemen heb je een plek nodig om je programma in te typen (editor); Komt uitgebreid ter sprake op het eerste practicum.
Alles in stukjes op een rij ALS N>1 DAN ANTWOORD = N * FACULTEIT(N-1) ANDERS ANTWOORD = 1 ZOLANG ER IETS VERANDERT KLEUR DE BUREN VAN ALLE RODE ROOD VOOR K=1,..,N Z = Z * K
Logische berekeningen Voorbeelden: == is gelijk? ~ niet > (<) groter (kleiner)? >= groter (kleiner) dan? && en of if(i==1) als i gelijk is aan 1 if((i>1)&&(j<0)) als i>1 EN j<0 if((i>1) (j<0)) als i>1 OF j<0 (7==7) true (bool) (1==2) false (bool)
Als dan i=1; if (i==1) j=10; else j=100; end Wat is de waarde van j? Moeilijkere constructies ook mogelijk
Als dan i=1; if (i==1) j=10; else j=100; end Wat is de waarde van j? Moeilijkere constructies ook mogelijk
Alles in stukjes op een rij ALS N>1 DAN ANTWOORD = N * FACULTEIT(N-1) ANDERS ANTWOORD = 1 ZOLANG ER IETS VERANDERT KLEUR DE BUREN VAN ALLE RODE ROOD VOOR K=1,..,N Z = Z * K
Herhalen zonder te weten wanneer je stopt i=1; while(i<100) i=10*i; end Wat is de waarde van i? i=1; while(i<100) i=i-1; end Wat is de waarde van i? Gevaarlijk
Herhalen zonder te weten wanneer je stopt i=1; while(i<100) i=10*i; end Wat is de waarde van i? i=1; while(i<100) i=i-1; end Wat is de waarde van i? Gevaarlijk
Herhalen zonder te weten wanneer je stopt i=1; while(i<100) i=10*i; end Wat is de waarde van i? i=1; while(i<100) i=i-1; end Wat is de waarde van i? Gevaarlijk
Alles in stukjes op een rij ALS N>1 DAN ANTWOORD = N * FACULTEIT(N-1) ANDERS ANTWOORD = 1 ZOLANG ER IETS VERANDERT KLEUR DE BUREN VAN ALLE RODE ROOD VOOR K=1,..,N Z = Z * K
Herhalen en wel te weten wanneer je stopt k=0; for i=1:3 k=k+i; end; Wat is de waarde van k?
Lijsten, vectoren (1) Soms is één of een klein aantal antwoorden niet genoeg Bijvoorbeeld: bereken de eerste 1000 priemgetallen a=2 b=3 c=5 d=7 De letters van het alfabet raken gauw op... Daarom kan je lijsten (of vectoren) definiëren en gebruiken
Lijsten, vectoren (1) Soms is één of een klein aantal antwoorden niet genoeg Bijvoorbeeld: bereken de eerste 1000 priemgetallen a=2 b=3 c=5 d=7 De letters van het alfabet raken gauw op... Daarom kan je lijsten (of vectoren) definiëren en gebruiken
Lijsten, vectoren (1) Soms is één of een klein aantal antwoorden niet genoeg Bijvoorbeeld: bereken de eerste 1000 priemgetallen a=2 b=3 c=5 d=7 De letters van het alfabet raken gauw op... Daarom kan je lijsten (of vectoren) definiëren en gebruiken
Lijsten, vectoren (1) Soms is één of een klein aantal antwoorden niet genoeg Bijvoorbeeld: bereken de eerste 1000 priemgetallen a=2 b=3 c=5 d=7 De letters van het alfabet raken gauw op... Daarom kan je lijsten (of vectoren) definiëren en gebruiken
Lijsten, vectoren (2) priem(1)=2; priem(2)=3; priem(3)=5; priem(1000)=7919;
En nu? Wat we hebben geleerd: het type soort van opdrachten (herhaling en als-dan constructies) Wat in het practicum: de eerste eenvoudige programma s: toekenningen, definities, opstarten van programma s, functies Als huiswerk + practicum: heel veel elementaire problemen met Matlab Kan je thuis al aan beginnen: DOEN!
En nu? Wat we hebben geleerd: het type soort van opdrachten (herhaling en als-dan constructies) Wat in het practicum: de eerste eenvoudige programma s: toekenningen, definities, opstarten van programma s, functies Als huiswerk + practicum: heel veel elementaire problemen met Matlab Kan je thuis al aan beginnen: DOEN!
En nu? Wat we hebben geleerd: het type soort van opdrachten (herhaling en als-dan constructies) Wat in het practicum: de eerste eenvoudige programma s: toekenningen, definities, opstarten van programma s, functies Als huiswerk + practicum: heel veel elementaire problemen met Matlab Kan je thuis al aan beginnen: DOEN!