Prog1, C++ a gyakorlatban

Slides:



Advertisements
Hasonló előadás
8. előadás (2005. április 19.) Pozicionálás fájlban (folyt.) I/O mechanizmus váltás Hibakezelő függvények Változók tárolási osztályai Parancssor-argumentumok.
Advertisements

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,
Budapesti Műszaki és Gazdaságtudományi Egyetem Elektronikus Eszközök Tanszéke A programozás alapjai 1. (VIEEA100) 9. előadás.
Programozási Nyelvek (C++) Gyakorlat Gyak 01.
JavaScript.
Bevezetés a Java programozásba
10. előadás (2004. április 20.) A C előfordító (folytatás) Néhány hasznos compiler opció Egy tanulságos könyvtári függvény Változó hosszúságú argumentum.
6. előadás (2005. április 5.) Struktúrák Úniók Új adattípus definíálása Dinamikus memória foglalás 1.
7. előadás (2005. április 12.) Láncolt lista File kezelés 1.
5. előadás (2005. március 22.) Függvények definíciója, deklarációja, hívása Enumerációs adattípus 1.
Mikrovezérlők alkalmazástechnikája laboratóriumi gyakorlat Kovács Tamás & Mingesz Róbert 3. óra február 20., 23.
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
Magasszintű programozási nyelvek 1 BSc előadás
„High – tech networking” – szakmai konferencia informatikusoknak, szeptember 24., Debrecen, Kölcsey Központ,
Prog2, Java a gyakorlatban
Prog1, C bevezetés (2 alkalom)
Prog1, C bevezetés (2 alkalom)
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 BSc előadás
Prog2, Software Engineering bevezetés
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,
Borland C/C++ mintapéldák fájlokra. 1. példa Írjon olyan programot,amely megnyit egy hw.txt fájlt és írja bele a Hello világ szöveget. Ez után zárja le.
Programozás I. Horváth Ernő 1. Elérhetőségek Bauer Péter Horváth Ernő Tanszéki honlap
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.
A C++ programozási nyelvSoós Sándor 1/12 C++ programozási nyelv Gyakorlat - 8. hét Nyugat-Magyarországi Egyetem Faipari Mérnöki Kar Informatikai Intézet.
VFP programozása report készítése menü készítése dinamikus elemek
6. előadás Parametrikus polimorfizmus. Generikus programozás. Az Ada sablonok.
Programozás I Függvények általános jellemzői
Ficsor Lajos Template-ek CPP8/ 1 Template-ek. Ficsor Lajos Template-ek CPP8/ 2 A template fogalma Kiindulási probléma: tetszőleges típusokon kellene ugyanolyan.
Ficsor Lajos Miskolci Egyetem Általános Informatikai Tanszék
A Creative Commons és a könyvtárak Drótos László Magyar Elektronikus Könyvtár Drótos László Magyar Elektronikus Könyvtár.
Digitális gyűjtemények és a Creative Commons
Magasszintű programozási nyelvek 1 mérnök informatikus BSc előadás
Prog1, C bevezetés Magasszintű programozási nyelvek 1 mérnök informatikus BSc előadás Bátfai Norbert egyetemi tanársegéd
Programozási Nyelvek (C++) Gyakorlat Gyak 02.
1 Hernyák Zoltán Programozási Nyelvek II. Eszterházy Károly Főiskola Számítástudományi tsz.
Széchenyi Isván Egyetem Számítógépes hálózatok II 1 Számítógépes Hálózatok II Széchenyi István Egyetem.
A D programozási nyelv Angeli Dávid. Nagy vonalakban  C++  
Javascript Microsoft által készített kiegészítése Statikus típusosság Nagy projektek Windows 8 fejlesztésénél WinRT egy részét ebben írták Nyílt forráskódú,
1Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor Programozás I. 1. gyakorlat.
Komoróczy Tamás 1 Java programozási nyelv A nyelv alapjai.
Web fejlesztés V. Illés Zoltán ELTE Informatikai Kar
UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS Programozás II. 4. Gyakorlat Függvény paraméterek, dinamikus.
C++11. TÖRTÉNETI ÁTTEKINTŐ Bjarne Stroustrup, AT&T 1979 C with classes 1983 ipari alkalmazás 1998 első szabvány 2003 apróbb módosítások 2005 tr
Objektum orientált programozás
Software - Ismeretek Avagy mitől megy a Hardware.
Függvények a C nyelvben 1 Függvényeket a következő esetekben szokás írni: Ha ugyanazt a tevékenységet többször is el kell végeznünk ugyanolyan típusú,
CUDA C/C++ programozás CUDA C bevezetés A segédanyag készítése a TÁMOP A/ Nemzeti Kiválóság Program című kiemelt projekt keretében.
1Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor Programozás I. 1. gyakorlat.
Haladó C++ Programozás Az STL sablonkönyvtár felhasználói szemszögből
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
Haladó C++ Programozás SzJ/IV
1Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor Programozás I. 1. gyakorlat.
5. előadás Parametrikus polimorfizmus. Generikus programozás. Az Ada sablonok.
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.
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.
Operációs rendszerek 2 Bátfai Norbert Debreceni Egyetem Informatikai Kar (DE IK), Információ Technológia.
Paraméterátadás assembly nyelvű programokban
Prog2, AspectJ bevezetés
C++ Standard Template Library
Előadás másolata:

Prog1, C++ a gyakorlatban Magasszintű programozási nyelvek 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_8.ppt, v.: 0.0.3, 2011. 05. 15. http://www.inf.unideb.hu/~nbatfai/#p1 Az óra blogja: http://progpater.blog.hu/

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 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 Funktorok STL (a szabványos C++ sablonkönyvtár) Tervezési minták (tartalmazás, hogyan?) Labor Boost 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/04/10/a_kilencedik_tizedik_labor http://progpater.blog.hu/2011/04/11/imadni_fogjak_a_c_t_egy_emberkent_tiszta_szivbol_3 http://progpater.blog.hu/2011/04/14/egyutt_tamadjuk_meg 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ó egyszerű példáiban tudja az STL szabványos tárolóit (vektor, lista, halmaz, asszociatív tömb, bithalmaz) használni. 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 Vektor (dinamikus tömb, vector) Lista (kétszeresen láncolt, list) Halmaz, set Asszociatív tömb, map Bithalmaz

Funktorok A () fgv. Hívás operátort túlterhelő osztály (struktúra). Funktor STL algoritmusban

Funktorok Ism.: fgv. Hívás, paraméterátadás vermen fgv. tár badboy

Funktorok Ism.: paraméterátadás Regiszterek Közös memória Verem (tipikusan a magasszintű programozási nyelvek)

Ism: fgv. hívás, paraméterátadás, lokális változók main() fgv(int a, int b, int c) { lok. vált. } main() fgv(5, 6, 7); PUSH BX PUSH 7 PUSH CX fgv() PUSH 6 PUSH DX PUSH 5 PUSH BP CALL CALL fgv MOV BP, SP SUB SP, lok. vált. ter. mér. … MOV SP, BP POP BP RET

Ism.: fgv. hívás, paraméterátadás, lokális változók Visszatérési cím mentése, pl. IP a köv. végrehajtandó offszetje 5 6 7 lok. vált. ter. BP CS/IP DX CX BX ezért lehet vaarg fgv.-eket tár Veremterület (a BP-t indexelve címezzük) BP BP+4 BP+6 BP+8 main() fgv(int a, int b, int c) { lok. vált. } main() fgv(5, 6, 7); PUSH BX PUSH 7 PUSH CX fgv() PUSH 6 PUSH DX PUSH 5 PUSH BP CALL CALL fgv MOV BP, SP ADD SP, 3*(2) SUB SP, lok. vált. ter. mér. … MOV SP, BP POP BP RET

Funktorok

STL Standard Template Library (a szabványos C++ sablonkönyvtár) C programozóknak: a sztenderd függvénykönyvtár (pl.:GNU C Library, glibc, http://www.gnu.org/s/libc/ ) C++ programozóknak: a sztenderd osztálykönyvtár (pl.: GNU Standard C++ Library, libstdc++, http://gcc.gnu.org/libstdc++/ ) a sztenderd sablonkönyvtár A GNU-s sztenderd osztálykönyvtár API doksija: http://gcc.gnu.org/onlinedocs/libstdc++/api.html

Ism.: Helló, Világ! - .S Rendszerhívással .data hello: .ascii "Hello, Vilag!" .text .global _start _start: movl $4, %eax movl $1, %ebx movl $hello, %ecx movl $14, %edx int $0x80 movl $1, %eax movl $0, %ebx Rendszerhívással A megfelelő regisztekebe töltjük a rendszerhívás kódját és para- métereit: write (1, "Hello, Vilag!", 14); EAX EBX ECX EDX exit (0); EAX EBX $ as asmhello.S -o asmhello.o $ ld asmhello.o -o asmhello $ ./asmhello Hello, Vilag!

Ism.: Helló, Világ! - write #include <unistd.h> int main () { write (1, "Hello, Vilag!", 14); return 0; } Rendszerhívással $ gcc writehello.c -o writehello $ ./writehello Hello, Vilag! WRITE(2) Linux Programmer's Manual WRITE(2) NAME write - write to a file descriptor SYNOPSIS #include <unistd.h> ssize_t write(int fd, const void *buf, size_t count); DESCRIPTION ... Rendszerhívással (Az előző fólia példában a printf() hívja a write()-ot.)

Ism.: Helló, Világ! - printf #include <stdio.h> int main () { printf ("Hello, Vilag!"); return 0; } Könyvtári függvénnyel $ gcc printfhello.c -o printfhello $ ./printfhello Hello, Vilag! PRINTF(3) Linux Programmer's Manual PRINTF(3) NAME printf, fprintf, sprintf, snprintf, vprintf, vfprintf, vsprintf, vsnprintf - formatted output conversion SYNOPSIS #include <stdio.h> int printf(const char *format, ...); ... Könyvtári függvénnyel

Ism.: Glibc trófeák Kisbajnokság: definiáld felül a glibc egy (változó argumentumszámú) függvényét! $ gcc -shared -Wl,-soname,libsajat.so.1 -o libsajat.so.1.0 libsajat.c $ ln -s libsajat.so.1.0 libsajat.so.1 $ ln -s libsajat.so.1 libsajat.so $ export LD_PRELOAD=libsajat.so $ export LD_LIBRARY_PATH=.:$LD_LIBRARY_PATH $ ./teszt H 1 e 2 l 3 l 4 o $ Ha gond lenne a fordítással: http://tldp.fsf.hu/HOWTO/Program-Library-HOWTO-hu/shared-libraries.html

Ism.: Glibc trófeák háttér- és szövegszín ANSI Escape szekvenciák libsajat.c #include <errno.h> #include <stdarg.h> int printf (char *fmt, ...) { va_list ap; errno = 1; va_start (ap, fmt); putchar (0x1B); putchar ('['); putchar ('4'); putchar ('7'); putchar (';'); putchar ('3'); putchar ('1'); putchar ('m'); vprintf (fmt, ap); putchar ('0'); va_end (ap); return 0; } teszt.c #include <stdio.h> int main (void) { printf ("H %d e %d l %d l %d o\n", 1, 2, 3, 4); } háttér- és szövegszín ANSI Escape szekvenciák http://en.wikipedia.org/wiki/ANSI_escape_code visszaállítás

Ism.: Glibc trófeák nbatfai@hallg:~/c$ gcc -fPIC -shared -Wl,-soname,libsajat.so.1 -o libsajat.so.1.0 libsajat.c nbatfai@hallg:~/c$ ln -s libsajat.so.1.0 libsajat.so.1 nbatfai@hallg:~/c$ ln -s libsajat.so.1 libsajat.so nbatfai@hallg:~/c$ export LD_PRELOAD=libsajat.so nbatfai@hallg:~/c$ export LD_LIBRARY_PATH=.:$LD_LIBRARY_PATH nbatfai@hallg:~/c$ gcc teszt.c -o teszt nbatfai@hallg:~/c$ ./teszt H 1 e 2 l 3 l 4 o nbatfai@hallg:~/c$

STL Standard Template Library (a szabványos C++ sablonkönyvtár) C programozóknak: a sztenderd függvénykönyvtár (pl.:GNU C Library, glibc, http://www.gnu.org/s/libc/ ) C++ programozóknak: a sztenderd osztálykönyvtár (pl.: GNU Standard C++ Library, libstdc++, http://gcc.gnu.org/libstdc++/ ) a sztenderd sablonkönyvtár A GNU-s sztenderd osztálykönyvtár API doksija: http://gcc.gnu.org/onlinedocs/libstdc++/api.html

API doksi http://gcc.gnu.org/onlinedocs/libstdc++/api.html http://gcc.gnu.org/onlinedocs/libstdc++/libstdc++-api-4.5/a00396.html

Iterátor végigvezetett mutató

Iterátor végigvezetett mutató

Iterátor végigvezetett mutató

Iterátor végigvezetett mutató

Iterátor végigvezetett mutató

Elem hozzáadása

Elem hozzáadása „laborkártyás logolásunkat” használva:

Ism. : egy asszociatív tárolós alternatíva http://progpater. blog Sablonparaméterek: <kulcs, érték>

Ism. : egy asszociatív tárolós alternatíva http://progpater. blog iterátort a tároló első elemére iterátort a tároló utolsó eleme utánra!!!

STL Standard Template Library (a szabványos C++ sablonkönyvtár) Tárolók std::vector < Int > vektor; Iterátorok std::vector < Int >::iterator iter; Algoritmusok // tároló elejére stb. iter = vektor.begin (); // lehet növelgetni ++iter; // …*iter…

Algoritmusok Kimeneti iterátor (a << operátorral ír ki)

Algoritmusok

Algoritmusok

Algoritmusok

Algoritmusok

STL tárolók áttekintése http://www.cplusplus.com/reference/stl/

Tervezési minták tartalmazás class BitMinta { public: BitMinta(string)… } class MentalFingerprint { BitMinta minta; MentalFingerprint(BitMinta minta):minta(minta) {} class MentalFingerprint { BitMinta* minta; public: MentalFingerprint(string minta):minta(new BitMinta (minta)) {} ~MentalFingerprint(){delete minta;} } class MentalFingerprint { BitMinta& minta; public: MentalFingerprintstring minta):minta(* new BitMinta (minta)) {} ~MentalFingerprint(){delete &minta;} }

Labor – Hetedik Szem http://progpater.blog.hu/2011/04/24/tudatmintak_rendezese

Labor – Hetedik Szem http://progpater.blog.hu/2011/04/24/tudatmintak_rendezese

(Ismétlő) laborkártyák Mit ír ki? (Ha lefordul… s miért?)

(Ismétlő) laborkártyák Magyarázd meg az 5 eredménysor bitjeit! 4437      1155    0001000101010101       1060       424    0000010000100100       4433      1151    0001000101010001       5493      1575    0001010101110101       5489      1571    0001010101110001

Laborkártyák Mikor-mi fut le, használd az Int osztályunkba épített „laborkártyás logolásunkat”!

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. 264-296 (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 431-452

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 214-219 (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 465-480