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ó .cc 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.

Els Entorns Integrats de Desenvolupament

Dins el mon del codi obert hi ha altres EID per desenvolupar programari i que ens permeten escriure aplicacions C/C++ per consola.

 Per Linux els mes coneguts son:

 Emacs.

És un editor de text molt popular entre els programadors. El manual de GNU Emacs diu d’ell que és un editor extensible, personalitzable, auto-documentat i de temps real. La darrera versió és la 21.4 de l’any 2006.

EMACS original significa, “Editor MACroS “ i  el va escriure Richard Stallman a l’any 1975 i s’executa en molts sistemes operatius, entre ells Microsoft Windows. Des de aquell any fins ara hi han hagut moltes implementacions d’Emacs. S’executa tant en terminals com en entorns gràfics. Aquest últims proporcionen barres de menús, barres d’eines, barres de soroll i menús contextuals.

Per més informació consulteu la pàgina http://www.gnu.org/software/emacs/emacs.html.

 Vim.

Vim ( Vi IMproved ) és un entorn de programació basat en el famós editor de text vi  d’ UNIX i present en tots els sistemes. La seva utilització no es molt intuïtiva i queda restringida a mode text en les finestres de consola , encara que existeixen versions per les XWindow,  la qual cosa limita el sèu ús generalitzat.

La pàgina oficial és  http://www.vim.org  i en la direcció  ftp://ftp.vim.org/pub/editors/vim/unix/ el podeu descarregar.

KDevelop

KDevelop va néixer l’any 1998 i és un EID per sistemes Linux i altres sistemes Unix publicat sota la llicencia GPL i és totalment gràfic. Suporta molts llenguatges de programació com C, C++, Java, Ada, SQL, Python, Perl i Pascal.

La pàgina oficial d’aquest projecte és : http://www.kdevelop.org/

 

Per Microsoft Windows entre altres EID tenim:

 DevC++.

Dev-C++ es un complert EID per els llenguatges de programació C i C++, per poder desenvolupar aplicacions de consola o gràfiques, aquestes últimes  amb les llibreries gràfiques wxWindow especialment dissenyades per aquest entorn .

Dev-C++ esta basat en Mingw port de GCC i GDB ( compilador i depurador emprats en sistemes Linux i també en aquest curs ).  Dev-C++ no és en realitat un compilador, es tracta més aviat d’un entorn que inclou un editor de projectes, un editor de text, un compilador, un enllaçador i un depurador. El compilador que es subministra amb Dev-C++ és Mingw, i pertany a un altre projecte.

Pàgina per els desenvolupadors d’aquest entorn  http://www.bloodshed.net

Visual-MinGW.

MinGW o MinGW32 (Minimalist GNU per Windows ) és una implementació dels compiladors GCC per la plataforma Win32. És un compilador a utilitzar acompanyat d’algun EID com per exemple l’anterior Dev-C++.

Per més informació d’aquest compilador  http://www.mingw.org

L'entorn Anjuta

 Per escriure les pràctiques i els exercicis d'aquest curs, podeu utilitzar qualsevol editor. Per facilitar l'edició i execució dels programes és mostrara l'ús d'Anjunta. Aquesta eina és un entorn intregat de desenvolupament ( EID ) que permet desenvolupar programari en diferents llenguatges de programació com C, C++, C#, Java, Perl, Python i altres, en sistemes GNU/Linux. Inclou un administrador de proyectes, assistents, plantilles, un depurador i un editor que verifica i ressalta la sintaxis escrita. Per obtenir més informació visita la pàgina oficial http://www.anjuta.org i http://anjuta.sourceforge.net. Trobareu aquest EID en Menú Principal/Aplicacions/Programació de la distribució Linkat del Departament d'Educació.

Dins el mon del programari lliure

:La interfície d'Anjuta

L'aspecte que té la interfície d'Anjuta és la següent:

A la part superior tenim el menú de l'aplicació i unes barres d'eines.

Al costat esquerre es troba la finestra Projecte. Aquesta finestra mostrarà tots els arxius que componen el projecte. Aquest curs treballarem només amb arxius independents.

A la part central de la pantalla tenim l'editor per poder escriure els programes. Comprovarem com ens facilitarà l'edició posant amb colors certes paraules del llenguatge.

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 d'Anjuta s'encarrega de posar de color verd o blau paraules reservades i altres especials i certs texts ens apareixeran amb color groc.

--- ---