![]() |
Mòdul
1
![]() |
Fonaments de
Programació. Llenguatge C/C++![]() |
Pràctica
![]() ![]() ![]() ![]() ![]() ![]() |
![]() |
![]() |
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
Creeu un nou arxiu C anomenat m1p02.c i escriviu a la finestra d'edició el següent codi:
Per compilar i muntar el programa prem la tecla F11 o bé selecciona l'opció Munta del menú principal d'Anjuta. En la finestra inferior de la pantalla el compilador us mostrarà els errors que ha trobat o en cas contrari posarà: gcc "m1p02.c" -o "m1p02" completat correctament. Si teniu errors, marcarà la línia i l'error. Cal corregir-los i tornar a fer l'anterior procés. Explicació del programa En primer lloc es pot observar que en aquesta pràctica s'ha fet servir l'altre tipus de comentaris:
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:
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. La tercera línia: void
NetejaBuffer(){ while(getchar() != '\n'); } aquesta funció evitarà que el
programa es salti la instrucció
scanf("%d",&edat); Amb la línia:
comença la funció principal, que en aquest cas, com a la pràctica anterior, retorna un zero. Es declaren dues variables,
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:
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, el programa crida a la funció NetejaBuffer() per tal de netejar el buffer del teclat i permetre l'execució de la següent instrucció. En la cinquena sentencia 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:
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, s'imprimeixen bé a la pantalla. |