Mijn eerste C programma

Vergelijkbare documenten
Mijn eerste C programma

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

Jörg R. Hörandel Afdeling Sterrenkunde

Jörg R. Hörandel Afdeling Sterrenkunde.

Functies. <type> <functie naam> ( <type> <parameter naam> )

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

Instructies en blokken

Jörg R. Hörandel Afdeling Sterrenkunde

Functies. <type> <functie naam> ( <type> <parameter naam> )

Instructies en blokken

Structures. Voorbeeld: een punt in een vlakte heft een x en een y coördinaat struct point{ int x; int y; }

Programmeren /13 Test Tentamen

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

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

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

RADBOUD UNIVERSITEIT NIJMEGEN AFDELING STERRENKUNDE JAN VAN ROESTEL. Programmeren /14 Computer Practicum

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

Vakgroep CW KAHO Sint-Lieven

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

17 Operaties op bits Bitoperatoren en bitexpressies

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

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

4 Invoer en uitvoer. 4.1 Toegang tot de standaardbibliotheek

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

Niet-numerieke data-types

Online c++ leren programmeren:

Java. Basissyllabus. Egon Pas

Een korte samenvatting van enkele FORTRAN opdrachten

C++ programmeermethoden Bachelor Kunstmatige Intelligentie

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

Tentamen Computersystemen

PROS1E1 Gestructureerd programmeren in C Dd/Kf/Bd

Programmeren met Arduino-software

Zelftest Inleiding Programmeren

Universiteit van Amsterdam FNWI. Voorbeeld van tussentoets Inleiding programmeren

De MySQL C API. Variabelen in C Functies in C Pointers in C

Structures. Voorbeeld: een punt in een vlakte heft een x en een y coördinaat struct point{ int x; int y; }

Software 1. php mysql. bachelor grafische en digitale media cross-media ontwerp & grafimediatechnologie academiejaar semester 1

PROGRAMMEREN IN C CURSUS VOOR STARTERS. J.W. Welleman. header files. source files. *.h. *.c. compiler. object files. library builder. *.

9 Meer over datatypen

Operaties op bestanden

Tentamen Programmeren in C (EE1400)

Als een PSD selecties bevat, deelt de lijn van het programma zich op met de verschillende antwoorden op het vraagstuk.

Programmeren in Java les 3

1.1 Programmeren en voorbereiding

Dynamisch geheugen beheer

Oefententamen 2. Tijd: 2 uur. Maximaal aantal punten: 30. Naam: Studentnummer:

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

Tentamen Programmeren in C (EE1400)

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

Week 3 : Hoofdstukken 7 en 8; extra stof: invoer met scanf() extra aanvulling op het boek: inlezen met scanf() in C

6,1. Samenvatting door een scholier 1809 woorden 28 oktober keer beoordeeld. Informatica

VAN HET PROGRAMMEREN. Inleiding

Waarden persistent (blijvend) opslaan gaat in bestanden (files). Lege tekst: eof

VOORBLAD SCHRIFTELIJKE TOETSEN

Interne voorstelling. types en conversies. Binaire en andere talstelsels. Voorstelling van gegevens: bits en bytes

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

Modelleren en Programmeren

OEFENINGEN PYTHON REEKS 1

Lineaire data structuren. Doorlopen van een lijst

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

10 Meer over functies

Een eenvoudig algoritme om permutaties te genereren

Javascript oefenblad 1

UNIVERSITEIT ANTWERPEN FACULTEIT WETENSCHAPPEN DEPARTEMENT WISKUNDE-INFORMATICA OBERON CODE CONVENTIONS

Variabelen en statements in ActionScript

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

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

WETENSCHAPPEN Oefeningen. LES 1 - Baksteen in Grasshopper. Matthias Dziwak Tobias Labarque Rinus Roelofs

Practicum Ox intro. Practicum Ox intro. VU Numeriek Programmeren 2.5. Charles Bos. Vrije Universiteit Amsterdam. 3 april /18

Optimalisatie technieken

3 e jaars GameTech student C++ voor hobby, eerste programmeertaal Assistent bij een heleboel vakken

OEFENINGEN PYTHON REEKS 1

Programmeren en Wetenschappelijk Rekenen in Python. Wi1205AE I.A.M. Goddijn, Faculteit EWI 29 april 2014

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

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

Pascal uitgediept Data structuren

Je gaat leren programmeren en een spel bouwen met de programmeertaal Python. Websites zoals YouTube en Instagram zijn gebouwd met Python.

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

Functies. Huub de Beer. Eindhoven, 4 juni 2011

Linux Assembly Uitwerkingen van de vragen en opdrachten

Talstelsels, getalnotaties en Ascii code

OEFENINGEN PYTHON REEKS 1

Handleiding Installatie ADS

Inleiding programmeren

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

Inhoud. 1 De Microcontroller 1. 2 De taal C C in het kort Functies 31

#include <stdio.h> #include <stdlib.h>

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

Introductie in C++ Jan van Rijn. September 2013

C in plaats van Pascal

slides12.pdf December 14,

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

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

PYTHON REEKS 1: BASICS. Mathias Polfliet

Technology, Innovation & Society Delft

ALGORITMIEK: answers exercise class 7

Arduino Cursus, Deel 2 Programmeren. Simon Pauw, ZB45, Amsterdam

College 13: Patterns (2)

Programmeren. Cursus Python

Transcriptie:

Herhaling 1

Mijn eerste C programma Gebruik van de C compiler: gcc -o <output file> <input file.c> voorbeeld: gcc -o taak1 taak1.c De instructies in taak1.c woorden naar machinetaal vertaalt --> taak1. Dit is nu een uitvoerbaar programma. Dit kunt u met./taak1 uitvoeren. 2

Mijn eerste C programma In Linux geeft de x aan dat wij een uitvoerbaar bestand hebben. Gebruik de instructie ls -l om een lijst van bestanden te maken. -rwxr-xr-x 1 jrh staff 8704 14 Nov 10:48 taak1 uitvoerbaar bestand -rw-r--r-- 1 jrh staff 78 14 Nov 10:48 taak1.c C programma gebruik cat taak1.c hexdump -C taak1 om de inhoud van het text bestand taak1.c te zien om de inhoud van de executable (uitvoerbaar programma) te zien 3

Mijn eerste C programma Toets nu./taak1 <return>. Dit geeft Mijn eerste C programma op de beeldscherm uit. > cat taak1.c #include <stdio.h> int main() printf("mijn eerste C programma\n"); > gcc -o taak1 taak1.c >./taak1 Mijn eerste C programma > 4

Variabelen #include <stdio.h> int main() /* dit programma berekent de wortel van een cijfer */ float a,b,c,m, epsilon; scanf("%f",&c); a=0, b=c; epsilon = c * 1.e-5; while( (b-a) > epsilon ) m=(a+b)/2; if (m*m-c >= 0) b=m; else a=m; printf("%f %f\n",a,b); m=(a+b)/2; printf("sqrt(%f)=%f\n",c,m); Data worden in variabelen opgeslagen. C heeft de volgende elementaire types van variabelen: -char (character) een byte, een teken -int -float (integer) een integer waarde (floating point) een floating point waarde voorbeelden: char c, cc= a ; int i, j, k=1, ook_dit_is_een_variabele; float a=0.18, b, c=1.e-5; In de definitie van een variabel kunnen wij ook een waarde toewijzen. 5

Operatoren #include <stdio.h> int main() /* dit programma berekent de wortel van een cijfer */ float a,b,c,m, epsilon; scanf("%f",&c); a=0, b=c; epsilon = c * 1.e-5; Rekenkundige operatoren zijn +, -, *, / en % a = a+1; a=b/c; Dit zijn binaire operatoren. while( (b-a) > epsilon ) m=(a+b)/2; if (m*m-c >= 0) b=m; else a=m; printf("%f %f\n",a,b); C kent ook unitaire operatoren: Unitaire operatoren zijn: ++ en -- Deze verhogen en verlagen een waarde om 1. i++; i met 1 verhogen, ook i = i + 1; i--; i met 1 verlagen, ook i = i -1; m=(a+b)/2; printf("sqrt(%f)=%f\n",c,m); 6

Toewijzingen #include <stdio.h> int main() /* dit programma berekent de wortel van een cijfer */ float a,b,c,m, epsilon; scanf("%f",&c); a=0, b=c; epsilon = c * 1.e-5; while( (b-a) > epsilon ) m=(a+b)/2; if (m*m-c >= 0) b=m; else a=m; printf("%f %f\n",a,b); a = b + c; i = i +2; m=(a+b)/2; printf("sqrt(%f)=%f\n",c,m); 7

Eenvoudige ingaven en uitgaven #include <stdio.h> Om iets uit te geven gebruiken wij printf int main() /* dit programma printf( tekst berekent \n ); geeft de wortel tekst van uit en een begint cijfer */ een nieuwe lijn (\n). float a,b,c,m, epsilon; printf( %i \n, j); geeft de inhoud van de integer variabel j uit. scanf("%f",&c); printf( %5i \n,j); geeft de inhoud geformatteerd uit, het worden a=0, b=c; 5 teken gereserveerd. epsilon = c * 1.e-5; printf( %f \n,a); geeft de inhoud van de floating point waarde a while( (b-a) > epsilon ) uit. m=(a+b)/2; if (m*m-c >= 0) printf( %7.2f b=m; \n, a); geeft de waarde geformatteerd uit. 7 teken else a=m; total, 2 teken achter de komma. printf("%f %f\n",a,b); m=(a+b)/2; printf("sqrt(%f)=%f\n",c,m); 8

#include <stdio.h> Eenvoudige ingaven en uitgaven int main() /* dit programma berekent de wortel van een cijfer */ float a,b,c,m, epsilon; scanf("%f",&c); a=0, b=c; epsilon = c * 1.e-5; while( (b-a) > epsilon ) m=(a+b)/2; if (m*m-c >= 0) b=m; else a=m; printf("%f %f\n",a,b); Om iets in te lezen gebruiken wij scanf scanf( %i, &j); leest een integer waarde in en slaat de waarde op in de variabele j. Let op: &j geeft het adres van de variabele j in het werkgeheugen. m=(a+b)/2; scanf( %f, &a); leest een floating point waarde in en printf("sqrt(%f)=%f\n",c,m); slaat de waarde op in de variabele a. a geeft de inhoud van de variabele en &a de plaats waar de variabele binnen het geheugen staat. 9

Waneer dan beslissingen (if statement) #include <stdio.h> Om in een programma een beslissing te nemen gebruiken wij de if instructie. int main() /* dit programma if ( <expression> berekent de wortel ) van een cijfer */ float a,b,c,m, epsilon; scanf("%f",&c); a=0, b=c; epsilon = c * 1.e-5; while( (b-a) > epsilon ) m=(a+b)/2; if (m*m-c >= 0) b=m; else a=m; printf("%f %f\n",a,b); m=(a+b)/2; printf("sqrt(%f)=%f\n",c,m); <statement1> else <statement2> Als <statement> uit meer als een instructie bestaat woorden de haakjes gebruikt om meerdere instructies in een block samen te vatten. 10

Vergelijkingen #include <stdio.h> Voor de vergelijkingen in <expression> hebben wij speciale vergelijkingsoperatoren: > >= < <= ==!= int main() /* dit programma berekent de wortel van een cijfer */ float a,b,c,m, epsilon; scanf("%f",&c); a=0, b=c; epsilon = c * 1.e-5; while( (b-a) > epsilon ) m=(a+b)/2; if (m*m-c >= 0) b=m; else a=m; printf("%f %f\n",a,b); voorbeeld if ( a > 10 ) doe_iets; nog_iets; else doe_iets_anders; nog_iets; m=(a+b)/2; printf("sqrt(%f)=%f\n",c,m); let op: = is een toewijzing == is een vergelijking 11

Loops (lussen) en herhalingen #include <stdio.h> int main() /* dit programma berekent Om enkele de wortel instructies van een binnen cijfer */ een programma te herhalen gebruiken wij de while en de for instructies. float a,b,c,m, epsilon; while ( <expression> ) <statement> scanf("%f",&c); a=0, b=c; epsilon = c * 1.e-5; while( (b-a) > epsilon ) m=(a+b)/2; if (m*m-c >= 0) b=m; else a=m; printf("%f %f\n",a,b); m=(a+b)/2; printf("sqrt(%f)=%f\n",c,m); a = a+1; Herhaalt <statement> zo lang als <expression> waar is. <expression> wordt eerst beoordeeld, voor het geval dat <expression> waar is wordt <statement> uitgevoerd. voorbeeld: herhaal zo lang a < 10 a=1; while ( a < 10 ) 12

Hoofdstuk 1: De basis van de taal C (Voortzetting) 13

Functies Gestructureerd programmeren bedoelt dat een groot programma in diverse subprogrammaʻs opgedeeld wordt. Een eenheid van instructies kan in een functie samengevat worden. <type> <functie naam> ( <type> <parameter naam> ) voorbeeld: int power(int base, int n) int i, p; p = 1; for ( i=1; i <= n; i++ ) p = p * base; return(p); Deze functie berekent de <n>de macht van het getal <base>. Met return wordt een waarde aan het uitvoerende programma terug gegeven. int main() int m; m = power(2,3); /* berekent 2^3 en geeft het resultaat naar m terug */ 14

Functies Bijvoorbeeld is printf ook een functie. Een functie kan ook een andere functie oproepen. printf( %i, power(3,3) ); /* dit geeft 3^3 = 27 uit */ 15

Lokale en globale variabelen De definitie van een variabel geldt in een omgeving die door de haakjes en aangegeven wordt. Dit is een lokale variabele. Een variabele die buiten alle gedefinieerd is geldt in het hele programma. Dit is een globale variabele. voorbeeld: int global; /* een globale variabele */ int een_functie(int i) int local; /* een lokale variabele */ main() int local; /* nog een lokale variabele. Dit heft niets met local in een_functie te doen */ 16

int a=10; Lokale en globale variabelen int functie(int m) int i=5, j=3; i = 2*m; a++; return(i); int main() int i, j; i=functie(a); j=functie(a); Wat zijn de waarden van i en j? A) i=20 j=20 B) i=20 j=22 C) i=5 j=3 dit is zeer gevaarlijk! 17

int a=10; Lokale en globale variabelen int functie(int m) int i=5, j=3, a; i = 2*m; a++; return(i); main() int i, j; i=functie(a); j=functie(a); Wat zijn de waarden van i en j? A) i=20 j=20 B) i=20 j=22 en nu? 18

Probleem: Wij willen temperatuur van graden Fahrenheit naar graden Celsius omzetten. Algoritme: C = 5/9 * (F - 32.0) Wij willen een tabel met F en C waarden uitprinten. 19

#include <stdio.h> /* conversion Fahrenheit --> Celsius */ int main() float fahr, celsius; int lower, upper, step; lower=0; upper = 300; step = 20; fahr = lower; while (fahr <= upper) celsius = (5.0/9.0) * (fahr-32.0); printf("%3.0f %6.1f\n", fahr, celsius); fahr = fahr+step; example1.c 20

for ( expr1; expr2; expr3 ) statement; Dit is het zelfde als expr1; while ( expr2 ) statement; expr3; for loops Eerst wordt <expr1> uitgevoerd (initialisatie). Zo lang <expr2> waar is worden <statement> en <expr3> uitgevoerd. voorbeeld: int a[10]; for (i=0; i<10; i++) printf( %i, a[i] ); geeft alle waarde van de vector a uit. 21

#include <stdio.h> int main() int fahr; for(fahr=0; fahr <= 300; fahr+=20) printf("%3d %6.1f\n",fahr, (5.0/9.0)*(fahr-32) ); example2.c 22

#include <stdio.h> Verdere voorbeelden van functies: getchar() putchar() /* copy text */ int main() int c; c=getchar(); /* read a character from standard input */ while (c!= EOF) putchar(c); /* write a character to standard output */ c = getchar(); example4.c 23

#include <stdio.h> /* copy text */ int main() int c; while ( (c=getchar())!=eof ) putchar(c); example5.c 24

Hoe kan ik thuis programmeren? Linux: gcc is een gewoon deel van Linux. Alles werkt zoals op de universiteit. Mac OSX: Installeer X code (dit is op een CD/DVD of in de app store). Daarnaar is gcc gewoon op uw computer beschikbaar. Windows: Vanuit Windows moet u eerst op de universiteit inloggen. Daarvoor is het programma putty nodig. Download dit programma van http://www.putty.org en installeer het op uw computer. Start putty hostname: lilo.science.ru.nl de facultaire login server gebruikersname en wachtword zoals in een van de computerzalen Nu bent u op de facultaire cluster en kunt gewoon werken zoals u in een van de computer zalen zit. 25

Dit was een overzicht van de taal C heel quick and dirty. In het volgende geven wij een systematische overzicht. 26

Hoofdstuk 2: Data types, operatoren en toewijzingen 27

Data types Namen van variabelen A..Z, a..z, 0..9, _ een variabel begint met A..Z of a..z 31 tekens zijn significant. Traditioneel gebruiken wij a..z voor variabelen en A..Z voor constanten. Woorden zoals if, while, for kunnen niet voor variabelen gebruikt worden. Alle variabelen moeten voor gebruik gedefinieerd worden. 28

Data types De basistypen zijn: char int float double Variaties van deze basistypen zijn: short en long long int, short int, long double Bovendien hebben wij nog signed en unsigned voor elke char en int type. voorbeeld: char: -128.. 0.. 127 en unsigned char 0.. 255 29

Data types en lengte in het geheugen #include <stdio.h> int main() printf("char = %3lu bytes\n", sizeof(char)); printf("int = %3lu bytes\n", sizeof(int)); printf("float = %3lu bytes\n", sizeof(float)); printf("double = %3lu bytes\n", sizeof(double)); printf("short int = %3lu bytes\n", sizeof(short int)); printf("long int = %3lu bytes\n", sizeof(long int)); printf("long double= %3lu bytes\n", sizeof(long double)); taak2.c char = 1 bytes int = 4 bytes float = 4 bytes double = 8 bytes short int = 2 bytes long int = 8 bytes long double= 16 bytes De bestanden /usr/lib/gcc/x86_64-linux-gnu/4.4/include-fixed/limits.h /usr/lib/gcc/x86_64-linux-gnu/4.4/include/float.h geven meer informatie over variabelen. Een bestand (voorbeeld limits.h) kunt u zoeken met het Linux command find /usr -name limits.h 30

#include<stdio.h> /* count the number of characters */ int main() long nc; nc=0; while ( getchar()!= EOF ) ++nc; printf("%ld \n", nc); example6.c 31

#include<stdio.h> /* count the number of characters */ int main() long nc; for( nc=0; getchar()!= EOF ; ++nc) ; printf("%ld \n", nc); example7.c 32

#include <stdio.h> /* count the number of lines */ int main() int c, nl; nl=0; while( (c=getchar())!= EOF ) if ( c == '\n' ) ++nl; printf("%d \n", nl); example8.c 33

Data types Om tekst op te slaan worden char arrays gebruikt. char text[80]; In deze variabel zijn 80 tekens opgeslagen. Een string eindigt in het geheugen met een \0. tt[] = een tekst ; string: een veld van tekens of een vector van teekens. 34

Constanten Constanten worden met #define gedefinieerd. voorbeeld: #define LENGTH 80 /* een integer waarde */ char text[length]; #define PI 3.1415 /* een floating point waarde */ #define ABC 0x00ff /* een hexadecimaal cijfer */ #define STRING een tekst /* een string constante */ Ook een variabele kan als een constante gedefinieerd worden const double e = 2.71828182845905; 35

#include <stdio.h> #define LOWER 0 #define UPPER 300 #define STEP 20 int main() int fahr; for(fahr=lower; fahr <= UPPER; fahr+=step) printf("%3d %6.1f\n",fahr, (5.0/9.0)*(fahr-32) ); example3.c 36

Constanten Let op: x en ʻxʻ zijn niet het zelfde! #define AA x is in het geheugen: x\0 (de worden niet opgeslagen) #define AA x is in het geheugen een integer waarde #include <stdio.h> taak3.c #define ABC 'x' #define CDE "x" int main() char cc = ABC; char text[] = CDE; printf("%i \n",cc); printf("%c \n",cc); printf("%i %i \n", text[0], text[1] ); printf("%s \n", text); 120 x 120 0 x 37

Niet-afdrukbare tekens \\ Backslash character. \? Question mark character. \' Single quotation mark. \" Double quotation mark. \a Audible alert. \b Backspace character. \e <ESC> character. (This is a GNU extension.) \f Form feed. \n Newline character. \r Carriage return. \t Horizontal tab. \v Vertical tab. \o, \oo, \ooo Octal number. \xh, \xhh, \xhhh,... Hexadecimal number. 38

Operatoren Rekenkundige operatoren Rekenkundige operatoren zijn +, -, *, / en % % geeft de rest van een deling. a=5%3; --> a=2 prioriteit: + - unitaire operatoren (voorteken) * / % binaire operatoren + - binaire operatoren 39

Operatoren Operatoren voor vergelijkingen > >= < <= hogere prioriteit ==!= lagere prioriteit Rekenkundige operatoren hebben een hogere prioriteit dan vergelijkingen. a < b-1 --> a < (b-1) Let op!" a = b" " kopieert de waarde van b naar a, dit is een toewijzing a==b" " vraagt: is a het zelfde als b? Dit is een vergelijking. 40

Operatoren Logische operatoren: && en of Uitdrukkingen die met && of gekoppeld zijn worden steeds van links naar rechts geëvalueerd. && heeft een hogere prioriteit dan. Allebij hebben een lagere prioriteit dan vergelijkingsoperatoren. voorbeeld: if ( a>10 && a<15 ) heeft geen extra haakjes nodig.! negatie operator, een unitair operator!x geeft 0 wanneer x!= 0 en 1 anders voorbeeld: if (!valid ) in plaats van if (valid == 0 ) voorbeeld: #define OK 0 if (!OK ) 41

(type name) expression Type conversie #include <stdio.h> taak4.c int main() int i,k; float a,b; i=2; a=10.5; b=a+i; /* hier wordt de type impliciet geconverteerd */ printf("%f \n",b); k = (int) a % i; /* % werkt alleen voor char en int variabelen */ printf("%i \n",k); 12.500000 0 42

Increment en decrement operator De operatoren ++ en -- kunnen voor of naar een variabele staan. n=5; x = ++n; --> x =6 en n=6. n wordt eerst verhoogt en daarna naar x toegewezen n=5; x = n++; --> x=5 en n=6. n wordt eerst naar x toegewezen en daarna om 1 verhoogt 43

a = b + c; Toewijzingen i = i +2; of korter i += 2; Deze toewijzingsoperator bestaat voor de meeste binaire operatoren, zoals + - * / % Let op:! x *= y+1 bedoelt! x = x * (y+1) en niet! x = x * y + 1 Het resultaat van een toewijzing kan ook in een vergelijking gebruikt worden. voorbeeld: while ( ( c = getchar() )!= EOF) Leest een teken van de standaard input tot het einde van het bestand. 44

/* count the number of lines, words and characters */ #include<stdio.h> #define IN 1 /* within a word */ #define OUT 0 /* outside a word */ int main() int c, nl, nw, nc, state; state = OUT; nl=nw=nc=0; while( (c=getchar())!= EOF ) ++nc; if(c=='\n') ++nl; if(c==' ' c=='\n' c=='\t') state = OUT; else if (state==out) state = IN; ++nw; printf("number of lines=%d number of words=%d number of characters%d \n", nl,nw,nc); example9.c 45

/* count the number of lines, words and characters */ #include<stdio.h> #define IN 1 /* within a word */ #define OUT 0 /* outside a word */ int main() int c, nl, nw, nc, state; state = OUT; nl=nw=nc=0; while( (c=getchar())!= EOF ) ++nc; if(c=='\n') ++nl; if(c==' ' c=='\n' c=='\t') state = OUT; else if (state==out) state = IN; ++nw; printf("number of lines=%d number of words=%d number of characters%d \n", nl,nw,nc); Linux: de teken stuurt de output van een > gcc -o example9 example9.c programma naar een andere programma door > cat example9.c./example9 > number of lines=37 number of words=84 number of characters555 example9.c 46

Voorwaardelijke toewijzingen if (a > b) z=a; else z=b; berekent het maximum van a en b. Of korter z = ( a>b? a : b); (expr1? expr2 : expr3) Eerst wordt expr1 berekend. Als dit niet 0 is wordt expr2 berekend, anders expr3. 47

Voorwaardelijke toewijzingen Met een voorwaardelijke toewijzing kunt u heel compact code schrijven for ( i=0; i<n; i++) printf( %6i%c, a[i], (i%10==9 i==n-1 )? \n : ); Dit geeft een vector van integer waarden uit. 10 waarde per rij, naar elke rij wordt een \n uitgegeven. 48

Voorwaardelijke toewijzingen (expr1? expr2 : expr3) #include <stdio.h> #define N 100 int main() int i; int a[n]; for ( i=0; i<n; i++) a[i] = i; 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 for ( i=0; i<n; i++) printf("%6i%c", a[i], (i%10==9 i==n-1 )? '\n' : ' ' ); tafel.c 49

Prioriteit van operatoren 1. Function calls, array subscription () [] ->. 2. Unary operators (right to left)! ~ ++ -- + - & (type) sizeof 3. Multiplication, division, and modular division expressions * / % 4. Addition and subtraction expressions + - 5. Bitwise shifting expressions << >> 6. Greater-than, less-than, greater-than-or-equal-to, and less-than-or-equal-to expressions < <= > >= 7. Equal-to and not-equal-to expressions ==!= 8. Bitwise AND expressions & 9. Bitwise exclusive OR expressions ^ 10.Bitwise inclusive OR expressions 11.Logical AND expressions && 12.Logical OR expressions 13.Conditional expressions (using?:). When used as subexpressions, these are evaluated right to left? : 14.All assignment expressions.when multiple assignment statements appear as subexpressions in a single larger expression, they are evaluated right to left. = += -= *= /= %= &= ^= = <<= >>= 15.Comma operator expressions, 50

Vergelijkingen Vergelijkingen hebben de waarde 1 als ze waar zijn en 0 als ze verkeerd zijn. char c; int d; c = 2 ; d = c >= 0 && c <= 9 ; Wat is de waarde van d? A) d=1 B) d=2 C) d=0 51