Índex


 

cap01.zip exerci01.zip

Capítol 1

Introducció a la programació en C.

  1. Els dos primers programes amb C.
  2. Les variables en C.
    1. El nom de les variables
    2. Assignació de valor a una variable.
    3. Un programa amb vàries variables.
  3. Funcions. Que son?
  4. Exercicis.

1.1. Els dos primers programes amb C.

Observa el següent programa escrit en C estendard:
 

#include <stdio.h> 

int main(void) 
{
    printf("Hola mon, existeixo \n"); 

    printf("com a programa en\n"); 
    printf("el teu ordinador\n"); 

    return 0; 

/*Conjunt de rutines que conté l'ordre printf.*/ 

/*Declaració de la funció principal del programa.*/ 
 

/*Instruccions de sortida a pantalla*/ 
/*instrucció de sortida del programa.*/


 

#include <stdio.h> La primera línia conté la instrucció #include que li diu al compilador d'utilitzar biblioteques de funcions i definicions de variables escrites prèviament i que estan gravades en el disc dur. En aquest cas utilitzem la biblioteca stdio.h (és una biblioteca comú a totes les versions del llenguatge C). La sentència #include és una directiva del compilador.
int main(void) Assigna el nom a la funció principal del programa main. En el nostre programa només hi ha una funció.
printf("Hola mon, existeixo\n") Escriu en la pantalla "Hola mon, existeixo" i dona un salt de línia. Les altres dos instruccions printf fan el mateix.
return 0  És la darrera instrucció de totes les funcions i retorna el control de l'ordinador al programa (cas de la funció main) o funció que va executar la funció.
{ Li diu al compilador on començar les instruccions de la funció.
} Li diu al compilador on acaben les instruccions de la funció.
/* Obre parèntesi per a comentaris del programador. No son instruccions de programa.
*/ Tanca el parèntesi obert per a comentari.
; És un separador entre sentències.

En el següent programa introduïm una nova instrucció que ens permet d'utilitzar variables de tipus enter.
 

#include <stdio.h> 
int main(void) 
{
    int Num;      /*Declaració de la variable num*/ 

    Num=25;      /*assignació de valor a la variable*/ 
    printf("La variable Num conté‚ el valor %d \n",Num); 

    return 0; 
}

int Num La paraula int seguida d'un nom de variable declara al compilador que ha de crear una variable de tipus enter.
num=25 Aquesta és una instrucció d'assignació de valor a una variable prèviament declarada.

1.2. Les variables en C.

Existeixen els tipus de dades. Els tipus elementals de dades son les dades numèriques i les alfanumèriques. Les dades numèriques poden ser de distints tipus, com enters, en coma flotant, etc.

Les dades, per a ser utilitzades, poden estar assignades a una variable que ha de ser declarada prèviament amb el seu tipus i el seu nom.

La instrucció de declaració d'una variable és de la forma dels exemples següents:

Tipus nom;  
int Anys; Variable de tipus enter anomenada Anys
char Tecla; Variable de tipus caràcter anomenada Nom
float Longitud; Variable de tipus reial en coma flotant anomenada Longitud

Es poden declarar varies variables del mateix tipus en la mateixa línia. La instrucció float radi, altura, volum declara tres variables de tipus float.

1.2.1. El nom de les variables

El nom d'una variable el tria el programador. És bo que recordi el significat de les dades que conté aquesta variable. El nombre de caràcters que pot arribar a tenir un nom de variable depèn de la versió de C que s'utilitzi, però per exemple en l' ANSI C és de 31. En el C++ de Borland és de 32. Poden formar par del nom els les lletres minúscules, les majúscules els nombres i el símbol de subratllar. En tot cas el primer caràcter ha de ser una lletra o el símbol _, no pot ser un nombre.
 

Noms vàlids  Noms no vàlids
Cognoms "nom"
_quantitat 2cognoms
tant_per_cent ant.
x1 peça

1.2.2. Assignació de valor a una variable.

És el procés de donar valor a una variable. L'assignació de valor pot fer-se de dues formes:

  1. En combinació amb la sentència de la declaració de la variable:
  2. En el decurs del programa:

En els dos casos l'assignació es fa de dreta a esquerra. És a dir, el compilador examina el que hi ha a la dreta de l'igual i després assigna el valor obtingut al nom que es troba a l'esquerra. Així si x2 és 12 el compilador avalua l'operació 12 + 23 i assigna el resultat 35 a la variable x1.

1.2.3. Un programa amb vàries variables.

En aquest exemple observarem com es pot assignar valor a dues variables en el decurs del programa i com es poden imprimir en pantalla amb la funció printf.
 

#include <stdio.h> 
int main(void) 
{
    int potes,cues,orelles,ovelles; 

    ovelles=25; 
    potes=4*ovelles; 
    cues=ovelles; 
    orelles=2*ovelles; 
    printf("En un ramat de %d ovelles hi ha %d potes, %d cues i %d orelles\n", ovelles, potes, cues, orelles); 

    return 0; 
}

El resultat en pantalla és

En un ramat de 25 ovelles hi ha 100 potes, 25 cues i 50 orelles.

Es pot veure que s'imprimeix en pantalla el que hi ha escrit entre cometes i que cada %d substitueix al valor assignat a la variable corresponent. Heu de tenir cura de posar les variables en l'ordre adient. Més endavant farem una explicació més estesa de la funció printf. 

1.3. Funcions. Que son?

Observa l'exemple següent:
 

#include <stdio.h> 

void EsperaIntro(void);     /*Declara al compilador que haurà una funció*/ 

int main(void)          /*Funció principal*/ 
{
    printf("La següent instrucció crida a la funció EsperaIntro\n"); 

    EsperaIntro(); 
    printf("Ja has premut la tecla intro i el control ha tornat a la funció main\n"); 

    return 0; 

void EsperaIntro(void)       /*Funció EsperaIntro */ 
{
    char tecla; 

    printf("Prem la tecla intro i continuarà el programa\n"); 
    while((tecla=getchar()) != '\n');     /*no permet sortir fins que es premi intro*/ 

Com es veu en aquest exemple hi dos blocs de programa totalment diferenciats, main i EsperaIntro. El segon és una funció, que realitza una tasca determinada, la d'esperar que es premi intro. Cal indicar que una funció pot cridar-se des d'altra funció, així la funció main executa la funció EsperaIntro.
Per escriure una funció primer es declara al compilador al començament del programa. Després es fa la funció main i desprès s'escriuen les altres funcions. Observa en el llistat del programa que en declarar una funció se l'hi posa un punt i coma al darrera i quan s'escriu la funció no s'escriu el punt i coma.

Un altre exemple de funció.
 

#include <stdio.h> 

int Quadrat(int valor);      /*Declara al compilador que haurà una funció*/ 

int main(void)         /*Funció principal*/ 
{
    int num1,c1; 

    int num2,c2; 
    num1=5; 
    c1=Quadrat(num1); 
    num2=6; 
    c2=Quadrat(num2); 
    printf("El quadrat de %d és %d\n",num1,c1); 
    printf("El quadrat de %d és %d\n",num2,c2); 

    return 0; 

int Quadrat(int valor)    /*Funció Quadrat*/ 
{
     return valor*valor; 

En aquest exemple la funció Quadrat és similar a una funció de matemàtiques en la que es dona un valor, la funció el treballa i retorna un altre valor.

Si comparem les dues sentències de declaració d'aquestes dos funcions observarem les diferencies:

    void EsperaIntro(void)          int Quadrat(int valor)

void vol dir buida, és a dir és una funció que no rep cap dada i que no en retorna cap.

El primer int vol dir que la funció retornarà una dada de tipus enter i el segon int declara que la funció rebrà una dada també de tipus enter.

1.4. Exercicis.

  1. Escriu un programa que escrigui a la pantalla les frases següents sense utilitzar variables: Un byte té 8 bits. Un Kilobyte té 2 elevat a 10 bytes. (1kb. = 1.024bytes.) Per tant un Kb té 1.024*8 bits ( 8192 bits). Un megabyte són 1024 kilobytes. Un gigabyte són 1024 megabytes. Un terabyte són 1024 gigabytes.
      
  2. Escriu un altre programa que escrigui les tres primeres línies de l'exercici 1 però utilitzant variables i ens digui de cada unitat quants bytes representa.
     
  3. Escriu un programa que escrigui tres línies, però que desi una en blanc entre cada línia.
     
  4. Un programa dona informacions per pantalla. Entre cada línia d'informació demana que es premi la tecla intro. Les informacions poden ésser per exemple Em dic Pep, visc a Sabadell, estudio programació d'informàtica de gestió, etc...
     
  5. En un programa es defineixen tres funcions, la funció main, la funció quadrat, i la funció cub. En la funció main s'utilitzen les funcions quadrat i cub al menys 2 vegades cadascuna per produir sortides per pantalla.
     
  6. Quina sortida per pantalla produiran aquests programes?

    #include <stdio.h> 
    int main(void) 

       int a,b; 
       a=5; 
       b=2; 
       b=a; 
       printf("%d %d\n",a,b); 
       return 0; 
    #include<stdio.h> 
    int main(void) 

       int a,b; 
       a=5; 
       b=2; 
       b=a; 
       a=b; 
       printf("%d %d\n",a,b); 
       return 0; 
    #include <stdio.h> 
    int main(void) 

       int a,b,c; 
       a=5; 
       b=2; 
       c=b; 
       b=a; 
       a=c; 
       printf("%d %d\n",a,b); 
       return 0; 

    Explica el que hem fet en el tercer exemple.

  7. En aquest programa hi ha tres errors. Cerca'ls i explica qual és la versió correcta i perquè.
  8. #include <stdio.h> 
    int main(void); 
    {
          int a,b, c; 
          a=5; 
          b=2; 
          a+b=c; 
         return 0; 
    }
  9. Escriu un par de programes de la teva invenció.