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.
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.
Co byste doporučili začátečníkovi, aby udělal v C#?
- strangereu
- Level 4.5
- Příspěvky: 1719
- Registrován: září 11
- Bydliště: Vršovice
- Pohlaví:
- Stav:
Offline
- Kontakt:
Co byste doporučili začátečníkovi, aby udělal v C#?
http://screenshare.cz/
-
- Elite Level 10.5
- Příspěvky: 10914
- Registrován: únor 12
- Bydliště: Pankrac
- Pohlaví:
- Stav:
Offline
Re: Co byste doporučili začátečníkovi, aby udělal v C#?
Co serial Mala hra o velkeho Bajta v teto sekci?
Prazaci jo ty se maj, az kdyz si me zavolaj..
Re: Co byste doporučili začátečníkovi, aby udělal v C#?
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
- Jednoduchá kalkulačka
- Hra NIM - Odebírání zápalek
- Gregoriánský kalendář
- Hra Logic/Master Mind - Hádání kombinace
- Vigenérova šifra
- Hra Hledání min
- Řazení čísel hozených kostkou
- Hra Conway's Game of Life (buněčný simulátor)
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
"Král Lávra má dlouhé oslí uši, král je ušatec!
(pravil K. H. Borovský o cenzuře internetu)
(pravil K. H. Borovský o cenzuře internetu)
- strangereu
- Level 4.5
- Příspěvky: 1719
- Registrován: září 11
- Bydliště: Vršovice
- Pohlaví:
- Stav:
Offline
- Kontakt:
Re: Co byste doporučili začátečníkovi, aby udělal v C#?
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
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();
}
http://screenshare.cz/
- satik
- Level 6
- Příspěvky: 3509
- Registrován: leden 15
- Bydliště: Krkonoše
- Pohlaví:
- Stav:
Offline
- Kontakt:
Re: Co byste doporučili začátečníkovi, aby udělal v C#?
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
PC: MSI RTX 4090 Suprim X, AMD Ryzen 9 7950x3D, ASUS Crosshair HERO X6670E, 64GB RAM@6000CL30, Fractal Define Torrent, Seasonic PRIME TX 1600W, SSD Seagate Firecuda 530 M2 2TB +
4TB + 4TB SATA Micron 5200 ECO
Periferie: Samsung Odyssey G9 Neo + 2x AOC AG271QG, Razer Deathadder, Ducky Shine7, Steelseries QcK+, Beyerdynamic MMX300, Valve Index
4TB + 4TB SATA Micron 5200 ECO
Periferie: Samsung Odyssey G9 Neo + 2x AOC AG271QG, Razer Deathadder, Ducky Shine7, Steelseries QcK+, Beyerdynamic MMX300, Valve Index
Re: Co byste doporučili začátečníkovi, aby udělal v C#?
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:
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.
-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.
- CZechBoY
- Master Level 9.5
- Příspěvky: 8813
- Registrován: srpen 08
- Bydliště: Brno
- Pohlaví:
- Stav:
Offline
- Kontakt:
Re: Co byste doporučili začátečníkovi, aby udělal v C#?
@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?
Nevim co znamená naklikat v IDE, ale já jsem nikdy nic (kromě GUI) v IDE neklikal?
PHP, Nette, MySQL, C#, TypeScript, Python
IntelliJ Idea, Docker, Opera browser, Linux Mint
iPhone XS
Raspberry PI 3 (KODI, Raspbian)
XBox One S, PS 4, nVidia GeForce NOW
IntelliJ Idea, Docker, Opera browser, Linux Mint
iPhone XS
Raspberry PI 3 (KODI, Raspbian)
XBox One S, PS 4, nVidia GeForce NOW
Re: Co byste doporučili začátečníkovi, aby udělal v C#?
@faraon
Plánuješ pokračování té programátorské soutěže?
Plánuješ pokračování té programátorské soutěže?
- satik
- Level 6
- Příspěvky: 3509
- Registrován: leden 15
- Bydliště: Krkonoše
- Pohlaví:
- Stav:
Offline
- Kontakt:
Re: Co byste doporučili začátečníkovi, aby udělal v C#?
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?
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.
PC: MSI RTX 4090 Suprim X, AMD Ryzen 9 7950x3D, ASUS Crosshair HERO X6670E, 64GB RAM@6000CL30, Fractal Define Torrent, Seasonic PRIME TX 1600W, SSD Seagate Firecuda 530 M2 2TB +
4TB + 4TB SATA Micron 5200 ECO
Periferie: Samsung Odyssey G9 Neo + 2x AOC AG271QG, Razer Deathadder, Ducky Shine7, Steelseries QcK+, Beyerdynamic MMX300, Valve Index
4TB + 4TB SATA Micron 5200 ECO
Periferie: Samsung Odyssey G9 Neo + 2x AOC AG271QG, Razer Deathadder, Ducky Shine7, Steelseries QcK+, Beyerdynamic MMX300, Valve Index
Re: Co byste doporučili začátečníkovi, aby udělal v C#?
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.
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ů.
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ů.
-
- nováček
- Příspěvky: 20
- Registrován: květen 17
- Pohlaví:
- Stav:
Offline
Re: Co byste doporučili začátečníkovi, aby udělal v C#?
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++:
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):
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!
Zpět na “Programování a tvorba webu”
Kdo je online
Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 3 hosti