Sunteți pe pagina 1din 5

Intrebare Raspuns asteptat

1) Ce intelegeti prin Subprogramul este o secventa de instructiuni care rezolva o anumita


subprogram sarcina si care poate fi descrisa separat de blocul radacina si lansata
in executie in cadrul unui bloc, ori de cate ori este nevoie

2) De cate feluri sunt Functii procedurale si functii operand


subprogramele limbajului
C++?

3) Ce este o functie Functia procedurala este subprogramul care returneaza una, mai
procedurala? multe sau nici o valoare. Valorile se returneaza prin intermediul
parametrilor

4) Dar functia operand Functia operand este un subprogram care returneaza prin chiar
numele sau, si eventual si alte rezultate, prin intermediul parametrilor

5) Ce tipuri de parametri Formali si efectivi


avem?

6. Ce intelegeti prin Parametrii actuali sunt entitati cu care subprogramul opereaza efectiv
parametrii formali/efectivi? in cadrul unei anumite activari

Ce modalitati de transmitere Prin valoare si prin referinta


a parametrilor cunoasteti

FIȘĂ DE LUCRU
Recapitulare -Subprograme

GRUPA 1 - Descrie

Descrieți funcțiile care apar in următoarea secvență de program din punct de vedere al
tipului , mod de definire, mod de returnare rezultat, realizare apel specificând ce afișează.

#include<iostream.h>
#include<math.h>;
int y=2;
int f1()
{
int x=3;
return x+3;
}

void f2()
{
int z=9;
cout<<z;
}

void main()
{
1
cout<<f1()+pow(y,4)<<endl;
f2();
}

GRUPA 2 – Compară

Comparați din punctul de vedere al tipului, domeniului de vizibilitate variabile din


următoarea secvență de program precizând rezultatele afișate.

#include <iostream.h>
int n,m,a,b;
void calcul()
{
 int n=20,b=20;
 a=n/2;
 b=a;
}
void main()
{
  calcul();
  cout<<n<<" "<<m<<" "<<a<<"  "<<b;
}

GRUPA 3 – Analizează

Analizați modurile de transmitere a parametrilor in subprogramele din cadrul programului


de mai jos precizând ce se afișează in urma executării lui.
#include<iostream.h>
void calcule(int &p, int &q)
{ p=p+1;
cout<<p<<endl;
q=q+1;
cout<<q<<endl;
}
void produs(int a, int b)
{ a=a*2;
b=b*3;
cout<<a<<” “<<b<<endl;;
}
void main()
{ int p=3, q=7;
cout<<p<<” “<<q<<endl;
calcule(p,q);
cout<<p<<” “<<q<<endl;
produs(p,q);
cout<<p<<” “<<q<<endl;
2
}

GRUPA 4 - ASOCIAZĂ

Asociază fiecărui enunț din coloana A corespondentul din coloana B


1)Antetul unui subprogram care are a) float z(int x, int y)
ca parametri de intrare doua numere întregi x b) void calcul(int x, int y, float &z )
, y si returnează prin intermediul c) void calcul(int x, int y, float z)
parametrului z media aritmetica a celor doua d) void calcul(float x, float y,float &z)
numere, este :
2) Antetul corect al unui subprogram care a) void calcul(int a, int b)
are ca parametri de intrare doua numere b) void calcul(int a, int b, float &ma )
întregi a, b si returnează media aritmetica a c) void calcul(int a, int b, float ma)
celor doua numere, este : d) float calcul(int a, int b)

3) Considerăm o funcţie demo, de tip void a)demo(int a,int b,int c);


pntru care se definesc ca parametri trei b)demo(int a;int b;int c);
variabile întregi. Cum realizăm apelul c)demo(a,b,c);
funcţiei, astfel încât la apel să dăm ca d)demo(a;b;c);
parametri variabilele întregi a,b şi c? e)demo(int a,b,c);
4) In urma apelului cifra(n,x); se doreste a) int cifra (int n)
afisarea cifrei maxime a unui numar natural b) void cifra(int &x, int &y)
scriind cout<<x; Care va fi antetul corect al c) void cifra( int n, int &x)
subprogramului cifra?
d) void cifra (int x)

R : 1…….. 2……… 3…….. 4……

GRUPA 5 – Aplică

Aplică noțiunile învățate în rezolvarea următoarei probleme:


Subprogramul cifre_impare primeşte prin parametrul n un număr natural având cel mult
9 cifre şi returnează valoarea 1 dacă numărul n are toate cifrele impare şi 0 în caz contrar.
a) Scrieţi definiția completă a subprogramului cifre_impare.
b) În fişierul numere.txt se află memorat pe prima linie un număr natural n, iar pe
următoarele linii, n numere naturale. Toate numerele din fişier au cel mult 9 cifre. Scrieţi
programul C/C++ care, folosind apeluri utile ale subprogramului cifre_impare, afişează
pe ecran acele numere din fişier care sunt mai mari decât 100 şi au toate cifrele impare.
Numerele afişate sunt separate prin câte un spaţiu.
Exemplu: dacă fişierul numere.txt are conţinutul alăturat,
10
1 333 709 23 258
34 713 2678
11573 778
se vor afişa pe ecran:
333 713 11573

GRUPA 6 – Argumentează

Precizaţi valoarea de adevăr a propoziţiilor următoare, argumentând răspunsurile :


1) Un parametru formal transmis prin valoare este precedat de operatorul de adresare &.
3
2) Orice funcție trebuie să aibă întotdeauna cel puțin un parametru.
3) Variabilele locale ale unui subprogram sunt vizibile din orice locaţie a funcției principale.
4) Variabilele locale îşi păstrează valoarea de la un apel la altul al subprogramului.
5) Parametrii definiţi în antetul unui subprogram se numesc formali, iar cei care apar la apelul
subprogramului se numesc efectivi.
6) La definirea unei funcții în limbajul C/C++, după antet și înaintea acoladei de deschidere a
blocului de instrucțiuni trebuie pus caracterul "punct și virgulă".
7) In limbajul C/C++ este permisă declararea unei variabile locale cu același nume cu al
uneia globale.
8) Considerăm o funcție C/C++ al cărei definiție de antet este următorul: void f(int c)
Este permisă următoarea instrucțiune: cout < < f(2); ? 
9) Subprogramele predefinite sunt subprogramele create de utilizator care trebuie declarate
şi definite în program.

TEMĂ PENTRU TOTI ELEVII


Se considera subprogramele:
- pr, care primeşte prin intermediul parametrului x un număr natural cu cel mult 4 cifre şi
returnează 1 dacă numărul este prim şi 0 în caz contrar;
- sdiv, care primeşte prin intermediul parametrului y un număr natural cu cel mult 4 cifre
şi returnează suma tuturor divizorilor numărului y.
a) Scrieţi definitia completa a subprogramelor pr şi sdiv.
b) Scrieţi un program C/C++ care citeşte de la tastatură un număr natural n (n<1000) şi
care afişează pe ecran toate numerele mai mici decât n cu proprietatea că suma divizorilor
lor este număr prim. Se vor utiliza apeluri utile ale subprogramelor pr şi sdiv.
Exemplu: dacă n=20, atunci programul va afişa: 2 4 9 16.

#include<fstream.h>;
#include<iostream.h>;
long x;
int i, n;

int cifre_impare(long n)
{
int q=1,uc;
while(n!=0)
{ uc=n%10;
if(uc%2==0)
q=0;
n=n/10;
}
return q;
}

void main()
{
ifstream f("numere.txt");
f>>n;
for(i=1;i<=n;i++)
{
4
f>>x;
if(x>100 && cifre_impare(x)==1)
cout<<x<<" ";
}
f.close();
}

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