Programacion con c++: Parámetros formales y actuales

En este artículo vas a conocer más información sobre las funciones y sobre como crearlas. En artículos anteriores he realizado ejemplos para que veas lo beneficioso que resulta la programación modular con funciones. Hoy te voy a mostrar conceptos más profundos sobre éstas. Lee con atención e intenta sacarle el máximo partido al artículo y estudiar estos conceptos.

Los parámetros formales (formal parameters) son aquellos especificados en la cabecera de la función. Al declarar un parámetro formal hay que especificar su tipo de dato. Los parámetros formales sólo se conocen dentro de la función.

Los parámetros actuales (actual parameters) son las expresiones pasadas como argumentos en la llamada a una función. Llamada:

<nombre-función> (<lista parámetros actuales>);

Nota. En inglés se usan los términos formal and actual parameters. Hubiese sidomejor llamarlos parámetros de llamada o algo así.

Ejemplo:

double Cuadrado(double entrada){
return entrada*entrada;
}
int main(){
double resultado, valor;
valor = 4;
resultado = Cuadrado(valor); // resultado = 16
cout <<  "El cuadrado de "<< valor << " es " << resultado;
}

Como podéis ver en el ejemplo, hemos definido e implementado una función Cuadrado. Esta función tiene un parámetro formal (Entrada) que como hemos dicho anteriormente solo tiene validez dentro de la función.

Cuando utilizamos la función cuadrado en el programa principal, vemos que la llamada la hacemos con una variable llamada valor. Este parámetro es el que denominamos parámetro actual.

Espero que estos conceptos te hayan ayudado a resolver tus dudas. Si no es así me gustaría que me las comentaras. Yo estaré para responderla personalmente.

Un saludo,

Javi Pizarro.

Acerca de Javi Pizarro

Ingeniero informático dedicado a la docencia, con experiencia en creación de programas de gestión y desarrollo de aplicaciones web.
Esta entrada fue publicada en Programacion y etiquetada , , , . Guarda el enlace permanente.

4 respuestas a Programacion con c++: Parámetros formales y actuales

  1. jose dijo:

    por favor le pido una ayuda en un problema programacion, gracia.

    #include
    #include
    #include struct datos {
    int num;
    struct datos *liga;
    }
    typedef struct datos nodo;
    void *creamemoria(int n);
    void recorrecursivo(nodo *p);
    void recorreiterativo(nodo*p);
    nodo *creanodo();
    nodo *creainicio();
    nodo *liberamemoria(nodo *p);
    main () {
    nodo *q, *t, *p=NULL, *u;
    int dat, i, ref, x;
    char opcion, s;
    while (s!=NUL) {
    clrscr(), printf(«\n\n menu de opciones \n»);
    printf(«\n\n [a]. crea el inicio \n»);
    printf(«\n\n [b]. recorrerecursivo\n»);
    printf(«\n\n [c]. recorreiterativo\n»);
    printf(«\n\n [d]. libera la memoria \n»);
    printf(«\n\n [e]. salir\n\n»);
    printf(«\t\t escoja una opcion:»);
    scanf(«%c»,&opcion);
    fflush(stdin);
    switch(opcion) {
    case ‘a’ : if(p !=NULL) clrscr();
    p= liberamemoria(p);
    p= creainicio();
    break;
    case ‘b’: recorrecursivo(p);
    getch();
    break;
    case ‘c’: recorreiterativo(p);
    getch();
    break;
    case ‘d’: if(p !=NULL) {
    p = liberamemoria(p);
    printf(«\n\n\n\t\t\t memoria libre «);
    }
    else printf(«\n\n\n\t\t la lista esta vacia»);
    getch();
    break;
    case ‘e’ : s =NULL;
    break;
    default: printf(«\n\n\t\t error»); getch();
    break;
    }
    }
    return 0;
    }
    void *creamemoria(int n) {
    void *p = (int *)malloc(n);
    if(p==NULL) {
    puts(«lo siento no hay suficiente memoria»);
    getch();
    exit(1);
    }
    return(p);
    }
    nodo *creanodo() {
    return (nodo*)creamemoria(sizeof(nodo));
    }
    void recorrecursivo(nodo *p) {
    if(p!=NULL) {
    printf(«%5d->»,p->num);
    if(p->liga !=NULL) recorrecursivo(p->liga);
    else printf(«%s»,p->liga);
    }
    else printf(«\n\n\n\t\t\t la lista esta vacia»);
    }
    void recorreiterativo (nodo *p) {
    nodo *q;
    if (p!=NULL) {
    for(q=p;
    q!=NULL;
    q=q->liga)
    printf(«%5d»,q->num);
    printf(«%s»,q);
    }
    else printf(«\n\n\t\t la lista esta vacia»);
    return;
    }
    nodo *liberamemoria(nodo *p) {
    nodo *q = NULL;
    while (p != NULL) {
    q = p;
    p = p->liga;
    free(q);
    }
    return(p);
    }
    nodo *creainicio() {
    int i, num;
    nodo *p, *q;
    p= creanodo();
    printf(«\n introduzca un valor entero:»);
    i = scanf(«%d»,&num);
    fflush(stdin);
    if(i==i) {
    p->num = num;
    p->liga =NULL;
    do {
    q = creanodo();
    printf(«\n introduzca otro valor entero:»);
    i = scanf(«%d»,&num);
    fflush(stdin);
    if(i==i) {
    q->num = num;
    q->liga= p;
    p=q;
    }
    else {
    free(q);
    break;
    }
    }
    while(i==1);
    }
    return(p);
    }
    en este programa solo hay un error que se repite. por favor encontralo si esta…

  2. juanmanuel dijo:

    Ojala muchos expertos dieran un vistazo a estos codigos. Pues lo que se necesita es aplicacion objetiva, algo que llene todas las expectativas de interes de muchos de nosotros. No simple teoria. Chauuuuuuuu

  3. rosita dijo:

    eres super te amo ja ja

Deja un comentario