Magasszintű programozási nyelvek 1 BSc előadás

Slides:



Advertisements
Hasonló előadás
C++ programozási nyelv Gyakorlat hét
Advertisements

HTML5 alapú fejlesztő és futtató környezet megvalósítása
1 Hernyák Zoltán Programozási Nyelvek II. Eszterházy Károly Főiskola Számítástudományi tsz.
Objective-C Készítette: Zsivics Sanel NL5LWN. Tartalom bevezető történeti háttér rangsor elterjedtsége / népszerűsége alapok felépítése (.h,.m, xcode,
Adatbányászati technikák (VISZM185)
1 Budapesti Műszaki és Gazdaságtudományi Egyetem Méréstechnika és Információs Rendszerek Tanszék IT rendszerek modellezése Micskei Zoltán
IT infrastruktúra modellezése
JavaScript.
OBJEKTUMORIENTÁLT PROGRAM
Vizuális modellezés Uml és osztálydiagram UML eszközök
Programozás II. 3. Gyakorlat C++ alapok.
UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS Programozás II. 6. Gyakorlat const, static, dinamikus 2D.

Prog2, Java befejezés Magasszintű programozási nyelvek 2 mérnök informatikus BSc előadás Dr. Bátfai Norbert egyetemi adjunktus
Magasszintű programozási nyelvek 1 BSc előadás
Prog1, C++ befejezés Magasszintű programozási nyelvek 1 mérnök informatikus BSc előadás Dr. Bátfai Norbert egyetemi adjunktus
Magasszintű programozási nyelvek BSc előadás
„High – tech networking” – szakmai konferencia informatikusoknak, szeptember 24., Debrecen, Kölcsey Központ,
Prog2, Java a gyakorlatban
Prog1, C++ a gyakorlatban
Prog2, Software Engineering bevezetés Magasszintű programozási nyelvek 2 mérnök informatikus BSc előadás Dr. Bátfai Norbert egyetemi adjunktus
Prog2, AspectJ bevezetés Magasszintű programozási nyelvek 2 mérnök informatikus BSc előadás Dr. Bátfai Norbert egyetemi adjunktus
Magasszintű programozási nyelvek 2 mérnök informatikus BSc előadás
Magasszintű programozási nyelvek 2 mérnök informatikus BSc előadás
Magasszintű programozási nyelvek 2 BSc előadás
Prog2, Software Engineering bevezetés
4. Gyires Béla Informatikai Nap május 6.1 Márton Ágnes Debreceni Egyetem Informatikai Kar Informatikai Rendszerek és Hálózatok Tanszék A Virtual.
Jávácska és Hangyácska INFO ÉRA 2004 Békéscsaba Bátfai Mária Erika, Debreceni Egyetem, Egyetemi és Nemzeti Könyvtár Bátfai Norbert,
A Java programozási nyelvSoós Sándor 1/17 Java programozási nyelv 4. rész – Osztályok II. Nyugat-Magyarországi Egyetem Faipari Mérnöki Kar Informatikai.
A C++ programozási nyelvSoós Sándor 1/10 C++ programozási nyelv Gyakorlat - 5. hét Nyugat-Magyarországi Egyetem Faipari Mérnöki Kar Informatikai Intézet.
A C++ programozási nyelvSoós Sándor 1/15 C++ programozási nyelv Gyakorlat hét Nyugat-Magyarországi Egyetem Faipari Mérnöki Kar Informatikai Intézet.
Számítógépes képelemzés 2007/08 I. félév Előadó:Dr. Gácsi Zoltán Gyakorlatvezető:Póliska Csaba Koncz-Horváth Dániel.
A JAVA TECHNOLÓGIA LÉNYEGE Többlépcsős fordítás A JAVA TECHNOLÓGIA LÉNYEGE Platformfüggetlenség.
ESzabványok Workshop 1. előadás: Bevezető, eAdatmodell október 13.
OAIS. Megőrzés feladatai Viability –Meg kell őrizni a bitfüzér változatlanságát és olvashatóságát a tároló eszközön Rendbebility –Meg kell őrizni a bitfüzér.
Magasszintű programozási nyelvek 1 mérnök informatikus BSc előadás
4. Gyires Béla Informatikai Nap Debreceni Egyetem Informatikai Kar Új eredmények a Chomsky-féle (formális) nyelvtípusokkal kapcsolatban Dr. Nagy Benedek.
Objektumorientált tervezés és programozás II. 3. előadás
Programozási Nyelvek (C++) Gyakorlat Gyak 02.
2007. május 22. Debrecen Digitalizálás és elektronikus hozzáférés 1 DEA: a Debreceni Egyetem elektronikus Archívuma Karácsony Gyöngyi DE Egyetemi és Nemzeti.
MIKROELEKTRONIKA, VIEEA306
1 Hernyák Zoltán Programozási Nyelvek II. Eszterházy Károly Főiskola Számítástudományi tsz.
1 Hernyák Zoltán Programozási Nyelvek II. Eszterházy Károly Főiskola Számítástudományi tsz.
Hernyák Zoltán Programozási Nyelvek II.
A D programozási nyelv Angeli Dávid. Nagy vonalakban  C++  
UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS Programozás II. 4. Gyakorlat Függvény paraméterek, dinamikus.
IT rendszerek modellezése
GeoGebra A matematikai szabadszoftver tanuláshoz és tanításhoz
Objektumvezérelt rendszerek tervezése
Objektumvezérelt rendszerek tervezése 4.óra – Composite, Decorator © Fülöp Lajos.
Objektumvezérelt rendszerek tervezése
Középiskolai továbbtanulás 2014/15
Objektumvezérelt rendszerek tervezése 9.óra – Builder, Observer © Nagy Csaba.
Középiskolai továbbtanulás 2012/13 Készítette: Simon Zoltán ig.h.
Illés Zoltán ELTE Informatikai Kar
1Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor Programozás I. 1. gyakorlat.
Gyurkó György. Az OO programozás és tervezés története 1960-as évek: SIMULA (véletlen folyamatokat szimuláló programok írása) az OO nyelvek őse 1970-es.
Budapesti Műszaki és Gazdaságtudományi Egyetem Méréstechnika és Információs Rendszerek Tanszék R „Big Data” elemzési módszerek Kocsis Imre
Ficsor Lajos Objektumok inicializálása CPP4 / 1 Objektumok inicializálása Ficsor Lajos Miskolci Egyetem Általános Informatikai Tanszék.
TÁMOP /1-2F JAVA programozási nyelv NetBeans fejlesztőkörnyezetben I/13. évfolyam Osztályok, objektumok definiálása és alkalmazása. Saját.
Operációs rendszerek 2 Bátfai Norbert Debreceni Egyetem Informatikai Kar (DE IK), Információ Technológia.
Operációs rendszerek 2 Bátfai Norbert Debreceni Egyetem Informatikai Kar (DE IK), Információ Technológia.
DocBook Hogyan Bátfai Norbert Debreceni Egyetem Informatikai Kar (DE IK), Információ Technológia.
Operációs rendszerek Bátfai Norbert Debreceni Egyetem Informatikai Kar (DE IK), Információ Technológia.
Operációs rendszerek 2 Bátfai Norbert Debreceni Egyetem Informatikai Kar (DE IK), Információ Technológia.
Operációs rendszerek 2 Bátfai Norbert Debreceni Egyetem Informatikai Kar (DE IK), Információ Technológia.
Prog2, Software Engineering bevezetés
Prog2, AspectJ bevezetés
UML használata a fejlesztésben, illetve a Visual Studio 2010-ben
JAVA programozási nyelv NetBeans fejlesztőkörnyezetben I/13. évfolyam
Előadás másolata:

Magasszintű programozási nyelvek 1 BSc előadás Prog1, C++ tárgyalás Magasszintű programozási nyelvek 1 BSc előadás Dr. Bátfai Norbert egyetemi adjunktus http://www.inf.unideb.hu/~nbatfai/ Debreceni Egyetem, Informatikai Kar, Információ Technológia Tanszék batfai.norbert@inf.unideb.hu Skype: batfai.norbert Prog1_6.ppt, v.: 0.0.9, 2012. 04. 10. http://www.inf.unideb.hu/~nbatfai/#p1 Az óra blogja: http://progpater.blog.hu/ A Nokia Ovi store-ban is elérhető: http://store.ovi.com/content/100794

Felhasználási engedély Bátfai Norbert Debreceni Egyetem, Informatikai Kar, Információ Technológia Tanszék <nbatfai@inf.unideb.hu, nbatfai gmail com> Copyright © 2011, 2012 Bátfai Norbert E közlemény felhatalmazást ad önnek jelen dokumentum sokszorosítására, terjesztésére és/vagy módosítására a Szabad Szoftver Alapítvány által kiadott GNU Szabad Dokumentációs Licenc 1.2-es, vagy bármely azt követő verziójának feltételei alapján. Nem változtatható szakaszok: A szerzőről. Címlap szövegek: Programozó Páternoszter, Bátfai Norbert, Gép melletti fogyasztásra. Hátlap szövegek: GNU Jávácska, belépés a gépek mesés birodalmába. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation; with the Invariant Sections being: A szerzőről, with the Front- Cover Texts being: Programozó Páternoszter, Bátfai Norbert, Gép melletti fogyasztásra, and with the Back-Cover Texts being: GNU Jávácska, belépés a gépek mesés birodalmába. http://www.gnu.hu/fdl.html

Célok és tartalom Előadás Osztályok, objektumok Másoló konstruktor, - értékadás, baráti, beágyazott osztályok Öröklődés, a Liskov-féle helyettesítési elv Virtuális függvények C és C++ összehasonlítás Labor Qt-s példák Visszatekintés: hálózati állatorvosi és a deriváló ló, a BB(2) megoldása Laborkártyák Példás kártyák Otthoni opcionális feladat A japán világbajnok HELIOS csapat szoftvereinek otthoni tanulmányozása.

Kapcsoldó videók, videómagyarázatok és blogok http://progpater.blog.hu/2011/02/26/tan_csodallak_amde_nem_ertelek_de_kepzetem_hegyvolgyedet_bejarja http://progpater.blog.hu/2011/03/03/fegyvert_a_nepnek http://progpater.blog.hu/2011/03/05/figyelem_ez_nem_gyakorlat http://progpater.blog.hu/2011/03/05/szonyegen_a_human_genom http://progpater.blog.hu/2011/03/06/utam_a_csucsra http://progpater.blog.hu/2011/03/31/imadni_fogjatok_a_c_t_egy_emberkent_tiszta_szivbol http://progpater.blog.hu/2011/04/01/imadni_fogjak_a_c_t_egy_emberkent_tiszta_szivbol_2 http://progpater.blog.hu/2011/04/03/elmondtam_milliomezerszer_2 http://progpater.blog.hu/2011/04/03/a_nyolcadik_kilencedik_labor Az írásbeli és a szóbeli vizsgán bármi (jegyzet, könyv, forráskód, számítógép mobiltelefon stb.) használható! (Az írásbeli vizsgán beszélni viszont tilos.) Hiszen az én feladatom az lesz, hogy eldöntsem, jól felkészült programozóval, vagy mennyire felkészült programozóval állok szemben.

Minimális gyakorlati cél A hallgató tudja módosítani a bevezető Qt példákat: svn co svn://hallg.inf.unideb.hu:2005/bevezetes (az elsoQt/{Frak|Sejtauto|GenAblak|masodikQt/{Frak…}…}) Illetve az LZW fás példákat (legalább z1.cpp, z3.cpp, z6.cpp) (elsoC++/ziv) Az svn tároló elérése kapcsán: http://progpater.blog.hu/2011/02/05/az_elso_labor/fullcommentlist/1#c12856691

Minimális elméleti cél Másoló konstruktor, másoló értékadás Függvény, operátor túlterhelés Öröklődés, a Liskov-féle helyettesítési elv Virtuális függvények, polimorfizmus C és C++ összehasonlítása Dinamikus tárkezelés áttekintése: a malloc()-tól a new-ig (a többdimenziós példákon át is), példát mutatva a memória szivárgásra A védendő C++ forrás ismerete: http://progpater.blog.hu/2012/04/10/imadni_fogjak_a_c_t_egy_emberkent_tiszta_szivbol_4

Visszatekintés: példányosítás Osztaly peldany; peldany.metodus(); (példány a veremben) Osztaly *peldany; peldany = new Osztaly(); peldany->metodus(); // (*peldany).metodus(); delete peldany; (példány a halmon)

Másoló konstruktor nbatfai@hallg:~$ g++ verem.cpp -o verem nbatfai@hallg:~$ ./verem 1 512

Másoló konstruktor // Verem u(v);

Másoló konstruktor [morpheus@zion morpheus]$ g++ verem1.cpp -o verem [morpheus@zion morpheus]$ ./verem 1 512 Szegmens hiba nbatfai@hallg:~$ g++ verem1.cpp -o verem nbatfai@hallg:~$ ./verem *** glibc detected *** ./verem: double free or corruption (top): 0x0000000000602010 *** ======= Backtrace: ========= /lib/libc.so.6[0x7f20feb20928]

Másoló konstruktor v.verem 0. 1. 2. 511. char char char ... char tár u.verem

Sekély másolás v.verem 0. 1. 2. 511. char char char ... char tár verem.verem

Mély másolás

Mély másolás nbatfai@hallg:~$ g++ verem4.cpp -o verem nbatfai@hallg:~$ ./verem 3 2 1

Mély másolás verem.verem 0. 1. 2. 511. ‘0’ ‘1’ ‘2’ ... ‘3’ char tár v.verem 0. 1. 2. 511. ... ‘0’ ‘1’ char char tár

std::stack nbatfai@hallg:~$ g++ verem5.cpp -o verem nbatfai@hallg:~$ ./verem 2 1

Mély másolás nbatfai@hallg:~$ g++ verem6.cpp -o verem nbatfai@hallg:~$ ./verem 2 1

Mély másolás nbatfai@hallg:~$ g++ verem7.cpp -o verem nbatfai@hallg:~$ ./verem 3 2

Ismétlés: laborkártya Lefordul? Ha igen, mennyit ír ki? [morpheus@zion morpheus]$ g++ r.c -o r [morpheus@zion morpheus]$ ./r a=9 int a = 5; int &ar = a; int &arr = ar; ++arr; a=? sekély másolás

Sekély másolás int a = 5; int &ar = a; int &arr = ar; ++arr; a=? ar char tár arr

Másoló értékadás nbatfai@hallg:~$ g++ verem9.cpp -o verem nbatfai@hallg:~$ ./verem u: 1 u: 0 v: 1 v: 0

Másoló értékadás v.verem 0. 1. 511. ‘0’ ‘1’ ... char tár u.verem 0. 1. ‘2’ ‘3’ ... char tár 0. 1. 511. ‘0’ ‘1’ ... char tár

A másoló értékadás (és másoló konstruktor) letiltása

this, *this

this, *this

this, *this verem 0. 1. 511. ‘2’ ‘3’ ... char tár verem=ujverem 0. 1. ‘0’ ‘1’ ... char tár

this, *this Verem* vp = &v; verem &v this, tagfüggvényen belül &v 0. 1. 511. ‘2’ ‘3’ ... char tár verem=ujverem 0. 1. 511. ... ‘0’ ‘1’ char tár

OO, UML

OMG UML: vizuális modellező nyelv UML (OMG Unified Modeling Language) OO elvű modellezés http://www.omg.org/technology/documents/modeling_spec_catalog.htm#UML (Felépítés és működés modellezésére) pl. használati esetek (működés)

Osztálydiagram

Asszociációk, aggregáció és kompozíció

Modellezés „Valóság” Modell

Öröklődés

Öröklődés

Öröklődés

Liskov féle helyettesítési elv Barbara Liskov: Aata Abstraction and Hierarchy, OOPSLA '87 Addendum to the proceedings on Object-oriented programming systems, languages and applications (Addendum) ACM New York, NY, USA, 1987. http://portal.acm.org/citation.cfm?doid=62138.62141 Liskov Substitution Principle (LSP)

Liskov féle helyettesítési elv P S fgv(T t) T t fgv(t) S s fgv(s)

Polimorfizmus

K:Param 42 K:Szulo 0x7fff1600ed30 Szulo::tulterhelt Szulo::tulterhelt K:Param 42 K:Szulo 0x7fff1600ed10 K:Param2 42 K:Gyermek 0x7fff1600ed10 Gyermek::tulterhelt Szulo::tulterhelt K:Param 42 K:Szulo 0x152d030 K:Param2 42 K:Gyermek 0x152d030 Szulo::tulterhelt Szulo::tulterhelt D:Szulo D:Param D:Gyermek D:Param2 D:Szulo D:Param D:Szulo D:Param K:Param 42 K:Szulo 0x7fff40f38fb8 Szulo::tulterhelt Szulo::tulterhelt K:Param 42 K:Szulo 0x7fff40f38f88 K:Param2 42 K:Gyermek 0x7fff40f38f88 Gyermek::tulterhelt Gyermek::tulterhelt K:Param 42 K:Szulo 0x1c7b038 K:Param2 42 K:Gyermek 0x1c7b038 Gyermek::tulterhelt Gyermek::tulterhelt D:Szulo D:Param D:Gyermek D:Param2 D:Szulo D:Param D:Szulo D:Param

Virtuális függvények

C és C++ összehasonlítása Már szert tettünk annyi tapasztalatra, hogy megtegyük az első összehasonlításokat. C C++ Dinamikus tárkezelés malloc/free new/delete

C Ismétlés (2. ea.): Mutatók és többdimenziós tömbök char **dinamikus_tomb tár &dinamikus_tomb[1] dinamikus_tomb+1 dinamikus_tomb[1] *(dinamikus_tomb+1) char* char* char* tár char char char char char char tár dinamikus_tomb[1][1] *(dinamikus_tomb[1]+1) *(*(dinamikus_tomb+1)+1) dinamikus_tomb[1]+1 *(dinamikus_tomb+1)+1

C++ Ismétlés (5. ea.): a Conway-féle életjátékunkból Dinamikus memóriakezelés (malloc()-os ismétlő ábra) bool ***racsok bool ** bool ** tár racsok[0] racsok[0][1] 0. 1. 2. magassag-1 bool* bool* bool* ... bool* tár ... ... bool bool bool bool bool bool tár 0. 1. szelesseg-1

C és C++ összehasonlítása Már szert tettünk annyi tapasztalatra, hogy megtegyük az első összehasonlításokat. C C++ Típusok referencia Paraméterátadás referencia szerint

* const * Már szert tettünk annyi tapasztalatra, hogy megtegyük az első összehasonlításokat. dp double d = 2.71 double * double tár X double * const dp = &d; *dp = -*dp; dp double d = 2.71 double * double tár *dp X const double * dp = &d; *dp = -*dp; X T100: const double * const dp = &d;

Labor Qt http://progpater.blog.hu/2011/02/26/tan_csodallak_amde_nem_ertelek_de_kepzetem_hegyvolgyedet_bejarja http://qt.nokia.com/downloads/

Labor Qt http://progpater.blog.hu/2011/02/26/tan_csodallak_amde_nem_ertelek_de_kepzetem_hegyvolgyedet_bejarja

Qt API doksi http://doc.qt.nokia.com/4.7-snapshot/index.html

Qt API doksi http://doc.qt.nokia.com/4.7-snapshot/index.html http://doc.qt.nokia.com/4.7-snapshot/qimage.html Akár magyarul is! http://developer.qt.nokia.com/wiki/Roevid_utmutato_a_Qt_programozashoz http://developer.qt.nokia.com/wiki/Getting_Started_Programming_with_QML_in_Hungarian

Rajzolás

Egér és billentyű események

Egér és billentyű események

Egér és billentyű események

Egér és billentyű események

Mandelbrot nagyítása

Labor Visszatekintés: a hálózati ló http://progpater.blog.hu/2011/03/06/halozati_vegyertek

Labor Visszatekintés: a hálózati ló http://progpater.blog.hu/2011/03/06/halozati_vegyertek 1

Labor Visszatekintés: a hálózati ló, DOS http://progpater.blog.hu/2011/03/18/a_hatodik_hetedik_labor i=0 fork() kliens() kliens() i=1 i=1 2 2 2 2 3 3 3 3 3 3 3 3

BB Részletek: 1.,2. előadás és http://arxiv.org/abs/0908.1159

BB Részletek: 1.,2. előadás és http://arxiv.org/abs/0908.1159

BB Részletek: 1.,2. előadás és http://arxiv.org/abs/0908.1159

BB Részletek: 1.,2. előadás és http://arxiv.org/abs/0908.1159

BB Részletek: 1.,2. előadás és http://arxiv.org/abs/0908.1159

BB Részletek: 1.,2. előadás és http://arxiv.org/abs/0908.1159

Laborkártyák Lefordul? Ha igen, mit ír ki? S miért?

Laborkártyák Lefordul? Ha igen, mit ír ki? Lefordul?

Laborkártyák Lefordul, ha a jobb oldal is tagja a saját vermünknek?

Laborkártyák Lefordul? Ha igen, mit ír ki? Mi a különbség?

Laborkártyák Mit mondanál erről a kódról? Mit mondanál erről a kódról? Mi a különbség?

Laborkártyák Milyen a librcsc és az agent2D licence? main_player.cpp

Laborkártyák Mi itt a helyzet a másoló konstruktorral és az értékadó operátorral (másoló értékadással)? soccer_agent.h

Laborkártyák Mit ír ki? (Ha lefordul.)

Ismétlő laborkártyák Mi lesz a gyümölcskosárban?

Otthoni opcionális feladat A robotfoci japán szoftvereinek (librcsc, agent2d) tanulmányozása a KDevelop-ban.

Otthoni opcionális feladat A robotfoci japán szoftvereinek (librcsc, agent2d) tanulmányozása a KDevelop-ban.

Kötelező olvasmány (B&L könyv) Benedek Zoltán, Levendovszky Tihamér: Szoftverfejlesztés C++ nyelven, Budapest, 2007, Szak K. 17-58 73-91 93-110 (két hét múlvára) (S könyv) Stroustrup, Bjarne: A C++ programozási nyelv, Kiskapu, 2001. http://webpac.lib.unideb.hu/WebPac/CorvinaWeb?action=onelong&showtype=longlong&recnum=255516&pos=3 295-330

Ajánlott olvasmány (OSS könyv) Alan Ezust, Paul Ezust: An Introduction to Design Patterns in C++ with Qt 4, Prentice Hall (Open Source Series) 2006 Pdf-ben: http://ptgmedia.pearsoncmg.com/images/9780131879058/downloads/0131879057_Ezust_book.pdf 47-79 (Hasonlóan hozzánk, itt is UML-el támogatott a tárgyalás.) (24 könyv) Jesse Liberty, Horvath, David B. Büki András: Tanuljuk meg a C++ programozási nyelvet 24 óra alatt http://webpac.lib.unideb.hu/WebPac/CorvinaWeb?action=onelong&showtype=longlong&recnum=469876&pos=2 131-159