Sari la conținut
EduCamp
Titularizare2025Metodică15 puncte

Subiectul al III-lea, cerința 1

Test pe subprograme, cu barem

Un test scris cu cinci itemi pe transferul parametrilor și returnarea valorilor, cu răspunsurile așteptate și criteriile de notare analitică pentru fiecare.

Se alege proba scrisă.

TEST

Disciplina: Informatică · Clasa: a X-a, filiera teoretică, profil real, specializarea matematică-informatică

Unitatea de învățare: Subprograme · Timpul de lucru: 50 de minute

Toate subiectele sunt obligatorii. Se acordă 10 puncte din oficiu.

Itemul 1 — 15 puncte

Se consideră antetul de subprogram scris în limbajul C++:

void prelucrare(int a, int &b, int c[], int n)

a) Precizați ce valoare returnează subprogramul și câți parametri are. (4 puncte)

b) Precizați care dintre parametri se transmit prin valoare și care prin referință. (6 puncte)

c) Explicați ce se întâmplă, la revenirea în programul apelant, cu modificările făcute în subprogram asupra parametrului a. (5 puncte)

Itemul 2 — 15 puncte

Se consideră programul de mai jos.

#include <iostream>
using namespace std;

void f(int x, int &y) {
    x = x + 10;
    y = y + 10;
    cout << x << " " << y << endl;
}

int main() {
    int a = 1, b = 2;
    f(a, b);
    cout << a << " " << b << endl;
    f(b, a);
    cout << a << " " << b << endl;
    return 0;
}

Scrieți ce se afișează pe ecran la executarea programului și explicați, pentru fiecare dintre cele două apeluri, de ce una dintre variabilele din programul principal își schimbă valoarea, iar cealaltă nu.

Itemul 3 — 20 de puncte

Scrieți definiția completă a subprogramului sumaCifrelor, care primește prin unicul său parametru, n, un număr natural (n ∈ [0, 10⁹]) și returnează suma cifrelor lui n.

Exemplu: pentru n = 2073, subprogramul returnează 12.

Itemul 4 — 20 de puncte

Scrieți definiția completă a subprogramului minMax, care are patru parametri: v, prin care accesează un tablou unidimensional cu cel mult 100 de numere naturale, k, prin care primește numărul de elemente ale tabloului (k ≥ 1), și mini, maxi, prin care furnizează cea mai mică, respectiv cea mai mare valoare din tablou.

Exemplu: pentru k = 4 și tabloul (2073, 15, 480, 66), după apel mini are valoarea 15, iar maxi valoarea 2073.

Itemul 5 — 20 de puncte

Scrieți un program C++ care citește de la tastatură un număr natural n (1 ≤ n ≤ 100) și apoi n numere naturale din intervalul [0, 10⁹]. Programul reține într-un tablou numerele care au suma cifrelor un număr par și afișează cea mai mică și cea mai mare dintre ele, separate printr-un spațiu, sau mesajul nu exista, dacă niciun număr citit nu are această proprietate.

Programul folosește subprogramele definite la itemii 3 și 4, pe care nu este necesar să le rescrieți.

Exemplu: pentru n = 5 și numerele 2073, 14, 480, 66, 91, se afișează 66 2073.

BAREM DE EVALUARE ȘI DE NOTARE

  • Se punctează orice modalitate de rezolvare corectă a cerințelor.
  • Nu se acordă fracțiuni de punct.
  • Se acordă 10 puncte din oficiu. Nota finală se calculează prin împărțirea la zece a punctajului total acordat.

Itemul 1 — 15 puncte

Răspunsul așteptat. a) Subprogramul este de tip void, deci nu returnează nicio valoare: este o procedură. Are patru parametri: a, b, c și n. b) Prin valoare se transmit a și n, fiindcă sunt declarați ca variabile simple de tip int. Prin referință se transmite b, marcat cu &. Parametrul c este un tablou: în C++ el se transmite prin adresa primului element, așa că modificările făcute asupra elementelor lui în subprogram se regăsesc în programul apelant. c) Modificările asupra lui a se pierd. Parametrul a este transmis prin valoare, deci subprogramul primește o copie a variabilei din programul apelant, iar toate atribuirile se fac asupra copiei. La revenire, copia dispare, iar variabila din programul apelant rămâne cu valoarea dinaintea apelului.

Criteriul de evaluarePunctaj
precizarea faptului că subprogramul nu returnează nicio valoare2p
precizarea numărului de parametri2p
identificarea parametrilor transmiși prin valoare2p
identificarea parametrului transmis prin referință2p
precizarea situației tabloului c2p
explicarea faptului că modificările asupra lui a se pierd3p
motivarea prin lucrul pe o copie a variabilei2p

Pentru un răspuns la punctul c) care afirmă corect că valoarea nu se schimbă, dar fără motivare, se acordă 3p din cei 5.

Itemul 2 — 15 puncte

Răspunsul așteptat. Se afișează, pe patru linii:

11 12
1 12
22 11
11 12

Explicația. La primul apel, f(a, b), parametrul x primește o copie a lui a, iar y devine un alt nume pentru b. Atribuirea x = x + 10 schimbă doar copia, deci a rămâne 1; atribuirea y = y + 10 schimbă chiar variabila b, care devine 12.

La al doilea apel, f(b, a), rolurile se schimbă: x este copia lui b, care are acum 12 și devine 22 doar în interiorul subprogramului, iar y este a, care crește de la 1 la 11. La sfârșit a este 11, iar b este 12.

Criteriul de evaluarePunctaj
prima linie afișată, 11 122p
a doua linie afișată, 1 122p
a treia linie afișată, 22 112p
a patra linie afișată, 11 122p
explicarea comportamentului parametrului transmis prin valoare3p
explicarea comportamentului parametrului transmis prin referință3p
precizarea faptului că la al doilea apel rolurile variabilelor se schimbă1p

Rezolvarea se poate citi pe educamp.ro, la adresa de mai sus.

Ce cuprinde rezolvarea

  1. TEST
  2. BAREM DE EVALUARE ȘI DE NOTARE

Vezi rezolvarea ca și cursant

Cel puțin o cerință din fiecare an este disponibilă gratuit și integral. Pentru a citi toate celelalte rezolvări ale disciplinei, te înscrii la cursul de pregătire.

Te înscrii, alegi în cont când începe cursul și plătești prima lună prin transfer bancar. Pentru a vedea mai întâi cum este scrisă o rezolvare, poți reveni la prima cerință a anului.

Acces la suportul de curs

25 RON / lună, fără ședințe

Ce cuprinde:

  • Acces la toate lecțiile disponibile
  • Suport de curs pentru tematica științifică și metodică
  • Exemple, explicații și exerciții
  • Acces la materialele noi adăugate pe platformă
  • Posibilitatea de a adresa întrebări

Poți alege și variante cu ședințe online, în grup sau individuale. Le vezi pe pagina cursului.

Ai întrebări sau o problemă? Scrie-mi pe WhatsApp, la 0745 874 576.

Înscrie-te Alte varianteCum plătești Login

Actualizat: 23 septembrie 2026