ebook img

introducere in ansi c++ PDF

214 Pages·2006·1.38 MB·English
by  
Save to my drive
Quick download
Download
Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.

Preview introducere in ansi c++

Introducere in ANSI C++ Introducere Initial, aceasta lucrare a fost conceputa avand ca instrument de lucru mediul de programare Borland C++ 3.1, varianta de DOS. Aparitia standardelor ANSI pentru C si C++ si in primul rand introducerea suportului pentru acest standard in majoritatea compilatoarelor (gcc, g++, bcc32 etc.), a dus la faptul ca unele dintre sursele existente sa nu mai fie viabile. Capitolele au fost modificate in asa fel incat un utilizator familiarizat cu mediul BC++ 3.1 sa poate face intr-un mod accesibil trecerea de la acest mediu spre variantele free oferite pe piata cu suport ANSI C++. Lucrarea a fost editata in intregime sub programul OpenOffice Writer, oferit in (probabil) toate distributiile gratuite de Linux. In acest caz, sistemul pe care s-a lucrat este SUSE 9.3. Am folosit pentru editarea programelor sursa utilitarul Kate, avand optiunile de editare specifice C++ activate, pentru compilare compilatorul g++, iar pentru depanare Kdbg, o interfata pentru gdb, depanatorul GNU. Urmatoarele volume vor contine: – Prezentarea bilbiotecii standard ANSI C++ – Programare orientate obiect in ANSI C++ – STD (Standard Template Library) - 1 - Introducere in ANSI C++ Capitolul 1 – Primul program 1.1 Structura generala a unui program C++ In general, structura surselor C++ ce apar in lucrare este urmatoarea: // Comentariu (enuntul problemei) # directive_preprocesor prototipuri_functii; declaratii_variabile globale; int main(){ declaratii_variabile_locale; instructiuni; } definire_functii Sursele C++ reprezinta fisiere text care contin codul pe care dorim sa il rulam pe calculator. Scrierea acestora se poate face in orice editor de text care permite salvarea intr-un format text „curat”, fara detalii de formatare cum ar fi cele introduse de catre un procesor de text (MS Word, OpenOffice Write etc.). Textul sursa va fi salvat sub un nume sugestiv si cu extensia cpp. Pentru a putea fi rulat, textul sursa trebuie sa fie „tradus” intr-o forma executabila de catre calculator. Fara a intra in amanunte, sursa trebuie compilata, apoi link-editata, obtinand un program executabil. In Figura 1.1 dam o schema simplificata a acestui proces. - 2 - Introducere in ANSI C++ Compilare Linkeditare nume.cpp nume.exe Figura 1.1 – Trecerea de la textul sursa la fisierul executabil 1.2 Hi man! Ca prim program vom implementa urmatoarea problema: P. Realizati un program C++ care afiseaza mesajul „Hi man!” pe ecran. 1 Vom rezolva problama in trei variante, una specifica C, a doua folosind mediul Borland C++ 3.1 si a treia varianta respectand standardul ANSI C++. // P1_1. Realizati un program C++ care afiseaza mesajul „Hi man!” pe ecran. #include <stdio.h> // linia 1 int main(){ // linia 2 printf("Hi man!"); // linia 3 } // linia 4 Limbajele C si C++ nu dispun de catre instructiuni de intrare/iesire. Pentru a putea citi valori de la tastatura sau pentru afisa pe ecran vom folosi biblioteci care „imbogatesc” limbajul cu diferite functii utile. In acest caz, linia 1 include biblioteca standard stdio.h (standard input/output). Orice program C++ contine o functie numita main, functie cu care incepe executia programului. Linia 2 contine antetul acestei functii. Sfarsitul liniei 2 contine '{', care reprezinta inceputul unui bloc, terminat in linia 4. Intre acolade sunt scrise instructiunile programului, in acest caz linia 3, linie pe care apelam functia printf, functie care realizeaza afisarea mesajului dorit pe ecran. - 3 - Introducere in ANSI C++ In varianta urmatoare vom folosi biblioteca iostream, introdusa in C++ si care implementeaza asa numitele fluxuri de intrare/iesire. #include <iostream.h> // linia 1 int main(){ // linia 2 cout << "Hi man!"; // linia 3 } // linia 4 Diferentele fata de primul exemplu le constatam in linia 1, unde am inclus o alta biblioteca ce ne ofera acees la operatiile de intrare iesire, respectiv in linia 3, unde, pentru afisare folosim o altfel de constructie. Cei obisnuiti cu compilatoarele mai vechi, cum ar fi bcc.exe, compilatoriul care vine cu mediul Borland C++ 3.1, vor ramane surprinsi ca sursa de mai sus nu functioneaza (iar daca main ar fi returnat void, am fi avut doua erori!). Varianta care respecta standardul ANSI C++ este urmatoarea: #include <iostream> // linia 1 int main(){ // linia 2 std::cout << "Hi man!"; // linia 3 } // linia 4 Observam lipsa extensiei „.h” din linia 1, respectiv specificarea spatiului de nume std in linia 3. 1.3 Compilarea si rularea programului 1.3.1 In mediul Borland C++ 3.1 In cazul in care avem pornit mediul, putem rula programul prin apasarea combinatiei Ctrl+F9. Mediul va a apela automat compilatorul, apoi linkeditorul, va genera fisierul executabil, apoi il va rula. Pentru vizualizarea efectiva a rezultatului, apasam Alt+F5 pentru vizualizarea iesirii. - 4 - Introducere in ANSI C++ In cazul in care am editat sursa intr-un alt editor, de exemplu notepad, pentru a rula aplicatia dorita vom realiza manual trecerea spre fisierul executabil, in felul urmator: pas 1. Copiem sursa in directorul c:/borlandc/bin (pas facultativ, dar in acest mod simplificam explicatiile) pas 2. .. > bcc p01.cpp (in cazul in care sursa a fost corecta, obtinem la acest pas fisierul p01.obj) pas 3. .. > tlink p01.obj (obtinem p01.exe) pas 4. .. > p01.exe (este rulat programul) 1.3.2 Folosind compilatorul g++ Rulam comanda g++ p01.cpp, din directorul in care avem textul sursa, si obtinem fisierul executabil a.out, care poate fi lansat in executie prin comanda ./a.out . Daca dorim specificarea unui alt nume de fisier executibail, comanda de compilare va contine optiunea -o. De exemplu g++ -o Hi_Man p01.cpp va genera executabilul Hi_Man, iar rularea se va face prin ./Hi_Man . - 5 - Introducere in ANSI C++ Capitolul 2 – Notiuni de baza 2.1 Notiunea de algoritm Numim algoritm o succesiune de pasi care rezolva o clasa de probleme. Vorbim de clase de probleme in urmatorul sens: daca 2x+3=0, respectiv x-4=0 reprezinta probleme, ax+b=0 va reprezenta clasa de probleme ce formeaza ecuatia de gradul I. Un algoritm este caracterizat prin sintagma „noi muncim, nu gandim!”, in sensul ca executia pasilor algoritmului are loc fara nici un efort creator. In general, in cadrul unui algoritm avem trei sectiuni distincte: date e intrare, rezolvarea efectiva a problemei si date de iesire, conform Figurii 2.1. Rezolvarea Date de intrare Date de iesire problemei Figura 2.1 – Forma generala a unui algoritm Pentru a evidentia pasii de urmat vom lua ca exemplu urmatoarea problema. P. Realizati un algoritm care calculeaza suma a doua valori. 1 Inainte de a incepe rezolvarea problemei trebuie sa ne fie clar care sunt datele initiale de la care se pleca, respectiv ce anume se cere. In acest caz, datele de intrare sunt reprezentate de catre a si b, iar data de iesire va fi S, care respecta datele problemei (adica S=a+b). - 6 - Introducere in ANSI C++ Algortimul este: Date de intrare (a,b) citeste a si b Rezolvarea problemei S=a+b Date de iesire (S) afiseaza S Intelegerea clara a enuntului unei probleme este vitala in rezolvarea acesteia. Daca nu sunt clare care sunt datele de intrare, respectiv cele de iesire ale unui algoritm, cel mai probabil rezolvarea nu va fi corecta, sau vom rezolva o alta problema decat cea ceruta. 2.2 Citirea si afisarea datelor In subcapitolul anterior am citit datele de intrare ale algoritmului, respectiv am afisat rezultatul. In cazul descrierii algoritmului in cuvinte, acest lucru a fost realizat prin simpla enuntare a operatiei de executat (scrie S). In cazul in care dorim implementarea algoritmului intr-un limbaj de programare, in cazul nostru C++, trebuiesc respectate o serie de reguli clare, deoarece compilatorul trebuie sa ”inteleaga” ceea ce dorim sa facem. Limbajul C++ nu ofera instructiuni de intrare/iesire. In schimb avem la dispozitie biblioteca de functii standard, prin care, putem realiza aceste operatii. Compilatoarele C++ actuale vin cu bilbioteca standard. Am ales, pentru simplitatea in utilizare, functii1 din cadrul bibliotecii iostream. Pentru afisare vom folosi constructii de forma: cout << ce_vrem_sa_afisam; sau: cout << ceva << altceva << ... << ultima_chestie; 1 De fapt sunt obiecte, dar in acest moment ce sa zic... asteptati volumele viitorre ale lucrarii pentru explicatii suplimentare (merge si asa ;)), sau vezi [1], [3]. - 7 - Introducere in ANSI C++ P. Afisati textul "text de test!" pe ecran. 2 // P2_1. Afisarea textului 'text de test!' pe ecran. #include <iostream> using namespace std; int main(){ cout << "text"; //afisarea unui text cout << " de"; cout << " te" << "st!"; } Linia a doua din sursa va face ca folosirea specificarii spatiului de nume std  (std::cout) sa nu fie obligatorie. In cazul in care folositi mediul Borland C++ 3.1 inlocuiti #include <iostream> using namespace std; cu #include <iostream.h> in rest programul ramand nechimbat. Pentru citire vom folosi constructii de forma: cin >> in_ce_citim; sau: cin >> v1 >> v1 >> ... >> vn ; Exemple de citire vom da mai tarziu, dupa introducerea notiunii de variabila. - 8 - Introducere in ANSI C++ 2.3 Tipuri de date. Variabile si constante. Algorimii lucreaza cu date. In exemplul cu suma, datele de lucru au fost a,b si S. Datele cu care lucreaza algoritmii au ca si corespondent in C++ constantele si variabilele. Fiecare constanta sau variabila din C++ are asociata un tip. Tipurile fundamentale ale C++ sunt prezentate in Tabelul 2.1: Tip Constante Observatii void - - indica absenta informatiei 'A' - defineste un caracter 'B' - in memoria calculatorului, stocarea unui caracter se char 'a' face folosind codul lui ASCII '+' - poate fi folosit si pentru a memora numere intregi '3' mici 3 - numar intreg cu semn int 123 - intervalul acoperit de acest tip poate diferi de la un -1020 calculator la altul 3.0 - folosit pentru memorarea numerelor reale float 123.456 - este memorat in format cu virgula mobila (float) in - 100.001 simpla precizie 3.0 - numere reale double 123.456 - il folosim pentru numere foarte mari sau pentru o - 100.001 precizie mai mare dupa virgula 1 0 - tip care apare in ANSI C++ bool true false - nu este recunoscut in Borland C++ 3.1 Tabelul 2.1 – Tipurile de baza in C++ - 9 - Introducere in ANSI C++ Pe langa aceste tipuri de baza, C++ ofera asa numitii modificatori de tip, folositi pentru a scimba domeniul valorilor pe are le poate pastra o variabila, prezentati in Tabelul 2.2: Modificator Efect signed - forteaza existenta semnului unsigned - daca dorim doar memorarea a valori pozitive intr-o variabila - prin disparitia semnului, este dublat numarul de valori pozitive de memorat short - reduce intervalul de reprezentare long - mareste intervalul de reprezentare Tabelul 2.2 – Modificatorii de tip Tipurile de date sunt folosite pentru a defini variabilele cu care dorim sa lucram in program. Pe langa constantele prezentate in Tabelul 2.1, vom folosi si constante de tip sir de caractere, reprezentand succesiuni de caractere cuprinse intre ghilimele. Exemplu de siruri de caractere pot fi: ”ABC”, ”Sunt un sir de caractere!”, ”1+2=3”. Prin variabila intelegem o entitate capabila sa-si modifice valoarea. In C++, inainte de a folosi o variabila, aceasta trebuie declarata. Forma generala a unei declaratii este: tip nume; sau: tip v1, v2, ..., vn; In momentul declaratiei, C++ permite initializarea variabilei, declaratia devenind: tip nume=valoare; Folosirea cuvantului cheie const inainte de declaratia unei variabile va spune compilatorului ca valoarea acesteia nu poate fi modificata in cadrul programului. - 10 -

Description:
Introducere in ANSI C++. Introducere. Initial Leftto right. 6. * / % multiplicative. Leftto right. 7. +ан additive. Leftto right. 8. > shift. Leftto right.
See more

The list of books you might like

Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.