|
19 Feb 2010 0:23
V škole sa učíme Pascal + prechod na Delphi. Ja som si myslel, zeby som sa mohol začať učiť aj niečo viac. Rozmýslal som nad C++, v programovani som len začiatočnik a zacal som s pascalom len tento rok, tak by som chcel skor nejakú knihu o algoritmoch všeobecne... neco dobre a nie veľmi ťažke na pochopenie pre začiatočníka. Programovanie ma začalo veľmi baviť vďaka pascalu, aj ked je možno zastarali a chcel by som sa tomu venovať. Poradte nieco vseobecne na algoritmy, rozmyslal som nad tymito knihami:
| http://www.grada.cz/katalog/seznam/algoritmy-v-jazyku-c-a-c-plus-plus-_4075/ |
alebo
| http://knihy.cpress.cz/knihy/cely-knizni-web/sleva-56-65/algoritmy-datove-struktury-a-programovaci-techniky/ |
Tu su nejake na C++ co som si vyhladol:
| http://knihy.cpress.cz/knihy/pocitacova-literatura/programovani/c-bez-predchozich-znalosti-pruvodce-pro-samouky/ |
alebo
| http://knihy.cpress.cz/knihy/pocitacova-literatura/programovani/mistrovstvi-v-c-3-aktualizovane-vydani/ |
alebo
| http://knihy.cpress.cz/knihy/pocitacova-literatura/programovani/naucte-se-c-za-21-dni-2-aktualizovane-vydani/ |
Poradte mi nejaku dobru knigu z tychto, alebo aj inú ak bude dobrá. Budem vdačny za odpovede, lebo sa tomu chcem venovat.
19 Feb 2010 17:27
Jednoznacne Mistrovsti v C++, i ked je pravda ze ja som skoncil na nejakej 100. strane, pretoze som na to nemal cas, ale ta kniha je napisana fakt uplne zrozumitelne a je radost ucit sa z nej..
20 Feb 2010 8:32
| TommyHot Napísal: |
| Jednoznacne Mistrovsti v C++, i ked je pravda ze ja som skoncil na nejakej 100. strane, pretoze som na to nemal cas, ale ta kniha je napisana fakt uplne zrozumitelne a je radost ucit sa z nej.. |
oki no... a poradil by si mi aj tie algoritmy co som spomínal??? ci sa mam najprv sustredit na syntax a az potom tie algoritmy...
21 Feb 2010 18:48
Obe knizky ktore si si vybral z tych algoritmov su sice fajn, a je dobre vediet co sa v nich pise, ale tie si mozes kludne kupit neskvor. Tuto knizku
| http://knihy.cpress.cz/knihy/cely-knizni-web/sleva-56-65/algoritmy-datove-struktury-a-programovaci-techniky/ |
by som ti odporucil, ak by si mal zaklady za sebou a dobre vryte v pamati.
priblizim ti priblizne co je v tej knizke pisane:
Rekurzivní techniky: co je rekurze a k čemu slouží v praxi? --> funkcia vola samu seba mozno ste to robili aj v skole klasickym skolskym prikladom je ratanie faktorialu nieco taketo:
function ratajFaktorial(a: integer):integer
begin
if (a > 1) a := ratajFaktorial(a-1) * a;
result := a;
end;
|
Řazení dat: nejoblíbenější techniky seřazování dat --> triedenie udajov tam su vysvetlene pravdepodobne buble sort, quick sort, atd take klasicke metody usporiadani cisiel
Datové struktury: seznamy, posloupnosti, sady (množiny) a stromy v praktickém využití --> "vysokoskolske ucivo" toto su veci ktore sa ucia na vysokych skolach v praxi sa zial malo vyuzivaju (tieto veci su v praxi predprogramovane a ich pouzijes a ani o tom nemusis vediet)
Vyhledávací algoritmy: lineární a binární vyhledávání, hešování (transformace klíčů) --> "vysokoskolske ucivo" napr hash kluce sa pouzivaju na rychly pristup k udajom. povedane z rychlika funkcia hash() je taka funkcia ktora ku kazdemu retazcu vrati nejake cislo v rozmedzi 0 az X (x je maximalny pocet prvkov v poli) a ty potom pristupis na poziciu v poli ktoru si dostal z hash funkcie teda ak ti hash("retazec") vrati cislo 17 tak ty vies ze to co hladas najdes v pole[17]
Pokročilé programovací techniky: rozděl a panuj, dynamické programování, nenasytné (greedy) programování. --> "Vysokoskolske ucivo" pouziva sa ak mas velke polia napriklad 1000 X 1000 a mas ich obsadene napriklad na 1% Pouziva sa to preto lebo o nieco viac zatazujes procesor, ale vyrazne setris pamat.
Algoritmizaci grafů: vysvětlení jedné z nejzajímavějších datových struktur vyskytujících se v informatice --> toto by som skvor zaradil k vyssej matematike grafy si v tomto pripade mozes predstavit ako mnozstvo miest ktore su pospajane cestami a tymto dokazes riesit ulohy napriklad najdite najlacnejsie vlakove spojenie z bratislava zeleznicna stanica do praha ustredny nadrazi.
Umělou inteligenci: mohou počítače myslet? --> no a toto mozem len odhadnut ze sa bude jednat o vysvetlenie principu neuronovych sieti ako to funguje, ze je to zlozite mozno par zakladnych prikladov ako spravit neuronku na logicke vyrazi or, xor a podobne.
No a o tej druhej nebolo vela napisane takze o tej ti neporadim. A osobne by som ti poradil jednu z tychto knih C++ bez predchozich znalosti alebo mistrovstvy v C++.
Dufam, ze som ti trochu pomohol
PS ked kupujes literaturu z ktorej sa chces ucit odporucam ist radsej do knihkupectva kde tieto knizky maju prelistuj si jednu aj druhu precitaj par stran a podla toho ktorej budes lepsie rozumiet tu si kup
22 Feb 2010 18:19
| ghost Napísal: |
Obe knizky ktore si si vybral z tych algoritmov su sice fajn, a je dobre vediet co sa v nich pise, ale tie si mozes kludne kupit neskvor. Tuto knizku
| http://knihy.cpress.cz/knihy/cely-knizni-web/sleva-56-65/algoritmy-datove-struktury-a-programovaci-techniky/ |
by som ti odporucil, ak by si mal zaklady za sebou a dobre vryte v pamati.
priblizim ti priblizne co je v tej knizke pisane:
Rekurzivní techniky: co je rekurze a k čemu slouží v praxi? --> funkcia vola samu seba mozno ste to robili aj v skole klasickym skolskym prikladom je ratanie faktorialu nieco taketo:
function ratajFaktorial(a: integer):integer
begin
if (a > 1) a := ratajFaktorial(a-1) * a;
result := a;
end;
|
Řazení dat: nejoblíbenější techniky seřazování dat --> triedenie udajov tam su vysvetlene pravdepodobne buble sort, quick sort, atd take klasicke metody usporiadani cisiel
Datové struktury: seznamy, posloupnosti, sady (množiny) a stromy v praktickém využití --> "vysokoskolske ucivo" toto su veci ktore sa ucia na vysokych skolach v praxi sa zial malo vyuzivaju (tieto veci su v praxi predprogramovane a ich pouzijes a ani o tom nemusis vediet)
Vyhledávací algoritmy: lineární a binární vyhledávání, hešování (transformace klíčů) --> "vysokoskolske ucivo" napr hash kluce sa pouzivaju na rychly pristup k udajom. povedane z rychlika funkcia hash() je taka funkcia ktora ku kazdemu retazcu vrati nejake cislo v rozmedzi 0 az X (x je maximalny pocet prvkov v poli) a ty potom pristupis na poziciu v poli ktoru si dostal z hash funkcie teda ak ti hash("retazec") vrati cislo 17 tak ty vies ze to co hladas najdes v pole[17]
Pokročilé programovací techniky: rozděl a panuj, dynamické programování, nenasytné (greedy) programování. --> "Vysokoskolske ucivo" pouziva sa ak mas velke polia napriklad 1000 X 1000 a mas ich obsadene napriklad na 1% Pouziva sa to preto lebo o nieco viac zatazujes procesor, ale vyrazne setris pamat.
Algoritmizaci grafů: vysvětlení jedné z nejzajímavějších datových struktur vyskytujících se v informatice --> toto by som skvor zaradil k vyssej matematike grafy si v tomto pripade mozes predstavit ako mnozstvo miest ktore su pospajane cestami a tymto dokazes riesit ulohy napriklad najdite najlacnejsie vlakove spojenie z bratislava zeleznicna stanica do praha ustredny nadrazi.
Umělou inteligenci: mohou počítače myslet? --> no a toto mozem len odhadnut ze sa bude jednat o vysvetlenie principu neuronovych sieti ako to funguje, ze je to zlozite mozno par zakladnych prikladov ako spravit neuronku na logicke vyrazi or, xor a podobne.
No a o tej druhej nebolo vela napisane takze o tej ti neporadim. A osobne by som ti poradil jednu z tychto knih C++ bez predchozich znalosti alebo mistrovstvy v C++.
Dufam, ze som ti trochu pomohol
PS ked kupujes literaturu z ktorej sa chces ucit odporucam ist radsej do knihkupectva kde tieto knizky maju prelistuj si jednu aj druhu precitaj par stran a podla toho ktorej budes lepsie rozumiet tu si kup  |
jj faktorial doverne poznam a určite si kupim tu knihu, co si mi radil... myslel som aj na knihu od cpress: The Art of Computer Programming: Zakladne algoritmy, ale myslim, ze je dost narocna... a aj recenzie co som cital tvrdili, ze je to vraj "vyssia matematika"... sam som ju v rukach nemal, takze nwm ako to ale zacnem radsej s tym, co si mi poradil... diki za radu
23 Feb 2010 17:09
The Art of Computer Programming od Donalda E. Knutha ti je imho myslim az zbytocne, kedze s programovanim zacinas. Byt tebou, tak nejdem hrrr na C++, ale skor tak ako si aj zacal temu, ze nieco vseobecne o algoritmoch, popripade algoritmoch v pascale. Kazdy programovaci jazyk ma nieco co ta moze naucit, t.j. o cosi inak sa programuje v pascale/delphi a inak v C/C++, atd. Su aj taki typci, ktori programuju v kazdom jazyku rovnako, t.j. naucili sa nieco robit nejako v pascale, tak v ostatnych jazykoch to emuluju (typicky pripad polia v C tak, ze nejdes od indexu 0, ale 1, atd...). Tiez by som si nevyberal nejake hrube buchle, ktore maju tu tendenciu, ze ich nedocitas.. A ani nevies, ze ci sa tomu budes venovat tolko..
Na co by som sa viac sustredil je, ze programovat vela.. t.j. skus si vymysliet rozne veci, alebo si najdi zbierky prikladov, ktore su zaujimave na riesenie, alebo ries sutaze, t.j. zadania, ktore boli po minule roky na sutaziach.. atd.. proste, aby si mal dostatok napadov na riesenie.. a ucil sa jazyk.. je jedno ci je to pascal/delphi.. alebo iny jazyk.. neries velke veci zpociatku..
Skusit naimplementovat nejake algoritmy (quick sort, merge sort, radix sort, ... bubble sort ani neodporucam, to je iba zly sort) popripade jednoduchu stolovu hru... napr. pexeso, sach.. nemusis mat ani AI protihraca, len nech ti to napr. kresli a kontroluje platnost tahov atd.. naucis sa tak pouzivat komponenty napr.. studium algoritmov ako takych mi pride vhodnejsie, ked budes poznat jazyk, konstrukcie jazyka, ako to naimplementovat v jazyku.. lebo figu ti je platne analyzovat vypoctovu zlozitost quicksortu a co je O-notacia, Omega-notacia, Theta-notacia.. ked si si nie isty jazykom a ako to zapisat do programu..
Inak povedane, siel by som do knihkupectva.. pozrel daku knihu, ktora nie je velmi hruba.. pozrel, ze ci programy, ktore su tam nejako prezentovane a tak su pre teba niecim zaujimave, ze ci myslis, ze ti na nieco budu, ze si ich prepises a pochopis..
Casom zistis, ze co chces robit..
A napr. pre mna bola celkom taka smerodatna kniha od Pavla Herouta - Ucebnica jazyka C, kedze pascal ma z nejakeho dovodu neuspokojoval.. mozno preto, ze vtedy to nebolo s pascalom take slavne a zacal som potrebovat C, lebo mi v Red Hate 5 padali kompilacie a ja som netusil, ze o com.. resp. o Delphi a OOP som ani netusil riadne.. a v tejto knihe su cvicenia, ktore celkom pomahaju, imho si ich poctivo preriesit ti pomoze..
Rychlokurz od Miroslava Viriusa - Od C k C++.. vcelku tenka kniha, ale dost husto napisana, ze sa dozvies na par stranach vela.. ale to uz nebolo u mna o programovani ako takom.. ale o nauceni sa C++..
Nechcel som to ponat ako zivotny pribeh , skor ako moj pohlad na vec, z mojich osobnych skusenosti, a nie som ani programator.. programujem vtedy, ked nemam inu moznost - t.j. ze to za mna nikto iny nespravil .. ale celkom ma to bavi..
23 Feb 2010 20:46
jj... rozumiem
24 Feb 2010 10:16
Ja by som na to siel este trochu inak. Mozno ma mnohi na tomto fore budu povazovat za kacira, ale ja by som vobec nezacinal s Pascalom alebo C/C++.
Algoritmizacia sa da naucit v lubovolnom jazyku. Pascal/C/C++ vsak maju jednu nevyhodu. Tlacia cloveka do proceduralneho programovania, alebo do kombinovaneho proceduralne+objektove. Takisto vacsina ucebnic pre tieto jazyky je takto koncipovana. Najskor sa nauc proceduralne a potom niekedy sa mozno pustis aj do objektoveho.
Podla mna sa opakuje situacia z pred padesiatich rokov, ked boli vsetci proti uceniu vyssich programovacich jazykov (studenti musia najskor vediet programovat v asembleri/strojovom kode, ved v tom pocitac pracuje), alebo z pred styridsiatich rokov, ked boli vsetci proti uceniu strukturovaneho programovania (predsa pocitac ziadnu strukturu programu nepozna, ked sa clovek nauci goto, strukturovane mu nebude robit problemy).
Problem vsak je, ze kym z asembleru na vyssi programovaci jazyk nemusel byt az taky problem a zo sekvencneho programovania sa na strukturovane prejde naozaj lahko, tak prejst z proceduralneho na skutocne objektove programovanie je problem a je to proces niekolkych rokov. Niektory dokonca neprejdu nikdy a myslia proceduralne dokonca aj v cisto objektovych jazykoch.
Objektove programovanie je ale dneska zaklad. Bez objektoveho sa uz robi minimum veci. Osobne by som teda odporucal zacat s objektovym programovanim hned od zaciatku a to v jazykoch, ktore (aj ked nie su cisto objektove) si objektove programovanie vynucuju. Teda hlavne Java alebo C#.
Co sa tyka knih, tak odporucat mozem iba knihy pre zaciatocnikov v jazyku Java, nakolko tento jazyk sam zaciatocnikov vyucujem. Najlepsia (aj ked tiez jej mam co vytykat) je asi knizka "Objects First with Java: A Practical Introduction using BlueJ" od panov David J. Barnes a Michael Kölling. Tato knizka je ale v anglictine, co nemusi kazdemu vyhovovat. V slovencine ziadnu zaujimavu knizku nepoznam, ale v cestine potom mozem odporucat knihu "Objektově orientované programování pro naprosté začátečníky" od pana R. Pecinovskeho, ktora bud vysla teraz niekedy, alebo by mala vyjst kazdu chvilu. Druha kniha od Pecinovskeho je "Myslíme objektově v jazyku Java", ta je tiez v celku v pohode. Je na trhu uz nejaky ten cas a dost ju ludia vychvaluju. Podla toho, ako sa p. Pecinovsky vyjadroval je vsak ta nova omnoho lepsia. Ked napisem svoju, potom budem odporucat tu, ale zatial takto .
Co sa tyka algoritmov, moj nazor je, ze sa nedaju naucit z knizky. Knihy, ktore som vymenoval idu na algoritmizaciu tym sposobom, ze zadavaju co najviac prikladov. Proste clovek si to musi osahat. Teoreticke poznatky, ktore mozu pri algoritmizacii pomoct su hlavne rozne oblasti algebry a teoria grafov. Tam vsak knihy odporucat nemozem, lebo ziadne nepoznam. Clovek sa podla mna (minimalne na zaciatok) zaobide aj bez tejto teorie.
Ak niekomu vadi jazyk Java, tiez to nie je problem. Moze ho brat iba ako odrazovy mostik. Ked sa clovek nauci jeden/dva jazyky, tak treti, stvrty, piaty uz nie su problem.
26 Feb 2010 18:36
na codeplexe mas velmi vela zdrojov a perfektnych tutorialov odtial sa da toho vela naucit. poblem je, ze sa tam najdu aj menej kvalitne clanky.
Osobne som stale toho nazoru, ze najlepsie je zacat prave v C#, ak uz mas za sebou nejake zklady a to z niekolkych dovodov:
C# je moderny a stale rozvyjajuci sa jazyk
C# je jeden z najrozsirenejsich jazykov
V C# dokazes urobit vsetky typy aplikacii (napr. java, ku ktorej sa C# najviac prirovnava nema tolko moznosti)
{Desktopove aplikacie (WPF a XAML) je zatial silno bezkonkurencna technologia pre tvorbu GUI, Webove aplikacie, hry, webservicy, paralelne programovanie, SQL funkcie...}
mas k dispozicii najrozsiahlejsi framework.
mas k dispozicii velmi vela zdrojov od tretich stran a asi najprepracovanejsiu dokumentaciu priamo od MS
najlepsie vyvojove prostredie - dokaze viac ako napr eclipse alebo netbeans a je rychlejsie (teraz mas sancu stiahnut zadarmo VS2010 RC), ak mas preukaz ISIC tak neskor aj ostru plnu verziu, inak je velmi dobra aj Express Edition.
bude potom lahsie prejst na ine jazyky (VB.NET je uz v podstate to iste len s inou syntaxou) v ramci .NET, ako C++, alebo F#. takisko prest od C# k jave je lahsie ako naopak, ale od C# sa ludia neradi "vracaju" k jave.
a nezanedbatelna je aj skutocnot, ze programatori v C# (.NET) su aj lepsie plateny ako javisti
ale aj co sa tyka samotnej vyuky:
v C# sa programuje proste rychlejsie ako napr v C++, taktiez ti nedovoli napisat urcite druhy nespravneho kodu (ktory sice funguje) a tiez ked spravis chybu, tak ju lahsie odhalis ako v C++, alebo php.
Je sice pravda, ze C# urobi vela veci za programatora a potom je trochu problem zacat kodit napr v C++, ale to je len mala obet za to co dostanes. A ak ti bude niekto tvrdit, ze .NET nieje dobry, tak len preto, ze v tom bud neprogramoval, alebo programoval v uplne prvej verzii, ale to je ako tvrdit, ze Superb je zle auto (na zaklade skusenosti zo starou stodvacinou)
EDIT:
osobne nemam rad knihy, kde sa ide krok za krokom, viac sa mi pacia tie typu vsetko v kocke, detaily si aj tak musis nastudovat v dokumentacii.
01 Mar 2010 1:55
Ja by som sa praveze do cisto objektoveho jazyka ako zaciatocnik nepustal.. Sam to vidim na spoluziakoch, ktori programuju prvykrat a nevedia ani len proceduralne rozmyslat, ze im rozmyslanie objektovo robi velke problemy, nehovoriac o samotnej implementacii. Taktiez pchat objekty tam, kde ich netreba mi pride uchylne ale mozno som len zaujaty, kedze som OOP dlho zavrhoval..
01 Mar 2010 9:58
aky je rozdiel, co sa tyka ucenia sa, medzi:
void main (char* args)
{
}
a
class Program
{
void main(string args[])
{
}
}
?
ked napchas vsetky metody do jednej staickej, alebo singleton triedy, nicim sa to nelisi od proceduralneho programovania, ale az ma oci bolia, ked citam tento vyraz.
01 Mar 2010 20:47
| TommyHot Napísal: |
Ja by som sa praveze do cisto objektoveho jazyka ako zaciatocnik nepustal.. Sam to vidim na spoluziakoch, ktori programuju prvykrat a nevedia ani len proceduralne rozmyslat, ze im rozmyslanie objektovo robi velke problemy, nehovoriac o samotnej implementacii. Taktiez pchat objekty tam, kde ich netreba mi pride uchylne ale mozno som len zaujaty, kedze som OOP dlho zavrhoval.. |
Ja ucim objektovo programovat od prveho okamihu zopar (priamo ~20, menej priamo dalsich ~20 a nepriamo ~200) ludi a musim povedat, ze je to skvele. Neda sa ale na to ist ziadnou hura metodou a treba postupovat systematicky. Preto som odporucal knihy, ktore som odporucal.
Musim sa ale priznat ze este pred dvoma rokmi som bol zarytym odporcom niecoho takeho. Hodne som ale o tom rozmyslal a dneska na ucenie sa programovania metodou "Objects first" nedam dopustit.
03 Mar 2010 10:39
Mne skor ide o to, ze ak sa clovek odzaciatku uci mysliet sposobom SOA a SOA 2.0 (Event Driven Architecture), tak tie eventy, objekty, viacvrstvova struktura atd su akosi prirodzene, kdezto taky typicky dlhorocny phpckari a ceckari maju s tymto velky problem.
24 Mar 2010 8:00
Hladam programatora C# alebo C++ do jedneho projektu. Ide o vyvoj 2D multiplayerovej hry (vyvoj herneho servera a podpora pre herneho klienta - relativne jednoducha hra).
financne: Platene hotovost + proviziami (na zmluvu)
Oblast: Kosice
Kto ma chut ozvyte sa mi na dilong@seznam.cz
tnx
24 Mar 2010 8:00
Hladam programatora C# alebo C++ do jedneho projektu. Ide o vyvoj 2D multiplayerovej hry (vyvoj herneho servera a podpora pre herneho klienta - relativne jednoducha hra).
financne: Platene hotovost + proviziami (na zmluvu)
Oblast: Kosice
Kto ma chut ozvyte sa mi na dilong@seznam.cz
tnx
Oprávnenia
Môžete sťahovať a prezerať priložené súbory
Nemôžete odosielať nové témy do tohto fóra Nemôžete odpovedať na témy v tomto fóre Nemôžete upravovať svoje príspevky v tomto fóre Nemôžete mazať svoje príspevky v tomto fóre Nemôžete hlasovať v tomto fóre Nemôžete prikladať k príspevkom súbory
|
|