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

 

Taules matemàtiques

En aquesta pràctica aprendrem a fer servir el codi de format de tabulació horitzontal i a escriure nombres decimals amb format. A més, coneixerem el nom d'algunes funcions matemàtiques comuns i la seva utilització.

Desenvolupament de la pràctica

Creeu un nou arxiu anomenat m1p06.c del tipus C Source file. Escriviu el següent codi:

//m1p06.c - taules matemàtiques -

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

int main(){

   double x;

   printf("Funcions matemàtiques\n");
   printf("Intruduïu el valor inicial d'x: ");
   scanf("%lf",&x); 
   system("clear");
   printf("Funcions matemàtiques\n\n");
   printf("x\tx^2\tx^3\tsqrt(x)\tx^(-1)\tln(x)\tlog(x)\texp(x)\n");
printf("_____________________________________________\n\n");
printf("%.2lf\t%.2lf\t%.2lf\t%.2lf\t%.2lf\t%.2lf\t%.2f\t%.2f\n"
,x,x*x,x*x*x,sqrt(x),1/x,log(x),log10(x),exp(x));

return 0;

}

Captura de l'execució del programa.

 

Si intenteu compilar i executar aquest programa veureu com us dona errors. Aquests es produeixen al utilitzar les funcions matemàtiques que es troben en la llibreria <math.h>.És necessari especificar una opció al compilar per tal de que carregui aquest arxiu.

Per fer-ho des de Anjuta trieu l'opció Paràmetres/Comandes i sorgirà la següent finestra.

Aquesta finestra ens permet personalitza les ordres de l'editor i del llenguatge. Aneu a Munta un fitxer i  afegiu -lm a continuació de gcc.

 Munteu el programa ( F11) i tot seguit l'executeu-lo ( F3 ). En la pantalla inferior de Anjuta veiem que s'ha executat gcc amb l'opció -lm.

             S'està muntant fitxer: m1p06.c ...

             gcc -lm   "m1p06.c"   -o   "m1p06"

             completat correctament

             Temps total: 0 segons

 

Si les pràctiques es compilen des de el terminal, també s'ha d'incloure l'opció -lm.

              gcc -lm  m1p06.c   -o  m1p06

 

Funcions matemàtiques      

Intruduïu el valor incial d'x:

 

Explicació del programa

 

Podem introduir qualsevol número amb o sense decimals. El valor d'aquest número serà emmagatzemat en la variable x, que és del tipus double. En el mòdul següent tractarem amb més detalls els tipus de variable. En aquest moment és suficient dir que el tipus double és el tipus amb més precisió per als  números amb decimals.

 

Una vegada introduït el nombre i la tecla INTRO, s'esborra la pantalla (amb system("clear")) i es mostra el següent:

 

Funcions matemàtiques                                                                    
x         x^2       x^3       sqrt(x)   x^(-1)    ln(x)     log(x)    exp(x)         
___________________________________________________________   
1.50     2.25      3.38      1.22       0.67       0.41      0.18      4.48  

           
Press any key to continue

 

Això s'ha aconseguit amb les següents línies de codi:

 

printf("Funcions matemàtiques\n\n");
printf("x\tx^2\tx^3\tsqrt(x)\tx^(-1)\tln(x)\tlog(x)\texp(x)\n");
printf("_____________________________________________\n\n");
printf("%.2lf\t%.2lf\t%.2lf\t%.2lf\t%.2lf\t%.2lf\t%.2f\t%.2f\n"
,x,x*x,x*x*x,sqrt(x),1/x,log(x),log10(x),exp(x));

 

La primera torna a imprimir el títol després d'haver esborrat la pantalla amb la línia anterior. A continuació hi ha la funció printf() amb un sol argument, aquest argument és una cadena de caràcters amb codis d'escapament. El codi \t correspon al tabulador horitzontal ( veure llista de codis ). Normalment la pantalla de sortida té 80 caràcters per línia. Podem imaginar-nos aquesta pantalla dividida en 10 columnes de 8 caràcters cadascuna. El tabulador fa que es passi des d'una columna al començament de la següent. Per tal que la sortida quedi bé, ens hem d'assegurar que el que volem tabular no ocupi més de 8 caràcters.

La tercera línia és una altra crida a la funció printf() amb un sol argument per tal d'imprimir una línia.

Per últim, la darrera funció printf() té 9 arguments: la cadena de control i les 8 expressions que volem imprimir, aquestes expressions són:

x           el valor de la mateixa variable

x*x        el quadrat

x*x*x     el cub (en C no és correcte posar ni x^2 ni x^3)

sqrt(x)    l'arrel quadrada

log(x)     el logaritme neperià

log10(x)  el logaritme decimal

exp(x)     l'exponencial (el resultat d'elevar el nombre e a x)

 

Totes aquestes expressions són del tipus double. Per tal d'imprimir un valor double amb la funció printf() es fa servir el codi de format %If (long float). Aquest codi permet un modificador per indicar quants decimals s'imprimiran. En aquest cas, %.2lf fa que s'imprimeixin dos decimals.

 

Conjunt de seqüències d'escape

 

CODI DESCRIPCIÓ CODI DESCRIPCIÓ
\a caràcter d'alarma \\ diagonal invertida
\b retroces, un espai enrera \? caràcter interrogant
\f nova pàgina \' cometa simple
\n nova línia \" doble cometa
\r retorn de carro \ooo número octal
\t tabulador horitzontal \xhh número hexadecimal
\v tabulador vertical    

                

Aquests caràcters es veuen com dos, però  representen un sol caràcter. El grup de codis que es troben a l’esquerra de la taula s’utilitzaven per moure el cursor en els terminals. El terminal podia ser la pantalla o l’impressora. És per això que ens trobem coses com nova línia, retorn de carro. Si tenim la necessitat de mostrar en el monitor el caràcter \, em de posar el codi \\ . El mateix passa amb els caràcters  ¿, ‘ , i ”. El codi  octal i hexadecimal ens permet introduir directament el codi numèric en octal o en hexadecimal.