de ce să învăț un limbaj de...

26

Upload: others

Post on 04-Jan-2020

8 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: De ce să învăț un limbaj de programare?phys.ubbcluj.ro/~vasile.chis/cursuri/info/c01ppt.pdfPentru că există în planul de învățământ ... De ce C? Exista de peste 30 de ani
Page 2: De ce să învăț un limbaj de programare?phys.ubbcluj.ro/~vasile.chis/cursuri/info/c01ppt.pdfPentru că există în planul de învățământ ... De ce C? Exista de peste 30 de ani

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

Page 3: De ce să învăț un limbaj de programare?phys.ubbcluj.ro/~vasile.chis/cursuri/info/c01ppt.pdfPentru că există în planul de învățământ ... De ce C? Exista de peste 30 de ani

Pentru că există în planul de învățământ ...

Page 4: De ce să învăț un limbaj de programare?phys.ubbcluj.ro/~vasile.chis/cursuri/info/c01ppt.pdfPentru că există în planul de învățământ ... De ce C? Exista de peste 30 de ani

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

Page 5: De ce să învăț un limbaj de programare?phys.ubbcluj.ro/~vasile.chis/cursuri/info/c01ppt.pdfPentru că există în planul de învățământ ... De ce C? Exista de peste 30 de ani

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)

Page 6: De ce să învăț un limbaj de programare?phys.ubbcluj.ro/~vasile.chis/cursuri/info/c01ppt.pdfPentru că există în planul de învățământ ... De ce C? Exista de peste 30 de ani

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

Page 7: De ce să învăț un limbaj de programare?phys.ubbcluj.ro/~vasile.chis/cursuri/info/c01ppt.pdfPentru că există în planul de învățământ ... De ce C? Exista de peste 30 de ani

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:

Page 8: De ce să învăț un limbaj de programare?phys.ubbcluj.ro/~vasile.chis/cursuri/info/c01ppt.pdfPentru că există în planul de învățământ ... De ce C? Exista de peste 30 de ani

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

Page 9: De ce să învăț un limbaj de programare?phys.ubbcluj.ro/~vasile.chis/cursuri/info/c01ppt.pdfPentru că există în planul de învățământ ... De ce C? Exista de peste 30 de ani

Exemplu: 𝑒−𝑥2= −1 𝑘∞

𝑘=0

𝑥2𝑘

𝑘!

Page 11: De ce să învăț un limbaj de programare?phys.ubbcluj.ro/~vasile.chis/cursuri/info/c01ppt.pdfPentru că există în planul de învățământ ... De ce C? Exista de peste 30 de ani
Page 12: De ce să învăț un limbaj de programare?phys.ubbcluj.ro/~vasile.chis/cursuri/info/c01ppt.pdfPentru că există în planul de învățământ ... De ce C? Exista de peste 30 de ani
Page 13: De ce să învăț un limbaj de programare?phys.ubbcluj.ro/~vasile.chis/cursuri/info/c01ppt.pdfPentru că există în planul de învățământ ... De ce C? Exista de peste 30 de ani
Page 14: De ce să învăț un limbaj de programare?phys.ubbcluj.ro/~vasile.chis/cursuri/info/c01ppt.pdfPentru că există în planul de învățământ ... De ce C? Exista de peste 30 de ani
Page 15: De ce să învăț un limbaj de programare?phys.ubbcluj.ro/~vasile.chis/cursuri/info/c01ppt.pdfPentru că există în planul de învățământ ... De ce C? Exista de peste 30 de ani
Page 16: De ce să învăț un limbaj de programare?phys.ubbcluj.ro/~vasile.chis/cursuri/info/c01ppt.pdfPentru că există în planul de învățământ ... De ce C? Exista de peste 30 de ani
Page 17: De ce să învăț un limbaj de programare?phys.ubbcluj.ro/~vasile.chis/cursuri/info/c01ppt.pdfPentru că există în planul de învățământ ... De ce C? Exista de peste 30 de ani
Page 18: De ce să învăț un limbaj de programare?phys.ubbcluj.ro/~vasile.chis/cursuri/info/c01ppt.pdfPentru că există în planul de învățământ ... De ce C? Exista de peste 30 de ani
Page 19: De ce să învăț un limbaj de programare?phys.ubbcluj.ro/~vasile.chis/cursuri/info/c01ppt.pdfPentru că există în planul de învățământ ... De ce C? Exista de peste 30 de ani

Se va tine cont de situatii

neuzuale!!

Page 20: De ce să învăț un limbaj de programare?phys.ubbcluj.ro/~vasile.chis/cursuri/info/c01ppt.pdfPentru că există în planul de învățământ ... De ce C? Exista de peste 30 de ani

a, b – nr. intregi (folosim valoarea returnata de scanf)

Ce se intampla daca a<b?

Page 21: De ce să învăț un limbaj de programare?phys.ubbcluj.ro/~vasile.chis/cursuri/info/c01ppt.pdfPentru că există în planul de învățământ ... De ce C? Exista de peste 30 de ani

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

Page 22: De ce să învăț un limbaj de programare?phys.ubbcluj.ro/~vasile.chis/cursuri/info/c01ppt.pdfPentru că există în planul de învățământ ... De ce C? Exista de peste 30 de ani

START STOP

Page 23: De ce să învăț un limbaj de programare?phys.ubbcluj.ro/~vasile.chis/cursuri/info/c01ppt.pdfPentru că există în planul de învățământ ... De ce C? Exista de peste 30 de ani

Orice algoritm poate fi reprezentat ca o combinatie de 3 structuri de control de baza

Page 24: De ce să învăț un limbaj de programare?phys.ubbcluj.ro/~vasile.chis/cursuri/info/c01ppt.pdfPentru că există în planul de învățământ ... De ce C? Exista de peste 30 de ani
Page 25: De ce să învăț un limbaj de programare?phys.ubbcluj.ro/~vasile.chis/cursuri/info/c01ppt.pdfPentru că există în planul de învățământ ... De ce C? Exista de peste 30 de ani

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;

}

Page 26: De ce să învăț un limbaj de programare?phys.ubbcluj.ro/~vasile.chis/cursuri/info/c01ppt.pdfPentru că există în planul de învățământ ... De ce C? Exista de peste 30 de ani

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.