ebook img

Tanuljuk ​meg a C++ programozási nyelvet 24 óra alatt PDF

542 Pages·2008·74.981 MB·Hungarian
Save to my drive
Quick download
Download
Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.

Preview Tanuljuk ​meg a C++ programozási nyelvet 24 óra alatt

Az operátorok precedenciája ACésaC+ + és asszociativitása kulcsszavai A táblázatban elóbb szereplő operátorok magasabb precedenciával rendelkeznek, mint a ké Kulcsszavak sőbb felbukkanók. A C++ szabályai szerint egy kifejezés legbelső zárójelén belül található műveleteket a program az operátorok precedenciájának sorrendjében végzi el úgy, hogy and' (&&) false' sizeof a legmagasabb rangú operátorral előírt műveletet hajtja végre először, majd csökkenő sor and_e,,' (&,,) float size,t rend szerint folytatja. tv. egyoperandusú plusz (+) és minusz (-) a precedencia-lista maso .,m '0" static dik szintjén szerepelnek. vagyis - teljesen logikusan - megelőzik az aritmetikai megfelelői­ auto friend' statiC, cast' ket, amelyek az ölödik szinten kaptak helyet. A második szinten található & operátor a "cí bitand' (&) goto struct me" operátor, míg a g, szinten látható ugyanilyen jel a bitenkénti AND művelet operátora, bitor' ( I) " switch A 2, szinten látható" a mutató által cfmzett tartalom kiolvasását végzi, míg a 4. szinten lát· bool' inline' template' ható ugyanilyen jel a szorzás, Amennyiben a műveletek végrehajtásának sorrendjére nem utalnak zárójelek, úgy az azonos precedenciaszinthez tartozó műveleteket a program jobbról break 'ne this' balra. vagy balról jobbra haladva hajtja végre a táblázatban megadottnak megfelelöen, case long throw' Szint Operátorok Kiértékelési sorrend catch' mutable' true' 1 (magas) ( ) :: balról jobbra char namespace try' 2 · [ l -> ++ -- balról jobbra class' new' typedef typeid keyword, typecast campl' (-) not' (l) typeid' 3 * & ! - + ... -- ... - jobbról balra const not,eq' ( I,,) typename' aizeof new delete const, cast' operator' union 4 · * ->* balról jobbra continue or' (I I) unsigned 5 ,• -/% balról jobbra default or, eq' (I,,) us!ng' 6 balról jobbra delete' private' virtual' ) « » balról jobbra do protected' void 8 < <= > >= balról jobbra double public' volatUe' 9 ='" I", balról jobbra • dynarnic, caet' register wchar, t 10 balról jobbra 11 • balról jobbra else reinter- while 12 balról jobbra on= pret, cast' xor' (A) •• 13 balról jobbra explidt' return xor,eq' (A;;) 14 " balról jobbra export' short 15 ? , jobbról balra extern eigned 16 = *= /= ... = -= %= jobbról balra «=»;&=A=I= , Csak a C++ nyelvnek része, 17 throw balról jobbra Azok a kulcsszavak, amelyek után zárójel szerepel, 18 (alacsony) , (vessző operator) balról iobbra a zárójelben található operátor szinonimái. Adattípusok a C+ + nyelvben TIpus 16 bit 32 bit Tartománv uneigned short int 2 bájtos 2 bájtos O-tól 65 535-ig short int 2 bájtos 2 bájtos -32 768-t6l32 767-ig uneiqned long int 4 bájtos 4 bájtos O-tól 4294967 295-ig long int 4 bájtos 4 bájtos -2147483 648-t612147 483647-ig int 2 bájtoe 4 bájtos (16) :-32768-tóI32767-ig; (32) :-2147483 648-tól 2147483 647-ig unsigned int 2 bájtoe 4 bájtos (16) :O-tó165 535-ig; (32) : Q-tól 4 294 967295-ig size_t 2 bájtoe 4 bájtos (16) :0-tó165 535-ig; (32) : Q-tól 4 294 967295-ig char 1 bájtoe l bájtos 256 karakter wchar_t 2 bájtoe 2 bájtos 65535 karakter bool l bájtos 1 bájtos True vagy False float 4 bájtos 4 bájtoe 1,2*10·>1 tó13,4"10" ig double 8 bájtos 8 bájtoe 2, 2 *10-"'-tól 1, 8*10'''-ig long double 10 bájtos 10 bájtos 3, 4 *10·""-t6l l, l *10""-ig TARTALOMJEGYZÉK I. rész Bevezetés a C+ + programozási nyelvbe l. óra Kezdő lépések E!őkészülctck a programozáshoz ....... . · 3 A C++ nyelvjárásai (C++, ANSI C++, ISO C++ és a Windows) .4 A fordító telepítése és beállítása .5 Telepítés a CD-r61 . , ................ . . ..... 6 A Borland C++BuilderX fordító beállítása ...... . · .. 6 Fordít.'Ís a Borland C++BuilderX-szel ..... 8 A fordítóprogram és a szövegszerkesztő ..... 9 Fordítás és linkelés ......... 10 Fordítás az integrált fejlesztői környezetben .10 linkelés (ősszeszerkeszl(:s) .......... ........... 11 A fejlesztési ciklus. , .. . ..... II HELLO.CPP - Az els6 C++ programunk · 13 Fordítási hibák ...... . 15 Kérdések és válaszok 16 Gyakorlatok 16 Kvíz 17 Feladalok 17 Válaszok a kvízkérdésekre . 17 2. óra Egy C++ program részei Mitő! lehet jó választás a C++ nyelv. · . 19 Procedurális, strukturált és objektum-központú programfejlesztés . · 21 A C++ rwelv és az objekmm-központú programozás . 22 Beágyazás (encapsulation) . . . . . . . . . . . . . . . . . . . .. . ......... .. .... 23 Öröklődés és újrahasznosítás .................... . . .... 2.~ Többalakúság (polimorfizmus) .... . .. . . ..• ... .. · . 24 Egy egyszeru program részei .......... . · . 24 Az #indudc utasítás viz.<;gálala .... ... . . . . . . • . . . 25 Elemzés soronként. . ... 26 Megjegyzések ................................ 28 A megjegyzések tipusai ................... .. ... ....•. .. . . ... 28 Megjegyzések használata egy egyszerű programban . 29 I iv Tanuljuk meg a C++ programozási nyelvet 24 óra alatt Függ"ények . . . . . . . . . . . . . . . . . . .. .....•.....•..... 30 Függvénybívások . . .•...•..... . .. .. .•..•..... 31 Függvények használata ....... . ........ ............ . 32 Függvényparaméterek használata . . • . . . • . . . . . . . . . • . . • . • . .. . 33 Kérdések és válaszok . . . . . . . . .. 34 Gyakorlatok . . . . . . . . . . . . . . . . . . . . . . . . . . .. 3S Kviz .. ... 35 Gyakorlatok ... 35 Válaszok a kvrzkérdésekre ... 35 3. óra Változók és állandók Mi az a változó? . . . . . . . • . . . . . • . . . . . . 37 Mem6riafoglalás .. . ... , . . .... .... .. , . . 38 A'L. egt:s'L. számok (Integer) mérete . . • . . . . . . • . . . . . • . . .... 39 signed és unsigned ........ ... . . . . . . . . . . . . . . . . . . . . . 40 Alapvető változ6lípusok .......... . . . . . . . . . . . . . . . . 41 Egy v{lltozó meghatározása . . . . . . . . . . • . . . .... 42 A kis- és nagyl>culk eltér6 jelemésér61 . . . . . . . . . . . . . . . . . . . , 42 Kulcsszavak. . . . . . . . . . . . . . . . . . . . . . . . . . . • . . . . . . . . .... 43 Egynél több változó megadása egyszerre .....•............ .. . . .... 44 ÉrtC:kck hozzá rendelése a változókhoz . . . . . . . . . . . . . ....... 44 typedef ... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . • . . . . . . . . . . .... 45 Mikor használjunk short és mikor long típust ... . . . . . • . . . . . ...... ,47 El6jel nélküli egészek túlcsordulása ...............•.....•............ 47 Az el6jeles egészek körbefordulása .......... , ... ........ •.. .•.. ...... 48 Állandók . . . . . . . . . . . . . . . . . . . . . . . . . ...•............ •.. , ........ 49 Uterális állandók ........................ ... . ... •. ... •...•..•.. ... 49 Nevesített (symboJic) állandók .............•. . ..............•..... 50 ÁIland6 bevezetése a #define ku1cssz6val ..... .. , . . . • . . . • . . . . . . 50 Állandó bevezetése a const ku1csszÓval. ...... . .....•......•.....•..... 51 Felsorolt (enumemted) állandók ............ .. , . . . . , , ..•.. ...... 51 Kérdések és válaszok ................... .................. 52 Gyakorlatok .. ... .... ........... . 53 Kvíz .... ... 53 Feladatok . ...... . .. ... .. .. . 53 Válaszok a kví'L.kérdésekre .. .... ...... 54 4. óra Kifejezések és utasftások Utasítások .55 Üres helyek .. .. 56 Összetett utasítások .. 56 Kifejezések .. 57 Tanuljuk meg a C++ programozási nyelvet 24 óra alatt v Operátorok ..................... . . .. 58 Értékadó operátor ............... . . .... 58 Matematikai operátorok ................................. 59 Matematikai és értékadó operátorok kombinálása . . . . . .. . .. 60 Növelés és csökkentés. . . 60 Előtag (prefix) és utótag (pOStfL'0 operátorok .............. . .... 61 Precedencia, avagy a műveletek végrehajtási sorrendje ........ 63 Egymásba ágyazott zárójelek összetett kifejezésekben. . ....... 64 Relációs operátorok ........ 65 Az if utasítás . . . . . 66 M_~ ~ Összetettebb if konstrukciók ....... . . 68 Kapcsos zár6jelek használata egymásba ágyazott if utasítások esetén .. 70 A logikai operátorokr61 bővebben . . . . . . . . . . . . . ................. 73 Logikai ÉS .. . . 73 Logikai VAGY. . . . . . . . . . . . ........ 74 Logikai NEM. . . . . . . .. .. .. .. . . . 74 Relációk precedenciiija .... 74 Bővebben az igazság természetéren . . . . . . . . • . . • . . . . . . 75 Kérdések 6s v<Ílaszok ....... . . . . . . . . . . . . . . . . . . . . . . .. 76 . Gyakorlatok . . . . . . . . . . . . . .. . ... 76 Kvíz .. . ......... 76 ........ . ........... n _~~ Válaszok a kvízkérdésekre . . ...... 77 5. óra Függvények Mi is az a függvény? ................... .. .. . ... . . 79 A függvények deklarálása és definiálása .81 Függvények deklarálása . .81 Függvények definiálása ... .. . . 83 Függvények megadása: összegzés .. ... . .... .... ..84 Változók használaca függvényeken belül ........... . ........ 85 Helyi változók ............... . . .... ... ...... 86 Globális változók ............... ... ...... .. . ..88 A függvények argumenrumai ....... .. . . ..89 Függvényhívás mim paraméter ....... . .... . .... . ..89 A paraméterek egyben helyi változók is ..... ... . . . . ... . . 90 Értékek visszaadása függvényből ... ........ .. . . . ... 92 r-üggvények alapértelmezett paraméterei ................ . .. 95 Függvények túlterhelése .. . ...........• . . ....... 97 Inline függvények .. .. . ......... . . ......... 98 A függvények és a verem . . . . . • . . ....•. . . ... 101 Kérdések és válaszok .......... . .. . .... . . . .... ......... 103 I vi Tanuljuk meg a C++ programozási nyelvet 24 óra alatt Gyakorlatok ........ . . 104 Kvíz ... · ...... 104 Feladatok . 105 Válaszok a kví:t.k~rdésekre ... .... . . 105 6. óra Vezérlési szerkezetek Ciklusszervezés ..... . . .... ..... 107 A ciklusok 6se: :I goto utasítás .••...• ..... 107 Miért ne használjuk :I goto utasítást? ...... ... . . ... ........ 108 A while ciklus ....... . ............. .• · ....... 108 llonyolulcabb while UUlsítások ........ . · ........ 109 A <.:ontinue és a break ......... ....... .. . . .. 111 while(1) - végtelen óklusok .. 113 A do ...w hile ciklus .......... . · . 114 A for ciklus .. . ......... . · . 117 lnidalizád6, vizsgálat, léptetés. · •...... 117 Összeteuebb for ciklllsok ............ . · ....... 119 Halmozott inidaliz:ídó és léptetés .. . · ....... 119 Üres UUlsítások a for ciklusfejben .. . . ..... •...... 120 Üres for ciklus .... ...... ......... . . . ... .. .. ..... 122 Egymásba ágyazott ciklusok · ........ 123 A switch utasítás ....... . . • . . . . . . . . . 124 Kérdések és válaszok .... . · . 126 Gyakorlatok ......... . . .... 127 Kvíz .. · ........ "127 Fehldalok ................. . ..• ..... .. 127 Válaszok a kvízkérdésckre ... . . ...... 128 II. rész Osztályok 7. óra osztálvok Alapvető Mi a típus? . . . .......... . . · ...... 13] Új típus létrehozás,l · .. ..... 132 Osztályok és tagok ..... . . . ... ... ... ... 132 Osztályok deklarálása ............... 133 Osztályok nevezékIana .. · ...... 134 Objekrum definiálása . .... ...... ..134 Osztályok és objektumok ...... 13; Osztályok Ulgjainak elérése: ......... 135 , Privát és publikus hozzáférb .... ..... ....... 136 Osztálymetódusok létreho~ .. ... 138 Konstruktorok és clestru!-.'.l( :; ~ ~.lIZ _- .... létrehozása és türlése .. 140 I Tanuljuk meg a C+ + programozási nyelvet 24 6ra alatt vii Alapértelmezett konstruktorok ............... . ... . · .... 141 A fordító áJtal biztosított konstruktor .... ... ... .. . ... •. .. . · .... 141 Kérdések és válaszok . ... 144 Gyakorlatok. · . 144 Kvíz . ........ 144 Feladatok · .... 145 Válaszok a kvízkérdésekre ............. . · . 145 8. óra Az osztályokról - mélyebben Konst.1ns tagfüggvények ........... . . ......................... .. 147 Felület és megval6sítás ............ . ...................••. .. . .. J48 Hová tegyük az osztály-deklarációt és a metódus-def'iníciókat? ......•...... 149 Helyben kifejtett (jnline) megval6sítás ... .... . ............ •.... , .. 150 Osztályok beillesztése más osztályadattagjaiként ...... .. ..... 152 Kérdések és válaszok ......... ......... . .. .. ... •....... "157 Gyakorlatok. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158 Kvíz . . . • . . • . . .. ..• ... .. .•.•.. ..... 158 Feladatok . . . . . . . . .. . .................. 158 Válaszok a kvizkérdésekre ...... . .. ....... .... •.••.. •... .. .... 159 III. rész Memóriakezelés 9. óra Mutatók A mutatók és használatuk megértése ........ .... .•. ..•.•. ..•. · .... 163 A memóriadm tárolása a mutatókban ..167 Mutatónevek .......................................... . · ... . 1<>9 A közvetett elérés operátor, avagy mutatók közvetett használata ... · .. 1<>9 Mutatók, címek és változók. . . . . . . . . . . . . . . .... .. . · .. 170 Adatok manipulálása a mutatók használatával ............ . .170 A mutatókban tárolt címek vizsgálata .. .. . .• ...•. .172 Miért jó mutatókat használni? .................. .. . . · .. 174 A verem (stack) és a dinamikus memória (heap) .......... . .. . . ... 175 A new kulcsszó használata · .. 176 A delete kulcsszó használata .. .177 Amemóriaszivárgás elkerOlése . . .. ..•. •.. .•. . .. .. . . .. .. . . .. 179 Kérdések és válaszok ............•. . . .. .......•. ... .•.. .... 180 Gyakorlatok. . ............ ... •. •. ..•.• ... .. ... .. ..•. ..... 181 Kvíz · . 181 Feladatok .. •... •.. ...• ..... .... •... .•• ..... 181 Válaszok a kvízkérdésekre · .... 182 I vi Tanufjuk meg a C++ progral'TJOlási nyeMrt 24 óra alatt 10. óra A mutatók kifinomult használata Objekrumok létrehozása a memóriában .......... ........... ... IM Objektumok törlése . ... ...... ..... .... .... ...... 184 o o ••••••• Adattagok elérése mutatókon keresztül 185 ••••• o o • o o o o • o o • o •• o • o o • o •• o Adauagok a dinamikus memóriában ...... ................. 186 A this mutató . 188 o • o o o • o • o •••••• •• o o o o o. o o ••• o o. 0 ••• Gazdátlan vagy ~16g6~ mutatók ........ . . ...... .. ... .. ...... 190 Konswns mutatók 191 •••••••• o o •••• o. o 0'0 o. o. o,. o o ••• o Konstans mut:ltók és konstans tagfüggvények. 191 o • o ., o o , •• , o o , • •• o o o o o Konstans this mutatók ......... 93 o • • o • o o • o o o o • o , Kérdések és válaszok ........ 193 o •• o • • • • • •• • o • Gyakorlatok. . ................ • 194 o •• o • o o • Kvíz 194 o o • o o o o •• o • o •• • o • • • • • • o • • • • • P<:!ladalok 194 o o o • • o • o o • o • • • o o • Válaszok ti kvízkérdésekre o o • • o • • • •• o • o • • •••• 194 11. óra Hivatkozások Mi :IZ a hiv:ll.koWs (referencia)? ... 195 o •• o • o •••• o •• o •• ••• ••• ••• •••••• Hivatkozások létrehozása .......... 196 o • o o • o •••• o •• o •• o • • • • • • ••• A wdme~ operátor alkalma7.ása hivatkozásokra 197 o. o • o •• o o •••• o o • • • • o • o ••• A swap() javítása mutatók segítségével 203 o •• o o • o •• o • o •• o o ••• o o • • • A SW:lp() ójabb megvalósílása hivatkozásokkal 204 o •••• • •• o •••• o • • • • • • • •• • Kvíz ...... 210 o • o •• o • o o • o o • o •• o • o ••• Feladatok . . . .. 210 o • o ••• o • o •• o • o o •••• o • o o • • ••• • • o • o • o Válaszok a kvízkérdésekre 211 o •• o • o •• o ••••• o • o • o o •• o • o •• o • o o • o o • o • o 12. óra A hivatkozásokról és mutatókról - mélyebben Hmékonyabb a cím szerinti paraméterátadás .. 213 o • o o • o. o o • o o • o o o o • Mutassunk konstansr.i ........ 217 o • o o • o • • o • o o ••• Hivatkozások, mint a mutatók kényelmes alternatívái. . ...... 219 Mikor használjunk hivalkozásokat, és mikor mutatókat? .. 221 Ne adjunk vissza mcgszCínt objektutnr3 mulatÓ hivatkozást! ............... 222 A dinamikus mcm6rialerületen létrehozott objekUlmra mutató hivatkozás visszaadása 223 ••••••••••••• o • o o • o •• o • o o • o o Mutató, mutató, kié a mulató? . ............... 226 o o • o ••••••••••••••• Kérdések és válaszok .. 227 o •• o • o o o o Gyakorlatok .. 0227 o • Kvíz 0227 o o o o o o o o o o o o o o o o o o o Fcladatok 0228 o o o o Válaszok a kvízkérdésekre 0228 o o Tanuljuk meg a C++ programozási nyelvet 24 óra alatt ix IV. rész Haladó eszközök 13. óra A függvények kifinomultabb használata Túlterhelt tagfüggvények. · .. . 231 Alapértelmezett értékek használata · ... 234 Hogyan válasszunk a túlterhelés és az alapértelmezett értékek h:lsználata között? .... 236 Konstruktorok túlterhelése ..... 236 Objektumok inicializálása .. 237 A másoló konstruktor .. . ... ..•.... . .. 237 Kérdések és válaszok ..... . ..... 242 Gyakorlatok. · .. 243 Kvíz · 243 FeJadalok .243 Válaszok a kvízkérdbckre .. ... .. .. .. .. .. . ..•..... 243 14. óra Operátorok túlterhelése Hogyan terhelhetünk túl operulorokat . · . 245 Írjuk meg az inkremenuíl6 függvényt ...... ... . 247 A postfix (Ul6tag) inkremenu:iló operihor túllerhelése 248 A prefix és a postl1x közöui különbség ......... ..... 248 operator+ ...... . . 251 Az operator+ túherhelése . . .. 252 Az operátortúlterhelés korlátai · ... 254 Mit célszerti túlterhelni? .254 operator" .254 Konverziós operátorok .258 Az intO opcdtor .. .260 Kérdések és válaszok · . 261 Gyakorlatok . · .. . 262 Kvíz ... . .... . 262 Feladalok . ....... .. 262 Válaszok a kvízkérdésekre . . . .. 263 15. óra Tömbök Mi az a tömb? .... . .... .. .. •. .. . ....... 265 A tömbök elemei . . .. ... 266 Tömbök túlírása . .. 268 Kerítésoszlop hibák . 268 Tömbök előkészítése. 269 ObjekUllntömbök ........... . . . ... .. •..... .... 270 Többdimenziós tömbök ...... . .. . . .. ... . ...... 272 I x Tanuljuk meg a C+ + programozási nyelvet 24 óra alatt Többdimenziós tömbök inidalizálásll .273 Néhány szó II memórial1asználalr61 ........... . .. ... 275 Mutatótömbök . . .......... .. ... . ........ 276 Dinamikus memóriában tárolt tömbök deklarálása .... 278 Tömb mutatója és mutatók tömbje ...... . .. .... 278 Mutatók és tömbnevek .............. . .. .. .. .... 279 Dinamikus memóriában létrehozon tömbök törlése .. 281 Karaktertömbök ..... . •.•• •.• •.• •..... 282 Az strcpyO és az strncpyO függvények .......... . . 284 Karakterlánc-osztályok ... . .. .. ... ..... 286 Kérdések és válaszok ... . .. ..... 287 Gyakorlatok. .. 287 Kvíz ....... .... . ....... 287 Feladatok .. •.. .•. ..288 Válaszok a kvizkérdésekrc ........... . ............. .. ..... 21J8 V. rész Öröklődés és többalakúság 16. óra Az öröklődés Mi az az öröklődés? . . . . .. .................... •..... . ......... 291 Öröklődés és származtatás ....... . .........•. .•.. ... . ...... 292 Modellezzük az öröklődést az Állatok Országával. . . . . . . • . . . . . • . . . ... 293 A .';zármaztatás szintaxisa . . . . . . . . . . . . . . . . . . . . . . 294 Privát vagy védett? . . . . . . . . . . ... . ......... 296 Konstnlktorok és destruktorok ...... .. .. .•.. ...• ... . ...... 298 Paraméterek átadása a báziskonstruktornak .......... . ..... 300 Függvények felülbírálata . . . . . . . . . . . . . . . ... . ..• .. ... •...•...... 305 Túlterhelés vagy felülírás? ........ . . . . . . . . . . . . . . . .... 307 A bázisosztály metódllsaimlk elfedése . . . • . . . • . . . . . . . . • . . . • . . . 307 A bázismetódlIs meghívása .... . . . . • . . . . . • . . . . . . . 309 Kérdések és válaszok . . . • . . . • . . . . . . . . . ..... 311 Gyakorlatok. . . . . . . . . . . . . . . . . . . . . . • . . . . . . 311 Kvíz... ... .. .... ... .. .... .. .. . ... .. 311 Feladatok ...... ....... 311 Válaszok a kvízkérdésekre .............................. 312 17. óra A többalakúság és a származtatott osztályok A vinuális függvényekkel megval6síton többalakúság ...... . ......... 313 Hogyan működnek II virmális függvények ............ . • . . . . . • . . . 318 Nem juthaL,>z innen amoda. . . . . . . . . ....... 319 Szeletelés (slicing) . . . . . . . . . . . . .. ... ........ 320 Virtuális destruktorok .. . . . . . • . . 322

See more

The list of books you might like

Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.