Sari la conținut
EduCamp

Tematică științifică · 2.5

Subprograme predefinite

Funcții și metode puse la dispoziție de limbaj pentru prelucrarea numerelor, caracterelor, șirurilor și colecțiilor, cu alegerea corectă a bibliotecii, argumentelor și tipului rezultatului în C++ și Python.

∗ Și la proba practică — Titularizare

Un subprogram este o parte distinctă a unui program, alcătuită din instrucțiuni care realizează o operație bine precizată și care poate fi apelată din program. El primește, dacă este nevoie, date prin parametri, execută instrucțiunile din corpul său și poate întoarce o valoare.

Subprogramele ajută la împărțirea unei probleme în operații mai mici și reutilizabile. În funcție de cine le scrie, ele pot fi:

  • predefinite, puse la dispoziție de limbaj sau de bibliotecile lui;
  • definite de utilizator, scrise de programator pentru problema rezolvată.

Un subprogram predefinit este o operație deja implementată în limbaj sau în bibliotecile lui. Programul îl apelează, îi transmite argumente și folosește rezultatul întors, fără să-i rescrie algoritmul.

De exemplu, pentru valoarea absolută nu este nevoie să testăm separat dacă numărul este pozitiv sau negativ. Putem apela funcția corespunzătoare:

rezultat = valoare_abs(n)

La examen, un subprogram predefinit trebuie ales după tipul datelor și după operația cerută. Trebuie verificat numele exact, numărul argumentelor, tipul rezultatului și biblioteca sau modulul necesar.

Apelul unui subprogram predefinit

Un apel are forma generală:

nume_subprogram(argument1, argument2, ...)

Argumentele sunt expresiile ale căror valori sunt transmise subprogramului. Ordinea lor contează. Rezultatul poate fi atribuit unei variabile, folosit într-o expresie sau comparat direct:

maxim = max(a, b)
if lungime(text) > 10:
    ...

Nu toate subprogramele întorc o valoare. Unele modifică un obiect sau efectuează o acțiune, cum este sortarea unei colecții.

Funcții matematice

În C++

Funcțiile matematice uzuale se găsesc în biblioteca <cmath>:

#include <cmath>
FuncțieRezultatObservație
sqrt(x)rădăcina pătratăpentru x >= 0
pow(x, y)x la puterea yîntoarce un tip real
fabs(x)modulul unui realinclude <cmath>
sin(x), cos(x), tan(x)funcții trigonometriceargumentul este în radiani
log(x)logaritm naturalpentru x > 0
log10(x)logaritm în baza 10pentru x > 0
ceil(x)primul întreg mai mare sau egalrezultat real
floor(x)ultimul întreg mai mic sau egalrezultat real
round(x)rotunjire la cel mai apropiat întregrezultat real

Pentru numere întregi se pot folosi abs, din <cstdlib> sau, în compilatoarele moderne, varianta disponibilă prin bibliotecile standard:

#include <cstdlib>

int d = abs(a - b);

pow(2, 3) produce valoarea numerică 8, dar tipul rezultatului este de regulă real. Dacă este necesar un întreg, conversia trebuie făcută numai când se știe că rezultatul este exact:

int p = static_cast<int>(pow(2, 3));

Pentru o putere întreagă, o buclă sau o înmulțire repetată poate fi mai potrivită decât pow, mai ales când se lucrează numai cu numere întregi.

int p = 1;
for (int i = 0; i < exponent; i++)
    p *= baza;

În Python

Funcțiile matematice suplimentare se găsesc în modulul math:

import math
FuncțieRezultatObservație
math.sqrt(x)rădăcina pătratărezultat real
math.pow(x, y)x la puterea yrezultat real
abs(x)modululfuncție predefinită, fără import
math.sin(x), math.cos(x)funcții trigonometriceargumentul este în radiani
math.log(x)logaritm naturalpentru x > 0
math.log10(x)logaritm în baza 10pentru x > 0
math.ceil(x)primul întreg mai mare sau egalrezultat întreg
math.floor(x)ultimul întreg mai mic sau egalrezultat întreg
round(x)rotunjirefuncție predefinită

Pentru puteri întregi se folosește operatorul **:

p = baza ** exponent

pow(a, b) este funcția predefinită pentru putere. Forma cu trei argumente, pow(a, b, m), calculează eficient a**b % m pentru exponenți întregi:

rest = pow(a, b, m)

Rezultatul lui // este câtul întreg, iar % este restul împărțirii:

cat = a // b
rest = a % b

Valori extreme și funcții de comparare

În C++, pentru două valori se folosesc min și max. Ele se găsesc în <algorithm>:

#include <algorithm>

int mic = min(a, b);
int mare = max(a, b);

Pentru mai multe valori se poate compune apelul:

int maxim = max(a, max(b, c));

O altă soluție, de obicei mai ușor de extins, este inițializarea cu primul element și parcurgerea valorilor:

int maxim = a;
maxim = max(maxim, b);
maxim = max(maxim, c);

În Python, min și max funcționează atât cu mai multe argumente, cât și cu o colecție:

mic = min(a, b, c)
mare = max(a, b, c)
mare_din_lista = max(valori)

sum calculează suma elementelor unei colecții:

suma = sum(valori)

Pentru o colecție goală, sum([]) este 0, dar min([]) și max([]), respectiv, semnalează eroare. Dacă enunțul nu garantează existența unui element, cazul gol trebuie tratat înaintea apelului.

Materialul acesta se citește pe educamp.ro și nu se tipărește.

Ce cuprinde subcapitolul

  1. Apelul unui subprogram predefinit
  2. Funcții matematice
  3. Valori extreme și funcții de comparare
  4. Conversia și citirea datelor
  5. Funcții și metode pentru șiruri
  6. Funcții pentru colecții
  7. Subprogramul potrivit pentru cerință
  8. Greșeli frecvente la examen

Continuă lectura ca și cursant

Cel puțin un subcapitol din fiecare capitol este disponibil gratuit și integral. Pentru a citi toate celelalte subcapitole ale disciplinei, te înscrii la cursul de pregătire.

Cursul cuprinde suportul de curs publicat până acum, care se completează capitol cu capitol, și două întâlniri de câte două ore în fiecare lună. Prima săptămână este gratuită, fără plată și fără card. Dacă vrei să vezi mai întâi cum este prezentată materia, poți reveni la primul subcapitol al capitolului.

Începe săptămâna gratuită Sunt cursant — login

Află când publicăm materiale noi

Materia este publicată treptat, capitol cu capitol. Înscrie-te pentru a primi un e-mail atunci când apare un capitol nou de informatică.

Vei primi mesaje numai despre materia selectată și despre cursul de pregătire. Te poți dezabona oricând, dintr-o singură apăsare.

Surse

  • Cerchez, E., Șerban, M., „Programarea în limbajul C/C++ pentru liceu”, Editura Polirom, Iași, 2005
  • „Informatică. Manual pentru clasa a IX-a”, Editura Didactică și Pedagogică, București
  • „Informatică. Manual pentru clasa a XI-a”, Editura Didactică și Pedagogică, București
  • „Tutorialul de Python”, documentația oficială a limbajului Python, https://docs.python.org/ro/3/library/functions.html
Actualizat: 10 septembrie 2026