© Harry Broeders.
Deze pagina was bestemd voor studenten van de THRijswijk groepen Pm en Pv. Op deze pagina vind je het in de lessen SOPX1E1T1/P1 gebruikte studiemateriaal. Het belangrijkste studiemateriaal, het boek "De taal C van PSD tot C-programma" heb je als het goed is al in je bezit.
int wissel(int,
int); void wissel(int,
int);
int wissel(int a,
int b) void wissel(int a,
int b)
return(a,b);b terug. Zie
http://crasseux.com/books/ctutorial/The-comma-operator.html
voor verdere uitleg.
m.
Je kunt dan heel goed het verschil zien tussen call by value (m)
en call by reference parameters (funk, funo en
fung).
#include <stdio.h>int main() {int macht, a;int (*pnf)(int);int twee(int), drie(int);pnf = &twee;printf("Voer een geheel getal in: ");scanf("%d", &a);macht = (*pnf)(a);printf("De tweede macht van %d is %d\n", a, macht);pnf = &drie;macht = (*pnf)(a);printf("De derde macht van %d is %d\n", a, macht);getchar(); getchar();return 0;}int twee(int c) {return c*c;}int drie(int d) {return d*d*d;}
De in het rood aangegeven karakters zijn in het boek dus weggelaten. Dit mag omdat in C geldt: De naam van een functie mag gebuikt worden als een pointer naar (de eerste instructie van) de functie en vice-versa. Deze regel is vergelijkbaar met de regel: De naam van een array mag gebuikt worden als een pointer naar (het eerste element van) de array en vice-versa.
tabel heeft de eerste parameter
(p) wel een naam en de andere 3 niet. Dat is niet erg consequent. Zoals je
weet mogen de namen van de formele parameters in het prototype van
de functie weggelaten worden. Het is echter niet erg consequent om er drie
wel en één niet weg te laten.
tabel kan gebruikt worden om verschillende (andere)
functies in tabelvorm af te drukken. In het voorbeeld wordt de functie
tabel alleen gebruikt om een tabel met derde machten af te drukken.
Het zou didactisch beter zijn om te laten zien dat de functie
tabel ook andere functies in tabelvorm kan afdrukken (bijvoorbeeld
kwadraten). De eerste printf in tabel is dus duidelijk
verkeerd want tabel kan ook gebruikt worden om andere functies
in tabelvorm af te drukken.
printf in tabel moet "netjes" inspringen.
\t in de tweede
printf is niet handig omdat de TAB instellingen bij verschillende
systemen anders kan zijn. Het is beter om een veldbreedte op te geven b.v.
%10d.
Deze problemen zijn in het volgende programma verholpen:
#include <stdio.h>int main() {void tabel(int (*)(int), int, int, int);int twee(int), drie(int);printf("\nDe derde macht in een tabel van 1 t/m 10\n");tabel(&drie, 1, 10, 1);printf("\nDe tweede macht in een tabel van 11 t/m 20\n");tabel(&twee, 11, 20, 1);getchar();return 0;}void tabel(int (*p)(int), int van, int totEnMet, int stap) {int x;for (x=van; x<=totEnMet; x+=stap) {printf("%10d %10d\n", x, (*p)(x));}}int twee(int c) {return c*c;}int drie(int d) {return d*d*d;}
De in het rood aangegeven karakters kunnen ook worden weggelaten.
abcFormule waarmee de wortels van
een kwadratische functie
y=ax2+bx+c kunnen worden berekend met behulp
van de
abc
formule. De functie heeft 3 invoerwaarden: a, b
en c en ook 3 uitvoerwaarden:
Schrijf ook een main functie om de functie
abcFormule te testen. De uitwerking kun
je hier vinden.
if (strcmp(blabla,
NULL)==0)if (strcmp(blabla,
"")==0)
voor les 7:
Zie hier!