PDA

View Full Version : [programare] c/c++



~TraNda~
16-07-2015, 04:21 AM
C/C++

* Algoritm

- Algoritmul reprezinta rezolvarea etapizata, in pasi mici, elementari, a unei probleme.
Scopul folosirii algoritmului este aplicarea lui la o serie pe probleme care au aceeasi metoda de rezolvare; adica, pentru orice dateale problemei, algortimul trebuie sa se incheie cu un raspuns.
Un exemplu in acest sens este acuatia de gradul I. Exista o infinitate de ecuatii de gradul I dar toate se subscriu aceleiasi ecuatii generice A*X+B=0. Algoritmul trebuie sa rezolve aceasta ecuatie generica pentru a obtine rezultate corecte pentru intreaga clasa se ecuatii de gradul I sau sa anunte eroarea in cazul in care simbolul A ar avea valoarea 0.
- Caracteristici
Deducem de aici o serie de proprietati pe care un algoritm corect trebuie sa le indeplineasca:

sa aiba caracter de generalitate: sa rezolve o intreaga clasa de probleme de acelasi gen (pentru orice date de intrare) .
sa aiba finitudine: sa ofere un raspuns la problema si sa se incheie in timp util.
sa fie clar: calculul/etapele sa fie descriese intr-o maniera fara dubii.


DATE DE INTRARE -> ALGORITM -> DATE DE IESIRE
- Reprezentarea algoritmilor

secventa : pasii sa se execute unul dupa altul.


testul : in cazul in care rezolvarea trebuie sa raspunda unei intrebari sa putem aplege traseul logic ce trebuie urmat
repetitia : sa putem repeta o anumita secventa daca algoritmul o cere

De asemeni, pentru exprimarea algoritmilor s-au incercat metode care sa poata fi intelese de toti. Iata cateve dintre ele:

scheme logice: metoda grafica care specifica traseul ce trebuie urmat
pseudocod: un set de reguli de scriere , in principiu in limba engleza; pt elevi s-a simplificat, folosindu-se aceleasi notatii si limba romana
limbaj de programare: mult mai strict ca exprimare dar folosind aceleasi concepte.


** C++
- C++ (pronunțat „C plus plus„) este un limbaj de programare general, compilat. Este un limbaj multi-paradigmă, cu verificarea statică a tipului variabilelor ce suportă programare procedurală, abstractizare a datelor, programare orientată pe obiecte. În anii 1990, C++ a devenit unul din cele mai populare limbaje de programare comerciale, rămânând astfel până azi. Succesul extraordinar pe care il are limbajul C++ a fost asigurat de faptul ca a extins cel mai popular limbaj al momentului, C. Programele scrise in C functioneaza si in C++, si ele pot fi transformate in C++ cu eforturi minime.
- INSTRUCTIUNI

Instructiunea compusa
-
{
instr 1;
instr 2;
.......
instr n;
}
Unde instr 1, instr 2, ..., instr n pot fi oricare dintre instructiunile limbajului de programare

Instructiunea de atribuire
-
var=expresi (exemplu : X = 10 //variabilei X i se atribuie valoarea 10)
Unde "=" se numeste operator de atribuire.
Modul de executie:
-> se evalueaza expresia aflata la dreapta semnului de atribuire si rezultatul obtinut este memorat in variabila aflata la stanga semnului de atribuire.
OBS!
Variabila si expresia utilizata in cadrul unei instructiuni de atribuire trebuie sa aibe acelasi tip de date sau sa fie de tipuri compatibile de date.

Ex::
int x,y;
float m,n;
x=2; x=2
y=x+2; y=4
m=x/y; m=0
n=m*2+x-5; n=-3
x=y+12; y=16
x=(m>n); x=1
+ => adunare.
- => scadere.
/ => DIV. (partea intreaga a unui numar impartit la alt numar. Ex : 1234 / 10 = 123 [1234 impartit la 10 ne da 123,4 , deci ne va da 123!])
% => MOD. (partea zecimala a unui numar impartit la alt numar. Ex : 1234 % 10 = 4 [1234 impartit la 10 ne da 123,4 , deci ne va da 4!])
== => Verifica daca doua variabile sunt egale.

Instructiunea de citire
- OBS!
Functiile pentru citirea si afisare datelor se afla in biblioteca iostream (#include <iostream>)
Atunci cand un program utilizeaza cel putin o instructiune de citire sau afisare programul trebuie sa contina in mod obligatoriu in sectiunea de declarare biblioteci linia: #include <iostream>
Forma generala a instructiunii de citire este urmatoarea:

cin>>var1 (exemplu : cin >> X)
Instructiunea de citire se efectueaza astfel:
- se intrerupe executia programului si se asteapta introducerea unui nr de valori "=" cu numarul variabilelor aflate in cadrul instructiunii cin.
- valorile introduse sunt memorate pe rand in variabila din linia de instr.
OBS!
Valorile introduse trebuie sa fie de acelasi tip de date ca si tipurile de date aflate in cadrul instructiunii de citire.

Ex:
#include <iostream>
using namespace std;
int main()
{
int a,b;
cin>>a>>b; // <=> cin>>a; cin>>b;
return 0;
}

Instructiunea de scriere
-
cout<<var1 (Exemplu : cout << 1234 => se va afisa pe ecran "1234")
Modul de executie:
- se evalueaza expresiile care apar in cadrul liniei de instr. si valorile obtinute se afiseaza pe ecran.
In cadrul unei instrucituni cout se pot afisa si caractere sau siruri de caractere. In limbajul C++ se reprezinta incadrate intre apostrofuri, iar sirurile de caractere se reprezinta intre ghilimele.
Ex: Se citesc de la tastatura 2 nr intregi a si b. Scrieti un program care afiseaza suma si produsul celor 2 nr.

#include <iostream>
using namespace std;
int main()
{
int a,b;
cout<<"Introduceti valoarea lui a "; cin>>a;
cout<<"Introduceti valoarea lui b "; cin>>b;
cout<<a+b<<" "<<a*b;
return 0;
}
In cadrul instructiunii cout pot sa apara endl care realizeaza saltul la linie noua a cursorului.

Ex:
cout<<a+b<<endl;
cout<<a*b;

Instructiunea de decizie
-
a) if(expresie)
instr1;
else
instr2;

b) if(expresie)
instr1;
Modul de executie:
- se evalueaza expresia si daca aceasta este diferita de 0 se efectueaza instructiunea 1.
- in cazul in care valoarea expresiei este egala cu 0 atunci:
a) daca instructiunea if este in forma a) se efectueaza instructiunea 2.
b) daca instructiunea if este in forma b) atunci se executa instructiunea care urmeaza in cadrul algoritmului dupa instructiunea de decizie.
Ex: Se citesc 2 nr intrgi a si b. Scriei un program C++ care afiseaza valoarea maxima dintre cele 2 nr citite.

#include <iostream>
using namespace std;
int main()
{int a,b;
cout<<"Introduceti a= "; cin>>a;
cout<<"Introduceti b= "; cin>>b;
if(a>b)
cout<<a<<" este mai mare ca "<<b;
else
cout<<b;
return 0;
}

Instructiunea repetitiva cu nr cunoscut de pasi(for)
-
for(expresie_initializare; exp_test; exp_incrementare/decrementare)
instructiune;
Modul de executie:
- se efectueaza expresia de initializare si se valueaza expresia de test. Dca rezultatul expresiei de test este diferit de 0(adica este adevarata) se efectueaza instructiunea subordonata instructiunii for.
- dupa efectuarea instructiunii subordonate se efectueaza expresia de incrementare sau de decrementare, si se evalueaza din nou expresia de test. Daca valoarea acesteia este diferita de 0 se efectueaza din nou instructiunea subordonata secventii for si se efectueaza expresia de incrementare sau de decrementare.
- algoritmul se continua pana cand valoarea expresiei de test este egala cu 0(este falsa).
OBS!
Instructiunea subordonata secventei for poate fi instructiune simpla sau compusa.
Ex: Se citeste n nr nat. Scrieti un prgram care calculeaza suma primelor n nr naturale.
S=1+2+3+...+n, n∈N

#include <iostream>
using namespace std;
int main()
{int n,S,i;
cin>>n;
S=0;
for(i=1;i<=n;i++)
S=S+i;
cout<<S;
return 0;
}

Instructiunea repetitiva cu test initial(while)
-
while(expresie)
instructiune;
Modul de executie:
- se evalueaza expresia si daca aceasta este diferita de 0 se efectueaza instructiunea subordonata. Dupa efectuarea instructiunii se evalueaza din nou expresia si daca aceasta este diferita de 0 se efectueaza din nou instructiunea subordonata. Algoritmul se reia cat timp valoarea expresiei este diferita de 0.
- in cazul in care valoarea expresiei este egala cu 0, se termina de efectuat instructiunea while si se efectueaza instructiunea care urmeaza in cadrul programului dupa instructiunea while.
Ex:
n∈N
S=1+2+...+n.

#include <iostream>
using namespace std;
int main()
{int n,i,S=0;
cin>>n;
i=1;
while(i<=n)
{
S=S+i;
i++;
}
cout<<S;
return 0;
}

Instructiunea repetitiva cu test final(do-while)
-
do
{
instructiune;
}while(expresie);
Modul de executie:
- se efectueaza instructiunea subordonata si apoi se evalueaza expresia, daca expresia este diferita de 0 atunci se efectueaza din nou instructiunea subordonata.
- dupa efectuarea instructiunii se evalueaza din nou expresia, algoritmul reluandu-se cat timp expresia este diferita de 0.
- in cazul in care valoarea expresiei este egala cu 0 se termina de efectuat instructiunea do-while si se executa instructiunea care urmeaza in cadrul programului dupa aceasta.
Ex:
n∈N
S=1+2+...+n;

#include <iostream>
using namespace std;
int main()
{int n,i,S=0;
cin>>n;
i=1;
do
{
S+=i;
i++;
}
while(i<=n);
cout<<S;
return 0;
}


Puteti lucra in CodeBlocks. Se gaseste foarte usor pe internet.
Link Download CodeBlocks : <b>You have to register to ba able to see this link</b>

Puteti incerca prima porblema mai usoara :
Se da un numar n natural. Sa se calculeze si sa se afiseze pe ecra suna cifrelor numarului n.

#include <iostream> //bibiloteca
using namespace std;
int n,s; //declararea variabilelor
int main ()
{
cout << "n=" ; cin >> n ; //citirea numarului n;
while(n>0) //instructiunea se va executa cat timp n este mai mare ca 0.
{
s=s+n%10; //variabilei s i se atribuie vechea valoare a lui s plus ultima cifra a lui n (vedeti sus ce inseamna % [MOD])
n=n/10; //variabilei n i se atribuie valoarea lui n fara ultima cifra (vedeti sus ce inseamna / [DIV])
}
cout << "s=" << s; //afisam pe ecran suma cifrelor numarului n care este memorata in variabila s.
return 0;
}
Exemplu :
n = 1234
s = 0
Verifica daca n este mai mare ca 0 (este) , s devine 0 + 4 . n devine 123 . Verifica daca n este mai mare ca 0 (este), s devine 4 + 3 . n devine 12 . Verifica daca n este mai mare ca 0 (este) , s devine 7 + 2. n devine 1 . Verifica daca n este mai mare ca 0 (este) , s devine 9 + 1. n devine 0 . Verifica daca n este mai mare ca 0 (nu este) . Ciclul s-a oprit. Se afiseaza pe ecran s=10

Sper ca va este de folos :) . Accept orice fel de critica ;) .

Pop Alexandra
21-03-2017, 10:16 PM
Multumesc! Foarte usor de urmarit pasii. Java sau Python stii? :D
_________________________________

~TraNda~
21-03-2017, 10:23 PM
Multumesc! Foarte usor de urmarit pasii. Java sau Python stii? :D

Nu am studiat niciunul dintre cele doua limbaje de programare mentionate de tine mai sus, dar nu e greu de studiat :)

~Wolf~
21-03-2017, 10:52 PM
Opinii:
1.Foarte interesant asta.Am citit tot chiar dacă nu îmi plac programările.
2. Puțină curiozitate:la ce folosește și în ce program se fac astea(notepad, etc. )?

Critici:
1. Mici greșeli gramaticale, dar probabil erai obosit :)

Întrebare bonus(te rog să mă ajuți)
Mereu când intru pe internet, după ce accesez un site îmi apare câte o filă, chiar și porno fără să o accesez. Cum pot scăpa de ele, să nu îmi mai apară(AdBlock nu funcțiojează, e filă nu pop-up)

~TraNda~
21-03-2017, 11:37 PM
2. Puțină curiozitate:la ce folosește și în ce program se fac astea(notepad, etc. )?


Este un limbaj de programare folosit in dezvoltarea aplicatiilor, soft-urilor, jocurilor etc. Aces limbaj se scrie in program ca: codeblocks, mingw etc.


Mereu când intru pe internet, după ce accesez un site îmi apare câte o filă, chiar și porno fără să o accesez. Cum pot scăpa de ele, să nu îmi mai apară(AdBlock nu funcțiojează, e filă nu pop-up)


Sunt link-uri de redirectare. Cand dai chiar si un click pe pagina, fara sa fie vreun buton sau ceva scris te redirecteaza pe un alt site. Din cate stiu eu (sincer nici nu prea m-am interesat de acest subiect) nu poti face nimic, doar sa dai X. Il invit pe Tiger, daca cunoaste vreo metoda sa ne-o comunice si noua.

DarkRed
26-03-2017, 03:40 PM
Opinii:
Întrebare bonus(te rog să mă ajuți)
Mereu când intru pe internet, după ce accesez un site îmi apare câte o filă, chiar și porno fără să o accesez. Cum pot scăpa de ele, să nu îmi mai apară(AdBlock nu funcțiojează, e filă nu pop-up)

Paginile POP-up nu-ti apar fara sa fi facut ceva.
Cel mai probabil ai dat click pe o reclama (ruleta unde castigi ceva, etc).
Iti recomand sa folosesti un anti-virus, daca nu funcioneaza ar cam trebui sa reinstalezi windows-ul.
Sau ai putea sa folosesti un Popup BLOCKER (Popup Blocker PRO (<b>You have to register to ba able to see this link</b>)) .

EDIT
Alt software pentru a bloca Popup-urile: Pop up Blocker (<b>You have to register to ba able to see this link</b>)

~TraNda~
26-03-2017, 05:35 PM
@DarkRed:


Întrebare bonus(te rog să mă ajuți)
Mereu când intru pe internet, după ce accesez un site îmi apare câte o filă, chiar și porno fără să o accesez. Cum pot scăpa de ele, să nu îmi mai apară(AdBlock nu funcțiojează, e filă nu pop-up)