Malá hra o Velkého Bajta (0) - Jednoduchá kalkulačka

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

Uživatelský avatar
faraon
Master Level 8.5
Master Level 8.5
Příspěvky: 7359
Registrován: prosinec 10
Pohlaví: Muž
Stav:
Offline

Malá hra o Velkého Bajta (0) - Jednoduchá kalkulačka

Příspěvekod faraon » 06 zář 2015 21:53

Všechny bity hry:

00000001 - Jednoduchá kalkulačka
00000010 - Odebírání zápalek
00000100 - Gregoriánský kalendář
00001000 - Hádání kombinace
00010000 - Vigenérova šifra
00100000 - Hledání min
01000000 - Házení kostkou
10000000 - Conway's Game of Life




Výzva všem místním programátorům a programátorkám!

Letos v prosinci oslavíme 200. výročí narození první počítačové programátorky Ady Lovelace, dlouholeté spolupracovnice anglického filozofa a matematika Charlese Babbage, tvůrce prvního programovatelného číslicového počítače.

ada.gif


Ada byla sice dcera básníka, ale místo říkanek a vyšívání, běžných kratochvílí mladých dam té doby, jí zajímala spíš matematika a přírodní vědy, díky čemuž později pochopila Babbageovu práci mnohem lépe než spousta soudobých vzdělanců. Dokonce se jí připisuje nejdůležitější objev, skok podmíněný výsledkem předchozí operace, což umožňuje v programu vytvářet větvení a cykly. Teprve tím vzniklo skutečné programování a skutečné programy, ne jenom vyměnitelný dírkovaný kotouč do hrací skříně.

Do dnešních dnů se dochoval první počítačový program, počítající Bernoulliho čísla, a sotva si někdo dokáže představit jak těžké bylo vymyslet a zakódovat algoritmus, ovládající přímo páky, spojky, táhla a ozubená kola mechanického počítacího stroje, navíc bez možnosti vyzkoušet ho na skutečném hardwaru. Analytical Engine, jak se onen počítač nazýval, byl totiž tak složitý, že dodnes nebyl postaven, vznikly jenom jeho malé části pro ověření funkce. V konečném výsledku měl mít přibližně velikost fotbalového hřiště a jako pohon parní stroj. Byl to skutečně těžký hardware, a stejně těžká byla i práce s ním, obzvlášť pro křehkou ženu v první polovině devatenáctého století.

Dodnes je programování tvrdá práce, ale i umění, a také hra. Pojďme si tedy hrát! Právě teď začíná

MALÁ HRA O VELKÉHO BAJTA

Hrát může úplně každý kdo má chuť, od čerstvě vylíhnutých jednobitových pulců, kteří se chtějí pochlubit tím co se zrovna naučili, až po děrnou páskou zabandážované digitální mumie, ukazující že ještě všechno nezapomněly. Pravidla jsou jednoduchá:
  1. Každý hráč (nebo tým) musí přinést vlastní výtvor, program který vymyslel a sepsal sám, bez cizí pomoci. Plagiátorům a podvodníkům bude smazán harddisk a sežere je růžový dinosaurus.
  2. Je třeba ukázat zdrojový kód v jakémkoliv programovacím jazyce pro jakoukoliv platformu, nikoliv hotový zkompilovaný program, v případě nutnosti dodat i návod na zprovoznění a získání všeho potřebného, třeba použitých knihoven.
  3. Aspoň jeden další účastník hry musí program úspěšně rozběhat a vyzkoušet, a sdělit nám svůj názor na něj, hodnocení, připomínky, kritiku... A hlavně zjistit jestli funguje.
Tak to by asi mělo stačit, můžeme jít na to.

Každý výpočet musí začít od nejnižšího místa bajtu, a stejně začne naše hra, od nultého bitu úplně vpravo: 00000001

Nejdřív malý náhled do historie. Slovo computer je mnohem starší než ty kouzelné krabičky které se jím nazývají dnes. Původně znamenalo název povolání, označovalo člověka provádějícího výpočty. Anglicky computer, francouzsky ordinateur, německy rechner, česky počtář. Byla to těžká řehole, podobně jako opisování knih před vynálezem knihtisku, a vznikalo přitom mnoho chyb, někdy i s fatálními důsledky. Například špatné údaje v navigačních tabulkách měly na svědomí řadu potopených nebo ztracených lodí.

multijadro.jpg


Proto byla snaha jejich práci zmechanizovat, zjednodušit, a zamezit tak vzniku chyb způsobeným lidským faktorem, to byl i důvod pro který Charles Babbage začal konstruovat automatické počítací stroje. Zpočátku měli počtáři a počtářky jenom jednoduché pomůcky, různá počítadla jako je abakus nebo sčot, časem k nim přibyly kalkulátory, což byly nejdřív knihy předpočítaných tabulek nejčastěji používaných operací, později mechanické počítačky, které se časem vyvinuly do elektromechanických a ještě později elektronických přístrojů.

Úkol pro tento měsíc je naprogramovat právě takový kalkulátor, zvládající čtyři základní aritmetické operace: sčítání, odčítání, násobení, dělení, a to co možná nejjednodušším způsobem. Fantazii se meze nekladou, jestli se někdo bude chtít pochlubit vlastním interpretem BASICu, FORTHu, LISPu, nebo něčím podobným, má samozřejmě také možnost. Ale jednoduchá kalkulačka úplně postačí, program vyhoví zadání když zvládne vypočítat takovéhle a podobné příklady:

Kód: Vybrat vše

3 + 18
3 - 18
4 * 9
56 / 7


Tady je ukázkové řešení pro inspiraci:
http://www.youtube.com/watch?v=3LQI9FRBbTo
Kdo nevlastní ZX Spectrum nebo některý kompatibilní počítač jako byly Didaktiky, může pro vyzkoušení použít emulátor, třeba tenhle běžící přímo v prohlížeči: http://torinak.com/qaop
Naposledy upravil(a) faraon dne 03 dub 2016 23:15, celkem upraveno 4 x.
"Král Lávra má dlouhé oslí uši, král je ušatec!

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

Reklama
Uživatelský avatar
domitea
Tvůrce článků
Level 4.5
Level 4.5
Příspěvky: 1966
Registrován: červen 09
Bydliště: Královehradecký kraj
Pohlaví: Muž
Stav:
Offline
Kontakt:

Re: Malá hra o Velkého Bajta (0)

Příspěvekod domitea » 08 zář 2015 20:37

Tak ukáži jeden pokus o implementaci, který je starší, než zadání úkolu :lol:

Je to zásobníková kalkulačka, která umí pouze postfixový zápis. Je napsána v Javě a každý si ji může zkopírovat a vyzkoušet z mého Githubu
UNIX je systém jednoduchý, jen musíte být geniální, aby jste tu jednoduchost pochopili. Jedině OSS, vše co napíšu je pod GNU/GPL
Linux je mé koření života. Nikdy nevím, co pokazím! Registered user #550849

Dnešní počítače mi nestačí, pracuji na vlastním

Uživatelský avatar
Oxxid
člen BSOD týmu
Master Level 8
Master Level 8
Příspěvky: 6194
Registrován: prosinec 12
Pohlaví: Muž
Stav:
Offline

Re: Malá hra o Velkého Bajta (0)

Příspěvekod Oxxid » 23 zář 2015 18:01

Mé řešení je zde https://gist.github.com/mbalous/d1c61ea58d8307d5157d . Melo by to byt relativne blbu-vzorne. Jsem otevreny kritice...
Naposledy upravil(a) Oxxid dne 03 kvě 2016 11:43, celkem upraveno 1 x.

Uživatelský avatar
noko
nováček
Příspěvky: 24
Registrován: červenec 15
Pohlaví: Muž
Stav:
Offline
Kontakt:

Re: Malá hra o Velkého Bajta (0)

Příspěvekod noko » 26 zář 2015 20:13

Já jsem to vyřešil takto: http://noko.wz.cz/php-calc/ . Je to v PHP běží na straně serveru, musíte ho mít v pc nainstalované nebo na zprovoznění použít nějaký free hosting s podporou php třeba php5.cz.

Omlouvám se, špatně jsem si přečetl zadání, radši jsem to udělal v javascriptu: http://noko.wz.cz/js-calc . Kalkulačku zprovozníte tak že do textového editoru vložíte kód a potom uložíte jako .html nebo .php .
Naposledy upravil(a) noko dne 28 úno 2016 18:28, celkem upraveno 3 x.

Uživatelský avatar
Oxxid
člen BSOD týmu
Master Level 8
Master Level 8
Příspěvky: 6194
Registrován: prosinec 12
Pohlaví: Muž
Stav:
Offline

Re: Malá hra o Velkého Bajta (0)

Příspěvekod Oxxid » 26 zář 2015 20:19

No to jsi to, ale nevyřešil správně. Vstupem je pouze jeden výraz! Tj. ty by jsi měl mít na stránce jeden <input type="text"/> a jeden <input type="submit/>! Výraz rozparsovat je právě úkolem toho programu.

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: Malá hra o Velkého Bajta (0)

Příspěvekod faraon » 27 zář 2015 07:37

Ale jo, vyřešil to správně, i když až napodruhé. Vlastně je to totéž co jsem udělal v tom ukázkovém videu, akorát je na to potřeba milionkrát výkonnější počítač a stotisíckrát víc paměti než před třiceti lety :lol:

Mělo jít o co nejjednodušší řešení, s maximálním využitím možností zvoleného jazyka, aby se program nemusel piplat s každým bajtem sám a bloudit ve spoustě větvení a cyklů. A to že program dokáže vyřešit i složitější výrazy než 1+1 je naopak bonus.

Jen bych prosil umístit kód na nějaké trvalejší místo než je osobní web, který může kdykoliv zmizet, nejlépe přímo sem do tagu |code|. Tak snad bude moci někdy v budoucnu posloužit někomu jinému jako inspirace.
"Král Lávra má dlouhé oslí uši, král je ušatec!

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

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: Malá hra o Velkého Bajta (0)

Příspěvekod faraon » 01 lis 2015 19:02

Žádný další odvážlivec, který by se chtěl pochlubit vlastním řešením, už se nenajde? Kdyby ano, může ho sem vložit. Můžete napsat také hodnocení programů kolegů které jste si vyzkoušeli.

Zatím přidám vlastní výtvor, jeden řádek v jazyce C, počítá s reálnými čísly a hlídá dělení nulou:

Kód: Vybrat vše

#include <stdio.h>
#include <math.h>

int main(void)
    {
    float x,y;
    char z;

    for (printf("1+1 (C)2015 FARAON\n");3==scanf("%f%1[+-*/]%f",&x,&z,&y);printf("%.3f %c %.3f = %.3f\n",x,z,y,'+'==z?x+y:'-'==z?x-y:'*'==z?x*y:y&&'/'==z?x/y:NAN)) while ('\n'!=getchar());

    return 0;
    }


Hra stále trvá a pokračuje dalším bitem: viewtopic.php?f=61&t=162471
"Král Lávra má dlouhé oslí uši, král je ušatec!

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

Denis V.
Level 3.5
Level 3.5
Příspěvky: 992
Registrován: květen 13
Pohlaví: Muž
Stav:
Offline

Re: Malá hra o Velkého Bajta (0)

Příspěvekod Denis V. » 01 lis 2015 19:25

Tak jsem se teda přidal :)

VS Projekt, .exe, Jen zdroják, C++
Naposledy upravil(a) Denis V. dne 01 lis 2015 20:57, celkem upraveno 3 x.

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: Malá hra o Velkého Bajta (0)

Příspěvekod faraon » 01 lis 2015 20:05

Pěkné a jednoduché řešení, akorát když už počítáš celočíselně, možná by bylo lepší aby se ten zbytek vypisoval jenom když nějaký bude. Třeba u sčítání je to celkem zbytečná informace, dokonce trochu matoucí.
"Král Lávra má dlouhé oslí uši, král je ušatec!

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

Denis V.
Level 3.5
Level 3.5
Příspěvky: 992
Registrován: květen 13
Pohlaví: Muž
Stav:
Offline

Re: Malá hra o Velkého Bajta (0)

Příspěvekod Denis V. » 01 lis 2015 20:21

Oprava na desetinná čísla, zbytek odstraněn. Přidán link jen na zdroják :)

Uživatelský avatar
Akrej
Level 5.5
Level 5.5
Příspěvky: 2999
Registrován: červen 12
Pohlaví: Muž
Stav:
Offline

Re: Malá hra o Velkého Bajta (0)

Příspěvekod Akrej » 01 lis 2015 20:29

Jen tak ze svědavosti zkusim napsat taky kalkulačku jak bylo uvedeno ale neslibuju že to bude taková dokonalita jako je tady víš uvedena
"Nejsem nerozumný. Jen nemám ten samý rozum jako vy."
Diogénes ze Sinopé
-------------------------------------
„Mějte dobrou náladu. Dobrá nálada vaše problémy sice nevyřeší, ale naštve tolik lidí kolem, že stojí za to si ji užít.“
Jan Werich
--------------------------------------
Snažím se psát bez chyb
-------------------------

Uživatelský avatar
Oxxid
člen BSOD týmu
Master Level 8
Master Level 8
Příspěvky: 6194
Registrován: prosinec 12
Pohlaví: Muž
Stav:
Offline

Re: Malá hra o Velkého Bajta (0)

Příspěvekod Oxxid » 01 lis 2015 20:52

Denis V. píše:Tak jsem se teda přidal :)

VS Projekt, .exe, Jen zdroják, C++

nefrčí to


  • Mohlo by vás zajímat
    Odpovědi
    Zobrazení
    Poslední příspěvek
  • Malá sestava do 30 tisíc
    od kupjec » 20 zář 2023 21:24 » v Rady s výběrem hw a sestavením PC
    14
    2227
    od kupjec Zobrazit poslední příspěvek
    25 zář 2023 11:26
  • Výběr skříně (zakoupená je malá) Příloha(y)
    od DaveMove » 09 čer 2023 15:35 » v Problémy s hardwarem
    8
    817
    od meda2016 Zobrazit poslední příspěvek
    09 čer 2023 20:27

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