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ž
Stav:
Offline

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 6
Level 6
Příspěvky: 3509
Registrován: leden 15
Bydliště: Krkonoše
Pohlaví: Muž
Stav:
Offline
Kontakt:

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

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

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 6
Level 6
Příspěvky: 3509
Registrován: leden 15
Bydliště: Krkonoše
Pohlaví: Muž
Stav:
Offline
Kontakt:

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

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

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 6
Level 6
Příspěvky: 3509
Registrován: leden 15
Bydliště: Krkonoše
Pohlaví: Muž
Stav:
Offline
Kontakt:

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

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

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.5
Master Level 8.5
Příspěvky: 7359
Registrován: prosinec 10
Pohlaví: Muž
Stav:
Offline

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?
"Král Lávra má dlouhé oslí uši, král je ušatec!

(pravil K. H. Borovský o cenzuře internetu)

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

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ů
Guru Level 13.5
Guru Level 13.5
Příspěvky: 23603
Registrován: březen 10
Pohlaví: Muž
Stav:
Offline

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 Vybíráme router

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

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 6
Level 6
Příspěvky: 3509
Registrován: leden 15
Bydliště: Krkonoše
Pohlaví: Muž
Stav:
Offline
Kontakt:

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


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 2 hosti