of 69 /69
Programarea calculatoarelor Universitatea Constantin Brâncuşi” din Târgu-Jiu Facultatea de Inginerie Departamentul de Automatică, Energie şi Mediu Lector dr. Adrian Runceanu

Programarea şi utilizarea calculatoarelor

  • Author
    others

  • View
    7

  • Download
    0

Embed Size (px)

Text of Programarea şi utilizarea calculatoarelor

Programarea i utilizarea calculatoarelorFacultatea de Inginerie
Lector dr. Adrian Runceanu
Structura biletelor de examen
03.01.2014 Programarea calculatoarelor 2
Structura biletelor de examen
03.01.2014 Programarea calculatoarelor 3
Subiect I - Grile cu alegere multipl. Identificai litera care corespunde rspunsului corect. Subiect II - Algoritm în pseudocod Specializarea INGINERIE ENERGETICA: Subiect III – Enunul unei probleme având un exemplu specificat. Specializarea INGINERIA SISTEMELOR: Subiect III – Enunul unei probleme cu vectori sau matrici, având un exemplu specificat. Subiect IV – Enunul unei probleme cu funcii, având un exemplu specificat.
Probleme recapitulative
Subiect I - Grile cu alegere multipl. Identificai litera care corespunde rspunsului corect.
03.01.2014 Programarea calculatoarelor 4
Grila 1
Considerm urmtoarea secven de program în care v este un vector format din n numere întregi, iar n, i i aux sunt trei variabile de tip întreg:
for(i=1; i<=n/2; i++) { aux = v[i]; v[i] = v[n/2 + n%2 + i]; v[n/2 + n%2 + i] = aux; }
03.01.2014 Programarea calculatoarelor 5
Grila 1 (continuare)
Dac n=7 i v=(10, 20, 30, 40, 50, 60, 70) atunci dup executarea secvenei de mai sus vectorul v va avea urmtorul coninut:
a) v=(40, 50, 60, 70, 10, 20, 30) b) v=(40, 50, 60, 10, 20, 30, 70) c) v=(50, 60, 70, 40, 10, 20, 30) d) v=(10, 20, 30, 70, 60, 50, 40)
03.01.2014 Programarea calculatoarelor 6
Solutie: c)
Grila 2
Fie vectorul v=(-1, 2, 3, -2, 4, 6, -3, 4) cu n=8 elemente.
Care din secvenele urmtoare transform vectorul v astfel:
v=(-1, 4, 3, 6, 4, -2, -3, 2), tiind c primul element din tablou se afl pe poziia 0?
03.01.2014 Programarea calculatoarelor 7
Grila 2 (continuare)
a) for(k=0; k<n/2; k++) { aux=a[k]; a[k]=a[n-1-k]; a[n-1-k]=aux; }
03.01.2014 Programarea calculatoarelor 8
{
a[n-k]=aux;
a[k]=a[n-k]; a[n-k]=aux; }
03.01.2014 Programarea calculatoarelor 9
{
}
Solutie: c)
Grila 3
Fie v un tablou unidimensional format din n numere întregi (n>=2).
tiind c primul element din tablou se afl pe poziia 1, indicai care dintre urmtoarele secvene atribuie variabilei întregi max cea mai mare valoare din tabloul v:
03.01.2014 Programarea calculatoarelor 10
Grila 3 (continuare) a) for(i=2;i<=n;i++) if(v[i-1]<=v[i]) v[i-1]=v[i];
max=v[1]; b) for(i=1;i<=n-1;i++) if(v[i+1]>v[i]) v[i]=v[i+1];
max=v[1]; c) for(i=2;i<=n;i++) if(v[i-1]>v[i]) v[i]=v[i-1];
max=v[n]; d) for(i=n;i>=2;i--) if(v[i]>v[i-1]) v[i]=v[i-1];
max=v[n]; 03.01.2014 Programarea calculatoarelor 11
Solutie: c)
Grila 4
Fie urmtoarea secven de program în care a, b sunt doi vectori formai din câte n numere întregi, iar i i n sunt dou variabile de tip întreg:
for(i=1;i<=n;i++) a[i]=i; for(i=1;i<=n;i++) b[i]=i+a[n-i+1]; for(i=1;i<=n;i++) {a[i]=a[i]+b[i]; b[i]=a[i]-b[i];}
03.01.2014 Programarea calculatoarelor 12
Grila 4 (continuare)
Dup execuia secvenei de mai sus, vectorii a i b vor fi:
a) a=(n+1, n,…,2) si b=(1,2,…,n) b) a=(1,2,…,n) si b=(0,0,…,0) c) a=(n+2, n+3,…, 2n+1) si b=(1,2,…,n) d) a=(1,2,…,n) si b=(1,2,…,n)
03.01.2014 Programarea calculatoarelor 13
cin>>a[k];
if( (k%2 == 0) && (a[k]%2 == 0 ))
{
cout<<a[k]<<’ ‘;
}
Fie vectorul a=(10,8,3,9,6,1) cu n=6 elemente. Ce se va afia în urma executrii urmtorului program?
Grila 5 (continuare)
a) 10 6 9 3 8 1 b) 1 8 9 3 6 10 c) 1 6 9 3 8 10 d) 10 6 3 9 8 1
03.01.2014 Programarea calculatoarelor 15
Solutie: d)
Grila 6
Considerm urmtoarea secven de program în care v este un vector format din n numere întregi, iar i, j i n sunt trei variabile de tip întreg:
v[1]=1; for(i=2; i<=n; i++) for(j=1; j<=i; j++) v[i]=v[i-1]+1;
03.01.2014 Programarea calculatoarelor 16
Grila 6 (continuare)
a) v=(1, 2, 2, 3, 3, 3) b) v=(1, 2, 3, 4, 5, 6) c) v=(5, 5, 5, 5, 5, 6) d) v=(1,1, 1, 1, 1, 2)
03.01.2014 Programarea calculatoarelor 17
03.01.2014 Programarea calculatoarelor 18
Se consider urmtorul algoritm pseudocod:
citeste n (numar natural cu cel mult 9 cifre) cat timp n>=10 executa | s=0 | cat timp n≠0 executa | | s=s+n%10 | | n=[n/10] | |sfarsit cat timp | n=s |sfarsit cat timp scrie n
03.01.2014 Programarea calculatoarelor 19
Algoritm 1 (continuare)
1. Ce se va afia dac valoarea citit pentru n este 989736?
2. Scriei programul C++ corespunztor algoritmului
dat. 3. Scriei un algoritm echivalent cu algoritmul dat,
dar care s utilizeze un alt tip de structur repetitiv.
03.01.2014 Programarea calculatoarelor 20
Algoritm 1 - solutie
1. 9+8+9+7+3+6=42 4+2 = 6 Rezultat final 6
03.01.2014 Programarea calculatoarelor 21
03.01.2014 Programarea calculatoarelor 22
while(n>=10) { s=0; while(n!=0) { s=s+n%10; n=n/10; } n=s; } cout<<n; }
Algoritm 1 - solutie 3. Algoritmul echivalent cu algoritmul dat, dar care s utilizeze un alt tip de
structur repetitiv este:
citeste n (numar natural cu cel mult 9 cifre) repeta | s=0 | repeta | | s=s+n%10 | | n=[n/10] | |pana cand n=0 | n=s |pana cand n<10 scrie n
03.01.2014 Programarea calculatoarelor 23
Algoritm 2
Se consider urmtorul algoritm pseudocod: citeste a,b (numere naturale) c=a%10 pentru i=1,b-1 executa | c=c*a | c=c%10 |sfarsit pentru scrie c
03.01.2014 Programarea calculatoarelor 24
Algoritm 2 (continuare)
1. Ce valoare afieaz algoritmul pentru a=28 i b=10?
2. Scriei programul C++ corespunztor
algoritmului dat. 3. Scriei algoritmul pseudocod care s fie
echivalent cu cel dat i care s conin un alt tip de structur repetitiv.
03.01.2014 Programarea calculatoarelor 25
Algoritm 2 - solutie
1. i=1 => c=8*28=224; c=4; i=2 => c=4*28=112; c=2; i=3 => c=2*28=56; c=6; i=4 => c=6*28=168; c=8; i=5 => c=8*28=224; c=4; i=6 => c=4*28=112; c=2; i=7 => c=2*28=56; c=6; i=8 => c=6*28=168; c=8; i=9 => c=8*28=224; c=4; Rezultat: 4
03.01.2014 Programarea calculatoarelor 26
Algoritm 2 - solutie
3. Algoritmul echivalent cu algoritmul dat, dar care s utilizeze un alt tip de structur repetitiv este:
citeste a,b (numere naturale) c=a%10 i=1 cat timp i<=b-1 executa | c=c*a | c=c%10 | i=i+1 |sfarsit cat timp scrie c
03.01.2014 Programarea calculatoarelor 28
Probleme recapitulative
Subiectul III – Enunul unei probleme cu vectori sau matrici, având un exemplu specificat.
03.01.2014 Programarea calculatoarelor 29
Probleme rezolvate cu vectori
Problema 1: Enun: Se consider un vector x cu n numere reale. S se calculeze produsul elementelor.
03.01.2014 Programarea calculatoarelor 30
Probleme rezolvate cu vectori
#include<iostream.h> int main(void) { double x[100], p; int n, i; cout<<"Dati numarul elementele ale tabloului n = "; cin>>n; cout<<"Dati elementele tabloului\n";
03.01.2014 Programarea calculatoarelor 31
Probleme rezolvate cu vectori
for(i = 1; i <= n; i++) { cout<<"x["<<i<<"]="; cin>>x[i]; }
03.01.2014 Programarea calculatoarelor 32
Probleme rezolvate cu vectori
cout<<"Vectorul initial este \n"; for(i = 1; i <= n; i++) { cout.width(6); cout<<x[i]; }
03.01.2014 Programarea calculatoarelor 33
Probleme rezolvate cu vectori
p = 1; // produsul elementelor din vector
for(i = 1; i <= n; i++) p = p * x[i]; cout<<"\nProdusul elementelor este = "
<<p<<endl; }
Se consider un vector x cu n numere reale.
S se calculeze câte elemente sunt pozitive, câte sunt negative i câte sunt nule.
03.01.2014 Programarea calculatoarelor 35
Probleme rezolvate cu vectori
#include<iostream.h> int main(void) { double x[100]; int n, i, nr_poz, nr_neg, nr_nul; cout<<"Dati numarul elementele ale tabloului n = "; cin>>n; cout<<"Dati elementele tabloului\n";
03.01.2014 Programarea calculatoarelor 36
Probleme rezolvate cu vectori
for(i = 1; i <= n; i++) { cout<<"x["<<i<<"]="; cin>>x[i]; }
03.01.2014 Programarea calculatoarelor 37
Probleme rezolvate cu vectori
cout<<"Vectorul initial este \n"; for(i = 1; i <= n; i++) { cout.width(6); cout<<x[i]; }
03.01.2014 Programarea calculatoarelor 38
Probleme rezolvate cu vectori
nr_poz = nr_neg = nr_nul = 0; for(i = 1; i <= n; i++) if(x[i] > 0) nr_poz++; else if(x[i] < 0) nr_neg++; else nr_nul++;
03.01.2014 Programarea calculatoarelor 39
Probleme rezolvate cu vectori
}
Problema 3: Enun:
Se consider un numr natural n. S cere s se formeze un vector cu
cifrele numrului.
03.01.2014 Programarea calculatoarelor 41
Probleme rezolvate cu vectori
#include<iostream.h> int main(void) { int x[100]; long int n, i, m; cout<<"Dati numarul natural n = "; cin>>n;
03.01.2014 Programarea calculatoarelor 42
Probleme rezolvate cu vectori
i = 1; while(n != 0) { x[i] = n % 10; i++; n = n / 10; }
03.01.2014 Programarea calculatoarelor 43
Probleme rezolvate cu vectori
m = i-1; cout<<"Vectorul cu cifrele numarului este \n"; for(i = 1; i <= m; i++) { cout.width(3); cout<<x[i]; } }
03.01.2014 Programarea calculatoarelor 44
Probleme rezolvate cu vectori
Problema 4: Enun:
Reuniunea a dou mulimi S se scrie un program care s calculeze
reuniunea a dou mulimi de câte n, respectiv m numere întregi memorate cu ajutorul vectorilor.
03.01.2014 Programarea calculatoarelor 45
Probleme rezolvate cu vectori
03.01.2014 Programarea calculatoarelor 46
Date de intrare: n=5, a={1, 2, 5, 7, 12} si m=2, b={2, 4, 8, 12}
Date de iesire: k = 7 z = {1, 2, 3, 4, 5, 7, 8, 12}
Probleme rezolvate cu vectori
#include<iostream.h> int main(void) { int a[100], b[100], c[100], n, m, i, j, k, ok; cout<<"Dati cardinalul multimii A - n = "; cin>>n; cout<<"Dati elementele multimii A \n";
03.01.2014 Programarea calculatoarelor 47
Probleme rezolvate cu vectori
for(i = 1; i <= n; i++) { cout<<"a["<<i<<"] = "; cin>>a[i]; }
03.01.2014 Programarea calculatoarelor 48
Probleme rezolvate cu vectori
cout<<"Dati cardinalul multimii B - m = "; cin>>m; cout<<"Dati elementele multimii B \n"; for(i = 1; i <= m; i++) { cout<<"b["<<i<<"] = "; cin>>b[i]; }
03.01.2014 Programarea calculatoarelor 49
Probleme rezolvate cu vectori
for(i = 1;i <= n; i++) c[i]=a[i]; k = n;
03.01.2014 Programarea calculatoarelor 50
Probleme rezolvate cu vectori
for(j = 1; j <= m; j++) { ok = 1; // variabila care verifica daca un element apartine sau nu unei
multimi
for(i = 1; i <=n ;i++) if(b[j] == a[i]) ok = 0; if(ok == 1) { k++; c[k] = b[j]; } } 03.01.2014 Programarea calculatoarelor 51
Probleme rezolvate cu vectori
cout<<"Elementele multimii reuniune sunt : \n"; for(i = 1; i <= k; i++) { cout.width(9); cout<<c[i]; } }
03.01.2014 Programarea calculatoarelor 52
Probleme recapitulative
Subiectul III – Enunul unei probleme cu vectori sau matrici, având un exemplu specificat.
03.01.2014 Programarea calculatoarelor 53
Probleme rezolvate cu matrici
Problema 5: Enun: Se dau doua numere n si m reprezentand
numarul de linii, respectiv numarul de coloane ale unei matrici An*m (1n,m30) de numere întregi.
S se scrie un program care construieste o matrice A ale caror elemente se calculeaz dup formula:
A[i][j] = (n-i) * (m-j)
03.01.2014 Programarea calculatoarelor 54
Probleme rezolvate cu matrici
#include<iostream.h> int main() { int i, j, m, n; float a[10][10]; cout<<"Dati dimensiunile matricei \n"; cout<<"Dati numarul de linii n = "; cin>>n; cout<<"Dati numarul de coloane m = "; cin>>m; for (i=1;i<=n; i++) for (j=1;j<=m; j++) a[i][j] = (n-i) * (m-j);
03.01.2014 Programarea calculatoarelor 55
Probleme rezolvate cu matrici
cout<<"Elementele matricei A sunt: \n"; for(i=1; i<=n; i++) { for(j=1; j<=m; j++) { cout.width(4); cout<<a[i][j]; } cout<<endl; } } 03.01.2014 Programarea calculatoarelor 56
Probleme rezolvate cu matrici
S se citeasc elementele unei matrici An,m, unde
n<=10 i m<=10, in care se retin numere reale.
S se interschimbe liniile matricii A în modul
urmtor:
• a doua linie cu penultima linie
• etc.
03.01.2014 Programarea calculatoarelor 57
Probleme rezolvate cu matrici
#include<iostream.h> int main() { double a[10][10], aux; int m, n, i, j; cout<<"Dati dimensiunile matricei \n"; cout<<"Dati numarul de linii n = "; cin>>n; cout<<"Dati numarul de coloane m = "; cin>>m;
03.01.2014 Programarea calculatoarelor 58
Probleme rezolvate cu matrici
for(i=1; i<=n; i++) for(j=1; j<=m; j++) { cout<<"a["<<i<<","<<j<<"]= "; cin>>a[i][j]; }
03.01.2014 Programarea calculatoarelor 59
Probleme rezolvate cu matrici
cout<<"Elementele matricei A sunt: \n"; for(i=1; i<=n; i++) { for(j=1; j<=m; j++) { cout.width(4); cout<<a[i][j]; } cout<<endl; }
03.01.2014 Programarea calculatoarelor 60
Probleme rezolvate cu matrici
//interschimbarea liniilor matricii A:
for (i=1; i<=n/2; i++) for (j=1; j<=m; j++) { aux = a[i][j]; a[i][j] = a[n+1-i][j]; a[n+1-i][j] = aux; }
03.01.2014 Programarea calculatoarelor 61
Probleme rezolvate cu matrici
cout<<"Matricea A cu liniile interschimbate:\n"; for(i=1; i<=n; i++) { for(j=1; j<=m; j++) { cout.width(4); cout<<a[i][j]; } cout<<endl; } }
03.01.2014 Programarea calculatoarelor 62
Structura biletelor de examen
03.01.2014 Programarea calculatoarelor 63
Subiect I - Grile cu alegere multipl. Identificai litera care corespunde rspunsului corect. Subiect II - Algoritm în pseudocod Specializarea INGINERIE ENERGETICA: Subiect III – Enunul unei probleme având un exemplu specificat. Specializarea INGINERIA SISTEMELOR: Subiect III – Enunul unei probleme cu vectori sau matrici, având un exemplu specificat. Subiect IV – Enunul unei probleme cu funcii, având un exemplu specificat.
Câteva precizri Bibliografia necesar cursului: 1. Adrian Runceanu, Mihaela Runceanu, Noiuni de programare în
limbajul C++, Academica Brâncui, Târgu-Jiu, 2012, ISBN 978- 973-144-550-2, 483 pagini
2. Adrian Runceanu, Programarea i utilizarea calculatoarelor, Editura Academic Brâncui Targu-Jiu, 2003
3. Octavian Dogaru, C++ - Teorie i practic, volumul I, Editura Mirton, Timioara, 2004
4. O.Catrina, I.Cojocaru, Turbo C+, Editura Teora, Bucureti, 1993 5. D.Costea, Iniiere în limbajul C, Editura Teora, Bucureti, 1996 6. K.Jamsa, C++, Editura Teora,1999 7. K.Jamsa & L.Klander, Totul despre C si C++, Teora, 2004
03.01.2014 Curs - Programarea Calculatoarelor 64
03.01.2014 Programarea calculatoarelor 65
Câteva precizri
Referinele bibliografice nr. 1, 2 i 3 se pot împrumuta de la Biblioteca Facultii de Inginerie, Str. Geneva nr.3, Etaj I – lâng Decanat. 1. Suport curs - varianta electronic disponibil pe site-ul:
www.runceanu.ro/adrian 2. Îndrumar de laborator - varianta electronic disponibil pe site pentru fiecare lucrare de laborator.
03.01.2014 Curs - Programarea Calculatoarelor 66
Evaluare pe parcursul
03.01.2014 Curs - Programarea Calculatoarelor 67
30
Evaluare pe parcursul semestrului Prezenta curs si laborator Examen final
03.01.2014 Programarea calculatoarelor 68