Een typisch programma in C en C++ bestaat uit een aantal onderdelen:



Vergelijkbare documenten
9 Meer over datatypen

Online c++ leren programmeren:

Deel 1: Arduino kennismaking. Wat is een microcontroller, structuur van een programma, syntax,

4 Invoer en uitvoer. 4.1 Toegang tot de standaardbibliotheek

int main() { int m; m = power(2,3) /* berekent 2^3 en geeft de resultaat naar m terug */ }

continue in een for, while of do lus herhaalt de lus vroegtijdig. De volgende herhaling wordt onmiddellijk begonnen.

Introductie in C++ Jan van Rijn. September 2013

Week 2 : Hoofdstukken 2 en 6; extra stof: inleiding pointers

VAN HET PROGRAMMEREN. Inleiding

EE1400: Programmeren in C BSc. EE, 1e jaar, , 2e college

Instructies en blokken

Vakgroep CW KAHO Sint-Lieven

Objective-C Basis. 23 april 2005, Eindhoven Patrick Machielse

Een eenvoudig algoritme om permutaties te genereren

Programmeren met Arduino-software

Universiteit van Amsterdam FNWI. Voorbeeld van tussentoets Inleiding programmeren

Programmeermethoden. Recursie. week 11: november kosterswa/pm/

Examen Software Ontwikkeling I 2e Bachelor Informatica Academiejaar Januari, **BELANGRIJK** : Schrijf je naam onderaan dit blad

Dit document bevat informatie over make bij het eerstejaars college Programmeermethoden, Universiteit Leiden, najaar 2010, zie

Inleiding C++ Coding Conventions

DOMjudge teamhandleiding

EE1400: Programmeren in C BSc. EE, 1e jaar, , 3e college

17 Operaties op bits Bitoperatoren en bitexpressies

HOGESCHOOL VAN AMSTERDAM Informatica Opleiding. CPP 1 van 10

Cursus Algoritmiek najaar 2005

Datastructuren: stapels, rijen en binaire bomen

Examen Programmeren 2e Bachelor Elektrotechniek en Computerwetenschappen Faculteit Ingenieurswetenschappen Academiejaar juni, 2010

Java. Basissyllabus. Egon Pas

Datastructuren Werkcollege Intro

Constanten. Variabelen. Expressies. Variabelen. Constanten. Voorbeeld : varid.py. een symbolische naam voor een object.

PROS1E1 Gestructureerd programmeren in C Dd/Kf/Bd

Datatypes Een datatype is de sort van van een waarde van een variabele, veel gebruikte datatypes zijn: String, int, Bool, char en double.

Pascal uitgediept Data structuren

Voorbeeldtentamen Inleiding programmeren (IN1608WI), Oktober 2003, , Technische Universiteit Delft, Faculteit EWI, Afdeling 2.

Programmeermethoden. Controle-structuren. Walter Kosters. week 3: september kosterswa/pm/

Talstelsels en getalnotaties (oplmodel)

1.1 Programmeren en voorbereiding

Programmeren in Java les 3

UNIVERSITEIT ANTWERPEN FACULTEIT WETENSCHAPPEN DEPARTEMENT WISKUNDE-INFORMATICA OBERON CODE CONVENTIONS

Variabelen en statements in ActionScript

Optimalisatie technieken

Syntax- (compile), runtime- en logische fouten Binaire operatoren

Een korte samenvatting van enkele FORTRAN opdrachten

VAN HET PROGRAMMEREN. Inleiding. Het spiraalmodel. De programmeertaal. vervolgens de berekening van het totale bedrag, incl. BTW:

C in plaats van Pascal

Tentamen Programmeren in C (EE1400)

Turbo Pascal (deel 1)

Leren Programmeren met Visual Basic 6.0 Les 3+4. Hoofdstuk 4 : De Selectie

Programmeermethoden. Recursie. Walter Kosters. week 11: november kosterswa/pm/

C-programmeren. Boek : In zee met C, Leo van Moergestel, Academic Service, ISBN

OEFENINGEN PYTHON REEKS 1

Week 5 : Hoofdstuk 11+ extra stof: meer over functies. Hoofdstuk 11:

Controle structuren. Keuze. Herhaling. Het if statement. even1.c : testen of getal even of oneven is. statement1 statement2

Dynamisch geheugen beheer

Teamhandleiding DOMjudge (versie 2.2.0muKP) 31 mei 2008

Programmeermethoden. Arrays (vervolg 2) Walter Kosters. week 9: 6 10 november kosterswa/pm/

Uitwerking Aanvullend tentamen Imperatief programmeren Woensdag 24 december 2014, uur

Zomercursus Wiskunde. Module 4 Limieten en asymptoten van rationale functies (versie 22 augustus 2011)

Datum. Vraag het bedrag in BEF. Reken om naar EURO. Toon het bedrag in EURO. --- Vraag het bedrag in BEF Reken om naar EURO---

Programmeermethoden. Arrays. Walter Kosters. week 7: oktober kosterswa/pm/

Operaties op bestanden

Programmeren in C++ Efficiënte zoekfunctie in een boek

Modelleren en Programmeren

Gertjan Laan Aan de slag met C++ Vijfde editie

PYTHON REEKS 1: BASICS. Mathias Polfliet

SEQUENTIE-STRUCTUUR. Oefening: Dichtheid

Voorwoord bij de zesde druk 3

Niet-numerieke data-types

Python. Vraag 1: Expressies en types. Vraag 1 b: Types -Ingebouwde functies- Vraag 1 a 3/10/14

/20. richtlijnen. Lees deze richtlijnen! Log in op de pc met. login: paswoord: examen i examen001. Log in op. x.toledo.ucll.be

Deeltentamen Grammatica s en ontleden 22 december 2005

Tentamen Programmeren in C (EE1400)

Arrays. Complexe datastructuren. Waarom arrays. Geen stijlvol programma:

Objectgeoriënteerd Programmeren in C++

Visual Basic.NET. Visual Basic.NET. M. den Besten 0.3 VB. NET

OEFENINGEN PYTHON REEKS 1


Tentamen Programmeren in C (EE1400)

Functioneel programmeren

Python voor Natuur- en Sterrenkundigen Week 1

Zomercursus Wiskunde. Katholieke Universiteit Leuven Groep Wetenschap & Technologie. September 2008

VOORBLAD SCHRIFTELIJKE TOETSEN

KENMERKENDE CIJFERS EN BENADERINGSREGELS

HOOFDSTUK 3. Imperatief programmeren. 3.1 Stapsgewijs programmeren. 3.2 If Then Else. Module 4 Programmeren

4EE11 Project Programmeren voor W. College 2, , Blok D Tom Verhoeff, Software Engineering & Technology, TU/e

Verslag Opdracht 4: Magische Vierkanten

Inhoud leereenheid 4. Inleiding JavaScript. Introductie 99. Leerkern 100. Zelftoets 108. Terugkoppeling 109

Datastructuren Programmeeropdracht 3: Expressies. 1 Expressies. Deadline. Dinsdag 8 december 23:59.

int getaantalpassagiers{): void setaantalpassagiers(int aantalpassagiers);

Small Basic Programmeren Text Console 2

Faculteit Economie en Bedrijfskunde

Lineaire data structuren. Doorlopen van een lijst

Aanvullende toets Gameprogrammeren (INFOB1GP) Woensdag 24 december 2014, uur

Inleiding programmeren

extra oefening algoritmiek - antwoorden

Informatie over. 5VWO DT51: JavaLogo. Casper Bezemer. Toetsweek 1 13 oktober 2016

Objectgeoriënteerd Programmeren in C++

Uitwerking Tweede deeltentamen Imperatief programmeren - versie 1 Vrijdag 21 oktober 2016, uur

Programmeermethoden. Functies vervolg. Walter Kosters. week 5: 1 5 oktober kosterswa/pm/

C++ programmeermethoden Bachelor Kunstmatige Intelligentie

Transcriptie:

Eerste stappen in C. Een typisch programma in C en C++ bestaat uit een aantal onderdelen: /* Alles wat op meerdere lijnen staat zoals hier is commentaar. */ // Dit is commentaar op 1 lijn. Geldig tot einde van de lijn. // Eerste deel: include van een aantal header bestanden: #include <stdio.h> /* getchar, putchar, printf, */ #include <stdlib.h> /* om exit te kennen */ #include <math.h> /* abs,labs,pow,sqrt, sin, cos, tan */ #include <values.h> /* om maxint te kennen */ #include <conio.h> /* om kbhit te kennen */ #include <string.h> /* strcpy, strcmp, strcat, strlen */ #include <ctype.h> /* voor isupper, isdigit, toupper */ /* idem : islower, tolower */ #include <iostream.h> /* C++ functies cin en cout */ // Tweede deel: definitie van constanten : #define PI 3.14159265358979 #define max(i,j) i>j?i:j #define min(i,j) i<j?i:j // Derde deel: Opsomming van eigen geschreven functies: // Vierde deel: hoofdprogramma (moet main noemen!!): int main() { // Hier staat het programma while (!kbhit()); exit((int)0); // Vijfde deel: De code van de eigen geschreven functies: We zullen zeer dikwijls de I/O functies cin en cout gebruiken. Deze zijn C++ functies. Ze zijn echter de enige C++ functies die we zullen gebruiken. Omdat we het dit jaar echter toch niet over objecten zullen hebben, blijf ik spreken over C, goed wetende dat het eigenlijk C++ code is die we schrijven.

Een eerste C programma: #include <iostream.h> // De preprocessor zal dit bestand invoegen. void main() { int a, b, c; // declaratie van 3 gehele getallen < 32000 cout << Geef twee getallen: ; // output cin >> a >> b; // input. Let op: eol nog in inputbuffer // lees eol: entertoets cout << endl; // begin nieuwe lijn c=a+b; cout << De som van << a << en << b << is << c << endl; cout << Het produkt van << a << en << b << is << a*b; // gebruik var s en uitdrukking in uitvoer. // wacht op entertoets Let op de ; na elk bevel. Een tekst staat steeds tussen. Bijvoorbeeld: PC is een tekst (string) bestaande uit drie tekens: namelijk de P en de C en een speciaal teken \0 om het einde van de tekst te kenmerken. Eén teken staat tussen. Bijvoorbeeld P is één teken. cin.get() dient om de uitvoering van het programma te onderbreken, zodat we de uitvoer kunnen bestuderen. Het programma wacht dan op een aanslag van de <enter> toets. Preprocessor directieven beginnen met een #. Het gevolg van het #include <iostream.h> bevel is dat dit bestand (iostream.h) zal gekopieerd worden samen met de rest van de code in een intermediair bestand, dat nadien door de compiler zal gecompileerd worden. Na de preprocessor, werkt de compiler en dan de linker. Deze laatste kan afzonderlijk gecompileerde programmaonderdelen samenvoegen. Een header bestand (zoals iostream.h) wordt gebruikt om er voor te zorgen dat de compiler kan nagaan of de opgeroepen functies juist gebruikt worden: het juiste aantal parameters van het juiste type. Indien men daartegen een doodzonde doet, zal de compiler stoppen met compileren en foutboodschappen genereren. Header bestanden hebben als extensie steeds:.h Het hoofdprogramma heeft een type. Default is dit het type int. Dit geeft het de mogelijkheid een geheel getal naar het operating systeem te sturen. Men kan evenwel ook het type void gebruiken. Men doet dit wanneer men helemaal niets naar het operating systeem wenst te sturen.

Een tweede C programma: #include <iostream.h> void main() { char naam_1[20], naam_2[20]; // Declaratie van twee rijen, 20 tekens lang. // In C moet de maximale lengte van een string bij compilatie gekend zijn!! // We kunnen spreken over naam_1[0] tot naam_1[19]. int leeftijd_1, leeftijd_2; cout << "Wat is de naam van de eerste persoon" << endl; cin.getline(naam_1,20); // Lees max. 20 tekens in naam_1 // eol is gelezen! cout << "Wat is zijn/haar leeftijd; " << '\n'; // endl en \n zijn equivalent. endl is C++ cin >> leeftijd_1; // eol nog in inputbuffer // lees eol cout << "Wat is de naam van de tweede persoon" << endl; cin.getline(naam_2,20); // eol gelezen cout << "Wat is zijn/haar leeftijd; " << '\n'; cin >> leeftijd_2; // eol nog in inputbuffer // lees eol cout << "De personen " << naam_1 << " en " << naam_2 << " zijn samen " << (leeftijd_1 + leeftijd_2) << " jaren oud." << '\n'; // lees eol Merk op dat: Maar: cout << 1 + 9 als uitvoer heeft: 1 + 9. (=string!) cout << (1 + 9) als uitvoer de waarde 10 heeft. cin haalt tekens uit de invoerbuffer en stuurt deze door naar de gewenste variabelen. Wanneer één getal ingelezen wordt, staat daarna in de invoerbuffer waarschijnlijk de endl. Deze wordt door de cin niet gelezen. Als men daarna een string zou wensen in te lezen, zou deze onmiddellijk nog dat endl teken in de invoerbuffer zien staan en dus een lege string veronderstellen. Dat was waarschijnlijk niet de bedoeling. cin.get() kan dan het <enter> teken wel uit de buffer halen.

cin.get() haalt echter slechts één teken uit de invoerbuffer. Om er zeker van te zijn dat hij helemaal leeg is, moet hij de invoerbuffer via het programma leeg gemaakt worden door te lezen totdat men aan het teken van de <enter> toets komt. Dit kan bijvoorbeeld aan de hand van een functie clearbuf(). Men kan deze implementeren in het startprogramma als volgt: // Eerste deel: include van een aantal header bestanden: #include <iostream.h> /* C++ functies cin en cout */ // Tweede deel: definitie van constanten : #define PI 3.14159265358979 #define max(i,j) i>j?i:j #define min(i,j) i<j?i:j // Derde deel: Opsomming van eigen geschreven functies: void clearbuf(void); // Vierde deel: hoofdprogramma (moet main noemen!!): int main() { // Hier staat het programma while (!kbhit()); exit((int)0); // Vijfde deel: De code van de eigen geschreven functies: void clearbuf(void) { char ch; // ch MOET van het type char zijn do cin.get(ch); // als ook de <enter> toets moet while (ch!='\n'); // ingelezen worden!! (overloading) De vorige twee programma s werken nóg beter wanneer alle bevelen worden vervangen door clearbuf(); bevelen. Men moet dan wel voor het hoofdprogramma de functie clearbuf kenbaar maken en achter het hoofdprogramma deze functie echt noteren. Allicht is dit beter voor alle voorbeelden van het boek! Wanneer men in het tweede voorbeeldprogramma als leeftijd van de eerste persoon een getal geeft, gevolgd door een aantal blanco s, zal de versie zoals hierboven genoteerd falen. De naam van de tweede persoon wordt niet gevraagd! Wanneer men de functie clearbuf() gebruikt, werkt het programma wel exact!

Variabelen en hun types. De gekende types zijn: char : Eén teken. Wordt bijgehouden in één byte. int : Geheel getal van 2 of 4 bytes (niet gespecificeerd.) short int : geheel getal van 2 bytes short : idem short int long int : geheel getal van 4 bytes long : idem long int float : reëlgetal van 4 bytes double : reël getal in dubbele nauwkeurigheid (8 bytes?) long double : reël getal in viervoudige nauwkeurigheid Een functie van het type void is een functie die geen resultaat naar het oproepende programma stuurt. De functie clearbuf() is daarvan een voorbeeld. Unsigned types: unsigned int zijn gehele getallen die niet negatief worden. Voor een int is het bereik van de waarde van -32.768 tot +32.767. Voor een unsigned int van 0 tot 65.535. Je kan hetzelfde doen voor een char: een unsigned char loopt van 0 tot 255. Tijdens de bewerkingen gebeuren er automatische typeconversies: C kiest als type steeds het meest beduidende type. Bij een double plus een int wordt de int een double. Als opsomming van meest naar minst beduidend geldt: long double double float long int char Men kan de typeconversie forceren met een cast: als a een double is, is (int)a een integer. Namen van variabelen moeten aan de normale eisen voldoen: niet beginnen met een getal geen blanko s bevatten case sensitive: A en a zijn twee verschillende variabelen Twee verschillende variabelen moeten een verschil in de naamgeving hebben in de eerste 32 tekens. Mag _ bevatten.

Een variabele kan men initialiseren tijdens de declaratie als volgt: int a=10; Natuurlijk doet: int a; a=10; bijna hetzelfde, naar in het tweede geval wordt a gelijk aan 10 tijdens de uitvoering van het programma. In het eerste geval is het reeds tijdens de compilatie. Operatoren. + - * / % (= rest van een deling) Let op: 2/3*100=0 : eerst wordt 2/3 berekend en er wordt afgekapt!! Speciale operatoren: c++ is hetzelfde als c=c+1 (maar postincrement) ++c is hetzelfde als c=c+1 (maar preincrement) c-- is hetzelfde als c=c-1 (maar postdecrement) --c is hetzelfde als c=c-1 (maar predecrement) c*=b is hetzelfde als c=c*b (* mag zijn: + - * / ) Maar: main() { int i, j, k, l, c; c=0; // c = 0 i=c++; // i = 0 en c = 1 j=++c; // j = 2 en c = 2 k=c--; // k = 2 en c = 1 l=--c; // l = 0 en c = 0

Constanten. Men kan aan een variabele vanzelfsprekend een constante waarde geven. Voorbeelden kan men hierboven vinden. Het kan echter gewenst zijn een speciaal type aan een constante te geven. Stel dat men bijvoorbeeld de waarde 7 aan een long int wenst toe te kennen. Dan is de 7 best ook een long int. Men heeft volgende mogelijkheden: 7 naar een int 7L naar een long int 7U unsigned int 7UL unsigned long int 7. e1 wetenschappelijke notatie (waarde is 70) 7.f voor een float of double of long double. (waarde is 7.) 0x10 hexadecimale schrijfwijze (waarde is 16) Men kan ook de preprocessor gebruiken om constanten goed toegankelijk te houden. Een voorbeeld: #define PI 3.14159265358979 Als in een uitdrukking staat : omtrek = PI*2.*straal; zal de preprocessor er van maken: omtrek=3.14159265358797*2.*straal. Dit is handig om de lengte van rijen goed aanpasbaar te houden. Men kan bovenaan het programma een (aantal) constante(n) noteren met hun waarden. Deze is bijvoorbeeld de lengte van een rij getallen. Verder in het programma gebruikt men deze constante. Indien de lengte te klein blijkt, moet alleen op de plaats van het preprocessordirectief de waarde aangepast te worden. Voor dit soort constanten zal men als regel (die niet moet gevolgd worden, maar het is wel wenselijk voor de leesbaarheid en iedereen doet het) hanteren dat deze namen in hoofdletters gebruikt worden. Dit om ze te onderscheiden van de gewone variabelen. Men kan ook van een variabele zeggen dat hij niet van waarde mag veranderen als volgt: const int a; Dit is natuurlijk geldig voor om het even welk type van variabele.