Enrere Mòdul 7
Fonaments de Programació. Llenguatge C/C++---
Pràctica    Resum teòric Exercicis
Pràctica d'ampliació

 

Arguments de la funció main()

En aquesta pràctica veurem dos exemples d'aplicació dels arguments de la funció main().

 

Desenvolupament de la pràctica

Quan es vol especificar opcions o valors en el moment d'executar un programa des de la línia de comandaments del sistema operatiu, aquests es passen  a través dels arguments de la funció main(). La funció main() pot tenir dos arguments: 

  • El primer, de tipus int, contindrà el nombre total de paràmetres passats (el nom del fitxer executable es compta com el primer paràmetre) 

  • El segon és un vector de cadenes de caràcters.

En aquest primer exemple es pot veure fàcilment la forma d'extraure aquests paràmetres:

Creeu un nou arxiu del tipus C++ anomenat m7p091.cc i escriviu el següent codi:

//m7p091.cc - Arguments de la funció main() (I) -

#include <stdio.h>


int main (int argc, char *argv[]){
    int ct;

    printf("El nombre total d'arguments és %d\n",argc);

    for(ct=0;ct<argc;ct++) 
        printf("L'argument %d és %s\n",ct,argv[ct]);

    return 0;
}

Explicació del programa

En aquest programa es considerarà els paràmetres passats des de la línia d'ordres, per aquest motiu la funció main() comença:

void main (int argc, char *argv[])

La variable argc contindrà el nombre total de paràmetres, incloent el nombre de l'arxiu executable, cada paràmetre es passa com a cadena de caràcters i es pot recuperar amb argv[].

Des de el mateix editor Anjuta es pot llençar arguments sobre el programa sense tenir que sortir, anar a la linea d'ordres ( Terminal ) i fer les proves. Per fer això aneu al menú principal i trieu l'opció  Munta/Defineix paràmetres del programa  i us sortirà una finestra com la següent per poder posar els arguments i executar el programa.

A continuació es pot comprovar un exemple d'execució del programa anterior:

En el cas que es necessiti passar paràmetres numèrics, s'ha de fer una conversió. En el següent exemple es pot veure amb nombres del tipus double:

Creeu un nou arxiu del tipus C++ anomenat m7p092.cc i escriviu el següent codi:

//m7p092.cc - Arguments de la funció main() (II) -

#include <stdio.h>
#include <stdlib.h>

int main (int argc, char *argv[]){
    int ct;
    double mitjana=0;

    if (argc==1) return;

    for(ct=0;ct<argc;ct++) 
        mitjana=mitjana+atof(argv[ct]);

    printf("mitjana de les %d dades :%lf",  
            argc-1,mitjana/(argc-1));

    return 0;
}

Explicació del programa

Aquest programa calcularà la mitjana dels nombres introduïts darrere del nom de l'arxiu executable.

La conversió de la cadena de caràcters a variables del tipus double es fa amb la funció atof() el protocol de la qual es troba definit a l'arxiu stdlib.h Aquesta funció intenta convertir la cadena a double i, si no pot, torna 0. Per exemple:

atof("1.2")=1.2
atof("1.2hola)=1.2
atof("hola1.2")=0

Com que el nombre de paràmetres numèrics és igual a argc-1, per a calcular la mitjana s'ha de dividir per aquest nombre. En el cas que argc-1 sigui 0, el programa sortirà immediatament gràcies a la línia de comprovació:

 if (argc==1) return;

 A continuació teniu una captura de l'execució del programa des de el terminal de Linux.