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
in Excel)
De ce să învăț un limbaj de programare?
11 Impar
6 Par
9 Impar
7 Impar
6 Par
16 Par
10 Par
14 Par
12 Par
9 Impar
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”
De ce nu C++? Programarea “orientata obiect” este o complicatie ne-necesara pentru calculul stiintific in fizica
http://www-pnp.physics.ox.ac.uk/~tseng/teaching/lab/handbook_C.pdf
Syllabus
FLR1204
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)
http://en.wikipedia.org/wiki/C_mathematical_functions
Link-uri utile
Functii matematice:
http://www.programmingsimplified.com/c/graphics.h Functii grafice:
http://www.cplusplus.com/doc/tutorial/
Limbajul C++:
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
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
Bibliografie web:
Definitii
CURS 1
Dell , Xeon Up 3.5GHz, 8 cores 16GB RAM DDR4 1TB SATA 7200
Fujitsu-Siemens Server 4 procesoare Intel Xeon [email protected], 16 cores 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
48°51′24″N 2°21′03″E
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
sau: daca n<2
vom folosi valoarea returnata de scanf la citirea unui intreg
sau: daca i<=n
int cmmdc( int a, int b)
{
int r, cmmdc;
do
{
r=a%b;
cmmdc=b;
a=b;
b=r;
}
while(r!=0);
return cmmdc;
}
//functia fact cu instructiune for
double fact(int n)
{
double f=1.0;
int i;
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)
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
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.