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

 
Comprovació de dades

Una de les moltes funcions de les sentències condicionals és la comprovació de dades introduïdes per teclat. En aquesta pràctica aprendrem a fer la comprovació en alguns casos.

 

Desenvolupament de la pràctica

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

//m3p04.cpp comprovació de dades

 

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

 

void main(){

    int n;
    char c;

 

    printf("\nintroduïu un número senar...");
    scanf("%d",&n);
    if(n%2) printf("correcte\n");
    else printf("no és correcte\n");

 

    printf("\nintroduïu un número enter entre 1 i 5...");
    scanf("%d",&n);
    if(n>1&&n<5) printf("correcte\n");
    else printf("no és correcte\n");

 

    printf("\nintroduïu una vocal...");
    scanf(" %c",&c);
    c=tolower(c);
    if(c=='a'||c=='e'||c=='i'||c=='o'||c=='u')

        printf("correcte\n");

    else printf("no és correcte\n");

 

    printf("\npremeu la tecla ESC...\n");
    c=getch();
    if(c==27) printf("correcte\n");
    else printf("no és correcte\n");

Explicació del programa

La primera comprovació és si el nombre introduït és o no un nombre senar. Un nombre senar és aquell en el qual l'operació n%2 és diferent de 0, i per tant veritat.

La segona comprovació és si el número introduït es troba a l'interval (1,5). Això es comprova amb els operadors relacionals < i > i amb l'operador lògic &&.

La tercera comprovació és si el caràcter introduït és una vocal. Per tal d'incloure tant les majúscules com les minúscules es fa servir la funció tolower() que torna el caràcter en minúscules del caràcter que es posi com argument. El protocol d'aquesta funció es troba a l'arxiu de capçalera stdlib.h que s'ha d'incloure en el programa.

La quarta comprovació és si el caràcter introduït correspon a la tecla ESC, el codi ASCII de la qual és 27.

La raó per la qual en aquesta última part del programa es llegeix el caràcter amb la funció getch() en lloc de amb la funció scanf() és perquè la primera funció torna el codi del caràcter introduït pel teclat sense esperar que es premi la tecla INTRO. A les tres primeres parts ha de prémer aquesta tecla per tal de seguir amb l'execució del programa.

El protocol de la funció getch() es troba a l'arxiu de capçalera conio.h. Aquesta funció no pertany a l'estàndard ANSI C, ja que la seva implantació depèn molt de la màquina en concret. Visual C++ l'incorpora com a funció específica d'aquest compilador. S'ha d'indicar, no obstant, que aquesta funció va ser heretada del famós compilador Turbo C de Borland.