Școala Româno-Britanică
Modulul 5 Clasa a IX-a | Python

Ora 1: Subprograme în Python - definire și apel

Ce vei învăța astăzi: Funcții cu def, structura, apelul

Rezultat practic: Definești și apelezi subprograme Python cu def, organizând codul în module clare (Competența 1.5).

Competența 1.5 Săptămâna 24

Înainte de a începe

De ce contează? Orice program mare devine lizibil doar dacă împărțim codul în funcții, iar la test punctajul complet se ia doar la programele modulare.

Ce știi deja?

Cum ai repetat până acum o secvență de instrucțiuni, fără funcții? Ce problemă apare când copiezi același cod de mai multe ori în program?

Ideea-cheie: O funcție se scrie o singură dată cu def, dar se execută ori de câte ori o apelăm prin numele ei urmat de paranteze.
SINTEZĂ TEORETICĂ ȘI EXEMPLE GHIDATE

Ce vei învăța astăzi?

După această lecție vei înțelege de ce folosim subprograme (blocuri de cod cu un nume, care pot fi rulate de mai multe ori), cum se definește o funcție în Python și cum o apelăm (o folosim scriind numele ei urmat de paranteze) pentru a o folosi de mai multe ori.

De ce folosim subprograme în programare
Cum definim o funcție cu def
Structura unei funcții: antet, corp, apel
Cum apelăm o funcție de mai multe ori

De ce folosim subprograme?

Definiție: Un subprogram (numit și funcție) este un bloc de cod cu un nume, pe care îl putem rula de mai multe ori dintr-un singur loc.

Analogia din viața reală:

Gândește-te la o rețetă de tort. Dacă vrei să faci tortul de 3 ori, nu rescrii rețeta de 3 ori. O scrii o singură dată, apoi o folosești ori de câte ori ai nevoie.

Exact așa face un subprogram: scriem codul o dată și îl apelăm de multe ori.

Beneficii: reutilizare (nu repetăm cod), claritate (programul e mai ușor de citit) și modularizare (împărțim problema în bucăți mici).

Definirea unei funcții cu def

În Python, o funcție se definește cu cuvântul cheie def, urmat de numele funcției și de paranteze. După două puncte, scriem corpul funcției, indentat (adică scris cu patru spații la începutul fiecărui rând).

Algoritm Structura unui subprogram Functie nume_functie() scrie "Corpul functiei - instructiuni indentate" Sfarsit functie Start program nume_functie() # primul apel al functiei nume_functie() # al doilea apel al functiei Stop program
Structura generală
def nume_functie():
    print("Corpul funcției - instrucțiuni indentate")


nume_functie()

Antetul (prima linie a funcției, formată din def, numele și parantezele) este linia def nume_functie():. Corpul sunt instrucțiunile indentate de sub antet. Apelul este folosirea funcției, scriind numele ei urmat de paranteze.

Apelul unei funcții

O funcție nu se execută singură atunci când o definim. Ea se execută doar când scriem un apel, adică numele ei urmat de paranteze: nume_functie().

Exemplu complet - o funcție care salută
def saluta():
    print("Salut! Bine ai venit la orele de Python!")


saluta()
saluta()
saluta()

Observă: am scris codul o singură dată în funcție, dar l-am rulat de 3 ori prin apeluri. Dacă vrem să afișăm mesajul de 100 de ori, tot o singură funcție folosim.

Exemplu complet - mesaj afișat de mai multe ori
def mesaj():
    print("Învăț să programez în Python!")


for i in range(4):
    mesaj()

Exercițiu de completare

Completează enunțul cu cuvintele potrivite:

În Python, o ______ este un bloc de cod cu un nume, pe care îl putem rula de mai multe ori. Pentru a o defini, folosim cuvântul cheie ______. Instrucțiunile din interiorul funcției, scrise cu indentare, formează ______-ul funcției. Pentru a o folosi, scriem un ______, adică numele ei urmat de paranteze.

Bancă de cuvinte:
def funcția corp apel

Test de înțelegere

Test rapid - subprograme în Python:

1. Definim o funcție în Python cu ajutorul cuvântului cheie:

2. Corpul funcției este format din instrucțiunile:

3. Apelăm o funcție scriind:

Test suplimentar

Test suplimentar - subprograme:

1. Ce afișează programul def salut(): print("Bună ziua!") urmat de apelul salut()?

2. O funcție definită cu def se execută:

3. Care secvență apelează corect funcția numita nume_functie?

Ai grijă la: Un apel fără paranteze (saluta în loc de saluta()) nu execută funcția, iar o definiție fără apel lasă funcția scrisă, dar niciodată rulată.

Aprofundare

Funcție sau procedură? În unele limbaje clasice (Pascal, C++) se face distincție între funcție (întoarce o valoare prin return) și procedură (doar execută acțiuni, fără valoare returnată). În Python nu există această distincție: totul se definește cu def, iar o funcție fără return întoarce implicit valoarea specială None (un fel de „nimic" pe care Python îl întoarce atunci când funcția nu are return).

  • Documentarea funcțiilor: imediat sub antet putem scrie un șir de caractere între trei ghilimele, numit docstring, care descrie rolul funcției. Putem citi documentația cu help(nume_functie).
  • Funcții anidate: Python permite definirea unei funcții în interiorul alteia; funcția interioară este vizibilă doar în interiorul celei exterioare.
  • Funcția goală: dacă nu avem încă nimic de scris în corp, folosim instrucțiunea pass; altfel obținem IndentationError.
  • Ordinea definiției: la momentul apelului funcția trebuie să fie deja definită în program, altfel primim NameError.
  • Caz particular: apelurile pot fi înlănțuite - o funcție poate apela altă funcție, iar Python gestionează singur stiva de apeluri și se întoarce la locul corect.
APLICARE ȘI REZOLVARE DE PROBLEME

PbInfo - Funcție care afișează

Enunț:

Cerință: Se definește funcția afiseaza() care afișează pe ecran mesajul "Salut!". Să se apeleze funcția.

Date de intrare:

Programul nu citește date de la tastatură.

Date de ieșire:

Programul va afișa pe ecran mesajul "Salut!" (prin apelul funcției).

Restricții și precizări:

Valorile citite sunt numere întregi, iar n este un număr natural, cu 1 <= n <= 1000.

Exemplu:

Intrare:

(fără date de intrare)

Ieșire:

Salut!
Cum gândim soluția:
  1. Definim funcția cu def afiseaza():
  2. În corpul funcției afișăm mesajul cu print("Salut!")
  3. La final apelăm funcția cu afiseaza()
Scrie soluția în Python:
Soluție corectă:
Soluția completă
def afiseaza():
    print("Salut!")


afiseaza()

Ce învățăm: o funcție se definește cu def, corpul este indentat, iar funcția se execută doar prin apel.

PbInfo - Mesaj repetat

Enunț:

Cerință: Se definește funcția mesaj(n) care afișează mesajul "Salut" de n ori. Să se citească n de la tastatură și să se apeleze funcția.

Date de intrare:

Programul citește de la tastatură un număr natural n.

Date de ieșire:

Programul va afișa de n ori cuvântul "Salut", fiecare pe o linie.

Restricții și precizări:

Valorile citite sunt numere întregi, iar n este un număr natural, cu 1 <= n <= 1000.

Exemplu:

Intrare:

3

Ieșire:

Salut
Salut
Salut
Cum gândim soluția:
  1. Definim funcția cu parametrul n: def mesaj(n):
  2. În corp folosim for i in range(n) pentru a afișa de n ori
  3. Citim n cu input() și apelăm funcția cu mesaj(n)
Scrie soluția în Python:
Soluție corectă:
Soluția completă
def mesaj(n):
    for i in range(n):
        print("Salut")


n = int(input())
mesaj(n)

Ce învățăm: o funcție poate primi date prin parametri, iar o buclă repetă o instrucțiune de n ori.

EXERCIȚII PRACTICE

Exercițiul Practic: Primele funcții în Python

Sarcini de lucru

Completează următoarele sarcini pentru a-ți consolida cunoștințele despre definirea și apelul funcțiilor

Sarcina 1: Tabla înmulțirii cu 3

Cerință: Scrie un program în care definești o funcție tabla() care afișează tabla înmulțirii cu 3 (de la 3*1 până la 3*10), apoi apelează funcția.

Soluție:
def tabla():
    for i in range(1, 11):
        print("3 *", i, "=", 3 * i)


tabla()

Verifică: funcția este definită o dată cu def, iar corpul ei folosește o buclă for cu range(1, 11).

Sarcina 2: Două funcții, START și STOP

Cerință: Scrie un program cu două funcții: una afișează "START", cealaltă afișează "STOP". Apelează-le la rând: mai întâi start(), apoi stop().

Soluție:
def start():
    print("START")


def stop():
    print("STOP")


start()
stop()

Verifică: cele două funcții sunt definite separat, iar apelurile le rulează în ordinea scrisă.

Scrie pe caiet - De reținut

Titlul lecției

Subprograme în Python - definire și apel.

Definiția lecției

Un subprogram (numit și funcție) este un bloc de cod cu un nume, care se scrie o singură dată și poate fi rulat de mai multe ori. În Python, un subprogram se definește cu cuvântul cheie def, urmat de numele funcției, de paranteze și de două puncte. Instrucțiunile scrise cu indentare sub antet formează corpul funcției. Funcția nu se execută singură la definire: ea rulează doar atunci când o apelăm, scriind numele ei urmat de paranteze. De exemplu, dacă definim funcția saluta() care afișează un salut, fiecare apel saluta() afișează mesajul o dată. Beneficiile sunt reutilizarea codului, claritatea și modularizarea, adică împărțirea problemei în bucăți mici.

Definiții esențiale

Algoritmul cheie - pseudocod

Functie nume_functie() scrie "Corpul functiei - instructiuni indentate" Sfarsit functie Start program nume_functie() # primul apel nume_functie() # al doilea apel Stop program

Algoritmul cheie - cod Python

def saluta():
    print("Salut! Bine ai venit la orele de Python!")


saluta()
saluta()

Greșeli comune de evitat

Exemplu practic

Ai un joc în care meniul trebuie afișat de mai multe ori pe parcursul unei runde. În loc să scrii aceleași instrucțiuni print() la fiecare apariție, definești o singură funcție și o apelezi ori de câte ori este nevoie:

def meniu():
    print("1. Start joc")
    print("2. Setari")
    print("3. Iesire")


meniu()
meniu()
meniu()

Sfaturi practice și trucuri