Sunteți pe pagina 1din 6

Laboratorul 4

1. Exemplu de programare.

Problema
Scrieţi un program care calculează consumul unui autoturism la 100 km, dându-
se cantităţile de combustibil introduse în rezervor şi kilometrajul de la bord la plecare
şi la sosire. Autoturismul a plecat având la bord 22451 km şi a sosit cu 23544 km. Au
fost introduse următoarele cantităţi de combustibil: 23,2 l, 17,4 l, 19,8 l şi 16,7 l.
Presupuneţi că rezervorul a fost plin şi că ultima alimentare a fost făcută la sosire,
prilej cu care rezervorul a fost umplut din nou.

Ce trebuie să afişeze programul


Valorile pe care se bazează calculul final şi consumul la 100 km, cu
comentariile necesare.

Discuţie
Trebuie să adunăm cantităţile de combustibil, facem diferenţa dintre indicaţiile
de la bord şi, folosind regula de trei simplă, calculăm consumul de conbustibil la suta
de kilometri. Soluţia algoritmică este următoarea:

CANT1 = 23.2
CANT2 = 17.4
CANT3 = 19.8
CANT4 = 16.7
INDICATIE_PLECARE = 22451
INDICATIE_SOSIRE = 23544
litriPerKm = (CANT1 + CANT2 + CANT3 + CANT4)*100/(INDICATIE_SOSIRE-
INDICATIE_PLECARE)
Afişează cantităţile de combustibil
Afişează indicaţia iniţială
Afişează indicaţia finală
Afişează consumul la 100 km

Pornind de la algoritm, creăm o listă de constante şi variabile utile pentru


scrierea programului.

Constante
Nume Valoare Descriere
CANT1 23.2 Cantitatea de combustibil de la
prima alimentare
CANT2 17.4 Cantitatea de combustibil de la a
doua alimentare
CANT3 19.8 Cantitatea de combustibil de la a
treia alimentare
CANT4 16.7 Cantitatea de combustibil de la a
patra alimentare
INDICATIE_PLECARE 22451 Indicaţia bordului la plecare

1
Programarea calculatoarelor şi limbaje de programare I

INDICATIE_SOSIRE 23544 Indicaţia bordului la sosire

Variabile
Nume Tip Descriere
litriPerKm float Consumul la 100 km

Programul
#include <iostream>
using namespace std;

const float CANT1 = 23.2;


const float CANT2 = 17.4;
const float CANT3 = 19.8;
const float CANT4 = 16.7;
const float INDICATIE_PLECARE = 22451;
const float INDICATIE_SOSIRE = 23544;

int main()
{
float litriPerKm;

litriPerKm = (CANT1 + CANT2 + CANT3 +


CANT4)*100.0/(INDICATIE_SOSIRE-INDICATIE_PLECARE);

cout << "Pentru cantitatile" << endl;


cout << CANT1 << ' ' << CANT2 << ' ';
cout << CANT3 << ' ' << CANT4 << endl;
cout << "si indicatia de plecare " << INDICATIE_PLECARE <<
endl;
cout << "si de sosire " << INDICATIE_SOSIRE << endl;
cout << "consumul este " << litriPerKm << " litri per km."
<< endl;

return 0;
}

Ce afişează programul
Pentru cantitatile
23.2 17.4 19.8 16.7
si indicatia de plecare 22451
si de sosire 23544
consumul este 7.05398 litri per km.

Debugging
Depanarea unui program (debugging) este un proces prin care se identifică şi
se corectează eventualele erori. Existenţa erorilor este semnalată de compilator.
Acesta arată care sunt liniile de cod care pot conţine greşeli şi tipăreşte câte un
mesaj pentru fiecare dintre ele. Identificarea erorilor poate fi realizată prin rularea
programului instrucţiune cu instrucţiune.

2
Programarea calculatoarelor şi limbaje de programare I

În mediul Dev-C++ programele se pot rula în modul debug prin apelarea


meniului Debug->Debug (tasta F8). Pentru ca rularea programului să se oprească
temporar la linia dorită, trebuie activat un breakpoint. Pentru aceasta plasăm cursorul
pe instrucţiunea respectivă şi apelăm meniul Debug->Toggle Breakpoint (combinaţia
de taste Ctrl-F5). Prin aceeaşi combinaţie de taste putem dezactiva un breakpoint. În
continuare putem folosi comenzile Debug->Next Step (F7) pentru a trece la
intrucţiunea următoare, Debug->Step Into (Shift-F7) pentru a „intra” în corpul funcţiei
apelată în linia curentă sau Debug->Continue (Ctrl-F7) pentru a rula programul până
la următorul breakpoint. Înainte de a începe rularea programului în modul Debug,
faceţi următorul parametraj al compilatorului C++: Selectaţi meniul Tools->Compiler
Options, selectaţi tab-ul „Compiler”, activaţi opţiunea „Add the following commands
when calling compiler:” şi adăugaţi următorul parametru de compilare în câmpul de
sub text: „-g3 –Wall”.
Rulaţi programul de mai sus in modul Debug, activând un breakpoint pe prima
instrucţiune executabilă din funcţia main.

Sugestii pentru testare şi debugging


- Fiecare identificator care nu este cuvânt rezervat C++ trebuie declarat.
- C++ este un limbaj “case sensitive”. Aceasta înseamnă că face diferenţa între
literele mici şi cele mari. Doi identificatori, unul scris cu iniţială mare şi celălalt cu
iniţială mică sunt consideraţi diferiţi. Cuvântul main şi toate cuvintele rezervate
C++ folosesc numai litere mici.
- constantă de tip int care începe cu un 0 este interpretată ca număr scris în baza
8.
- Atenţie la împărţirea întreagă. Expresia 47/100 are rezultatul 0, care este câtul
împărţirii. Aceasta este o sursă majoră de erori în C++.
- Fiţi atenţi la folosirea perechilor de apostroafe (‘ ‘) şi de ghilimele (“ “). Fiecare
constantă char începe şi se termină cu apostroafe. Fiecare şir de caractere
începe şi se termină cu ghilimele.
- Asiguraţi-vă că toate instrucţiunile se termină cu semnul ; Excepţie fac
instrucţiunile compuse care nu au nevoie de ; după acolada închisă.
- Dacă sursa erorilor dintr-un program nu este evidentă, studiaţi o copie tipărită a
programului. Modificaţi programul doar atunci când sunteţi siguri ca aţi înţeles de
unde provine eroarea.

2. Folosiţi manipulatorii pentru a tipări numerele reale din exempul


precedent cu două zecimale. Includeţi fişierul header iomanip care se găseşte
într-un director standard.

3. Rulaţi următorul program şi studiaţi structura lui. Intitulaţi-l


Temperaturi.cpp. Folosiţi în programele voastre modelul comentariului
explicativ de la început.
//****************************************
//Temperaturi.cpp
//Acest program calculeaza temperatura de
//la jumatatea dintre punctul de inghet si
//cel de fierbere a apei
//****************************************

#include <iostream>

3
Programarea calculatoarelor şi limbaje de programare I

using namespace std;

const float INGHET = 0.0; //Punctul de inghet al apei


const float FIERBERE = 100.0; //Punctul de fierbere

int main()
{
float temperaturaMedie; //Pastreaza rezultatul medierii
//dintre INGHET si FIERBERE

cout << "Apa ingheata la " << INGHET << " grade";
cout << " si fierbe la " << FIERBERE << " de grade." <<
endl;

temperaturaMedie = INGHET + FIERBERE;


temperaturaMedie = temperaturaMedie / 2.0;
cout << "Temperatura medie este de ";
cout << temperaturaMedie << " grade." << endl;

return 0;
}

4. Doriţi să împărţiţi 9 la 5.
a. Cum scrieţi expresia dacă doriţi ca rezultatul să fie valoarea reală 1.8?
double a=9.0/5;

b. Cum scrieţi expresia atunci când doriţi să calculaţi doar câtul?


int a=9/5;

5. Care este valoarea expresiei C++ 5 % 2 ?


R: 1

6. Completaţi spaţiile din următorul program:

#include <iostream>
using namespace std;

const float PI = 3.14159; //Raportul dintre lungimea şi


diametrul unui cerc

int main ()
{
float lungimea; //Lungimea unui cerc

lungimea = PI * 7.8;
cout << “Lungimea unui cerc ”;
cout << “ cu diametrul 7.8 este “ << endl;
cout << lungimea << endl;

return 0;
}

4
Programarea calculatoarelor şi limbaje de programare I

7. Marcaţi contrucţiile valide şi pe cele invalide. Presupuneţi că toate variabilele sunt


de tip int.
Valid Invalid
x * y = c; _x____ _____
y = con; __x___ _____
const int x : 10; _____ __x___
int x; __x___ _____
a = b % c; __x___ _____

8. Scrieţi trei instrucţiuni consecutive care afişează următoarele trei linii:


Luna
este
rotundă.
#include <iostream>
using namespace std;
int main()
{
cout << "Luna" <<endl;
cout << "este" <<endl;
cout << "rotundă." <<endl;

return 0;
}

9. Modificaţi programul de la punctul 1 introducând o nouă alimentare cu 5.2 litri.


Celelalte date rămân aceleaşi.

10. Scrieţi un program care tipăreşte iniţialele voastre cu litere mari, fiecare literă fiind
formată din caracterele care o reprezintă. Literele trebuie să aibă cel puţin şapte linii.
De exemplu, dacă iniţialele voastre sunt AC, programul va tipari:

A CCCCC
A A C C
A A C
A A C
AAAAAAA C
A A C C
A A CCCCC

11. Multe sisteme C++ oferă un fişier header numit limits.h. Acesta conţine
declaraţiile constantelor legate de specificul compilatorului şi al maşinii pe care
lucraţi. Două dintre aceste constante sunt INT_MAX şi INT_MIN, cel mai mare şi cel
mai mic număr de tip int cu care poate lucra calculatorul vostru. Scrieţi un program
pentru a afişa aceste două valori. Aveţi grijă să tipăriţi mesaje explicative pe ecran, în
aşa fel încât să putem şti care este valoarea lui INT_MAX şi care este valoarea lui
INT_MIN. Adăugaţi comentarii programului vostru şi aliniaţi instrucţiunile.

5
Programarea calculatoarelor şi limbaje de programare I

#include <iostream>
#include <limits.h>
using namespace std;

int main()
{

cout << "Valoarea maxima pentru tipul int: " << INT_MAX << endl;
cout << "Valoarea minima pentru tipul int: " << INT_MIN << endl;

return 0;
}

12. Scrieţi un program care afişează următoarele trei linii:


7 / 4 folosind impartirea intreaga este <rezultat>
7 / 4 folosind impartirea reala este <rezultat>
7 modulo 4 este <rezultat>
unde <rezultat> este calculat în fiecare caz de programul vostru. Folosiţi
constante simbolice pentru 7 si 4 peste tot unde va apar in program, inclusiv in
instrucţiunile de afişare. Folosiţi comentarii în program, identificatori cu nume
semnificative şi aliniaţi instrucţiunile ca in programele de la punctele 1 şi 2.

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