De ce s nv un limbaj de programare
De ce să învăț un limbaj de programare? q Programele comerciale sunt scumpe q Nu exista un program (comercial sau gratis) pentru fiecare problema particulara q Dezvoltarea gandirii logice, algoritmice q Intelegerea mai profunda a functionarii dispozitivelor electronice q Cresterea numarului optiunilor pentru obtinerea unui job q Foarte multe probleme de fizica pot fi rezolvate (numai) cu ajutorul computerelor => necesitatea unui program q 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 q Cresterea productivitatii folosirii pachetelor software disponibile (de ex. Macros in Excel)
Pentru că există în planul de învățământ. . .
De ce C? q Exista de peste 30 de ani (programare adevarata) o multe programe disponibile o probleme legate de limbaj au fost rezolvate q Limbaj puternic si versatil q Precursor pentru C++, Java, C# q Folosit pe scara larga de catre comunitatea stiintifica q Eficienta sporita in programare (pointeri, lucrul pe biti, alocare dinamica a memoriei, etc. ) q Resurse bibliografice multiple, numar mare de librarii existente q Multe instrumente stiintifice sunt programate in C (de ex. Camere CCD) q 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 FLR 1204
Link-uri utile Limbajul C++: http: //www. cplus. 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/cse 1301/2001 S 1/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/phys 4007/ http: //www. phys. unsw. edu. au/~mcba/phys 2020/ http: //www. physics. arizona. edu/~dpsaltis/Phys 305/ http: //farside. ph. utexas. edu/teaching/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 3. 5 GHz, 8 cores 16 GB RAM DDR 4 1 TB SATA 7200 Fujitsu-Siemens Server 4 procesoare Intel Xeon MP@3. 00 GHz, 16 cores 40 GB RAM 538 GB HDD HPC@UBB 84 noduri (128 GB RAM, 500 GB HDD) Doua procesoare a cate 10 core Intel Xeon E 5 -2660 v 3 @ 2. 6 GHz ~ 80 TB RAM ~ 72 TB HDD 7. 2 K 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
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 … n! = 1*2*3*…*n vom folosi valoarea returnata de 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) { int r, cmmdc; do { //functia fact cu instructiune for double fact(int n) { double f=1. 0; int i; r=a%b; cmmdc=b; a=b; b=r; } while(r!=0); return cmmdc; } if(n>1) for(i=2; i<=n; i++) f=f*i; return f; }
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 273
- Slides: 26