Sunteți pe pagina 1din 7

Lecia 1 - Elemente de baz ale limbajului C++. Lucrul cu fiiere text.

Clasa a V-a
Etapele rezolvrii unei probleme cu ajutorul calculatorului:
1. Analiza problemei, se refera la:

identificarea datelor de intrare si a datelor de iesire


stabilirea operatiilor care trebuie efectuate asupra datelor de intrare, pentru a
obtine datele de iesire

2. Conceperea algoritmului de rezolvare a problemei, se refera la descrierea


operatiilor pe pai
(descrierea poate fi facut n pseudocod sau prin schema logica)
3. Implementarea algoritmului ntr-un limbaj de programare, se refera la
scrierea algoritmului
ntr-un limbaj de programare (de ex. C++), ntr-un mediu de programare specific (de
ex. CodeBlocks)->se obtine astfel codul surs al programului care este compilat i
transformat de catre mediul de programare n cod executabil, daca este corect
sintactic. Erorile de sintaxa sunt semnalate de mediul de programare i trebuie
neaparat corectate.
Erorile de logica NU se vad la compilare ci la rezultatele produse pe diverse teste.
4. Verificarea corectitudinii algoritmului acest lucru nseamna executarea
programului pentru
diferite seturi de date de intrare.
Construii-va teste ct mai variate i ncercai sa verificati si cazurile speciale (de
exemplu N=0)
5. Analiza eficienei (complexitatii) algoritmului eficienta unui algoritm are n
vedere att
numarul de operatii executate de acesta ct si spatiul de memorie necesar a fi
ocupat pe durata
executiei algoritmului.
Limbajul C++
//.... comentariu pana la sfarsitul liniei curente
/* .... */ comentariu pe mai multe linii
Structura unui program C/C++

Lecia 1 - Elemente de baz ale limbajului C++. Lucrul cu fiiere text. Clasa a V-a
//includerea fisierelor header cu functii predefinite utilizate in program
#include <iostream> //pentru citire-scriere de la /la consola
//declararea constantelor simbolice

using namespace std;


//declarari de variabile globale
//definitii functii utilizator
int main()
{ //declarari variabile locale
//instructiuni care implementeaza algoritmul de rezovare al problemei
return 0;
}
Materia prima cu care lucreaza programele sunt: date si expresii.
Datele pot fi: a) variabile
O variabila are alocata o zona de memorie, are un nume, un tip si o valoare atasata.
ATENTIE! Orice variabila trebuie declarata nainte de a fi utilizata n program.
Initializati varibilele explicit ct mai aproape de locul n care le utilizati pentru a
citi, a ntelege si a
depana mai usor codul sursa
b) constante sunt date care nu-si schimba valoarea pe parcursul executiei
programului.
Declararea unei constante simbolice in C++: #define NMAX 1000000
Dupa tipul lor, datele pot fi: date numerice si date de tip caracter.
Tipuri de date simple (o singura valoare n zona de memorie alocata):
Tip

Dimensiune memorie
ocupata

Domeniu de valori

int

4 octeti

aprox. -2*109 .. 2*109

Lecia 1 - Elemente de baz ale limbajului C++. Lucrul cu fiiere text. Clasa a V-a
long

4 octeti

aprox. -2*109 .. 2*109

short int
long long

2 octeti
8 octeti

-32768 .. 32767
aprox. -9*1017 .. 9*1017

unsigned
int,unsigned long
unsigned long long
float

4 octeti

aprox. 0 .. 4*109

8 octeti
4 octeti

double

8 octeti

long double

10 octeti

char

1 octet

aprox. 0 .. 18*1017
Valoare numerica cu zecimale, simpla
precizie (6 )
Valoare numerica cu zecimale, dubla
precizie (10 )
Valoare numerica cu zecimale, dubla
precizie
Caractere cu coduri ASCII cuprinse
ntre 0 si 255
(ex: A are codul 65, a are codul 97,
0 are codul 48)

Operatii posibile cu variabile de tip numeric: * (nmultire) , / (div, ctul


mpartirii), % (mod, restul
mpartirii), + (adunare), - (scadere)
Ex: 13 / 5 este 2 iar 13 % 5 este 3 (restul mpartirii lui 13 la 5)
N % 10 este ultima cifra a lui N (cifra unitatilor)
Expresiile
O expresie este formata dintr-o succesiune de operanzi intercalati de operatori, care
respecta reguli
sintactice si de asociere.
ex: 2*(a+1)-b este o expresie aritmetica cu operatorii *, +, - (evaluarea ei produce o
valoare
numerica)
Expresie de tip caracter: c + a A (transforma caracterul litera mare memorat in
variabila c din litera
mare in litera mica)
Operatii implementate in C++
n cadrul algoritmului, cu datele putem efectua:
operatia de citire / scriere Implementare C++
Citire de la tastatura (fisier
standard de intrare)

Citire din fisier text

Lecia 1 - Elemente de baz ale limbajului C++. Lucrul cu fiiere text. Clasa a V-a
#include <iostream>
using namespace std;
cin >> var1 >> var2 >> ...;
unde var1, var2,... sunt variabile
declarate
anterior in program
Scriere pe ecran
cout << exp1 << exp2 << ...;

#include <fstream>
using namespace std;
ifstream fin(......);
ofstream fout(......);
fin >> var1 >> var2 >> ...;

Scriere in fisier text


fout << exp1 << exp2 << ...;

unde exp1, exp2, ... sunt expresii ce se


vor afisa
in ordine
cout << \n;
\n determina trecerea la o linie noua
operatia de atribuire permite efectuarea de calcule; este operatia prin care o
variabila primeste o
valoare constanta sau rezultatul evaluarii unei expresii.
ATRIBUIREA NU ESTE EGALITATEA MATEMATICA!!!
variabila = expresie;
Intotdeauna, in partea stanga a unei atribuiri trebuie sa fie o variabila si nu o
expresie (variabila are
memorie alocata, expresia NU are)
Ex: a = b + 1; nu este echivalent cu b + 1 = a;

operatia de decizie n functie de ndeplinirea sau nendeplinirea unei conditii,


algoritmul / programul se ramifica

if (expresie logica)
//instructiuni ramura DA
else //instructiuni ramura NU
Expresiile logice au rezultat valori de adevar (valoare nenula adevarat, valarea 0
fals)
Operatori relationali: <, <=, >, >=

Lecia 1 - Elemente de baz ale limbajului C++. Lucrul cu fiiere text. Clasa a V-a
Operatori de egalitate: == (egal), != (diferit)
Operatori logici: ! (negatia), && (si, conjunctia), || (sau, disjunctia)
Regulile lui de Morgan
!(E1 && E2) = !(E1) || !(E2)
!(E1 && E2) = !(E1) || !(E2)
Ex: a) x

[a,b] <=> (x>=a && x<=b)

b) x este un an bisect (divizibil cu 4 si nu este multiplu de 100 sau divizibil cu 400)


(x % 4 == 0 && x % 100 != 0) || (x % 400 == 0)
1900 nu este bisect desi se divide cu 4; 1920 si 2000 sunt ani bisecti

Instructiuni repetitive:
while (expresie logica)
//instructiuni

do {

for (i = exp_init; i <=


exp_fin; i++)

//instructiuni
// instructiuni
} while (expresie logica);

Aplicatii
1 Paritate(pbinfo.ro)

S se scrie un program care citete de la tastatur un numr natural i verific dac numrul este
par sau impar. Programul va citi de la tastatur un numr natural n. Programul va afia pe ecran
mesajul n este par, dac numrul citit n este par, respectiv mesajul n este impar n caz
contrar.

n<1000000000

Intrare
2012

Ieire
2012 este par

Lecia 1 - Elemente de baz ale limbajului C++. Lucrul cu fiiere text. Clasa a V-a

2. Interval2 (pbinfo)

Se dau trei numere naturale a b x. S se verifice dac numrul x aparine intervalului [a,b].
Programul citete de la tastatur numerele a b x.
Programul afieaz pe ecran mesajul DA, dac numrul x aparine intervalului [a,b], respectiv NU
n caz contrar.
Restricii i precizri

0 a,b,x 1000

a b

3. Fisierul numere.in contine doua numere natural a si b . Sa se afiseze in fisierul


numere.out cele doua numere a , b si suma lor.
numere.in

numere.out

20
1200

20
1200
Suma =1400
Tema pentru acasa

http://varena.ro problemele: cangur


http://campion.edu.ro problemele: cifra1, xyz (sau multimi)
http://pbinfo.ro, problemele : scadere2,asii,uciv,cifre,nrcif,paritate
Trimiteti solutiile pe adresa silvia.grecu@yahoo.com sub forma unei arhive denumita
cu numele vostru.

Creati arhiva urmnd pasii:


1. Creati un folder cu numelevostru_tema1
2. Copiati una cte una sursele main.cpp n acest folder si redenumiti-le cu numele
problemei

Lecia 1 - Elemente de baz ale limbajului C++. Lucrul cu fiiere text. Clasa a V-a
3. Arhivati acest folder pastrand numele arhivei identic cu al folderului
4. Atasati arhiva la email-ul pe care l trimiteti la adresa
Trimiteti solutiile pe adresa silvia.grecu@yahoo.com
Termen: 15 octombrie 2016, ora 21

SUCCES!

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