Programovat kalkulacku



Mam za ukol vytvorit program - kalkulacku.Nejsem v tomto oboru zdatny, ale jazyku C++ trochu rozumim. Ve wxGlade jsem si udelal graficky navrh a vystup v C++. Ten jsem nakopiroval do projektu vytvor. v Dev. Je podle vas lepsi udelat vse v tom Dev? Ted to nejdulezitejsi. Potrebuju poradit spis s tou hlavni posloupnosti funkce kalkulacky. Operace bezne, zadavani nekolika napr. scitancu za sebou a vysledek zobrazit az po stisku =. Mam to udelat jako retezec, nebo cislo vzdy ulozit do promenne a po kazde nasledujici zadane operaci tuto promennou zmenit? Nebo uplne jinak?Diky
Ak Ti to pomôže, pozri na stránky:<http://www.codeproject.com/>
<p>jedním z nápadů může být poskytnutí vizuální zpětné vazby o tom, kde je textový kurzor. "cíl" může ukázat svou plianci (vnímavost k upuštěnému objektu), stejně jako ikona může ukazovat jeho sílu (vnímavost k přetažení).</p><p>zde je animovaná grafika pro ilustraci, kromě toho, že se při náhledu nebude animovat. :( uživatel přetáhne ikonu kalkulačky doleva.</p><p><img src="https://i.stack.imgur.com/qsahg.gif" alt="enter image description here"></p><p>vkládací paprsek (žlutý i-paprsek na obrázku) ukazuje plianci plochy - „místo, kam ikona zmizí, pokud ji nyní přetáhnete“. protože i-paprsek předvídá cíl na základě směru přetažení, i-paprsek přichytí k levému okraji stránky před tím, než tam táhne prst uživatele. to znamená, že uživatel může ikonu přetáhnout trochu brzy, <strong>aby nedošlo k posunu na jinou stránk</strong>.</p><p>aby to fungovalo dobře, na začátku přetažení by se měl vložený paprsek pravděpodobně ve výchozím nastavení objevit směrem k „uvnitř“ obrazovky (předpokládejme, že uživatel bude ve výchozím nastavení přetahovat směrem do středu obrazovky), dokud uživatel nezačne přetahovat. směrem ven, <em> off </em> stránka. podobný typ interakce může přizpůsobit stránkování podél vertikální osy.</p><p>toto je pouze jedno možné řešení. jsem si jistý, že existují další. bavte se s tím.</p> <p>pro druhou metodu, kterou jste zmínili, není v c++ ani c # žádná syntaxe.</p><p>na první metodě není nic špatného. pokud však máte velmi velké rozsahy, stačí použít řadu příkazů.</p> Říkáte, že máte dostatek potíže jednu kostku, aby zobrazoval ... takže jsem si jistý, jestli máte jeden pro zobrazení nebo ne.


V podstatě ... dát svůj kód pro psaní kostku v jedné funkci, pak už jen volání funkce 100krát.



```
void DrawCube()
{
    //code to draw the cube
}

void DisplayCubes()
{
    for(int i = 0; i < 10; ++i)
    {   
         for(int j = 0; j < 10; ++j)
         {
             glPushMatrix();
             //alter these values depending on the size of your cubes.
             //This call makes sure that your cubes aren't drawn overtop of each other
             glTranslatef(i*5.0, j*5.0, 0);
             DrawCube();
             glPopMatrix();
         }
    }              
}

```

To je základní přehled o tom, jak byste mohli jít o to udělat. Pokud se chcete něco účinnější nahlédnout do display listy někdy Jakmile budete mít základy přišel :) <p>psaní plynulého rozhraní (s ním jsem <a href="http://www.google.ca/url?sa=t&amp;source=web&amp;cd=1&amp;ved=0cbuqfjaa&amp;url=http%3a%2f%2fsoapboxautomation.com%2fproducts%2ffluentdwelling%2f&amp;ei=ao6ttcuck8sdgqesvpsqda&amp;usg=afqjcngcf99lzbzlrfvnrtst7qsww3kxwg">dabbled</a> ) vyžaduje více úsilí, ale má to výplaty, protože pokud to uděláte správně, je výsledný uživatelský kód jasnější. je to v zásadě forma specifického jazykového jazyka.</p><p>jinými slovy, pokud je váš kód načten mnohem více, než je napsán (a jaký kód není?), měli byste zvážit vytvoření plynulého rozhraní.</p><p>plynulá rozhraní jsou více o kontextu a jsou mnohem víc než jen způsoby konfigurace objektů. jak vidíte ve výše uvedeném odkazu, k dosažení:</p><ol> <li>kontext (takže když obvykle provádíte mnoho akcí ve stejném pořadí, můžete je zřetězit, aniž byste museli znovu a znovu prohlašovat svůj kontext).</li> <li>viditelnost (když jdete na <code>objecta.</code> pak vám inteligence dává spoustu rad. v mém případě výše, <code>plm.led.</code> vám poskytuje všechny možnosti pro ovládání vestavěné led a <code>plm.network.</code> vám poskytuje věci, které můžete dělat se síťovým rozhraním. <code>plm.network.x10.</code> vám dává podmnožinu síťových akcí pro zařízení x10. u inicializátorů konstruktoru to nedostanete (pokud si nepřejete, aby byl objekt konstruován pro každý jiný typ akce, který není idiomatický).</li> <li>reflexe (nepoužívá se ve výše uvedeném příkladu) - schopnost převzít výraz linq a manipulovat s ním je velmi výkonný nástroj, zejména v některých pomocných api, které jsem vytvořil pro testy jednotek. dokážu předat výraz getter get, sestavit spoustu užitečných výrazů, zkompilovat a spustit je, nebo dokonce použít getter k nastavení mého kontextu.</li> </ol><p>jedna věc, kterou obvykle dělám, je:</p><pre><code>test.property(t =&gt; t.someproperty) .initializedto(string.empty) .cantbenull() // tries to set to null and asserts argumentnullexception .yaddayadda(); </code></pre><p>nechápu, jak můžete něco takového udělat i bez plynulého rozhraní.</p><p><strong> edit 2 </strong>: můžete také udělat opravdu zajímavá vylepšení čitelnosti, jako například:</p><pre><code>test.listproperty(t =&gt; t.mylist) .shouldhave(18).items() .andthenafter(t =&gt; testaddingitemtolist(t)) .shouldhave(19).items(); </code></pre> <p>"nevím, jak to udělat, ale kdybych se s tímto problémem setkal v projektu, tak bych si to vymyslel, jak to udělat ..."</p> No, je tu vestavěný režim shell, který dělá zvýrazňování syntaxe, pokud to není již zapnutý, `M-x shell-script-mode`bude to pro vás.


Pokud jde o nástroj, aby skriptování jednodušší. Je tu [bash shell debugger](http://bashdb.sourceforge.net/) , takže pokud si program v bash, který by pomohl dost.


Samozřejmě je tu [eshell](http://www.emacswiki.org/emacs/CategoryEshell) , shell napsaný v Emacs Lisp, takže můžete získat všechny zvýraznění syntaxe byste očekávali od Lisp, automatické dokončování a Emacs LISP debugger. <p>myslím, že znamenají, že byste měli používat <a href="http://en.wikipedia.org/wiki/smart\_pointer">inteligentní ukazatele</a> místo běžných ukazatelů.</p><blockquote> <p>ve vědě o počítačích je inteligentní ukazatel abstraktní datový typ, který simuluje ukazatel a zároveň poskytuje další funkce, jako je automatický sběr odpadu nebo kontrola mezí. účelem těchto dalších funkcí je omezit chyby způsobené zneužitím ukazatelů při zachování účinnosti. inteligentní ukazatele obvykle sledují objekty, na které ukazují, za účelem správy paměti.</p> <p>zneužití ukazatelů je hlavním zdrojem chyb: konstantní alokace, deallokace a odkazování, které musí být provedeny programem napsaným pomocí ukazatelů, představuje riziko, že dojde k úniku paměti. inteligentní ukazatele se pokoušejí zabránit úniku paměti automatizováním automatického přidělování prostředků: když je ukazatel (nebo poslední v řadě ukazatelů) na objekt zničen, například proto, že je mimo rozsah, je zničen i špičatý objekt.</p> </blockquote><p>v c++ by byl kladen důraz na sběr odpadu a zabránění úniku paměti (abychom jmenovali alespoň dvě). ukazatele jsou základní součástí jazyka, takže jejich použití je do značné míry nemožné, s výjimkou nejvzácnějších programů.</p> <p>ve skriptech shell není důležité žádné odsazení.</p><p>mírně méně flippant odpověď:</p><ul> <li>vyberte si ve svém týmu standard, se kterým můžete pracovat, zjednodušit věci.</li> <li>použijte něco, co editor usnadňuje, takže nemusíte bojovat, abyste se drželi standardu.</li> </ul> <p>moje zkušenost je založena na 10leté zkušenosti s prací s java a 3leté zkušenosti s prací s c # /. net. java je 0% produktivnější než c # .net toto je založeno na psaní back-end aplikací založených na službách.<br> c # /. net je možná o 5% produktivnější než java pro psaní uživatelských aplikací.) ale pak jsem to neudělal téměř 5 let v java a nový editor uživatelského rozhraní netbeans mohl tuto mezeru uzavřít.</p><p>chcete zvýšit produktivitu? <a href="http://en.wikipedia.org/wiki/continuous\_integration"> ci </a> (ideálně kontinuální dodávka) a automatizované testy. produktivita získaná výběrem jazyka/platformy/ide na jakémkoli hlavním jazyce/platformě/ide je poměrně malá.</p> <p>registry <code>"*</code> a <code>"+</code> jsou pro schránku systému (<code>:help registers</code>). v závislosti na vašem systému mohou dělat různé věci. například v systémech, které nepoužívají x11 jako osx nebo windows, se registr <code>"*</code> používá pro čtení a zápis do systémové schránky. na systémech x11 lze použít oba registry. pro více informací viz <code>:help x11-selection</code>, ale v podstatě <code>"*</code> je analogický s x11 <em>primárním</em> výběrem (který obvykle kopíruje věci, které vyberete myší a pastami pomocí prostřední tlačítko myši) a <code>"+</code> je obdobné jako u x11 <em>clipboard</em> výběr (což je vlastní schránka).</p><p>pokud vše, co šlo přes hlavu, zkuste pomocí <code>"*yy</code> nebo <code>"+yy</code> zkopírovat řádek do schránky systému. za předpokladu, že máte vhodné možnosti kompilace, by měl fungovat jeden nebo druhý. možná budete chtít přeměnit to na něco výhodnější pro vás. například můžete v souboru ~/.vimrc zadat <code>vnoremap &lt;c-c&gt; "*y</code>, abyste mohli vizuálně vybrat a stisknout <kbd>ctrl</kbd>+<kbd>c</kbd> vyskočit do schránky systému.</p><p>mějte na paměti, že kopírování/vkládání ze systémové schránky <strong>nebude fungovat</strong> pokud <code>:echo has('clipboard')</code> vrací 0. v tomto případě není vim zkompilován s funkcí <code>+clipboard</code> a budete muset nainstalovat jinou verzi nebo znovu zkompilovat . některé linuxové distribuce standardně dodávají minimální instalaci vimu, ale obecně, pokud <strong>nainstalujte balíček <code>vim-gtk</code> nebo <code>vim-gtk3</code></strong> můžete získat další funkce.</p><p>můžete se také podívat na volbu <code>'clipboard'</code> popsanou v <code>:help cb</code>. v tomto případě můžete <code>:set clipboard=unnamed</code> nebo <code>:set clipboard=unnamedplus</code> provést všechny operace vyhození/smazání automaticky zkopírovat do systémové schránky. to by mohlo být nepříjemností v některých případech, kdy ukládáte něco jiného do schránky, protože to přepíše.</p><p>chcete-li vložit, můžete použít <code>"+p</code> nebo <code>"*p</code> (opět v závislosti na vašem systému a/nebo požadovaném výběru) nebo je můžete namapovat na něco jiného. typicky je zadávám, ale často se nacházím v režimu vkládání. pokud jste v režimu vkládání, můžete je stále vkládat pomocí správného odsazení pomocí <code>&lt;c-r&gt;&lt;c-p&gt;*</code> nebo <code>&lt;c-r&gt;&lt;c-p&gt;+</code>. viz <code>:help i\_ctrl-r\_ctrl-p</code>.</p><p>za zmínku stojí také možnost <code>paste</code> vim (<code>:help paste</code>). toto vloží vim do speciálního "režimu vkládání", který zakáže několik dalších možností, což vám umožní snadno vložit do vimu pomocí svého terminálového emulátoru nebo známé zkratky pro vložení multiplexeru. jednoduše zadejte <code>:set paste</code>, abyste jej aktivovali, vložte obsah a potom zadejte <code>:set nopaste</code>, abyste jej zakázali. alternativně můžete pomocí volby <code>pastetoggle</code> nastavit kód klíče, který přepíná režim (<code>:help pastetoggle</code>). doporučuji používat registry namísto těchto možností, ale pokud jsou stále příliš děsivé, může to být vhodné řešení, když si vylepšujete své vim chops.</p><p>podrobnější informace naleznete v tématu <code>:help clipboard</code>.</p>