Conf. dr. ing. Ioan Cauţil Conf. dr. ing Ileana Nicolae
Lector dr. ing Mihai Buricea
Indrumar de laborator
Programarea calculatoarelor în limbajele C şi C++
Universitatea din Craiova
Cuvânt înainte
Prezenta lucrare fructifică experienţa didactică a autorilor dobândită pe parcursul mai multor ani în urma susţinerii orelor de curs şi aplicaţii la disciplinele Programarea calculatoarelor cu studenţii facultăţilor de profil electric de la Universitatea din Craiova.
Lucrarea permite şi unor cititori neiniţiaţi în domeniul informaticii să înţeleagă cu uşurinţă aspecte ale bazelor programării în C şi C++, noţiunile fiind prezentate gradual.
Pentru a uşura efortul depus de cei care nu au în faţă un calculator la citirea acestei lucrări, majoritatea problemelor rezolvate sunt acompaniate de extrase de ecrane generate în timpul execuţiei.
Bibliotecile şi funcţiile prezentate sunt cele corespunzătoate standardelor limbajelor C/C++..
Se propun 13 lucrări de laborator, care urmăresc noţiunile teoretice prezentate la cursul Programarea Calculatoarelor adresat studenţilor facultăţii de Electrotehnică.
Prezenta carte poate fi utilă atât studenţilor de la facultăţile de profil tehnic , informatic şi ştiinţele naturii, cât şi tuturor celor care trebuie să studieze Programarea Calculatoarelor şi Informatica sau vor să dezvolte programe în limbajele C şi C++.
Autorii
1 Tipuri fundamentale de date. Expresii aritmetice. Instrucţiunea de atribuire. 5
1.1 Utilizarea unui mediu de dezvoltare integrat 5
1.2 Sistemul de numeraţie binar 6
1.3 Tipuri fundamentale de date. Declararea tipului variabilelor 6
1.4 Expresii aritmetice. Instrucţiunea de atribuire 7
1.5 Operaţii intrare / ieşire 9
1.6 Probleme rezolvate 10
1.7 Probleme propuse 17
2 Structuri de control fundamentale 19
2.1 Operatorii ++ şi – 19
2.2 Operatori de deplasare 19
2.3 Operatori logici pe biţi 20
2.4 Expresii relaţionale 21
2.5 Expresii booleene 22
2.6 Structuri de control fundamentale 22
2.6.1 Instrucţiunea de selecţie (if) 22
2.6.2 Instrucţiunea de selecţie ternarǎ (?) 23
2.6.3 Instrucţiunea de selecţie cu mai multe alternative (switch) 23
2.6.4 Instrucţiunea de ciclare cu un numǎr cunoscut de paşi (for) 23
2.6.5 Instrucţiunea de ciclare cu testarea iniţialǎ a condiţiei de ciclare(while) 24
2.6.6 Instructiunea de ciclare cu testarea finalǎ a condiţiei de ciclare (do-while) 24
2.7 Probleme rezolvate 24
2.8 Probleme propuse 30
2.9 Precizia calculelor. Depăşirea. Rotunjirea. 31
3 Funcţii 35
3.1 Definirea funcţiilor 35
3.2 Probleme rezolvate 36
3.3 Probleme propuse 43
4 Pointeri. Referinţe. Alocarea dinamică a memoriei 45
4.1 Pointeri 45
4.2 Referinţe 48
4.3 Alocarea dinamică a memoriei 50
4.4 Probleme rezolvate 51
4.5 Probleme propuse 52
5 Operaţii cu şiruri de caractere tip C 53
5.1 Funcţii standard de prelucrare a caracterelor 53
5.2 Probleme rezolvate 54
5.3 Probleme propuse 57
6 Prelucrarea fişierelor în limbajul C 59
6.1 Fişiere text 59
6.2 Fişiere binare 62
6.3 Probleme propuse 64
7 Structuri şi uniuni 65
7.1 Structuri 65
7.2 Probleme rezolvate 65
7.3 Probleme propuse 67
7.4 Uniuni 67
7.5 Funcţii de timp 68
8 Clase 70
8.1 Definirea unei clase 70
8.2 Probleme rezolvate 71
8.3 Probleme propuse 74
9 Operaţii cu şiruri tip C++ 76
9.1 Clasa string 76
9.2 Probleme rezolvate 77
9.3 Probleme propuse 81
10 Moştenirea 82
10.1 Probleme rezolvate 82
10.2 Probleme propuse 86
11 Funcţii virtuale. Polimorfism. Supraîncărcarea operatorilor 87
10.3 Funcţii virtuale. Polimorfism 87
10.4 Supraîncărcarea operatorilor 89
10.5 Probleme propuse 92
11 Prelucrarea fişierelor în limbajul C++ 93
11.1 Fişiere text 93
11.2 Fişiere binare 96
11.3 Probleme propuse 97
12 Biblioteca de şabloane standard 98
12.1 Clase generice 98
12.2 Vectori 99
12.3 Liste 100
12.4 Numere complexe 102
12.5 Probleme propuse 103
1 Tipuri fundamentale de date. Expresii aritmetice. Instrucţiunea de atribuire.
Un mediu de dezvoltare integrat (Integrated Development Environment, IDE), conţine un editor de texte, un compilator şi un depanator de programme.
Editorul de texte este utilizat pentru a scrie programe. El afişează programul sursă în culori ce disting cuvintele cheie ale limbajului, şirurile de caractere, comentariile, etc.
Compilatorul permite crearea programelor executabile. Etapele execuţiei unui program sunt:
-
Compilarea. Compilatorul traduce programul sursă în limbajul maşină al calculatorului. Rezultatul traducerii programului sursă este un program obiect. Programul sursă poate consta din mai multe fişiere sursă. Compilatorul generează câte un fişier obiect din fiecare fişier sursă. Fişierele obiect au extensia obj.
-
Etapa următoare este editarea legăturilor, al cărei rezultat este un program executabil. In această etapă editorul de legături stabileşte legăturile între fişierele obiect şi ataşază programului funcţiile standard ale limbajului din biblioteci. Limbajele de programare au numeroase funcţii predefinite, funcţii matematice, funcţii de prelucrare a şirurilor de caractere, operaţii intrare – ieşire cu fişiere, etc. Aceste funcţii sunt precompilate în biblioteci de funcţii standard. Ele sunt ataşate programului în această fază. Fişierele executabile au extensia exe.
-
Ultima etapă este execuţia, în care programul executabil este încărcat în memorie executat.
Depanatorul permite rularea pas cu pas a programului şi afişarea valorilor variabilelor la fiecare pas.
Un mediu de dezvoltare integrat cere ca programul sursă să fie parte a unui proiect. Proiectul include fişierele cu programul sursă, programul obiect şi programul executabil. Fişierele sursă au extensia c pentru programele scrise în limbajul C şi cpp pentru cele scrise în limbajul C++. Fisierele obiect au extensia obj, iar programul executabil are extensia exe.
Directiva include
Atunci când compilatorul întâlneşte un apel la o funcţie, el trebuie să verifice concordanţa între parametrii din definiţia funcţiei (formali) şi cei actuali cu care este apelată funcţia. In plus, compilatorul are nevoie de tipul rezultatului funcţiei pentru a face conversiile necesare evaluării expresiei. Pentru aceasta este nevoie de o definiţie a funcţiei în care apar tipurile parametrilor şi tipul rezultatului. Această definiţie se numeşte şablon sau prototip şi are forma
tip numefuncţie(tip, tip, …, );
ce arată tipul funcţiei şi tipurile parametrilor.
De exemplu, funcţia sin are un singur parametru de tip double, iar rezultatul este de tip double; prototipul funcţiei sin este
double sin(double);
Limbajele C şi C++ au biblioteci standard cu prototipurile funcţiilor limbajului. De asemenea, utilizatorul poate defini biblioteci cu prototipuri. Toate aceste biblioteci sunt semnalate compilatorului cu directiva include cu forma
# include nume_bibliotecă
Aceste biblioteci sunt fişiere numite header sau antet. Directiva include este diferită în cazul limbajului C de cea din limbajul C++.
In cazul limbajului C, fişierele header au extensia h. De exemplu, biblioteca cu prototipurile funcţiilor intrare/ieşire tip C este stdio.h, biblioteca cu prototipurile funcţiilor matematice este math.h, biblioteca cu prototipurile funcţiilor de prelucrat şiruri tip C este string.h, etc. In consecinţă, în cazul unui program în limbajul C vom semnala compilatorului aceste biblioteci cu directivele
# include
# include
In limbajul C++ fişierele header nu au extensie. De exemplu, biblioteca cu prototipurile funcţiilor intrare/ieşire tip C++ este iostream. La utilizarea în limbajul C++, bibliotecile specifice limbajului C sunt redefinite ca , , , etc. In plus, toate funcţiile standard ale limbajelor C şi C++ sunt grupate într-un spaţiu de nume denumit std. In consecinţă, vom semnala compilatorului bibliotecile standard iostream şi math astfel :
# include
# include
using namespace std;
Putem defini propriile biblioteci cu prototipuri pe care să le semnalăm compilatorului cu directiva include. Numele propriilor biblioteci cu prototipuri sunt scrise în directiva include între ghilimele.
Dostları ilə paylaş: |