5. előadás Műszaki informatika
Előző órán Számítógépes biztonság, trendek Vírusok, SPAM, botnet, adathalászat stb. Vírusölők, tűzfalak Mobil biztonság Titkosítási módszerek Tömörítők Irodai alkalmazások, LibreOffice PDF
Óravázlat Szoftverfejlesztés általában Objektum-orientáltság Programozási nyelvek Mesterséges intelligencia CAD-rendszerek Számítógépes grafika Digitális képfeldolgozás
Miért beszélünk a programozásról? Steve Jobs szerint: “Learning to program teaches you how to think. Computer science is a liberal art.”
Szoftverfejlesztés (software engineering) Definíció: tudományos eredmények és módszerek alkalmazása a valós problémák számítógéppel támogatott megoldásában Ágai: Rendszerfejlesztés (system engineering) Információfeldolgozás (information engineering) Tudásalapú információfeldolgozás (knowledge engineering)
Vízesés-modell
V-modell
Szoftverfejlesztési eszközök Módszer/módszertan: Számos, pl. SSADM, OOSD Gyors fejlesztés: Rapid Application Development (RAD), Rapid Prototyping (RP) Fejlesztői környezet: Sokféle, általános elnevezés: IDE (Integrated Development Environment) Fejlesztőkészletek: SDK (Software Development Kit) API (Application Programming Interface)
Microsoft IDE
Eclipse IDE
Arduino IDE
SSADM Structured System Analysis and Design Method Szabvány vagy ajánlás Jellemzői: Termékorientált Elvárásnak megfelelés igénye (együttműködés a felhasználóval) Erőforrás-kihasználás Elkülönülő logikai és fizikai tervezés Dokumentálás
OOSD Object Oriented Software Design (Object Oriented Programming – OOP) Alapelvek: Egységbezárás (encapsulation) Öröklés (inheritance) Polimorfizmus (polymorphism) Elemek: Osztály (class) – Példány (instance) www.gamemaker.nl
Game Maker
Objektum-osztályok Szuperosztály – osztály Elemei: Név Adatok, állapotok (argumentumok) Tagfüggvények (metódusok) Konstruktor-destruktor
CASE Computer Aided Software Engineering (Számítógéppel segített szoftverfejlesztés) Elemei: Probléma-definiálás, - elemzés Tervezés, modellezés Tesztelés, követés,karbantartás Dokumentálás, ellenőrzés, összehasonlítás UML
UML Unified Modeling Language Vizuális modellezés szimbólumrendszerrel Fontosabb diagramok (pl.): Osztálydiagram (class diagram) Komponensdiagram (component diagram) Állapotdiagram (state space) Használati eset diagram (use case)
Újrafelhasználhatóság Megtervezett vagy kidolgozott modellelemek ismételt felhasználásra Repository Programozás „mintázattal” (program patterns)
Programozási példák Nem algoritmus áttekintés! Makró programozás A Windows alatti programozás Programozás a web számára
Makró programozás (MS Word) A példa: kijelölés megvastagítása
Még hasznos makrók Példa kiadványszerkesztés: Springer LNCS sablon
Fordító? Értelmező? Fordító (compiler): a forráskód közvetlen gépi végrehajtásra alkalmassá tétele Szerkesztő (linker): objektumkód, könyvtárak, erőforrások összeszerkesztése Értelmező (interpreter): fordítás+szerkesztés+végrehajtás
„Fordítós” fejlesztés
Egyszerű programfutás Indítás Utasítások szekvenciális (!) végrehajtása Befejezés
Futtatás Windows alatt Eseményvezérelt (!) program MFC-elemek a GUI-hoz
Microsoft Foundation Classes Előre elkészített OO elemkönyvtár Cél: főként a grafikus felület elkészítése
Android rendszer-architektúra
Programozás Wizard-dal Megjegyzések (pl. TODO) elhelyezése Alapértelmezések beállítása Minimális funkcionalitás biztosítása Paraméter-állítás GUI-n keresztül Változó és függvénykezelés
Hatékony fejlesztői eszközök Debugger - Hibakereső Profiler – Teljesítmény-mérő SourceSafe – Verziózó és kódarchiváló InstallShield – Telepítőkészlet varázsló Visual Modeler – objektum-modellező (UML)
Programozási nyelvek története Plankalkül (1944) Fortran (1954): FORmula TRANslator Algol (1958) Basic (1964): Beginners All-purpose Standard Instruction Code Lisp (1969): LIst Processing C (1972) Pascal (1973) C++ (1980) Java (1990) Visual Basic (1994)
Programozási nyelvek csoportjai Imperatív, procedurális nyelvek: C, C++, Fortran, Algol, Pascal, Cobol… Applikatív, funkcionális nyelvek: Lisp… Objektumorientált nyelvek: Ada, Modula, Simula, Smalltalk, Java… Szabály alapú, logikai nyelvek: Prolog… Vizuális programozás: LabView, Simulink, VPL, NXT…
Vizuális programozási példák
Top 10 programozási nyelv
Top10 programozási nyelvek (2014)
Nyelvi elemek Vezérlési szerkezetek: Típusok Alprogramok Ciklusok, elágazások, vezérlésátadás Típusok Elemi: skalár, mutató Összetett Alprogramok
Egy példa: for-ciklus Pascal: for i:=0 to n do (lépés=1!) Basic: for i=0 to n step m C: for(i=0;i<n;i+=m) Matlab: for i=0:m:n
Operátortípusok Infix: Prefix: Postfix: b * b – 4 * a * c Sub(Mul(b,b), Mul(4,Mul(a,c))) Postfix: b b * 4 a c * * -
Web-programozás Cél: a weben elérhető (megnövelt) funkcionalitás (pl. dinamikus oldal) Eszköz: HTML + programnyelv Programnyelv: Általános célú: pl. C++ Script: pl. VBScript Speciális: pl. PHP
Web-es programnyelvek Java – Applet, Script… Perl (Practical Extraction Report Language) CGI (Common Gateway Interface) PHP (PHP Hypertext Preprocessor) VBScript HTML - VRML
PHP példa
Web-program
Algoritmus Definíció: előírás, amely adott feladattípus megoldásához szükséges műveletek megfelelő sorrendű összessége Jellemzői: Hatásosság (feladatkörök bővítése) Hatékonyság (idő-tár használat) Komplexitás (méretnövekedés hatása)
Mesterséges intelligencia (Artificial Intelligence – AI) Fejezetei: Neurális hálózatok (ANN) Fuzzy logika Genetikus algoritmusok (GA), programozás (GP) Következtető rendszerek: Szemantikus hálók, tételbizonyítók, logikai programnyelvek,valószínűségi hálók, szakértői rendszerek (ES) Hibrid megoldások
Wumpus-játék Objektumok: „Érzékelés”: Cél: Gödör, Wumpus, arany Fény, bűz, szél Cél: Megtalálni az aranyat rövid úton
Stratégiai játék
A CAD feladata Alapvetően: (Computer Aided Design) számítógéppel segített tervezés (!):2D-3D Szolgáltatások: Drótvázas geometria képzés 3D parametrikus alaksajátosságon alapuló modellezés, szilárdtest modellezés Szabad formájú felületmodellezés Műszaki rajz készítés a szilárdtest modellből Tervrészletek újbóli felhasználása Szabványos alkatrészek automatikus generálása Műhelyrajzok és darabjegyzékek készítése Alkatrészek és összeállítások könyvtárának kezelése Ábrázolási segítségek biztosítása (sraffozás, elfordítás, takart vonalak eltávolítása stb.) …
CAD-kapcsolatok CAM (Computer Aided Manufacturing): Gyártás, pl. NC-programozás, CNC-vezérlés CAE (Computer Aided Engineering): Elemzés, pl. végeselem-módszerek (FEM), áramlástani szimulációk (CFD), kinematika, optimalizálás CIM (Computer Integrated Manufacturing): Mindenféle gyártási fázisban alkalmazott számítógépek, pl. raktározás, erőforrás-tervezés stb.
Top 10 AEC (világszerte) Autodesk Bentley Systems Intergraph Nemetschek AVEVA Group Fukui Computer Fujitsu Tekla Tririga Graphisoft Group Architecture Engineering Construction Forrás: Gartner Group, Nemetschek
Néhány gyakori CAD-rendszer Általános célú: Autodesk AutoCAD Bentley MicroStation Speciális: Graphisoft ArchiCAD Siemens SiCAD Intergraph SolidEdge SewCAD Pro/ENGINEER
2D-s CAD rendszer BME K épület II. emelet Északi szárny
3D-s CAD rendszerek
Forrás: Homola Dávid, HungaroCAD Civil3D
Civil3D Forrás: Darabos Péter
C+I közműhálózat tervező
SEWCAD Forrás: Knolmár Marcell
Nemetschek
Forrás: Szoboszlai Mihály ArchiCAD
BIM Building Information Modeling Komplex 3D épület/szerkezet modell épület/építés Komplex 3D épület/szerkezet modell Kommunikációs felület a szakágaknak Virtuális kivitelezés Ütközésvizsgálat biztosítása Kivitelezés ütemezése; idő kezelése Üzemeltetés Szoftverek, formátumok, adatbázisok Forrás: directionsmag.com
SolidEdge
CATIA
A számítógépes grafika Computer Graphics (CG) Feladata: Előzetes információknak (tudásnak) megfelelő mesterséges (látvány)kép vagy azok sorozatának előállítása a képszerkesztés folyamán alkalmas rajzelemtár segítségével „Fénykép készítése egy virtuális világról – A világ leírása a modellezés” (Szirmay-Kalos László)
Néhány szoftver 3D Studio Max Maya Blender 3D
Legfontosabb műveletek Geometriai primitívek létrehozása, transzformációi Felületi jellemzők beállítása (textúra, anyag…) Kiegészítő hatások (részecskék, haj, robbanás…) Világítás beállítása Animációs beállítások Rendering
Textúrázás (3DSM)
Rendering-változatok (Blender)
Ellenőrző kérdések Mit fejeznek ki a szoftverfejlesztés modelljei? Mi a fordítós és értelmezős programfejlesztés közötti különbség? Nevezzen meg néhány programozási nyelvet! Mi a CAD célja, mennyiben támogatja az építőmérnök tevékenységét? Mi a feladata a számítógépes grafikának és a digitális képfeldolgozásnak?
Gyakorlati felmérők pótlása (!) Ideje: 2014.12.16. (kedd) 8:15-9:45 és 10:00-11:45 Helye: K.I.83 A és B terem Jelentkezés: a tanszéki bejárat (K.I.31) melletti asztalkánál az utolsó héttől Részletekről plakát a tanszéken! Különeljárási díjas pótlás: 2014.12.18. (csütörtök) 8:15-10:00 K.I.83 A és B terem (elmélet is)
Nagyzárthelyi infók (!) Helye: K. 234 Ideje: 2014.12.9.(kedd) Névsor A-L: 12:15-13:00 (40 perc munkaidő) Névsor M-Z: 13:00-14:00 (40 perc munkaidő) Mi kell hozzá? A3-as borító névvel és Neptun-kóddal Fényképes igazolvány Elméleti anyag: A tárgy honlapján: EA ppt, segédlet pdf (!) ZH pótlása: 2014.12.15. (hétfő) 10:15-12:00 Kmf79 (mindenkinek) Nem kell rá külön jelentkezni! Írók számának függvényében 2 turnusban
Köszönöm a(z egész féléves) figyelmet!