NOVINKA - Online rekvalifikační kurz Java programátor. Oblíbená a studenty ověřená rekvalifikace - nyní i online.
NOVINKA – Víkendový online kurz Software tester, který tě posune dál. Zjisti, jak na to!

Diskuze – Lekce 1 - Úvod do teorie algoritmů

Zpět

Upozorňujeme, že diskuze pod našimi online kurzy jsou nemoderované a primárně slouží k získávání zpětné vazby pro budoucí vylepšení kurzů. Pro studenty našich rekvalifikačních kurzů nabízíme možnost přímého kontaktu s lektory a studijním referentem pro osobní konzultace a podporu v rámci jejich studia. Toto je exkluzivní služba, která zajišťuje kvalitní a cílenou pomoc v případě jakýchkoli dotazů nebo projektů.

Komentáře
Avatar
Jaroslav Polívka:6.3.2016 20:15

Dovedli byste nastínit nebo odkázat na algoritmus? Jak byste řešili? Máme kartézskou soustavu souřadnic, a v něm jeden obdélník, úkolem je vylosovat randomem souřadnice pro nový obdélník, avšak nesmí se vylosovat souřadnice toho obdélníka, který už tam je, ani souřadnice, které by do tohoto obdélníka zasahovali. Random se smí zavolat pouze 1x.

Odpovědět
6.3.2016 20:15
Velice často si věci žijí svým životem
Avatar
Odpovídá na Jaroslav Polívka
Neaktivní uživatel:6.3.2016 20:47

Co bere ta funkce Random za parametry?

Odpovědět
6.3.2016 20:47
Neaktivní uživatelský účet
Avatar
Odpovídá na Neaktivní uživatel
Jaroslav Polívka:6.3.2016 21:02

Napsal sem trochu nepřesně, bude se volat samozřejmě dvakrát, protože jednou vezme jako parametr celé číslo souřadnice x a podruhé jako souřadnici y. Nesmí se ale stát, že se vylosuje pozice toho obdélníku, který už tam je, nebo pozice, která by do tohoto obdélníku zasahovala. Oba obdélníky mají konstantní velikost.

Odpovědět
6.3.2016 21:02
Velice často si věci žijí svým životem
Avatar
Jan Bajer
Člen
Avatar
Jan Bajer:9.6.2016 13:06

Dejme tomu, že třídíme 15 prvků (tedy podle předchozí tabulky třídíme 0,15 sekundy).

Nemělo by tam být 0,015 sekundy? :)

Odpovědět
9.6.2016 13:06
Svět není takový, jak ho vnímáme, ale jak ho tvoříme.
Avatar
krepsy3
Tvůrce
Avatar
Odpovídá na Luboš Běhounek Satik
krepsy3:6.8.2016 9:30

Já myslel, že když se napíše pouze "log", je považováno za základ e = 2,727272...
Tedy "přirozený logaritmus".

Odpovědět
6.8.2016 9:30
Programátor je stroj k převodu kávy na kód.
Avatar
Odpovídá na krepsy3
Neaktivní uživatel:6.8.2016 10:25

To by bylo "ln". V případě "log" je základ 10.

Odpovědět
6.8.2016 10:25
Neaktivní uživatelský účet
Avatar
coells
Tvůrce
Avatar
Odpovídá na krepsy3
coells:6.8.2016 11:07

To záleží na kontextu a oblasti.

V matematické analýze se log obvykle uvažuje o základu 10.
V analýze algoritmů se log obvykle uvažuje o základu 2.
A obecně se log pro změnu uvažuje o základu e, pokud v kontextu můžeme zanedbávat konstanty.

 
Odpovědět
6.8.2016 11:07
Avatar
krepsy3
Tvůrce
Avatar
Odpovědět
6.8.2016 11:37
Programátor je stroj k převodu kávy na kód.
Avatar
Odpovídá na relycanx
Pavel Jelínek:29.1.2017 14:46

Ahoj, 10.10.2014 zde byl vznesen dotaz, kde začít při luštění například takovéhoto programu:

začátek
   čti(p);
   i:=3;
   počet := 1;
   součin := 1;
   dokud počet <= p opakuj
           začátek
                součin := součin * i;
                počet := počet + 1;
                i:=i+3;
   konec;
konec.

Na to mám dvě možné odpovědi:

První možnost: Odkrokuj si v hlavě ten program pro p=0, pak p=1, p=2 atd. Lze to dělat i v excelu, kde bude sloupec pro každou proměnnou a také sloupec "číslo řádky kódu" (kde se zrovna program nachází). Ten vyplníš buď po každém příkazu, anebo jednou za několik příkazů (kolik udržíš v hlavě).

Jsem přesvědčen, že programátor by měl umět z hlavy odkrokovat jednoduchý kód (pro známé hodnoty proměnných) a pak v tom růst, aby zvládl i složitější. Jen tak dokáže psát spolehlivé programy, které správně reagují na každou možnou kombinaci stavů.

Odkrokovat kód pro konkrétní hodnoty je snazší, než se podívat na program a formulovat, co dělá pro jakýkoli vstup. Ovšem když si jej odkrokuješ pro několik vstupů, zřejmě přijdeš i na to druhé.

- - - -

Druhá možnost: Všimnu si, že je zde jeden cyklus a jeho ukončením závisí na proměnných p a počet. Přečtu si tedy jen řádky programu, které pracují s těmito dvěma proměnnými. Mám štěstí, není tu žádný příkaz typu např. "počet = i/10" (k jehož porozumění bych musel vědět, co se děje s proměnnou i, tj. analyzovat i jiné řádky programu).

Z toho je již snadné vydedukovat, že proměnné p a počet slouží jen k tomu, aby se cyklus provedl přesně p-krát.

Dále vidím, že obsah proměnné "součin" závisí na "i", ale ne obráceně. Takže si "součin" nechám na konec.

Vidím, že proměnná "i" je nejdřív rovna třem a v každém průchodu cyklem se o tři zvýší. A před každým zvýšení se touto hodnotou násobí "součin".

V tuto chvíli je již zřejmé, že program do proměnné "součin" spočítá součin prvních p násobků čísla 3.

Pokud bys to potřeboval, rád s Tebou rozeberu i jiný cvičný algoritmus.
Pavel

 
Odpovědět
29.1.2017 14:46
Avatar
Neaktivní uživatel:22.5.2018 17:36

Myslím, že "sundej peřinu, posaŇ se, dej nohy na zem" by se dalo ještě rozepsat.

  • if (přikrytý) {
    • skrč ruce;
    • zmáčni pěsti;
    • if (left.emptyPlace) narovnej pravou ruku;
    • else narovnej levou ruku; }

to by se ještě dalo hodit do cyklu apod.

  • skrč ruce;
  • dávej ruce dozadu pomocí ramen & pokrčuj se v pase;
  • if (left.emptyPlace) otoč se o -90°;
  • else if (right.emptyPlace) otoč se o 90°;
  • else {
    • křič "Pomoc!";
    • return;}
  • pokrč nohy v kolenou;

Psal jsi přece, že to má být elementární. Ale dejme tomu, že je to kus jazyka. Neber to jako kritiku, prostě jsem na to zjednodušení "potřeboval" upozornit. Nebo aspoň na to ň. :-)

Odpovědět
22.5.2018 17:36
Neaktivní uživatelský účet
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 10 zpráv z 34.