Diskuze: Pracovní pozice

C# .NET .NET (C# a Visual Basic) Pracovní pozice American English version English version

Aktivity (1)
Avatar
Tomáš Střecha:26.11.2016 18:52

Ahoj,
zajímalo by mne, jak by se jednoduše udělali v konzoli třeba pracovní pozice. Myslím tím jejich zaplněnost. Tedy například: 1/3 Vývojářů. Myslím si, že by to určitě šlo pomocí pole, ale nedokáži najít takovou metodu k poli.
Předem děkuji za odpověď a za rady! :)

 
Odpovědět 26.11.2016 18:52
Avatar
Jan Bezdíček
Redaktor
Avatar
Odpovídá na Tomáš Střecha
Jan Bezdíček:26.11.2016 19:04

Jsem jediny kdo absolutne nepochopil, co chce ? :D

 
Nahoru Odpovědět  +4 26.11.2016 19:04
Avatar
Odpovídá na Jan Bezdíček
Libor Šimo (libcosenior):26.11.2016 19:14

Sorry, uklikol som sa na tablete, malo to byt plus. 8-|

Nahoru Odpovědět 26.11.2016 19:14
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
Odpovídá na Jan Bezdíček
Michal Haňáček:26.11.2016 19:15

To rozhodně nejsi ...

Nahoru Odpovědět 26.11.2016 19:15
Každé rozhodnutí a každý krok v životě nás někam posune. Bohužel jen některé nás posouvají dopředu.
Avatar
Tomáš Střecha:26.11.2016 22:00

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. :)

 
Nahoru Odpovědět 26.11.2016 22:00
Avatar
HONZ4
Člen
Avatar
Odpovídá na Tomáš Střecha
HONZ4:26.11.2016 22:14

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++;
 
Nahoru Odpovědět 26.11.2016 22:14
Avatar
Marian Benčat
Redaktor
Avatar
Odpovídá na Tomáš Střecha
Marian Benčat:26.11.2016 22:22

pole.Count(prvek=> prvek.IsNullO­rEmpty());

Neomezujte se na imperativni paradigma.

Nahoru Odpovědět 26.11.2016 22:22
"C# 3.0 (2007) volal Java 8 (2014), že chce svoje featury zpět"
Avatar
HONZ4
Člen
Avatar
Odpovídá na Marian Benčat
HONZ4:26.11.2016 22:42

spíš:
pole.Count(prvek => string.IsNullO­rEmpty(prvek)

 
Nahoru Odpovědět 26.11.2016 22:42
Avatar
Jan Vargovský
Redaktor
Avatar
Odpovídá na HONZ4
Jan Vargovský:26.11.2016 22:46

Lidi si tyhle statické věci přepisují na extension metody, takže to klidně může být tak, jak to má Marian :)

 
Nahoru Odpovědět  +1 26.11.2016 22:46
Avatar
ostrozan
Redaktor
Avatar
Odpovídá na Tomáš Střecha
ostrozan:27.11.2016 10:16

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);
Editováno 27.11.2016 10:17
Akceptované řešení
+20 Zkušeností
+1 bodů
Řešení problému
 
Nahoru Odpovědět  +3 27.11.2016 10:16
Avatar
ostrozan
Redaktor
Avatar
Odpovídá na Marian Benčat
ostrozan:27.11.2016 14:15

Začátečníkovi co je ve fázi hraní si s polem na konzoli bych asi nemotal hlavu LINQem - aby se nevyděsil :-)

 
Nahoru Odpovědět 27.11.2016 14:15
Avatar
Marian Benčat
Redaktor
Avatar
Odpovídá na ostrozan
Marian Benčat:27.11.2016 16:24

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.

Nahoru Odpovědět  -1 27.11.2016 16:24
"C# 3.0 (2007) volal Java 8 (2014), že chce svoje featury zpět"
Avatar
Marian Benčat
Redaktor
Avatar
Odpovídá na ostrozan
Marian Benčat:27.11.2016 16:25

Naopak tvuj kod bych oznacil jako neco, co snad ani nikde nepis,.. vzdyt to ani fungovat nebude :-ú

Nahoru Odpovědět 27.11.2016 16:25
"C# 3.0 (2007) volal Java 8 (2014), že chce svoje featury zpět"
Avatar
ostrozan
Redaktor
Avatar
Odpovídá na Marian Benčat
ostrozan:27.11.2016 17:29

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.IsNullO­rEmpty());

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

 
Nahoru Odpovědět  +1 27.11.2016 17:29
Avatar
Marian Benčat
Redaktor
Avatar
Odpovídá na ostrozan
Marian Benčat:27.11.2016 19:35

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.

Nahoru Odpovědět 27.11.2016 19:35
"C# 3.0 (2007) volal Java 8 (2014), že chce svoje featury zpět"
Avatar
Marian Benčat
Redaktor
Avatar
Odpovídá na ostrozan
Marian Benčat:27.11.2016 19:38

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.

Nahoru Odpovědět  +1 27.11.2016 19:38
"C# 3.0 (2007) volal Java 8 (2014), že chce svoje featury zpět"
Avatar
ostrozan
Redaktor
Avatar
Odpovídá na Marian Benčat
ostrozan:27.11.2016 22:08

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í.

 
Nahoru Odpovědět  +2 27.11.2016 22:08
Avatar
Odpovídá na Marian Benčat
Petr Čech (czubehead):27.11.2016 22:25

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í.

Nahoru Odpovědět  +2 27.11.2016 22:25
Why so serious? -Joker
Avatar
Marian Benčat
Redaktor
Avatar
Marian Benčat:27.11.2016 22:50

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#.

Nahoru Odpovědět 27.11.2016 22:50
"C# 3.0 (2007) volal Java 8 (2014), že chce svoje featury zpět"
Avatar
Marian Benčat
Redaktor
Avatar
Odpovídá na ostrozan
Marian Benčat:27.11.2016 22:52

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í.

Nahoru Odpovědět  +2 27.11.2016 22:52
"C# 3.0 (2007) volal Java 8 (2014), že chce svoje featury zpět"
Avatar
ostrozan
Redaktor
Avatar
Odpovídá na Marian Benčat
ostrozan:28.11.2016 5:22

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á :-)

 
Nahoru Odpovědět 28.11.2016 5:22
Avatar
Marian Benčat
Redaktor
Avatar
Odpovídá na ostrozan
Marian Benčat:28.11.2016 8:51

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. :D

Editováno 28.11.2016 8:54
Nahoru Odpovědět 28.11.2016 8:51
"C# 3.0 (2007) volal Java 8 (2014), že chce svoje featury zpět"
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 22 zpráv z 22.