Download - PCLP1_Laboratorul4

Transcript
  • Laboratorul 4 1. Exemplu de programare.

    Problema Scriei un program care calculeaz consumul unui autoturism la 100 km, dndu-

    se cantitile de combustibil introduse n rezervor i kilometrajul de la bord la plecare i la sosire. Autoturismul a plecat avnd la bord 22451 km i a sosit cu 23544 km. Au fost introduse urmtoarele cantiti de combustibil: 23,2 l, 17,4 l, 19,8 l i 16,7 l. Presupunei c rezervorul a fost plin i c ultima alimentare a fost fcut la sosire, prilej cu care rezervorul a fost umplut din nou.

    Ce trebuie s afieze programul Valorile pe care se bazeaz calculul final i consumul la 100 km, cu

    comentariile necesare.

    Discuie Trebuie s adunm cantitile de combustibil, facem diferena dintre indicaiile

    de la bord i, folosind regula de trei simpl, calculm consumul de conbustibil la suta de kilometri. Soluia algoritmic este urmtoarea:

    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) Afieaz cantitile de combustibil Afieaz indicaia iniial Afieaz indicaia final Afieaz consumul la 100 km

    Pornind de la algoritm, crem 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 Indicaia bordului la plecare

    1

  • Programarea calculatoarelor i limbaje de programare I

    INDICATIE_SOSIRE 23544 Indicaia bordului la sosire

    Variabile Nume Tip Descriere litriPerKm float Consumul la 100 km

    Programul #include 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

  • 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 plasm cursorul pe instruciunea respectiv i apelm meniul Debug->Toggle Breakpoint (combinaia de taste Ctrl-F5). Prin aceeai combinaie de taste putem dezactiva un breakpoint. n continuare putem folosi comenzile Debug->Next Step (F7) pentru a trece la intruciunea urmtoare, Debug->Step Into (Shift-F7) pentru a intra n corpul funciei apelat n linia curent sau Debug->Continue (Ctrl-F7) pentru a rula programul pn la urmtorul breakpoint. nainte de a ncepe rularea programului n modul Debug, facei urmtorul parametraj al compilatorului C++: Selectai meniul Tools->Compiler Options, selectai tab-ul Compiler, activai opiunea Add the following commands when calling compiler: i adugai urmtorul parametru de compilare n cmpul de sub text: -g3 Wall.

    Rulai programul de mai sus in modul Debug, activnd un breakpoint pe prima instruciune executabil din funcia main.

    Sugestii pentru testare i debugging - Fiecare identificator care nu este cuvnt rezervat C++ trebuie declarat. - C++ este un limbaj case sensitive. Aceasta nseamn c face diferena ntre

    literele mici i cele mari. Doi identificatori, unul scris cu iniial mare i cellalt cu iniial mic sunt considerai diferii. Cuvntul main i toate cuvintele rezervate C++ folosesc numai litere mici.

    - constant de tip int care ncepe cu un 0 este interpretat ca numr scris n baza 8.

    - Atenie la mprirea ntreag. Expresia 47/100 are rezultatul 0, care este ctul mpririi. Aceasta este o surs major de erori n C++.

    - Fii ateni 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.

    - Asigurai-v c toate instruciunile se termin cu semnul ; Excepie fac instruciunile compuse care nu au nevoie de ; dup acolada nchis.

    - Dac sursa erorilor dintr-un program nu este evident, studiai o copie tiprit a programului. Modificai programul doar atunci cnd suntei siguri ca ai neles de unde provine eroarea.

    2. Folosii manipulatorii pentru a tipri numerele reale din exempul precedent cu

    dou zecimale. Includei fiierul header iomanip care se gsete ntr-un director standard.

    3. Rulai urmtorul program i studiai structura lui. Intitulai-l Temperaturi.cpp. Folosii 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 using namespace std;

    3

  • Programarea calculatoarelor i limbaje de programare I

    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

  • Programarea calculatoarelor i limbaje de programare I

    x * y = c; _____ _____ y = con; _____ _____ const int x : 10; _____ _____ int x; _____ _____ a = b % c; _____ _____

    8. Scriei trei instruciuni consecutive care afieaz urmtoarele trei linii: Luna este rotund.

    9. Modificai programul de la punctul 1 introducnd o nou alimentare cu 5.2 litri. Celelalte date rmn aceleai.

    10. Scriei un program care tiprete iniialele voastre cu litere mari, fiecare liter fiind format din caracterele care o reprezint. Literele trebuie s aib cel puin apte linii. De exemplu, dac iniialele 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 fiier header numit limits.h. Acesta conine declaraiile constantelor legate de specificul compilatorului i al mainii pe care lucrai. Dou dintre aceste constante sunt INT_MAX i INT_MIN, cel mai mare i cel mai mic numr de tip int cu care poate lucra calculatorul vostru. Scriei un program pentru a afia aceste dou valori. Avei grij s tiprii mesaje explicative pe ecran, n aa fel nct s putem ti care este valoarea lui INT_MAX i care este valoarea lui INT_MIN. Adugai comentarii programului vostru i aliniai instruciunile.

    12. Scriei un program care afieaz urmtoarele trei linii:

    7 / 4 folosind impartirea intreaga este 7 / 4 folosind impartirea reala este 7 modulo 4 este

    unde este calculat n fiecare caz de programul vostru. Folosii constante simbolice pentru 7 si 4 peste tot unde va apar in program, inclusiv in instruciunile de afiare. Folosii comentarii n program, identificatori cu nume semnificative i aliniai instruciunile ca in programele de la punctele 1 i 2.

    5

    Laboratorul 4ProblemaCe trebuie s afieze programulDiscuieConstanteVariabileProgramulCe afieaz programulDebuggingSugestii pentru testare i debugging