Závorka
Ještě taková drobnost, chtěl jsem vyzkoušet jenom jednu část algoritmu, tak jsem použil závorku komentáře {, což zbytek kódu až do konce bralo jako komentář (i s příkazem "konec", což jsem si tehdy neuvědomil). Jenže se stala podobná věc jako s tím apostrofem, že program donekonečna hledal uzavírací závorku }, která tam nebyla. Program přestal reagovat a musel jsem ho ukončit. Pro srandu jsem zkusil smazat "začátek" a "konec" a na začátek jsem napsal jedinou závorku {, což program okamžitě shodilo. Možná by bylo dobré vypsat chybu, že chybí uzavírací závorka komentáře, nebo za závorkou { automaticky brát jako komentář zbytek kódu za ní až po příkaz "konec".
Děkuji za vysvětlení. :)
Re: 219
Znak s ASCII kódem 39 neboli #27 je apostrof. Mělo by ho to sice normálně vypsat, ale program pracuje tak, že si všechny funkce (v tomto případě chr()) nejdříve převede na výsledné hodnoty, ty pak vyhodnotí (např. poskládá stringy) a výsledek vypíše. S apostrofem je ten problém, že se jím ohraničují konstantní textové řetězce (i když se místo něj použijí uvozovky, tak si je program při zpracování převede na apostrofy). A když si tam překladač hodí jeden apostrof, tak pak hledá ten druhý, co string uzavírá, přičemž pevně věří tomu, že tam je, jelikož předchozí kontrola žádnou chybu neodhalila, protože to tam ten první apostrof ještě nebyl, takže se to zacyklí. Zkuste použít napiš(chr(39)+chr(39)); a vše proběhne v pořádku, respektive to nevypíše to nic, protože výsledkem budou dva apostrofy hned za sebou, tedy prázdný textový řetězec. Nicméně je to samozřejmě bug v programu (myslím program Algoritmy, ne pseudokód) a v příští verzi to zkusím opravit. Děkuji za upozornění.
Znak 39
Zdravím, trochu jsem se hrál s tímto programem, konkrétně jsem zkoušel jednoduchý cyklus pro vypsání všech ascii znaků, no algoritmus se vždy zasekl na znaku s kódem 39. Zkusil jsem napsat algoritmus s jediným řádkem napiš(chr(39)); a program se zasekl, nešlo nic dělat ani algoritmus zastavit, jediná cesta byla celý program ukončiť. Nemyslím že bych dělal něco blbě takže, co je tak speciálního na znaku #39 že to zasekne celej program? :D
Vývojový diagram - prumer
Ahoj, nevite nahodou nekdo jak by vypadal vyvojivy diagram pro toto zadani?
Vytvorte vyv. Diagram pro zjištění bodového prumeru pro zjištění výsledků testů ve třech skupinách a vytisknete celkový počet studentů a aritmetický průměr v těchto skupinách. Dále vytisknete vážený průměr.
Re: 213
Měl jsem verzi 3.1 po update v pořádku. Problém byl, že jsem v celém programu použil pro pole název A a pro generované číslo název a, což hlásí chybu i nyní. Po update a přejmenovaní vše v pořádku, díky za rychlou reakci. JH
Re: 213
Zkusil jsem ten kód asi 20x a vždy prošel bez chyby. Verze programu 1.4.1.1. Operace "div 1" pro useknutí desetinné hodnoty na celé číslo funguje ale již od první verze. Jakou hodnotu to ukazuje v proměnné a před provedením druhého příkazu?
datové typy
Zdravím, mám dotaz k následujícímu kódu:
a:=(3+random()*20) div 1;
B[a]:=1;
příkaz B[a]:=1; píše chybu [Error 19] \\\"char on coord \\\"[a]\\\" doesnt exist\\\" (za [a] dosaď nějakou vygenerovanou a upravenou hodnotu).
Dá se tento problém nějak vyřešit, tj zajistit, aby náhodně generované číslo upravené celočíselným dělením mohlo vstupovat jako index do pole?
a
ahoj program je bezva
Re: 210
Bohužel aktuální verze podporuje pouze zápis záporných čísel (např. -3), ale nikoli záporných proměnných (např. -b). Takový výraz je tedy třeba rozepsat do klasického násobení zápornou jedničkou (např. "-1*b"). Zadaný výraz by tak tedy vypadal následovně:
b := -3;
x := -1*b + 2;
O tomto nedostatku vím a plánuji jej v příští aktualizaci odstranit.
Záporná čísla
Ahoj,
mám dotaz ohledně počítání se zápornými čísly. Mám tento kousek kódu:
b := -3;
x := -b + 2;
Pokaždé skončím s chybou "Access violation at address 004117E6".
Co tu dělám špatně? Přijde mi to jako normální výraz, ale nemohu se z toho dostat ke kloudnému výsledku.
Re: 208
Obnovování dat funguje díky tomu, že při mazání nejsou data vůbec mazána, ale místo na disku kde se nacházejí je pouze označeno jako volné. Až se bude něco nového na disk nahrávat, tak až teprve pak se přepíší. Takže obnova pouze zruší toto označení z volného místa na původní soubory, pokud tedy samozřejmě již nebyly celé nebo z části přepsány novými daty. Aby toto bylo možné, je zapotřebí přímý přístup k disku, jeho sektorům, indexům souborů atd. což program Algoritmy skutečně neumí.
princip obnovy dat
Ahoj,
netušíte někdo na jakém principu fungují programy pro obnovu dat? Dal by se pro to napsat nějaký vhledávací a obnovovací" alg.?
Díky moc :))
Re: Re: Ekvivalent GoTo
Děkuji mnohokrát za \\\"nakopnutí\\\" :) Takže problém byl (jak jsem předpokládal) ve mně - přes opakované čtení manuálu jsem nebyl schopen pochopit, kde má být začátek / konec u \\\"vnořených\\\" výpočtů. Pořád mi to házelo chyby. Díky moc.
Jinak ta druhá odmocnina jde v pohodě mocněním převrácenou hodnotou dvojky:
X1 := (-B + D ^ 0.5) / (2 * A);
Ještě jednou díky. Tj.
Re: Ekvivalent GoTo
Tak konkrétně zápis tohoto algoritmu by vypadal asi takto:
začátek
čti(a);
čti(b);
čti(c);
jestliže a = 0 pak
napiš("Není kvadratická rovnice")
jinak
začátek
d := b * b - 4 * a * c;
jestliže d < 0 pak
napiš("Nemá řešení")
jinak
začátek
x1 := (-b + Sqrt(d)) / (2 * a);
x2 := (-b - Sqrt(d)) / (2 * a);
napiš(x1);
napiš(x2);
konec;
konec;
konec.
Bohužel funkce Sqrt pro odmocninu, ani její ekvivalent, Algoritmy aktuálně nepodporují, což bych do příští verze přidat mohl...
Re: Ekvivalent GoTo
Děkuji za bleskovou reakci. Já jsem v oboru programování takový mírně poučený laik :), ale shodou okolností mi teď připadla výuka úplných základů, takže váš program využívám pro zápis vývojových diagramů a je opravdu výborný. Nejsem si jist, zda se dá požadavek skoku do určitého místa v programu obejít (možná to jen neumím) - řada těch vývojových diagramů má v podmínce třeba testování proměnné na hodnotu 0 s výsledkem, že pak nemá řešení a přiznávám, že nevím jak to obejít - např. výpočet kv. rovnice:
https://drive.google.com/file/d/0BwntaNW5qhrEUUNNSWhqdDUwY2M/edit?usp=sharing
Jinak je ale program, opravdu výborný a děkuji za možnost jej využívat. Oceňuji také, že běží naprosto bez problémů v Linuxu pod Wine.
Re: Ekvivalent GoTo
Od příkazu GoTo se v moderních programovacích jazycích ustupuje. Pro ukončení nějaké větve programu je však běžné používat break; continue; či return; ovšem nic z toho v Algoritmech zatím není. V neprocedurálním strukturovaném jazyku by to však nemělo příliš smysl a vždy se to dá elegantně vyřešit pomocí vhodně navrženého větvení.
Ekvivalent GoTo
Existuje nějaké možnost, jak při splnění podmínky vypsat text a skočit rovnou na konec programu? Vždy mi jen napíše text, přeskočí následující přiřazeni (pro nesplněnou podmínku) a pokračuje dále v programu, což skončí pochopitelně chybou. Nevím jestli jsem se vyjádřil přesně - prostě něco jako GoTo -> konec.
Re: Android
viz 200
Android
Dobrý den, chtěl bych se optat, jestli nezvažujete verzi pro android? :-)
Předem děkuji za odpověď
Re: Algoritmy mac
O ničem pro mac ani android neuvažuji.
Algoritmy mac
Dobrý den, chci se zeptat existuje nebo uvažujete o nějaké alternativě na mac ? díky.
Re: klíčová slova
Pravda, jednotný seznam všech funkcí zatím není. Nicméně ty základní jsou sepsány v dokumentu, algoritmy.pdf, který je zde v sekci Stáhnout a ty nově přidané jsou postupně sepisované v sekci Historie verzí.
klíčová slova
Dobrý den,
lze někde zjistit úplný seznam klíčových slov a funkcí? Např. algoritmus "Césarova šifra" obsahuje funkce "chr" a "ord", které v přehledu základních příkazů chybí.
vývojový diagram
Program načte číslo d a dále neprázdnou posloupnost dvojic čísel x,y udávajících body [x,y] v rovině různé od počátku, ukončenou dvojicí nul; určí počet zadaných bodů a kolik z těchto bodů má vzdálenost od počátku větší než d.
Nová učebnice Algoritmy 2010 + CD
Milková, E., Haviger, J., Rubáček, F., Voborník, P.: Algoritmy – základní konstrukce v příkladech a jejich vizualizace. Gaudeamus, Hradec Králové, 2010, s. 100, ISBN 978-80-7435-064-1.
RE: 134
Zkuste tento algoritmus:
čti(známka);
dokud známka < 1 or známka > 5 opakuj
začátek
napiš("Musí být zadána hodnota mezi 1 a 5. Prosím, zadejte známku znovu.");
čti(známka);
konec;
Popřípadě pokud chcete ověřovat, jsou-li čísla celá, nebo započítávat jen mínusy (0,5), nebo dokonce používat vážený průměr, vše z toho je možné.
Omezení
Dobrý den.
Mám napsán algoritmus na vyhodnocení vysvědčení a potřeboval bych nějak omezit při zadávání hodnot, aby šli zadat pouze známky od 1 do 5, jinak aby to napsalo, že nebyla zadaná správná hodnota.
Prosím o radu. Pokud to ovšem je řešitelné.
Děkuji předem.
Akce
Děkuji už se na něj vrhám
Download
Program Algoritmy je zde nyní znovu volně ke stažení v sekci Stáhnout.
Re: 82
Žádat dotisk? Pokud Vám jde ale o program Algoritmy, tak ten je přiložen na CD u obou jazykových verzí v totožné podobě (lokalizace se u něho dá přpínat i za běhu programu v nastavení).
Program Algoritmy
Hmm tak anglická verza tam je, ale česká nikoliv. Co s tím???
Re: 82
Obě knihy by měly být v prodeji v nakladatelství Gaudeamus na Univerzitě Hradec Králové.
Program Algoritmy
Dobrý den
Velice se mi líbí Váš program Algoritmy. Rád bych získal jeho instalaci. Doporučovanou knihu s CD jsem nikde neobjevil. Poraďte prosím. Děkuji Váš fanda Ing. Petr Handlíř. Popřípadě můj email handlir@seznam.cz
Algority
Prosím o poslání programu algoritmy na E-mail Z.d.e.n.o.u.s@centrum.cz Díkec
Staňte se fanoušky programu Algoritmy na Facebooku.
Jak získat program Algoritmy
Program Algoritmy lze získat s učebnicí "Algoritmy" z roku 2008 nebo její anglické verze "Algorithms" z roku 2009, kde je v obou případech přiložen na CD. Signatury těchto knih jsou následující:
Milková, E.: Algoritmy – Objasnění, procvičení a vizualizace základních algoritmických konstrukcí. Alfa nakladatelství, Praha, 2008, s. 114, ISBN 978-80-87197-10-3.
Milková, E., Beránek, L., Voborník, P.: Algorithms – Explanation, Exercises and Visualization of the Basic Algorithmic Constructions. Gaudeamus, Hradec Králové, 2009, s. 114, ISBN 978-80-7041-635-8.
Re: 39
Je tam možnost přepnout se z české verze klíčových slov do anglické, která vychází z jazyka Pascal, včetně překladu již napsaného kódu. To samé platí i pro celý program. Krom toho obojí lze i lokalizovat do dalších jazyků.
Úplní začátečníci většinou češtinu preferují a následná změna syntaxe v konkrétním programovacím jazyku již není takový problém. Základním účelem algoritmů je naučit se chápat a sestavovat algoritmy, které jsou základem programování, jehož výuka následuje záhy.
už jsem si toho všiml že to tam je, tak jen jedinej prostest nemůžu smazat blbe moje dotazy :( tady v chatu
čeština v programování???
Na první pohled můžu říct že tento prográmek opravdu vypadá solidně nicméně musím říct že mě zaráží čeština. Vždyť už i Java se dodává a učí výlučně v angličtině. Nebude studentům v dalších letech dělat problém přehodit si češtinu na angličtinu? Nebylo by snazší do budoucna je navést aby se naučili oravdu jen minimum slovní zásoby a měli ta do budoucna ušetřenou práci?
Re: 37
V současné době se připravují skripta obsahující kompletního průvodce výukou algoritmů včetně sbírky úloh. Přílohou pak bude CD s řešenými příklady a programem Algoritmy. Tato skripta by měla vyjít ještě před začátkem příštího školního roku. Zakoupit si je pak bude moci kdokoli.
Použití programu ve výuce
Dobrý den, vyučuji programování v jazyce C na SPŠ. Měl bych zájem o vyzkoušení vašeho programu. Lze jej někde stáhnout i pro cizí. Pokud bych shledal, že by se mi program při výuce hodil, jaké by byly vaše požadavky?
Předem děkuji za odpověď.
stanke.draho@volny.cz
Re: 35
Diskuze je určena výhradně pro veřejné sdílení svých zkušeností s programem Algoritmy, tedy pouze pro příspěvky, které buď samy o sobě, či předpokládaná odpověď na ně, obohatí i ostatní čtenáře. Žádosti o jeho zaslání jsou ryze soukromou záležitostí a pro tyto účely slouží e-mail!
Ano přesne já bych ten program taky potřeboval prosim J.Betka@seznam.cz
Re: 33
Pošlete mi na e-mail Vaši e-mailovou adresu.
Jung Libor
Kde stahnu ALgoritmy abych vypracoval DU?
Re: 28
Tento druh požadavku nepatří do veřejné diskuze.
Potreboval bych, aby jste me poslal ten program na mail...
Muj verejny mail je ivan.putna@seznam.cz, diky moc:o)
Re: 26
Vše tam je a funguje jak má. Pokud Vám to nejde otevřít přímo z prohlížečem, doporučuji nejprve stáhnout PDF na disk (kliknout na odkaz pravým tlačítkem myši a zvolit "Uložit cíl jako..." v IE či "Uložit odkaz jako..." ve FF) a otevřít jej až z něho.
proble
nemuzu otevrit manual a algoritmy,co mate zverejnene na techto stránkách,
cím to je??a mám abode reader
proble
namuzu otevrit manual a algoritmy,co mate zverejnene na techto stránkách,
ím to je??a mám abide reader
Re: 23
Asistenta kódu (seznam klíčových slov) si lze v programu kdykoli vyvolat klávesovou zkratkou Ctrl+Mezerník. Příslušné slovo si pak můžete přímo vybrat psaním, šipkami nebo myší a kliknutím či Enterem vložit do kódu.
Pseudokód je založen na počeštěném Pascalu, přičemž si lze přepnout i do originální anglické verze. Jeho zapisování však od C či PHP až zas tak rozdílné není, aby se nedalo během hodiny až dvou zcela pochopit.
Klíčová slova
Myslim, že by bylo dobré udělat výstum klíčových slov, alespoň do souboru, když už né rovnou do tiskárny. Ted se v tom začínám učit. Sice programovat umim,ale je to uplně jiné zapisování kódu, než třeba v C nebo PHP. Takže bych ty zkratky potřeboval na papíře a nechci to všechno opisovat.
Re: 21
Použil jsem UniHighlighter.
SynEdit
jak se ti povedlo v SynHighlighter zvyraznit český znaky a čísla, já sem to zkoušel, ale při vytvoření vlastních stylů mě to ignoruje, čet sem nějaký helpy ale tam o číslech nic neřeknou....
Re: 19
Ano, klíčová slova se načtou podle jazyka zvoleného při prvním spuštění a pak se již automaticky nemění ani při jeho případné změně. To je kvůli tomu, že si je lze ručně upravovat, tak aby kvůli tomu nedošlo k jejich ztrátě. Nicméně je tam možnost si načít výchozí podle aktuálně zvoleného jazyka.
Tak příčina byla v tom přenastavení klíčových slov, dal jsem "výchozí" a už to jede v pohodě (předtím tam byla jen ta anglická, ne český pseudokód) I když fakt nechápu, jak se to stalo, já s tím nic nedělal, jen jsem to stáhnul a spustil (jen jsem vybral english při 1. spuštění) Díky
Re: 17
Napadá mě několik příčin, jimiž by mohlo k tomuto dojít:
1) Za posledním slovem konec je tečka („konec.“) nebo nějaký jiný nepovolený znak. V současné verzi totiž za posledním koncem nesmí být již nic. Tečka bude povolena až v příští verzi.
2) Jsou přenastavena klíčová slova (Nástroje – Nastavení – Klíčová slova) či zvolen jiný mód než ve kterém je algoritmus napsán.
3) Algoritmus byl vložen přes schránku rovnou z nějakého textového editoru (např. Wordu), který k němu přidal i vlastní neviditelné znaky. Nejlepší je takto kopírovaný algoritmus „propláchnout“ třeba přes obyčejný notepad, který tyto znaky vyruší nebo alespoň zviditelní.
Zkus prověřit tyto tři možnosti a kdyby to nepomohlo, dej vědět.
chyba???
ahoj,
to jsem s toho blázen, stáhnul jsem si verzi 0.5 a když dám spusti algoritmus, tak to hodí chybu "algoritmus musí začínat slovem"začátek" a končit "konec" a zastaví se to na 1. řádku a dá to tam breakpoint. Přitom tam "začátek" i konec mám, nejde spustit ani jeden z uložených algoritmů. Verze 0.3 chodí bez problémů.
Re: 15
Část popisující uživatelské rozhraní a způsoby psaní algoritmů budou po schválení vedoucí práce zpracovány jako help programu. Programátorská dokumentace a zbytek zveřejním také, ale raději až po obhajobě :)
SynEdit je freeware opensource komponenta a dá se najít na sourceforge.net.
bude ta diplomka někde vystavená, žebych se podival. A kdes stahnul ten SynEdit, zakladni komponenta delf to neni.
Re: 13
1) Borland Delphi 7.
2) SynEdit.
3) BookMarky ta komponenta umí sama od sebe, k BreakPointům to chtělo dospat obsluhu.
4) UML diagram komponenty zpracovávající algoritmy, jež jsem vytvořil a která je srdcem celého projektu už mám částečně v diplomce. Vytvořit UML celé aplikace nemám v úmyslu, jelikož už tam pak nic moc zajímavého není, jen obsluha komponent, kterážto je v diplomce popsána slovně. Její části se již brzy stanou helpem programu Algoritmy.
zajimalo by mně několik věcí
1.) v čem je to naprogramovaný
2.) jakou komponentu jsi použil pro pracovní plochu
3.) a jak se ti povedly ty zarážky po straně zdrojáku.
4.) mohl by jsi někde vystavit UML diagram celyho projektu
Re: multijazycnost?
Podporu lokalizace programu do jiných jazyků jsem přidal od verze 0.4. Překlad do angličtiny je mým vlastním dílem, tak prosím omluvte případné angličtinářské chybky, či ještě lépe mě na ně když tak upozorněte.
Výchozí jazyk je teď angličtina. Jazyk si lze přepnout v menu Nástroje - Nastavení - Jazyk, anglicky tedy Tools - Options - Language.
Lze libovolně vytvářet další jazykové verze programu. Stačí si zkopírovat některý ze současných jazykových souborů v podsložce Languages a přeložit jeho obsah (vždy jen výraz za rovnítkem v uvozovkách). Pokud někdo vytvoříte takovéto překlady, můžete mi je poslat, přidám je do další verze programu. Ovšem struktura těchto překladových souborů se bude ještě měnit!
multijazycnost?
Zdarek,
zrovinka jsem tu mel hochy z Portugalska, kteri byli celi smutni ze maji chybu v programu a za boha nevedi, co na ne aplikace krici za chyby. Neslo by udelat multijazycnou verzi, ktera bude mit gui a chybove hlasky prelozene do anglictiny?
Re: 9
Už jsem na to přišel, měl jsem špatně zadané xyz a chybu jsem hledal v té podmínce. o:-). Děkuji za rychlou odpověď.
Re: 8
Zkoušel jsem to a funguje to podle mě korektně.
počet := 3;
jestliže 1 < počet and 2 < počet pak
napiš('OK');
Napíše OK, pro počet := 2 nenapíše nic. Kdyžtak mi pošlete celý ten problematický algoritmus, já se tomu podívám na zoubek.
Jinak help nakonec bude určitě, už jen proto, že bude činit podstatnou část mé diplomky :)
Je to opravdu výborný program. Při studiu jistě pomůže každému.
Už se těším, až bude hotový help :-). Teď jsem se dostal k menšímu problému a nějak nevím jak to vyřešit.
--
jestliže xyz < počet and abc < počet pak
--
Nějak si to program nechce přebrat. Zkoušel jsem - a & čárku - Nic z toho nefungovalo, vždy to bere jen tu první podmínku.
Jakpak se dělá taková podmínka? (jestliže něco and něco pak).
Díky
Re: 6
No přeci protože v tuto chvíli není n definováno :) Ve skriptech je spousta algoritmů, kde se používají proměnné u nichž se pro jednoduchost pouze předpokládá, že obsahují nějaké hodnoty, ale nikde není řečeno jaké. S tím počítač pracovat nedokáže, neb aby mohl s hodnotami počítat, potřebuje je mít přesně definovány.
Zamysli se nad tím algoritmem... je tam nějaký cyklus, který se bude opakovat, dokud zvětšující se i bude menší něž n. Jenže kolik je n?! Někde tam je prostě třeba napsat, že například
n := 10;
řekněme hned na první řádek pod první začátek.
Ovšem další problém nastane hned s a[i], protože to také není nikde definováno. Doporučuji na začátek přidat jednoduchý for cyklus, který posloupnost a vyplní třeba přímo jeho indexy:
pro i od 1 do n opakuj
a[i] := i;
No a pak také výraz je sudé nemá šanci projít. Toto se testuje tak, že po celočíselném dělení dvěma je zbytek nula. Čili takto:
jestliže a[i] mod 2 = 0 pak
Po těchto úpravách by měl již celý algoritmus proběhnout bez problémů.
proc mi po zadani tohoto algoritmu (opsan z ucebnice)
začátek
součet := 0;
i := 1;
dokud i < n opakuj
začátek
jestliže a[i] je sudé pak
součet := součet + a[i];
i := i + 1;
konec;
napiš(součet);
konec
pise ze n v tuto chvili neni definovano ???
dik moc
Re: dotaz
Nerovná se (≠) se ve skutečném kódu zapisuje <>, čili laicky řečeno je menší nebo větší než, tedy prostě rozdílé od druhé hodnoty, čili nerovná se.
dotaz
do programu mi nejde vlozit ≠ ... jak se to resi ?
Algoritmy
V secki algoritmy máte možnost vkládat vaše vlastní algoritmy a zároveň se si prohlížet a kopírovat algoritmy vložené ostatními. Takže neváhejte a pochlubte se svými výtvory, či zajímavými algoritmy na které jste narazili...
Pište, pište, pište...
Pište do této diskuze veškeré vaše připomínky, nápady a postřehy k programu Algoritmy, zajímá mě opravdu vše. Vždyť jde o moji diplomku :)