Programarea Calculatoarelor, seria CC

Laborator 1

Introducere

În acest laborator veţi învăţa să:



Implementarea programelor: editare şi compilare

Generalităţi

Atunci când dorim să implementăm un program, primul pas îl reprezintă scrierea instrucţiunilor acestuia într-un limbaj de programare (în acest caz, limbajul C). Pentru a realiza acest lucru se poate folosi orice editor simplu de texte, de exemplu:

Fişierul astfel obţinut este un simplu fişier text şi se numeşte fişier sursă. Conţinutul unui fişier sursă se numeşte cod sursă. Fişierele sursă pentru limbajul C au in mod convenţional extensia .c.

În continuare, pentru a obţine un program executabil, avem nevoie de un compilator specific limbajului care sa "traducă" codul sursă în instrucţiuni specifice procesorului. Conţinutul fişierului executabil rezultat se numeşte cod maşină, iar fişierele compilate (nu neapărat executabile) poartă numele de fişiere binare.

Există numeroase compilatoare pentru limbajul C. Cel mai cunoscut si mai răspândit este de departe gcc (denumirea vine de la GNU C Compiler), care poate fi instalat atât pe Linux, cât şi pe Windows sau Mac OS.

Există, bineînţeles, şi altele:

Cerinţă

Deschideţi un editor de texte (de exemplu, Mousepad sau GEdit) şi scrieţi următorul cod C:

#include <stdio.h>
int main(void)
{
    printf("PC 2010\n");
    return 0;
}

Salvaţi fişierul în directorul /home/student/ cu numele exemplu.c.

Deschideţi un terminal şi introduceţi comanda:

gcc exemplu.c

Executabilul creat se va numi implicit a.out. Pentru a-l rula, folosiţi comanda:

./a.out

Puteţi specifica voi un nume pentru fişierul executabil cu ajutorul opţiunii -o astfel:

gcc -o exemplu.exe exemplu.c

Cu toate acestea, extensia .exe este folosită de obicei pentru executabilele de Windows, iar executabilele de Linux nu au, în mod normal extensie! Este bine sa respectaţi aceste convenţii nescrise pentru a vă face mai uşor înţeleşi.


Folosirea unui mediu integrat de dezvoltare (IDE): Code::Blocks

Generalităţi

Mai ales la început, vi s-ar putea părea mai uşor să folosiţi un mediu de programare care vă permite să editaţi codul sursă şi să compilaţi şi rulaţi programele direct dintr-o interfaţă grafică. Există foarte multe medii integrate de dezvoltare pentru limbajul C, fiecare cu avantajele şi dezavantajele sale. Dintre cele mai cunoscute, amintim doar câteva:

Vă încurajăm să le încercaţi în timpul liber pentru a vă forma o părere despre care vi se potriveşte mai bine :).

Cerinţă

În laborator există instalat mediul Code::Blocks. Folosirea acestuia este intuitivă. Deschideţi Code::Blocks şi creaţi un nou fişier (File -> New -> Empty File).

Copiaţi programul de mai sus şi salvaţi-l. Compilaţi şi rulaţi programul (folosind meniul, iconiţele, shortcut-urile etc).

Pentru depanarea programelor va fi necesar să creaţi un nou proiect (File -> New -> Project). Alegeţi Console Application şi în fereastra următoare, limbajul C. Completaţi numele proiectului şi calea unde doriţi să fie creat (de exemplu, în /home/student/).

Copiaţi următorul program:

int main()
{
    int a, b, rest;
    a = 150;
    b = 84;
    while (b > 0) {
        rest = a % b;
        a = b;
        b = rest;
    {
    printf("cmmdc(150, 84) = %d\n", a);
    getchar();
    return 0;
}

Adăugaţi un breakpoint la linia a = 150; (click la dreapta numărului corespunzător liniei) şi porniţi programul în modul de depanare (debugging) cu ajutorul tastei F8. Pentru a urmări valorile unor variabile pe parcursul execuţiei programului pas cu pas, faceţi vizibilă fereastra watch(Debug -> Debugging Windows -> Watches) şi adăugaţi numele variabilelor pe care vreţi să le monitorizaţi (click dreapta în interiorul ferestrei şi alegeţi Add Watch). Rulaţi programul instrucţiune cu instrucţiune (cu ajutorul tastei F7) şi urmăriţi cum se modifică valorile variabilelor.

Încercaţi să vă familiarizaţi cu editorul şi cu debuggerul şi cereţi explicaţii suplimentare dacă este cazul.


Probleme de seminar

Rezolvaţi următoarele probleme folosind pseudocod:

  1. Interschimbul valorilor a două variabile a şi b.
  2. Rezolvarea ecuaţiei de gradul 2: ax2+bx+c=0.
  3. Să se afişeze în ordine crescătoare valorile a trei variabile: a, b şi c.
  4. Să se calculeze şi să se afişeze suma: S= 1 + 1*2 + 1*2*3 + ... n!.
  5. Să se calculeze şi să se afişeze suma cifrelor unui număr natural n.
  6. Să se calculeze şi să se afişeze inversul unui număr natural n.
  7. Să se afişeze dacă un număr natural dat n este prim.
  8. Să se afişeze primele n numere naturale prime.
  9. Să se descompună în factori primi un număr dat n.
  10. Să se calculeze valoarea minimă, respectiv maximă, dintr-o secvenţă de n numere reale.
  11. Să se afişeze toate numerele naturale mai mici decât 1000 care se pot scrie în două moduri diferite ca sumă de pătrate.
  12. Se dă o secvenţă de n numere întregi pozitive. Să se afişeze cele mai mari numere de 2 cifre care nu se află în secvenţa respectivă.
  13. Se dă o secvenţă de n numere întregi, ale căror valori sunt cuprinse în intervalul [0,100]. Să se afişeze valorile care apar cel mai des. (se vor folosi vectori)