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

 

Les variables tipus char

Una variable tipus char serveix per representar indistintament un caràcter i un enter petit, la relació es fa a través del codi ASCII. En aquesta pràctica començarem a familiaritzar-nos amb aquests tipus de variables.

 

Desenvolupament de la pràctica

Abans de tot, creeu un nou espai de treball per aquest segon mòdul amb el nom: m2, per això heu de seleccionar File->New -> fitxa Workspace, Blank Workspace. Anomeneu a l'espai de treball m2,  podeu definir-lo a la carpeta c:\curs visual c++ de la mateixa forma que vàreu fer a la primera pràctica del mòdul 1. Aneu afegint un projecte nou del tipus Win32 Console Application per a cada nova pràctica o exercici amb els noms que cada vegada es proposi.

Definiu un projecte nou anomenat m2p01 i afegiu-li un arxiu de font C/C++ anomenat m2p01.cpp. Escriviu el següent codi:

/* m2p01.cpp: Les variables tipus char */

#include <stdio.h>

void main(){

   char a;
   unsigned char b;

   a=66;
   printf("La variable a conté la lletra %c\n",a);
   printf("El valor numèric de la variable a és %d\n",a);

   a='A';
   printf("\nLa variable a conté la lletra %c\n",a);
   printf("El valor numèric de la variable a és %d\n",a);

   a=a+100;
   b=a; 
   printf("\nLa variable a conté la lletra %c\n",a);
   printf("El valor numèric de la variable a és %d\n",a);
   printf("\nLa variable b conté la lletra %c\n",b);
   printf("El valor numèric de la variable b és %d\n",b);

   b='A'+'B'+2;
   printf("\nLa variable b conté la lletra %c\n",b);
   printf("El valor numèric de la variable b és %d\n",b);

}

Explicació del programa

En aquest programa declarem dues variables anomenades a i b:

char a; 
unsigned
char b;

Ambdues són del tipus char. Ambdues seran emmagatzemades en un byte o octet de la memòria. L'única diferència entre una i altra és com s'interpretarà un dels bits de l'octet. La variable a podrà emmagatzemar un valor enter comprès entre -128 i 127 i la variable b, que porta el modificador unsigned, podrà emmagatzemar un valor enter entre 0 i 255.

Anem a veure amb deteniment cada part del programa:

a=66;
printf("La variable a conté la lletra %c\n",a);
printf("El valor numèric de la variable a és %d\n",a);

La primera és una sentència d'assignació que assigna el valor 66 a la variable a. Per veure el contingut d'aquesta variable per pantalla es fa servir la funció printf(). Si fem servir el codi de tipus %c es veurà en pantalla el caràcter ASCII associat al número 66, que és una 'B'. Si fem servir el codi de tipus %d es veurà en pantalla el número 66.  

a='A';
printf("La variable a conté la lletra %c\n",a);
printf("El valor numèric de la variable a és %d\n",a);

En aquestes tres línies l'assignació es fa mitjançant el caràcter ASCII directament. Aquest s'ha de posar entre cometes senzilles. La resta és exactament igual, la variable a contindrà el caràcter 'A' o el número 65. Per imprimir per la pantalla 'A' s'ha de fer servir el codi de tipus %c i per imprimir per pantalla 65 s'ha de fer servir el codi de tipus %d.

a=a+100;
b=a; 
printf("La variable a conté la lletra %c\n",a);
printf("El valor numèric de la variable a és %d\n",a);

printf("La variable b conté la lletra %c\n",b);
printf("El valor numèric de la variable b és %d\n",b);

En aquest tros de programa podem veure dos aspectes importants d'aquest tipus de variables: el primer és que les variables tipus char poden ser part d'expressions, de la mateixa forma que altres variables numèriques. El segon aspecte fa referència al modificador unsigned. Com el contingut de la variable a és  65 i al sumar  65 + 100 dóna 165, és a dir, un número més gran que el màxim valor que pot emmagatzemar una variable del tipus char amb signe. Quan s'escriu el valor d'a amb el codi de tipus %d, el número que surt per pantalla no correspon a 165 sinó a -91. La variable b, declarada com unsigned sí dóna el valor correcte 165. En els dos casos, amb la variable a i amb la variable b s'escriu el valor correcte de 'Ñ' si fem servir el codi de tipus %c.

b='A'+'B'+2;
printf("La variable b conté la lletra %c\n",b);
printf("El valor numèric de la variable b és %d\n",b);

Per últim, es pot comprovar en aquest tros de programa que es pot barrejar en una expressió les constants del tipus caràcter ASCII amb els números enters.

El resultat de l'execució del programa serà el següent:

La variable a conté la lletra B
El valor numèric de la variable a és 66

La variable a conté la lletra A
El valor numèric de la variable a és 65

La variable a conté la lletra Ñ
El valor numèric de la variable a és -91

La variable b conté la lletra Ñ
El valor numèric de la variable b és 165

La variable b conté la lletra à
El valor numèric de la variable b és 133