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

 
Resum Teòric

Elements bàsics d'un ordinador

Un ordinador és un sistema capaç d'emmagatzemar i processar amb molta rapidesa una gran quantitat d'informació. Una de les parts més importants d'un ordinador és la memòria.

La memòria d'un ordinador està constituïda per un gran nombre d'unitats elementals anomenades bits. Per tal de facilitar l'accés a aquests elements, els bits s'agrupen en grups de vuit, anomenats bytes o octets. La memòria es sol mesurar en Kbytes (1024 bytes), Mbytes (1024 Kbytes) i Gbytes (1024 Mbytes).

La CPU (Central Processing Unit) o Unitat Central de Processament, accedeix a la memòria per paraules (words) constituïdes per 2, 4 o 8 bytes (16 bits, 32 bits o 64 bits). Els ordinadors personals habituals –des del processador 386– tenen arquitectura de 32 bits (4 bytes). Aquesta dada és important a l'hora d'escriure un programa.

La memòria d'un ordinador s'utilitza per emmagatzemar diversos tipus d'informació: dades i programes. Dintre dels programes es pot distingir entre aplicacions i el propi sistema operatiu. Aquest últim és un conjunt de programes encarregats de la gestió interna de l'ordinador i la comunicació amb els diferents perifèrics.

 

Els programes i els llenguatges informàtics

Un programa està constituït bàsicament per un conjunt d'instruccions que s'executen seqüencialment, una darrera de l'altra (s'ha de mencionar, no obstant, l'existència de programes paral·lels, és a dir, que es poden executar simultàniament en més d'un processador).

Les instruccions que entén un processador estan constituïdes per uns i zeros. A això se li diu llenguatge màquina o binari. Des dels primers anys en què existeixen els ordinadors es varen desenvolupar llenguatges d'alt nivell, més propers al llenguatge natural. Al llarg de tota la història dels ordinadors, han existit molts llenguatges de programació d'alt nivell. Aquests han sofert una diversificació i una evolució (el mateix que ha passat amb les llengües naturals).

Cada llenguatge disposa d'una sintaxi o conjunt de regles per construir les diferents instruccions. Els llenguatges d'alt nivell són més o menys comprensibles per l'usuari però no pel processador. Perquè aquest pugui utilitzar-los és necessari traduir-los al seu propi llenguatge màquina. Aquesta és la tasca que es pot fer amb un intèrpret (com tradicionalment fa el BASIC) o amb un programa especial anomenat compilador. Aquest últim tradueix el programa al llenguatge propi de la màquina. Aquesta tasca es sol fer en dues parts: compilat i enllaçat (linkat). La primera part, o compilat, crea un fitxer objecte en un llenguatge pròxim a l'ordinador. La segona part, fa el procés de muntatge del programa amb les llibreries necessàries per crear el programa executable. Aquestes dues parts es poden fer d'un sol cop o bé per separat.

Un dels avantatges més importants dels llenguatges d'alt nivell és la portatibitat. Això vol dir que un programa desenvolupat en un PC podrà, en principi, ser executat en una altra plataforma (Macintosh, UNIX, etc.). Uns llenguatges asseguren més que d'altres aquesta característica. C és un dels destacats respecte a la portatibitat. De totes formes, per qüestions comercials i tècniques, la portatibitat no és mai 100%.

 

Els llenguatges C i C++

El llenguatge C

La invenció del llenguatge C s'adjudica a Dennis Ritchie a mitjans del 70 en els laboratoris Bell de la AT&T. Va ser posteriorment estandarditzat per un comitè de l'ANSI (American National Standard Institute), per poder garantitzar la compatibilitat de les diferents implementacions, donant lloc a l'estàndard ANSI C.

De fet, C no és exactament un llenguatge d'alt nivell, és més aviat, un llenguatge de nivell mitjà, ja que combina elements d'un llenguatge d'alt nivell, com el COBOL o el PASCAL, amb elements propis del llenguatge ensamblador, que és un llenguatge molt proper al llenguatge màquina. Aquesta característica fa de C una eina adequada per a la programació, tant a nivell de sistema com a nivell d'aplicacions.

Un aspecte a destacar de C és que conté només un nombre molt reduït de paraules clau (32 en ANSI C). Aquestes són:

auto

double

int

struct

break

else

long

switch

case

enum

register

typedef

char

extern

return

union

const

float

short

unsigned

continue

for

signed

void

default

goto

sizeof

volatile

do

if

static

while

       

Com a comparació es pot dir que el BASIC de l'IBM PC té 159 paraules clau.

El llenguatge C està constituït per tres elements:

  • El compilador
  • El preprocessador
  • La llibreria estàndard

El compilador és l'element més característic del llenguatge C. La seva missió és la de traduir a llenguatge màquina el programa C contingut en un o més arxius font. El compilador és capaç de detectar alguns errors durant el procés de compilació, enviant a l'usuari els corresponents missatges d'error.

El preprocessador és un component característic de C que no existeix en altres llenguatges de programació. El preprocessador actua sobre el programa font abans que comenci la compilació. Fonamentalment pot fer dues coses: cridar llibreries i definir constants simbòliques.

Amb l'objectiu de mantenir el llenguatge el més senzill possible, moltes sentències incorporades a altres llenguatges no tenen contrapartida a C. Per exemple, en C no hi ha sentències d'entrada i sortida de dades. Aquesta i altres operacions importants es fan mitjançant funcions preprogramades que venen incorporades al compilador o es poden aconseguir d'alguna altra forma. Aquestes funcions estan agrupades en un conjunt de llibreries que formen l'anomenada llibreria estàndard. Les declaracions i definicions d'aquestes funcions estan en arxius capçalera amb extensió .h que s'han d'invocar des del preprocessador amb la directiva #include, com ja veurem.

El codi de qualsevol programa escrit en C s'emmagatzema en un o més arxius en el disc de l'ordinador. Aquests arxius que contenen el codi font han d'acabar amb l'extensió .c. Això és així per tal que el compilador pugui reconèixer que, efectivament, és codi C. 

El llenguatge C++

El llenguatge C++ va ser desenvolupat a la dècada dels 80 a partir del estàndard ANSI C i la seva característica principal és la incorporació de les classes i la programació orientada a objectes (POO)

De fet, C++ és pot fer servir de dues formes diferents:

  • Com un llenguatge estructurat, pràcticament compatible amb C, amb unes poques modificacions i algunes millores.
  • Com un llenguatge orientat a objectes que representa un canvi qualitatiu en la forma d'entendre un programa.

En aquest curs d'introducció al C/C++ només desenvoluparem la primera forma de fer servir C++ .

Per tal d'informar al compilador que el codi que estem compilant està en C++ els arxius font han de fer servir l'extensió .cpp en lloc de .c.

Al llarg de tot el curs s'indicarà si una sentència o funció és pròpia de C++ o bé és compatible amb l'estàndard ANSI C.

C++ afegeix noves paraules claus i Visual C++ afegeix també uns altres paraules claus pròpies. Es pot consultar la llista total de paraules clau en les ajudes del Visual Studio.

 

L'entorn Microsoft Visual C++ 6.0

Microsoft Visual C++ proporciona un entorn de desenvolupament integrat (IDE) que permet escriure, crear i depurar aplicacions C i C++ de 32 bits, tant de consola com aplicacions Windows. De fet, l'entorn Visual C++, és realment complex degut al gran nombre de tipus d'aplicacions diferents que es poden fer i a la quantitat d'eines que permet manipular. Com aquest curs pretén ser una introducció al llenguatge C/C++, encara que farem servir aquest potent entorn, només descriurem molt per sobre les seves característiques.

Instal·lació

La instal·lació de Visual C++ 6.0 no és especialment difícil. En part, s'ha reduït la complexitat de la instal·lació al separar el sistema de desenvolupament del sistema d'ajuda. La biblioteca d'ajuda, denominada MSDN Library, ocupa una quantitat molt gran de memòria. La instal·lació d'aquesta ajuda es pot fer parcial, és a dir, es pot emmagatzemar part de la informació en el disc dur i quan sigui necessària l'ajuda demanarà la introducció d'un dels dos CD-ROM. D'aquesta forma no s'omple el disc dur.

Per a la instal·lació de Microsoft Visual C++ 6.0 s'executa el programa d'instal·lació setup.exe del primer CD de l'aplicació. Com gairebé totes les aplicacions Windows, l'instal·lador permet efectuar una instal·lació típica amb els components usuals o bé fer una instal·lació personalitzada que permet especificar el que realment es vol instal·lar.

 

Els assistents de Visual C++

Visual C++ proporciona un ampli conjunt d’assistents per a aplicacions (AppWizards), que permeten començar amb rapidesa la confecció de diversos tipus d’aplicacions.

Els assistents disponibles es poden seleccionar de la següent forma:

  1. En el menú File, feu clic en New.
  2. Feu clic a la fitxa Projects.

D'aquesta forma podrem veure la llista que es pot veure a la següent figura:

En aquest curs només farem servir l’opció: Win32 Console Application. Aquesta és l'opció per poder crear un projecte de consola.

Els projectes de consola estan preparats per tal que s’executin des del símbol del sistema de MS-DOS. No es tracta de programes basats en Windows. Les aplicacions Windows fan servir una interfície d’usuari gràfica com els quadres de diàlegs i controls. Això serà, potser, el contingut d’un altre curs.

Àrees de treball i projectes

Visual C++ organitza els arxius en projectes (projects) i en àrees de treball (workspaces)

Una àrea de treball pot estar formada per diversos projectes i un projecte pot estar format per diversos arxius. Els projectes poden compartir arxius. Veiem un exemple d'organització d'una àrea de treball:

En aquesta àrea de treball tenim tres projectes: projecte 1, projecte 2 i projecte 3. El projecte 1 conté els arxius a.cpp i a.h, el projecte 2 conté tres arxius: a.h, b.c i c.h, i el projecte 3 conté dos arxius: c.h i c.cpp.

Es pot veure que un mateix arxiu pot estar compartit per més d’un projecte.

La informació de l’àrea de treball s’emmagatzema en un arxiu amb l’extensió .dsw i la informació dels projectes s’emmagatzema en un arxiu amb l’extensió .dsp. Els assistents de Visual C++ creen un àrea de treball i un projecte de forma predeterminada.

La interfície de Microsoft Visual C++

L'aspecte que té la interfície de Visual C++ és la següent:

Al costat esquerre es troba la finestra Workspace. Aquesta finestra consta de dues fitxes: ClassView i FileView (en aplicacions Windows hi hauria una tercera).

La fitxa ClassView conté informació gràfica en forma d'arbre de les classes, funcions i variables de que consta cada projecte.

La fitxa FileView conté informació gràfica dels arxius de que consta cada projecte: Arxius font (Source files), arxius capçalera (Header files) i arxius de recursos (Resource files).

Al costat dret es troba la finestra d'edició de text (Text Editor Window) on es pot editar el codi de les aplicacions. Aquest editor és un vertader editor de text dissenyat especialment per la tasca d'escriure codi. L'editor s'integra molt bé amb altra eina important del entorn de desenvolupament que és el depurador (Debugger).

A la part inferior de la pantalla es troba la finestra de sortida, (Output) on es visualitzaran els resultats de les compilacions i depuracions.

 

Introducció a la sintaxi de C

Abans de començar un estudi detallat de tots els elements de C, s'ha de tenir una idea superficial dels elements d'un programa escrit en C:

  1. Tot programa C conté sempre la funció main(). És en aquesta funció on comença el programa. La definició de la funció main() es troba entre els símbols { i }. Aquests són els símbols que delimiten un bloc de sentències.

  2. Tota funció C, incloent la funció main(), pot tornar un valor. El tipus de valor de retorn s'ha de posar davant del nom de la funció en la seva definició. Si no es posa cap tipus se sobreentén el tipus per defecte que és int. Si volem que no torni cap valor hem de posar tipus void.

  3. Un programa ha de declarar totes les variables que faci servir. Això vol dir, indicar al principi del programa, o bé al principi d'un bloc, de quin tipus és la variable i el seu nom. En aquest punt s'ha d'indicar que en C++ no fa falta que les declaracions de variables es faci al començament, no obstant això, aquesta característica només és útil si fem programes molt llargs i interessa que la declaració estigui prop del lloc on es fa servir la variable. Si els programes no són massa llargs, és recomanable que les declaracions es facin totes juntes al començament de cada funció.

  4. Tota sentència C, incloent les declaracions de variables, acaben en ; (punt i coma)

  5. Per fer servir una funció pre-definida, per exemple, una funció de la llibreria estàndard, el programa ha de contenir una directiva #include amb un arxiu capçalera on es trobi la definició d'aquesta funció. S'ha de conèixer els arxius capçaleres que són necessaris per cada funció en particular.

  6. És aconsellable posar comentaris. Aquests són necessaris per documentar el codi, encara que són ignorats pel compilador.

    Hi ha principalment dues formes de posar comentaris

    • Els comentaris tradicionals de C, que és tot el text que va entre els símbols /* i */.
    • Els comentaris tradicionals de C++, que és tot el text que va després dels símbols // i fins al final de la línia.

    L'editor de text del Visual C++ s'encarrega de posar de color verd tots els comentaris. Aquest és el color per defecte, que es podria canviar si es volgués, encara que no és aconsellable fer-ho.

--- ---