Teorie do praxe, aneb první projekt/y – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Teorie do praxe, aneb první projekt/y – C / C++ – Fórum – Programujte.comTeorie do praxe, aneb první projekt/y – C / C++ – Fórum – Programujte.com

 

igorS0
Duch
9. 12. 2014   #1
-
0
-

Ahoj,

Jsem spíš programátor samouk. (Python, LabView, TCL, Matlab) Nyní začínám s C++ a chci to dělat seriózně(ji).

Přečetl jsem knihu Naučte se C++ za 21 dni( asi za 42 dní :-)) Většinu příkladů jsem udělal a danou látku pochopil. Teď procházím Tutorial WinAPI. Ovšem veškerá teorie je jak známo k ničemu, když se nezavede do praxe. Chci si určit projekt s konkrétním cílem (vytvořit vlastní třídu, gui ...) a na něm začít pracovat. Od vás bych rád dostal rady čemu se vyvarovat, nebo co se naopak Vám osvědčilo v začátcích. Například používání návrhových vzorů  ano či ne. Kniha/ web s řešenými příklady.  Můžete být konkrétní i obecní. 

Předem moc děkuji za rady

Nahlásit jako SPAM
IP: 94.113.240.–
vitamin+8
Grafoman
9. 12. 2014   #2
-
0
-

#1 igorS
Z akeho dovodu chces zacinat s winapi? Pre c++ by bolo lepsie Qt. Ak sa chces obmedzit len na windows tak skus radsej c#.

Nahlásit jako SPAM
IP: 95.105.229.–
obfuscate: "The cruel god Malloc will strike you down. "
ZMeson: "That's the C god. C++ has a new god. "
igorS0
Duch
9. 12. 2014   #3
-
0
-

Ahoj Vitamin, díky za hint. O Qt taky uvažuju. Ale primárně mi jde o to začít dělat "něco" praktického. Když přijde na věc ani to nemusí být v GUI, ale už jsem začal s WinAPI.

Nahlásit jako SPAM
IP: 94.113.240.–
ondrej39+1
Věrný člen
9. 12. 2014   #4
-
+1
-
Zajímavé

#1 igorS
Pokud je tvým konkrétním cílem vytvořit si vlastní třídu, tak na jiné uživatelské rozhraní než konzolové bych zapomněl. Nevím, jakým způsobem je koncipovaná kniha, z níž ses C++ učil, nečetl jsem ji, ale pokud je tvorba vlastní třídy pro tebe cíl, rozhodně bych se po hlavě nehrnul do implementace grafického uživatelského rozhraní pomocí existujícího frameworku.

Pokud se chceš začít učit C++ detailněji, pochopit, jak třeba něco funguje a něco se při tom naučit, tak začni ADT... Spojové seznamy, stromy, grafy, vyhledávací algoritmy (vlastní implementace všech zmíněných položek). Později třeba vyhledávání nad ADT. Nejedná se o základní věci a programováním v praxi se, myslím si, člověk naučí úplně nejvíce.

Pokud bys měl zájem, jsem ochotný poskytnout sylabus jednoho mého VŠ předmětu, v němž právě zmíněné pokročilé věci děláme a co se programování v jazyce C++ týče a který mi rozhodně k jeho pochopení a zájmu o něj pomohl nejvíce.

Nahlásit jako SPAM
IP: 213.226.234.–
Inject all the dependencies!
igorS0
Duch
10. 12. 2014   #5
-
0
-

#4 ondrej39
Ahoj Ondro. C++za 21 dní mimo jiné pojednává o Abstraktních třídách. Jedna z pokročilých technik jsou například i propojené seznamy. Vcelku tomu rozumím, ale už je to už poněkud pokročilé. Asi bych měl začít postupně a jednoduššími věcmi.

Děkuji za názor ohledně implementace GUI. Ještě to rozmyslím ale patrně to nechám na dobu kdy si budu jistější s jazykem jako takovým.

Budu vděčný za jakýkoliv materiál.

Pánové, a co říkáte na návrhové vzory. Mám se tím zabývat? Používáte to?

Díky

Igor

Nahlásit jako SPAM
IP: 94.113.240.–
Satik0
Stálý člen
10. 12. 2014   #6
-
+1
-
Zajímavé

Máš nějaký konkrétní důvod, že se učíš C++?

Nechci tě od něj odrazovat, jen C#/Java jsou pro začátečníky vhodnější, vývoj efektivnější (stejný program máš napsaný rychleji a je menší pravděpodobnost, že tam bude chyba).

A třeba navrhování GUI v C++ je jako snažit se zvednout pětikorunu bagrem... :)

Na C++ by jsi pak mohl z C#/Javy přejít kdykoliv - já to měl podobně.

Jinak zaměřil bych se aspoň ze začátku asi hlavně na algoritmy - aby ses naučil programátorsky myslet a uměl problém zapsat kódem.

A k tomu pak postupně základy OOP, protože programovat neobjektově cokoliv složitějšího je cesta do pekel.

Ideální pak je obojí zkombinovat a jak už tu někdo zmiňoval - zkusit si třeba napsat tu třídu reprezentující  spojový seznam - to je celkem základní věc a pokud to s programováním myslíš nějak seriózněji, měla by to pro tebe pak být jednoduchá věc.

Nahlásit jako SPAM
IP: 86.49.188.–
igorS0
Duch
10. 12. 2014   #7
-
0
-

#6 Satik
Ahoj Satik, 

Díky za názor. 

C# vs C++: Osobně bych taky raději používal C#, ale C++ se používá u nás v práci. To platí v podstatě i pro WinAPI. 

GUI: Tady jsem se nepřesně vyjádřil, nechci implementovat vlastní GUI ale zahrnout do projektu GUI jako třeba právě Win_API nebo Qt.

V první řadě mi jde o to, abych si osvojil objektové myšlení

Nahlásit jako SPAM
IP: 94.113.240.–
Satik0
Stálý člen
10. 12. 2014   #8
-
0
-

#7 igorS
Ok, pak bych návrhový vzory řešil až budeš umět běžné algoritmy napsat sám.

Třeba vypsat prvočísla do tisíce, seřadit čísla v poli/vectoru bez použití existujícího sortu apod. by jsi už zvládnul?

Z OOP můžeš začít třeba navržením objektů a jejich interakcí pro nějakou situaci - typické příklady jsou třeba třída pro obsluhu bankomatu, knihovna...

Nahlásit jako SPAM
IP: 86.49.188.–
ondrej39+1
Věrný člen
10. 12. 2014   #9
-
0
-

#5 igorS
Posílám přednášky, mám pak ještě další materiály, ale tyto by měly být více než vyčerpávající.

Stručný obsah:

p01
-úvod do předmětu
-pole, dvojrozměrné pole, úvod do spojových seznamů
-eratosthenovo síto
-josephusův problém

p02
-problémy a algoritmy
-úvod do algoritmů
-algoritmické složitosti (časová/paměťová náročnost)

p03
-stromy (obecné, binární, haldově uspořádaný strom)
-programová realizace stromu
-průchody stromy - preorder, inorder, postorder

p04
-řazení a řadící algoritmy
-časová a paměťová složitost řadicích algoritmů
-programová implementace známých řadících algoritmů (bubble sort, selection sort, merge sort,...)

p05
-halda a operace s ní
-prioritní fronta pomocí hlady
-řazení pomocí prioritní fronty
-řazení heapsort

p06
-vyhledávací problém a jeho implementace
-sekvenční, binární a interpolační vyhledávání
-binární vyhledávací strom a operace s ním
-vyvážené vyhledávací stromy

p07
-výškově vyvážené BVS (AVL BVS)
-vyvažování AVL stromu rotacemi
-B-strom
-1-2 stromg
-červeno-černý strom

p08
-adresní vyhledávání
-rozptylování, rozptylovací funkce, interpolační a otevřené rozptylování

p09-p10
-abstraktní datobvé typy, jejich formální specifikace a implementace
-sekvenční a asociativní kontejnery

p11
-úvod do STL (set, vector, map,...)
-generické řazení pomocí ukazatelů/iterátorů
-funktory
-algoritmy pro nalezení minima a maxina
-numerické algoritmy

p12
-pokračování STL
-fuktory, adaptory
-adaptory funktorů a funkcí
-inserující iterátory

p13
-pokročilé použití šablon
-techniky návrhu algoritmů
-kontejnery objektů a ukazatelů
-hluboké kopie
-polymorfní kontejner
-hledání cesty v grafu

Stáhnout zde (8MB, uloz.to) (heslo: programujte.com)

Složka obsahuje podsložky slajdy a příklady, ve složce slajdy je normální rozbor problémů, z nichž je možné se něco naučit, ve složce slajdy poté zdrojové kódy, které ke konkrétním slajdům patří.

Nahlásit jako SPAM
IP: 213.226.234.–
Inject all the dependencies!
igorS0
Duch
12. 12. 2014   #10
-
0
-

Díky pánové,

Třídící algoritmy naprogramovat zvládnu. Zkusím naprogramovat třídu, kde by se i něco takového mohlo objevit.

Ondrej39: děkuji za materiály.

Nahlásit jako SPAM
IP: 94.113.240.–
ondrej39+1
Věrný člen
12. 12. 2014   #11
-
0
-

#10 igorS
Doufám, že to chápu dobře, ale pokud třídou myslíš normální objekt typu class, tak s tím se setkáš v C++ úplně všude.

Pokud třídou myslíš konkrétní projekt, že si chceš udělat projekt třída, která bude mít třeba objekty student atd., to je potom jiná, nicméně procvičením nic nezkazíš.

Nahlásit jako SPAM
IP: 46.39.172.–
Inject all the dependencies!
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 140 hostů

Podobná vlákna

Praxe — založil Honza

Odborná praxe - Java/C# — založil GlaDOS

Java programátor bez praxe — založil Marek

Teorie relativity — založil CommanderZ

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý