Programátorský víceboj 0. díl - Šifrujeme

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

cpp
nováček
Příspěvky: 41
Registrován: červen 17
Pohlaví: Muž

Re: Programátorský víceboj 0. díl - Šifrujeme

Příspěvekod cpp » 08 čer 2017 15:26

satik píše:Kdyz mas pravidlo o priorite, ze provadis vypocet zleva doprava, tak komutovat tam prvky musis stejne opatrne, jako bys tam mel tu prioritu urcenou zavorkama.


Komutativní zákon nic takového neříká! Celé jeho sdělení je, že u výrazu x*y můžeš zcela beztrestně prohodit operandy na y*x.

satik píše:Tudiz pro ty komutace je to jako bys misto 10 : 5 * 2 mel zapsano (10 : 5) * 2 - komutovat muzes leda celou tu zavorku, ne jen jeji cast.


Jenomže tam není žádná závorka, to tam doplňuješ ty sám podle pofidérního pravidla o počítání zleva. Závorky nemůžeš přidávat do výrazu zcela libovolně.

satik píše:Pomerne rozsirene v tomhle pripade znamena, ze temer kazdy system ho pouziva, od programovacich jazyku po treba Wolfram, Mathematicu, Google, MS/Open Office ...


Že je něco rozšířené ještě neznamená, že je to správné.

Je nesmysl se hádat o správném řešení chybně zadaného výrazu. To je jako bychom se hádali, jestli je správná odpověď jakou barvu má pondělí, žlutá nebo zelená.

Mám pocit, že trochu utíkáme od tématu, kterým je naprogramování šifrovací a dešifrovací aplikace.
Naposledy upravil(a) cpp dne 08 čer 2017 15:34, celkem upraveno 1 x.



Reklama
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: Programátorský víceboj 0. díl - Šifrujeme

Příspěvekod satik » 08 čer 2017 15:33

cpp píše:
satik píše:Kdyz mas pravidlo o priorite, ze provadis vypocet zleva doprava, tak komutovat tam prvky musis stejne opatrne, jako bys tam mel tu prioritu urcenou zavorkama.


Komutativní zákon nic takového neříká! Celé jeho sdělení je, že u výrazu x*y můžeš zcela beztrestně prohodit operandy na y*x.

Takze podle tebe muzu pouzit komutativitu na scitani u vyrazu 1+4*5 a muzu to prepsat na 4+1*5 ? To asi ne...
I komutativita ma svoje pravidla a podrizuje se priorite operaci.

cpp píše:
satik píše:Tudiz pro ty komutace je to jako bys misto 10 : 5 * 2 mel zapsano (10 : 5) * 2 - komutovat muzes leda celou tu zavorku, ne jen jeji cast.


Jenomže tam není žádná závorka, to tam doplňuješ ty sám podle pofidérního pravidla o počítání zleva. Závorky nemůžeš přidávat do výrazu zcela libovolně.

Ne, ale zavorka, stejne jako to pravidlo o pocitani zleva, ti urcuji ty priority operandu.
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

cpp
nováček
Příspěvky: 41
Registrován: červen 17
Pohlaví: Muž

Re: Programátorský víceboj 0. díl - Šifrujeme

Příspěvekod cpp » 08 čer 2017 15:41

Místo 4+1*3 jsi asi chtěl napsat 4+1*5.

A nemůžeš to udělat, protože součin má prioritu před součtem a proto tam ty závorky můžeš uvést bez změny významu.

Ovšem podíl a součin jsou z hlediska priorit rovnocenné, proto žádnou závorku doplnit nemůžeš. A jelikož nemůžeš doplnit závorku, nic nebrání aplikování komutativního zákona. Jenomže ouha, nefunguje to...

Pravidlo o počítání zleva je pofidérní. Není obecně přijímané! Jakou má toto pravidlo matematickou oporu?

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: Programátorský víceboj 0. díl - Šifrujeme

Příspěvekod satik » 08 čer 2017 15:53

cpp píše:Místo 4+1*3 jsi asi chtěl napsat 4+1*5.

j, preklep, opraveno

cpp píše:A nemůžeš to udělat, protože součin má prioritu před součtem a proto tam ty závorky můžeš uvést bez změny významu.

Stejne tak, pokud uvazujes to pravidlo, ze pri stejny priorite operatoru pocitas zleva, pak tam ty zavorky muzes pouzit bez zmeny vyznamu. Co je na tom porad nejsanyho? :)

cpp píše:Ovšem podíl a součin jsou z hlediska priorit rovnocenné, proto žádnou závorku doplnit nemůžeš. A jelikož nemůžeš doplnit závorku, nic nebrání aplikování komutativního zákona. Jenomže ouha, nefunguje to...

Jsou rovnocenne jen dokud neaplikujes to pravidlo pocitani zleva.

cpp píše:Pravidlo o počítání zleva je pofidérní. Není obecně přijímané! Jakou má toto pravidlo matematickou oporu?

Neni obecne prijimane, ale je natolik rozsirene, ze ho kazdy ho pouziva a principielne na nem neni nic spatne. Slovickarit s tim muzes jak chces, vysledek je stejny - kazdej aspon trochu znalej matematiky (= ti, co aspon tusim, jake jsou priority operatoru) ti da stejnej vysledek.
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

cpp
nováček
Příspěvky: 41
Registrován: červen 17
Pohlaví: Muž

Re: Programátorský víceboj 0. díl - Šifrujeme

Příspěvekod cpp » 08 čer 2017 16:15

Už jsem pochopil, jak jsi to myslel, že počítání zleva není pravidlo ve smyslu pravidla s nějakou matematickou oporou, ale je to zvyklost pro toho, co zapisuje a toho, co čte.
No i tak máš jeden problém. Zatímco kolem závorkování nejsou spory, počítání zleva není všemi podporováno. Tudíž zadání JE nejednoznačné a nemá cenu se s ním zabývat.

ze ho kazdy ho pouziva a principielne na nem neni nic spatne.


Každý ho nepoužívá a evidentně je špatné je, když se musíme dohadovat. Kdyby byly ve výrazu závorky, nikdo by nepochyboval.

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: Programátorský víceboj 0. díl - Šifrujeme

Příspěvekod satik » 08 čer 2017 16:27

Zavorky jsou samozrejme jistota, ale zatim jsi prvni clovek, o kterem vim, ze s tim pravidlem pocitani zleva mel nejaky problem, obzvlast treba u programatoru je to celkem samozrejmost, protoze takhle funguji vsechny programovaci jazyky a i pritelkyne, co pracuje v socialnim oboru a pocitace+matematika jsou spis jeji nepratele, tohle pravidlo zna a pouziva.

Sice to pravidlo asi neni matematiky oficialne uznavane, ale nemyslim, ze by s nim i treba matematici meli nejaky problem a spousta z nich ho pouziva pro zjednoduseni zapisu.
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

cpp
nováček
Příspěvky: 41
Registrován: červen 17
Pohlaví: Muž

Re: Programátorský víceboj 0. díl - Šifrujeme

Příspěvekod cpp » 08 čer 2017 16:47

A já zase znám spoustu lidí, kteří kvůli přehlednosti závorkují vše, i když to není potřeba :-D

Konečně se můžeme vrátit k původnímu tématu. Snad už brzy začnou chodit zdrojáky.

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

Re: Programátorský víceboj 0. díl - Šifrujeme

Příspěvekod faraon » 08 čer 2017 16:48

Ne že bych měl původně v plánu rozpoutat takový krásný flame, v tomhle topicu už několikátý, ale podotýkám že i vysokoškolsky vzdělaný matematik může být vedle jak ta borovice. Což je ještě o kus dál než jedle.

Poznámka že násobení má přednost je také zcela nemístná, z několika důvodů:
  1. Násobení a dělení má přednost před sčítáním a odečítáním.
  2. V příkladu žádné násobení není.
  3. Závorky mají přednost úplně před vším.

Takže abysme si to projeli, než se začnu věnovat tomu šifrovacímu programu:

1 = 1

Proti tomu asi jen těžko může někdo něco namítat.

1 : 1 = 1

To je také jasné, žejo.

10 : 10 = 1

Tohle už je trochu složitější, ale pořád ještě to jde.

10 : (5 + 5) = 1

Tady začíná houstnout atmosféra, už je potřeba zapojit víc než čtyři buňky šedé kůry mozkové.

10 : 5 (1 + 1) = 1

Upřímně přiznám, že s vytýkáním před závorku jsem zpočátku nebyl moc kamarád, dokud jsem nezjistil jaká je to super věc a moc užitečná.

2 * (1 + 1) = 1

Teď by měl pan matematik z toho článku radost, jak to správně počítáme zleva doprava.

2 * 2 = 1

Ta závorka už je na nic, tak se jí konečně zbavíme.

4 = 1

A došli jsme k naprosto správnému výsledku, načež Vesmír explodoval a smrštil se do dvou rozměrů :clap:

Takže si vezměte svoje vědecké kalkulačky, pokud možno trochu schopnější, a zkuste je nechat ten příklad vypočítat. Já jich tu mám několik, a ty co to dovedou počítají takhle (včetně jedné kterou jsem koupil za 49 kaček u rákosníků):

10 : 5 * ( 1 + 1 ) = 4

10 : 5 ( 1 + 1 ) = 1

Už víte kde je zakopaný canis lupus familiaris?
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č.

cpp
nováček
Příspěvky: 41
Registrován: červen 17
Pohlaví: Muž

Re: Programátorský víceboj 0. díl - Šifrujeme

Příspěvekod cpp » 08 čer 2017 16:54

"V příkladu žádné násobení není."

Vážně? Já tam násobení vidím. Při troše představivosti hned dvakrát (ale to je irelevantní).

"Už víte kde je zakopaný canis lupus familiaris?"

10 : (5 + 5) = 1
10 : 5 (1 + 1) = 1

Vytknutím 5 před závorku jsi porušil jednoznačnost zápisu.

Správně by mělo být:

10 : (5 (1 + 1)) = 1

Je to stejné, jako bych napsal:
)2+2(
Výraz sice půjde nějak vypočítat, ale není zapsán zprávně.

---
V čem je pan matematik vedle jak ta borovice?

Uživatelský avatar
ITCrowd
Tvůrce článků
Elite Level 11
Elite Level 11
Příspěvky: 13250
Registrován: březen 10
Pohlaví: Muž

Re: Programátorský víceboj 0. díl - Šifrujeme

Příspěvekod ITCrowd » 09 čer 2017 12:59

Pan matematik udělal chybu v přepisu výrazu. Vše je jasné, pokud ono dělení nahradíme zlomkem a zobecníme (lomítko je zlomek) a výraz upravujeme obecně. Pro výše uvedený případ platí a=5 (nehraje to roli, jak uvidíte).
Tedy:
2a/(a+a) = 2a/2a = 1
Platný přepis:
2a/a(1+1) = 2a/2a = 1
Neplatný přepis:
2a:ax(1+1) = 2x2 = 4
Čtení zleva doprava je nepsané pravidlo, které se dodržuje. Stejne tak, jako např. odsazení v kódu If Then:

Kód: Vybrat vše

If (podmínka) Then
    příkaz1
    příkaz2
Else
    Příkaz3
End If
Toto odsazení není nutné, ale všeobecně je dodržováno (nepsané pravidlo). Mimochodem v dávných dobách Fortranu tohle pravidlo nebylo :-)
Zkusili jste to vypnout a zapnout? Problémy řeším pouze v tématech. Do SZ mi proto píšete zbytečně.
Základní diagnostika WiFi Jak na diagnostiku sítě Router jako switch Proč je nesmysl chtít router s velkým dosahem

cpp
nováček
Příspěvky: 41
Registrován: červen 17
Pohlaví: Muž

Re: Programátorský víceboj 0. díl - Šifrujeme

Příspěvekod cpp » 09 čer 2017 14:25

Pan matematik žádnou chybu neudělal.

Čtení zprava doleva je možná rozšířené pravidlo, ale není všeobecně uznávané. To znamená, že by ses měl takovému zápisu vyhnout.
A tímto bych rád ukončil tuto off-topic debatu.

Otázka do pléna, mám zveřejnit svoje řešení nebo mám ještě počkat?

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: Programátorský víceboj 0. díl - Šifrujeme

Příspěvekod satik » 09 čer 2017 15:30

cpp píše:Čtení zprava doleva je možná rozšířené pravidlo, ale není všeobecně uznávané. To znamená, že by ses měl takovému zápisu vyhnout.

Jelikož se všude používá a zjednodušuje zápis, tak minimálně já ho budu používat všude dál, ale díky za doporučení :)
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


  • Mohlo by vás zajímat
    Odpovědi
    Zobrazení
    Poslední příspěvek
  • Programátorský víceboj 2. díl - Morseovka
    od cpp » 07 črc 2017 09:03 » v Programování a tvorba webu
    3
    307
    od ITCrowd
    07 črc 2017 20:13
  • Programátorský víceboj 1. díl - Máme rádi matematiku
    od cpp » 20 čer 2017 11:22 » v Programování a tvorba webu
    27
    972
    od faraon
    07 črc 2017 17:21
  • Reklamace a použitý díl
    od rychtara » 16 lis 2016 09:41 » v Reklamace a zákony
    2
    383
    od petr22
    16 lis 2016 09:48
  • Tydenní herní novinky - 22. díl
    od beather » 13 srp 2017 08:21 » v Hry
    1
    365
    od Ltb
    14 srp 2017 13:52

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