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

 
Una conversa en C

L'objectiu d'aquesta pràctica és fer servir les funcions d'entrada i sortida de C: printf() i scanf(). També  es començarà amb l'ús de variables.

 

Desenvolupament de la pràctica

Per tal d'afegir un nou projecte a l'espai de treball m1 podeu seleccionar File->New... o bé, amb el botó dret del ratolí, es fa clic damunt el nom de l'espai de treball a la finestra d'espai de treball. D'aquesta forma apareixerà un menú contextual, la primera opció del qual és Add New Project to Workspace. Creeu-ne un de nou amb el nom m1p02 i afegiu-li un arxiu de codi C/C++ anomenat m1p02.cpp (recordeu que l'extensió .cpp la posa automàticament VC++). Escriviu a la finestra d'edició el següent codi:

//m1p02.cpp: Una conversa en C 

#include <stdio.h> //printf i scanf 

void main(){

    char nom[30];
    int
edat;

     printf("Si us plau, escriviu el vostre nom\n");
     scanf("%s",nom);
     printf("Ara podeu escriure la vostra edat\n");
     scanf("%d",&edat);
     printf("Molt bé %s, vosté té %d anys\n",nom, edat);

}

Per crear l'arxiu m1p02.exe seleccioneu Build -> Build m1p02.exe (o bé la tecla F7). D'aquesta forma, i si no hi ha hagut errades de sintaxi, es crearà un arxiu anomenat m1p02.exe a la carpeta \...\m1p02\debug\

Executeu el programa seleccionant Build->Execute m1p02.exe (o bé la tecla Ctrl F5). És aconsellable executar sempre els programes la primera vegada en l'entorn Visual C++ per tal de poder depurar millor els possibles errors.

Si tot ha anat bé ja podrem crear la versió executable optimitzada seguint els mateixos passos de la pràctica anterior.

Podrem esborrar tots els arxius del directori \...\m1p02\Release\ excepte l'arxiu m1p02.exe.

Proveu d'executar-lo dintre i fora de l'entorn Visual C++.

 

Explicació del programa

En primer lloc es pot observar que en aquesta pràctica s'ha fet servir l'altre tipus de comentaris:

//m1p02.cpp: Una conversa en C

Quan es posen els símbols //, tot el que hi ha a continuació i fins al final de la línia és ignorat pel compilador.

La segona línia:

#include <stdio.h> // printf i scanf

informa al compilador que afegeixi les definicions de les funcions que es troben a l'arxiu capçalera stdio.h. En aquest cas, aquesta línia és necessària ja que farem servir les funcions printf() i scanf(). El comentari explica aquesta circumstància.

Amb la línia:

void main(){

comença la funció principal, que en aquest cas, com a la pràctica anterior, no retorna cap valor.

Es declaren dues variables,

char nom[30];

int edat;

una variable preparada per guardar una cadena de caràcters de fins a 30 caràcters, anomenada nom, i una variable entera anomenada edat. En C és obligatori declarar totes les variables abans d'usar-les. Aquesta declaració serveix perquè es reservi la memòria necessària per al seu emmagatzematge.

En la següent part del codi:

printf("Si us plau, escriviu el vostre nom\n");

scanf("%s",nom);

printf("Ara podeu escriure la vostra edat\n");

scanf("%d,&edat);

la primera línia fa que s'imprimeixi a la pantalla el text de l'argument de printf() i fa que el cursor vagi a la línia següent. En aquest moment, l'execució del programa s'atura esperant que l'usuari introdueixi una cadena de caràcters. La funció scanf() s'encarrega de llegir el contingut de la cadena introduïda per teclat i és emmagatzemada en la variable nom. %s és el codi de tipus corresponent a les cadenes de caràcters. Pel fet que el nombre no és exactament una variable sinó una cadena de caràcters (un vector o array de caràcters) no s'ha de posar & davant del nom en la funció scanf(). Veurem més endavant que, normalment, el segon argument i següents d'aquesta funció és el nom d'una variable precedida pel caràcter &. L'explicació d'això serà tractat en profunditat més endavant.

Després d'imprimir el text de l'argument de printf() de la tercera línia,  l'execució es torna a aturar i scanf() espera que s'introdueixi un enter amb el teclat. Aquest enter serà emmagatzemat en la variable entera edat. En aquest cas, sí és obligatori posar & davant del nom de variable edat.

La línia:

printf("Molt bé %s, vosté té %d anys\n",nom, edat);

il·lustra l'ús de printf() amb més d'un argument. Fixeu-vos que en el primer argument hi ha dos codis de tipus, un del tipus de cadena de caràcters (%s) i un altre del tipus nombre enter (%d). Els dos arguments que segueixen al primer corresponen exactament a dues variables dels tipus dels codis abans esmentats. En la funció printf() no s'ha de posar & davant del nom de les variables.

A l'executar el programa es pot observar que els caràcters especials, com les vocals accentuades, no s'imprimeixen bé a la pantalla. A la pràctica següent veurem com resoldre aquest problema.