Conditionele expressie

Slides:



Advertisements
Verwante presentaties

Advertisements

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

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.
Inleiding programmeren in C++ Life Science & Technology 1 maart Universiteit Leiden.
Arduino project.
Gestructureerd programmeren in C
Practica Computerlinguistiek Tekst en uitleg:
Inleiding programmeren in C++ Life Science & Technology 19 januari Universiteit Leiden.
‘Inleiding programmeren in Java’ SWI cursus: ‘Inleiding programmeren in Java’ 4e college Woe 19 januari 2000 drs. F. de Vries.
VBA en VBS Een introductie.

1 Tentamen 21 januari 2008 uitleg Algemene kennisvragen a)“Wat verstaan we onder de complexiteit van een algoritme?” –Cruciaal: wat gebeurt er met.
Modula vs Java MODULE Show; CONST PI = ; TYPE PointRc = RECORD x,y : INTEGER; speed : REAL; angle : REAL; END; VAR a,b : PointRc; BEGIN.
Hoofdstuk 6: Controle structuren
1 SOCS Hoofdstuk 1 Programmeertaal C. 2 Kenmerken van C Hogere programmeertaal  Grote verzameling types, strenge type controle  Zelf nieuwe types definiëren.
T U Delft Parallel and Distributed Systems group PGS Fundamentele Informatica in345 Deel 2 College 5 Cees Witteveen.
Frank Stalpers en Ad Baars
Numerieke Natuurkunde
Flow controle Keuzes maken. Het if-statement Soms moet code alleen in bepaalde situaties uit gevoerd worden Hiervoor heeft C de if-else constructie: if(voorwaarde1){
Algoritmen en Datastructuren (ALDAT) EVMINX4 Week 6.
Algoritmen en Datastructuren (ALDAT) EVMINX4 Dagdeel 2.
SWI cursus: ‘Inleiding programmeren in Java’
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)
Algoritmiek Dataweergave en bewerking Hoorcollege 2 - Ma. 11 sept L.M. Bosveld-de Smet.
Deel I: Programmeertaal C 6. Arrays en Pointers
LauwersCollege Buitenpost Java Applet programma dat op een website zichtbaar is Java Application programma dat zelfstandig werkt Javascript Scripttaal.
Opgave 1a: void nvoid staat in de header van een methode die geen resultaatwaarde heeft nde aanroep van een void-methode is dan een opdracht i.p.v. een.
PHP & MYSQL LES 02 PHP & FORMULIEREN. PHP & MYSQL 01 PHP BASICS 02 PHP & FORMULIEREN 03 PHP & DATABASES 04 CMS: BEST PRACTICE.
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.
Tircms02-p les 4 Preprocessor In- en uitvoer Diversen.
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.
Tircms03-p les 7 Standaardfuncties. In header opnemen bijv: using namespace std // C++ // oude C.
Variabelen en berekeningen
Tircms03-p les 2 Hfdst 3,4 Meer operatoren Functies.
Hoofdstuk 3 - Conditionele logica
Hoorcollege 3 Game assets, Invoer verwerken. Tutorlunch GroepTutorStutorZaal UPaul BergervoetBob BestBBG 001 VMarries van de HoefSander VerkuilBBG 731.
Tircms02-p les 2 Meer operatoren Arrays en pointers Types en conversie.
tircms02-p les 1 Operating Systems practicum
Vervolg C Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 1 Onderwerpen voor vandaag top-down decompositie Opdrachten:
Tircms03-p les 1 C++ voor C-kenners Voor Technische Informatica.
Beslissingen. Inhoud: Booleaanse expressies: wat? Booleaanse expressies: wat? Relationele en logische operatoren Relationele en logische operatoren De.
1 PI1 week 9 Complexiteit Sorteren Zoeken. 2 Complexiteit van algoritmen Hoeveel werk kost het uitvoeren van een algoritme (efficiëntie)? –tel het aantal.
Aangepaste timing nTheorie (16 colleges + 2 deeltentamens) nPraktijk (16 keer, 3 inleveropdrachten) college Tent. 1 Tent. 3 college prakt. 1 prakt. 3 prakt.
Codetuts Academy Les 6 Module 2a Php Fundamentals 1.
Loops en errors Array's Random try catch for loop while loop do while loop.
Informatie beoordelen If else Switch En Wiskunde.
Aanroep van een methode voert opdrachten uit in de body daarvan
Recursie in de wiskunde
Gameprogrammeren: Keuzeopdrachten
Hoofdstuk 9.2 Strings.
Gameprogrammeren: Expressies
Tinpro015b-les 1 C++ voor C-kenners Voor Technische Informatica.
Basis Gameprogrammeren
Gameprogrammeren: Willekeurigheid (Randomness)
Tinpro015b-les5 Invoer en Uitvoer.
Tinpro015b-les3 Hfdst 3,4 Meer operatoren Functies.
Tinpro015b-les6 Templates.
Syntax van opdracht opdracht naam naam ( expressie ) ; . , expressie
Voorbeeld: Simulatie van bewegende deeltjes
Voortborduren op eerder gedaan werk
Opdrachten herhalen public void tekenScherm (object o, PEA pea)
Aanroep van een methode voert opdrachten uit in de body daarvan
Implementatie Zoekboom
Transcript van de presentatie:

Conditionele expressie expressie1 ? expressie2 : expressie3 Vb. z = (a < b ? a + 1 : b – 1) If (a < b) z = a + 1 else z = b – 1; Voordeel: compactere code

De komma-operator expressie1 , expressie2 Beide expressies worden in gegeven volgorde geëvalueerd en de waarde van expressie2 wordt als waarde van de gehele komma-expressie afgeleverd

Komma-operator voorbeeld S = 0; while (cin >> i , i > 0) s+=i;

Het afsluiten van een rij ingetypte getallen int main() {double s=0,x; cout << “Tik getallen in,gescheiden door spaties,\n” << “met een regel tekst na het laatste getal:\n”; while (cin >> x , !cin.fail()) s+= x; cin.clear(); char ch; do cin.get(ch); while (ch != ‘\n’); cout << “de eerste som is “ << s << endl; s = 0; cout << “Nog een keer alstublieft:\n”; while (cin >> x , !cin.fail()) s+= x; cout << “de tweede som is “ << s << endl; return 0; }

bitmanipulatie &  bitsgewijze EN : 1001 & 1100 = 1000 |  bitsgewijze OF : 1001 | 1100 = 1101 ˆ  bitsgewijze XOR : 1001 ^ 1100 = 0101 ˜  INVERSIE: ˜1010 = 0101 «  SCHUIVEN NAAR LINKS: 0101 1010 << 3 = 1101 0000 »  SCHUIVEN NAAR RECHTS(machine- / compilerafhankelijk) 0101 1010 >> 3 = 0000 1011

unsigned Kan voor short, int en long Unsigned = unsigned int Variabelen van deze types kunnen niet negatief worden Meest linkse bit is geen tekenbit, maar macht van 2 Positief getalbereik X 2

Eenvoudige arrays int a[100]; a[0],a[1],…,a[99] a[3 * i + 1] const int aantal = 100; int a[aantal];

Array initialiseren int a[3] = {15,20,8}; float b[4] = {12.0,3.1}; float c[5]; b[4] = {12.0,3.1,0,0} char naam = {‘J’,’a’,’n’}; char naam = “Jan”;

Definitie en declaratie van een functie #include <iostream> using namespace std; float fun (float x, float y, int i, int j) {int noemer = i – j; return noemer == 0? 1e20 : (x – y)/noemer } int main() {float xx, yy; int ii,jj; cout << “Geef twee float en twee int waarden:”; cin >> xx >> yy >> ii >> jj; cout << “berekende functiewaarde:”; << fun(xx,yy,ii,jj) << endl; return 0;}

functies Type-conversie voor parameters en return waarde (!automatische conversie van vb. double naar int = afkapping) Volgorde van functies (altijd declareren voor gebruik; definitie kan later) void geen parameters

Klasse met lidfuncties Lidfuncties = methoden uit java class naam { public: … private: } int main(){

klasse vkv v; Object van het type vkv aanmaken (geheugenruimte voorzien voor de lidvariabelen) v.coeff(a,b,c) (lidvariabelen a,b,c van v krijgen waarden uit main) double wortel1() const {return x1;} (const  object v ongewijzigd door oproep) Lidvariabelen graag private struct ipv class (default public ipv private)

klassen Lidfuncties buiten de klasse definiëren Wanneer? Als de functies wat uitgebreider zijn Wel declareren binnen de klasse; definitie erbuiten: Vb. in klasse: bool losOp(); (declaratie) buiten klasse: bool vkv::losOp() … (definitie)

constructoren Cf java: i.e.lidfuncties die automatisch worden aangeroepen bij het creëeren van een nieuw klasse-object naam = naam klasse geen new (java) vkv(1.0,2.0,3.0) Constructor zonder parameters: vkv v; niet vkv v();!

Overloading en default-parameters Onderscheid door het aantal en/of type van parameters Zowel voor constructors, lidfuncties als functies in programma Default-waarden aan parameters geven binnen delaratie of definitie; zelfde constructor (of lidfunctie) wordt gebruikt met één of meer argumenten, voor overige worden achteraan beginnend default-waarden verondersteld

& en const bij parameters Cf. vensters.cpp p. 86 venster omvattend (venster v) {...} v is waardeparameter dwz KOPIE VAN van v doorgeven aan functie origineel kan niet wijzigen door de uitvoer van de functie, aangezien het gaat om een kopie venster omvattend (venster &v) {...} v is referentieparameter, dwz WIJZER NAAR (= adres van) v doorgeven (efficiëntie!) Origineel kan WEL veranderen door het uitvoeren van de functie

& en const bij parameters venster omvattend (const venster &v){…} Door const te gebruiken geven we aan dat het onmogelijk is binnen de functie het argument te wijzigen (veiligheid!)

& en const bij parameters Schrijf geen & en const bij primitieve types, tenzij punt 3 van toepassing is Schrijf & en const bij klassetypes, tenzij punt 3 van toepassing is Als je het argument wilt wijzigen, schrijf dan wel & maar geen const

inlining Inline functies worden niet geïmplementeerd als gewone functies (op een andere plaats in het geheugen en dan met parameterbindingen), maar de code van de functie wordt gewoon gesubstitueerd op de plaats van de aanroep Voordeel: sneller!! Ook lidfuncties binnen de klasse zal de compiler implementeren als inline-functies

inlining Na compilatie, bij uitvoering: oplossing: functie-code ergens in geheugen bij functie- aanroep: voorbereiding: bvb argumenten doorgeven via registers Sprong naar functiecode, achteraf sprong terug nadelig voor zeer korte functies, vooral in lus oplossing: aangeven dat we inline code wensen mbv keyword inline compiler kopiëert de functiecode tussen de overige code : meer code, maar geen sprongen meer!!

Inlining voorbeeld inline int minimum (int a, int b) { return (a < b ? a : b); } int min = minimum (tel, noem); int min = (tel < noem ? tel : noem); i. p. v. sprong naar functie