BME VEGYÉSZMÉRNÖKI ÉS BIOMÉRNÖKI KAR MESTERSZINTŰ MŰSZERES ANALITIKA KÉMIA SZAKIRÁNYÚ TOVÁBBKÉPZÉSI SZAK INFORMATIKA (SZÁMÍTÁSTECHNIKA) 2012/2013. őszi félév Tanár: Kollárné Dr. Hunek Klára, (kollarne@mail.bme.hu) Szervetlen és Analitikai Kémia Tanszék, Ch. I/9 tárgy honlapja: http://knight.kit.bme.hu/szakmern másolat : http://goliat.eik.bme.hu/~kollarne/szakmern
40 – 59 pont: 2 ; 60 – 74 pont: 3 ; 75 – 89 pont: 4 ; 90 ponttól: 5 Előadás: 2012. nov. 12. és 19. 1115-13h (CH. 305) Gyakorlatok a CH. gépteremben 2013. jan. (14.) 900-1830 Követelmények Az előadásokon kijelölt HF-k határidőre történő beadása A géptermi gyakorlatok gyakorló feladatainak megoldása Az utolsó komplex labor-feladat legalább 40%-os szinten (min. 32p, max 80p.) történő megoldásával megajánlott vizsgajegy szerezhető. A komplex labor-feladattal (KLF80p) ill. a kijelölt HF* beadásokkal szerzett félévközi pontok alapján a megajánlott vizsgajegyek ponthatárai: 40 – 59 pont: 2 ; 60 – 74 pont: 3 ; 75 – 89 pont: 4 ; 90 ponttól: 5 HF*: (HF1+HF2)*S ahol 0HFk6 ; 1S2 ; (S=1+[(KLF-32)/48]2 ha KLF32)
MS Office részei Ezekkel foglalkozunk
Januári labor a Ch gépteremben Előadások Nov. 12. Az Ms Office részei, az Ms Excel részei Excel alapok: Cellahivatkozások, munkalap-függvények, Solver A Visual Basic for Excel alapjai <Sub, End Sub>, <InputBox>, <cells(sor, oszlop)> értékadás, <If Then Else End If>, <GoTo>, típusok HF1 Nov. 19. Ciklusok: <Do Loop, Until és While >, <For Next> Tömbök, olvasás fájlból HF2 Januári labor a Ch gépteremben Access alapok. (Excel munkalapból indulva) VB for Excel: Alprogramok: Function és paraméteres Sub Makrók rögzítése UserForm megtervezése, létrehozása, alkalmazása Komplex feladat megoldása
Az Ms Excel részei: Worksheet (Munkalap) Diagram (Ábra-lap) Modul (Modul-lap) UserForm (Űrlap)
Egy kis Excel emlékeztető 1. Excel alapjai: Cellák típusa, szegély, háttérszín Munkalap létrehozása, átnevezése Adatfájl betöltése, tizedesvessző! Grafikon készítése Pont XY ( Grafikon !) 2. Írjuk be egy Excel munkalapba az itt látható táblázat oszlop-címeit, valamint a B2, E1, E2, F1, F2 cellák tartalmát. Ezután töltsük ki az A oszlopot, majd a B és C oszlopokat a következő formulák „lehúzásával”: b3= b2+(a3-a2)*4*cos(5*a3) c2= $f$1*sin($f$2*a2)/5 Változtassuk a ill. b értékét 2,3 ill. 5,8-ra - “
Solver Mivel a C oszlop a c2= $f$1*sin($f$2*a2)/5 formula „lehúzásával” készült, minden cellája, s ezeken keresztül a D oszlop celláinak értékei is függenek az F1 és F2 cellák értékeitől. - Minimalizáljuk Soverrel a D17 cella értékét, az F1 és F2 cellák értékét változtatva. Kérjünk Eredmény jelentést!
A Solver funkciói: A Solver elérése: Szélsőérték keresés Nemlineáris egyenletek, egyenletrendszerek megoldása Lineáris programozási feladatok megoldása A korlátozó feltételek lehetnek egyenletek, vagy egyenlőtlenségek A Solver elérése: Excel 2003 Eszközök Solver [ Tools Solver] Ha a Solver-t nem látja az Eszközök között, kapcsolja be a Bővítménykezelő-ben! Excel 2007, 2010 Adatok Elemzés Solver Ha a Solver-t nem látja itt, kapcsolja be a Bővítménykezelő-ben, melynek elérése: Excel beállításai Bővítmények (Kezelés: Excel bővítmények) Ugrás 8
fő paramétereinek beállítása 2003 A Solver fő paramétereinek beállítása 2010 9
eredménykérő űrlap beállítása 2003 A Solver eredménykérő űrlap beállítása 2010 10
A Solver eredményjelentés különböző Excel verziókban 2003 A Solver eredményjelentés különböző Excel verziókban 2010 11
Egyenletrendszer megoldása Solverrel
Programozás a program az utasításokat sorban hajtja végre, kivéve….(ld. később) pontosan olyan, mintha egy könyvet olvasnánk, amiben le van írva, hogy sorjában mit kell tennünk éppen most, beleértve, hogy hova lapozzunk a következő teendő elolvasásához kicsit „kínai”, de meg lehet szokni sokféle kínai van, de ha egyet ismer az ember, az nagyon segít a többi felismerésében a programozás filozófiáját érdemes megtanulni
Egy „programocska” A blokkdiagram: A VBA program: Amit a program kiír Start Kiír: „x” „x köbe” x=2 kiír: x, x3 x=x+1 x<=8 ? igen nem Stop Amit a program kiír
VBA program felépítése: Sub <neve> ( ) <esetleg deklarációk> <utasítások> End Sub A deklaráció (ami ebben a példában nincs) megadja a változók típusát: Ha pl. a és b számok, és értékük 1 ill. 2, akkor a+b kifejezés értéke 3 lesz. De ha a és b típusa string, és értékük „1” ill. „2”, akkor a+b értéke „12” lesz. Amit a program kiír
A program az adatokat változókban tárolja (nevükkel egy „rekeszt” jelölünk, amibe számokat/betűket írunk) pl. ha a=2, akkor x=a^3-15 = -7 vagy, pl. ha b=8, akkor y=3*b/2 = 12 a számítógép az a, b, vagy bármely más változót mindig az értékével helyettesíti akkor is, ha nem adtunk neki értéket, csak akkor nem tudjuk, milyen értékkel… A számítógép szempontjából fontos a változó típusa a műveletek miatt egész : Integer tört: Single, Double szöveg: String pl. ha x egész és x=5/2, akkor 2 lesz x értéke pl. ha y tört és y=5/2, akkor 2.5 lesz y értéke de pl. „nótás”/2 nem lesz „félnótás”…
Műveletek Adatforgalom Kiiratás (munkalapra) cells(1,1)=„Sziasztok!!” Matematikai alapműveletek x=1+2 y=18-2*x x=y/24 String műveletek ha s=„osztogat”, akkor s=„f”+s után s=„fosztogat” Műveletek Kiiratás (munkalapra) cells(1,1)=„Sziasztok!!” Adatbeolvasás cellából a=cells(1,1) Adatbeolvasás billentyűzetről x=InputBox(”x?”) Adatforgalom
feltételesen végrehajtandó utasítás és feltételes utasítás Az X értékek (mindkét esetben): 2 , -4 , 3 , -1 megad: X , kiír: X kiír: Y Y = X*X X páros ? igen nem megad: X , kiír: X X páros ? igen Y = X*X nem Y = X + 8 IF <log.kif.> THEN <utasítás> Kiírás: (2,4) ; (-4,16 ) ; (3,16 ) ; (–1,16 ) kiír: Y IF <log.kif.> THEN <ut.1> ELSE <ut.2> Kiírás: (2,4 ) ; (-4,16 ) ; (3,11 ) ; (-1,7 ) 18 12 18
A korábbi Excel feladat VBA programmal 1. Korábban beírtuk egy Excel munkalapba az itt látható táblázat oszlop-címeit, valamint a B2, E1, E2, F1, F2 cellák tartalmát. Ezután kitölttöttük az A oszlopot, majd a B és C oszlopokat a következő formulák „lehúzásával”: b3= b2+(a3-a2)*4*cos(5*a3) c2= $f$1*sin($f$2*a2)/5 2. Új feladat: Az Excel munkalap A oszlopát átmásoltuk egy másik munkalapra. Ezután megnyitottuk a Visual Basic Editort (Eszközök Makrók VB Editor), és beszúrtunk egy modul-lapot, ahová beírtuk a programot: Sub elso() Dim x As Double, k As Integer Dim a#, b# Cells(1, 2) = "f": Cells(1, 3) = "fc" k = 2: Cells(k, 2) = 0 x = Cells(k, 1) a = InputBox("a?", "itt vagyok", 2) b = InputBox("Add meg b értékét", , 6) Cells(k, 3) = a * Sin(b * x) / 5 vissza: k = k + 1 Cells(k, 2) = Cells(k - 1, 2) + (x - Cells(k - 1, 1)) * 4 * Cos(5 * x) If k < 16 Then GoTo vissza Cells(17, 1) = "itt a vége" End Sub - “
Eszközök Beállítások Biztonság Makróvédelem Közepes Figyelem! 1.) Excel 2007 ill. 2010-ben a makrót tartalmazó fájlokat xlsm kiterjesztésű (makróbarát) fájlba kell menteni! 2.) Ha az Excel-2003 verziót használ, és az Excel biztonsági szintje a makróvédelem szempontjából megfelelően van beállítva, makrót tartalmazó fájl megnyitásakor a következő figyelmeztetés jelenik meg: Amennyiben Excel-2003-ban nem ez figyelmeztetés jelenik meg, vagy egyáltalán nem jelenik meg figyelmeztetés, állítsa be a megfelelő biztonsági szintet: Eszközök Beállítások Biztonság Makróvédelem Közepes
1.HF Tárgy honlapja: http:// knight.kit.bme.hu/szakmern másolat: http://goliat.eik.bme.hu/~kollarne/szakmern Elküldendő nov. 17-ig: <Sajatnev>.xlsm (vagy xls) fájl a kollarne@mail.bme.hu címre Készítse el az itt megadott táblázat “A” oszlopát „lehúzással”, valamint töltse ki a táblázat fejlécét, a B2 cellát és az “E” és “F” oszlopok első két sorát. Töltse ki a táblázat második és harmadik oszlopát az alábbi formulák “lehúzásával”: b3=b2+(a3-a2)*5*sin(4*a3) c2= $f$2*(1-cos($f$1*a2))/2 Készítse el a táblázat első 3 oszlopából az itt látható diagramot. A „D” oszlopot töltse ki a d2=(c2-b2)^2 formula „lehúzásával”, a D16 cellába kerüljön a fölötte levő számok összege. Minimalizálja a D16 cella értékét Solver használatával! Kérjen Eredmény jelentést! Az „A” oszlopot másolja át egy másik Excel munkalapra. Írjon VBA programot a munkalap „B” és „C” oszlopának kitöltésére úgy, hogy az 1. és 2. feladat szerinti értékek kerüljenek a megfelelő cellákba! F1 és F2 cellákba ne írjon számot, helyettük c és k változókat használjon, melyek értékét InputBox-szal adja meg! A 16. sor 1. cellájába a program írja ki az ön nevét!