Docsity
Docsity

Prepara tus exámenes
Prepara tus exámenes

Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity


Consigue puntos base para descargar
Consigue puntos base para descargar

Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium


Orientación Universidad
Orientación Universidad


Subprogrames: funcions i procediments, Apuntes de Fundamentos de la Informática

Asignatura: Fonaments d'informática, Profesor: xavier Roca, Carrera: Enginyeria Informàtica, Universidad: UAB

Tipo: Apuntes

2013/2014

Subido el 09/11/2014

punsetambtetas
punsetambtetas 🇪🇸

4

(34)

13 documentos

1 / 29

Toggle sidebar

Esta página no es visible en la vista previa

¡No te pierdas las partes importantes!

bg1
Tema 4.
Subprogrames: Funcions i procediments
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17
pf18
pf19
pf1a
pf1b
pf1c
pf1d

Vista previa parcial del texto

¡Descarga Subprogrames: funcions i procediments y más Apuntes en PDF de Fundamentos de la Informática solo en Docsity!

Tema 4.

Subprogrames: Funcions i procediments

Funcions

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:

  • Simplificació del codi
  • Estructuració i claredat del codi
  • Facilitat per la localització d’errors

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);

PintarPilota

PX

PY

hScreen

X

Y

hSrn

GotoXY(X,Y,hSrn); TextColor(BLACK,BLACK, hSrn); printf(“%c”,BRICK);

BorrarPilota

PX

PY

hScreen

X

Y

hSrn

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); }

 Definim i Declarem quins paràmetres té

Funcions

< 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)

Funcions

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);

Procediments: exemple

/* Divisors.c Programa que imprimeix els divisors d'un número */

include

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 */ }

Funcions

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.

Important!!!

En general, les variables globals no s’han d’utilitzar mai.

Utilitzarem variables locals i les passarem a les funcions

com a paràmetres.

L’única excepció són les constants

Pas de paràmetres

 Hi ha 2 tipus de mecanismes per passar informació a una funció:

  • Pas de paràmetres per valor : es caracteritza perquè qualsevol canvi que es faci al paràmetre dins de la funció, no afecta al valor original de la variable utilitzada al programa principal quan es torna de la funció.
    • Pas de paràmetres per referència : es caracteritza perquè qualsevol canvi que es faci dins de la funció en el paràmetre, queda reflectit a la variable utilitzada al programa principal quan es torna de la 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

Pas de paràmetres per valor

  • A la definició de la funció posem el tipus del paràmetre i el nom.
  • Fem la crida a la funció amb les variables que volem passar

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

Pas de paràmetres per valor

  • A la definició de la funció posem el tipus del paràmetre i el nom.
  • Fem la crida a la funció amb les variables que volem passar

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

Pas de paràmetres per valor

  • A la definició de la funció posem el tipus del paràmetre i el nom.
  • Fem la crida a la funció amb les variables que volem passar

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

Pas de paràmetres per referència

  • A la definició de la funció definim el paràmetre com una variable 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

Pas de paràmetres per referència

  • A la definició de la funció definim el paràmetre com una variable 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