Introduce Re in Ansi c++ (v2)

download Introduce Re in Ansi c++ (v2)

of 214

Transcript of Introduce Re in Ansi c++ (v2)

Introducere in ANSI C++

IntroducereInitial, 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 program1.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: P1. Realizati un program C++ care afiseaza mesajul Hi man! pe ecran. 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 int main(){ printf("Hi man!");}

// linia 1 // linia 2 // 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 int main(){ cout tlink p01.obj > p01.exe

(obtinem 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 baza2.1 Notiunea de algoritmNumim 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.

Date de intrare

Rezolvarea problemei

Date de iesire

Figura 2.1 Forma generala a unui algoritm Pentru a evidentia pasii de urmat vom lua ca exemplu urmatoarea problema. P1. Realizati un algoritm care calculeaza suma a doua valori. 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:Datedeintrare(a,b) citesteasib Rezolvareaproblemei S=a+b Datedeiesire(S) afiseazaS

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 datelorIn 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 (scrieS). 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