Sunteți pe pagina 1din 7

Unitatea şcolară: Liceul Tehnologic „Toma Socolescu”, Municipul Ploieşti

Profesor: Măcelaru Adriana Adela


Clasa: a XI-a F (matematică – informatică – neintensiv informatică)
Disciplina: Informatică
Locul de desfăşurare: Laboratorul de informatică

Proiect didactic
Unitatea de învăţare: Subprograme
Tema: Aplicații folosind subprograme
Tipul lecţiei: Formare de priceperi și deprinderi/rezolvare de probleme
Competenţe generale:
1. Identificarea datelor care intervin într-o problemă şi aplicarea algoritmilor fundamentali de
prelucrare a acestora
2. Elaborarea algoritmilor de rezolvare a problemelor
3. Implementarea algoritmilor într-un limbaj de programare
Competenţe specifice:
1. Recunoașterea situațiilor în care este necesară utilizarea unor subprograme

2. Analiza problemei în scopul identificării subproblemelor acesteia

3. Utilizarea corectă a subprogramelor predefinite și a celor definite de utilizator

Obiective operaţionale:
1. Să definească corect noțiunea de funcție procedurală.
2. Să-și însușească sintaxa funcției procedurale.
3. Să identifice problemele în care sunt necesare definirea funcțiilor.
4. Să aprecieze corect soluţiile date de ceilalţi membri ai grupei.
5. Să se autoevalueze în raport cu obiectivele şi cu clasa.

Resurse:
Timp: 50 minute
Materiale: marker, tablă, tabla inteligentă, manual, calculator, fişa de lucru
Procedurale:
 Metode de comunicare orală
 Conversaţia
 Problematizarea
 Metode de acţiune
 Exerciţiul
 Analiza problemei
 Învăţarea prin descoperire

1
 Procedee de instruire
 Învăţarea prin descoperire, prin rezolvarea de aplicaţii
 Conversaţia în etapa de fixare a cunoştinţelor
 Forme de organizare a activităţii
 Frontală
 Individuală
 Pe grupe
 Metode de evaluare
 Aplicaţii
 Fişe de aplicaţii
Material bibliografic de specialitate:
 “Didactica predării informaticii”, Masalagiu C., Asiminoaiei I., Editura Polirom,
Bucureşti, 2004;
 Daniela Oprescu, Liliana Bejan Ienulescu - „Informatică, varianta C++, manual pentru
clasa a XI-a, filiera teoretica, profil real specializare matematică–informatică, “Editura
Niculescu;
 fişe de lucru

2
Desfăşurarea activităţii
Structura lecţiei pe secvenţe de instruire
Momentele lecţiei:
Secvenţele Obiective
Nr Activităţi de
activităţii operaţi- Elemente de conţinut Resurse, metode
crt învăţare
de învăţare onale
-verificarea
frecvenţei
-organizarea şi -anunţarea temei
Moment pregătirea clasei -anunţarea
1  timp–3 min
organizatoric obiectivelor
-captarea atenţiei -anunţarea modului
de desfăşurare a
activităţii

-sintaxa unei funcții


procedurale
 conversaţia
Reactualiza- --variabile locale și -se răspunde la
O1, euristică
2 rea globale întrebările
O2
cunostinţelor -paramatri formali și profesorului
 timp–5 min
actuali

 exercițiul
Efectuarea de -rezolvarea
-motivarea elevilor  problematiza-
3 exerciții și O1-O5 problemelor propuse
aplicații (vezi anexa 1) rea

 timp-82 min

 exerciţiul
-se face în urma aplicativ
Concluzii și
O2- rezolvării problemelor  conversaţia de
4 realizarea
O5 propuse conform consolidare
feedbacului
anexa 1
 timp-5 min
 conversaţia
euristică
Tema pentru -anunţarea temei -se dau indicaţii la
6 O3-O5  fișe probleme
acasă (vezi anexa 1) temă
 timp – 5 min

3
Anexa 1
Fișă de lucru-funcții fără tip
1. Precizați care dintre următoarele afirmații sunt adevărate:
a. Corpul unei funcții va fi cuprins între ”{“ și “}” numai în cazul în care
conține cel puțin două instrucțiuni;(fals)
b. În cadrul unui program o funcție poate fi executată o singură dată;(fals)
c. Parametrii actuali trebuie să corespundă ca număr, tip și ordine cu parametrii
formali;(adevărat)
d. Prametrii actuali ai unei funcții sunt niște simboluri, iar parametrii formali
sunt niște valori concrete cu care lucrează funcția.(fals)
2. Se consideră un vector v care poate memora maxim 25 de numere întregi, din care
folosim efectiv numai primele n elemente v[0], v[1], …, v[n-1] (unde n este variabil).
Scrieți antetul unei funcții numită calcul, care primește drept parametri vectorul v
împreună cu numărul său de elemente n și care nu returnează nimic.
a. void calcul (int v[n], 25)
b. void calcul (int v[], int n) (corect)
c. void calcul (int v[], n)
d. void calcul (int v, int n)
3. Care dintre următoarele anteturi de funcție sunt corecte?
a. void alfa (int a, char[20] b)
b. void beta (float a;b;c)
c. void delta (char a,b)
d. void gama (int a[20]) (corect)
4. Considerăm o funcție demo, de tipul void, pentru care se definesc ca parametri trei
variabile întregi. Cum realizăm apelul funcției, astfel încât la apel să dăm ca parametri
variabilele întregi a, b și c?
a. demo (int a, int b, int c);
b. demo (int a; int b; int c);
c. demo (a, b, c); (corect)
d. demo (a; b; c);
e. demo (int a, b, c);
5. Precizați ce valori se vor afișa în timpul execuției programului.
#include <iostream>
using namespace std;
int a, x;
void teste (int x)
{int a;
while (x>1) x=x/2;
a=x-1;
cout<<a<<” “<<x<<endl;
}
int main()
{ a=5; x=15;
cout<<a<<” “<<x<<endl;
teste(x);
cout<<a<<” “<<x;
4
return 0;
}
Răspuns corect: 5 15 0 1 5 15
6. Un număr natural n se numește cub perfect dacă există un număr natural b, astfel încât
n=b3.
Subprogramul cuburi are un singur parametru, n, prin care primește un număr natural
(n∈[1,109]). Subprogramul afișează pe ecran, separate prin câte un spațiu, în ordine
descrescătoare, primele n cuburi perfecte nenule. Scrieți definiția completă a
subprogramului.
Exemplu: dacă n=5 atunci, după apel, se afișează pe ecran numerele 125 64 27 8 1.
Răspuns așteptat:
#include <iostream>
using namespace std;
int n;
void cuburi(int n)
{int i;
for(i=n;i>=1;i--)
cout<<i*i*i<<" ";
}
7. Subprogramul divX are doi parametri, n și x, prin care primește câte un număr
natural din intervalul [2,50]. Subprogramul afișează pe ecran, în ordine
descrescătoare, separate prin câte un spațiu, primele n numere naturale nenule
divizibile cu x. Scrieți definiția completă a subprogramului.
Exemplu: dacă n=4 și x=15 în urma apelului se afișează numerele 60 45 30 15.
Răspuns așteptat:
#include <iostream>
using namespace std;
int n,x;
void divX(int n, int x)
{int i;
for(i=n;i>=1;i--)
cout<<i*x<<" ";
}
8. Subprogramul mult are trei parametri a, b și c (a≤b), prin care primește câte un număr
natural din intervalul [1, 10000]. Subprogramul afișează pe ecran, în ordine
crescătoare, separate prin câte un spațiu, multiplii lui c din intervalul închis [a, b].
Scrieți definiția completă a subprogramului.
Exemplu: dacă a=2, b=15 și c=3 subprogramul va afișa: 3 6 9 12 15.
Răspuns așteptat:
void mult(int a, int b, int c)
{int i;
for(i=a;i<=b;i++)
if(i%c==0) cout<<i<<" ";
}
9. Scrieți definiția completă a subprogramului suma care are doi parametri:
 n prin care primește un număr natural (1≤n≤100);
 v, prin care primește un tablou unidimensional cu n elemente, numere
întregi situate în intervalul [10, 30000];

5
Subprogramul calculează și afișează suma numerelor din tabloul v care au ultimele două
cifre identice.
Exemplu: dacă n=4 și v=(123, 122, 423, 555) subprogramul va afișa valoarea 677
(122+555).
Răspuns așteptat:
void suma(int n, int v[])
{int i, s=0;
for(i=1;i<=n;i++)
if(v[i]%10==v[i]/10%10) s=s+v[i];
cout<<s;
}
10. Scrieți definiția completă a subprogramului medie care are doi parametri:
 n prin care primește un număr natural (1≤n≤100);
 v, prin care primește un tablou unidimensional cu n elemente, numere
naturale, fiecare element având cel mult patru cifre.
Subprogramul calculează și afișează media aritmetică a elementelor pare aflate pe poziții
impare în tabloul v.
Exemplu: dacă n=4 și v=(2, 1, 4, 5) subprogramul va afișa valoarea 3 ((2+4)/2)
Răspuns așteptat:
void medie(int n, int v[])
{int i, s=0,nr=0;
for(i=1;i<=n;i++)
if(v[i]%2==0 && i%2!=0) {s=s+v[i]; nr++;}
cout<<(float)s/nr;
}
11. Subprogramul afisare are trei parametri:
• x și y, prin care primește câte un număr natural din intervalul [0,106] (xy);
• k, prin care primește un număr natural (k[2,102]).
Subprogramul afișează pe ecran, în ordine strict crescătoare, numerele din intervalul
[x,y], în secvențe de câte k, cu excepția ultimei secvențe care poate conține mai puțin de
k numere. Fiecare secvență se încheie cu câte un simbol *, iar numerele și simbolurile
sunt separate prin câte un spațiu, ca în exemplu. Scrieți definiția completă a
subprogramului.
Exemplu: dacă x=11, y=21 și k=4 se afișează pe ecran numerele de mai jos, în acest
format. 11 12 13 14 * 15 16 17 18 * 19 20 21 *
Răspuns așteptat:
void afisare(int x, int y, int k)
{int i,nr=0;
for(i=x;i<=y;i++)
{
nr++;
if(nr%k!=0) cout<<i<<" ";
else cout<<i<<"*";
}
}
12. Subprogramul invers are un singur parametru n prin care primește un număr natural
cu maxim nouă cifre. Subprogramul afișează pe ecran mesajul DA dacă numarul n este
palindrom sau Nu în caz contrar (un număr este palindrom dacă este egal cu inversul

6
său). Scrieți definiția completă a subprogramului.
Exemplu: dacă n=8998 în urma apelului se afișează mesajul DA, iar dacă n=9023 în
urma apelului se afișează mesajul NU.
Răspuns așteptat:
void invers(int n)
{int c, inv=0, aux;
aux=n;
while(aux>0)
{c=aux%10;
inv=inv*10+c;
aux=aux/10;
}
if(n==inv) cout<<”DA”;
else cout<<”NU”;
}
13. Subprogramul afisare are un singur parametru n prin care primește un număr natural
cu maxim nouă cifre. Subprogramul afișează pe ecran numărul n şi toate prefixele
nenule ale acestuia, pe o singură linie, separate prin câte un spaţiu, în ordine
descrescătoare a valorii lor. Scrieți definiția completă a subprogramului.
Exemplu: pentru n=10305 se vor afisa numerele: 10305 1030 103 10 1
Răspuns așteptat:
void afisare(int n)
{
while(n>0)
{ cout<<n<<” ”;
n=n/10;
}
}

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