{"id":40208,"date":"2020-02-01T06:04:35","date_gmt":"2020-02-01T03:04:35","guid":{"rendered":"https:\/\/prohoster.info\/blog\/blog_prohoster\/kak-nauchit-preodolevat-trudnosti-a-zaodno-i-pisat-czikly"},"modified":"2020-02-01T06:04:35","modified_gmt":"2020-02-01T03:04:35","slug":"kak-nauchit-preodolevat-trudnosti-a-zaodno-i-pisat-czikly","status":"publish","type":"post","link":"https:\/\/prohoster.info\/cs\/blog\/kak-nauchit-preodolevat-trudnosti-a-zaodno-i-pisat-czikly","title":{"rendered":"Jak se nau\u010dit p\u0159ekon\u00e1vat obt\u00ed\u017ee a z\u00e1rove\u0148 ps\u00e1t smy\u010dky","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>I kdy\u017e se jedn\u00e1 o jedno z z\u00e1kladn\u00edch t\u00e9mat, tento \u010dl\u00e1nek je napsan\u00fd pro zku\u0161en\u00e9 odborn\u00edky. C\u00edlem je uk\u00e1zat, jak\u00e9 myln\u00e9 p\u0159edstavy maj\u00ed nov\u00e1\u010dci v programov\u00e1n\u00ed. Pro praktikuj\u00edc\u00ed v\u00fdvoj\u00e1\u0159e jsou tyto probl\u00e9my d\u00e1vno vy\u0159e\u0161eny, zapomenuty nebo si jich v\u016fbec nev\u0161imli. \u010cl\u00e1nek m\u016f\u017ee b\u00fdt u\u017eite\u010dn\u00fd, pokud budete muset n\u011bkomu pomoci s t\u00edmto t\u00e9matem. V \u010dl\u00e1nku se prov\u00e1d\u011bj\u00ed paralely s materi\u00e1lem z r\u016fzn\u00fdch knih o programov\u00e1n\u00ed autorstv\u00ed Schildta, Stroustrupa, Okulova.<\/p>\n<p>T\u00e9ma cykl\u016f bylo vybr\u00e1no, proto\u017ee na n\u011bm se \u0159ada lid\u00ed p\u0159i osvojov\u00e1n\u00ed programov\u00e1n\u00ed odfiltruje.<\/p>\n<p>Tato metoda je ur\u010dena pro slab\u00e9 studenty. Obvykle siln\u00ed se na tomto t\u00e9matu nezastavuj\u00ed a nen\u00ed pot\u0159eba pro n\u011b vym\u00fd\u0161let speci\u00e1ln\u00ed metody. Druhotn\u00fdm c\u00edlem \u010dl\u00e1nku je p\u0159ev\u00e9st tuto metodiku z kategorie \u201efunguje na v\u0161ech studentech, ale pouze u jednoho u\u010ditele\u201c do kategorie \u201efunguje u v\u0161ech student\u016f, v\u0161ech u\u010ditel\u016f\u201c. Nehled\u00e1m naprostou originalitu. Pokud u\u017e pou\u017e\u00edv\u00e1te podobnou metodu pro v\u00fduku tohoto t\u00e9matu, pros\u00edm napi\u0161te, \u010d\u00edm se v\u00e1\u0161 variant li\u0161\u00ed. Pokud se rozhodnete ji aplikovat, pod\u011blte se, pros\u00edm, o v\u00fdsledky. Pokud je podobn\u00e1 metoda pops\u00e1na v n\u011bjak\u00e9 knize, napi\u0161te, pros\u00edm, jej\u00ed n\u00e1zev.<\/p>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\nTuto metodiku jsem vypracov\u00e1val 4 roky, pracoval jsem individu\u00e1ln\u011b se studenty r\u016fzn\u00fdch \u00farovn\u00ed p\u0159\u00edpravy. Celkem asi pades\u00e1t student\u016f a dv\u011b tis\u00edce hodin v\u00fduky. Zpo\u010d\u00e1tku se na tomto t\u00e9matu studenti v\u011b\u010dn\u011b zasek\u00e1vali a odch\u00e1zeli. Po ka\u017ed\u00e9m studentovi byla metodika a materi\u00e1ly upraveny. B\u011bhem posledn\u00edho roku u\u017e studenti na tomto t\u00e9matu nez\u016fst\u00e1vali, a tak jsem se rozhodl pod\u011blit o vypracovan\u00e9 materi\u00e1ly.<\/p>\n<h4>Pro\u010d tolik p\u00edsmen? Cyklus je p\u0159ece element\u00e1rn\u00ed!<\/h4>\n<p>\nJak jsem ji\u017e uvedl v\u00fd\u0161e, pro praktikuj\u00edc\u00ed v\u00fdvoj\u00e1\u0159e a siln\u00e9 studenty m\u016f\u017ee b\u00fdt slo\u017eitost konceptu cykl\u016f podce\u0148ov\u00e1na. Nap\u0159\u00edklad je mo\u017en\u00e9 uspo\u0159\u00e1dat dlouhou p\u0159edn\u00e1\u0161ku, vid\u011bt p\u0159ikyvuj\u00edc\u00ed hlavy a chytr\u00e9 o\u010di. Ale p\u0159i pokusu vy\u0159e\u0161it n\u011bjak\u00fd \u00fakol nast\u00e1v\u00e1 zmatek a nepochopiteln\u00e9 probl\u00e9my. Po p\u0159edn\u00e1\u0161ce si studenti jist\u011b vytvo\u0159ili pouze \u010d\u00e1ste\u010dn\u00e9 pochopen\u00ed. Situaci zhor\u0161uje to, \u017ee studenti nedok\u00e1\u017eou sami vyj\u00e1d\u0159it, v \u010dem p\u0159esn\u011b spo\u010d\u00edv\u00e1 jejich myln\u00e1 p\u0159edstava.<br \/>\nJednou jsem si uv\u011bdomil, \u017ee studenti vn\u00edmaj\u00ed moje p\u0159\u00edklady jako hieroglyfy. To znamen\u00e1 jako ned\u011bliteln\u00e9 kusy textu, do kter\u00fdch je t\u0159eba doplnit n\u011bjak\u00e9 \u201emagick\u00e9\u201c p\u00edsmeno, a v\u0161e se rozb\u011bhne.<br \/>\nN\u011bkdy jsem si v\u0161iml, \u017ee studenti si mysl\u00ed, \u017ee k vy\u0159e\u0161en\u00ed konkr\u00e9tn\u00edho \u00fakolu pot\u0159ebuj\u00ed <i>n\u011bjakou jinou<\/i> konstrucci, kterou jsem jim je\u0161t\u011b ne\u0159ekl. P\u0159itom k vy\u0159e\u0161en\u00ed sta\u010dilo jen trochu upravit p\u0159\u00edklad.<\/p>\n<p>Proto jsem do\u0161el k my\u0161lence, \u017ee je d\u016fle\u017eit\u00e9 se soust\u0159edit nejen na syntaxi v\u00fdraz\u016f, ale tak\u00e9 na my\u0161lenku refaktorizace opakuj\u00edc\u00edho se k\u00f3du pomoc\u00ed smy\u010dek. Jakmile studenti ovl\u00e1dnou tuto my\u0161lenku, je jak\u00e1koli syntaxe zvl\u00e1dnuta drobn\u00fdmi cvi\u010den\u00edmi.<\/p>\n<h4>Komu a pro\u010d u\u010d\u00edm<\/h4>\n<p>\nProto\u017ee nejsou \u017e\u00e1dn\u00e9 p\u0159ij\u00edmac\u00ed zkou\u0161ky, mohou na lekc\u00edch b\u00fdt jak siln\u00ed, tak velmi slab\u00ed studenti. V\u00edce o sv\u00fdch studentech se m\u016f\u017eete do\u010d\u00edst v \u010dl\u00e1nku <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/350360\/\">Portr\u00e9t poslucha\u010d\u016f ve\u010dern\u00edch kurz\u016f<\/a><\/noindex><br \/>\nUsiloval jsem o to, aby programov\u00e1n\u00ed zvl\u00e1dly v\u0161echny, kdo cht\u011bj\u00ed.<br \/>\nMoje lekce prob\u00edhaj\u00ed individu\u00e1ln\u011b a student plat\u00ed sv\u00e9 pen\u00edze za ka\u017edou. Zd\u00e1lo by se, \u017ee studenti budou optimalizovat n\u00e1klady a po\u017eadovat minimum. Nicm\u00e9n\u011b lid\u00e9 nav\u0161t\u011bvuj\u00ed prezen\u010dn\u00ed lekce se \u017eiv\u00fdm u\u010ditelem nikoli kv\u016fli samotn\u00fdm znalostem, ale pro pocit jistoty, \u017ee toho zvl\u00e1dli hodn\u011b, pro pocit pokroku a pro schv\u00e1len\u00ed od experta (u\u010ditele). Pokud studenti nebudou c\u00edtit pokrok ve sv\u00e9m u\u010den\u00ed, odejdou. Celkov\u011b lze lekce uspo\u0159\u00e1dat tak, aby studenti poc\u00edtili pokrok v zvy\u0161uj\u00edc\u00edm se po\u010dtu zn\u00e1m\u00fdch konstrukc\u00ed. To znamen\u00e1, \u017ee nejprve podrobn\u011b studujeme while, pot\u00e9 studujeme for, a pak do while, a m\u00e1me tak p\u0159ipraven\u00fd kurz na tis\u00edc a jednu noc, ve kter\u00e9m se po dobu dvou m\u011bs\u00edc\u016f studuj\u00ed pouze smy\u010dky, a na konci je student, kter\u00fd podle dikt\u00e1tu napsal standardn\u00ed knihovnu. Nicm\u00e9n\u011b k \u0159e\u0161en\u00ed praktick\u00fdch \u00fakol\u016f je pot\u0159eba nejen znalost materi\u00e1lu, ale i samostatnost v jeho aplikaci a vyhled\u00e1v\u00e1n\u00ed nov\u00fdch informac\u00ed. Proto pova\u017euji za spr\u00e1vn\u00fd princip pro prezen\u010dn\u00ed kurzy nau\u010dit minima a povzbuzovat samostatn\u00e9 studium nuanc\u00ed a p\u0159\u00edbuzn\u00fdch t\u00e9mat. V t\u00e9matu o smy\u010dk\u00e1ch pova\u017euji za minimum konstrukci while. Na n\u00ed je mo\u017en\u00e9 pochopit princip. Znaje princip, lze samostatn\u011b zvl\u00e1dnout i for a do-while.<\/p>\n<p>Aby slab\u0161\u00ed studenti zvl\u00e1dli u\u010debn\u00ed materi\u00e1l, nesta\u010d\u00ed popsat syntaxi. Je t\u0159eba nab\u00eddnout v\u00edce jednoduch\u00fdch, ale r\u016fznorod\u00fdch \u00fakol\u016f a podrobn\u011bji vysv\u011btlit p\u0159\u00edklady. Kone\u010dn\u011b, rychlost osvojen\u00ed je omezena schopnost\u00ed studenta transformovat v\u00fdrazy a hledat vzory. Pro bystr\u00e9 studenty budou v\u011bt\u0161ina \u00fakol\u016f nudn\u00e1. P\u0159i pr\u00e1ci s nimi se nemus\u00ed trvat na vy\u0159e\u0161en\u00ed 100 % \u00faloh. M\u016fj materi\u00e1l si m\u016f\u017eete prohl\u00e9dnout na <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/AKryukov92\/programming-basics\">m\u00e9m githubu<\/a><\/noindex>. Pravda, repozit\u00e1\u0159 sp\u00ed\u0161e p\u0159ipom\u00edn\u00e1 grim\u00e1\u0159 \u010dernokn\u011b\u017en\u00edka \u2013 nikdo krom\u011b m\u011b nepochop\u00ed, co kde je, a pokud neprojde kontrolou, m\u016f\u017ee se zbl\u00e1znit.<\/p>\n<h4>Metodika je zam\u011b\u0159ena na praxi.<\/h4>\n<p>\nTeorie je vysv\u011btlov\u00e1na na p\u0159\u00edkladu \u0159e\u0161en\u00ed \u00falohy. Na lekc\u00edch o z\u00e1kladech programov\u00e1n\u00ed, kde se studuj\u00ed v\u011btven\u00ed a cykly, nen\u00ed mo\u017en\u00e9 uspo\u0159\u00e1dat u\u017eite\u010dnou p\u0159edn\u00e1\u0161ku na jedno t\u00e9ma na celou hodinu. 15-20 minut sta\u010d\u00ed k vysv\u011btlen\u00ed konceptu. Hlavn\u00ed obt\u00ed\u017ee nast\u00e1vaj\u00ed p\u0159i pln\u011bn\u00ed praktick\u00fdch \u00faloh.<br \/>\nZa\u010d\u00ednaj\u00edc\u00ed u\u010ditel\u00e9 mohou prezentovat oper\u00e1tory, v\u011btven\u00ed, cykly a pole b\u011bhem jedn\u00e9 lekce. Jen\u017ee studenti se setkaj\u00ed s probl\u00e9mem osvojen\u00ed t\u011bchto informac\u00ed.<br \/>\nNen\u00ed t\u0159eba jen p\u0159edat materi\u00e1l, je tak\u00e9 nutn\u00e9 se ujistit, \u017ee poslucha\u010di mu rozum\u011bj\u00ed.<\/p>\n<p>Skute\u010dnost zvl\u00e1dnut\u00ed t\u00e9matu se ur\u010duje podle toho, jak si student porad\u00ed s prac\u00ed na samostatn\u00fdch \u00fakolech. <br \/>\nPokud se studentovi poda\u0159ilo vy\u0159e\u0161it \u00falohu na t\u00e9ma bez pomoci u\u010ditele, znamen\u00e1 to, \u017ee t\u00e9ma bylo zvl\u00e1dnuto. Aby bylo mo\u017en\u00e9 zajistit samostatn\u00e9 ov\u011b\u0159en\u00ed, ka\u017ed\u00e1 \u00faloha obsahuje tabulku s testovac\u00edmi sc\u00e9n\u00e1\u0159i. \u00dalohy maj\u00ed jasn\u011b vymezen\u00fd po\u0159\u00e1dek. Nen\u00ed doporu\u010deno \u00fakoly p\u0159esko\u010dit. Pokud je aktu\u00e1ln\u00ed \u00faloha p\u0159\u00edli\u0161 slo\u017eit\u00e1, je bezp\u0159edm\u011btn\u00e9 p\u0159ech\u00e1zet k dal\u0161\u00ed. Ta je je\u0161t\u011b slo\u017eit\u011bj\u0161\u00ed. Aby student zvl\u00e1dl aktu\u00e1ln\u00ed slo\u017eitou \u00falohu, je mu vysv\u011btleno n\u011bkolik technik na p\u0159\u00edkladu prvn\u00ed \u00falohy. Vlastn\u011b, ve\u0161ker\u00fd obsah t\u00e9matu se soust\u0159ed\u00ed na techniky p\u0159ekon\u00e1v\u00e1n\u00ed obt\u00ed\u017e\u00ed. Cyklus je sp\u00ed\u0161e vedlej\u0161\u00edm efektem.<\/p>\n<p>Prvn\u00ed \u00faloha je v\u017edy p\u0159\u00edkladem. Druh\u00e1 se v z\u00e1sad\u011b m\u00edrn\u011b li\u0161\u00ed a je vykon\u00e1v\u00e1na \u201esamostatn\u011b\u201c ihned po prvn\u00ed pod dohledem u\u010ditele. V\u0161echny n\u00e1sleduj\u00edc\u00ed \u00falohy jsou zam\u011b\u0159eny na to, aby upozornily na r\u016fzn\u00e9 detaily, kter\u00e9 mohou vyvol\u00e1vat nedorozum\u011bn\u00ed.<\/p>\n<p>Vysv\u011btlen\u00ed p\u0159\u00edkladu je dialog, ve kter\u00e9m student mus\u00ed vyu\u017e\u00edt zp\u011btn\u00e9 \u0161\u00ed\u0159en\u00ed a k\u0159\u00ed\u017eovou validaci, aby se ujistil, \u017ee zvl\u00e1dl \u010d\u00e1st materi\u00e1lu.<\/p>\n<p>Budu ban\u00e1ln\u00ed a prohl\u00e1s\u00edm, \u017ee prvn\u00ed p\u0159\u00edklad na t\u00e9ma je velmi d\u016fle\u017eit\u00fd. Pokud je k dispozici materi\u00e1l pro rozs\u00e1hlou samostatnou pr\u00e1ci, mohou se nedostatky prvn\u00edho p\u0159\u00edkladu napravit. Pokud nen\u00ed nic jin\u00e9ho krom\u011b p\u0159\u00edkladu, student pravd\u011bpodobn\u011b t\u00e9ma nezvl\u00e1dne.<\/p>\n<h4>While nebo for?<\/h4>\n<p>\nJedna z diskutabiln\u00edch ot\u00e1zek je v\u00fdb\u011br konstrukce pro p\u0159\u00edklad: while nebo for. Jednou m\u011b m\u016fj zn\u00e1m\u00fd zku\u0161en\u00fd v\u00fdvoj\u00e1\u0159 bez u\u010ditelsk\u00fdch zku\u0161enost\u00ed hodinu p\u0159esv\u011bd\u010doval, \u017ee cyklus for je nejjednodu\u0161\u0161\u00ed na pochopen\u00ed. Jeho argumenty se soust\u0159edily na to, \u017ee \"je v n\u011bm v\u0161echno jasn\u00e9 a na sv\u00e9m m\u00edst\u011b\". Av\u0161ak skute\u010dn\u00fd d\u016fvod obt\u00ed\u017e\u00ed skute\u010dn\u00fdch nov\u00e1\u010dk\u016f je ve vlastn\u00ed my\u0161lence cyklu, nikoli v jeho z\u00e1pisu. Pokud \u010dlov\u011bk tuto my\u0161lenku nepochop\u00ed, bude m\u00edt pot\u00ed\u017ee se syntax\u00ed. Jakmile je my\u0161lenka pochopena, probl\u00e9my s form\u00e1tov\u00e1n\u00edm k\u00f3du zmiz\u00ed samy.<\/p>\n<p>V m\u00fdch materi\u00e1lech t\u00e9ma cykl\u016f n\u00e1sleduje po t\u00e9matu v\u011btven\u00ed. Vn\u011bj\u0161\u00ed podobnost if a while umo\u017e\u0148uje p\u0159\u00edmou analogii: \"kdy\u017e je podm\u00ednka v hlavi\u010dce pravdiv\u00e1, vykon\u00e1 se t\u011blo\". Specifikum cyklu je pouze to, \u017ee se t\u011blo vykon\u00e1v\u00e1 mnohokr\u00e1t.<\/p>\n<p>Druh\u00fd m\u016fj argument je ten, \u017ee while vy\u017eaduje m\u00e9n\u011b form\u00e1tov\u00e1n\u00ed ne\u017e for. M\u00e9n\u011b form\u00e1tov\u00e1n\u00ed znamen\u00e1 m\u00e9n\u011b hloup\u00fdch chyb s vynechan\u00fdmi \u010d\u00e1rkami a z\u00e1vorkami. U nov\u00e1\u010dk\u016f je\u0161t\u011b nen\u00ed dostate\u010dn\u011b rozvinut\u00e1 pozornost a d\u016fvtip, aby automaticky vyh\u00fdbali syntaktick\u00fdm chyb\u00e1m.<br \/>\nT\u0159et\u00ed argument \u2014 v mnoha dobr\u00fdch knih\u00e1ch se while vysv\u011btluje jako prvn\u00ed.<\/p>\n<p>Pokud student snadno transformuje v\u00fdrazy, lze o for mluvit okrajov\u011b. Student si pak s\u00e1m zvol\u00ed, co se mu v\u00edce l\u00edb\u00ed. Pokud v\u0161ak transformace p\u0159in\u00e1\u0161ej\u00ed pot\u00ed\u017ee, je lep\u0161\u00ed neru\u0161it pozornost. A\u0165 se student nejd\u0159\u00edve vyrovn\u00e1 se v\u0161\u00edm pomoc\u00ed while. Jakmile zvl\u00e1dne t\u00e9ma cykl\u016f, m\u016f\u017eeme p\u0159epsat \u0159e\u0161en\u00ed, abychom procvi\u010dili transformaci while na for.<br \/>\nCykly s postpodm\u00ednkou jsou docela vz\u00e1cn\u00e9. Na n\u011b v\u016fbec nestr\u00e1c\u00edm \u010das. Pokud student zvl\u00e1dl my\u0161lenky odhalov\u00e1n\u00ed vzorc\u016f a transformace v\u00fdraz\u016f, dok\u00e1\u017ee to pochopit i bez m\u00e9 pomoci.<\/p>\n<p>P\u0159i demonstraci prvn\u00edho p\u0159\u00edkladu siln\u00fdm student\u016fm upozor\u0148uji na to, \u017ee v prvn\u00edm p\u0159\u00edkladu je d\u016fle\u017eit\u00e9 zdokumentovat nejen \u0159e\u0161en\u00ed, ale i celou \u0159adu krok\u016f, kter\u00e9 vedly k v\u00fdsledku. L\u00edn\u00fdm student\u016fm se m\u016f\u017ee zd\u00e1t, \u017ee sta\u010d\u00ed napsat jen kone\u010dn\u00fd algoritmus. Jejich je t\u0159eba p\u0159esv\u011bd\u010dit, \u017ee jednoho dne naraz\u00ed na n\u00e1ro\u010dn\u00fd \u00fakol. K jeho vy\u0159e\u0161en\u00ed bude pot\u0159eba proj\u00edt jednotliv\u00fdmi kroky, jak je uvedeno v tomto p\u0159\u00edkladu. Pr\u00e1v\u011b proto je d\u016fle\u017eit\u00e9 zaznamenat v\u0161echny f\u00e1ze. U dal\u0161\u00edch \u00fakol\u016f pak lze uv\u00e9st pouze kone\u010dnou variantu \u0159e\u0161en\u00ed.<\/p>\n<p>Hlavn\u00ed my\u0161lenkou automatizace je, \u017ee p\u0159id\u011blujeme po\u010d\u00edta\u010di vykon\u00e1v\u00e1n\u00ed rutinn\u00ed pr\u00e1ce za \u010dlov\u011bka. Jedn\u00edm ze z\u00e1kladn\u00edch trik\u016f je psan\u00ed cykl\u016f. To se pou\u017e\u00edv\u00e1, kdy\u017e se v programu prov\u00e1d\u00ed n\u011bkolik stejn\u00fdch opakuj\u00edc\u00edch se \u010dinnost\u00ed po sob\u011b.<\/p>\n<h4>Jasn\u00e9 je lep\u0161\u00ed ne\u017e nejasn\u00e9<\/h4>\n<p>\nNa prvn\u00ed \u00fakol o cyklech se m\u016f\u017ee zd\u00e1t dobr\u00fd n\u00e1pad vypsat na obrazovku n\u011bjakou stejnou fr\u00e1zi n\u011bkolikr\u00e1t. Nap\u0159\u00edklad:<\/p>\n<blockquote><p>Hur\u00e1, funguje to!<br \/>\nHur\u00e1, funguje to!<br \/>\nHur\u00e1, funguje to!<br \/>\nHur\u00e1, funguje to!<br \/>\nHur\u00e1, funguje to!<br \/>\nHur\u00e1, funguje to!<br \/>\nHur\u00e1, funguje to!<br \/>\nHur\u00e1, funguje to!\n<\/p><\/blockquote>\n<p>\nTato varianta je \u0161patn\u00e1, proto\u017ee v v\u00fdstupu nen\u00ed vid\u011bt hodnota \u010d\u00edta\u010de. To je probl\u00e9m pro za\u010d\u00e1te\u010dn\u00edky. Nen\u00ed dobr\u00e9 ho podce\u0148ovat. Na za\u010d\u00e1tku byla tato \u00faloha prvn\u00ed a \u00faloha o v\u00fdpisu \u0159ady \u010d\u00edsel vzestupn\u011b byla druh\u00e1. Bylo t\u0159eba zav\u00e9st dal\u0161\u00ed term\u00edny jako \"cyklus Nkr\u00e1t\" a \"cyklus od A do B\", kter\u00e9 v podstat\u011b znamenaj\u00ed tot\u00e9\u017e. Abychom nezakl\u00e1dali zbyte\u010dn\u00e9 entity, rozhodl jsem se uk\u00e1zat jen p\u0159\u00edklad s v\u00fdpisem \u0159ady \u010d\u00edsel. Jen m\u00e1lo lid\u00ed se dok\u00e1\u017ee bez p\u0159\u00edpravy nau\u010dit m\u00edt v hlav\u011b \u010d\u00edta\u010d a modelovat chov\u00e1n\u00ed programu v mysli. N\u011bkte\u0159\u00ed studenti se poprv\u00e9 setk\u00e1vaj\u00ed s modelov\u00e1n\u00edm \"v mysli\" pr\u00e1v\u011b na t\u00e9ma cykl\u016f.<br \/>\nPo n\u011bjak\u00e9 praxi d\u00e1m \u00fakol na opakov\u00e1n\u00ed stejn\u00e9ho textu k samostatn\u00e9mu \u0159e\u0161en\u00ed. Pokud d\u00e1m nejd\u0159\u00edve viditeln\u00fd \u010d\u00edta\u010d a pak neviditeln\u00fd, maj\u00ed studenti m\u00e9n\u011b probl\u00e9m\u016f. N\u011bkdy sta\u010d\u00ed n\u00e1pov\u011bda \"nepi\u0161 \u010d\u00edta\u010d na obrazovku\".<\/p>\n<h4>Jak to vysv\u011btluj\u00ed jinde?<\/h4>\n<p>\nVe v\u011bt\u0161in\u011b vzd\u011bl\u00e1vac\u00edch materi\u00e1l\u016f na internetu je syntaxe cyklu uv\u00e1d\u011bna v r\u00e1mci \"p\u0159edn\u00e1\u0161ky\". Nap\u0159\u00edklad na developer.mozilla.org (v sou\u010dasnosti) je spolu s cyklem while pops\u00e1no n\u011bkolik dal\u0161\u00edch konstrukc\u00ed. P\u0159itom jsou uvedeny pouze samotn\u00e9 konstrukce ve form\u011b \u0161ablon. V\u00fdsledek jejich spu\u0161t\u011bn\u00ed je pops\u00e1n slovy, a ilustrace chyb\u00ed. Podle m\u00e9ho n\u00e1zoru takov\u00e1 prezentace t\u00e9matu sni\u017euje u\u017eite\u010dnost t\u011bchto materi\u00e1l\u016f na nulu. Student m\u016f\u017ee p\u0159epsat k\u00f3d a spustit ho s\u00e1m, ale p\u0159esto pot\u0159ebuje etalon pro srovn\u00e1n\u00ed. Jak pochopit, \u017ee je p\u0159\u00edklad p\u0159eps\u00e1n spr\u00e1vn\u011b, pokud nen\u00ed co srovn\u00e1vat s v\u00fdsledkem?<br \/>\nKdy\u017e je poskytnuta pouze \u0161ablona, bez p\u0159\u00edkladu, studentovi se to je\u0161t\u011b zt\u011b\u017euje. Jak pochopit, \u017ee jsou k\u00f3dov\u00e9 fragmenty ve \u0161ablon\u011b spr\u00e1vn\u011b um\u00edst\u011bny? M\u016f\u017eete se pokusit napsat <i>n\u011bjak<\/i>, a pak to spustit. Ale pokud nen\u00ed etalon pro srovn\u00e1n\u00ed v\u00fdsledku, tak spu\u0161t\u011bn\u00ed tak\u00e9 nepom\u016f\u017ee.<\/p>\n<p>V kurzu C++ na intuitu je syntaxe smy\u010dky zakop\u00e1na na t\u0159et\u00ed stran\u011b p\u0159edn\u00e1\u0161ky 4 na t\u00e9ma \u201eoper\u00e1tory\u201c. P\u0159i vysv\u011btlov\u00e1n\u00ed syntaxe smy\u010dek se zvl\u00e1\u0161tn\u00ed d\u016fraz klade na term\u00edn \u201eoper\u00e1tor\u201c. Term\u00edn je pod\u00e1v\u00e1n jako soubor fakt\u016f typu \u201esymbol; to je oper\u00e1tor\u201c, \u201e{} je slo\u017een\u00fd oper\u00e1tor\u201c, \u201et\u011blo smy\u010dky mus\u00ed b\u00fdt oper\u00e1torem\u201c. Tento p\u0159\u00edstup se mi nel\u00edb\u00ed, proto\u017ee jakoby skr\u00fdv\u00e1 d\u016fle\u017eit\u00e9 souvislosti za jedn\u00edm term\u00ednem. Rozbor zdrojov\u00e9ho k\u00f3du programu na termy na takov\u00e9 \u00farovni pot\u0159ebuj\u00ed v\u00fdvoj\u00e1\u0159i kompil\u00e1tor\u016f pro realizaci specifikace jazyka, ale rozhodn\u011b ne studenti v prvn\u00edm p\u0159ibl\u00ed\u017een\u00ed. Za\u010d\u00e1te\u010dn\u00edci v programov\u00e1n\u00ed z\u0159\u00eddka maj\u00ed dostate\u010dnou pe\u010dlivost, aby se takto d\u016fkladn\u011b v\u011bnovali term\u00edn\u016fm. Rare osoba si zapamatuje a pochop\u00ed nov\u00e1 slova na prvn\u00ed pokus. Prakticky nikdo nedok\u00e1\u017ee spr\u00e1vn\u011b aplikovat term\u00edn, kter\u00fd pr\u00e1v\u011b zjistil. Proto se u student\u016f objevuje spousta chyb jako \u201enapsal while(a&lt;7);{, ale program nefunguje\u201c.<br \/>\nPodle m\u011b by na za\u010d\u00e1tku m\u011blo b\u00fdt d\u00e1no syntaxe konstrukce hned se z\u00e1vorkami. Variant bez z\u00e1vorek by se m\u011bl vysv\u011btlovat pouze v p\u0159\u00edpad\u011b, \u017ee student m\u00e1 konkr\u00e9tn\u00ed ot\u00e1zku \u201epro\u010d je zde bez z\u00e1vorek a funguje to\u201c.<\/p>\n<p>V knize Okulova \u201eZ\u00e1klady programov\u00e1n\u00ed\u201c z roku 2012 za\u010d\u00edn\u00e1 sezn\u00e1men\u00ed s cykly \u0161ablonou for, pot\u00e9 n\u00e1sledn\u011b poskytuje doporu\u010den\u00ed k jej\u00edmu pou\u017eit\u00ed a pak hned n\u00e1sleduje experiment\u00e1ln\u00ed \u010d\u00e1st v\u00fduky. Ch\u00e1pu, \u017ee kniha byla naps\u00e1na pro to men\u0161inov\u00e9, velmi nadan\u00e9 \u017eactvo, kter\u00e9 se na moje kurzy m\u00e1lokdy dost\u00e1v\u00e1.<\/p>\n<p>V popul\u00e1rn\u00edch knih\u00e1ch je v\u017edy uveden v\u00fdsledek \u00faryvk\u016f k\u00f3du. Nap\u0159\u00edklad u \u0160ildtova d\u00edla \u201eJava 8. Kompletn\u00ed pr\u016fvodce\u201c z roku 2015. Nejprve je uvedena \u0161ablona, pak p\u0159\u00edklad programu a hned za n\u00edm \u2014 v\u00fdsledek proveden\u00ed.<\/p>\n<blockquote><p>Jako p\u0159\u00edklad si vezm\u011bme cyklus while, ve kter\u00e9m se prov\u00e1d\u00ed zp\u011btn\u00fd<br \/>\nodpo\u010det, po\u010d\u00ednaje \u010d\u00edslem 10, a vych\u00e1z\u00ed p\u0159esn\u011b 10 \u0159\u00e1dk\u016f \u201etakty\u201c: <\/p>\n<pre><code class=\"java\">\/\/\u041f\u0440\u043e\u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0430 \u0446\u0438\u043a\u043b\u0430 while\nclass While {\n    public static void main(String args []) {\n        int n = 10;\n        while (n &gt; 0) {\n            System.out.println(&quot;\u0442\u0430\u043a\u0442 &quot; + n);\n            n--;\n        }\n    }\n}<\/code><\/pre>\n<p>\nPo spu\u0161t\u011bn\u00ed tento program vyp\u00ed\u0161e deset \u201etakty\u201c n\u00e1sleduj\u00edc\u00edm zp\u016fsobem:<br \/>\n<code>takt 10<br \/>\ntakt 9<br \/>\ntakt 8<br \/>\ntakt 7<br \/>\ntakt 6<br \/>\ntakt 5<br \/>\ntakt 4<br \/>\ntakt 3<br \/>\ntakt 2<br \/>\ntakt 1<\/code><\/p><\/blockquote>\n<p>\nP\u0159\u00edstup s popisem \u0161ablony, p\u0159\u00edkladu programu a v\u00fdsledku jeho pr\u00e1ce se pou\u017e\u00edv\u00e1 tak\u00e9 v knize \u201eJavascript pro d\u011bti\u201c a v kurzu js na w3schools.com. Form\u00e1t webov\u00e9 str\u00e1nky dokonce umo\u017e\u0148uje ud\u011blat tento p\u0159\u00edklad interaktivn\u00edm.<\/p>\n<p>V knize Stroustrupa \u201ePrincipy a praxe pou\u017e\u00edv\u00e1n\u00ed C++\u201c z roku 2016 autor za\u0161el je\u0161t\u011b d\u00e1l. Nejd\u0159\u00edve se vysv\u011btl\u00ed, jak\u00fd v\u00fdsledek by m\u011bl b\u00fdt, a teprve potom se ukazuje text programu. Nav\u00edc jako p\u0159\u00edklad se nebere jen tak n\u00e1hodn\u00e1 program, ale je zde d\u00e1na exkurze do historie. To pom\u00e1h\u00e1 zam\u011b\u0159it pozornost na to \u201ePod\u00edvej, to nen\u00ed oby\u010dejn\u00fd bezcenn\u00fd text. Vid\u00ed\u0161 n\u011bco v\u00fdznamn\u00e9ho\u201c.<\/p>\n<blockquote><p>Jako p\u0159\u00edklad iterace si vezm\u011bme prvn\u00ed program, kter\u00fd byl proveden na stroji se stored program (EDSAC). Napsal ho David Wheeler v po\u010d\u00edta\u010dov\u00e9 laborato\u0159i Cambridge University v Anglii 6. kv\u011btna 1949. Tento program vypo\u010d\u00edt\u00e1v\u00e1 a tiskne jednoduch\u00fd seznam \u010dtverc\u016f.<br \/>\n<code>0 0<br \/>\n1 1<br \/>\n2 4<br \/>\n3 9<br \/>\n4 16<br \/>\n...<br \/>\n98 9604<br \/>\n99 9801<\/code><br \/>\nZde je v ka\u017ed\u00e9m \u0159\u00e1dku \u010d\u00edslo, za kter\u00fdm n\u00e1sleduje znak tabul\u00e1toru (&#8216;t&#8217;) a druh\u00e1 mocnina tohoto \u010d\u00edsla. Verze tohoto programu v jazyce C++ vypad\u00e1 takto:<\/p>\n<pre><code class=\"cpp\">\/\/\u0412\u044b\u0447\u0438\u0441\u043b\u044f\u0435\u043c \u0438 \u0440\u0430\u0441\u043f\u0435\u0447\u0430\u0442\u044b\u0432\u0430\u0435\u043c \u0442\u0430\u0431\u043b\u0438\u0446\u0443 \u043a\u0432\u0430\u0434\u0440\u0430\u0442\u043e\u0432 \u0447\u0438\u0441\u0435\u043b 0-99\nint main()\n{\n    int i = 0; \/\/ \u041d\u0430\u0447\u0438\u043d\u0430\u0435\u043c \u0441 \u043d\u0443\u043b\u044f\n    while(i &lt; 100){\n        cout &lt;&lt; i &lt;&lt; 't' &lt;&lt; square(i) &lt;&lt; 'n';\n        ++i;\n    }\n}<\/code><\/pre>\n<\/blockquote>\n<p>\nZaj\u00edmav\u00e9 je, \u017ee vzor syntaktick\u00e9ho z\u00e1pisu v t\u00e9to knize nen\u00ed pops\u00e1n. Stroustrup v u\u010ditelsk\u00e9m pr\u016fvodci (<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/349342\/\">p\u0159eklad<\/a><\/noindex>) zd\u016fraz\u0148uje, \u017ee respektuje inteligenci sv\u00fdch student\u016f. Mo\u017en\u00e1, \u017ee um\u011bn\u00ed odhalit vzor ve v\u00edce p\u0159\u00edkladech se pova\u017euje za projev takov\u00e9 inteligence.<\/p>\n<h4>Jak to vysv\u011btluji j\u00e1 s\u00e1m<\/h4>\n<p>\nP\u0159\u00edstup Stroustrupa: nejprve popis v\u00fdsledku, pot\u00e9 \u0159e\u0161en\u00ed \u00fakolu a pak samostatn\u00e1 anal\u00fdza studentem \u2014 vypad\u00e1 jako nejpromy\u0161len\u011bj\u0161\u00ed. Rozhodl jsem se na tomto z\u00e1kladu postavit, ale popisovat na m\u00e9n\u011b historick\u00e9m p\u0159\u00edkladu \u2014 \u00fakolu t\u00fdkaj\u00edc\u00edm se v\u00fdstupu \u201eobsahu\u201c. Ten vytv\u00e1\u0159\u00ed rozpoznateln\u00fd odkaz, abych pak mohl \u0159\u00edci \u201evzpom\u00ednej na \u00fakol o obsahu\u201c, a studenti si jej skute\u010dn\u011b vybavili. Ve sv\u00e9m p\u0159\u00edkladu jsem se pokusil varovat p\u0159ed je\u0161t\u011b dv\u011bma z nejb\u011b\u017en\u011bj\u0161\u00edch omyl\u016f. O nich budu ps\u00e1t podrobn\u011bji.<\/p>\n<blockquote><p>Na tomto \u00fakolu se seznamujeme s metodami \u0159e\u0161en\u00ed slo\u017eit\u011bj\u0161\u00edch probl\u00e9m\u016f. P\u016fvodn\u00ed \u0159e\u0161en\u00ed by m\u011blo b\u00fdt primitivn\u00ed a jednoduch\u00e9. Pot\u00e9 m\u016f\u017eeme p\u0159em\u00fd\u0161let o tom, jak toto \u0159e\u0161en\u00ed zlep\u0161it.<br \/>\n<code>\u00davod<br \/>\nKapitola 1<br \/>\nKapitola 2<br \/>\nKapitola 3<br \/>\nKapitola 4<br \/>\nKapitola 5<br \/>\nHlava 6<br \/>\nHlava 7<br \/>\nZ\u00e1v\u011br<\/code><\/p><\/blockquote>\n<p>\nPodle m\u00fdch pozorov\u00e1n\u00ed p\u0159\u00edstup \u201e\u0161ablona-p\u0159\u00edklad-v\u00fdsledek\u201c v r\u016fzn\u00fdch kombinac\u00edch stejn\u011b vede k tomu, \u017ee studenti vn\u00edmaj\u00ed smy\u010dku jako hieroglyf. Projevovalo se to t\u00edm, \u017ee nech\u00e1pali, pro\u010d tam ps\u00e1t podm\u00ednku, jak vyb\u00edrat mezi i++ a i-- a dal\u0161\u00ed takov\u00e9, zd\u00e1nliv\u011b jasn\u00e9 v\u011bci. Aby se p\u0159ede\u0161lo t\u011bmto nedorozum\u011bn\u00edm, m\u011bl by p\u0159\u00edstup k vypr\u00e1v\u011bn\u00ed o smy\u010dk\u00e1ch zd\u016fraz\u0148ovat smysl opakov\u00e1n\u00ed stejn\u00fdch \u010dinnost\u00ed a teprve potom \u2014 jejich ztv\u00e1rn\u011bn\u00ed pomoc\u00ed konstrukce. Proto ne\u017e budou d\u00e1ny syntaxe smy\u010dky, je pot\u0159eba vy\u0159e\u0161it \u00fakol \u201ep\u0159\u00edmo\u201c. Primitivn\u00ed \u0159e\u0161en\u00ed \u00fakolu o obsahu vypad\u00e1 takto:<\/p>\n<pre><code class=\"cs\">Console.WriteLine(\"\u00davod\");\nConsole.WriteLine(\"Kapitola 1\");\nConsole.WriteLine(\"Kapitola 2\");\nConsole.WriteLine(\"Kapitola 3\");\nConsole.WriteLine(\"Kapitola 4\");\nConsole.WriteLine(\"Kapitola 5\");\nConsole.WriteLine(\"Kapitola 6\");\nConsole.WriteLine(\"Kapitola 7\");\nConsole.WriteLine(\"Z\u00e1v\u011br\");\n<\/code><\/pre>\n<p>\nJak ho lze zlep\u0161it?<br \/>\nNahradit jednotv\u00e1rn\u00e9 \u00fakony cyklem.<br \/>\nJak\u00e9 \u00fakoly se zde opakuj\u00ed za sebou bez zm\u011bn?<br \/>\nV tomto \u00faryvku takov\u00e9 nejsou. Nicm\u00e9n\u011b p\u0159\u00edkazy pro v\u00fdstup slova \u201eKapitola\u201c s \u010d\u00edslem si jsou velmi podobn\u00e9.<br \/>\nProto je dal\u0161\u00edm krokem hled\u00e1n\u00ed rozd\u00edlu mezi \u00faryvky. To pr\u00e1v\u011b v tomto \u00fakolu je v\u0161echno z\u0159ejm\u00e9, pozd\u011bji se budou opakovat nikoli jednotliv\u00e9 p\u0159\u00edkazy, ale bloky k\u00f3du o 5 \u0159\u00e1dc\u00edch a v\u00edce. Hledat bude nutn\u00e9 nejen v seznamu p\u0159\u00edkaz\u016f, ale tak\u00e9 ve v\u011btven\u00ed nebo cyklech.<br \/>\nV p\u0159\u00edkladu je rozd\u00edl mezi p\u0159\u00edkazy v \u010d\u00edsle za slovem \u201eKapitola\u201c.<br \/>\nJakmile je rozd\u00edl nalezen, je t\u0159eba pochopit pravidlo zm\u011bny. Je rozd\u00edln\u00fd \u00faryvek \u010d\u00edslo? Pravideln\u011b se zvy\u0161uje nebo sni\u017euje? Jak se m\u011bn\u00ed hodnota \u010d\u00edsla mezi dv\u011bma p\u0159\u00edkazy vedle sebe?<br \/>\nV p\u0159\u00edkladu se \u010d\u00edslo za slovem \u201eHlava\u201c zvy\u0161uje o 1. Rozd\u00edl byl nalezen, byla odhalena z\u00e1konitost. Nyn\u00ed m\u016f\u017eeme nahradit odli\u0161uj\u00edc\u00ed fragment prom\u011bnnou.<br \/>\nTuto prom\u011bnnou je t\u0159eba deklarovat p\u0159ed prvn\u00edm z opakuj\u00edc\u00edch se fragment\u016f. Takov\u00e9 prom\u011bnn\u00e9 se obvykle \u0159\u00edk\u00e1 i nebo j nebo n\u011bjak\u00fdm roz\u0161\u00ed\u0159en\u011bj\u0161\u00edm zp\u016fsobem. Jej\u00ed po\u010d\u00e1te\u010dn\u00ed hodnota by m\u011bla b\u00fdt rovna prvn\u00edmu hodnot\u011b, kter\u00e1 se zobraz\u00ed na obrazovce. V p\u0159\u00edkladu je prvn\u00ed hodnota 1. <br \/>\nJakou po\u010d\u00e1te\u010dn\u00ed hodnotu je t\u0159eba vz\u00edt pro zobrazen\u00ed \u0159ady \u010d\u00edsel \u201e100, 101, 102, 103, 104, 105\u201c?<br \/>\nV t\u00e9to \u0159ad\u011b je prvn\u00edm \u010d\u00edslem 100.<br \/>\nPo ka\u017ed\u00e9m p\u0159\u00edkazu pro v\u00fdstup je pot\u0159eba zv\u00fd\u0161it hodnotu t\u00e9to prom\u011bnn\u00e9 o 1. Tato jedni\u010dka je krok zm\u011bny.<br \/>\nJak\u00fd krok bude v \u0159ad\u011b \u010d\u00edsel \u201e100, 102, 104, 106\u201c?<br \/>\nV t\u00e9to \u0159ad\u011b je krok 2.<br \/>\nPo nahrazen\u00ed odli\u0161uj\u00edc\u00edho fragmentu prom\u011bnnou bude k\u00f3d vypadat takto:<\/p>\n<pre><code class=\"cs\">Console.WriteLine(\"\u00davod\");\nint i;\ni = 0;\nConsole.WriteLine(\"Kapitola \" + i);\ni = i + 1;\nConsole.WriteLine(\"Kapitola \" + i);\ni = i + 1;\nConsole.WriteLine(\"Kapitola \" + i);\ni = i + 1;\nConsole.WriteLine(\"Kapitola \" + i);\ni = i + 1;\nConsole.WriteLine(\"Kapitola \" + i);\ni = i + 1;\nConsole.WriteLine(\"Kapitola \" + i);\ni = i + 1;\nConsole.WriteLine(\"Kapitola \" + i);\ni = i + 1;\nConsole.WriteLine(\"Z\u00e1v\u011br\");\n<\/code><\/pre>\n<p>\nPo pou\u017eit\u00ed p\u0159\u00edstupu \u201evyj\u00e1d\u0159it z\u00e1konitost prom\u011bnnou\u201c z\u00edsk\u00e1me v k\u00f3du n\u011bkolik skupin stejn\u00fdch akc\u00ed, kter\u00e9 jdou za sebou. Nyn\u00ed lze opakuj\u00edc\u00ed se akce nahradit cyklem.<\/p>\n<p>Postup \u0159e\u0161en\u00ed \u00fakolu, kde je pot\u0159eba pou\u017e\u00edt cykly, se skl\u00e1d\u00e1 z etap:<\/p>\n<ol>\n<li>\u0158e\u0161it \u201ehlavou\u201c pomoc\u00ed mnoha jednotliv\u00fdch p\u0159\u00edkaz\u016f<\/li>\n<li>Naj\u00edt z\u00e1konitost<\/li>\n<li>Vyj\u00e1d\u0159it z\u00e1konitost prom\u011bnnou<\/li>\n<li>Upravit do podoby cyklu<\/li>\n<\/ol>\n<p>D\u00e1le se zav\u00e1d\u011bj\u00ed nov\u00e9 term\u00edny, aby student nebyl v situaci \u201ev\u0161echno rozum\u00edm, ale \u0159\u00edct nemohu\u201c:<br \/>\n \u2014 \u010d\u00edta\u010d \u2014 v\u017edy prom\u011bnn\u00e1, kter\u00e1 je pot\u0159ebn\u00e1 pro sledov\u00e1n\u00ed po\u010dtu krok\u016f cyklu. Obvykle cel\u00e9 \u010d\u00edslo, kter\u00e9 se porovn\u00e1v\u00e1 s omezen\u00edm.<br \/>\n \u2014 krok \u010d\u00edta\u010de \u2014 popis z\u00e1konitosti zm\u011bny \u010d\u00edta\u010de.<br \/>\n \u2014 omezen\u00ed \u2014 \u010d\u00edslo nebo prom\u011bnn\u00e1, se kterou se \u010d\u00edta\u010d porovn\u00e1v\u00e1, aby algoritmus byl kone\u010dn\u00fd. Hodnota \u010d\u00edta\u010de se m\u011bn\u00ed tak, aby se p\u0159ibli\u017eovala k omezen\u00ed.<br \/>\n \u2014 t\u011blo cyklu \u2014 soubor p\u0159\u00edkaz\u016f, kter\u00e9 se budou opakovat. Kdy\u017e se \u0159\u00edk\u00e1 \u201ep\u0159\u00edkaz naps\u00e1n uvnit\u0159 cyklu\u201c, m\u00edn\u00ed se pr\u00e1v\u011b t\u011blo.<br \/>\n \u2014 iterace cyklu \u2014 jednor\u00e1zov\u00e9 proveden\u00ed t\u011bla cyklu.<br \/>\n \u2014 podm\u00ednka cyklu \u2014 logick\u00fd v\u00fdraz, od kter\u00e9ho z\u00e1vis\u00ed, zda bude provedena dal\u0161\u00ed iterace. (Zde m\u016f\u017ee doj\u00edt k z\u00e1m\u011bn\u011b s v\u011btvovac\u00edmi konstrukcemi)<br \/>\nJe pot\u0159eba b\u00fdt p\u0159ipraven na to, \u017ee v prvn\u00edch chv\u00edl\u00edch studenti nebudou pou\u017e\u00edvat term\u00edny spr\u00e1vn\u011b. To plat\u00ed jak pro siln\u00e9, tak pro slab\u00e9. Vytvo\u0159en\u00ed spole\u010dn\u00e9ho jazyka je cel\u00e9 um\u011bn\u00ed. Te\u010f to nap\u00ed\u0161u stru\u010dn\u011b: je pot\u0159eba stanovit \u00fakol \u201evyber fragment k\u00f3du s \u201c a s\u00e1m tyto term\u00edny spr\u00e1vn\u011b pou\u017e\u00edvat v konverzaci.<br \/>\nPo transformaci s cyklem dost\u00e1v\u00e1me fragment:<\/p>\n<pre><code class=\"cs\">Console.WriteLine(\"\u00davod\");\nint i = 0;\nwhile (i &lt; 7) {\n    Console.WriteLine(&quot;Kapitola &quot; + i);\n    i = i + 1;\n}\nConsole.WriteLine(&quot;Z\u00e1v\u011br&quot;);<\/code><\/pre>\n<h4>Hlavn\u00ed omyl<\/h4>\n<p>\nJedno z popul\u00e1rn\u00edch omyl\u016f student\u016f je, \u017ee do konstrukce cyklu um\u00eds\u0165uj\u00ed akce, kter\u00e9 je pot\u0159eba prov\u00e9st jen jednou. Nap\u0159\u00edklad takto:<\/p>\n<pre><code class=\"cs\">;\nint i = 0;\nwhile (i &lt; 7) {\n    Console.WriteLine(&quot;\u00davod&quot;)\n    Console.WriteLine(&quot;Kapitola &quot; + i);\n    i = i + 1;\n    Console.WriteLine(&quot;Z\u00e1v\u011br&quot;);\n}\n<\/code><\/pre>\n<p>\n\u017d\u00e1ci se neust\u00e1le s touto probl\u00e9mou setk\u00e1vaj\u00ed jak na za\u010d\u00e1tku, tak v slo\u017eit\u011bj\u0161\u00edch \u00faloh\u00e1ch.<br \/>\nKl\u00ed\u010dov\u00e1 rada v tomto p\u0159\u00edpad\u011b:<\/p>\n<blockquote><p>Kolikr\u00e1t je pot\u0159eba ps\u00e1t p\u0159\u00edkaz: jednou nebo mnohokr\u00e1t?\n<\/p><\/blockquote>\n<p>\nP\u0159\u00edkazy pro v\u00fdstup slov \"\u00davod\" a \"Z\u00e1v\u011br\", stejn\u011b jako deklarace a inicializace prom\u011bnn\u00e9 i, se neli\u0161\u00ed od ostatn\u00edch opakovan\u00fdch akc\u00ed. Provedou se jednou, tak\u017ee je pot\u0159eba je napsat mimo t\u011blo cyklu.<\/p>\n<p>V k\u00f3du by m\u011bly z\u016fstat v\u0161echny t\u0159i f\u00e1ze \u0159e\u0161en\u00ed, abychom se na n\u011b mohli pozd\u011bji odvol\u00e1vat v p\u0159\u00edpad\u011b pot\u00ed\u017e\u00ed. Prvn\u00ed dv\u011b varianty sta\u010d\u00ed okomentovat, aby nep\u0159ek\u00e1\u017eely.<br \/>\nPozornost studenta by m\u011bla b\u00fdt zam\u011b\u0159ena na n\u00e1sleduj\u00edc\u00ed fakta:<br \/>\n \u2014 V podm\u00ednce cyklu se obvykle porovn\u00e1v\u00e1 \u010d\u00edta\u010d a omezen\u00ed. \u010c\u00edta\u010d se m\u016f\u017ee m\u011bnit v t\u011ble cyklu, ale omezen\u00ed ne. K poru\u0161en\u00ed tohoto pravidla je pot\u0159eba m\u00edt p\u00e1dn\u00e9 d\u016fvody.<br \/>\n \u2014 P\u0159\u00edkazy pro v\u00fdstup slov \"\u00davod\" a \"Z\u00e1v\u011br\" jsou mimo t\u011blo cyklu. Tyto mus\u00edme vykonat jednou. \"\u00davod\" \u2014 p\u0159ed opakov\u00e1n\u00edm akce, \"Z\u00e1v\u011br\" \u2014 po n\u011bm.<br \/>\nV procesu upev\u0148ov\u00e1n\u00ed t\u00e9to t\u00e9matiky, osvojov\u00e1n\u00ed n\u00e1sleduj\u00edc\u00edch a tak\u00e9 p\u0159i objas\u0148ov\u00e1n\u00ed obt\u00ed\u017e\u00ed je i siln\u00fdm student\u016fm prosp\u011b\u0161n\u00e9 kl\u00e1st ot\u00e1zku: \u201eA kolikr\u00e1t je pot\u0159eba tuto akci vykonat? Jednou nebo mnohokr\u00e1t?\u201c<\/p>\n<h4>Rozvoj dal\u0161\u00edch dovednost\u00ed<\/h4>\n<p>\nP\u0159i studiu cykl\u016f si studenti st\u00e1le procvi\u010duj\u00ed dovednosti diagnostiky a \u0159e\u0161en\u00ed probl\u00e9m\u016f. Pro proveden\u00ed diagnostiky mus\u00ed student p\u0159edstavit po\u017eadovan\u00fd v\u00fdsledek a porovnat ho se skute\u010dn\u00fdm v\u00fdsledkem. Od rozd\u00edlu mezi nimi z\u00e1vis\u00ed kroky k n\u00e1prav\u011b.<br \/>\nJeliko\u017e si studenti v t\u00e9to f\u00e1zi je\u0161t\u011b \u0161patn\u011b p\u0159edstavuj\u00ed \u201epo\u017eadovan\u00fd\u201c v\u00fdsledek, mohou se \u0159\u00eddit testovac\u00edmi daty. Obvykle nikdo v t\u00e9to f\u00e1zi je\u0161t\u011b nech\u00e1pe, co se m\u016f\u017ee pokazit a jak s t\u00edm bojovat. Proto p\u00ed\u0161u do se\u0161itu popis typick\u00fdch probl\u00e9m\u016f a n\u011bkolik zp\u016fsob\u016f jejich \u0159e\u0161en\u00ed. V\u00fdb\u011br nejvhodn\u011bj\u0161\u00edho z nich je \u00fakolem samotn\u00e9ho studenta.<br \/>\nZaznamen\u00e1n\u00ed je d\u016fle\u017eit\u00e9, abychom se mohli pt\u00e1t \u201edos\u00e1hli jsme toho, co jsme o\u010dek\u00e1vali?\u201c, \u201eJak\u00e1 z t\u011bchto situac\u00ed se nyn\u00ed stala?\u201c, \u201ePomohlo p\u0159ijat\u00e9 \u0159e\u0161en\u00ed?\u201c.<\/p>\n<ol>\n<li>Po\u010det akc\u00ed je o 1 men\u0161\u00ed nebo v\u011bt\u0161\u00ed, ne\u017e se o\u010dek\u00e1valo. Zp\u016fsoby \u0159e\u0161en\u00ed:<br \/>\n \u2014 zv\u00fd\u0161it po\u010d\u00e1te\u010dn\u00ed hodnotu \u010d\u00edta\u010de o 1.<br \/>\n \u2014 nahradit p\u0159\u00edsn\u00fd oper\u00e1tor porovn\u00e1n\u00ed () na uvoln\u011bn\u00fd (=).<br \/>\n \u2014 zm\u011bnit hodnotu limitu na 1.<\/li>\n<li>Akce v cyklu se prov\u00e1d\u011bj\u00ed bez zastaven\u00ed, nekone\u010dn\u011b. Zp\u016fsoby \u0159e\u0161en\u00ed:<br \/>\n \u2014 p\u0159idat p\u0159\u00edkaz ke zm\u011bn\u011b \u010d\u00edta\u010de, pokud chyb\u00ed.<br \/>\n \u2014 opravit p\u0159\u00edkaz ke zm\u011bn\u011b \u010d\u00edta\u010de tak, aby se jeho hodnota p\u0159ibli\u017eovala k limitu.<br \/>\n \u2014 odstranit p\u0159\u00edkaz ke zm\u011bn\u011b limitu, pokud je v t\u011ble cyklu.<\/li>\n<li>Po\u010det akc\u00ed v cyklu je o v\u00edce ne\u017e 1 men\u0161\u00ed nebo v\u011bt\u0161\u00ed, ne\u017e se o\u010dek\u00e1valo. Akce v cyklu nebyla provedena ani jednou. Nejprve je t\u0159eba zjistit skute\u010dn\u00e9 hodnoty prom\u011bnn\u00fdch t\u011bsn\u011b p\u0159ed za\u010d\u00e1tkem cyklu. Zp\u016fsoby \u0159e\u0161en\u00ed:<br \/>\n \u2014 zm\u011bnit po\u010d\u00e1te\u010dn\u00ed hodnotu limitu<br \/>\n \u2014 zm\u011bnit po\u010d\u00e1te\u010dn\u00ed hodnotu \u010d\u00edta\u010de<\/li>\n<\/ol>\n<p>\nObvykle je probl\u00e9m 3 spojen s pou\u017eit\u00edm \u0161patn\u00e9 prom\u011bnn\u00e9 nebo nezresetov\u00e1n\u00edm \u010d\u00edta\u010de.<\/p>\n<p>Po tomto vysv\u011btlen\u00ed mohou m\u00edt studenti st\u00e1le r\u016fzn\u00e1 myln\u00e1 p\u0159esv\u011bd\u010den\u00ed ohledn\u011b funkce cykl\u016f.<br \/>\nAbych vyvr\u00e1til nejb\u011b\u017en\u011bj\u0161\u00ed, d\u00e1v\u00e1m \u00fakoly:<\/p>\n<ol>\n<li>V kter\u00e9 limit, po\u010d\u00e1te\u010dn\u00ed hodnota \u010d\u00edta\u010de nebo krok \u010d\u00edta\u010de je zad\u00e1n u\u017eivatelem.<\/li>\n<li>V kter\u00e9 je t\u0159eba pou\u017e\u00edt hodnotu \u010d\u00edta\u010de v n\u011bjak\u00e9m aritmetick\u00e9m v\u00fdrazu. Je \u017e\u00e1douc\u00ed, aby \u010d\u00edta\u010d byl v podru\u010dn\u00edm v\u00fdrazu nebo ve jmenovateli, aby byla rozd\u00edl nelini\u00e1rn\u00ed.<\/li>\n<li>Kde se hodnota \u010d\u00edta\u010de nezobrazuje na obrazovce b\u011bhem b\u011bhu cyklu. Nap\u0159\u00edklad k v\u00fdstupu pot\u0159ebn\u00e9ho po\u010dtu stejn\u00fdch fragment\u016f textu nebo k nakreslen\u00ed figura pomoc\u00ed \u017eelv\u00ed grafiky.<\/li>\n<li>Kde je t\u0159eba nejprve prov\u00e9st n\u011bkter\u00e9 opakuj\u00edc\u00ed se akce a pot\u00e9 jin\u00e9.<\/li>\n<li>Kde je t\u0159eba prov\u00e9st dal\u0161\u00ed akce p\u0159ed a po opakuj\u00edc\u00edch se.<\/li>\n<\/ol>\n<p>\nPro ka\u017ed\u00fd \u00fakol je t\u0159eba poskytnout testovac\u00ed data a o\u010dek\u00e1van\u00fd v\u00fdsledek.<\/p>\n<p>Abychom pochopili, jak rychle m\u016f\u017eeme postoupit, mus\u00edme nechat p\u0159e\u010d\u00edst podm\u00ednky t\u011bchto \u00fakol\u016f a zeptat se: \u201e\u010c\u00edm se li\u0161\u00ed od p\u0159\u00edkladu?\u201c, \u201eCo je t\u0159eba zm\u011bnit v p\u0159\u00edkladu, abychom je vy\u0159e\u0161ili?\u201c. Pokud student smyslupln\u011b odpov\u00ed, pak a\u0165 vy\u0159e\u0161\u00ed alespo\u0148 jeden na hodin\u011b, ostatn\u00ed a\u0165 d\u011bl\u00e1 doma s\u00e1m. Pokud bude \u0159e\u0161en\u00ed \u00fasp\u011b\u0161n\u00e9, m\u016f\u017eeme za\u010d\u00edt vysv\u011btlovat podm\u00ednky uvnit\u0159 cykl\u016f.<br \/>\nPokud se student\u016fm obt\u00ed\u017en\u011b hled\u00e1 samostatn\u00e9 \u0159e\u0161en\u00ed, je t\u0159eba v\u0161e procvi\u010dit na hodin\u011b. Aby \u0159e\u0161en\u00ed \u00fakolu nep\u0159ipom\u00ednalo kreslen\u00ed sovy, doporu\u010duji nejprve vy\u0159e\u0161it \u00fakol neunivers\u00e1ln\u011b. To znamen\u00e1 tak, aby \u0159e\u0161en\u00ed pro\u0161lo prvn\u00edm testem a nepou\u017e\u00edvalo konstrukci cyklu. A pot\u00e9 ji\u017e aplikovat transformace, aby bylo dosa\u017eeno univerz\u00e1lnosti \u0159e\u0161en\u00ed.<\/p>\n<h4>Cyklus a v\u011btven\u00ed<\/h4>\n<p>\nPodle m\u00e9ho n\u00e1zoru je u\u017eite\u010dn\u00e9 d\u00e1t t\u00e9ma \u201ecykly uvnit\u0159 v\u011btven\u00ed\u201c zvl\u00e1\u0161\u0165. Aby bylo n\u00e1sledn\u011b vid\u011bt rozd\u00edl mezi v\u00edcen\u00e1sobnou kontrolou podm\u00ednky a jednor\u00e1zovou.<br \/>\n\u00dakoly pro upevn\u011bn\u00ed budou o v\u00fdstupu \u010d\u00edsel od A do B, kter\u00e9 zad\u00e1v\u00e1 u\u017eivatel:<br \/>\n \u2014 v\u017edy v rostouc\u00edm po\u0159ad\u00ed.<br \/>\n \u2014 v rostouc\u00edm nebo klesaj\u00edc\u00edm po\u0159ad\u00ed v z\u00e1vislosti na hodnot\u00e1ch A a B.<\/p>\n<p>K t\u00e9matu \u201ev\u011btven\u00ed uvnit\u0159 cykl\u016f\u201c je nutn\u00e9 p\u0159ej\u00edt a\u017e pot\u00e9, co student zvl\u00e1dl techniky: \u201enahrazen\u00ed z\u00e1konitosti prom\u011bnnou\u201c a \"nahrazen\u00ed opakovan\u00fdch akc\u00ed cyklem\".<br \/>\nHlavn\u00ed d\u016fvod pro pou\u017eit\u00ed v\u011btven\u00ed uvnit\u0159 cykl\u016f je anom\u00e1lie v pravidelnosti. Uprost\u0159ed se rozru\u0161uje v z\u00e1vislosti na vstupn\u00edch datech.<br \/>\nT\u011bm student\u016fm, kte\u0159\u00ed jsou schopni hledat \u0159e\u0161en\u00ed kombinov\u00e1n\u00edm jednoduch\u00fdch technik, sta\u010d\u00ed \u0159\u00edct \u201ev\u011btven\u00ed lze ps\u00e1t uvnit\u0159 cykl\u016f\u201c a d\u00e1t \u00fakol \u201epro p\u0159\u00edklad\u201c zcela k samostatn\u00e9mu \u0159e\u0161en\u00ed.<br \/>\nP\u0159\u00edklad \u00fakolu:<\/p>\n<blockquote><p>U\u017eivatel zad\u00e1v\u00e1 \u010d\u00edslo X. Vypi\u0161te ve sloupci \u010d\u00edsla od 0 do 9 a um\u00edst\u011bte znak '+' vedle \u010d\u00edsla, kter\u00e9 se rovn\u00e1 X.<\/p><\/blockquote>\n<p>\n<b class=\"spoiler_title\">Pokud bylo zad\u00e1no 0<\/b>0+<br \/>\n1<br \/>\n2<br \/>\n3<br \/>\n4<br \/>\n5<br \/>\n6<br \/>\n7<br \/>\n8<br \/>\n9<\/p>\n<p><b class=\"spoiler_title\">Pokud bylo zad\u00e1no 6<\/b>0<br \/>\n1<br \/>\n2<br \/>\n3<br \/>\n4<br \/>\n5<br \/>\n6+<br \/>\n7<br \/>\n8<br \/>\n9<\/p>\n<p><b class=\"spoiler_title\">Pokud bylo zad\u00e1no 9<\/b>0<br \/>\n1<br \/>\n2<br \/>\n3<br \/>\n4<br \/>\n5<br \/>\n6<br \/>\n7<br \/>\n8<br \/>\n9+<\/p>\n<p><b class=\"spoiler_title\">Pokud bylo zad\u00e1no 777<\/b>0<br \/>\n1<br \/>\n2<br \/>\n3<br \/>\n4<br \/>\n5<br \/>\n6<br \/>\n7<br \/>\n8<br \/>\n9<\/p>\n<p>Pokud nen\u00ed dostate\u010dn\u00e9 kr\u00e1tk\u00e9 vysv\u011btlen\u00ed, jak napsat s cyklem, je nutn\u00e9 dos\u00e1hnout univerz\u00e1ln\u00edho \u0159e\u0161en\u00ed t\u00e9to \u00falohy bez cyklu.<br \/>\nBude existovat jedna ze dvou mo\u017enost\u00ed:<br \/>\n<b class=\"spoiler_title\">Po\u017eadovan\u00e9<\/b><\/p>\n<pre><code class=\"cs\">string temp;\ntemp = Console.ReadLine();\nint x;\nx = int.Parse(temp);\nif (x==0) {\n    Console.WriteLine(0 + \"+\");\n} else {\n    Console.WriteLine(0);\n}\nif (x==1) {\n    Console.WriteLine(1 + \"+\");\n} else {\n    Console.WriteLine(1);\n}\nif (x==2) {\n    Console.WriteLine(2 + \"+\");\n} else {\n    Console.WriteLine(2);\n}\nif (x==3) {\n    Console.WriteLine(3 + \"+\");\n} else {\n    Console.WriteLine(3);\n}\nif (x==4) {\n    Console.WriteLine(4 + \"+\");\n} else {\n    Console.WriteLine(4);\n}\nif (x==5) {\n    Console.WriteLine(5 + \"+\");\n} else {\n    Console.WriteLine(5);\n}\nif (x==6) {\n    Console.WriteLine(6 + \"+\");\n} else {\n    Console.WriteLine(6);\n}\nif (x==7) {\n    Console.WriteLine(7 + \"+\");\n} else {\n    Console.WriteLine(7);\n}\nif (x==8) {\n    Console.WriteLine(8 + \"+\");\n} else {\n    Console.WriteLine(8);\n}\nif (x==9) {\n    Console.WriteLine(9 + \"+\");\n} else {\n    Console.WriteLine(9);\n}\n<\/code><\/pre>\n<p><b class=\"spoiler_title\">Mo\u017en\u00fd<\/b><\/p>\n<pre><code class=\"cs\">string temp;\ntemp = Console.ReadLine();\nint x;\nx = int.Parse(temp);\nif (x==0) {\n    Console.WriteLine(\"0+n1n2n3n4n5n6n7n8n9\");\n}\nif (x==1) {\n    Console.WriteLine(\"0n1+n2n3n4n5n6n7n8n9\");\n}\nif (x==2) {\n    Console.WriteLine(\"0n1n2+n3n4n5n6n7n8n9\");\n}\nif (x==3) {\n    Console.WriteLine(\"0n1n2n3+n4n5n6n7n8n9\");\n}\nif (x==4) {\n    Console.WriteLine(\"0n1n2n3n4+n5n6n7n8n9\");\n}\nif (x==5) {\n    Console.WriteLine(\"0n1n2n3n4n5+n6n7n8n9\");\n}\nif (x==6) {\n    Console.WriteLine(\"0n1n2n3n4n5n6+n7n8n9\");\n}\nif (x==7) {\n    Console.WriteLine(\"0n1n2n3n4n5n6n7+n8n9\");\n}\nif (x==8) {\n    Console.WriteLine(\"0n1n2n3n4n5n6n7n8+n9\");\n}\nif (x==9) {\n    Console.WriteLine(\"0n1n2n3n4n5n6n7n8n9+\");\n}\n<\/code><\/pre>\n<p>Podobnou \u00falohu d\u00e1v\u00e1m dop\u0159edu b\u011bhem studia t\u00e9matu o v\u011btven\u00ed.<br \/>\nPokud student dos\u00e1hl \"mo\u017en\u00e9ho\" v\u00fdsledku, m\u011bl by v\u011bd\u011bt, \u017ee pro stejnou \u00falohu m\u016f\u017ee existovat v\u00edce \u0159e\u0161en\u00ed. Nicm\u00e9n\u011b se li\u0161\u00ed odolnost\u00ed v\u016f\u010di zm\u011bn\u00e1m po\u017eadavk\u016f. Zeptejte se: \u201eKolikr\u00e1t v k\u00f3du bude pot\u0159eba upravit, pokud p\u0159id\u00e1me dal\u0161\u00ed \u010d\u00edslo?\u201c V \"mo\u017en\u00e9\" variant\u011b bude nutn\u00e9 p\u0159idat dal\u0161\u00ed v\u011btven\u00ed a napsat nov\u00e9 \u010d\u00edslo na 10 jin\u00fdch m\u00edstech. V \"po\u017eadovan\u00e9m\" sta\u010d\u00ed p\u0159idat jen jedno v\u011btven\u00ed.<br \/>\nStanovte \u00fakol reprodukovat \"po\u017eadovanou\" variantu, pot\u00e9 najd\u011bte v k\u00f3du vzorec, prove\u010fte v\u00fdm\u011bnu prom\u011bnn\u00e9 a napi\u0161te cyklus.<br \/>\nPokud m\u00e1te n\u00e1pad, jak tuto \u00falohu vy\u0159e\u0161it bez cyklu n\u011bjak\u00fdm jin\u00fdm zp\u016fsobem, pros\u00edm, napi\u0161te to do koment\u00e1\u0159\u016f.<\/p>\n<h4>Cykly uvnit\u0159 cykl\u016f<\/h4>\n<p>\nV tomto t\u00e9matu je t\u0159eba v\u011bnovat pozornost tomu, \u017ee:<br \/>\n \u2014 po\u010ditadla pro vnit\u0159n\u00ed a vn\u011bj\u0161\u00ed cyklus by m\u011bla b\u00fdt odli\u0161n\u00fdmi prom\u011bnn\u00fdmi.<br \/>\n \u2014 Po\u010d\u00edtadlo pro vnit\u0159n\u00ed cyklus je t\u0159eba nulovat mnohokr\u00e1t (tedy v t\u011ble vn\u011bj\u0161\u00edho cyklu).<br \/>\n V \u00faloh\u00e1ch pro v\u00fdstup textu nen\u00ed mo\u017en\u00e9 nejprve napsat jedno p\u00edsmeno na n\u011bkolik \u0159\u00e1dk\u016f a pot\u00e9 druh\u00e9. Nejprve je nutn\u00e9 vypsat v\u0161echna p\u00edsmena z prvn\u00edho \u0159\u00e1dku, pot\u00e9 v\u0161echna p\u00edsmena z druh\u00e9ho a tak d\u00e1le.<\/p>\n<p>Vysv\u011btlen\u00ed t\u00e9matu o cyklech uvnit\u0159 cykl\u016f je nejlep\u0161\u00ed za\u010d\u00edt vysv\u011btlen\u00edm d\u016fle\u017eitosti nulov\u00e1n\u00ed \u010d\u00edta\u010de.<br \/>\nP\u0159\u00edklad \u00fakolu:<\/p>\n<blockquote><p>U\u017eivatel zad\u00e1v\u00e1 dv\u011b \u010d\u00edsla: R a T. Vypi\u0161te dva \u0159\u00e1dky znak\u016f \"#\". V prvn\u00edm \u0159\u00e1dku by m\u011blo b\u00fdt R kus\u016f znak\u016f. Ve druh\u00e9m \u0159\u00e1dku T kus\u016f. Pokud bude n\u011bjak\u00e9 \u010d\u00edslo z\u00e1porn\u00e9, zobrazte chybov\u00e9 hl\u00e1\u0161en\u00ed.<\/p><\/blockquote>\n<p>\n<b class=\"spoiler_title\">R=5, T=11<\/b>#####<br \/>\n###########<\/p>\n<p><b class=\"spoiler_title\">R=20, T=3<\/b>####################<br \/>\n###<\/p>\n<p><b class=\"spoiler_title\">R=-1, T=6<\/b>Hodnota R mus\u00ed b\u00fdt nez\u00e1porn\u00e1<\/p>\n<p><b class=\"spoiler_title\">R=6, T=-2<\/b>Hodnota T mus\u00ed b\u00fdt nez\u00e1porn\u00e1<\/p>\n<p>Je z\u0159ejm\u00e9, \u017ee tato \u00faloha m\u00e1 tak\u00e9 minim\u00e1ln\u011b dv\u011b varianty \u0159e\u0161en\u00ed.<br \/>\n<b class=\"spoiler_title\">Po\u017eadovan\u00e9<\/b><\/p>\n<pre><code class=\"cs\">string temp;\nint R;\nint T;\ntemp = Console.ReadLine();\nR = int.Parse(temp);\ntemp = Console.ReadLine();\nT = int.Parse(temp);\nint i = 0;\nwhile (i &lt; R)\n{\n    Console.Write(&quot;#&quot;);\n    i = i + 1;\n}\nConsole.WriteLine();\ni = 0;\nwhile (i &lt; T)\n{\n    Console.Write(&quot;#&quot;);\n    i = i + 1;\n}\n<\/code><\/pre>\n<p><b class=\"spoiler_title\">Varianta \u010d. 1<\/b><\/p>\n<pre><code class=\"cs\">string temp;\nint R;\nint T;\ntemp = Console.ReadLine();\nR = int.Parse(temp);\ntemp = Console.ReadLine();\nT = int.Parse(temp);\nint i = 0;\nwhile (i &lt; R)\n{\n    Console.Write(&quot;#&quot;);\n    i = i + 1;\n}\nConsole.WriteLine();\nint j = 0;\nj = 0;\nwhile (j &lt; T)\n{\n    Console.Write(&quot;#&quot;);\n    j = j + 1;\n}\n<\/code><\/pre>\n<p>Rozd\u00edl spo\u010d\u00edv\u00e1 v tom, \u017ee v \"mo\u017en\u00e9m\" \u0159e\u0161en\u00ed pro v\u00fdstup druh\u00e9ho \u0159\u00e1dku byla pou\u017eita druh\u00e1 prom\u011bnn\u00e1. Je t\u0159eba prosazovat pou\u017eit\u00ed stejn\u00e9 prom\u011bnn\u00e9 pro oba cykly. Takov\u00e9 omezen\u00ed lze od\u016fvodnit t\u00edm, \u017ee \u0159e\u0161en\u00ed s jedn\u00edm \u010d\u00edta\u010dem pro dva cykly bude ilustrac\u00ed term\u00ednu \"nulov\u00e1n\u00ed \u010d\u00edta\u010de\". Porozum\u011bn\u00ed tomuto term\u00ednu je nutn\u00e9 p\u0159i \u0159e\u0161en\u00ed n\u00e1sleduj\u00edc\u00edch \u00faloh. Jako kompromis je mo\u017en\u00e9 uchovat ob\u011b \u0159e\u0161en\u00ed \u00falohy.<\/p>\n<p>Typick\u00fd probl\u00e9m s pou\u017eit\u00edm jedn\u00e9 prom\u011bnn\u00e9-\u010dita\u010de pro dva cykly se projevuje takto:<br \/>\n<b class=\"spoiler_title\">R=5, T=11<\/b>#####<br \/>\n######<\/p>\n<p>Po\u010det symbol\u016f ve druh\u00e9m \u0159\u00e1dku neodpov\u00edd\u00e1 hodnot\u011b T. Pokud pot\u0159ebujete pomoc s t\u00edmto probl\u00e9mem, je nutn\u00e9 \"uk\u00e1zat nos\" do n\u00e1\u010drtu o typick\u00fdch probl\u00e9mech s cykly. To je symptom \u010d. 3. Diagnostikuje se, pokud p\u0159id\u00e1te v\u00fdstup hodnoty \u010d\u00edta\u010de t\u011bsn\u011b p\u0159ed druh\u00fdm cyklem. Opraveno nulov\u00e1n\u00edm. Ale to je lep\u0161\u00ed hned ne\u0159\u00edkat. Student by se m\u011bl pokusit formulovat alespo\u0148 jednu hypot\u00e9zu.<\/p>\n<p>Existuje samoz\u0159ejm\u011b tak\u00e9 takov\u00e1 varianta \u0159e\u0161en\u00ed. Ale j\u00e1 ji u student\u016f nikdy nevid\u011bl. V f\u00e1zi studia cykl\u016f by vypr\u00e1v\u011bn\u00ed o n\u00ed rozptylovalo pozornost. K tomu se m\u016f\u017eeme vr\u00e1tit pozd\u011bji, p\u0159i studiu funkc\u00ed pr\u00e1ce se \u0159et\u011bzci.<br \/>\n<b class=\"spoiler_title\">Varianta \u010d. 2<\/b><\/p>\n<pre><code class=\"cs\">string temp;\nint R;\nint T;\ntemp = Console.ReadLine();\nR = int.Parse(temp);\ntemp = Console.ReadLine();\nT = int.Parse(temp);\nConsole.WriteLine(new String('#', R));\nConsole.WriteLine(new String('#', T));\n<\/code><\/pre>\n<p>\nN\u00e1sleduj\u00edc\u00ed povinn\u00fd \u00fakol:<\/p>\n<blockquote><p>Na obrazovku vypi\u0161te \u010d\u00edslice od 0 do 9. Ka\u017ed\u00e1 \u010d\u00edslice by m\u011bla b\u00fdt na sv\u00e9m \u0159\u00e1dku. Po\u010det \u010d\u00edslic na \u0159\u00e1dku (W) se zad\u00e1v\u00e1 z kl\u00e1vesnice.<\/p><\/blockquote>\n<p>\n<b class=\"spoiler_title\">W=1<\/b>0<br \/>\n1<br \/>\n2<br \/>\n3<br \/>\n4<br \/>\n5<br \/>\n6<br \/>\n7<br \/>\n8<br \/>\n9<\/p>\n<p><b class=\"spoiler_title\">W=10<\/b><code>0000000000<br \/>\n1111111111<br \/>\n2222222222<br \/>\n3333333333<br \/>\n4444444444<br \/>\n5555555555<br \/>\n6666666666<br \/>\n7777777777<br \/>\n8888888888<br \/>\n9999999999<\/code><\/p>\n<p>Pokud student ovl\u00e1dl p\u0159\u00edstup s nahrazen\u00edm prom\u011bnn\u00e9, zvl\u00e1dne to docela rychle. Mo\u017en\u00fd probl\u00e9m znovu bude s nulov\u00e1n\u00edm prom\u011bnn\u00e9. Pokud si neporad\u00edte s p\u0159evodem, znamen\u00e1 to, \u017ee jste sp\u011bchali a je pot\u0159eba vy\u0159e\u0161it jednodu\u0161\u0161\u00ed \u00fakoly.<\/p>\n<p>D\u011bkuji za pozornost. Dejte like, p\u0159ihlaste se k kan\u00e1lu.<\/p>\n<p>P.S. Pokud jste na\u0161li p\u0159eklepy nebo chyby v textu, pros\u00edm, dejte mi v\u011bd\u011bt. To lze ud\u011blat zv\u00fdrazn\u011bn\u00edm \u010d\u00e1sti textu a stisknut\u00edm na Macu \u201e\u2318 + Enter\u201c, nebo na klasick\u00fdch kl\u00e1vesnic\u00edch \u201eCtrl \/ Enter\u201c, p\u0159\u00edpadn\u011b prost\u0159ednictv\u00edm soukrom\u00fdch zpr\u00e1v. Pokud tyto mo\u017enosti nejsou k dispozici, napi\u0161te o chyb\u00e1ch do koment\u00e1\u0159\u016f. D\u011bkuji!<\/p>\n<p class=\"for_users_only_msg\">Pouze registrovan\u00ed u\u017eivatel\u00e9 se mohou \u00fa\u010dastnit ankety. <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/auth\/login\/\">P\u0159ihlaste se<\/a><\/noindex>, pros\u00edm.<\/p>\n<h2 class=\"default-block__polling-title\">Anketa pro \u010dten\u00e1\u0159e bez karmy<\/h2>\n<ul class=\"poll-result\">\n<li class=\"poll-result__item\">\n<p>                <strong class=\"poll-result__data-percent\">20,0%<\/strong>U\u010d\u00edm profesion\u00e1ln\u011b, +12<\/p>\n<\/li>\n<li class=\"poll-result__item\">\n<p>                <strong class=\"poll-result__data-percent\">10,0%<\/strong>U\u010d\u00edm profesion\u00e1ln\u011b, -11<\/p>\n<\/li>\n<li class=\"poll-result__item\">\n<p>                <strong class=\"poll-result__data-percent  poll-result__data-percent_winner\">70,0%<\/strong>Neu\u010d\u00edm, +17<\/p>\n<\/li>\n<li class=\"poll-result__item\">\n<p>                <strong class=\"poll-result__data-percent\">0,0%<\/strong>Neu\u010d\u00edm, -10<\/p>\n<\/li>\n<li class=\"poll-result__item\">\n<p>                <strong class=\"poll-result__data-percent\">0,0%<\/strong>Jin\u00e90<\/p>\n<\/li>\n<\/ul>\n<p>    Hlasovalo 10 u\u017eivatel\u016f. Zdr\u017eelo se 5 u\u017eivatel\u016f.<br \/>\n<br \/>Zdroj: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/456500\/\">habr.com<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041d\u0435\u0441\u043c\u043e\u0442\u0440\u044f \u043d\u0430 \u0442\u043e, \u0447\u0442\u043e \u0440\u0435\u0447\u044c \u043f\u043e\u0439\u0434\u0435\u0442 \u043e\u0431 \u043e\u0434\u043d\u043e\u0439 \u0438\u0437 \u0431\u0430\u0437\u043e\u0432\u044b\u0445 \u0442\u0435\u043c, \u0434\u0430\u043d\u043d\u0430\u044f \u0441\u0442\u0430\u0442\u044c\u044f \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0430 \u0434\u043b\u044f \u043e\u043f\u044b\u0442\u043d\u044b\u0445 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u0438\u0441\u0442\u043e\u0432. \u0426\u0435\u043b\u044c \u2014 \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u044c \u043a\u0430\u043a\u0438\u0435 \u0437\u0430\u0431\u043b\u0443\u0436\u0434\u0435\u043d\u0438\u044f \u0431\u044b\u0432\u0430\u044e\u0442 \u0443 \u043d\u043e\u0432\u0438\u0447\u043a\u043e\u0432 \u0432 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438. \u0414\u043b\u044f \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0443\u044e\u0449\u0438\u0445 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432 \u044d\u0442\u0438 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u0443\u0436\u0435 \u0434\u0430\u0432\u043d\u043e \u0440\u0435\u0448\u0435\u043d\u044b, \u043f\u043e\u0437\u0430\u0431\u044b\u0442\u044b \u0438\u043b\u0438 \u0432\u043e\u043e\u0431\u0449\u0435 \u043d\u0435 \u0437\u0430\u043c\u0435\u0447\u0435\u043d\u044b. \u0421\u0442\u0430\u0442\u044c\u044f \u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u0438\u0433\u043e\u0434\u0438\u0442\u044c\u0441\u044f, \u0435\u0441\u043b\u0438 \u0432\u0434\u0440\u0443\u0433 \u0432\u0430\u043c \u043f\u0440\u0438\u0434\u0435\u0442\u0441\u044f \u043f\u043e\u043c\u043e\u0433\u0430\u0442\u044c \u0441 \u044d\u0442\u043e\u0439 \u0442\u0435\u043c\u043e\u0439 \u043a\u043e\u043c\u0443-\u043d\u0438\u0431\u0443\u0434\u044c. \u0412 \u0441\u0442\u0430\u0442\u044c\u0435 \u043f\u0440\u043e\u0432\u043e\u0434\u044f\u0442\u0441\u044f [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-40208","post","type-post","status-publish","format-standard","hentry"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.3 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u041d\u0435\u0441\u043c\u043e\u0442\u0440\u044f \u043d\u0430 \u0442\u043e, \u0447\u0442\u043e \u0440\u0435\u0447\u044c \u043f\u043e\u0439\u0434\u0435\u0442 \u043e\u0431 \u043e\u0434\u043d\u043e\u0439 \u0438\u0437 \u0431\u0430\u0437\u043e\u0432\u044b\u0445 \u0442\u0435\u043c, \u0434\u0430\u043d\u043d\u0430\u044f \u0441\u0442\u0430\u0442\u044c\u044f \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0430 \u0434\u043b\u044f \u043e\u043f\u044b\u0442\u043d\u044b\u0445 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u0438\u0441\u0442\u043e\u0432. \u0426\u0435\u043b\u044c \u2014 \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u044c \u043a\u0430\u043a\u0438\u0435 \u0437\u0430\u0431\u043b\u0443\u0436\u0434\u0435\u043d\u0438\u044f \u0431\u044b\u0432\u0430\u044e\u0442 \u0443 \u043d\u043e\u0432\u0438\u0447\u043a\u043e\u0432 \u0432 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/cs\/blog\/kak-nauchit-preodolevat-trudnosti-a-zaodno-i-pisat-czikly\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.3\" \/>\n\t\t<meta property=\"og:locale\" content=\"cs_CZ\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u041a\u0430\u043a \u043d\u0430\u0443\u0447\u0438\u0442\u044c \u043f\u0440\u0435\u043e\u0434\u043e\u043b\u0435\u0432\u0430\u0442\u044c \u0442\u0440\u0443\u0434\u043d\u043e\u0441\u0442\u0438, \u0430 \u0437\u0430\u043e\u0434\u043d\u043e \u0438 \u043f\u0438\u0441\u0430\u0442\u044c \u0446\u0438\u043a\u043b\u044b | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041d\u0435\u0441\u043c\u043e\u0442\u0440\u044f \u043d\u0430 \u0442\u043e, \u0447\u0442\u043e \u0440\u0435\u0447\u044c \u043f\u043e\u0439\u0434\u0435\u0442 \u043e\u0431 \u043e\u0434\u043d\u043e\u0439 \u0438\u0437 \u0431\u0430\u0437\u043e\u0432\u044b\u0445 \u0442\u0435\u043c, \u0434\u0430\u043d\u043d\u0430\u044f \u0441\u0442\u0430\u0442\u044c\u044f \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0430 \u0434\u043b\u044f \u043e\u043f\u044b\u0442\u043d\u044b\u0445 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u0438\u0441\u0442\u043e\u0432. \u0426\u0435\u043b\u044c \u2014 \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u044c \u043a\u0430\u043a\u0438\u0435 \u0437\u0430\u0431\u043b\u0443\u0436\u0434\u0435\u043d\u0438\u044f \u0431\u044b\u0432\u0430\u044e\u0442 \u0443 \u043d\u043e\u0432\u0438\u0447\u043a\u043e\u0432 \u0432 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/cs\/blog\/kak-nauchit-preodolevat-trudnosti-a-zaodno-i-pisat-czikly\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2020-02-01T03:04:35+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-02-01T03:04:35+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Jak nau\u010dit p\u0159ekon\u00e1vat obt\u00ed\u017ee a z\u00e1rove\u0148 ps\u00e1t cykly | ProHoster","description":"I kdy\u017e se budeme bavit o jedn\u00e9 z z\u00e1kladn\u00edch t\u00e9mat, tento \u010dl\u00e1nek je naps\u00e1n pro zku\u0161en\u00e9 specialisty. C\u00edlem je uk\u00e1zat, jak\u00e9 myln\u00e9 p\u0159edstavy maj\u00ed nov\u00e1\u010dci v programov\u00e1n\u00ed.","canonical_url":"https:\/\/prohoster.info\/cs\/blog\/kak-nauchit-preodolevat-trudnosti-a-zaodno-i-pisat-czikly","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"cs_CZ","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u041a\u0430\u043a \u043d\u0430\u0443\u0447\u0438\u0442\u044c \u043f\u0440\u0435\u043e\u0434\u043e\u043b\u0435\u0432\u0430\u0442\u044c \u0442\u0440\u0443\u0434\u043d\u043e\u0441\u0442\u0438, \u0430 \u0437\u0430\u043e\u0434\u043d\u043e \u0438 \u043f\u0438\u0441\u0430\u0442\u044c \u0446\u0438\u043a\u043b\u044b | ProHoster","og:description":"\u041d\u0435\u0441\u043c\u043e\u0442\u0440\u044f \u043d\u0430 \u0442\u043e, \u0447\u0442\u043e \u0440\u0435\u0447\u044c \u043f\u043e\u0439\u0434\u0435\u0442 \u043e\u0431 \u043e\u0434\u043d\u043e\u0439 \u0438\u0437 \u0431\u0430\u0437\u043e\u0432\u044b\u0445 \u0442\u0435\u043c, \u0434\u0430\u043d\u043d\u0430\u044f \u0441\u0442\u0430\u0442\u044c\u044f \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0430 \u0434\u043b\u044f \u043e\u043f\u044b\u0442\u043d\u044b\u0445 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u0438\u0441\u0442\u043e\u0432. \u0426\u0435\u043b\u044c \u2014 \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u044c \u043a\u0430\u043a\u0438\u0435 \u0437\u0430\u0431\u043b\u0443\u0436\u0434\u0435\u043d\u0438\u044f \u0431\u044b\u0432\u0430\u044e\u0442 \u0443 \u043d\u043e\u0432\u0438\u0447\u043a\u043e\u0432 \u0432 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438.","og:url":"https:\/\/prohoster.info\/cs\/blog\/kak-nauchit-preodolevat-trudnosti-a-zaodno-i-pisat-czikly","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2020-02-01T03:04:35+00:00","article:modified_time":"2020-02-01T03:04:35+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"40208","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":null,"breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-03-01 00:43:24","updated":"2022-09-29 01:18:32","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/posts\/40208","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/comments?post=40208"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/posts\/40208\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/media?parent=40208"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/categories?post=40208"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/tags?post=40208"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}