Diskuze: Pracovní pozice
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
Tvůrce
Zobrazeno 22 zpráv z 22.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
Jsem jediny kdo absolutne nepochopil, co chce ?
Sorry, uklikol som sa na tablete, malo to byt plus.
Omlouvám se, tento článek jsem psal ve spěchu. Myslel jsem tím o, zda je
nějak zjistit jestli je pole plně zaplněné. Nevím jak přesně to mám
popsat.
Představte si pole stringů o velikosti 3. Což by například měli být ty
pracovní pozice. Ale pouze 2 z těch 3 by byly vloženy do pole. Existuje tedy
metoda na vypsání kolik "částí" pole je "zaplněno"?
Ještě jednou se omlouvám, neumím moc vysvětlovat.
chtělo by to trochu studia práce s poli
string[] pole = new string[3];
pole[1] = "zaplněné";
int zaplneno = 0;
foreach (string s in pole) if (s?.Length > 0) zaplneno++;
pole.Count(prvek=> prvek.IsNullOrEmpty());
Neomezujte se na imperativni paradigma.
spíš:
pole.Count(prvek => string.IsNullOrEmpty(prvek)
Lidi si tyhle statické věci přepisují na extension metody, takže to klidně může být tak, jak to má Marian
Možností je samozřejmě víc - třeba nepoužívat pole ale List + proměnnou s počtem zaměstnanců, kterou může nějaký admin v případě potřeby z měnit - velikost pole je jednou daná .
int max_pocet_programatoru=5;
List<string> programatori = new List<string>();
//pro zacatek prijmeme tri lidi
programatori.Add("Pepa");
programatori.Add("Joe");
programatori.Add("Jose");
Console.WriteLine("Obsazenost programatoru je " + programatori.Count + " z " + max_pocet_programatoru);
//Pepa dostane padaka
programatori.RemoveAt(programatori.IndexOf("Pepa"));
Console.WriteLine("Po vyhozeni Pepy je obsazenost programatoru " + programatori.Count + " z " + max_pocet_programatoru);
//potrebujeme vic programatoru
max_pocet_programatoru = 8;
Console.WriteLine("Obsazenost programatoru je " + programatori.Count + " z " + max_pocet_programatoru);
Začátečníkovi co je ve fázi hraní si s polem na konzoli bych asi nemotal hlavu LINQem - aby se nevyděsil
ja mam tedy opacny nazor.
mne tedy .Count() , coz je jasne "pocet" a uvnitr ma proste tupou podminku prijde pro zacatecnika mnohem pochopitelnejsi nez ho hazet do OOP, metod, foreache a dalsich. Ale je to zrejme vec nazoru.
Naopak tvuj kod bych oznacil jako neco, co snad ani nikde nepis,.. vzdyt to ani fungovat nebude :-ú
No já to nikde psát nebudu , to se fakt neboj .
Má to sloužit jako názorný příklad toho, jaké výhody
mají kolekce proti polím - a myslím že dost polopatitistický a i když tomu
nevěříš tak funkční - zkus si to
A evidentně z toho mojeho pochopil víc než z tvého
pole.Count(prvek=> prvek.IsNullOrEmpty());
bez ukázky jak to vůbec použít
Mám z tebe trochu pocit, že bys nejradši v první třídě zavedl místo abecedy těsnopis - vždyť je tak úžasně rychlý a efektivní proti konvenčnímu psaní
A ještě nerozumím jedné věci:
nez ho hazet do OOP, metod, foreache a dalsich
i v tvém výrazu je metoda Count() objektu pole
Osobne si myslim, ze to pochopil od tebe protoze jsi mu tam napsal 2x vice komentaru, nez-li kodu.
Ne - ja bych nezavedl tesnopis, presto ze ho od mámy pár let umím, navíc jsem disgrafik, takze pravdepodobne bych napsal uplne neco jineho :'
.Count("selector") není objektový přístup. Dám ti jednoduchý příklad na kterém to pochopíš a který ti snad ukáže výhodu tohoto přístupu.
// Funkcionalni pristup -- vhodnejsi pro praci s daty, kazdy vi behem 5ti sec, co presne dela.
var poleAdres =
poleOsob
.Where(a=> a.Vek > 10)
.OrderBy(a=> a.Vek)
.Select(a => new Adresa(a))
.Skip(skipCount)
.Take(takeCount)
.ToList();
// Imperativni - neprehledny, stopni si za jak dlouho najdes bug? nikdo nevi prvnich X minut, co vlastne dela.
int count = 0;
int skipped = 0;
var poleAdres = new List<Adresa>();
póleAdres.Sort(a=>a.Vek);
for(var osoba in poleOsob) {
if (count>takeCount) break;
if (osoba.Vek > 10) {
if (skipped<skipCount) continue;
poleAdres.Add(new Adresa(a));
count++;
}
A je tu jeste jedna vec.. zatimco funkcionalne napsany kod je pro optimalizace pomerne jasny "co vlastne chces" tak z toho imperativniho, se cast systemu, ktera ma na starost optimalizace vystreli mozek z hlavy. Nevi co chces delat, chybi mu semantika.
Jinak napsal bych ti jak vypada objektivni verze teto funkcionality, ale myslim, ze si to pochpil, proč nelze říci, že Count() je objektový přístup.. Je to Metoda, to jiste ano. ale není žádný problém udělat to pomoci cehokoliv jiného. Ostatně.
Pokdu si pracoval s nejakym funkcionalnimi jazykem, je ti jasne, ze LINQ je prave jedna ze 3 hlavnich prezentaci funkcionalniho paradigmatu, jelikoz jinde mas .sum() (count)¨, map() (SELECT), filter() (where), order() atd.
Ale jo já tomu rozumím - tady jde ale o něco jiného - ty na začátečníka, který začal možná před týdnem, možná včera vybalíš lambdu - což je pro tebe (cituju) " proste tupa podminka" , ale on nejspíš jen nevěřícně zírá - co je sakra to => to jsem ještě neviděl.
Mysli nato až budeš psát ty články, že je nebudou číst jen tobě rovní - a těch tu troufám si říct zas tak moc není.
My všichni víme, že LINQ je mnohem pohodlnější ohledně zápisu, ale tady o to ani tak nejde. Jde o to, jak dát začátečníkovi nástroj k počítání prvků v kolekci. A LINQ zcela určitě není pro začátečníky vhodná, pomineme-li fakt, že to není podmínka ani omylem- tedy někde hluboko uvnitř .NET to pravděpodobně funguje jako podmínka, ale jako lambda výraz to podmínka není. Je to zkrácený zápis pro delegát, co má návratový typ bool, abychom byli přesní.
Já vám ani nechci odporovat, vy máte pravdu, že chápat co je lambda a jak funguje je pro začátečníka nereálné.
Ale HLL jazyky jsou i k tomu, že "programátor" (věřte mi že v této souvislosti a větě mi to jde přes jazyk velmi těžko), nemusí vědět jak to funguje.
Vidí prostě Count a uvnitř "podmínku". Vidí Where a uvnitř podmínku, relativně jednoduché.. Nemusí znát jak seřadit věci, nemusí znát jak to funguje.
Ostatně proto se bohužel na středních školách šahá po HLL a je jedno, jestli je to Java, nebo PHP. Odstíní ho od toho jak ty věci fungují, nemusí řešit dynamickou alokaci paměti a další.
Já tu vnímám dva pohledy na věc:
Buďto se ho snažím odstínit od programování a algoritmizaci, k čemuž jsou HLL, knihovny, LINQ a další.. obzvláště pokud mám tušení, že ten daný člověk neumí programovat (kulantně řečeno, nemá zkušenosti s programováním). Což u Tomáše takto já osobně vnímám...
Tomáš prostě zřejmě začíná programovat, protože kdyby programoval, tak se nezeptá na takovouto věc. Tudíž já osobně se ho snažím odstínit od programování a algoritmizace.
Druhý a opačný příklad je, pokud někdo přijde a zeptá se: "hele jak v tomdle jayzce napíšu desktopovou aplikaci".
Snažte se také vy pochopit můj pohled na věc a sice rozdíl mezi:
"Jak mám uložit data a zjistit jejich počet" a "Jak se používá pole v C# a mají nějakou metodu na zjištění počtu"?
pokud chci pomoci s prvním případem, snažím se zjednodušit část algoritmizace a poskytnout řešení "magické" kde se využívá daná síla jazyka a odstíní vývojáře od používání buněk.
Kdežto u toho druhého vím, že ví jak se pracuje s daty, jak spočítat něco v jazyku počítače a jen nezná C#.
Ostrozane, až budu psát články (jestli se nademnou někdo smiluje), tak pujde u většině případů o články (možná bohužel?) pro zkušenější vývojáře, kde budu předpokládat vždy určitou znalost a také článek bude začínat:
"pro koho je to určeno".
A nemyslím teď opravdu nějakou Advanced znalost jazyka, ale aby v něm už měl něco napsáno a znal jeho konstrukce.
Kromě toho chystám hodně technologicky agnostických věcí, které se týkají architektury a myšlenkových pochodů při programování.
Ale mně je jasné, o čem a pro koho budou tvé články, jen aby byly
aspoň psané tak jak v tomto vlákně komunikuješ se mnou, ne tak (stroze) jak
jsi odpověděl zakladateli vlákna.
Jinak pokud jsi ve fázi, že sis požádal o redaktora a už jsi jim poslal
svou práci k posouzení - tak neboj, oni se jistě "smilují" - jen jim to
trochu trvá
poslal jsem clanky na dotnetportale co jsem napsal, linkedin profil a CV. Kdyz bude zapotrebi nejdrive poslat clanek, tak holt nejdrive napisu clanek a poslu znovu.
Zobrazeno 22 zpráv z 22.