Algoritmen en Datastructuren (ALDAT) EVMINX4 Week 6.

Slides:



Advertisements
Verwante presentaties

Advertisements

Objectgeoriënteerd Programmeren in C++


Algoritmen en Datastructuren

Vervolg C Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 1 Een programma opbouwen.
Algoritmen en Datastructuren (ALDAT) EVMINX4 Week 5.
Algoritmen en Datastructuren (ALDAT)
EVMINX4 Week 3 Algoritmen en Datastructuren (ALDAT)
Gestructureerd programmeren in C
Van domeinklasse tot implementatie
MagentaPurpleTeal PinkOrangeBlue LimeBrown RedGreen Introductie C# /.NET
1 SOCS Hoofdstuk 1 Computerarchitectuur. 2 Overzicht Eenvoudig C Arrays  Klassiek gebruik  For opdracht, Increment/Decrement  Wijzers, Arrays en Wijzers.
Enumerate typedef struct union functiepointers 1.
Hoofdstuk 10.2 Rekenmachine-casus.
Conditionele expressie
Modula vs Java MODULE Show; CONST PI = ; TYPE PointRc = RECORD x,y : INTEGER; speed : REAL; angle : REAL; END; VAR a,b : PointRc; BEGIN.
Kennisacquisitie en - modellering Rogier van Eijk college 2 Modelleren van analysetaken.
Java C++ zVeilig zMachine- onafhankelijk zVeel libraries, ook voor Internet-I/O zSnel zNative executables zLibraries optimaal voor specifiek OS.
Algoritmiek Arrays: wat zijn dat en wat kun je ermee? Loops: hoe hou je ze in bedwang? Hoorcollege 6 - Ma. 9 okt L.M. Bosveld-de Smet.
Inleidend probleem Data structuur (hiërarchie van classes)
Algoritmen en Datastructuren (ALDAT) EVMINX4 Dagdeel 2.
MICPRG Les 11 Microcontroller Programmeren in C. 112 Datastructuren in C Werkgeheugen (PC en microcontroller): Statische datastructuren (vaste grootte):
GESPRG Les 8 Gestructureerd programmeren in C. 101 Array Meerdere variabelen van hetzelfde type kun je samennemen in één array variabele. Stel in een.
Real-Time Systems (RTSYST) Week IPC inter process communication Shared variabele based (H5) Message based (H6) Kan ook gebruikt worden in systemen.
Opg.1a: substring } String substring(int a) { int t; for (t=a; t
Opgave 1a: afronden int n=5; double a, b, c, d; a = n * 1.5; b = n * 3 / 2; c = n / 2 * 3; d = 3 / 2 * n; a b c d
WxHaskell part II Martijn Schrage (speciale versie van de slides, met screenshots toegevoegd als pictures)
Array nDeclaratie nCreatie nOpvragen nWijzigen nLengte String [ ] a; a = new String[10]; ……a[5]…… a[5] = ……; …a.Length… …is eigenlijk overbodig! List a;
Zelfgemaakt datatype voor bomen nMet functies data Tree a = Bin (Tree a) (Tree a) | Leaf a foldTree :: Tree a  b foldTree (b,lf) (Bin le ri) = b (foldTree.
Hoorcollege 7 Collections, arrays. Programma ‘Snowflakes’ Sneeuwvlok object.
Functioneel Programmeren Daan Leijen. Wat gaan we doen? 3 fundamentele principes van computatie Equationeel redeneren IO-monad GUI's in Haskell (wxHaskell)
C++ handboek : C++ Leen Ameraal 6e druk academic service.
JAVA -- H51 CONSTRUCTOR –- COPY-CONSTRUCTOR 1Constructor: Dezelfde naam als de klasse Wordt uitgevoerd d.m.v. new Initialisatie van de (private) attributen.
Coping with inclusion in primary schools Innovation in practical training.
Algoritmiek Object-georiënteerd Programmeren
Algoritmiek Strings & Stringmanipulaties; Controle Structuren; Floating-point notation. Hoorcollege 4 - Ma. 25 sept L.M. Bosveld-de Smet.
Algoritmiek Software Development O-O Design Hoorcollege 11 - Ma. 13 nov L.M. Bosveld-de Smet.
JAVA1 H 22. COLLECTIONS FRAMEWORK. 1. INLEIDING. Collections framework Is een verzameling van data structuren, interfaces en algoritmen Meest voorkomende.
Vervolg C Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 1 Onderwerpen voor vandaag Het ARM bord met wat library functies.
DU2PRES1 : C vervolg Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 1 Beginselen van C opgaves… volgende week: ARM.
Herhaling Java-programmatie en geautomatiseerd testen (vervolg)
Deel XIV Eerste echte e-commerce applicatie Implementatie (vervolg) 1 Internetapplicaties Deel 15: Herhaling Java-programmatie en geautomatiseerd testen.
Deltion College Engels B1 En Spreken/Presentaties [Edu/007] Thema: Soap(s) can-do : kan met enig detail verslag doen van ervaringen, in dit geval, rapporteren.
25 juni 2003SPINE ontwerpaspecten1 SPINE: design aspects Willibrord Huisman, IOWO what is SPINE? types of usersSPINE?users 3 communitiescommunities MapMap.
Hoofdstuk 10.1 Toepassing: Bitmap-editor. nKlik punten op scherm nPlaatje verschuiven left, right, up, down nPlaatje bewerken clear, invert, bold, outline.
Taaltheorie en Taalverwerking Parsing Continued. Totnutoe: Top-Down-Parser.
Hoofdstuk 5 Interactie. Controls Form Label Button Label TextBox.
Computertechniek Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 1 C programmeren voor niet-C programmeurs les 7 onze.
Tircms02-p les 7 systemcalls linux vervolg. Inleiding Onder /usr/include/linux staan bestanden die de linuxkernel o.a. gebruikt om drivers aan te spreken.
Computertechniek Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 1 C programmeren voor niet-C programmeurs les 2 definitie.
1 OMI Modelleren van content. 2 Vocabulary Content “gevangen” in begrippenapparaat: Vocabulary: lijst met termen nauwelijks semantiek Ontology:
Tircms03-p les 6 Templates. Functietemplates void verwissel(int &x, int &y); { int w=x;x=y;y=w;} Dezelfde functie voor meerdere types heet een functietemplate.
Computertechniek 2 – ARM assembler Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 1  programma draaien vanuit ROM.
Tircms02-p les 3 Functies Strings Structuren. Functies 1. main() 2. { int k; k = 10 ; printf(“%d\n”,fac(k)); } 3. int fac(n) int n; 4. { int f; f= 1;
Vervolg C Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 1 Onderwerpen voor vandaag User-defined characters op de.
Tircms03-p les 1 C++ voor C-kenners Voor Technische Informatica.
Inlezen en uitlezen van txt bestanden
Programma zonder window commandline interface. Commandline programma public static void main (String [ ] params) { System. out. println (“Hoi allemaal!”);
1 PI1 week 9 Complexiteit Sorteren Zoeken. 2 Complexiteit van algoritmen Hoeveel werk kost het uitvoeren van een algoritme (efficiëntie)? –tel het aantal.
Loops en errors Array's Random try catch for loop while loop do while loop.
Objectgeoriënteerd Programmeren (2)
Tinpro015b-les 1 C++ voor C-kenners Voor Technische Informatica.
Gameprogrammeren: Tiles en File I/O in Tick Tick
Implementatie Zoekboom
ASP.NET MVC Web Development
Bezoek aan Quatre Mains Donderdag 21 september 2017
Gameprogrammeren: Arrays
Canlan Sportsplex Mississauga
Transcript van de presentatie:

Algoritmen en Datastructuren (ALDAT) EVMINX4 Week 6

101 Galgje met find //… int main() { string s("galgje"); set v; do { for (string::size_type i(0); i<s.size(); ++i) if (find(v.begin(), v.end(), i)==v.end()) cout<<'.'; else cout<<s[i]; cout<<endl<<"Geef een letter: "; char c; cin>>c; string::iterator r(s.begin()); while ((r=find(r, s.end(), c))!=s.end()) { v.insert(r-s.begin()); ++r; } while (v.size()!=s.size()); cout<<”Je hebt het woord gevonden:”<<s;

102 Galgje met sets //… int main() { string w("galgje"); set geraden, letters; copy(w.begin(), w.end(), inserter(letters, letters.begin())); do { for (string::const_iterator i(w.begin()); i!=w.end(); ++i) if (geraden.count(*i)) cout<<*i; else cout<<'.'; cout<<endl<<"Raad een letter: "; char c; cin>>c; geraden.insert(c); } while (!includes(geraden.begin(), geraden.end(), letters.begin(), letters.end())); cout<<w<<" is geraden!"<<endl; //…

103 Galgje met sets en for_each //… set geraden; int main() { string w("galgje"); set letters; copy(w.begin(), w.end(), inserter(letters, letters.begin())); do { for_each(w.begin(), w.end(), printLetter); cout<<endl<<"Raad een letter: "; char c; cin>>c; geraden.insert(c); } while (!includes(geraden.begin(), geraden.end(), letters.begin(), letters.end())); cout<<w<<" is geraden!"<<endl; //… void printLetter(char c) { if (geraden.count(c)) cout<<c; else cout<<'.'; }

104 Galgje met strings //… int main() { string w("galgje"); string geraden(w.length(), '.'); do { cout<<geraden<<endl<<"Raad een letter: "; char c; cin>>c; for (string::size_type i(0); i<w.length(); ++i) if (w[i]==c) geraden[i]=c; } while (geraden!=w); cout<<w<<" is geraden!"<<endl; //…

105 Galgje met strings en transform //… class Raad { public: Raad() { cin>>c; } char operator()(char c1, char c2) { return c1==c ? c1 : c2; } private: char c; }; int main() { string w("galgje"); string geraden(w.length(), '.'); do { cout<<geraden<<endl<<"Raad een letter: "; transform(w.begin(), w.end(), geraden.begin(), geraden.begin(), Raad()); } while (geraden!=w); cout<<w<<" is geraden!"<<endl; //…

C++0x lambda functions Het gebruik van functor's wordt in C++0x sterk vereenvoudigd door het gebruik van lambda functions. Zie handouts. int main() { vector v; v.push_back(-3); v.push_back(2); v.push_back(-4); v.push_back(3); v.push_back(4); // print positive values ostream_iterator iout(cout, " "); copy_if(v.begin(), v.end(), iout, [](int i) { return i>0; }); cout<<endl; cin.get(); return 0; }

C++0x lambda C++0x r=find_if(l.begin(), l.end(), bind2nd(greater_equal (),0)); r=find_if(l.begin(), l.end(), [](int i) { return i>=0; }); transform(v.begin(), v.end(), w.begin(), v.begin(), plus ()); transform(v.begin(), v.end(), w.begin(), v.begin(), [](int i1, int i2) { return i1 + i2; });

C++0x lambda v.erase( remove_if( v.begin(), v.end(), not1(bind2nd(modulus (), 2)) ), v.end() ); C++0x v.erase( remove_if( v.begin(), v.end(), [](int i) { return !(i%2); } ), v.end() );

C++0x closure Een lambda functie kan gebruik maken van identifiers die buiten de lambda functie gedeclareerd zijn. De verzameling van identifiers wordt een closure genoemd. Nederlands: (in)sluiting. Deze closure wordt tussen [ en ] opgegeven. [a, &b]a wordt “by value” en b wordt “by reference” ingesloten. [&]elke gebruikte variabele wordt “by reference” ingesloten. [=]elke gebruikte variabele wordt “by value” ingesloten. [=, &c]c wordt “by reference” ingesloten en alle andere gebruikte variabelen worden “by value” ingesloten.

C++0x closure int somEven = 0; for_each(v.begin(), v.end(), [&somEven](int i) { if (i%2 == 0) somEven += i; }); Bepaal de som van alle even getallen in een vector. [&] werkt ook. Wat is beter?

C++0x lambda return type Een lambda functie die slechts uit een return statement bestaat kan zelf zijn return type bepalen. Bij een lambda functie die uit meerdere statements bestaat moet het return type worden opgegeven. transform(w.begin(), w.end(), geraden.begin(), geraden.begin(), [=](char w_char, char geraden_char) -> char { if (w_char==c) return w_char; else return geraden_char; } );

C++0x lambda C++0x r=find_if(l.begin(), l.end(), bind2nd(greater_equal (),0)); r=find_if(l.begin(), l.end(), [](int i) { return i>=0; }); transform(v.begin(), v.end(), w.begin(), v.begin(), plus ()); transform(v.begin(), v.end(), w.begin(), v.begin(), [](int i1, int i2) { return i1 + i2; });

C++0x lambda v.erase( remove_if( v.begin(), v.end(), not1(bind2nd(modulus (), 2)) ), v.end() ); C++0x v.erase( remove_if( v.begin(), v.end(), [](int i) { return !(i%2); } ), v.end() );

C++0x closure Een lambda functie kan gebruik maken van identifiers die buiten de lambda functie gedeclareerd zijn. De verzameling van identifiers wordt een closure genoemd. Nederlands: (in)sluiting. Deze closure wordt tussen [ en ] opgegeven. [a, &b]a wordt “by value” en b wordt “by reference” ingesloten. [&]elke gebruikte variabele wordt “by reference” ingesloten. [=]elke gebruikte variabele wordt “by value” ingesloten. [=, &c]c wordt “by reference” ingesloten en alle andere gebruikte variabelen worden “by value” ingesloten.

C++0x closure int somEven = 0; for_each(v.begin(), v.end(), [&somEven](int i) { if (i%2 == 0) somEven += i; }); Bepaal de som van alle even getallen in een vector. [&] werkt ook. Wat is beter?

C++0x lambda return type Een lambda functie die slechts uit een return statement bestaat kan zelf zijn return type bepalen. Bij een lambda functie die uit meerdere statements bestaat moet het return type worden opgegeven. transform(w.begin(), w.end(), geraden.begin(), geraden.begin(), [=](char w_char, char geraden_char) -> char { if (w_char==c) return w_char; else return geraden_char; } );