Co byste doporučili začátečníkovi, aby udělal v C#?

Místo pro dotazy a rady ohledně programovacích jazyků (C++, C#, PHP, ASP, Javascript, VBS..) a tvorby webových stránek

Moderátor: Mods_senior

Uživatelský avatar
strangereu
Level 4.5
Level 4.5
Příspěvky: 1521
Registrován: září 11
Bydliště: Birmingham, United Kingdom
Pohlaví: Muž

Co byste doporučili začátečníkovi, aby udělal v C#?

Příspěvekod strangereu » 23 kvě 2017 14:24

Ahoj,
kvůli přítelkyní a její škole jsem se rozhodl, že trošku rozšířím svůj rozsah zkušeností a začnu se učit C#.
Momentálně ovládám na celkem solidní úrovní PHP, Javascript, Lua a pak ptákoviny jako je HTML, CSS a různe frameworky, ale to do toho nepočítám, protože to není ani programování.

Každopádně, začal jsem zkoušet určité věci sám podle toho, jaké úkoly měla ve škole přítelkyně (2 ročník).
Dělal jsem hrací kostku (Tu z člověče nezlob se), kreslil jsem pomocí těch kreslících funkcí draw rec, ell, atd... Pak jsem taky dál dělal semafor, který měnil barvy v určitém intervalu a teď naposledy odpočítávalo, které rozdělovalo na minuty a vteřiny.

Níže přikládám dva dokončené projekty z výše uvedených, které mi ještě zbyly v PC.
HOTOVO - Počítadlo.zip

HOTOVO - Hrací kostka.zip


Byl bych rád, kdyby mi tu někdo z vás mohl zadat nějaký úkol, který bych mohl vypracovat ve svém volném čase a zase se o něco zdokonalit a posunout svou úroveň.
Neříkám, že můj kód je nějak extrémně čistý nebo přehledný, ale myslím si, že nejhorší také není a zapracovat by se na tom do budoucna dalo.
Nemáte oprávnění prohlížet přiložené soubory.


Back-end webdeveloper

Reklama
zeus
Master Level 9
Master Level 9
Příspěvky: 8248
Registrován: únor 12
Bydliště: Pankrac
Pohlaví: Muž

Re: Co byste doporučili začátečníkovi, aby udělal v C#?

Příspěvekod zeus » 23 kvě 2017 14:51

Co serial Mala hra o velkeho Bajta v teto sekci?
Prazaci jo ty se maj, az kdyz si me zavolaj..

Uživatelský avatar
faraon
Master Level 8
Master Level 8
Příspěvky: 5968
Registrován: prosinec 10
Pohlaví: Muž

Re: Co byste doporučili začátečníkovi, aby udělal v C#?

Příspěvekod faraon » 23 kvě 2017 16:37

Ale jo, a vůbec to nemusíš brát postupně:


A když to uděláš klikací v GUI a s barvičkami, tak to vůbec nebude vadit!

Ta kostka mi připomněla slavnou hru z pořadu Videostop, a semafor jsem kdysi dělal v GWBasicu. Barevně, ale v textovém režimu :lol:
Nejhroznější sen linuxáka: nabootuje počítač, a tam Windows.
Nejhroznější sen windowsáka: nabootuje počítač, a tam Linux.
Nejkrásnější sen linuxáka: nabootuje počítač, a tam Linux.
Nejkrásnější sen windowsáka: nabootuje počítač.

Uživatelský avatar
strangereu
Level 4.5
Level 4.5
Příspěvky: 1521
Registrován: září 11
Bydliště: Birmingham, United Kingdom
Pohlaví: Muž

Re: Co byste doporučili začátečníkovi, aby udělal v C#?

Příspěvekod strangereu » 24 kvě 2017 16:37

Moc děkuju za reakce, dneska se na to vrhnu a pak pošlu, co se mi povedlo a co ne :-)

Jinak včera v noci jsem ještě upatlal dohromady takovou jednoduchou kalkulačku na výpočet percentuálního zbytku kapaliny v nádobce, kód přikládám níže a rovnou se ještě zeptám, jestli tu někdo z vás zkoumal můj kód, tak je tam potřeba něco zlepšit nebo se zaměřit na něco a pracovat na tom?

Výpočet hladiny

Kód: Vybrat vše

        static void Main(string[] args)
        {
            Console.Write("Prosím zadej maximální možnou hladinu v ml: ");
            string hladinaMax;
            hladinaMax = Console.ReadLine();

            Console.Write("Zadej aktuální stav hladiny v nádobce v ml: ");
            string hladinaCur;
            hladinaCur = Console.ReadLine();

            int a = int.Parse(hladinaMax);
            int b = int.Parse(hladinaCur);
            float c = 0;

            c = ((float)b / (float)a) * 100;

            Console.WriteLine("Aktuální stav hladiny: " + (float)c + "%");
            Console.ReadKey();
        }
Back-end webdeveloper

Uživatelský avatar
satik
Level 5.5
Level 5.5
Příspěvky: 2521
Registrován: leden 15
Bydliště: Praha / Krkonoše
Pohlaví: Muž

Re: Co byste doporučili začátečníkovi, aby udělal v C#?

Příspěvekod satik » 24 kvě 2017 18:00

Kód: Vybrat vše

string hladinaCur;
hladinaCur = Console.ReadLine();

tohle můžeš zjednodušit na jeden řádek na:

Kód: Vybrat vše

string hladinaCur = Console.ReadLine();

a to samý třeba s
float c

Kód: Vybrat vše

(float)c

zbytečný přetypování

zbytečný mít uložený oba stringy hladinaMax a hladinaCur když pak používáš jen ty float hodnoty

na výpisy stringů je lepší použít buďto rovnou format nebo string interpolaci, tady je to sice fuk, ale u složitějších aplikací každý spojování stringů plusem vytvoří novej string, což pak zbytečně zatěžuje GC, pokud se toho tam vyskytuje víc
https://www.facebook.com/peasantsandcastles/
https://www.twitch.tv/satikcz/
https://www.youtube.com/c/SatikCZE
PC: AMD Ryzen 1700 @ 4 GHz+BQ SL 280, ASUS Crosshair VI HERO, 32GB RAM, MSI GTX 1080 Gaming Z, Fractal Define S, Seasonic P860, SSD 2TB celkem
Periferie: ASUS ROG SWIFT, Razer Deathadder+Blackadder Chroma, Steelseries QcK+, Sennheiser PC360, DXRACER OH/KF06/NB

jsemzpet
Level 1
Level 1
Příspěvky: 74
Registrován: březen 17
Pohlaví: Muž

Re: Co byste doporučili začátečníkovi, aby udělal v C#?

Příspěvekod jsemzpet » 24 kvě 2017 18:24

Měl by ses zbavit některých programátorských zlozvyků:

-nepíšeš dokumentační komentáře
-komentáře a názvy proměnných píšeš česky
-používáš tzv. magic numbers
-textové řetězce píšeš rovnou do kódu
-program nemá dobrou vnitřní strukturu, měl by být lépe členěn do funkcí
-používáš nevhodné konstrukce (kaskáda if místo jednoho switche)

To, že používáš objektově orientovaný jazyk zcela neobjektově také není úplně programátorsky čisté. Být tebou tak bych začal hezky od začátku. Žádné IDE, obyčejné C nebo C++, kód piš v textovém editoru a překládej s gcc. Vyzkoušej si jak funguje linker, co to jsou makra, jak se pracuje s hlavičkovými soubory, nauč se pracovat s pointery.
Když si všechno naklikáš v IDE, moc se toho nenaučíš. Také by sis měl vybírat náročnější úkoly, pokud budeš dělat takové primitivní věci, také se moc nenaučíš.

Neboj se dát si těžké cíle, tak se nejvíc naučíš. Pro začátek si zkus nasimulovat funkcionalitu nějakého shellového příkazu. Pár nápadů:
-tracert
-tr
-awk
-cat

Další náměty:
-hledání cesty v orientovaném grafu
-simulace web browseru (načte HTML a CSS a podle toho vykreslí stránku)

EDIT:
ale u složitějších aplikací každý spojování stringů plusem vytvoří novej string


To může být pravda, ale většinou to tak není. Kompilátory s vysokou mírou optimalizace si sami vyberou, co je nejvhodnější, takže většinou není nutné dělat nejrůznější hacky, které pak mohou snižovat čitelnost kódu.

Uživatelský avatar
CZechBoY
Master Level 9.5
Master Level 9.5
Příspěvky: 8690
Registrován: srpen 08
Bydliště: Brno
Pohlaví: Muž

Re: Co byste doporučili začátečníkovi, aby udělal v C#?

Příspěvekod CZechBoY » 24 kvě 2017 18:38

@jsemzpet: k čemu mu bude nízkoúrovňová znalost když (asi?) nechce dělat nízkoúrovňový věci.
Nevim co znamená naklikat v IDE, ale já jsem nikdy nic (kromě GUI) v IDE neklikal?
PHP, Nette, MySQL, Oracle
PhpStorm, xampp, WinSCP, Opera browser, Windows 10
Xiaomi 3S (RAM 2GB, CZ LTE), Microsoft Band 2
Raspberry PI 3, bez chlazení, v krabičce, 8 GB SD, KODI, Raspbian

jsemzpet
Level 1
Level 1
Příspěvky: 74
Registrován: březen 17
Pohlaví: Muž

Re: Co byste doporučili začátečníkovi, aby udělal v C#?

Příspěvekod jsemzpet » 24 kvě 2017 19:08

@faraon

Plánuješ pokračování té programátorské soutěže?

Uživatelský avatar
satik
Level 5.5
Level 5.5
Příspěvky: 2521
Registrován: leden 15
Bydliště: Praha / Krkonoše
Pohlaví: Muž

Re: Co byste doporučili začátečníkovi, aby udělal v C#?

Příspěvekod satik » 25 kvě 2017 11:02

jsemzpet píše:
ale u složitějších aplikací každý spojování stringů plusem vytvoří novej string


To může být pravda, ale většinou to tak není. Kompilátory s vysokou mírou optimalizace si sami vyberou, co je nejvhodnější, takže většinou není nutné dělat nejrůznější hacky, které pak mohou snižovat čitelnost kódu.

Uh, oznacujes best practices za hacky? :D
Interpolace stringu je v C# celkem novinka prave pro zjednoduseni a zprehledneni skladani stringu.

Jinak pochybuju, ze by kompilator mohl jakkoliv zoptimalizovat spojovani stringu v c#, kdyz treba napises

Kód: Vybrat vše

string a,b,c,d;
...
string str = a + "ahoj " + b + c + ", hodnota: " + d;


String je immutable, takze pro pripojovani kazdyho dalsiho stringu se vytvori nova instance, do ktery se mezivysledek ulozi - takze treba kdyz to napises takhle, tak tim vytvoris 5 novych instanci stringu, pricemz az tu posledni pouzijes, ostatni pak jen zbytecne pridelavaj praci GC.

Jinak doporucuju programovat to, kvuli cemu programujes - u me to treba byly hry, takze jsem ze zacatku delal predevsim jednoduchy hry.
https://www.facebook.com/peasantsandcastles/
https://www.twitch.tv/satikcz/
https://www.youtube.com/c/SatikCZE
PC: AMD Ryzen 1700 @ 4 GHz+BQ SL 280, ASUS Crosshair VI HERO, 32GB RAM, MSI GTX 1080 Gaming Z, Fractal Define S, Seasonic P860, SSD 2TB celkem
Periferie: ASUS ROG SWIFT, Razer Deathadder+Blackadder Chroma, Steelseries QcK+, Sennheiser PC360, DXRACER OH/KF06/NB

jsemzpet
Level 1
Level 1
Příspěvky: 74
Registrován: březen 17
Pohlaví: Muž

Re: Co byste doporučili začátečníkovi, aby udělal v C#?

Příspěvekod jsemzpet » 25 kvě 2017 11:43

Nevíš, jak funguje optimalizace u překladačů. Ano, string je neměnný, ale myslíš si, že když napíšeš "ab" + "cd", tak to je bude překladač vždy skutečně spojovat? Pokud se mají pouze vypsat, tak je reálně spojovat nebude.

Jinak pochybuju, ze by kompilator mohl jakkoliv zoptimalizovat spojovani stringu v c#, kdyz treba napises

To záleží na tom, jak a kde budeš s proměnnou str pracovat. Pokud ji jen vypíšeš, spojování není nutné. Pokud budeš iterovat přes jednotlivé znaky toho stringu, spojení bude nutné.

Jinak zrovna string interpolation je z hlediska výkonu o něco horší než prostá konkatenace. A co je horší, že interpolace je ze své podstaty obtížně optimalizovatelná.

Z hlediska tisku je mnohem lepší printf jak jej známe z C/C++. Zápis je podobný jako u interpolace v C#, ale stringy se nespojují, protože printf může brát libovolný počet argumentů.

someoneFromSomewhere
nováček
Příspěvky: 20
Registrován: květen 17
Pohlaví: Muž

Re: Co byste doporučili začátečníkovi, aby udělal v C#?

Příspěvekod someoneFromSomewhere » 25 kvě 2017 16:16

Je dobré se před manuálníma optimalizacema podívat na to, co kompilátor všechno dělá sám. Někdy totiž přílišná optimalizace zablokuje automatickou optimalizaci.

Příklad v C++:

Kód: Vybrat vše

std::vector<T> get() {
   std::vector<T> vect;
   vect.insert(...);
   return vect;
}


Kompilátor tenhle kód optimalizuje a místo vytvoření kopie vektoru, přesune data přímo.
Ale když se napíše tohle, tak k tomu nedojde (proto je lepší vracet prostý vektor, pokud se jedná o temp. objekt):

Kód: Vybrat vše

std::vector<T> get() {
   std::vector<T> vect;
   vect.insert(...);
   return std::move(vect);
}
std::endl není nový řádek!


  • Mohlo by vás zajímat
    Odpovědi
    Zobrazení
    Poslední příspěvek
  • Nova grafika - pomoc zacatecnikovi
    od Lukinnjo » 15 bře 2017 08:42 » v Problémy s hardwarem
    1
    119
    od Ornádo
    15 bře 2017 08:52
  • Udělal jsem z flashky bootovací disk. Jde to dát zpět? *
    od kodl004 » 18 led 2017 10:44 » v Problémy s hardwarem
    2
    227
    od Martab
    18 led 2017 10:56
  • Porování notebooků - co by jste doporucili?
    od pulli20 » 28 říj 2016 23:12 » v Rady s výběrem hardwaru a sestavením PC
    11
    291
    od pulli20
    04 lis 2016 20:08
  • jakou grafickou kartu byste mi doporucili.
    od Nuaimbooze » 17 lis 2016 11:17 » v Rady s výběrem hardwaru a sestavením PC
    21
    582
    od Pernee44
    17 lis 2016 21:08

Zpět na “Programování a tvorba webu”

Kdo je online

Uživatelé prohlížející si toto fórum: CommonCrawl [Bot] a 1 host