Inleiding programmeren in C++ Life Science & Technology 26 januari 2004 Universiteit Leiden.

Slides:



Advertisements
Verwante presentaties
Objectgeoriënteerd Programmeren in C++
Advertisements

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

Computertechniek Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 1 Operatoren, Arrays, Command-line tools.
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.
Inleiding programmeren in C++ Life Science & Technology 1 maart Universiteit Leiden.
Inleiding programmeren in C++ Life Science & Technology 23 februari Universiteit Leiden.
Ronde (Sport & Spel) Quiz Night !
Arduino project.
EVMINX4 Week 3 Algoritmen en Datastructuren (ALDAT)
Gestructureerd programmeren in C
Inleiding programmeren in C++ Life Science & Technology 19 januari Universiteit Leiden.
PROS2 Les 11 Programmeren en Software Engineering 2.
‘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 Programmeertaal C. 2 Kenmerken van C Hogere programmeertaal  Grote verzameling types, strenge type controle  Zelf nieuwe types definiëren.
Numerieke Natuurkunde
GESPRG Les 7 Gestructureerd programmeren in C. 92 Verwisselen Schrijf een functie waarmee twee int variabelen verwisseld kunnen worden. void wissel(int.
C++ handboek : C++ Leen Ameraal 6e druk academic service.
Static Keyword static voor functieleden functie niet voor een object aangeroepen class K {... static int minimum( int i, int j); } aanroep: K::minimum(
Inleiding programmeren in C++ Life Science & Technology 2 februari Universiteit Leiden.
Inleiding programmeren in C++ Life Science & Technology 9 februari Universiteit Leiden.
CONTROLESTRUCTUREN (DEEL 1)
Oefeningen Hoofdstuk 3.
Consoletoepassing Variabelen Klassen
Algoritmiek Dataweergave en bewerking Hoorcollege 2 - Ma. 11 sept L.M. Bosveld-de Smet.
Inleiding programmeren in C++ Life Science & Technology Inleiding
1 Datastructuren Introductie tot de programmeeropgaven in C++ Jan van Rijn
Vergelijkingen oplossen.
2.1 Rekenen K. van Dorssen.
Inleiding Informatica Prof. Dr. O. De Troyer Hoofdstuk 3: Werken met numerieke gegevens.
Variabelen Part deux.. Variabelen week 3 0. Herhaling 1. De NullPointerException (p101) 2. Primitieven 3. Scope en levensduur van variabelen 4. Meerdere.
De financiële functie: Integrale bedrijfsanalyse©
Grote getallen.
Hoorcollege 2 Basis gameprogrammeren. Soorten programma’s Console- applicatie.
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.
Hoorcollege 14 Vijanden, excepties. Overzicht programmaconstructies Opdrachten Toekenning Aanroep void-methode return-opdracht while-opdracht for(each)-opdracht.
Tircms03-p les 7 Standaardfuncties. In header opnemen bijv: using namespace std // C++ // oude C.
Variabelen Part deux.. Variabelen week 3 0. Herhaling 1. De NullPointerException (p101) 2. Primitieven 3. Scope en levensduur van variabelen 4. Meerdere.
Tircms03-p les 2 Hfdst 3,4 Meer operatoren Functies.
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;
Tircms02-p les 2 Meer operatoren Arrays en pointers Types en conversie.
tircms02-p les 1 Operating Systems practicum
Tircms03-p les 4 Klassen. Abstracte datatypes in C struct stack { char info[100]; int top; }; void reset(stack *s) { s->top = -1; } void push(stack *s,
Functioneel programmeren Een snelle herhaling…. Functie-definitie static int kwad (int x) { return x*x ; } kwad x = x * x Haskell kwad :: Int  Int.
Inleiding computersystemen en netwerken Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 2.1 Programmeren (2.9) assembler,
Tircms03-p les 1 C++ voor C-kenners Voor Technische Informatica.
Instructie Programmeren Task 3 5JJ70. Task 3.1: MIPS Rating Volg de beschrijving in de opdracht om het aantal assembly instructies in de loop uit te vinden.
Hoofdstuk 4 Nieuwe methoden. Tekenen g.drawRect(20,60,40,40); g.drawLine(20,60,40,40); g.drawLine(40,40,60,60); g.drawRect(70,60,40,40); g.drawLine(70,60,90,40);
Les 3 - Operators Workshop Php Basic. ICT Academy Php Basic Content Operators Wiskundig Toewijzing Vergelijking.
18 Februari 2013 Where friends have access to your privates!
Windows-applicatie using System.Windows.Forms; using System.Drawing;
Aanroep van een methode voert opdrachten uit in de body daarvan
Pointers, arrays & dynamische geheugen
Gameprogrammeren: Keuzeopdrachten
Hoofdstuk 9.2 Strings.
Gameprogrammeren: Variabelen, declaraties en toekenningen
Gameprogrammeren: Expressies
Tinpro015b-les 1 C++ voor C-kenners Voor Technische Informatica.
Basis Gameprogrammeren
Tinpro015b-les5 Invoer en Uitvoer.
Tinpro015b-les3 Hfdst 3,4 Meer operatoren Functies.
Tinpro015b-les6 Templates.
Syntax van opdracht opdracht naam naam ( expressie ) ; . , expressie
Tinpro015b-les4 Klassen.
Eerste deeltentamen Nagekeken werk ligt voor in de zaal
Software Development fundamentals
Software Development fundamentals
Transcript van de presentatie:

Inleiding programmeren in C++ Life Science & Technology 26 januari Universiteit Leiden

Week 2 •Inhoud –Variabelen, operatoren en controlestructuren •Doel –Leren omgaan met basiselementen van C++ •Materiaal –Ammeraal Hoofdstuk 2 (niet p. 23, niet 2.6) –Dictaat Hoofdstuk 3.2 en opgaven 6/14 (vooralsnog zonder functies) –De eerste programmeeropgave

int – geheel getal int getal;// een geheel getal int a = 3, b = -5;// en nog twee // nu wel geinitialiseerd getal = a + b;// wordt dus -2 a = a + 7;// a wordt 10 b++;// equivalent aan b = b + 1 // b wordt dus -4 --a;// en nu wordt a 9: a = a - 1 getal += a;// betekent getal = getal + a // dus getal wordt = 7 a = 19 / 7;// 2: geheeltallige deling van 19 door 7 b = 19 % 7;// 5: rest bij deling van 19 door 7

double en float – reëel getal double x;// een reeel getal double temp = 36.5, euro = ; int i; i = 9 / 5;// resultaat 1 x = 9 / 5;// en weer 1 (1.0000) x = 9.0 / 5;// maar nu x = (double)9 / 5;// casting // nu x = static_cast (9) / 5; // zelfde (chic) i = x + 0.5;// slim afronden const double pie = 3.28; pie = 3.14;// FOUT!!

Typeconversie (cast) •Expliciete typeconversie –Is iets anders dan impliciet, zoals in x = 9.0 / 5 –Conventionele notatie: gewenst type tussen haakjes voor de expressie: (double)9 –Maar in (int) a + b / c wordt alleen a naar int geconverteerd! –Daarom is logischer (en dit mag ook allemaal) double(9) of double(a + b / c) –Nieuwe C++-notatie onderscheidt verschillende typen casts: static_cast (9) of static_cast (a + b / c)

Afdrukken van double en float #include using namespace std;... double z = ; cout << "En z is: " << setw(8) // 8 posities breed << setprecision(2) // 2 cijfer na de komma afdrukken << fixed // vaste komma in plaats van scientific << showpoint // altijd een., dus ook << z // in plaats van 88 << endl; // en we zien 92.37

char – karakter •ieder karakter correspondeert met een uniek geheel getal tussen 0 en 255: de ASCII-waarde ( ’\n’ blijkt 10) char letter;// een karakter char let1 = 'q', let2 = '$';// en nog twee int i; // een geheel getal i = 'h' -'c';// 5 (c-d-e-f-g-h) i = 'a';// ASCII-waarde van a blijkt 97 cout << "Geef een karakter: "; cin >> letter; if ( 'a' <= letter && letter <= 'z' ) { // kleine letter? letter = letter + 'A' - 'a';// letter naar hoofdletter converteren } // if// letter = letter - 32 cout << "Resultaat: " << letter << endl;

bool – waar / niet waar •true = 1 –in C++ is alles wat niet 0 is, true; dus 7 is ook true! •false = 0 bool p, q;// twee booleans (niet geinitialiseerd!) pq!pp && qp || qp == q

Toekenningen •l-value = r-value –aan een “l-value” mag worden toegekend; het is een variabele, een geheugenlocatie –de “r-value” is een expressie int getal; bool p; getal = 17;// toekenning p = false; p = ( getal >= 15 ); // het feit of getal minstens 15 is if ( p ) cout << "Groot getal" << endl; if ( p == true )...;// beter: if ( p ) … if ( p = true )...;// ?????????????

Variabelen – Scope #include using namespace std; double koers = ;// scope hele programma int main ( ) { double nlg;// scope alleen functie main // zet bij voorkeur alle variabelen HIER cout << "Guldens: "; cin >> nlg; if ( nlg > 0 ) { double eur = nlg / koers;// scope alleen de if // dit liever niet doen cout << "Euro: " << fixed << setprecision(2) << eur << endl; } // if eur = 0;// FOUT!! niet in scope // dus niet doen return 0; } // main

Operatoren en prioriteit 1.Prioriteit (zie boek p.50 …); gebruik liever punt 3! 2.Associativiteit •meeste operatoren (+, -, * en dergelijke) •links-associatief: a - b - c is (a - b) – c •toekenningen (=, += en dergelijke) en unaire operatoren (++, --) •rechts-associatief: a = b = 5 is a = (b = 5) 3.Zet overvloedig haakjes  Met behulp van operatoren worden expressies gebouwd + plus << output - min >> input * maal ++ plus 1 / gedeeld door -- min 1 % rest (modulo) = toekenning

While statement •While: iteratief statement van de vorm –while ( expressie ) statement –expressie is een relationele expressie (waar / niet waar) –het statement is vaak een compound-statement •Bij een while is het aantal “doorgangen” door de lus vaak onbekend of lastig te berekenen while ( n != 0 ) n = n - 1; while ( n ) n--; int i = 1, result = 0; while ( i <= n ) { result += i * i; i++; } // while int x = 1; while ( x < 1000 ) x = 2 * x; // x is nu 1024

For statement •For: iteratief statement van de vorm –for (statement1 expressie1; expressie2) statement2 –statement1: initialisatie, heel soms null-statement –expressie1: test –expressie2: aan het einde van elke ronde, vaak de- of increment, heel soms null-statement –statement2: vaak een compound-statement met { } •Bij een for is het aantal “doorgangen” door de lus vaak wel bekend int i, result = 0; for ( i = 1; i <= n; i++ ) result += i * i;

Dubbele for-loop De dubbele for-loop levert op: for ( i = 1; i <= 4; i++ ) { cout << i << ”: ”; for ( j = 1; j <= i; j++ ) cout << i*j << ” ”; cout << endl; } // for-i 1: 1 2: 2 4 3: :

For statement (2) for ( A; B; C) D komt overeen met A; while (B) { D; C; } for ( i = 1; i <= n; i++ ) result += i * i; i = 1; while ( i <= n ) { result += i * i; i++; } // while

Stopt deze while-loop? int getal; cout << ”Geef een positief geheel getal..”: cin >> getal; while ( getal != 1 ) if ( getal % 2 == 0 ) // getal even getal = getal / 2; else getal = 3 * getal + 1; Het “3x+1 vermoeden” zegt: dit stopt altijd! Voorbeeld: 11 – 34 – 17 – 52 – 26 – 13 – 40 – 20 – 10 – 5 – 16 – 8 – 4 – 2 – 1