Inleiding programmeren in C++ Life Science & Technology 9 februari 2004 Universiteit Leiden.

Slides:



Advertisements
Verwante presentaties

Advertisements

Inleiding programmeren in C++ Life Science & Technology 26 januari Universiteit Leiden.
Objectgeoriënteerd Programmeren in C++


Universiteit Leiden Inleiding programmeren in C++ Life Science & Technology 16 februari

Inleiding programmeren in C++ Life Science & Technology 1 maart Universiteit Leiden.
Inleiding programmeren in C++ Life Science & Technology 23 februari Universiteit Leiden.
Gestructureerd programmeren in C
Inleiding programmeren in C++ Life Science & Technology 19 januari Universiteit Leiden.
GESPRG Les 14 Gestructureerd programmeren in C. 174 Details! The devil is in the details.
Datastructuren Analyse van Algoritmen en O
‘Inleiding programmeren in Java’ SWI cursus: ‘Inleiding programmeren in Java’ 4e college Woe 19 januari 2000 drs. F. de Vries.
Conditionele expressie

Instructie Programmeren Task 1 5JJ70. Task 1.1: Hello World Klik naast de laatste accolade in de grijze kantlijn om een breakpoint neer te zetten, anders.

1 SOCS Hoofdstuk 1 Computerarchitectuur. 2 Overzicht Eenvoudig C Arrays Functies Records Dynamische gegevenstructuren Macro’s C.
Frank Stalpers en Ad Baars
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):
C++ handboek : C++ Leen Ameraal 6e druk academic service.
Inleiding programmeren in C++ Life Science & Technology 2 februari Universiteit Leiden.
Inleiding programmeren in C++ Life Science & Technology Inleiding
Tircms02-p les 4 Preprocessor In- en uitvoer Diversen.
Tircms03-p les 7 Standaardfuncties. In header opnemen bijv: using namespace std // C++ // oude C.
Tircms03-p les 2 Hfdst 3,4 Meer operatoren Functies.
tircms02-p les 1 Operating Systems practicum
Computertechniek Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 1 C programmeren voor niet-C programmeurs les 3 redirection,
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.
Vervolg C Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 1 Onderwerpen voor vandaag Een embedded systeem: ARM bord.
1 PI1 week 9 Complexiteit Sorteren Zoeken. 2 Complexiteit van algoritmen Hoeveel werk kost het uitvoeren van een algoritme (efficiëntie)? –tel het aantal.
Computertechniek Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 1  de track structuur van een MIDI file interpreteren.
4/10/2017 Opleiding BINNENISOLATIE voor thermische renovatie Module 3 Train the trainer – 06/12/ Brugge.
Wageningen University Meteorologie en Luchtkwaliteit
Hoe deel je gesteenten in? Codering; Streckeisen
Havo 5: Stoffen en Materialen
Veevoeding Blok 3 en 4: Ruwvoerbalans melkveehouderij
Dynamica van luchtstromen
Klaar met het PW? Lees aandachtig het samenvattingenblad hst 7
Energielening.
Bomen en struiken IVN Helden.
Inlichtingenbijeenkomst Simulatiecapaciteit ERTMS
En blessurepreventie Trainingsopbouw.
Six hats: Werken met netwerken? Mijn gedacht
VEELTERMEN BLADWIJZERS: GETALWAARDE OPTELLEN EN AFTREKKEN
NIET-RATIONELE BESLISSINGEN in de TECHNIEK
Hoofdstuk 5 Les 1: Markten.
Hst. 2 Het geslachtsapparaat
Microsoft® Office Outlook® 2007-cursus
VPH Les 13.
Jezus voor Pilatus Waar draait het om? Haat; onrecht
Microsoft® Office SharePoint® Server 2007-training
Landschapsecologische criteria voor Nationale Parken van Wereldklasse
Lokale autonomie en interbestuurlijk toezicht
Hoe zal de wereld eruit zien als er geen wiskunde bestond? Voorbeeld Hoe zal de wereld eruit zien als er geen wiskunde bestond? BIG QUESTION.
Aardrijkskunde Olympiade
Natuurkunde Overal Hoofdstuk 3: Kracht en Beweging.
Herhaling hoofdstuk 3: Krachten
§12.2 Röntgen 1895: Wilhelm Röntgen ontdekt per toeval een geheimzinnige straling die een fotografische plaat zwart kleurt: röntgenstraling!
De Nobelprijs voor de natuurkunde materie in de knoop
Kwaliteitsanalyse van toetsen: betrouwbaarheid
Wolf Mooij Jeroen de Klein Jan Janse
Wat is het grootste getal
Tinpro015b-les 1 C++ voor C-kenners Voor Technische Informatica.
Tinpro015b-les5 Invoer en Uitvoer.
Tinpro015b-les3 Hfdst 3,4 Meer operatoren Functies.
Python – For loop + strings
Transcript van de presentatie:

Inleiding programmeren in C++ Life Science & Technology 9 februari Universiteit Leiden

Week 4 Inhoud –Functies (vervolg) en arrays Doel –Leren omgaan met functies en arrays in C++ Materiaal –Ammeraal Hoofdstuk 5.1 –Dictaat Hoofdstuk 3.6 en opgaven 29/35 –De tweede programmeeropgave Werkcollege –Fabriceer een menu-programma; opties: eerst alleen een cout- statement, daarna Opgave 20 a en b, en dan de “elf-proef” (zie hints bij tweede programmeeropgave)

Lessen uit de eerste programmeeropgave Infoblokje –meldt “overal” duidelijk namen van de auteurs –stel duidelijke vragen Layout –consequent –inspringen binnen functies, if, for en while Diversen –constantes: jaar in plaats van 1854 –gebruik else –ontwerp if-statements (eerst if ( maand < 1 ) …)

Opgave 9 zonder functies #include using namespace std; int main ( ) { int n; // in te lezen getal int res; // voor het resultaat: n! cin >> n; // eigenlijk eerst testen of niet n < 0 res = 1; // "lege product” while ( n > 0 ) { res = res * n; n--; } // while cout << res << endl; return 0; } // main

Opgave 9 functie met while #include using namespace std; int faculteit1 (int getal) { int res = 1;// "lege product" while ( getal > 0 ) { res = res * getal; getal--; } // while return res; } // faculteit1 int main ( ) { int n;// in te lezen getal cin >> n;// eigenlijk eerst testen of niet n < 0 cout << faculteit1 (n) << endl; return 0; } // main aanroep int functie

Opgave 9 functie met for #include using namespace std; int faculteit2 (int getal) { int res; // for-loop met rare initialisatie: for ( res = 1; getal > 0; getal-- ) { res = res * getal; } // for return res; } // faculteit2 int main ( ) { int n;// in te lezen getal cin >> n; if ( n < 0 ) return 1; cout << faculteit2 (n) << endl; return 0; } // main

Opgave 9 functie met for: variant #include using namespace std; int faculteit3 (int getal) { int res = 1; int i; for ( i = 1; i <= getal; i++ ) { res = res * i; } // for return res; } // faculteit3 int main ( ) { int n;// in te lezen getal cin >> n; if ( n < 0 ) return 1; cout << faculteit3 (n) << endl; return 0; } // main

Opgave 8 void wissel (int & x, int & y) { int temp; // en NIET: x = y; y = x; !!! temp = x; x = y; y = temp; } // wissel int main ( ) { int a, b, c; // drie getallen... if ( a > b ) wissel (a,b); if ( b > c ) wissel (b,c); if ( a > b ) wissel (a,b);... nu geldt a <= b <= c... } // main aanroep void functie

Opgave 8 void wissel (int & x, int & y) { int temp; temp = x; x = y; y = temp; } // wissel void sorteer (int & eerste, int & tweede, int & derde) { if ( eerste > tweede ) wissel (eerste, tweede); if ( tweede > derde ) wissel (tweede, derde); if ( eerste > tweede ) wissel (eerste, tweede); } // sorteer

Opgave 10 // zet aantal spaties op beeldscherm void spaties (int aantal) { int i; for ( i = 0; i < aantal; i++ ) cout << ” ”; } // spaties // zet aantal kar’s op beeldscherm void kars (int aantal, char kar) { int i; for ( i = 0; i < aantal; i++ ) cout << kar; } // kars

Opgave 11 void verwerkgetallenrij ( ) { int kleinste, grootste = 0, aantal = 0, som = 0, getal; cout << ”Getal?..”; cin >> getal; while ( getal > 0 ) { aantal++; som += getal; if ( getal > grootste ) grootste = getal; if ( aantal == 1 || getal < kleinste ) kleinste = getal; cout << ”Getal?..”; cin >> getal; } // while if ( aantal > 0 ) cout << ”Kleinste: ” << kleinste << ”Grootste: ” << grootste << ”Gemiddelde: ” << (double) som /aantal; } // verwerkgetallenrij

Inleiding array’s Een array is een rij “objecten” (bijvoorbeeld een rij getallen, karakters of strings) Deze rij wordt aangeduid met één variabele-naam Elk element in de rij wordt aangeduid met een volgnummer (de index), te beginnen bij 0 int a[100]; // declaratie van een rij van 100 integers a[0] = 2; // te gebruiken zijn: a[0], a[1],..., a[99] a[27] = 7; a[99] = a[27] + 16; // a[100] = 3; levert narigheid! a[-1] = 5; ook

Inleiding array’s (2) Zo worden MAX integers gedeclareerd –A[0], A[1],..., A[MAX-1] Denk om de arraygrenzen const int MAX = 10; // mag geen variabele zijn! int A[MAX]; // dus NIET: int n; cin >> n; int A[n]; for ( int i = 0; i < MAX; i++ ) A[i] = 5 * i; for ( int j = 0; j < MAX-1; j++ ) A[j] = A[j+1];

Initialiseren van array’s Initialiseren kan alleen gelijktijdig met de declaratie Een string als array van char is een oude C-stijl-string –0-byte markeert het einde van de string –vaste, maximale lengte In C++ is het type string beschikbaar (in ) –lengte is variabel –toekenning gehele string wel altijd mogelijk double B[5] = {42, -3.14, 1e6, 0, 37}; char str[10] = "feestje";// str[7] wordt '\0'

Array’s en adressering A (dus zonder index) is eigenlijk het adres van het eerste (nulde) element in het array: “waar staat het array?” De index geeft aan hoeveel keer de lengte van het element (in dit geval de lengte van een int ) bij dit adres moet worden opgeteld, om bij het array-element te komen Niet doen! Het adres wordt gekopieerd … int A[50]; int A[3]; int B[3] = {4, 6, 13};... A = B;// ???? A B 4, 6, 13

Array’s en functies const int MAX=100; void drukAf (int rij[MAX]) { for (int i = 0; i < MAX; i++) { cout << rij[i]; } // for } // drukAf void drukGetalAf (int getal) { cout << getal << endl; } // drukGetalAf int main ( ) { int getallen[MAX];... drukAf (getallen); drukGetalAf (getallen[17]); return 0; } // main beginadres van het array beginadres van het array wordt by value doorgegeven (op te vatten als het gehele array) één array-element

Array’s en functies (2) int minimum (const int rij[ ], int lengte) { int klein = rij[0]; for ( int i = 1; i < lengte; i++ ) { if ( rij[i] < klein ) klein = rij[i]; } // for return klein; } // minimum int main ( ) { int getallen[MAX];... cout << "Laagste getal: " << minimum (getallen, MAX);... return 0; } // main inhoud van de array niet wijzigbaar lengte is variabelmaar lengte moet wel bekend zijn

Meerdimensionale array’s Een array is een rij Een meerdimensionaal array is een tabel of matrix Het is een array van array’s // declaratie van een meerdimensionaal array int tabel[10][20]; // 10 rijen, 20 kolommen int kubus[20][10][30]; // gebruik van de elementen tabel[7][12] = 27; kubus[13][6][22] = 167; Denk om de array-grenzen! tabel[0][0]... tabel[9][19] kubus[0][0][0]... kubus[19][9][29]

Voorbeeld van een 2-dimensionaal array int A[2][3]; A[0][0] = 5; A[0][1] = 7; A[0][2] = -6; A[1][0] = 78; A[1][1] = -2; A[1][2] = 0; geeft: rij 1 kolom 2 Let op: ook al bestaat A[3][5] niet, met A[3][5] = 11; wijzig je iets op de 15-de (3 maal 5) geheugenplek vanaf “het begin”.

Meerdimensionale array’s (2) const int RIJ = 10, KOLOM = 10; void drukaf (const int mx[RIJ][KOLOM]) { for ( int i = 0; i < RIJ; i++ ) { for ( int j = 0; j < KOLOM; j++ ) { cout << mx[i][j] << ' '; } // for-j cout << endl; } // for-i } // drukaf void vul (int mx[RIJ][KOLOM]) { for ( int i = 0; i < RIJ; i++) { for (int j = 0; j < KOLOM; j++) { mx[i][j] = i+j; } // for-j } // for-i } // vul int main ( ) { int matrix[RIJ][KOLOM]; vul (matrix); drukaf (matrix); return 0; } // main array-elementen niet wijzigbaar dimensies eenmalig definieren array-elementen wijzigbaar

Variabel aantal rijen int somarray (const int mx[ ][KOLOM], int rijen) { int som = 0; for ( int i = 0; i < rijen; i++ ) { for ( int j = 0; j < KOLOM; j++ ) { som += mx[i][j]; } // for-j } // for-i return som; } // somarray int main ( ) { int kleinematrix[20][KOLOM]; int grotematrix[100][KOLOM]... cout << somarray (kleinematrix, 20) << endl; cout << somarray (grotematrix, 100) << endl; return 0; } // main variabel aantal rijen, aantal kolommen moet bekend zijn hier mag ook 10 staan, of 15