





















Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity
Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium
Prepara tus exámenes
Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity
Prepara tus exámenes con los documentos que comparten otros estudiantes como tú en Docsity
Encuentra los documentos específicos para los exámenes de tu universidad
Estudia con lecciones y exámenes resueltos basados en los programas académicos de las mejores universidades
Responde a preguntas de exámenes reales y pon a prueba tu preparación
Consigue puntos base para descargar
Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium
Comunidad
Pide ayuda a la comunidad y resuelve tus dudas de estudio
Ebooks gratuitos
Descarga nuestras guías gratuitas sobre técnicas de estudio, métodos para controlar la ansiedad y consejos para la tesis preparadas por los tutores de Docsity
Asignatura: Fonaments d'informática, Profesor: xavier Roca, Carrera: Enginyeria Informàtica, Universidad: UAB
Tipo: Apuntes
1 / 29
Esta página no es visible en la vista previa
¡No te pierdas las partes importantes!






















Idea → Dividir els programes en un conjunt de mòduls més petits i més fàcils de manipular (programar, depurar, reutilitzar, etc...)
Avantatges d’utilitzar funcions:
Divisió en funcions
Funció 1
Funció 2
Funció 3
Execució del programa
Crides a les funcions
Elements mòbils: QiX
int PX=7, PY= 15; int DirX_P=1, DirY_P=-1;
GotoXY(PX,PY,hScreen); TextColor(WHITE,BLACK,hScreen); printf(“%c”,BRICK);
GotoXY(PX,PY,hScreen); TextColor(BLACK,BLACK,hScreen); printf(“%c”,BRICK);
PX+=DirX_P; PX+=DirY_P;
GotoXY(PX,PY,hScreen); TextColor(WHITE,BLACK,hScreen); printf(“%c”,BRICK);
GotoXY(X,Y,hSrn); TextColor(WHITE,BLACK, hSrn); printf(“%c”,BRICK);
GotoXY(X,Y,hSrn); TextColor(BLACK,BLACK, hSrn); printf(“%c”,BRICK);
Elements mòbils: QiX
int PX=7, PY= 15; int DirX_P=1, DirY_P=-1;
PintarPilota(PX,PY,hScreen);
BorrarPilota(PX,PY,hScreen);
PX+=DirX_P; PX+=DirY_P;
PintarPilota(Px,PY,hScreen);
void PintarPilota(int X, int Y, HANDLE hSrn) { GotoXY(X,Y,hSrn); TextColor(WHITE,BLACK, hSrn); printf(“%c”,BRICK); }
void BorrarPilota(int X, int Y, HANDLE hSrn) { GotoXY(X,Y,hSrn); TextColor(BLACK,BLACK, hSrn); printf(“%c”,BRICK); }
< tipus_retorn > < nom_funció > (< tipus > < par_1 > , ... , < tipus > < par_N >) { < _Declaracióvariables_locals >; < Instruccions >; return (< valor_retorn >); }
Exemple float Calcular_nota (float nota1, float nota2) { float nota; nota=nota10.7+nota20.3; return nota; }
Declaració i definició de funcions
= < nom_funció > (< valor_par_1 >, ... , < valor_par_N >);
Crida a la funció
Exemple
nota_final = Calcular_nota (nota1, nota2)
void < nom_procediment > (< tipus > < par_1 > , ... , < tipus > < par_N >) { < _Declaracióvariables_locals >; < Instruccions >; }
Exemple void Mostrar_NumPrimers (int nombre) { int i; for (i=2; i<=nombre; i++) if (nombre%i!=0) printf (“%d”,i); }
Declaració i definició de procediments
< nom_procediment > (< valor_par_1 >, ... , < valor_par_N >);
Crida al procediment
Exemple
Mostrar_NumPrimers(100);
/* Divisors.c Programa que imprimeix els divisors d'un número */
void divisors ( int n) /* Declaració i definició del procediment / { int i; / Declaració de variables locals del procediment */
for (i=2; i<=n/2; i++) { if (n%i == 0) printf ("%d\n", i); } } void main () { int n;
printf ("Introdueix un número: "); scanf ("%d", &n); divisors (n); /* Crida al procediment */ }
Variables
Variables globals : Definides fora de qualsevol bloc de funció (inclòs el main() ). Es poden utilitzar a qualsevol funció del programa.
Variables locals : Definides dins del bloc d’alguna funció. Només es poden utilitzar dins de la funció on estan definides.
Hi ha 2 tipus de mecanismes per passar informació a una funció:
En C, el pas de paràmetres habitual a funcions que hem vist anteriorment és sempre un pas de paràmetres per valor.
En C, el pas de paràmetres s’ha de simular utilitzant apuntadors.
En C++, pel pas de paràmetres declarem el paràmetre com una referència
Pas de paràmetres per valor
Exemple int SumaEnters(int a, int b) { return (a+b); }
void main() { int a=7,b=5,res; ...... res=SumaEnters(a,b); printf(“%d”,res); }
Memòria main variable valor a b res
7 5 ???
Pas de paràmetres per valor
Exemple int SumaEnters(int a, int b) { return (a+b); }
void main() { int a=7,b=5,res; ...... res=SumaEnters(a,b); printf(“%d”,res); }
Memòria main variable valor a b res
7 5 ??
Pas de paràmetres per valor
Exemple int SumaEnters(int a, int b) { return (a+b); }
void main() { int a=7,b=5,res; ...... res=SumaEnters(a,b); printf(“%d”,res); }
Memòria main variable valor a b res
7 5 12
Pas de paràmetres per referència
& nom_parametre
Exemple void SumaEnters(int a, int b, int &resultat) { resultat=a+b; }
void main() { int a=7,b=5,res=0; ... SumaEnters(a,b,res); printf(“%d”,res); }
Memòria main variable valor a b res
7 5 0
Memòria SumaEnters paràmetre valor a b resultat
7 5
Pas de paràmetres per referència
& nom_parametre
Exemple void SumaEnters(int a, int b, int &resultat) { resultat=a+b; }
void main() { int a=7,b=5,res=0; ... SumaEnters(a,b,res); printf(“%d”,res); }
Memòria main variable valor a b res
7 5 12
Memòria SumaEnters paràmetre valor a b resultat
7 5