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

24
Inleiding programmeren in C++ Life Science & Technology 19 januari 2004 http:// www.liacs.nl/home/kosters/lst / Universiteit Leiden

Transcript of Inleiding programmeren in C++ Life Science & Technology 19 januari 2004 Universiteit Leiden.

Page 1: Inleiding programmeren in C++ Life Science & Technology 19 januari 2004  Universiteit Leiden.

Inleiding programmeren in C++Life Science & Technology

19 januari 2004

http://www.liacs.nl/home/kosters/lst/

Universiteit Leiden

Page 2: Inleiding programmeren in C++ Life Science & Technology 19 januari 2004  Universiteit Leiden.

Week 1

• Inhoud– Introductie apparatuur, compiler (Visual C++)

– Eerste C++-programma's

– if-statement

• Doel– Na afloop kan iedereen zelf een klein eigen C++-programma op

de computer maken en compileren, bijvoorbeeld een programma dat een paar getallen vraagt en bij elkaar optelt

• Materiaal– Ammeraal Hoofdstukken 1 en 2, tot en met 2.4

– Dictaat Hoofdstukken 1, 2 en 3.1; opgaven 1/5 (Hoofdstuk 4)

Page 3: Inleiding programmeren in C++ Life Science & Technology 19 januari 2004  Universiteit Leiden.

C++ op een PC

• PC’s in computerzalen LCP 6 & 8 met Windows 98/NT/XP– Windows 98/NT/XP (of Linux …)

– User-id (= username = accountname)

– Password (= wachtwoord)

• Microsoft Visual C++ 6.0 (zie dictaat Hoofdstuk 2.1)– C++ programma schrijven

– Compile, Build (Link), Execute

– Demo …

– Projecten

– Save geregeld je C++-code, ook op een diskette of via email: de iets.cpp file

Page 4: Inleiding programmeren in C++ Life Science & Technology 19 januari 2004  Universiteit Leiden.

Hardware en software

• Computers– Silicon Graphics Inc.

– Hewlett Packard

– SUN

– International Business Machines compatible Personal Computer

• Operating systemen– Microsoft DOS, Windows

95/98/2000/NT/XP

– Unix (Linux, Sun Solaris, IBM AIX, HP-UX)

– …

• Programmeertalen– C++

– C

– Pascal

– Java

– Basic

– Prolog, …

• Programma’s– Compilers (Visual C++,

Turbo/Borland C++, g++)

– Editors

– Email

– Web-browsers

Page 5: Inleiding programmeren in C++ Life Science & Technology 19 januari 2004  Universiteit Leiden.

Programma, operating systeem en hardware

Hardware(CPU, Randapparatuur)

Operating Systeem(Windows, Linux, …)

Programma(.exe)

Programma(.exe)

Page 6: Inleiding programmeren in C++ Life Science & Technology 19 januari 2004  Universiteit Leiden.

Van broncode naar uitvoerbaar programma

C++ programma(.cpp)

Uitvoerbaar programma(.exe)

Compile

&

Build

Page 7: Inleiding programmeren in C++ Life Science & Technology 19 januari 2004  Universiteit Leiden.

Compile, Build (Link), Execute

C++ programma(.cpp)

Object file(.obj)

Uitvoerbaar programma(.exe)

Object file(.obj)

C++ programma(.cpp)

Object file uit

Standaard library

Compile

Build (Link)

Page 8: Inleiding programmeren in C++ Life Science & Technology 19 januari 2004  Universiteit Leiden.

Eerste programma

#include <iostream>

using namespace std;

const double pie = 3.14159;

int main ( ) {

double straal;

cout << "Geef straal, daarna Enter: ";

cin >> straal;

if ( straal > 0 )

cout << "Oppervlakte: " << pie * straal * straal << endl;

else

cout << "Niet zo negatief..." << endl;

cout << "Einde van dit programma." << endl;

return 0;

} // main

Page 9: Inleiding programmeren in C++ Life Science & Technology 19 januari 2004  Universiteit Leiden.

Een C++-programma

• Verzameling functies– speciale functie main (moet er altijd zijn)– stuk programmatekst (met een bepaalde naam, parameters en

return-waarde)– alles buiten een functie geldt voor gehele programma (globaal)

• Functie bevat statements– min of meer afgeronde handeling– er zijn veel soorten statements ...

• Statement bevat vaak een expressie– uitdrukking (operatie) met een bepaald resultaat– er zijn veel soorten expressies ...

• En verder onder andere:– commentaar

Page 10: Inleiding programmeren in C++ Life Science & Technology 19 januari 2004  Universiteit Leiden.

Commentaar

• Let op met het nesten van commentaar … niet doen dus• Geef veel en duidelijk commentaar, zeker bij elke nieuwe variabele en elke nieuwe

functie• Er is verschil tussen commentaar

– voor de programmeur ( //... of /*...*/ )– en voor de gebruiker ( cout << ”...”; )

/* Dit is commentaar in "C-stijl"

*

* … regels lang

*/

int stp = 3; // Studiepunten voor inleiding

// programmeren

Page 11: Inleiding programmeren in C++ Life Science & Technology 19 januari 2004  Universiteit Leiden.

Structuur goed C++-programma

//

// Commentaar over het programma (wie, wat, wanneer, ...)

//

//

#include ...

using namespace std;

typedefs en constanten en globale variabelen en klassen

functies

int main ( ) {

... kort ...

} // main

Page 12: Inleiding programmeren in C++ Life Science & Technology 19 januari 2004  Universiteit Leiden.

Statements

• Een functie bestaat uit statements

• Statement– min of meer afgeronde handeling

– meestal afgesloten met een punt-komma: ;

• Bijvoorbeeld– expressie

– declaratie van een variabele

– conditioneel statement (if)

– iteratief statement (while, for)

– compound statement (meerdere statements tussen { } )

Page 13: Inleiding programmeren in C++ Life Science & Technology 19 januari 2004  Universiteit Leiden.

Expressies

• Expressie– Bestaat uit operand(en) en operator

• binair: operand1 operator operand2• unair: operand operator of operator operand

– Een expressie levert een resultaat en kan weer operand zijn in een andere expressie

– Bijvoorbeeld

• rekenkundige bewerkingen: a + b, (a + b) * (3 / x),-getal

• toekenning: a = b + 7 (“a wordt b plus 7”)• relationele operatoren: a > b• maar ook gewoon: 4

Page 14: Inleiding programmeren in C++ Life Science & Technology 19 januari 2004  Universiteit Leiden.

Gereserveerde woorden in C++

break case char const default do double else float for if int return switch void while bool false namespace true using

asm auto catch class continue delete enum extern friend goto inline long new operator private protected public register short signed sizeof static struct template this throw try typedef union unsigned virtual volatile

constr_cast dynamic_cast explicit mutable reinterpret_cast static_cast typeid typename wchar_t

Page 15: Inleiding programmeren in C++ Life Science & Technology 19 januari 2004  Universiteit Leiden.

Declaratie van een variabele

• Statement dat een variabele introduceert– met een bepaalde naam

– van een bepaald type

• Variabele moet altijd eerst worden gedeclareerd voordat deze gebruikt kan worden

• Eventueel meteen initialiseren (verstandig!)

• Toevoeging const: niet meer wijzigbaar na initialisatie

• Scope: globaal of locaal

Page 16: Inleiding programmeren in C++ Life Science & Technology 19 januari 2004  Universiteit Leiden.

Declaratie van een variabele (2)

• Belangrijkste typen

• Voorbeelden

Type Lengte Voorbeeld

char 1 byte ’A’

bool 1 true (1) of false (0)

int 4 345, -12

float (double) 4 (8) 7978, 3.41, 36e-3

string variabel ”Dit is tekst”

char letter, nogeen = ’X’; // gewone quotes

int leeftijd, xyz = 47;

const string tekst = ”Dit is tekst”;

float resultaat = xyz / 3.2;

Page 17: Inleiding programmeren in C++ Life Science & Technology 19 januari 2004  Universiteit Leiden.

Toekenning

• Operator = (“wordt”, “krijgt de waarde”)– niet verwarren met logische operator = = (test op gelijkheid)

• Resultaat van een expressie toekennen aan een variabele

• Let op:– links een variabele (“l-value”) en rechts een expressie (“r-value”)

– resultaat van de expressie (rechts) moet overeenkomen met het type van de variabele (links)

– pas op met impliciete typeconversies!

• Voorbeeld int i, j;

float x;

j = 4;

i = j * j + 5; // dus i wordt 21

x = i / j; // pas op: 21/4 is 5

Page 18: Inleiding programmeren in C++ Life Science & Technology 19 januari 2004  Universiteit Leiden.

Rekenkundige bewerkingen

• Rekenkundige operatoren • Gecombineerd met een toekenning

+ optellen (binair: a+b)

positief (unair: +b)

- aftrekken (binair: a-b)

negatief (unair: -b)

* vermenigvuldigen

/ delen

% modulo (rest bij deling)

++ increment

(met 1 ophogen)

getal++

++getal

-- decrement

(met 1 verlagen)

getal--

--getal

+=

-=

*=

/=

%=

Operatie gecombineerd met toekenning

a += 6;

a *= b + 9;

Is hetzelfde als a = a + 6;

a = a * (b + 9);

Page 19: Inleiding programmeren in C++ Life Science & Technology 19 januari 2004  Universiteit Leiden.

Relationele expressie

• Expressie met boolese (boolean) resultaat– resultaat is van type bool

– waarde 0 is niet waar (false), al het overige is waar (true)

• Relationele en logische operatoren

== Gelijk?

!= Ongelijk?

> Groter dan

< Kleiner dan

>= Groter dan of gelijk aan

<= Kleiner dan of gelijk aan

&& Logische en (and)

|| Logische of (or)

! Logische niet (not)

Page 20: Inleiding programmeren in C++ Life Science & Technology 19 januari 2004  Universiteit Leiden.

If-statement

• If : conditioneel statement van de vorm:– if ( expressie ) statement1 else statement2

– waarin else statement2 optioneel is

– en expressie een relationele expressie (waar / niet waar) is

• Voorbeeld

if ( getal > 0 )

cout << "Positief" << endl;

if ( getal > 0 )

cout << "Positief" << endl;

else

cout << "Niet positief" << endl;

Page 21: Inleiding programmeren in C++ Life Science & Technology 19 januari 2004  Universiteit Leiden.

Voorbeelden if-statements

• Logische “en”:

• Altijd waar:

• Alles ongelijk 0 is waar …

if ( x > 0 && y > 0 )

cout << "Beide getallen positief" << endl;

if ( true ) cout << “Altijd" << endl;

if ( 7 )

cout << “Altijd" << endl;

– er zijn verschillende layouts mogelijk, als het maar consequent is, en uiteraard duidelijk

Page 22: Inleiding programmeren in C++ Life Science & Technology 19 januari 2004  Universiteit Leiden.

“Dangling else”

• Waar hoort de else bij?

• Afspraak: bij de laatste nog openstaande if

• Maar beter (want duidelijker) is: gebruik een compound statement, met extra accolades

if ( x > 0 )

if ( y > 0 )

cout << "Beide getallen positief" << endl;

else

cout << "????????????" << endl;

Page 23: Inleiding programmeren in C++ Life Science & Technology 19 januari 2004  Universiteit Leiden.

Compound statement

• Samengesteld statement

• Meerdere statements tussen { en }

if ( x > 0 ) {

if ( y > 0 )

cout << "Beide getallen positief" << endl;

else

cout << "????????????" << endl;

} // if

if ( x != 0 ) {

a = c / x;

cout << "c / x =" << a << endl;

} // if

Page 24: Inleiding programmeren in C++ Life Science & Technology 19 januari 2004  Universiteit Leiden.

Null-statement

• Null-statement

– dit is natuurlijk hetzelfde als (en zo doe je het meestal ook):

if ( x > 0 && y > 0 )

;

else

cout << “Er is een niet-positief getal" << endl;

if ( ! ( x > 0 && y > 0 ) )

cout << “Er is een niet-positief getal" << endl;

– overigens is de boolese expressie ! ( x > 0 && y > 0 ) hetzelfde als: ( x <= 0 || y <= 0 )