Számítógépes szimulációk 1. Bevezetés BME Fizika Intézet 2015. szeptember 9.
Bevezetés A félév menete C-ismétlés, 1. rész Oktatók: Nagyfalusi Balázs: nagyfalusi@phy.bme.hu, F3 211. : tcsaba@eik.bme.hu, F3 mf. 7. Udvardi László: udvardi@phy.bme.hu, F3 mf. 5.
Bevezetés C-ismétlés Segédprogramok Véletlen számok Ising-modell (2 előadás) Rugós kristálymodell (2 előadás) Hasznos adatfájl-formátumok Szoros kötésű közeĺıtés Hálózatok (2 előadás) Játékelmélet
Félévközi jegy Órai számonkérés nincs Összesen 11 db otthoni : egy hét van a beküldésre Feladatonként max. 2 pont, két nál max. 3 pont; értékelés: 21-24 jeles 18-20 jó 15-17 közepes 12-14 elégséges 0-11 elégtelen Késedelmes beküldés: Késedelmi díj ellenében a pótlási hét végéig. Minimum 12 pontot késés nélkül beküldött okból kell elérni. Beküldött javítására nincs lehetőség.
Honlap Honlap: http://newton.phy.bme.hu/moodle Órai anyagok Hirdetmények beküldése Fiók: felhasználónév és jelszó lekérdezhető a honlapon 1 1 Aki nem volt ott az első előadáson, küldjön egy e-mailt.
Feltöltés: 1 db zip fájl forráskód: Első sor: /* Név, sorszáma, dátum */ megjegyzések minden saját függvényhez, illetve fontosabb változóhoz (mit csinál, mit tárol) átlátható kódolási stílus makefile (ha van) (esetleg) eredmények: ábra, szöveges fájl stb. Senki ne küldjön be lefordított programot!.exe Javítás: 2 héten belül Lefordul és azt csinálja, ami a kíırásban szerepel: 2 pont Kisebb-nagyobb hiba, de használható részeredmény: 1 pont Egyébként: 0 pont
Programozási nyelv: C Órán: IDE: Visual Studio (http://www.visualstudio.com/) OS: Windows, Linux Persze nem kötelező...
Windows alatt Visual Studio 2013 (Windows 7+): http://www.microsoft.com/en-us/download/details.as Visual Studio 2005 (Windows XP+): http://software.eik.bme.hu/microsoftcampus/regi_ve Dev-C++: http://sourceforge.net/projects/orwelldevcpp/files Dev-Cpp 5.7.1 MinGW 4.8.1 Setup.exe Eclipse: http://www.eclipse.org/downloads/ Eclipse IDE for C/C++ Developers MinGW (GCC): http://sourceforge.net/projects/mingw/files/instal mingw-get-setup.exe GSL (VS 2010): http://www2.imperial.ac.uk/~shb104/c/files/other/g PATH környezeti változó módosítása
A fordítás lépései my.c Előfordító my.c.tmp Fordító my.o Linker Futtatható áll. Előfordító: include-ok Szimbólumok és makrók behelyettesítése Feltételes fordítás Fordító: Kimenet: gépi kód, de nem tartalmazza például a standard könyvtári függvények kódját (pl. scanf) Linker: Megkeresi a hiányzó elemeket és egy darab futtatható állományt készít
Előfordító (preprocessor) Parancsok: #-tól a sor végéig. Példák: / Alap header / #i nclude <s t dio. h> / Sajat header / #i nclude s a j a t. h / F e l t e t e l e s d e f i n i c i o / #i f n d e f PI #define PI 3.14 #endif / Parameteres makro / #define MAX(a, b) (( a ) > (b)? (a) : (b) )
Hibák Figyelmeztetés: A forráskód lefordul, nem feltétlenül jelent problémát. Hiba: Előfordítás során (pl. nem találja a megadott header fájlt) során (pl. szintaktikai hiba) Linkelés során (pl. a linker nem találja a megadott könyvtári függvényt) Futás során (pl. tömb túlcímzése) Logikai hiba (lefut, de nem azt csinálja, amit szeretnénk) Példák: errors.c
Globális, lokális Cím és érték Deklarálás: ANSI C: blokkok elején Láthatóság: saját blokkban, illetve olyan részblokkokban, ahol nem deklaráltuk újra Túlcsordulás Tárolási időtartam: automatikus: blokk eleje blokk vége statikus: program eleje program vége dinamikus: allokáció és felszabadítás is kérésre Példa: vars.c
Műveletek egész és valós számokkal Szokásos: a + b, a - b, a * b Osztás: int/int, double/double, int%int Automatikus típuskonverzió: pl. double/int Bitenkénti műveletek egészeknél: ~a, a b, a & b, a ^ b, a >> b, a << b Cím: &a Példa: numbers.c
Deklarálás és definíció Paraméterek átadása: érték vagy cím Visszatérési érték Mellékhatás Példa: function.c
if, switch hez kapcsolódó operátorok ==,!=, <=, <, >=, >, &&, Figyelem: = is lehetséges, de az értékadás. Visszatérési értéke pedig az átadott érték maga. Figyelem: & és is lehetséges, de az bináris ÉS, illetve VAGY. Egyenlőség ellenőrzése double típusú változók között switch: A break; fontos! Példa: conditional.c
for, while, do while While while(condition){... } For for(initialization; condition; step){... } ekvivalens: i n i t i a l i z a t i o n ; while ( condition ) {... step ; } Do while do{... }while(condition) A blokk tartalma a feltételtől függetlenül legalább egyszer kiértékelődik. break Kilép a ciklusból continue Visszamegy a ciklus elejére Példa: loops.c
Cél a és a fejlesztői környezet használatának gyakorlása Nem számít bele az értékelésbe toledo.c forrásfájl letöltése a honlapról, futtatás Beküldendő: rövid összefoglalás arról, hogy mit csinál a program (érdemes parancssori paramétereket használni)