Jak začít v C?

milzou

Jak začít v C?
« kdy: 30. 07. 2013, 16:20:41 »
Zdravím,
Jak vyplývá z nadpisu, chtěl bych se naučit alespoň základy programování v C. Od včera studuji knihu Učebnice jazyka C od Pavla Herouta. Za tu dobu si myslím, že jsem ty základy aspoň trochu pochopil (předtím jsem vůbec netušil co je co). Chtěl bych krůček po krůčku napsat nějaký takový program jako je Kecal, nebo KarelBot (umělé rozhovory s PC). Zatím umím napsat "jen" to, že co do toho programu napíšu, tak ten program to napíše ještě jednou. Jak to mám udělat, aby mi to odpovědělo větou z mého txt slovníku? A ještě pár otázek navíc :D - Mohli byste mi dát nějaké typy na začátek? Když jste začínali s programováním, jaké jste měli potíže? Co vám šlo a co ne?


xhamster

Re:Jak začít v C?
« Odpověď #1 kdy: 30. 07. 2013, 16:35:06 »
poctive si naprogramuj vsechny ulohy, ktere jsou na konci kazde kapitoly, pak by ti nemelo delat potize udelat ten program.

s.

Re:Jak začít v C?
« Odpověď #2 kdy: 30. 07. 2013, 17:09:46 »
Stahni si zdrojove kody z nejakeho existujiciho projektu. Treba tak, ze si vyfiltrujes c jazyk na sourceforge.net ci github.com.

Rovnou doporucim linuxove jadro (kernel.org) ci pacman (ftp://ftp.archlinux.org/other/pacman/) ma celkem citelne zdrojaky. Nektere projekty maji dost silenou (pro tebe nevhodnout) syntaxi.

Nasledne si otevri libovolny c-kovy soubor a okoukavej syntaxi. Tzn. jak zalamuji ci odsazuji radky, jak pisou slozene zavorky apod. Spousta konstrukci nemas vubec sanci pochopit, ale jde o to, ze spousta zacatecniku pise kod s hroznou syntaxi. Diky
tomuhle se naucis, ze odsazovat o 8 znaku je bezne apod. Z tohoto duvodu nebude vadit ze pacman ci linux kernel obzvlaste jsou hodne rozsahle projekty. Kompilovat je samozrejme nebudes.

Tomuto se rika ident style (http://en.wikipedia.org/wiki/Indent_style), je jich vicero a linux kernel i pacman uzivaji podobnou syntaxi.

Hodne dobra knika (asi pouze v anglictine) je "C Primer Plus", autor Stephen Prata. Je trochu rozsahlejsi.

Vzdy se snaz si napsat co nejvice (i velmi kratkych) programu, i takove ktere pouze procvicuji jednu danou pasaz a maji 20-30 radku.
Pokud budes z knihy pouze cist, tak se nenaucis skoro nic a i to malo velice rychle zapomenes.

smoofy

  • *****
  • 1 059
    • Zobrazit profil
    • E-mail
Re:Jak začít v C?
« Odpověď #3 kdy: 30. 07. 2013, 17:27:30 »
Predevsim, res ty dilci ulohy jak z Herouta, tak treba z "http://www.cprogramming.com/".  Zamer se hned od zacatku na podrobnou dokumentaci vseho co delas a ukladej si vsechny ty programy pro pozdejsi referenci. Dobry je zacit si treba psat i vlastni knihovny a pouzivat vlastni funkce. Jak se budes zlepsovat a ucit nove veci tak postupne budes stare veci zjednodusovat a zefektivnovat. Neboj se toho, ze vetsina veci je k nicemu, ma ti to poslouzit jako praxe a zkusenost. "http://projecteuler.net/" je super web s ulohama na reseni a zrovna ten postup s vlastnimi knihovnami se ti tady velice hodi, protoze muzes opakovane pro jednotlive ulohy pouzivat jiz jednou vytvorene funkce (prvocisla, fibonacci etc.) nicmene je budes potrebovat zrychlit, protoze u slozitejsich uloh je hrozne znat kazdy zbytecny krok a nity te to hodne ladit vlastni algoritmy..

JarinBarin

Re:Jak začít v C?
« Odpověď #4 kdy: 30. 07. 2013, 18:25:57 »
Me pomohla klasicka kniha Kernighan and Ritchie: The C programming language


student

Re:Jak začít v C?
« Odpověď #5 kdy: 30. 07. 2013, 20:41:57 »
Ako spominaju tu, tak skus tie priklady z Herouta - tie daju tiez nieco viac ako to, co uz zevraj vies.

Ked to dokoncis, tak uz budes vediet riesit jednoduche algoritmicke ulohy. Na hlbsie ponorenie sa do znalosti C odporucam C standard (zadarmo sa da stiahnut len final draft, ale to staci). Ten je na rozdiel od vela inych standardov pisany tak, aby sa dal "rekreacne" citat.

Pavouk106

  • *****
  • 2 400
    • Zobrazit profil
    • Můj blog
    • E-mail
Re:Jak začít v C?
« Odpověď #6 kdy: 30. 07. 2013, 21:10:59 »
Pokud jsi doteď neprogramoval, tak gratuluju k prvním krokům :-)

Na co bacha - na cykly a nekonečný smyčky. Nikdy po sobě nekopíruj, vždy piš od nuly, dokud si nebudeš jistej, že ten kód je tak dobře napsanej, že jej lze zkopírovat do jinýho projektu (chce to bejt sebekritickej). Pokud program nebude fungovat dle předpokladů, vezmi si papír, tužku a piš si, co dělá po spuštění/interakci řádek po řádku a na chybu tak jednoduše přijdeš.

Heroutovo učebnice je hodně dobrá, příklady v ní promyšlený a "jednoduchý", pokud jsi dával pozor v kapitole :-) Mam jí na hajzlu a pročítam si to i jen tak... :-) Do začátku dobrej výběr.

Se svým projektem nespěchej, zkušenost na něj přijde sama ;-)

JS

Re:Jak začít v C?
« Odpověď #7 kdy: 31. 07. 2013, 08:01:00 »
Predpokladam, ze jsi mlady kluk, takze dost rad tady mi prijde mirne mimo (anglicke knihy, Project Euler atd.).

Urcite je dobre naucit se C, o tom zadna. Ale na tu prislusnou aplikaci, kecaci program, to neni nejvhodnejsi jazyk, doporucil bych nejaky jazyk vyssi urovne, treba Python.

Druhou vec, kterou bych na to doporucil, je naucit se neco o datovych strukturach a algoritmech. Treba z knizky Algoritmy v C nebo nejake podobne.

Na tu konkretni ulohu, kecaci program, bych se asi podival po nejake knizce (jestli je takova ceska, nevim jestli umis anglicky) o textovych algoritmech (jako regularni vyrazy, parsovani) a eventualne o strojovem uceni (hodne tech kecalku je zalozeno na Markovskych retezcich nebo necem podobnem, coz je aplikovana pravdepodobnost). Oboji chce trochu (nebo i vic) stredoskolske matematiky. Nevim, zda o kecacich programech existuji konkretni knihy, je to trochu esotericka domena, takze se asi neobejdes bez nejakeho cteni toho, jak to delaji jini. Asi by bylo vhodne se pak podivat do jinych takovych programu a precist si, jak funguji.

Mirek

Re:Jak začít v C?
« Odpověď #8 kdy: 31. 07. 2013, 09:10:16 »
Jak začít v C? Vezmu to trochu obšírněji - "jak začít programovat a ještě k tomu v C"?

Jazyk (v tomhle případě C) je jen způsob jakým vyjádříš myšlenku (algoritmy). Takže z toho je vidět, že aby ses rozvíjel jako programátor v C, potřebuješ pracovat na 2 frontách:

1. Jazyk jako takový

2. Algoritmy, datové struktury, způsob myšlení jako takový

Pro jazyk sis vybral poměrně dobrou knížku. Doporučil bych ti trpělivost, pečlivě číst a hlavně dělat poctivě příklady. Když zjistíš v dalších kapitolách, že si něčím z té předchozí nejsi jistý, vrať se a projdi ji znovu. Přidávej si své vlastní (jednoduché) příklady inspirované těmi v knížce. Věnuj tomu dostatek času a neuspěchej to, buduješ si základy, na kterých budeš později stavět. Nespěchej se složitými věcmi, abys složitou věc zvládl, potřebuješ mít nejprve zažité ty jednoduché. V téhle fázi nečti ani nemodifikuj cizí kód !! Nikdo ti nezaručí že v něm nejsou některé věci úplně špatně. Do cizího kódu se pust až budeš dostatečně silný v kramflecích sám a zvládneš poznat nevhodné použití určitých konstrukcí jazyka.

Potom bych doporučil pracovat na kroku 2 (alg., datové struktury, specializované oblasti podle uvažované aplikace, ...) .

No a pak se pusť do práce - vymysli si relativně jednoduché zadání, které se dá postupně rozšiřovat. To bude vhodné k tomu, že v relativně krátké době budeš mít funkční výsledek a budeš tak mít motivaci pokračovat. Není nic horšího, než dělat na něčem cvičném měsíce a měsíce a pořád nemít v ruce něco, z čeho budeš mít radost.

milzou

Re:Jak začít v C?
« Odpověď #9 kdy: 31. 07. 2013, 09:28:29 »
Díky všem za odpovědi. Samozřejmě ten kecací program nechci nějak uspěchat. Můj otec umí programovat (i tu knihu mi půjčil), takže mi s tím učením může nějak pomoct. Určitě vyzkouším ty úlohy z Herouta a poctivě se to budu učit. Díky za vaše tipy. :)