+ All Categories
Home > Documents > elevi.infodorohoi.comelevi.infodorohoi.com/gim/CPP/SuportCurs VI-VIII.doc · Web viewSe va folosi o...

elevi.infodorohoi.comelevi.infodorohoi.com/gim/CPP/SuportCurs VI-VIII.doc · Web viewSe va folosi o...

Date post: 14-Feb-2020
Category:
Upload: others
View: 8 times
Download: 1 times
Share this document with a friend
48
Cuprins Cap.I. Informaţii generale...........................................2 I.1. Clasificarea datelor...........................................2 I.2. Operatori......................................................3 Cap.II. Limbajul pseudocod...........................................6 II.1. Implementarea algoritmilor....................................6 II.2. Structuri de control..........................................7 II.2.1 Structura liniară............................................7 II.2.2 Structura alternativă........................................8 II.2.3 Structuri repetitive.........................................9 II.2.3.1 Structura repetitivă cu test inițial.......................9 II.2.3.2 Structura repetitivă cu test final........................10 II.2.3.3 Structura repetitivă cu contor............................11 Cap.III. Algoritmi elementari.......................................13 III.1. Prelucrarea numerelor.......................................13 Cap.IV. Limbajul C++................................................ 25 IV.1. Noțiuni introductive.........................................25 IV.1.1 Aplicații...................................................31 IV.2. Fişiere text.................................................32 IV.2.1. Citirea din fişier.........................................32 IV.2.2. Scrierea în fişier.........................................33 IV.2.3. Citirea dintr-un fişier şi scrierea în alt fişier..........33 IV.3. Tablouri unidimensionale.....................................34
Transcript
Page 1: elevi.infodorohoi.comelevi.infodorohoi.com/gim/CPP/SuportCurs VI-VIII.doc · Web viewSe va folosi o variabilă i care va lau toate valorile de la 100 până la 500. Pentru fiecare

CuprinsCap.I. Informaţii generale..............................................................................................................................2

I.1. Clasificarea datelor..............................................................................................................................2I.2. Operatori..............................................................................................................................................3

Cap.II. Limbajul pseudocod...........................................................................................................................6II.1. Implementarea algoritmilor................................................................................................................6II.2. Structuri de control.............................................................................................................................7II.2.1 Structura liniară................................................................................................................................7II.2.2 Structura alternativă.........................................................................................................................8II.2.3 Structuri repetitive............................................................................................................................9II.2.3.1 Structura repetitivă cu test inițial..................................................................................................9II.2.3.2 Structura repetitivă cu test final..................................................................................................10II.2.3.3 Structura repetitivă cu contor......................................................................................................11

Cap.III. Algoritmi elementari......................................................................................................................13III.1. Prelucrarea numerelor.....................................................................................................................13

Cap.IV. Limbajul C++.................................................................................................................................25IV.1. Noţiuni introductive........................................................................................................................25IV.1.1 Aplicaţii........................................................................................................................................31IV.2. Fişiere text......................................................................................................................................32IV.2.1. Citirea din fişier...........................................................................................................................32IV.2.2. Scrierea în fişier...........................................................................................................................33IV.2.3. Citirea dintr-un fişier şi scrierea în alt fişier................................................................................33IV.3. Tablouri unidimensionale...............................................................................................................34

Page 2: elevi.infodorohoi.comelevi.infodorohoi.com/gim/CPP/SuportCurs VI-VIII.doc · Web viewSe va folosi o variabilă i care va lau toate valorile de la 100 până la 500. Pentru fiecare

Informatica pentru clasele VI-VIII - suport de curs, V. A.

Cap.I. Informaţii generale

Informatica este ştiinţa care se ocupă cu studiul prelucrării informaţiei cu ajutorul sistemelor automatice de calcul.

Pentru a rezolva o problemă cu ajutorul calculatorului se parcurg paşii:1. Analiza problemei2. Se stabileşte modul de rezolvare a problemei3. Modul de rezolvare a problemei se codifică prin intermediul unui limbaj de programare într-

un program4. Se testează programul şi se corectează eventualele erori pe care acesta le conţine

Orice program de calculator are la bază un algoritm.Un algoritm este o mulţime ordonată şi finită (se termină de executat după o perioadă rezonabilă

de timp) de etape prin care este rezolvată o problemă.

Pentru a rezolva o problemă cu ajutorul unui program de calculator de obicei sunt necesare nişte date. Datele sunt entităţi care reţin atribute ale obiectelor (de exemplu, pentru un anumit obiect o dată

poate reţine denumirea, culoarea, greutatea, înălţimea sau costul acelui obiect).Într-un program orice dată este identificată printr-un nume format din unul sau mai multe

caractere. Obligatoriu numele datei trebuie să înceapă cu o literă.Numărul de caractere din denumirea unei variabile este recomandat să fie mai mic de 64 (este

dificil de lucrat cu denumiri foarte lungi iar unele limbaje de programare nu acceptă variabile cu mai mult de 64 de caractere). Caracterele acceptate în denumirile variabilelor sunt: literele alfabetului englez, cifre și caracterul ’_’.Exemple de denumire corecte: culoare, nume1, nume_prenumeExemple de denumire greşite: 1prenume, nume!pseudonim, nume prenume

Observaţie: Din denumirea variabilei trebuie să reiasă clar pentru ce este folosită. De exemplu o variabilă cu numele ’vndlkjbgt’ necesită urmărirea în program a rolului acesteia (aspect care în programele de mari dimensiuni solicită timp).

Tipul datei reprezintă mulțimea de elemente din care această data poate lua valori.În memoria calculatorului data este salvată ca o înșiruire de biți (bitul este unitatea de măsură a cantității de informație exprimată în sistem binar; un bit poate avea valoarea 0 sau 1).

I.1. Clasificarea datelor

Clasificarea se realizează din mai multe puncte de vedere:I. În funcție de momentul în care intervin în program :a) Date de intrare sunt acele date cunoscute înainte de a începe rezolvarea problemeib) Date intermediare sunt acele date obținute prin prelucrarea datelor de intrare dar care nu sunt date

de ieșire (nu sunt afișate)c) Date de ieșire sunt acele date care rețin datele ce vor fi afișate ca rezultate în urma rezolvării

problemei.Exemplu 1: Se cere rezolvarea ecuației de gradul doi (ax2 + bx +c = 0).

Datele de intrare: a,b, cData intermediară: delta Datele de ieșire: x1, x2

2

Page 3: elevi.infodorohoi.comelevi.infodorohoi.com/gim/CPP/SuportCurs VI-VIII.doc · Web viewSe va folosi o variabilă i care va lau toate valorile de la 100 până la 500. Pentru fiecare

Informatica pentru clasele VI-VIII - suport de curs, V. A.

Exemplu 2: Se cunosc lungimea și lățimea unui dreptunghi. Se cere să se determine aria acestuia.Datele de intrare: lungimea, latimeaDate intermediare: această problemă nu necesită date intermediareData de ieșire: aria

II. În funcție de modul de reținere a valorii: a) Variabile sunt acele date care își pot modifica valorea pe parcursul programului b) Constante sunt acele date care își păstrează valoarea pe tot parcursul programului

III. În funcție de tip (domeniul; mulțimea din care data poate lua valori)a) Date numerice

i. Date de tip întreg (Ex: nota)ii. Date de tip real (Ex: media_generala)

b) Date logice care pot lua doar una din două valori posibile: adevărat / fals (Ex: admis)c) Date șiruri de caractere (Ex: numele)

I.2. Operatori

Operatorii sunt simboluri sau șiruri de caractere cu ajutorul cărora sunt reprezentate operațiile într-un program. Exemple: +, -, <, *, SAU.

Operatorii se aplică doar pe anumite tipuri de date.Clasificarea operatorilor:

a) operatorul de atribuire (ex: a 4 semnifică faptul că data cu numele a primeşte valoarea 4)Observație: mai întâi are loc evaluarea expresiei (efectuarea calculului până se ajunge la un rezultat) din dreapta săgeții apoi, valoarea obținută este atribuită datei (variabilei/constantei).

b) operatori matematici se aplică pentru date numerice şi întorc un rezultat tot de tip numericoperator semnificaţie Exemplu

+ adună valorile celor doi operanzi 12+5- scade valoarea celui de-al doilea operand din primul 12-5/

(împărțire reală)

împarte primul operand la al doilea În acest caz se obține un rezultat tot număr real (care conține parte zecimală)

12/5(va da ca rezultat 2.40)

* înmulțește valorile celor doi operanzi** sau ^ ridică valoarea primului operand la valoarea dată de

cel de-al doilea3**2(va da ca rezultat 9)

mod (modulo)

determină restul împărțirii primei valori la cealaltă 12 mod 7(va da ca rezultat 5)

div (împărțire întreagă)

determină câtul întreg la împărțirea primei valori la cealaltă

12 div 5(va da ca rezultat 2)

c) operatori relaţionali (pentru efectuarea comparaţiilor)sunt aplicaţi pe date numerice sau şir de caractere şi întorc un rezultat de tip logicoperator semnificaţie Exemplu

= = Verifică egalitatea valorilor celor doi operanzi. În caz afirmativ întoarce True; altfel False

(12= =9)întoarce False

!=< >#

Verifică dacă valorilor celor doi operanzi sunt diferite. În caz afirmativ întoarce True; altfel False.

(12!=9)întoarce True

3

Page 4: elevi.infodorohoi.comelevi.infodorohoi.com/gim/CPP/SuportCurs VI-VIII.doc · Web viewSe va folosi o variabilă i care va lau toate valorile de la 100 până la 500. Pentru fiecare

Informatica pentru clasele VI-VIII - suport de curs, V. A.

< Verifică dacă valoarea operandului din stânga este mai mică decât a celui din dreapta

(12<9)întoarce False

> Verifică dacă valoarea operandului din stânga este mai mare decât a celui din dreapta

(12>9)întoarce True

<= Verifică dacă valoarea operandului din stânga este mai mică sau egală cu a celui din dreapta

(2<=9)întoarce True

>= Verifică dacă valoarea operandului din stânga este mai mare sau egală cu a celui din dreapta

(12>=9)întoarce True

Comparația a două șiruri de caractere are loc astfel: la început se compară codurile ASCII ale caracterelor de pe prima poziţie din cele două șiruri. Dacă sunt egale, se compară codurile ASCII ale caracterelor de pe a doua poziţie din cele două șiruri, ş.a.m.d. până când apar pentru prima dată diferenţe.Exemplu: dacă se compară şirul ”casa” cu şirul ”case”, atunci cea de-a patra comparaţie se face între caracterele de pe ce-a de-a patra poziţie, adică între ’a’ şi ’e’ iar pentru că, caracterul ’a’ are codul ASCII 97 iar caracterul ’e’ are codul ASCII 101 rezultă că şirul ”casa” este mai mic decât ”case”. Observaţie 1: dacă cele două şiruri sunt de lungimi diferite (au număr diferit de caractere) atunci şirul cu lungime mai mică este completat la sfârşit, până la egalarea lungimilor cu un caracter care are codul ASCII 0.Observaţie 2: două şiruri pot fi concatenate (unite într-un singur şir) cu ajutorul operatorului +.Exemplu: în urma operație ”Studiem ”+”informatica” se obține șirul ”Studiem informatica”.Comparaţia între şiruri de caractere se realizează de exemplu atunci când se doreşte ordonarea lexicografică (alfabetică) a unui set de cuvinte.

d) operatori logici care pot fi aplicați numai pe operanzi logici (acei operanzi care pot lua doar valoarea True sau False)

i. operatoul not se aplică unui singur operand (neagă valoarea de adevăr a acestuia)X not x

True FalseFalse True

ii. operatorul and (și logic) întoarce valoarea True numai dacă toate intrările au valoarea de adevăr True

X Y X and YFalse False FalseFalse True FalseTrue False FalseTrue True True

iii. operatorul or (sau logic) întoarce valoarea True dacă cel puțin o intrare are valoarea de adevăr True

X Y X or YFalse False FalseFalse True TrueTrue False TrueTrue True True

Expresia este o combinație validă (care duce la obținerea unui rezultat) de operatori și operanzi.Exemple de expresii valide: E1 4+12*3; E2 3**4;

E3 ”alfa”+”beta”; E4 5<7; E5 True and False;Exemple de expresii care nu sunt valide: E1 ”mere”+15; E232 or ”alune”; E3 True and 12;E4 False or ”True”;

4

Page 5: elevi.infodorohoi.comelevi.infodorohoi.com/gim/CPP/SuportCurs VI-VIII.doc · Web viewSe va folosi o variabilă i care va lau toate valorile de la 100 până la 500. Pentru fiecare

Informatica pentru clasele VI-VIII - suport de curs, V. A.

Regulă: Ordinea în care sunt evaluate operațiile (numită și precedența operatorilor) este următoarea:1. Funcțiile2. Operatorii matematici. Operatorul ** are prioritate 1 (deci se evaluează primul); *, /, div și mod

au prioritate 2 iar + și – au prioritate 3.3. Operatorii de concatenare.4. Operatorii relaționali (toți au aceeași prioritate).5. Operatorii logici în următoarea ordine: not, and și or.

Precedența operatorilor poate fi reținută cu ajutorul ”termenului” FuMaConReLo (de la Funcții, Matematici, Concatenare, Relaționali, Logici).

Asociativitatea operaţiilor este cea cunoscută de la matematică: toți operatorii cu același nivel de prioritate sunt evaluați de la stânga la dreapta.

Exercițiul 1: Evaluați cu atenție următoarele expresii și scrieți care este valoarea lui E. Stabiliți de asemenea tipul de date pe care îl are E în fiecare item.a) E 2+4+7*3;b) E 2**4+7*3;c) E True and True;d) E True and not(False);e) E True and True and True and True and False and True;f) E ”alba” + ” ca ” + ” neaua”;g) E 12<5;h) E not(12<5);i) E not(not(12<5));j) E not(2**4>3**2+7) or not(False);k) E (12*3-7) mod 8 > 27 div 5;

Exercițiul 2: Cunoscând valorile următoarelor variabile a 12; b13; c”test” să se specifice care este valorea lui E obținută în urma evaluării următoarele expresii:a) Ea*3+b+a;b) E ”alfa”>”alfabet”;c) E”elf”>”ele”d) E2*a>2*b-2;e) Enot(not(True and False));f) aa+7;

ba+5;E2*(a+b);

g) a0;b a+5;a b*2 mod 7;a 3+a**2;Ea*b;

h) E”2+15”;

5

Page 6: elevi.infodorohoi.comelevi.infodorohoi.com/gim/CPP/SuportCurs VI-VIII.doc · Web viewSe va folosi o variabilă i care va lau toate valorile de la 100 până la 500. Pentru fiecare

Informatica pentru clasele VI-VIII - suport de curs, V. A.

Cap.II. Limbajul pseudocod.II.1. Implementarea algoritmilor

Un algoritm este o succesiune de paşi elementari efectuaţi într-un mod logic pentru a rezolva o problemă.Cele mai importante caracteristicile ale algoritmilor sunt:

a) generalitatea (universalitatea): un algoritm trebuie să rezove o clasă (o categorie) de probleme şi nu doar o problemă particulară. De exemplu un algoritm care determină suma 7+5 este mai puţin general decât un algoritm care adună oricare două numere întregi.

b) claritatea: descrierea cu exactitate şi fără ambiguităţi a paşilor care trebuiesc executaţi pentru a rezolva problema

c) finitudinea: proprietatea algoritmului de a se termina într-un număr finit de paşi.

La crearea unui algoritm trebuie ţinut cont de următoarele reguli:- datele cu care lucrează algoritmul trebuie să fie definite exact- să fie definite exact operaţiile care se efectuează asupra datelor- succesiunea instrucţiunilor care vor fi executate să fie clară

Pseudocodul este un limbaj artificial care poate descrie algoritmii într-un mod natural, apropiat de limbajul de programare dar care nu ţine cont de regulile stricte de respectare a sintaxelor pe care le impune un limbaj de programare.Pseudocodul este considerat un limbaj fals deoarece nu poate fi folosit pentru a exprima intrucţiunile care sunt date calculatorului. Acesta foloseşte expresii în limbaj natural în care instrucţiunile sunt separate cu ;.

Pentru realizarea algoritmului se folosesc cuvinte cheie cu scopul de a descrie structurile de control şi operaţiile specifice. De asemenea pentru a declara variabilele, tipurile de date sunt introduse prin intermediul unor cuvinte cheie.Ca regulă, la declararea variabilelor, mai întâi se introduce cuvântul cheie prin care se specifică tipul de date iar apoi, separate cu virgulă datele (ex:pentru a definit variabilele a,b şi c de tip întreg se foloseşte: întreg a,b,c;).

Pentru a comunica datele se folosesc cuvintele cheie citeşte (pentru a introduce datele) şi scrie (pentru afişarea mesajelor şi a rezultatelor).Observaţiile (comentariile) se introduc în program precedate de // (comentarii pe o singură linie) sau între /* și */ pentru comentarii pe mai multe linii.Un algoritm implementat în pseudocod are următoarea structură:

secţiunea de declararea variabilelorînceputinstrucţiunile algoritmuluisfârşit.

Ex.1: // Implementati in pseudocod un algoritm care determină suma si produsul a 2 numere intregiîntreg a,b,suma, produs;început scrie ”dati valoarea lui a:”; citeşte a; scrie ”dati valoarea lui b:”; citeşte b; suma a+b;

6

Page 7: elevi.infodorohoi.comelevi.infodorohoi.com/gim/CPP/SuportCurs VI-VIII.doc · Web viewSe va folosi o variabilă i care va lau toate valorile de la 100 până la 500. Pentru fiecare

Informatica pentru clasele VI-VIII - suport de curs, V. A.

produsa*b; scrie ”suma = ”,suma; scrie ”produsul = ”,produs;sfârşit.

Observaţie: în programul de mai sus mesajele introduse între ghilimele sunt afişate exact aşa cum apar. La afişare (după folosirea cuvântului cheie scrie) dacă ceea ce urmează nu este introdus între ghilimele, atunci are loc o evaluare a expresiei şi în urma obţinerii unui rezultat acesta va fi afişat.

Ex:scrie ”2+3”; /* va afişa 2+3 deoarece expresia este introdusă între ghilimele şi este văzută ca un text şi nu ca o expresie ce trebuie să fie evaluată */scrie 2+3; // va afişa 5

Ex.1 (altă variantă)/* Implementati in pseudocod un algoritm care determină suma si produsul a 2 numere intregi.Se vor folosi doar 2 variabile în loc de 4 câte au fost utilizate în versiunea anterioară.*/întreg a,b;început scrie ”dati valoarea lui a:”; citeşte a; // presupunem că am introdus pentru a valoarea 7 scrie ”dati valoarea lui b:”; citeşte b; // presupunem că am introdus pentru b valoarea 3 scrie ”suma = ”,a+b; // se afişează suma=10 scrie ”produsul = ”,a*b; // se afişează produsul=21sfârşit.

Temă:1.Implementaţi în pseudocod un algoritm care să afişeze aria şi perimetrul unui dreptunghi cunoscând lungimea şi lăţimea acestuia.2.Implementaţi în pseudocod un algoritm care citeşte valorile celor 2 catete ale unui triunghi dreptunghic, determină şi afişează aria triunghiului şi valoarea ipotenuzei. Pentru a extrage radicalul dintr-un număr se va folosi funcţia sqrt(număr).

II.2. Structuri de control

Structura de control defineşte ordinea în care un pas dă controlul altui pas şi prin care se termină fluxul controlului. Pentru definirea algoritmilor se folosesc trei tipuri de structuri de control:

- structura liniară- structura alternativă- structura repetitivă

II.2.1 Structura liniară

Structura liniară (secvenţială) este structura în care instrucţiunile sunt executate în ordinea scrierii lor.Ex:…scrie ”x=”;citeşte x;

7

Page 8: elevi.infodorohoi.comelevi.infodorohoi.com/gim/CPP/SuportCurs VI-VIII.doc · Web viewSe va folosi o variabilă i care va lau toate valorile de la 100 până la 500. Pentru fiecare

Informatica pentru clasele VI-VIII - suport de curs, V. A.

scrie ”y=”;citeşte y;…

Temă: Implementaţi un program în pseudocod care citeşte 4 numere reale de la tastatură, determină şi afişează media aritmetică a acestora.

II.2.2 Structura alternativă

Această structură permite selectarea pe baza unei condiții a unei acțiuni din două sau mai multe posibile.a) Structura alternativă simplă

Sintaxă:dacă (condiție)

atunci acțiune1; altfel

acțiune2;sfârșit_dacă;

Descriere: Dacă este adevărată (îndeplinită) condiţia dintre parantezele rotunde, atunci se execută acţiune1. Dacă nu este adevărată condiţia dintre parantezele rotunde, atunci se execută acţiune2.

Ex: Implementați în pseudocod un program care afișează maximul din 2 numere reale citite de la tastatură.real a,b;început

citește a,b;dacă (a>b)

atunci scrie ”a este mai mare”;altfel scrie ”b este mai mare sau egal cu a”;

sfârșit_dacă;sfârșit.

Temă: Implementați în pseudocod un program care citeşte 2 şiruri de caractere (acestea se vor declara folosind cuvântul cheie şir) şi le afişează în ordine alfabetică.

b) Structura alternativă generalizată (selecția multiplă)Din mai multe variante posibile se poate face alegerea uneia.

Sintaxă:în caz că selector

cazul v1: acţiune1;cazul v2: acţiune2;cazul v3: acţiune3;cazul v4: acţiune4;………………..cazul vn: acţiunen;altfel acţiunek;

sfârşit_în_caz_că;

8

Page 9: elevi.infodorohoi.comelevi.infodorohoi.com/gim/CPP/SuportCurs VI-VIII.doc · Web viewSe va folosi o variabilă i care va lau toate valorile de la 100 până la 500. Pentru fiecare

Informatica pentru clasele VI-VIII - suport de curs, V. A.

Descriere: Se evaluează selector (dacă este o expresie, se evaluează aceasta până când se obţine un rezultat). Dacă rezultatul obţinut în urma evaluării selectorului este egal cu v1 atunci se execută acţiune1. Dacă rezultatul obţinut este egal cu v2 atunci se execută acţiune2 ş.a.m.d.Dacă rezultatul obţinut în urma evaluării selectorului este diferit de toate valorile v1,v2,…vn atunci se merge pe ramura altfel şi se execută acţiunek.

Exemplu:Se citesc 2 numere întregi a şi b, şi valoarea operatorului op. Dacă valoarea lui op este 1 atunci se va afişa suma celor două numere; dacă valoarea lui op este 2 atunci se va afişa rezultatul obţinut în urma evaluării diferenţei a-b; dacă valoarea lui op este 3 atunci se va produsul celor două numere; dacă valoarea lui op este diferită de 1,2 şi 3 atunci se va afişa mesajul ”operator incorect”.

întreg a,b,op;începutscrie ”a=”;citeşte a;scrie ”b=”;citeşte b;scrie ”Introduceti operatorul: ”;citeşte op;în caz că op

cazul 1: scrie a+b;cazul 2: scrie a-b;cazul 3: scrie a*b;altfel scrie ”operator incorect”;

sfârşit_în_caz_că;sfârşit .

Temă: Implementați în pseudocod un program care citește 5 numere naturale n1,n2,n3,n4,n5, determină și afișează câte din acestea sunt numere impare. Se va folosi selecția multiplă.

II.2.3 Structuri repetitive

Uneori, o secvență formată din una sau mai multe instrucțiuni trebuie să fie executată de mai multe ori. În astfel de situații poate fi utilizată una din cele trei structuri repetitive:

a) Structura repetitivă cu test inițialb) Structura repetitivă cu test finalc) Structura repetitivă cu contor (cu număr cunoscut de pași)

II.2.3.1 Structura repetitivă cu test inițial

Sintaxă:cât timp (condiție) execută

acțiune;sfârșit_cât_timp;

Descriere: acțiune poate fi o intrusțiune sau un bloc de instrucțiuni.Se verifică dacă (condiție) este adevărată (dacă este îndeplinită). În caz afirmativ se execută acțiune și se revine la verificarea (condiție)-ei. Dacă (condiție) este adevărată atunci se excută acţiune şi se verifică din

9

Page 10: elevi.infodorohoi.comelevi.infodorohoi.com/gim/CPP/SuportCurs VI-VIII.doc · Web viewSe va folosi o variabilă i care va lau toate valorile de la 100 până la 500. Pentru fiecare

Informatica pentru clasele VI-VIII - suport de curs, V. A.

nou (condiţie). Continuă aceste două secvenţe (verificarea condiţiei şi executarea acţiunii) până în momentul în care (condiție) nu mai este adevărată (nu mai este îndeplinită).

Altfel spus, atât timp cât condiţie este adevărată se execută acţiune şi se verifică apoi condiţie, după care ciclul se reia.

Exemplu: Să se implementeze un program în pseudocod care citeşte un număr real n de 3 ori.

întreg i;real n;începuti1; // se atribuie variabilei i valoarea 1cât timp (i<=3) execută

scrie ”n=”;citeşte n;ii+1;

sfârșit_cât_timp;sfârşit .

Execuția pas cu pas a programului anterior:Se declară variabilele i și n (se alocă spațiu în memoria RAM pentru aceste variabile). Apoi,

variabila i primește valoarea 1 (prin intermediul operației de atribuire). Se verifică apoi condiţia, dacă (i<=3). Condiţia este adevărată (deoarece 1 <= 3) de aceea se vor

executa cele 3 instrucţiuni: afişarea mesajului n= , urmat de citirea valorii pentru n şi apoi incrementarea valorii lui i (i va reţine astfel valoarea 2).

Se revine la condiţie şi se verifică apoi condiţia, dacă (i<=3). Condiţia este adevărată (deoarece 2 <= 3) de aceea se vor executa cele 3 instrucţiuni: afişarea mesajului n=, urmat de citirea valorii pentru n şi apoi incrementarea valorii lui i (i va reţine astfel valoarea 3).

Se revine din nou la condiţie şi se verifică dacă (i<=3). Condiţia este adevărată (deoarece 3 <= 3) de aceea se vor executa cele 3 instrucţiuni: afişarea mesajului n= urmat de citirea valorii pentru n şi apoi incrementarea valorii lui i (i va reţine astfel valoarea 4).Se revine încă o dată la condiţie şi se verifică dacă (i<=3). Condiţia este falsă (deoarece nu este îndeplinită 4 <= 3) de aceea se va ieşi din structura repetitivă şi controlul va fi dat instrucţiuni de după sfârșit_cât_timp;

Temă: Folosind structura repetitivă cu test iniţial implementaţi în pseudocod câte un algoritm care:1.) Citeşte 10 numere reale de la tastatură şi afişează suma lor.2.) Citeşte 20 numere naturale de la tastatură şi afişează câte dintre acestea sunt numere pare.3.) Citeşte 30 numere naturale de la tastatură şi afişează suma numerelor impare citite.4.) Citeşte 30 numere naturale de la tastatură şi afişează câte din cele 30 sunt formate din 2 cifre.5.) Afişează toate numerele naturale de la 10 la 500.

II.2.3.2 Structura repetitivă cu test final

Sintaxă:execută

acțiune;cât timp (condiție);

10

Page 11: elevi.infodorohoi.comelevi.infodorohoi.com/gim/CPP/SuportCurs VI-VIII.doc · Web viewSe va folosi o variabilă i care va lau toate valorile de la 100 până la 500. Pentru fiecare

Informatica pentru clasele VI-VIII - suport de curs, V. A.

Descriere: acțiune poate fi o intrucțiune sau un bloc de instrucțiuni.Se execută acţiune. Se verifică apoi dacă (condiție) este adevărată (dacă este îndeplinită). În caz afirmativ se execută acțiune apoi se verifică din nou (condiție). Dacă (condiție) este adevărată atunci se execută acţiune şi se verifică din nou (condiţie). Continuă aceste două secvenţe (verificarea condiţiei şi executarea acţiunii) până în momentul în care (condiție) nu mai este adevărată.

Altfel spus, prima dată se execută acţiune, apoi, atât timp cât condiţie este adevărată se reexecută acţiune.

Observaţie: acţiune se execută cel puţin o dată indiferent dacă condiţia este sau nu îndeplinită.

Exemplu: Să se implementeze un program în pseudocod care citeşte un număr real n de 3 ori.

întreg i;real n;începuti0; // se atribuie variabilei i valoarea 0execută

ii+1; // i reţine numărul de citiri al lui nscrie ”n=”;citeşte n;

cât_timp(i<3);sfârşit .

Execuția pas cu pas a programului: Se declară variabilele i și n. Variabila i primește valoarea 0.

Se intră în structura repetitivă și se atribuie o valoare cu 1 mai mare decât valoarea anterioară deținută de i (0+1, adică 1). Se afișează mesajul n=. Se citește apoi valoarea lui n iar apoi se verifică condiția, dacă (i<=3). Condiţia este adevărată (deoarece 1 <= 3) de aceea se vor reexecuta instrucțiunile de după cuvântul cheie execută. Cele 3 comenzi se reexecută până când i devine 3 (în acest moment condiția de reexecutare nu mai este îndeplinită, deci, structura repetitivă va fi părăsită).

Temă: Folosind structura repetitivă cu test final implementaţi în pseudocod câte un algoritm care:1.) Citeşte 7 numere întregi de la tastatură şi afişează produsul numerelor nenule.2.) Citeşte 20 numere naturale de la tastatură şi afişează câte dintre acestea sunt numere impare.3.) Citeşte 30 numere naturale de la tastatură şi afişează suma acelor numere citite mai mari de 100.4.) Citeşte 30 numere naturale de la tastatură şi afişează câte din cele 30 sunt formate din 2 cifre.5.) Afişează toate numerele naturale de la 500 la 200.

II.2.3.3 Structura repetitivă cu contor

Sintaxă:pentru (nume_vval_init; cc; pas)

acțiune;sfârşit pentru;

Descriere: Variabila nume_v este iniţializată cu val_init. Se verifică apoi cc (condiţia de continuitate). Dacă această condiţie este adevărată atunci se execută acţiune. După executarea acţiunii se execută pas şi apoi se verifică din nou cc. Dacă cc este adevărată se execută acţiune şi apoi pas. Această secvenţă (cc - acţiune - pas) continuă până când cc nu mai este îndeplinită.

11

Page 12: elevi.infodorohoi.comelevi.infodorohoi.com/gim/CPP/SuportCurs VI-VIII.doc · Web viewSe va folosi o variabilă i care va lau toate valorile de la 100 până la 500. Pentru fiecare

Informatica pentru clasele VI-VIII - suport de curs, V. A.

Altfel spus, prima dacă are loc iniţializarea nume_vval_init;. Se execută apoi secvenţa cc - acţiune - pas până când condiţia de continuitate nu mai este adevărată.

Exemplu: Să se implementeze un program în pseudocod care citeşte un număr real n de 3 ori.întreg i; real n;începutpentru (i1; i<=3; ii+1)

scrie ”n=”;citeşte n;

sfârşit pentru;sfârşit .Temă: Folosind structura repetitivă cu contor implementaţi în pseudocod câte un algoritm care:1.) Citeşte 7 numere întregi de la tastatură şi afişează produsul numerelor nenule.2.) Citeşte 20 numere naturale de la tastatură şi afişează câte dintre acestea sunt numere impare.3.) Citeşte 30 numere naturale de la tastatură şi afişează suma acelor numere citite mai mari de 100.4.) Citeşte 30 numere naturale de la tastatură şi afişează câte din cele 30 sunt formate din 2 cifre.5.) Afişează toate numerele naturale de la 50 la 500.

12

Page 13: elevi.infodorohoi.comelevi.infodorohoi.com/gim/CPP/SuportCurs VI-VIII.doc · Web viewSe va folosi o variabilă i care va lau toate valorile de la 100 până la 500. Pentru fiecare

Informatica pentru clasele VI-VIII - suport de curs, V. A.

Cap.III. Algoritmi elementari III.1. Prelucrarea numerelor

Aplicația 1: Să se determine și să se afișeze suma cifrelor unui număr natural p citit de la tastatură.

Descrierea matematică:Presupunem că utilizatorul a introdus de la tastatură valoarea 137 pentru numărul care va fi prelucrat. Avem nevoie de o variabilă care să rețină valoarea citită (pe această variabilă o vom numi p). Mai avem nevoie de o variabilă, pe care o vom numi suma, în care vom reține suma cifrelor lui p.Pentru a determina suma cifrelor lui p, trebuie doar să adunăm fiecare cifră în parte, adică 1+3+7. Cel mai simplu se poate proceda astfel:

Extragem ultima cifră din p (pe care o memorăm într-o variabilă numită uc, denumire provenită de la ultima cifră) – practic extragerea ultimei cifre se obține prin determinarea restului împărțirii lui p la 10 astfel:

uc p MOD 10;Deci, la început uc va reține valoarea 7. Apoi, adunăm valoarea lui uc la vechea valoare a sumei (care a fost 0 deoarece nu am făcut nici o prelucrare până în acest moment) și memorăm acest rezultat în variabila suma. Această operație de atribuire o scriem astfel:

suma suma + uc;Deoarece am folosit ultima cifră din numărul p, o vom elimina. Deci, după următoarea operaţie, valoarea reținută de p va deveni 13. Pentru aeastă operație folosim următoarea atribuire:

p p DIV 10;În continuare, se extrage din nou ultima cifră din p și se reține în variabila uc:

uc p MOD 10;apoi se adaugă uc la vechea sumă:

suma suma + uc;și se elimină ultima cifră din p:

p p DIV 10;ș.a.m.d. până când p devine 0.Se observă că cele 3 operații diferite de atribuire se execută de mai multe ori (se repetă). Aceste operații se repetă până când p devine 0.

Algoritmul:

întreg p,uc,suma; începutscrie ”p=”;citeşte p;suma 0; // înaintea prelucrării cifrelor, suma acestora este 0cât timp (p!=0) // cât timp există cifre de prelucrat

uc p MOD 10; // se extrage ultima cifră din psuma suma + uc; // se adună ultima cifră cu vechea sumă a cifrelor

// iar rezultatul este atribuit variabilei sumap p DIV 10; // se elimină ultima cifră din p, adică cifra prelucrată

sfârşit cât timp;scrie ”Suma cifrelor numarului citit = ”, suma;sfârşit.

13

Page 14: elevi.infodorohoi.comelevi.infodorohoi.com/gim/CPP/SuportCurs VI-VIII.doc · Web viewSe va folosi o variabilă i care va lau toate valorile de la 100 până la 500. Pentru fiecare

Informatica pentru clasele VI-VIII - suport de curs, V. A.

Temă: Implementați un algoritm în pseudocod care determină suma cifrelor pare ale unui număr natural d citit de la tastatură.

Aplicația 2: Să se determine și să se afișeze cifra maximă a unui număr natural p citit de la tastatură.

Descrierea matematică:Cifra maximă o vom memora într-o variabilă numită cmax (cmax – de la cifra maximă). Pentru a

determina cifra maximă a lui p, mai întâi trebuie extrasă fiecare cifră în parte – cifră care trebuie comparată cu cmax. După fiecare comparaţie dintre ultima cifră din p şi cmax‚ se reţine în cmax cea mai mare cifră prelucrată până în momentul curent. Întrebare: care va fi prima valoare a lui cmax ? cmax trebuie să aibă o astfel de valoare încât toate cifrele din p să fie mai mari sau egale cu cmax. De ce trebuie să fie aşa ? Pentru ca cmax să îşi schimbe valoarea în momentul prelucrării cifrelor din p. Logic că înainte de a prelucra cifre din p, lui cmax îi vom atribui o valoare mai mică sau egală cu 0.

Se compară fiecare cifră din p cu cmax (după care se elimină de la sfârşitul lui p) până când sunt „eliminate” toate cifrele din p.Exemplu:

cmax0;p9572; // utilizatorul introduce această valoare pentru pucp MOD 10; // uc2dacă (uc>cmax) atunci //dacă(2>0), condiţie adevărată, deci, se execută ce urmează după atunci

cmaxuc; // cmax2;pp DIV 10; // p957

ucp MOD 10; // uc7dacă (uc>cmax) atunci //dacă(7>2) condiţie adevărată, deci, se execută ce urmează după atunci

cmaxuc; // cmax7;pp DIV 10; // p95

ucp MOD 10; // uc5dacă (uc>cmax) atunci //dacă(5>7) condiţe neîndeplinită, deci, nu se execută …

cmaxuc; // cmax îşi păstrează valoarea anterioară, adică 7;pp DIV 10; // p9

ucp MOD 10; // uc9dacă (uc>cmax) atunci //dacă(9>7)care este adevărată, deci, se execută …

cmaxuc; // cmax9;pp DIV 10; // p0, Ne oprim.

Algoritmul:

întreg p,cmax,uc;începutcmax 0;scrie ”p=”;citeşte p;cât timp (p!=0) // cât timp există cifre de prelucrat în p

uc p MOD 10; // se extrage ultima cifră din pdacă (uc>cmax) atunci //numai când ultima cifră este mai mare decât cmax se memorează noua cifră

cmax uc;sfârșit_dacă;

14

Page 15: elevi.infodorohoi.comelevi.infodorohoi.com/gim/CPP/SuportCurs VI-VIII.doc · Web viewSe va folosi o variabilă i care va lau toate valorile de la 100 până la 500. Pentru fiecare

Informatica pentru clasele VI-VIII - suport de curs, V. A.

p p DIV 10; // se elimină ultima cifră din p, adică cifra prelucratăsfârşit cât timp;scrie ”Cifra maxima este ”, cmax;sfârşit.

Temă: Implementați un algoritm în pseudocod care determină cifra minimă a unui număr natural d citit de la tastatură.

Aplicația 3: Implementaţi un algoritm în pseudocod care citeşte un număr natural n. Se citesc apoi n numere reale. Să se determine și să se afișeze media aritmetică a celor n numere citite.

Descrierea matematică:Avem nevoie de următoarele variabile: n – reţine numărul de elemente; nr – o variabilă care

reţine pe rând fiecare din cele n numere citite; suma – pentru a memora suma numerelor citite; i – indicele unui element la un moment dat (ex: când i3 va fi citit al 3-lea element din cele n) şi ma – media aritmetică.

Strategie:Se citește numărul de elemente n.Se inițializează variabilele suma și i cu 0.Variabila i va lua apoi valori de la 1 până la n inclusiv:

i1;se citește nr;se adună nr la suma;

se incrementează i (crește cu o unitate, deci devine 2)se citește nr; // al 2-lea numărse adună nr la suma;

se incrementează i (crește cu o unitate, deci devine 3)se citește nr; // al 3-lea numărse adună nr la suma;…..

se incrementează i (i devine egal cu n, deci va fi citit ultimul număr)se citește nr; // al n-lea numărse adună nr la suma;

masuma/n; // se determină media aritmeticăse afișează ma;

Algoritmul:

întreg i,n;real nr,suma,ma;începuti 0;suma 0;scrie ”Dati numarul de elmente n=”;citeşte n;cât timp (i<n)

15

Page 16: elevi.infodorohoi.comelevi.infodorohoi.com/gim/CPP/SuportCurs VI-VIII.doc · Web viewSe va folosi o variabilă i care va lau toate valorile de la 100 până la 500. Pentru fiecare

Informatica pentru clasele VI-VIII - suport de curs, V. A.

i i+1; // va fi citit următorul elementscrie ” nr=”;citeşte nr;suma suma+nr; // se adună numărul citit cu vechea suma

sfârşit cât timp;ma suma/n;scrie ”Media aritmetica a celor”,n,” numere este ”, ma;sfârşit.

Observaţie: Trebuie acordată o mare atenţie condiţiei din structura repetitivă. Întrebări:- Ce se întâmplă dacă în loc de (i<n) scriem (i<=n) ?- Ce valoare se va afişa dacă înainte de sfârşit. introducem următoarea comandă scrie i; ?

Temă: Implementați un program în pseudocod care citește un număr natural n iar apoi n numere naturale. Programul va determină şi afişa media aritmetică a numerelor pare din cele n citite.

Aplicația 4: Implementaţi un program în pseudocod care citeşte un număr natural n. Se citesc apoi n numere întregi. Programul va determina și va afișa care este cel mai mic din cele n numere citite.

Descrierea matematică:Avem nevoie de următoarele variabile: n – reţine numărul de elemente; nr – o variabilă care

reţine pe rând fiecare din cele n numere citite; i – indicele unui element la un moment dat şi min – valoarea minimă din setul de numere (nr) citite la un moment dat.

Strategie:Se citește numărul de elemente n.Se inițializează variabila i cu 1.Se citește primul nr.Se inițializează min cu nr. ( minnr;)

Se incrementează i (ii+1;) // deci i devine 2Se citește nr // adică a doua valoare pentru nrSe compară nr cu min. Dacă nr este mai mic decât min, atunci min va reține nr.

Se incrementează i (ii+1;) // deci i devine 3Se citește nr // a treia valoare pentru nrSe compară nr cu min. Dacă nr este mai mic decât min, atunci min va reține nr.………

Se incrementează i (ii+1;) // i va fi egal cu nSe citește nr // ultima valoare pentru nrSe compară nr cu min. Dacă nr este mai mic decât min, atunci min va reține nr.Se afişează valoarea lui min.

Ex: dacă n=5 iar mulţimea numerelor nr este:

nr 17 5 10 80 -3i 1 2 3 4 5

atunci vor fi parcurse următoarele etape:

16

Page 17: elevi.infodorohoi.comelevi.infodorohoi.com/gim/CPP/SuportCurs VI-VIII.doc · Web viewSe va folosi o variabilă i care va lau toate valorile de la 100 până la 500. Pentru fiecare

Informatica pentru clasele VI-VIII - suport de curs, V. A.

Se iniţializează min cu prima valoare (adică cu 17). Se compară apoi, min cu următoarea valoare (cu 5). Pentru că 5 este mai mic, min va reţine această valoare. Se compară apoi min (care în acest moment are valoarea 5) cu următoarea valoare (cu 10). Pentru că 10 nu este mai mic decât min, acesta rămâne neschimbat. Se compară apoi min cu următoarea valoare (cu 80). min rămâne neschimbat. Se compară apoi min cu următoarea valoare (cu -3). Pentru că -3 este mai mic decât min, min va reţine această valoare (-3).

În concluzie comparaţiile se fac două câte două: la început se reţine în min prima valoare; apoi cea mai mică valoare dintre primul şi al doilea număr; apoi cel mai mic număr dintre minimul din primele două numere şi al treilea ş.a.m.d.

Algoritmul:

întreg i,n,nr,min;începutscrie ”Dati numarul de elemente n=”;citeşte n;i 1;scrie ”Dati primul din cele ”,n,” numere:”;citeşte nr;min nr;cât timp (i<n)

i i+1; // va fi citit următorul elementscrie ” nr=”;citeşte nr;dacă (nr<min) atunci

min nr;sfarsit_dacă;

sfârşit cât timp;scrie ”Valoarea minima este ”,min;sfârşit.

Observație: Ce se întâmplă dacă pentru n, utilizatorul introduce valoarea 0 sau o valoare negativă ? În acest caz se citește o valoarea pentru nr ceea ce nu este tocmai corect. Pentru a trata și situația în care utilizatorul introduce valori nepotrivite pentru n vom face o validare a citirii.

Validarea înseamnă verificarea unei date dacă face parte din domeniul de valori corect. De exemplu, pentru ca varsta unei persoane să fie validă, aceasta trebuie să fie cuprinsă între 0 și 120 de ani. Nu pot exista persoane care, de exemplu, au -2 ani sau 328 de ani. Un alt exemplu: latura unui pătrat trebuie să fie strict mai mare decât 0. Operația de validare se face astfel: se citește data de intrare până când este validă.În programul anterior, validarea se face, înlocuind secvența:

scrie ”Dati numarul de elemente n=”;citeşte n;

cuexecută

scrie ”Dati numarul de elemente n=”;citeşte n;

cât timp (n<=0); // n va fi recitit până când este strict mai mare decât 0

Temă: Implementați un program în pseudocod care citește un număr natural n iar apoi n numere întregi. Programul va determină şi va afişa valoarea minimă și valoarea maximă din cele n numere citite.

17

Page 18: elevi.infodorohoi.comelevi.infodorohoi.com/gim/CPP/SuportCurs VI-VIII.doc · Web viewSe va folosi o variabilă i care va lau toate valorile de la 100 până la 500. Pentru fiecare

Informatica pentru clasele VI-VIII - suport de curs, V. A.

Aplicația 5: Se ştie că data de 1 ianuarie 2012 este într-o zi de duminică. Se citeşte un număr întreg n de la tastatură. Să se determine în ce zi a săptămânii cade a n-a zi din acest an.

Strategie:Vom folosi o variabilă zis (de la zi săptămână).Folosim următoarea convenție:dacă zis=0 atunci este lunidacă zis=1 atunci este marțidacă zis=2 atunci este miercuridacă zis=3 atunci este joidacă zis=4 atunci este vineridacă zis=5 atunci este sâmbătădacă zis=6 atunci este duminică

Exemplu: Dacă n=11, pentru a determina în ce zi din săptămână cade a 11-a zi din an vom proceda astfel: la zis (care inițial este 6) vom aduna n și vom determina restul la împărțirea cu 7. În funcție de valoarea pe care o are acest rest știm care este ziua.

Algoritmul:

întreg zis,n;începutzis=6; // pentru că 1 ianuarie 2012 este duminicăscrie ” n=”;citeşte n;zis = (zis+n) MOD 7;în caz că zis

cazul 0: scrie ” Luni”;cazul 1: scrie ” Marti”;cazul 2: scrie ” Miercuri”;cazul 3: scrie ” Joi”;cazul 4: scrie ” Vineri”;cazul 5: scrie ” Sambata”;cazul 6: scrie ” Duminica”;

sfârşit_în_caz_că;sfârşit.

Temă: Se ştie că data de 1 ianuarie 2012 este într-o zi de duminică. Implementaţi un program în pseudocod care determină în ce zi a săptămânii vor fi 1 februarie, 1 martie şi 1 aprilie.

Aplicația 6: Implementați în pseudocod un program care rezolvă pe baza opțiunii selectate, cerintețele următorului meniu:A – Afișează primele 20 numere naturaleB - Afișează primele 20 numere naturale pareC – Afișează suma primelor 20 de numere naturaleD - Afișează toate numerele naturale formate din 2 cifre S – Sfârșit program

18

Page 19: elevi.infodorohoi.comelevi.infodorohoi.com/gim/CPP/SuportCurs VI-VIII.doc · Web viewSe va folosi o variabilă i care va lau toate valorile de la 100 până la 500. Pentru fiecare

Informatica pentru clasele VI-VIII - suport de curs, V. A.

Dacă utilizatorul introduce o opțiune diferită de A,B,C,D sau S, se va afișa mesajul ”Opţiune incorectă !”. Meniul va fi (re)afişat până în momentul în care utilizatorul introduce opţiunea S pentru a finaliza execuţia acestuia.

Strategie:Pentru a citi opțiunea introdusă de utilizator vom folosi o variabilă numită opt (de la opțiune)

Pentru a rezolva cerințele vom folosi o variabilă i (pentru afișarea necesară cerințelor A,B și C) și o variabilă suma.

Algoritmul:

caracter opt;întreg i,suma;începutexecută

scrie ” M E N I U”;scrie ” A – Afișează primele 20 numere naturale”;scrie ” B - Afișează primele 20 numere naturale pare”;scrie ” C – Afișează suma primelor 20 de numere naturale”;scrie ” D - Afișează toate numerele naturale formate din 2 cifre”;scrie ” S – Sfârșit program”;scrie ” Introduceti optiunea dorita:”;citeşte opt;în caz că opt

cazul ’A’: pentru (i0; i<20; ii+1)

scrie i,” ”;sfârşit pentru;

cazul ’B’:pentru (i0; i<20; ii+1)

scrie 2*i,” ”;sfârşit pentru;

cazul ’C’:suma0;pentru (i0; i<20; ii+1)

sumasuma+i;sfârşit pentru;scrie ”Suma primelor 20 de numere naturale este ”,suma;

cazul ’D’:pentru (i10; i<100; ii+1)

scrie i,” ”;sfârşit pentru;

cazul ’S’: scrie ” Sfarsit program”;*) Iesire fortata din program

altfel scrie ”Optiune incorecta !”;sfârşit_în_caz_că;

cât timp (opt!=’S’);sfârşit.

Observații:19

Page 20: elevi.infodorohoi.comelevi.infodorohoi.com/gim/CPP/SuportCurs VI-VIII.doc · Web viewSe va folosi o variabilă i care va lau toate valorile de la 100 până la 500. Pentru fiecare

Informatica pentru clasele VI-VIII - suport de curs, V. A.

1.) Afișarea și executarea meniului se desfășoară în interiorul instrucțiunii execută …. cât timp. Atât timp cât utilizatorul introduce pentru opțiune litere diferite de S, meniul se reafișează. Altfel spus, programul se încheie după introducerea literei S pentru opt.2.) Pentru opt va fi introdus un singur caracter, majusculă. Dacă se introduce orice altceva se va afișa mesajul de eroare ”Optiune incorecta !”.3.) De ce credeţi că trebuie făcută de fiecare dată, în cazul C, iniţializarea suma0; ?Pentru că, atunci când utilizatorul mai introduce o dată opţiunea C, numerele se adună la ultima valoare pe care o reţinea variabila suma.

Temă:1. Implementaţi în pseudocod un program care citeşte două numere naturale n1 şi n2. Programul va afişa şi va rezolva următorul meniu:C – Citeşte cele două numereA – Afişează suma numerelorP - Afişează produsul numerelorM - Afişează maximul din cele două

2. Ce afișează următoarea secvență scrisă în pseudocod ?întreg a,b;începuta3;b2*a+7;ab MOD 8;cât timp (a+b MOD 12 !=9) execută

scrie 2*b-a;ab+1;ba+1;

sfârșit cât timp;sfârșit.

3. Ce afișează următoarea secvență scrisă în pseudocod ?întreg a,b,aux;începuta11;b22;

auxa; // Interschimbare intre variabilele a si bab;baux;

cât timp (b<a) executăpentru (auxb; aux<=a; auxaux+2)

scrie aux;sfârșit pentru;aa+1;bb+5;

sfârșit cât timp;sfârșit.

20

Page 21: elevi.infodorohoi.comelevi.infodorohoi.com/gim/CPP/SuportCurs VI-VIII.doc · Web viewSe va folosi o variabilă i care va lau toate valorile de la 100 până la 500. Pentru fiecare

Informatica pentru clasele VI-VIII - suport de curs, V. A.

Aplicația 7: Implementați în pseudocod un program citește un număr natural n, determină și afișează dacă acesta este palindrom sau nu. Un număr este palindrom dacă prin inversarea cifrelor lui se obține același număr (Exemple: 3; 22; 121; 7667; 34743).

Strategie:Se va folosi o variabilă n pentru a citi numărul introdus de utilizator. Se va mai folosi o variabilă

inv în care se va memora răsturnatul lui n. Pentru că, în timpul determinării răsturnatului vom elimina câte o cifră din n, vom memora separat într-o variabilă aux (variabilă auxiliară) valoarea acestuia. La final se vor compara aux cu inv; dacă coincid, atunci numărul citit este palindrom.

Determinarea răsturnatului: este preluată ultima cifră din n; aceasta va deveni prima cifră din inv; se elimină apoi ultima cifră a lui n. În continuare, se extrage ultima cifră din actualul n (penultima cifră din n-ul inițial). Aceasta va deveni a 2-a cifră din inv. Se elimină ultima cifră din n. Aceste secvențe se repetă până când n devine 0.

Exemplu:inv = 0; // la inceput, inainte de a prelucra cifre din n, inv este 0n=475;inv = 5; // se extrage ultima cifră din nn= 47;inv = 57; // se extrage ultima cifră din nn= 4;inv = 574; // se extrage ultima cifră din nn= 0;

Algoritmul:

întreg n,inv,aux;începutinv0;scrie ” n = ”;citeşte n;auxn;cât timp (n!=0)

invinv*10+n MOD 10;nn DIV 10;

sfarsit cât timp;daca (inv=aux)

scrie aux,” este palindrom.”; altfel

scrie aux,” nu este palindrom.”;sfarsit daca;sfârşit.

Temă: Realizați un program în pseudocod care afișează toate numerele palindrom formate din 3 cifre.

Aplicația 8: Implementați în pseudocod un program care afişează toate numerele divizibile cu 5 şi cu 7 din intervalul închis [100,500].

Strategie:Se va folosi o variabilă i care va lau toate valorile de la 100 până la 500. Pentru fiecare valoare a

lui i, se verifică dacă acesta este divizibil cu 5 sau cu 7. În caz afirmativ, se afișează valoarea lui i.

21

Page 22: elevi.infodorohoi.comelevi.infodorohoi.com/gim/CPP/SuportCurs VI-VIII.doc · Web viewSe va folosi o variabilă i care va lau toate valorile de la 100 până la 500. Pentru fiecare

Informatica pentru clasele VI-VIII - suport de curs, V. A.

Exemplu:i = 100; // se afișează 100 pentru că este divizibil cu 5i = 101; // nu se afișeazăi = 102; // nu se afișeazăi = 103; // nu se afișeazăi = 104; // nu se afișeazăi = 105; // se afișează 105 pentru că este divizibil cu 5 și cu 7i = 106; // nu se afișeazăi = 107; // nu se afișeazăi = 108; // nu se afișeazăi = 109; // nu se afișeazăi = 110; // se afișează 110 pentru că este divizibil cu 5i = 111; // nu se afișeazăi = 112; // se afișează 112 pentru că este divizibil cu 7…..

Algoritmul:

întreg i;începuti100;cât timp (i<=500)

dacă ( (i MOD 5 = 0) OR (i MOD 7 = 0) ) atunciscrie i,” ”;

sfarsit daca;ii + 1;

sfarsit cât timp;sfârşit.

Temă: Realizați un program în pseudocod care afișează numărul de elemente divizibile cu 3 și cu 5 din intervalul închis [300,8000].

Aplicația 9: Implementați în pseudocod un program care citește un număr natural d, determină și afișează dacă acesta este prim sau nu.

Strategie:Un număr este prim dacă se împarte exact la 1 și la el însuși. Dacă există vreun număr mai mare

de 1 și mai mic strict decât el la care se împarte exact atunci numărul nu este prim.Presupunem că numărul este prim. Verificăm apoi, dacă există vreun număr întreg din mulțimea

de numere {2,….d-1} la care se împarte exact. Dacă există vreun astfel de număr, atunci numărul nu mai este prim. Pentru acesata utilizăm o variabilă numită este_prim şi următoarea convenţie:

dacă este_prim = 1 atunci numărul este primdacă este_prim = 0 atunci numărul nu este prim

Algoritmul (versiunea naivă):

întreg d, este_prim;începuteste_prim1; // presupunem că numărul este prim şi căutăm proba contrarie

22

Page 23: elevi.infodorohoi.comelevi.infodorohoi.com/gim/CPP/SuportCurs VI-VIII.doc · Web viewSe va folosi o variabilă i care va lau toate valorile de la 100 până la 500. Pentru fiecare

Informatica pentru clasele VI-VIII - suport de curs, V. A.

pentru (i2;i<=d-1; ii+1)dacă (d MOD i = 0) atunci

este_prim0;sfarsit daca;

sfarsit pentru;daca (este_prim=1)

scrie d,” este numar prim”; altfel

scrie d,” nu este numar prim”;sfarsit daca;sfârşit.

Temă: Realizați un program în pseudocod care citește un număr natural p de la tastatură și afișează primul număr prim >=p.

Aplicația 10: Se citesc două numere df (deasupra fracţiei) şi sf (sub fracţie) reprezentând numărătorul şi numitorul unei fracţii. Să se afişeze fracţia simplificată.

Strategie:Fie fracţia 16/52. În acest caz, df are valoarea 16 iar sf valoarea 52. Se va mai folosi o variabilă

div (divizor) care se va iniţializa cu 2.Paşi în execuţia algoritmului:1) se iniţializează div cu 2 (div2;)2) atât timp cât df>=div şi sf>=div se execută pasul 33) dacă df se împarte exact la div şi sf se împarte exact la div atunci se execută pasul 4. Dacă nu sunt începlinite cele două condiții se execută pasul 5.4) se împart df la div şi sf la div. Se execută pasul 3.5) div crește cu o unitate (divdiv+1;) se execută apoi pasul 2.6) se afișează soluția df/sf

Algoritmul:

întreg sf,df,div;începutscrie ” numaratorul = ”;citește df;scrie ” numitorul = ”;citește sf;div2;cât timp ((div<=df) AND (div<=sf)) execută

dacă ((df MOD div = 0) AND (sf MOD div=0)) atuncidfdf MOD div;sfsf MOD div;

sfarsit daca;divdiv+1;

sfarsit cât timp;scrie ” Fractia simplificata este:”, df, ”/”,sf;sfârşit.

Temă: Realizați un program în pseudocod care adună două fracţii.

23

Page 24: elevi.infodorohoi.comelevi.infodorohoi.com/gim/CPP/SuportCurs VI-VIII.doc · Web viewSe va folosi o variabilă i care va lau toate valorile de la 100 până la 500. Pentru fiecare

Informatica pentru clasele VI-VIII - suport de curs, V. A.

Aplicația 11: Se citesc de la tastatură două numere întregi a și b. Să se determine și să se afișeze C.M.M.D.C. al lor.

Strategie:Atât timp cât cele două numere sunt diferite se scade din cel mai mare, cel mai mic. În final cele

două numere vor fi egale între ele și egale cu C.M.M.D.C.

Algoritmul:

întreg a,b;începutscrie ” a = ”;citește a;scrie ” b = ”;citește b;cât timp (a!=b) execută

dacă (a>b) atunciaa-b;

altfel // altfel inseamna ca b este mai mare strict decat abb-a;

sfarsit daca;sfarsit cât timp;scrie ” CMMDC = ”, a;sfârşit.

Aplicația 12: Să se afişeze al n-lea termen din şirul lui Fibonacci.Şirul lui Fibonacci are primii doi termeni 1, iar toţi termenii următori se obţin din adunarea ultimilor doi termeni anteriori.Şirul Fibonacci: 1,1,2,3,5,8,13,21,34,55,89,….

Strategie:Se știe că primii doi termeni au valoarea 1. Pe aceștia îi vom numi pu (penultimul) și au

(antipenultimul). Pe ultimul termen determinat îl vom numi u. Știm că ultimul termen se obține prin adunarea ultimilor doi termeni anteriori, deci u pu+au. Determinarea celui de-al n-lea termen începe de la determinarea celui de-al 3-lea termen deoarece primii doi sunt cunoscuți deja.

Algoritmul:

întreg i,u,pu,au,n ;începutscrie ” Indicele termenului de afisat n = ”;citește n;puau1; //initializarea primilor 2 termeni din sirpentru (i3;i<=n; ii+1) execută

upu+au;aupu;puu;

sfarsit pentru;scrie ” Cel de-al n-lea termen este ”, u;sfârşit.

24

Page 25: elevi.infodorohoi.comelevi.infodorohoi.com/gim/CPP/SuportCurs VI-VIII.doc · Web viewSe va folosi o variabilă i care va lau toate valorile de la 100 până la 500. Pentru fiecare

Informatica pentru clasele VI-VIII - suport de curs, V. A.

Temă: 1. Implementaţi un program în pseudocod care citeşte un număr natural n de la tastatură, îl validează şi afişează primii n termeni din şirul lui Fibonacci.2. Implementaţi un program în pseudocod care afişează al n-lea termen din şirul: 1,3,5,7,9,11,13,….Înainte de implementare se determină relaţia de recurenţă (relaţia dintre ultimul termen şi penultimul).3. Implementaţi un program în pseudocod care afişează primii n termeni din şirul: 2,4,8,16,32,64,…Înainte de implementare se determină relaţia de recurenţă.4. Implementaţi un program în pseudocod care citeşte coeficenţii a şi b ai unei ecuaţii de gradul I, determină şi afişează soluţia acesteia.5. Implementaţi un program în pseudocod care citeşte coeficenţii a, b şi c ai unei ecuaţii de gradul II, determină şi afişează soluţiile acesteia.

25

Page 26: elevi.infodorohoi.comelevi.infodorohoi.com/gim/CPP/SuportCurs VI-VIII.doc · Web viewSe va folosi o variabilă i care va lau toate valorile de la 100 până la 500. Pentru fiecare

Informatica pentru clasele VI-VIII - suport de curs, V. A.

Cap.IV. Limbajul C++IV.1. Noţiuni introductive

1.)Tipuri de dateNumele tipului de date Dimensiune

în biţiDomeniu de valori

Tipurile întregiunsigned char 8 0..255char 8 -128..127unsigned int 16 0..65536short int 16 -32768..32767int 16 -32768..32767unsigned long 32 0..4294967295long 32 -2147483648…2147483647

Tipurile realefloat 32 3.4x10-38 ... 3.4x1038

double 64 1.7x10-308 ... 1.7x10308

long double 80 3.4x10-4932 ... 1.1x104932

Variabilele sunt acele date care se pot modifica (îşi pot modifica valoarea) pe parcursul execuţiei programului.Constantele sunt acele date care nu se modifică pe parcursul execuţiei programului.

Exemplu de declarări de variabile:int a,b,c;unsigned char p;char d,c1=’M’;float aria;

Exemplu de constante:const cifmin=9;#define PI 3.14

2.)Operatori şi prioritatea de execuţie a acestoraPrioritate

Operatori Tip de operator

1. ( ) [ ] -> :: . apel, indexare, indirectare, acces C++, selector

2. ! ~ + - ++ -- * (conversie_tip) sizeof new delete unari3. .* ->* referințe C++4. * / % multiplicativi5. + - aditivi6. << >> de shiftare7. < <= >= > relaţionali8. == != de egalitate9. & ŞI binar10. ^ XOR binar (SAU exclusiv)11. | SAU binar12. && ŞI logic

26

Page 27: elevi.infodorohoi.comelevi.infodorohoi.com/gim/CPP/SuportCurs VI-VIII.doc · Web viewSe va folosi o variabilă i care va lau toate valorile de la 100 până la 500. Pentru fiecare

Informatica pentru clasele VI-VIII - suport de curs, V. A.

13. || SAU logic14. ?: condiţional15. = *= /= += %= &= ^= de atribuire16. , virgulă

3.)Operațiile de afișare și citire

Pentru afișarea pe ecran se folosește comanda cout.Pentru a citi date se folosește comanda cin.

Orice program scris în limbajul C++ trebuie să contință la început comenzi de inserare a bibliotecilor. O bibliotecă este un fișier care coține conversii în cod mașină a unor comenzi folosite în program și pot fi introduse folosind directiva #include.Exemplu de program în C++:

#include <iostream.h> int a,b,suma;int main( ){

cout<<”a=”; // afişează pe ecran a=cin>>a; //valoarea citita de la tastatura este salvata in variabila a (în zona de memorie alocata acesteia)cout<<”b=”; // afişează pe ecran b=cin>>a; //valoarea citita de la tastatura este salvata in variabila bsuma=a+b;cout<<”suma celor doua numere = ”<<suma;

return 1;}

Observaţii:1.La afişare, dacă expresia este introdusă între ghilimele atunci aceasta va fi afişată în acelaşi format în care se vede în program.2.Tot în cazul afişării, dacă expresia este introdusă fără ghilimele, atunci are loc o evaluare a expresiei şi se afizează rezultatul obţinut.

Temă:1.Folosind operatorii adecvaţi implementaţi un program în C++ care citește 3 numere reale și afișează media aritmetică a lor.

3.)Instrucțiunea if (instrucţiunea de decizie / intrucţiunea alternativă)

Sintaxă:if (conditie)

instrucţiune;

sau

if (conditie)instrucţiune1;

elseinstrucţiune2;

27

Page 28: elevi.infodorohoi.comelevi.infodorohoi.com/gim/CPP/SuportCurs VI-VIII.doc · Web viewSe va folosi o variabilă i care va lau toate valorile de la 100 până la 500. Pentru fiecare

Informatica pentru clasele VI-VIII - suport de curs, V. A.

Ex1: Implementaţi un program în C++ care determină valoarea maximă dintre 2 numere reale p şi q citite de la tastatură.

#include <iostream> //Folosind prima formă a instrucţiunii ifusing namespace std;int p,q,maxi;int main(){ cout<<"Dati numarul p = "; cin>>p; cout<<"Dati numarul q = "; cin>>q;

maxi=p; if (q>p) maxi=q; cout<<maxi<<" este mai mare"; return 0;}

#include <iostream> //Folosind a doua formă a instrucţiunii ifusing namespace std;int p,q;

int main(){ cout<<"Dati numarul p = "; cin>>p; cout<<"Dati numarul q = "; cin>>q;

if (p>q) cout<<p<<" este mai mare"; else cout<<q<<" este mai mare"; return 0;}

Temă:1. Ce se afişează dacă pentru p se introduce valoarea 17 iar pentru q tot valoarea 17 ? Care din cele 2 ramuri va fi urmată (considerând al doilea program) ? De ce ?2. Implementaţi un program în C++ care citeşte 3 numere întregi de la tastatură şi afizează câte sunt pare şi câte sunt impare.

4.)Instrucțiunea case (instrucţiunea de selecţie)

Sintaxă:

28

Page 29: elevi.infodorohoi.comelevi.infodorohoi.com/gim/CPP/SuportCurs VI-VIII.doc · Web viewSe va folosi o variabilă i care va lau toate valorile de la 100 până la 500. Pentru fiecare

Informatica pentru clasele VI-VIII - suport de curs, V. A.

switch(expresie) {case v1: instrucțiune1;

break;case v2: instrucțiune2;

break;…..

case vn: instrucțiunen; break;

default: alta_intrucțiune;}

Cu v1,v2,…vn valori constante. Se evaluează expresie şi se compară rezultaul obţinut cu fiecare din valorile v1,v2,… vn. Dacă rezultatul obţinut în urma evaluării este egal cu una din aceste valori, atunci se execută instrucţiunea din dreptul acelei valori.Dacă rezultatul expresiei este diferit de toate valorile v1, v2,… vn atunci se execută alta_instrucţiune.

Observaţie: Pentru orice valoare v1, v2,… vn (şi în cazul default) pot fi executate mai multe instrucţiuni cu necesitatea ca după ultima instrucţiune să fie introdus break.

Exemplu: Se cunosc datele de intrare: a are valoarea 123 şi b are valoarea 321. Implementaţi şi rezolvaţi următorul meniuMENIU1 – Afişează suma celor 2 numere2 – Afişează produsul celor 2 numere3 – Afişează valoarea minimă dintre cele douăIntroduceti optiunea dorita

#include <iostream>#define a 123#define b 321using namespace std;

int opt; // Optiunea utilizatorului

int main(){ cout<<"\t\t M E N I U \n"; cout<<"1 Afiseaza suma celor 2 numere \n"; cout<<"2 Afiseaza produsul celor 2 numere \n"; cout<<"3 Afiseaza valoarea minima dintre cele doua \n"; cout<<"Introduceti optiunea dorita: \n"; cin>>opt;

switch (opt) { case 1: cout<<"suma este ="<<a+b; break; case 2: cout<<"Produsul este ="<<a*b; break; case 3:

29

Page 30: elevi.infodorohoi.comelevi.infodorohoi.com/gim/CPP/SuportCurs VI-VIII.doc · Web viewSe va folosi o variabilă i care va lau toate valorile de la 100 până la 500. Pentru fiecare

Informatica pentru clasele VI-VIII - suport de curs, V. A.

cout<<"Valoarea minima este este ="; if (a<b) cout<<a; else cout<<b; break; default: cout<<"Optiunea incorecta!!!!"; } return 0;}

5.)Instrucțiunea while (structura repetitivă cu test iniţial)

Sintaxă:

while (conditie)instructiune;

Cât timp este adevărată conditie se executa instructiune dupa care se revine la verificarea conditiei. Instructiunea se încheie în momentul în care conditie nu mai este indeplinita.

Exemplu: Implementaţi un program care afişează primele 37 de numere pare folosind instrucţiunea while.#include <iostream>using namespace std;

int numar=0;

int main(){ while (numar<37) { cout<<numar*2<<" "; numar=numar+1; } return 0;}

Observaţia 1: Se impune o atenţie deosebita condiţiei introduse. De exemplu, din neatenţie poate fi executată o buclă infinită (una sau mai multe instrucţiuni care se execută fără să se mai oprească deoarece condiţia este îndeplinită tot timpul).Exemplu de buclă infinită:

numar=17; while (numar!=0) cout<<numar<<" ";

Observaţia 2: Nu introduceţi semnul ; exact după paranteza închisă de la condiţie. Un astfel de caz impune executarea intrucţiunii vide cât timp este îndeplinită condiţia.Exemplu: numar=17; while (numar!=0);

30

Page 31: elevi.infodorohoi.comelevi.infodorohoi.com/gim/CPP/SuportCurs VI-VIII.doc · Web viewSe va folosi o variabilă i care va lau toate valorile de la 100 până la 500. Pentru fiecare

Informatica pentru clasele VI-VIII - suport de curs, V. A.

care este tot o buclă infinită; de această dată, cât timp numar este diferit de 0 se execută „nimic” (instrucţiunea vidă).

Temă:1. Implementaţi în C++ un program care afișează toate numerele naturale în ordine crescătoare a căror sumă este mai mică de 10000.2. Implementaţi în C++ un program care afișează toate numerele naturale formate din 2 cifre care au suma cifrelor=10.

3. Implementaţi în C++ un program care afișează toate numerele naturale formate din 3 cifre nenule care au suma cifrelor=15, prima cifră este mai mică sau egală cu a doua cifră şi a doua cifră este mai mică sau egală cu a treia cifră.

6.)Instrucțiunea do-while (structura repetitivă cu test final)

Sintaxă:do

instrucţiune;while (conditie);

Se execută instrucţiune. Dacă conditie este adevărată se reexecută instrucţiune. Bucla se reia până în momentul în care condiţie nu mai este îndeplinită.

Exemplu: Implementaţi un program care afişează primele 37 de numere pare folosind instrucţiunea while.#include <iostream>using namespace std;

int numar=0;

int main( ){ do {

cout<<numar*2<<" "; numar=numar+1; } while (numar<37);

return 0;}

Temă: Problemele 1,2 şi 3 de la instrucţiunea while.

7.)Instrucțiunea for (structura repetitivă cu contor)

Sintaxă:for (expr1;expr2;expr3)

instrucţiune;

cu: expr1 realizează o iniţializare; expr2 reprezintă condiţia de continuitate ( dacă expr2 este adevărată atunci se execută instrucţiune)

31

Page 32: elevi.infodorohoi.comelevi.infodorohoi.com/gim/CPP/SuportCurs VI-VIII.doc · Web viewSe va folosi o variabilă i care va lau toate valorile de la 100 până la 500. Pentru fiecare

Informatica pentru clasele VI-VIII - suport de curs, V. A.

expr3 de obicei modifică valoarea variabilei iniţializate în expr1.Ordinea operaţiilor este: se execută iniţializarea (adică expr1). Acest lucru are loc o singură dată, la început. Apoi se evaluează expr2. Dacă aceasta este adevărată atunci se execută instrucțiune. Dacă nu este adevărată atunci se părăsește instrucțiunea for.

După ce se execută instrucţiune, se execută expr3, apoi se verifică dacă expr2 este adevărată – dacă da, atunci se execută din nou instrucţiune şi bucla se reia până când expr2 nu mai este îndeplinită.Altfel spus: expr1 => expr2 => instructiune (daca expr2 este adevarata) => expr3 =>

expr2 => instructiune (daca expr2 este adevarata) => expr3 =>expr2 => instructiune (daca expr2 este adevarata) => expr3 =>…. Până când expr2 nu mai este adevărată

Exemplul 1: Implementaţi un program are afişează toate numerele naturale cuprinse între 100 şi 200.#include <iostream>using namespace std;

int i;

int main(){ for (i=100;i<=200;i=i+1) cout<<i<<" "; return 0;}

Exemplul 2: Implementaţi un program are afişează toate numerele naturale formate din 2 cifre distincte.#include <iostream>using namespace std;

int i,j;

int main(){ for (i=1;i<=9;i=i+1) for (j=0;j<=9;j=j+1) if (i!=j) cout<<i<<j<<" "; return 0;}

Temă: Aceleaşi 3 aplicaţii de la instrucţiunea while.

IV.1.1 Aplicaţii

1.Se citeşte un număr natural d. Să se afişeze dacă acesta este pătrat perfect (dacă poate fi scris ca un număr ridicat la puterea a 2-a).Indicaţii: Pentru a extrage radicalul din d se foloseşte funcţia sqrt(d) şi directiva #include<math>

2. Se citeşte un număr natural d. Să se calculeze d! (d factorial).Exemplu: dacă d=4 trebuie calculat 4*3*2*1

3. Rezolvarea ecuației de gradul I.

32

Page 33: elevi.infodorohoi.comelevi.infodorohoi.com/gim/CPP/SuportCurs VI-VIII.doc · Web viewSe va folosi o variabilă i care va lau toate valorile de la 100 până la 500. Pentru fiecare

Informatica pentru clasele VI-VIII - suport de curs, V. A.

4. Se citesc p numere naturale. Să se afișeze divizorii fiecărui număr în parte.

5. Calculați suma cifrelor unui număr întreg x citit de la tastatură.

6. Să se calculeze a la puterea b. Ambele numere sunt naturale.

7. Se citește un număr natural n de la tastatură. Să se afișeze cifra minimă și cifra maximă din acesta.

8. Se citeste un numar natural cu cel mult 9 cifre. Sa se determine de cate ori apare ultima cifra in numarul citit.

9. Se citește un număr natural f. Să se afișeze dacă este prim sau nu.

10. Se citește un număr natural f. Să se afișeze dacă este palindrom sau nu.

11. Să se afișeze primele n numere prime, n număr natural citit de la tastatură.

12. Să se descompună în factori primi un numar natural n și să se afișeze factorii și puterile la care apar ei în descompunere.

13. Să se determine cel mai mic numar prim mai mare decât un numar natural n citit de la tastatura.

14. Să se afişeze toate numerele prime din intervalul [a,b] cu a și b citite de la tastatură.

IV.2. Fişiere textIV.2.1. Citirea din fişier

Aplicaţie: Se citesc 2 numere întregi a şi b din fişierul intrare.txt. Să se afişeze pe ecran toate numerele întregi dintre cele două numere.

#include <iostream>#include <fstream>

using namespace std;ifstream f("intrare.txt"); //f- descriptor de fisier pentru citireint minim, maxim, i, a,b;

int main (){ f>>a>>b; // citire din fisier if (a>b) { minim = b; maxim = a; } else{ minim = a; maxim = b;

33

Page 34: elevi.infodorohoi.comelevi.infodorohoi.com/gim/CPP/SuportCurs VI-VIII.doc · Web viewSe va folosi o variabilă i care va lau toate valorile de la 100 până la 500. Pentru fiecare

Informatica pentru clasele VI-VIII - suport de curs, V. A.

}

for (i=minim;i<=maxim;i++) cout<<i<<" "; f.close( ); //se inchide fisierul intrare.txt return 0;}

Tema:1.Implementaţi un program in C++ care citeste un numar intreg n din fisierul date.in . Programul va afişa suma cifrelor sale impare.2.Implementaţi un program in C++ care citeste trei numere intregi p, q şi r. n din fisierul date.in . Programul va afişa valoarea minimă şi valoarea maximă din cele 3.

IV.2.2. Scrierea în fişier

Aplicaţie: Se citesc 2 numere întregi a şi b de la tastatură. Să se în fişierul date.out, una sub alta suma şi produsul celor două numere.

#include <iostream>#include <fstream>

using namespace std;

ofstream g("date.out"); //g- descriptor de fisier pt scriereint a,b,suma;long produs;

int main ( ){ cout<<"a="; cin>>a; cout<<"b="; cin>>b; suma=a+b; produs=a*b; g<<"Suma este "<<suma<<endl; g<<"Produsul este "<<produs<<endl; g.close(); //se inchide fisierul cout<<"Datele au fost salvate in fisierul DATE.OUT" return 0;}

Tema:Implementaţi un program care salvează în fişierul date.txt toate numerele divizibile cu 3 sau cu 5 din intervalul [200,1500].

IV.2.3. Citirea dintr-un fişier şi scrierea în alt fişier34

Page 35: elevi.infodorohoi.comelevi.infodorohoi.com/gim/CPP/SuportCurs VI-VIII.doc · Web viewSe va folosi o variabilă i care va lau toate valorile de la 100 până la 500. Pentru fiecare

Informatica pentru clasele VI-VIII - suport de curs, V. A.

Aplicaţie: Se citesc coeficenții ecuației de gradul 2 din fișierul date.in . Salvați ecuațiile soluției în fișierul date.out .

#include <iostream>#include <cmath> //Pentru functia SQRT = extrage radicalul#include <fstream>using namespace std;

ifstream f("date.in"); //f- descriptor de fisier din care se face citireaofstream g("date.out"); //g- descriptor de fisier in care se face scriereafloat a,b,c,delta,x1,x2;

int main (){ f>>a>>b>>c; delta=b*b-4*a*c; if (delta<0) g<<"Ecuatia nu are solutii"<<endl; else if (delta==0) g<<"Solutia ecuatiei este x="<<-b/(2*a); else // daca delta >0 { x1=(-b+sqrt(delta))/(2*a); x2=(b+sqrt(delta))/(2*a); g<<"x1 = "<<x1<<endl; g<<"x2 = "<<x2; }

f.close(); //se inchide fisierul g.close(); //se inchide fisierul cout<<"Datele au fost salvate in fisierul DATE.OUT"; return 0;}

Tema: Se citește din fișierul date.in un numar intreg n. Să se salveze în fișierul date.out descompunerea sa în factori primi.

IV.3. Tablouri unidimensionale

Un tablou unidimensional (vector) este o mulțime de elemente care are un nume (numele vectorului) și o dimensiune. Accesul la unul din elemente se face prin intermediul indicelui (poziției pe care se află acel element în vector).

Ex: fie V, numele vectorului format din următoarele elemente (cele de pe primul rând)7 5 8 9 3 -12 15 329

i= 1 2 3 4 5 6 7 8

i reprezintă indicele (poziția) elementului din vector.

35

Page 36: elevi.infodorohoi.comelevi.infodorohoi.com/gim/CPP/SuportCurs VI-VIII.doc · Web viewSe va folosi o variabilă i care va lau toate valorile de la 100 până la 500. Pentru fiecare

Informatica pentru clasele VI-VIII - suport de curs, V. A.

De exemplu, pentru a ne referi la elementul cu valoarea 9 care se află în vectorul V pe poziția a 4-a vom folosi construcția V[4]. Elementul cu valoarea 15 este accesat prin V[7].

Aplicaţie: Se citeşte de la tastatura un număr n reprezentând dimensiunea vectorului V. Se citesc apoi cele n elemente ale vectorului. Programul va afişa elementele în ordinea inversă citirii lor precum şi suma elementelor din vector.

36


Recommended