Sunteți pe pagina 1din 16

13

Medii de programare
Realizarea ciclului de aciuni necesar realizrii unui program presupune:
Scrierea programului surs, cu ajutorul unui editor de texte;
Compilarea acestuia;
Execuia;
Depanarea, dac rezultatele obinute relev erori de logic. n englez
o astfel de eroare este numit "bug" (ploni!), pentru corectare fiind
folosit un debugger (depanator) care permite executarea linie cu linie a
programului surs i afiarea permanent a valorilor variabilelor.
Aceste etape pot fi parcurse folosind un ansamblu de aplicaii (editor de texte,
compilator, depanator etc) sau o singur aplicaie care s le integreze pe toate.
Evident varianta a doua este mai bun deoarece volumul de operare scade
semnificativ (practic pentru toate comenzile exist butoane care sunt acionate cu
mouse-ul) i scrierea programului se realizeaz mai uor, editorul folosit evideniind
n timpul scrierii blocurile lexicale folosite i zonele n care textul surs este
neinteligibil.
Pentru limbajul C, o soluie bun este mediul Visal C++. Numele mediului
indic faptul c este destinat scrierii n limbajul Visual C++. ns limbajul C++
integreaz perfect limbajul C, oferind n plus un superset de instruciuni necesare
programrii obiectuale, deci un mediu de programare pentru C++ este utilizabil i
pentru scrierea de programe n C standard.

Dezvoltarea aplicaiilor tip Console n Visual C++ 2010 Express


Edition

Un mediu de dezvoltare complex cum este Visual C++ 2010 Express Edition
permite realizarea mai multor tipuri de aplicaii. Precizarea nc de la nceputul
realizrii unei aplicaii a tipului acesteia este necesar deoarece Visual C++ este mai
mult dect un mediu de programare, este un generator de aplicaii. Pentru anumite
tipuri de aplicaii, pri importante ale acestora sunt generate automat. Aplicaiile
care nu au o interfa grafic sunt executate n fereastra Command Prompt a
sistemului de operare, tipul acestora fiind denumit console application.
14

Dup instalarea mediului de dezvoltare, acesta se lanseaz n execuie ca


orice aplicaie Windows:

Fereastra afiat este tipic pentru o aplicaie Windows profesional, respectiv


are o bar de meniuri, una sau mai multe bare cu instrumente i o zon util
mprit n mai multe panouri.

Crearea unui nou proiect


Crearea unei aplicaii ncepe cu crearea unui proiect (New Project):
15

La crearea proiectului se va selecta ca i tip Win32 Console Application i i se


va da un nume (caseta de text Name). Caseta de text Location conine calea spre
directorul n care se dorete crearea proiectului.
Dup apsarea butonului OK mediul de programare va afia o prim ferestr
peste care se trece apsnd Next i apoi o a doua fereastr n care se va selecta
caseta de validare "Empty Project".
16
17

Rezultat:

n continuare se va aduga proiectului un prim fiier care va conine codul


surs al aplicaiei. n toate aplicaiile care vor urma, numele acestuia va coincide
sistematic cu numele proiectului. Pentru a aduga fiierul, se va selecta n meniul
contextual afiat la selectarea cu mouse-ul a opiunii Source Files opiunea Add /
New Item.

Clic cu butonul din dreapta


18

n continuare se adaug n fereastra de editare programul surs i se


salveaz (File / Save sau se apas butonul de pe bara cu instrumente).
19

Deoarece un proiect poate conine mai multe fiiere surs, selectarea fiierului
a crui coninut dorim s fie afiat n fereastra de editare se realizeaz folosind
intrrile din arborele afiat n panoul din stnga (Solution Explorer).

Pregtirea programului n vederea executrii


Pentru crearea unui program executabil, se selecteaz mai nti n meniul
Debug opiunea Build solution (sau se apas tasta funcional F7). Mediul de
programare va realiza succesiv compilarea i editarea legturilor aplicaiei noastre.
Not: Etapa de editare de legturi (Link) este necesar deoarece programele
sunt construtuite de regul din mai multe module rezultate din procese separate de
compilare care trebuie unite ntr-un executabil unic. ntre modulele care trebuie unite
un loc aparte l ocup funciile standard ale limbajului, apelate n cadrul aplicaiei
scrise. Acestea realizeaz calcule matematice (sin, cos, etc), operaii de
intrare/ieire, procesarea irurilor de caractere, etc.. Aceste funcii sunt memorate n
stare compilat n fiiere cu o organizare aparte numite biblioteci de funcii.
Organizarea acestor fiiere permite extragerea rapid a secvenelor de program
executabil corespunznd diferitelor funcii coninute.

Chiar i programul simplu pe care l-am scris este constituit din mai multe
module. De exemplu linia:
cout << "Suma este " << sum << endl;
20

conine cout, << i endl. Simbolul "<<" este un operator de extragere dintr-un flux de
date, practic o funcie dintr-o bibliotec, deci coninutul acesteia va fi inclus n
aplicaie n momentul ediiei de legturi. Pentru a se putea realiza compilarea liniilor
care conin astfel de entiti, programele C++ vor ncepe de regul cu o serie de
directive de compilare. n exemplul dat ele sunt urmtoarele:
#include <iostream>
using namespace std;

Execuia programului
Pentru execuia programului se vor apsa simultan tastele Control + F5.
Rezultatul executrii programului va fi afiat ntr-o fereastr Command prompt:

Pentru a reveni la fereastra mediului de programare se va apsa o tast.

Scrierea n C (C++) a unui program simplu


Se dorete scrierea unui mic program care s ne permit s ne calculm
greutatea ideal.
Formula de calcul este:
g 50 0.75 * (h 150) 0.25 * (v 20)
n relaie g este greutatea ideal, h este nlimea n cm iar v este vrsta n
ani. Pentru femei, rezultatul trebuie nmulit cu 0.9.
Soluie:
#include <iostream>
using namespace std;

void main()
{
int h, v;
double g;
cout << "h="; (corpul funciei main)
cin >> h;
cout << "v=";
21

cin >> v;
g = 50.0+0.75*(h-150)+0.25*(v-20);
cout <<"greutatea g (barbat) = " << g << endl;
cout <<"greutatea g (femeie) = " << 0.9*g << endl;
}

Observaii:
1. Programul const dintr-o funcie, main(). Corpul funciei este plasat
ntre acolade. n orice program C (sau C++) trebuie s existe o
funcie denumit main(), de unde va ncepe execuia programului.
2. Variabilele folosite, h, v i g sunt declarate nainte de a fi folosite.
3. Pentru declararea variabilelor ntregi h i v s-a folosit cuvntul int
(prescurtare de la integer);
4. Pentru declararea variabilei reale g s-a folosit cuvntul double;
5. Numele funciei principale este precedat de void (vid). n mod
normal o funcie returneaz o valoare i n faa numelui ei se declar
tipul valorii returnate. Dac nu se scrie nimic, se subnelege c
funcia returneaz un int. Tot prin convenie se declar de tip void
funcia care nu returneaz nici o valoare.
6. Pentru afiarea pe ecran (consol, fiierul standard de ieire) a unor
mesaje (iruri de caractere) s-a folosit instruciunea cout;
cout << "h=";
7. Pentru citirea de la tastatur a valorilor variabielor s-a folosit cin:
cin >> h;
8. Pentru afiarea rezultatelor s-a folosit din nou cout. Dac se
execut succesiv mai multe instruciuni cout, valorile vor fi afiate
una dup alta, trecndu-se la linie nou numai dup umplerea liniei
curente. Pentru a comanda trecerea imediat la linie nou se
adaug n lista de valori afiate endl (un ir constant care conine
caracterul <Carriage Return>, reprezentat n C prin '\n').
9. Pentru a putea realiza operaiile de intrare-ieire folosind cin i cout,
prima linie a programului indic includerea fiierului <iostream>.

Dac se creaz un proiect (Greutate), un fiier surs (Greutate.cpp), n urma


realizrii i rulrii programului executabil greutate.exe pe un set de date (h=178,
v=38) se obine rezultatul:
22

Comentarii
ntr-un program scris n C++ pot fi folosite dou tipuri de comentarii:
comentarii "n linie", introduse prin //. Un astfel de comentariu se
ncheie la sfritul liniei curente
comentarii pe unul sau mai multe rnduri consecutive. Zona care
conine comentariul este delimitat prin /* (comentariu) */.
De regul se folosesc comentariile n linie, cel de-al doilea tip fiind folosit
frecvent n timpul depanrii programelor mari i complexe, pentru a suprima din
program anumite zone.
Exemplu:
#include <iostream>
void main()
{
cout << "On a withered branch" << '\n'; // Primul vers
cout << "A crow has just alighted:" << '\n'; // Versul 2
cout << "Nightfall in autumn." << '\n'; // Versul 3
}

Structurile de control ale limbajelor


n exemplele date, prelucrarea informaiilor s-a realizat prin instruciuni i
apeluri ale unor funcii. Instruciunile executabile dintr-o unitate de program sunt
scrise dup stabilirea de ctre programator a algoritmului de rezolvare. Un algoritm
poate fi definit ca fiind o mulime ordonat de pai executabili care definesc un
proces finit.
Algoritmii au o serie de proprieti fundamentale:
generalitate (algoritmul determin modul de rezolvare a unui tip de
probleme i nu a unei probleme particulare).
23

finitudine (execuia algoritmului trebuie s se termine ntr-un numr finit


de pai - operaii).
rigurozitate (fiecare pas al algoritmului trebuie s fie precis definit)
executabilitate (fiecare pas al algoritmului trebuie s fie executat de
calculator)
eficien (se determin din punct de vedere al timpului de execuie i al
memoriei ocupate)
unicitate (pentru acelai set de date de intrare trebuie s determine
aceleai rezultate).
Pentru descrierea algoritmilor, n limbajele de nivel nalt sunt definite
instruciuni.

Pascal C, C++, Java


D Exp N if Exp then if Exp
A U Instr. 1 Instr. 1 ;
else else
Instr.1 Instr.2 Instr. 2 ; Instr. 2 ;

N while Exp do while Exp


Exp
U Instr ; Instr ;
D
A
Instr

repeat do
Instr Instr
Instr
until not Exp ; while Exp ;

Exp D
U
N
A

N case N of switch (N) {


C1 : Secv. 1 ; case C1 : Secv. 1 ;
C2 : Secv. 2 ; case C2 : Secv. 2 ;
N = C1 N = C2 N = C3 C3 : Secv. 3 ; case C3 : Secv. 3 ;
end ; };
Secv. 1 Secv. 2 Secv. 3
24

for i := 1 to N do for (i = 1; i <= N; i++) {


i := 1 begin Corp ciclu;
Corp ciclu ; };
NU end ;
iN
DA

Corp ciclu i := i+1

Tipuri de date
Ce reprezint un ir de caractere scos din orice context poate fi n cel mai
fericit caz ghicit. Deoarece memoria calculatorului conine un ir aproape infinit de
cifre binare, n cazul ei situaia e i mai complicat. Este deci evident c fr
definirea unor reguli de reprezentare a informaiei i fr cunoaterea modului de
ocupare a memoriei calculatorului, informaia pe care aceasta o conine ar fi lipsit
de orice semnificaie.
Pe de alt parte definirea precis a modului de reprezentare a informaiei n
calculator condiioneaz arhitectura hardware a acestuia, n mod deosebit pe cea a
procesorului.

Tipuri de date elementare


n limbajele evoluate sunt definite de obicei 8 tipuri de date elementare
(primitive):

byte short int long float double char boolean

n C (C++) exist doar cele subliniate. La declarea diferitelor variabile folosite


ntr-un program denumirile tipurilor trebuie scrise cu litere mici. De altfel n limbajul C
i derivatele sale (C++, Java) se face distincie ntre literele mari i cele mici.
Dac trebuie declarat un ir de valori de un anumit tip se va indica ntre
paranteze drepte numrul de elemente din ir. Exemple:
int a, b[100], c=0;
double p[30], q[20][30];
25

Pentru irul b compilatorul va rezerva 100 de celule consecutive pentru 100 de


valori ntregi. Indicele folosit la selectarea unei valori oarecare poate varia ntre 0 i
99.
Variabila q corespunde unei matrici bidimensionale avnd 20 de linii i 30 de
coloane. Indicii se scriu separat, ntre paranteze drepte i pot varia de la 0 la 19
respectiv de la 0 la 29. Se poate omite indicele al doilea, q[i] desemnnd linia i.

Tipuri pentru numere ntregi

Tip Mrime Domeniu

short 16 bii -32,768 la +32,767

int 16 bii idem

(aprox)-2 miliarde la
long 32 bii
+2 miliarde

Tipuri pentru numere reale

Tip Mrime Domeniu

float 32 bits -3.4E+38 to +3.4E+38

double 64 bits -1.7E+308 to 1.7E+308

Cunoaterea exact a modului de stabilire a configuraiei binare pentru un


numr n diverse reprezentri nu este necesar. Pentru valorile citite sau scrise pe
ecran conversia este realizat automat de funciile apelate pentru citire-scriere.
Pentru numerele scrise direct n relaiile de calcul din program (numite i literali)
conversia este realizat de compilator.
Exemplu:
g = 50.0+0.75*(h-150)+0.25*(v-20);
Relaia din dreapta egalului comport 5 literali. Literalii scrii cu punct zecimal
vor fi convertii implicit n double iar cei fr punct zecimal n int.
Dac dorim s influenm modul de reprezentare a literalilor, dup valoarea
numeric trebuie adugat un caracter, astfel:
f sau F pentru float,
26

d sau D pentru double,


L pentru long (se poate i l dar se confund cu 1).
n unele situaii este bine s se foloseasc la scrierea literalilor notaia
tiinific (cu exponent). De exemplu:
1.23E+02 -1.235E+02 -1.98234234E+05 3.81E-06
sunt literali reprezentai n dubl precizie.
Datorit limitrii mrimii spaiului de memorie folosit pentru reprezentare,
precizia reprezentrii numerelor reale este limitat. Pentru float ea este de 7 cifre
zecimale iar pentru double de 15 cifre zecimale.

Tipul char
Prelucrarea datelor cu ajutorul calculatorului se reduce frecvent la operaii cu
iruri de caractere. Pentru manipularea acestora, n C (C++) exist tipul char.
n C un caracter se reprezint folosind apostroful. Astfel 'C' sau '&' sunt
caractere. Caractere care nu au simblol grafic se vor indica printr-o succesiune de
dou caractere (secven escape) astfel: '\n' (LF), '\a' (bell), '\b' (backspace), '\f'
(pagin nou, formfeed), '\r' (retur car, carriage return), '\t' (tab orizontal), '\v' (tab
vertical). Dac se cunoate codul ASCII al unui caracter (vezi tabelul) se poate
reprezenta un caracter fr echivalent grafic i printr-o construcie de forma '\xhh' sau
'\Xhh' unde hh reprezint codul ASCII n hexazecimal al caracterului. Astfel '\n' (LF)
este echivalent cu '\x0A'.
irurile de caractere se reprezint folosind pentru delimitare caractere "
(ghilimele). Exemplu: "Acesta este un ir".
"" este un ir vid. ntr-un ir pot figura secvenele escape definite, de exemplu
:
"Sir de caractere\nscris pe doua linii" sau "Sir \" cu ghilimele".
Reprezentarea intern a unui ir de caractere se ncheie cu '\0' (0 sau
caracterul NULL). Acesta servete la recunoaterea sfritului acestuia.
Accesul la caracterele unui ir de caractere se poate face folosind indici.
Astfel, dac s este un ir de caractere, s[0] este primul caracter i s[5] este caracterul
al 6-lea.
27

Tabela ASCII
(partea I)

Exemplu: Gsii lungimea unui ir de caractere citit de la tastatur:


#include <iostream>
using namespace std;

void main()
{
char s[200];
int i;
cout << "Introduceti un sir, fara spatii:";
cin >> s;
i = 0 ;
while (s[i] != '\0')
i++;
cout << "Sirul are " << i << " caractere" << endl;
}

Variant pentru iruri lungi, cu spaii, care se ncheie la apsarea tastei


<Enter>:
28

#include <iostream>
using namespace std;
void main()
{
char s[200];
int i;
cout << "Introduceti o linie de text:";
cin.getline( s, 199 );
i = 0 ;
while (s[i] != '\0')
i++ ;
cout << "Sirul are " << i << " caractere" << endl;
}

S-ar putea să vă placă și