Sunteți pe pagina 1din 26

De ce să învăț un limbaj de programare?

 Programele comerciale sunt scumpe


 Nu exista un program (comercial sau gratis) pentru fiecare problema particulara
 Dezvoltarea gandirii logice, algoritmice
 Intelegerea mai profunda a functionarii dispozitivelor electronice
 Cresterea numarului optiunilor pentru obtinerea unui job
 Foarte multe probleme de fizica pot fi rezolvate (numai) cu ajutorul
computerelor => necesitatea unui program
 Echipamentele de cercetare, de productie sau pentru diagnostic si tratament
medical folosesc rutine de calcul pentru prelucrarea datelor => intelegerea modului
de lucru si folosirea eficienta a infrastructurii experimentale
 Cresterea productivitatii folosirii pachetelor software disponibile (de ex. Macros
11 Impar
in Excel) 6 Par
9 Impar
7 Impar
6 Par
16 Par
10 Par
14 Par
12 Par
9 Impar
Pentru că există în planul de învățământ ...
De ce C?
 Exista de peste 30 de ani (programare adevarata)
o multe programe disponibile
o probleme legate de limbaj au fost rezolvate
 Limbaj puternic si versatil
 Precursor pentru C++, Java, C#
 Folosit pe scara larga de catre comunitatea stiintifica
 Eficienta sporita in programare (pointeri, lucrul pe biti,
alocare dinamica a memoriei, etc.)
 Resurse bibliografice multiple, numar mare de librarii existente
 Multe instrumente stiintifice sunt programate in C (de ex. Camere CCD)
 Compilatoare “free”

http://www-pnp.physics.ox.ac.uk/~tseng/teaching/lab/handbook_C.pdf

De ce nu C++?
Programarea “orientata obiect” este o complicatie ne-necesara pentru calculul
stiintific in fizica
Evaluare: acordarea notei
2.5 p – proba orala teoretica (in sesiune)
2.5 p – proba practica (in sesiune)
2.0 p – doua teste pe parcurs
(saptamana 6 (03.04) si saptamana 12 (22.05), 1 p pt. fiecare)
1.0 p – bonus prezenta si activitate la curs si laborator
1.0 p – teme (minim 5 teme)
1.0 p – proiect individual, la alegere (optional)

Syllabus

FLR1204
Link-uri utile
Limbajul C++: http://www.cplusplus.com/doc/tutorial/
Functii matematice: http://en.wikipedia.org/wiki/C_mathematical_functions
Functii grafice: http://www.programmingsimplified.com/c/graphics.h

Bibliografie:
1. B.W. Kernighan, D.M. Ritchie, The C Programming Language, Prentice Hall, Inc., 1988
2. L.Negrescu, Limbajele C şi C++ pentru începători, Ed.Microinformatica, Cluj, 1994
3. T.A. Beu, Introduction to Numerical Programming: A Practical Guide for Scientists and Engineers
Using Python and C/C++, CRC Press, Taylor and Francis Group, 2014
4. T.A. Beu, Calcul numeric in C, Editura Albastra, Cluj-Napoca, 1999
5. D. Ciurchea, V. Chiş, Prelucrarea datelor experimentale, Litografia UBB, Cluj-Napoca, 1995
6. F.M. Boian, Bazele matematice ale calculatoarelor, Universitatea Babeş-Bolyai, Cluj-Napoca, 2003
7. V. Chiş, Informatică aplicată în fizică, note de curs, www.phys.ubbcluj.ro/~vchis/cursuri/info
8. William H. Press, Saul A. Teukolsky, William T. Vetterling, Brian P. Flannery, Cambridge University
Press, 1992
9. Ingrid Zukerman, Joselito Chua, Monash University:
http://www.csse.monash.edu.au/courseware/cse1301/2001/2001S1/index.html
10. PHYSICS C PROGRAMMING, COURSE, UNIVERSITY OF OXFORD, PHYSICS TEACHING FACULTY,
http://www-pnp.physics.ox.ac.uk/~tseng/teaching/lab/handbook_C.pdf
11. Răzvan Andone, Ilie Gâbarcea, Algoritmi fundamentali – o perspectiva C++, Ed. Libris, Cluj-
Napoca, 1995
Bibliografie web:
http://faculty.etsu.edu/lutter/courses/phys4007/
http://www.phys.unsw.edu.au/~mcba/phys2020/
http://www.physics.arizona.edu/~dpsaltis/Phys305/
http://farside.ph.utexas.edu/teaching/329/329.pdf
http://www.ualberta.ca/~kbeach/comp_phys/cpp_basic.html
http://www-pnp.physics.ox.ac.uk/~tseng/teaching/lab/handbook_C.pdf
http://www.eskimo.com/~scs/cclass/notes/top.html
https://blog.udemy.com/c-tutorial-learn-c-in-20-minutes/
http://www.physics.drexel.edu/courses/Comp_Phys/General/C_basics/c_tutorial.html
CURS 1
Definitii

Dell , Xeon Up
Fujitsu-Siemens Server
3.5GHz,
4 procesoare Intel Xeon
8 cores
MP@3.00GHz,
16GB RAM DDR4
16 cores
1TB SATA 7200
40GB RAM
538 GB HDD

HPC@UBB
84 noduri (128GB RAM, 500GB HDD)
Doua procesoare a cate 10 core
Intel Xeon E5-2660 v3 @ 2.6 GHz
~ 80 TB RAM
~ 72 TB HDD 7.2K
Darius Bufnea, Virginia Niculescu, Gheorghe Silaghi, Adrian Sterca, "Babeş-Bolyai
University High Performance Computing Center", STUDIA UNIV. BABES-BOLYAI,
INFORMATICA, Volume LXI, Number 2, 2016, pp. 54-69
∞ 2𝑘
−𝑥 2
𝑥
Exemplu: 𝑒 = −1 𝑘
𝑘!
𝑘=0
48°51′24″N 2°21′03″E
Se va tine
cont de
situatii
neuzuale!!
a, b – nr. intregi (folosim valoarea returnata de scanf)

Ce se intampla daca a<b?


0! = 1
1! = 1
2! = 1*2
3! = 1*2*3
4! = 1*2*3*4
5! = 1*2*3*4*5
… vom folosi valoarea returnata de
n! = 1*2*3*…*n scanf la citirea unui intreg

sau: daca n<2

sau: daca i<=n


START STOP
Orice algoritm poate fi reprezentat ca o combinatie de 3 structuri de control de baza
int cmmdc( int a, int b) //functia fact cu instructiune for
{
int r, cmmdc; double fact(int n)
{
do double f=1.0;
{ int i;
r=a%b;
cmmdc=b; if(n>1)
a=b; for(i=2;i<=n;i++)
b=r; f=f*i;
} return f;
while(r!=0); }
return cmmdc;
}
Tema 1
Elaboraţi o schemă logică pentru înmulţirea a două numere pe baza metodei "a la russe".
(vezi Răzvan Andone, Ilie Gâbarcea, Algoritmi fundamentali – o perspectiva C++, Ed. Libris, Cluj-Napoca, 1995)

Se scriu deînmulţitul şi înmulţitorul pe aceeaşi linie, ca şi capetele a două coloane.


Pe următoarea linie, în prima coloană se pune rezultatul împărţirii întregi a
deînmulţitului la 2, iar pe a doua coloană, rezultatul înmulţirii înmulţitorului cu 2.
Se continuă pe următoarele linii până când se ajunge pe coloana deînmulţitului la
valoarea 1.
Pentru obţinerea rezultatului înmulţirii se adună valorile din coloana înmulţitorului
care au ca şi corespondent o valoare impară în coloana deînmulţitului.

D I = I daca D este
impar, altfel 0
21 13 13
10 26 0
5 52 52
2 104 0
1 208 208
273

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