![]() |
Mòdul
5
![]() |
Fonaments de
Programació. Llenguatge C/C++![]() |
Pràctica
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
![]() |
![]() |
|
Pràctica
d'ampliació ![]() ![]() |
Taules de valors de diverses funcions. Passar una funció com argument d'una altra funció
En aquesta pràctica aprendrem a declarar, definir i cridar funcions que tenen com arguments punters a altres funcions.
|
|||||
![]() |
Desenvolupament de la pràctica
Definiu un projecte nou anomenat m5pa2 i afegiu-li un arxiu de font C/C++ anomenat m5pa2.cpp. Escriviu el següent codi:
Explicació del programa Una altre ús dels punters a funcions és la possibilitat de poder passar una funció com argument d'una altra funció. En aquest programa, la funció que té com argument una funció és la funció procés() que té el següent protocol:
Aquesta funció, que no retorna cap valor, té quatre arguments, el primer del qual és un punter a una funció que té un argument del tipus double i retorna un valor del tipus double. Els altres tres arguments són de variables numèriques normals. Aquesta funció servirà per imprimir una llista de np valors de la funció apuntada pel punter f on els arguments d'aquesta funció comencen amb vi i s'incrementen de inc en inc. Per exemple, quan el punter pf apunta a la funció sin, com que el valor de les variables són vi=0, inc=1, np=5, la funció proces(pf,vi,inc,np) fa que s'imprimeixi el valor i el sinus dels números des del 0 fins al 4, és a dir:
Per tal que el punter pf declarat prèviament com un punter a una funció que retorna un valor double i admet un argument double apunti a la funció de la llibreria estàndard sin() basta amb assignar-li el nom de la funció sense els parèntesis:
Això mateix es podria fer amb qualsevol funció, ja sigui de la llibreria estàndard de C/C++ o no. Només és necessari que la funció tingui el protocol compatible amb la definició del punter pf.
|