Documente Academic
Documente Profesional
Documente Cultură
DISCIPLINA INFORMATICĂ
JUDEȚUL SUCEAVA
Data: 22.10.2016
STRUCTURI DE CONTROL
Algoritmul reprezintă o succesiune, finită, de paşi care se execută cu scopul de-a rezolva
o problemă sau o categorie de probleme.
Algoritmul proiectat pentru rezolvarea unei anumite probleme trebuie implementat într-
un limbaj de programare; prelucrarea datelor se realizează cu ajutorul instrucţiunilor.
Instrucţiunea descrie un proces de prelucrare pe care un calculator il poate executa. O
instructiune este o construcţie valida (care respectă sintaxa limbajului) urmată de “;” . Ordinea în
care se execută instrucţiunile unui program defineşte aşa-numita structură de control a
programului.
Limbajele moderne sunt alcatuite pe principiile programării structurate. Conform lui C. Bohm şi
G. Jacobini, orice algoritm poate fi realizat prin combinarea a trei structuri fundamentale:
- comentarii
- declararea variabilelor
- instrucţiunea de citire
- instrucţiunea de scriere
- instrucţiunea de atribuire
- instrucţiunea compusă (sau blocul de instrucţiuni)
Comentarii
În cadrul algoritmilor se pot adauga comentarii pentru a descrie operaţiile efectuate sau pentru a
da indicaţii în privinţa implementarii.În cazul în care textul comentariului se află doar pe un singur rând
comentariul este precedat de „//” iar dacă comentariul ocupa mai multe rânduri fie fiecare rând trebuie
precedat de „//” fie folosim „/*……*/”.
Comentariile sunt foarte utile mai ales atunci când se lucrează ân echipă.
Declararea variabilelor
int a;
float b;
char c;
int x, z, y;
Orice variabilă care este folosită în algoritm trebuie declarată în prealabil. Limbajul de
programare C++ face diferenţa între literele mari şi literele mici (este case sensitive). Astfel,
varibila cu denumirea x va fi diferită de varibila cu denumirea X.
Instructiunea de citire
Pseudocod C++
Citeşte a; cin>>a;
Citeşte a, b, c; cin>>a>>b>>c;
Instrucţiunea de afişare
Pseudocod C++
Afişează a; cout<<a;
Afişează a,b,c; cout<<a<<b<<c;
Instructiunea de atribuire
Pseudocod C++
a5; a=5;
b2-5x; b=2-5*x;
Blocul de instrucţiuni
Pseudocod C++
Început {
Instrucţiune 1; Instrucţiune 1;
Instructiune 2; Instrucţiune 2;
........................ ........................
Instrucţiune n; Instrucţiune n;
Sfârşit
}
Structura alternativă (decizională, de selecţie)
Structura alternativă decide în baza unei condiţii care va fi instrucţiunea sau blocul de
instruţiuni ce urmează a fi executate în cadrul algoritmului.
Pseudocod C++
Dacă (condiţie) atunci if (condiţie)
Secvenţa 1 de operaţii instrucţiune 1;
sau sau
Structura alternativă funcţionează astfel: se evaluează condiţia, iar dacă aceasta este
adevarată, se execută instrucţiunea 1. În caz contrar se va executa instrucţiunea 2. După cum se
observă din descrierea facută în tabelul anterior există structură alternativă cu o singură ramură.
Exemple:
1.
Pseudocod C++
Început #include <iostream>
Citeste n using namespace std;
Daca (restul împărţirii la 2 este 0) atunci void main()
Afişează „n este număr par” {
Altfel int n;
Afişează „n este număr imăpar” cin>>n;
Sfârşit if(n%2==0)
cout<<n<<” este numar par”;
else
cout<<n<<” este numar impar”;
}
2.Sa se realizeze un algoritm pentru a calcula suma masurilor a doua unghiuri exprimate in
grade, minute si secunde. Un grad are 60 de minute, un minut are 60 de secunde.
Exemplu: 45o,54’,37’’+23o,17’,24’’=69o,12’,1’’
Implementare:
#include<iostream>
using namespace std;
int main()
{
int m1,m2,s1,s2,g1,g2, g,m,s;
cout<<"dati masura primului unghi in grade,minute si secunde ="<<endl;
cin>>g1>>m1>>s1;
cout<<"dati masura celui de-al doilea unghi in grade,minute si secunde ="<<endl;
cin>>g2>>m2>>s2;
//1 grad=60 minute = 3600secunde si 1 minut=60secunde
if( g1<360 && g2<360 && m1<60 && m2<60 && s1<60 &&s2<60)//verificam daca valorile sunt
//corecte
{
if((s1+s2)>=60)
{ s=(s1+s2)%60;
m=1;
}
else
{s=s1+s2;
m=0;
}
if((m1+m2) >=60)
{m=(m1+m2+m)%60;
g=1;}
else{ m=m1+m2;
g=0;}
g=g1+g2+g;
cout<<g<<"grade"<<m<<"minute"<<s<<"secunde"<<endl;
}
else
cout<<"date incorecte";
return 0;
}
Instructiunea de selectie
switch(expresie){
........................................
[default: secventa_instructiuni_n+1];
unde:
expresie are semnificaţia de expresie de tip întreg;
ci sunt constante de tip întreg;
secventa_ instrucţiuni_i: reprezintă o secvenţă de instrucţiuni.
Implementare
#include <iostream>
using namespace std;
int main()
{
char c;
cout<<"Introduceti un caracter:";
cin>>c;
switch (c)
{
case ('a'):
cout<<"Afisare\n";
break;
case ('t'):
cout<<"Tiparire\n";
break;
case ('x'):
cout<<"iesire\n";
break;
default:
cout<<"Caracter fara semnificatie\n";
}
}
Structuri repetitive
Instructiunea FOR
Pseudocod C++
Pentru contorvi,vf, pas executa int n,i;
Secventa de operatii for(i=1;i<=n;i++)
instructiune1;
sau
for(i=1;i<=n;i++)
{
Instructiune1;
Instructiune2;
.......................
Instructiune n;
}
- Contorul este o variabila care numara de cate ori se va executa instructiunea sau blocul de
instructiuni cuprinse in FOR.
- vi reprezinta valoarea initiala sau valoarea de la care se pleaca
- vf reprezinta valoarea finala sau valoarea la care ne oprim
- pas reprezinta valoarea cu care crestem sau descrestem (incrementare/decrementare)
Daca vi<vf s merge crescator iar daca vi>vf mergem descrescator
Aplicatii:
Suma primelor n numere pare
Cu test initial Cu test final
# include<iostream> # include<iostream>
using namespace std; using namespace std;
int main() int main()
{ {
int s=0,i=2,n,k=0; int s=0,i=2,n,k=0;
cout<<"n="; cin>>n; cout<<"n="; cin>>n;
while ( k<n) do
{ s=s+i; { s=s+i;
i=i+2; i=i+2;
k++ ; k++ ;
} }while(k<n);
cout<<"suma nr pare="<<s; cout<<"suma nr pare="<<s;
return 0; return 0;
} }
Aplicații
Structuri decizionale
1. pbinfo.ro/559
Cerința
Se dau 5 numere distincte. Să se determine suma celor mai mari 3 dintre ele.
Date de intrare
Programul citește de la tastatură 5 numere naturale.
Date de ieșire
Programul va afișa pe ecran numărul cerut.
Restricții și precizări
cele 5 numere naturale sunt distincte, cuprinse între 1 și 10000, inclusiv
2. pbinfo.ro/1308
Cerinţa
Se citesc două numere naturale n m cu exact două cifre fiecare. Să se decidă dacă cele două
numere au cifre comune.
Date de intrare
Programul citește de la tastatură numerele n m.
Date de ieşire
Programul afișează pe ecran mesajul da dacă cele două numere au cifre comune, respectiv nu în
caz contrar.
Restricţii şi precizări
10 ≤ n,m ≤ 99
3. pbinfo.ro/1310
Cerinţa
Se citesc două numere naturale n m cu exact trei fiecare. Să se afle câte cifre din n divid pe m.
Date de intrare
Programul citește de la tastatură numerele n m.
Date de ieşire
Programul afișează pe ecran valoarea cerută.
Restricţii şi precizări
100 ≤ n,m ≤ 999
Structuri repetitive
4. pbinfo.ro/1261
Cerința
Se citesc numere de la tastatură până la apariția lui zero. Să se determine câte dintre ele erau pare.
Date de intrare
Programul citește de la tastatură numere întregi. Citirea se încheie la introducerea valorii 0, care nu
se va număra.
Date de ieșire
Programul afișează pe ecran numărul K, reprezentând numărul de numere pare citite.
Restricții și precizări
numerele citite aparține intervalului (-1.000.000;1.000.000)
în cazul în care niciun număr nu este par se va afişa valoarea NU EXISTA.
5. pbinfo.ro/351
Cerinţa
Se citește numărul natural n. Să se afișeze următoarea piramidă de numere:
1
12
123
.......
1 2 3 ... n
Date de intrare
Programul citește de la tastatură numărul n.
Date de ieşire
Programul afișează pe ecran numărul 1, pe a doua linie numerele 1 2, pe a treia linie numerele 1 2
3, etc, pe a n-a linie numerele 1 2 3 ... n. Pe fiecare linie numerele sunt separate prin exact un
spațiu.
Restricţii şi precizări
1 ≤ n ≤ 20
6. pbinfo.ro/1405
Cerința
Se dă n un număr natural. Să se afișeze un romb de latură n umplut cu caractere * iar spațiul
spațiul exterior umplut cu #, ca în exemplu.
Date de intrare
Programul citește de la tastatură numărul n.
Date de ieșire
Programul va afișa pe ecran rombul cerut.
Restricții și precizări
1 ≤ n ≤ 10
7. pbinfo.ro/350
Cerinţa
Se dau două numere naturale nenule n și m. Pentru mulțimileA={1,2,..,n} și B={1,2,...,m}, să se
afișeze mulțimeaA×B={(a,b) | a∈A, b∈B} – produsul cartezian al mulțimilor A și B.
Date de intrare
Programul citește de la tastatură numerele n și m.
Date de ieşire
Programul afișează pe ecran mulțimea cerută astfel:
elementele mulțimii vor fi scrise între acolade și separate prin virgule
fiecare element este o pereche de numere, care va fi scrisă între paranteze rotunde,
numerele din pereche fiind separate prin virgulă
mai întâi se vor scrie perechile (a,b) pentru care a=1, cu b în ordine crescătoare, apoi
perechile pentru care a=2cu b în ordine crescătoare, etc, ca în exemplu.
Restricţii şi precizări
1 ≤ n,m ≤ 10
8. pbinfo.ro/459
Cerinţa
Se citesc numere de la tastatură până când se introduc două numere consecutive egale. Să se
determine suma tuturor numerelor citite.
Date de intrare
Programul citește de la tastatură numere întregi. Citirea se încheie când se introduc două numere
egale.
Date de ieşire
Programul afișează pe ecran numărul S, reprezentând suma numerelor citite.
Restricţii şi precizări
numerele citite sunt numere naturale mai mici decât 1.000.000
valoarea absolută a sumei nu va depăși 1.000.000.000
9. pbinfo.ro/115
Cerinţa
Să se scrie un program care citeşte de la tastatură un număr natural n şi apoi un şir de n numere
naturale şi determină media aritmetică a celor pare.
Date de intrare
Programul citește de la tastatură numărul n, iar apoi n numere naturale.
Date de ieşire
Programul afișează pe ecran numărul M, reprezentând media aritmetică a valorilor pare.
Restricţii şi precizări
0 < n < 1000
cele n numere citite vor fi mai mici decât 1000000
rezultatul va fi punctat dacă diferența dintre cel afișat de program și cel corect este mai
mică decât 0.01.
în toate seturile de date de intrare se vor afla şi valori pare
10. pbinfo.ro/654
Cerința
Fie număr natural n. Acestuia i se aplică în mod repetat următoarele transformări:
dacă n este par, devine n/2
dacă n este impar, devine 3*n+1
În 1937 matematicianul Lothar Collatz a formulat următoarea conjectură :pentru orice număr
natural, în urma transformărilor numărul devine 1.
De exemplu, pentru n=6 se obține șirul: 6 3 10 5 16 8 4 2 1, șir care are 9 termeni.
Pentru un n dat, determinați numărul de termeni din șirul de transformări după regula de mai sus.
Date de intrare
Programul citește de la tastatură numărul n.
Date de ieșire
Programul va afișa pe ecran numărul C, reprezentând numărul de termeni din șirul transformărilor
de mai sus.
Restricții și precizări
1 ≤ n ≤ 1 000 000
11. pbinfo.ro/246
Cerinţa
Se dau n numere naturale. Să se determine ultimele două numere impare, nu neapărat distincte,
dintre cele date.
Date de intrare
Programul citeşte de la tastatură numărul n, apoi n numere naturale, dispuse pe mai multe linii.
Date de ieşire
Programul afişează pe ecran ultimele două numere impare dintre cele date, în ordinea în care au
fost citite. Dacă nu au fost citite suficiente numere impare, se va afişa doar mesajul Numere
insuficiente.
Restricţii şi precizări
0 < n <= 10.000
cele n numere citite vor avea cel mult 9 cifre
12. pbinfo.ro/560
Cerința
Copiii din clasa a V-a au hotărât să planteze flori, micșunele și panseluțe, în grădina din curtea
școlii. Ei au plantat un număr de n flori astfel: un rând de micșunele, 2 rânduri de
panseluțe, 3 rânduri de micșunele, 4rânduri de panseluțe, și așa mai departe până au terminat toate
florile. Fiecare rând conține un număr de 5 flori, ultimul rând putând să conțină mai puține flori.
Copiii doresc să cunoască numărul de rânduri plantate, dacă ultimul rând a fost complet sau nu și
ce flori s-au plantat pe ultimul rând.
Date de intrare
Programul citește de la tastatură un număr natural n, reprezentând numărul florilor.
Date de ieșire
Pe primul rând al ecranului se va afișa câte rânduri au plantat copii în total, pe al doilea rând al
ecranului se va afișa mesajul DA, dacă ultimul rând este complet și mesajul NU dacă ultimul rând
este incomplet, iar pe al treilea rând al ecranului se va afișa numele florilor plantate pe ultimul
rând (micsunele sau panselute). Atenție, mesajul de pe rândul2 se scrie cu litere mari iar cel de pe
rândul 3 cu litere mici.
Bibliografie:
- http://infoscience.3x.ro
- http://sites.google.com
- http://pbinfo.ro