Khirjanov Timofej Fedorovič

Hlavními algoritmickými konstrukcemi jsou kromě elementárních operací reprezentovaných jedním prvkem obvodu alternativní provádění a cykly. Existují dvě alternativní možnosti programování a tři hlavní typy cyklů.

Podmíněně spustitelný kód

Některé operace mohou být předmětem podmíněný operátor. Potom budou provedeny pouze v případě, že je tato podmínka pravdivá.

Li<условие>
Že
<действия>
Všechno

Alternativní

Ve vývojovém diagramu může test stavu sloužit jako princip pro výběr alternativních operací. To znamená, že pokud je podmínka pravdivá, vykoná se po jedné trajektorii, a pokud je nepravdivá, pak po druhé. V jazyce KuMir má smyčka s předběžnou podmínkou následující tvar:

Li<условие>
Že
<действия>
v opačném případě
<альтернативные действия>
Všechno


Podmínky pro robota:
levá stěna
pravá stěna
spodní stěna
horní stěna
buňka je zastíněna
ponechán volný
právo zdarma
dno volné
horní volný
klec čistá

Smyčka s předpokladem

Smyčka s předběžnou podmínkou je smyčka, která se provádí, když je splněna některá podmínka zadaná před jejím začátkem. Tato podmínka je kontrolována před provedením těla smyčky, takže tělo nemusí být provedeno ani jednou (pokud je podmínka od samého začátku nepravdivá). Ve většině procedurálních programovacích jazyků je implementován příkazem while, proto je jeho druhým názvem smyčka while. V jazyce KuMir má smyčka s předběžnou podmínkou následující tvar:

nashledanou<условие>
<тело цикла>
kts

Smyčka s dodatečnou podmínkou

Smyčka s postcondition je smyčka, ve které je podmínka kontrolována po provedení těla smyčky. Z toho vyplývá, že tělo se vždy alespoň jednou provede. V Pascalu je tato smyčka implementována operátorem repeat..until, v C je to do...while .
V jazyce KuMir má smyčka s postcondition následující tvar:

nc
<тело цикла>
cc_at<условие>

Smyčka s počítadlem

Smyčka s čítačem je smyčka, ve které některá proměnná s určitým krokem změní svou hodnotu z dané počáteční hodnoty na konečnou a pro každou hodnotu této proměnné se tělo smyčky jednou provede. Ve většině procedurálních programovacích jazyků je implementován operátorem pro, který označuje počítadlo (tzv. smyčková proměnná“), požadovaný počet průchodů (resp. limitní hodnotu počítadla) a případně krok, ve kterém se počítadlo změní. V jazyce KuMir má cyklus s čítačem následující tvar:

Celý
nc pro a od 0 do 9
... tělo smyčky
kts

V různých programovacích jazycích je otázka hodnoty proměnné na konci smyčky, ve které byla tato proměnná použita jako čítač, řešena odlišně.

Seznámení s programem Kumir zvládnutí základů programování.

Studenti v něm mohou získat praktické dovednosti při vytváření a ladění algoritmu, práci s interprety, jako jsou Robot, Kreslíř, Vodnář, Kobylka, Želva.

Při studiu jedné z nejtěžších částí informatiky "algoritmizace a programování".

Účel rozvoje :

Stažení:


Náhled:

Metodický rozvoj v informatice.

Téma: "Robotér v programu KuMir na hodinách informatiky"

učitel techniky "Informatika a ICT"

Vysvětlivka

Rozvojový cíl: nastudovat možnosti programování na příkladu konkrétního exekutora Robota s využitím prostředí KUMIR; poskytnout praktické dovednosti pro práci s umělcem.

Metodický vývojsestavené pro hodiny informatikyCvičte na počítači: práce se vzdělávacím realizátorem algoritmů; sestavování lineárních, větvících a cyklických algoritmů pro řízení exekutora; sestavování algoritmů se složitou strukturou; použití pomocných algoritmů (procedury, podprogramy).

Studenti by měli vědět:

  • co je to umělec; SKI Robot, středeční účinkující Robot;
  • co je algoritmus;jaké jsou hlavní vlastnosti algoritmu;
  • způsoby zápisu algoritmů: vývojové diagramy, výukový algoritmický jazyk;základní algoritmické konstrukce: sledování, větvení, smyčka; struktur
  • algoritmy; ⇒ přiřazení pomocných algoritmů; technologie pro vytváření složitých algoritmů:

Studenti by měli být schopni:

  • rozumět popisům algoritmů v učícím se algoritmickém jazyce;
  • provést trasování algoritmu pro známého interpreta;
  • sestavovat lineární, větvené a cyklické řídicí algoritmy pro spouštěcí robot; přidělovat dílčí úkoly; definovat a používat pomocné algoritmy.

Lekce 1 (2 hodiny) Lekce 1.

Performer Robot.Exekutorský příkazový systém.

Plán lekce.

  1. Popis UCS exekutora, prostředí exekutora.

2. Analýza typických robotických algoritmů.

Během vyučování.

Zvažte popis interpreta.

Prostředí exekutora: Performer Robot se dokáže pohybovat labyrintem nakresleným v rovině rozdělené na buňky.

Lyžařský robot : jednoduché příkazy: nahoru, dolů, doleva, doprava, vyplnit.

Logické příkazy: (kontroly podmínek)

nahoře zdarma dole zdarma

vlevo volný pravý volný.

Logické spojky: AND, NOT, OR:

Příklad: (Není vlevo volné) nebo (Není vpravo volné)

Příkaz větve: příkaz cyklu:

Pokud podmínka pak nts while podmínka

řada příkazů řada příkazů

všechny kts

(V CIM z roku 2009 se příkazy robota lišily od příkazů známých dětem, což vedlo k zmatek :)

Příkaz větve: příkaz cyklu:

Pokud podmínka pak nts, zatímco podmínka dělat

řada příkazů řada příkazů

konec konec

Celkový pohled na okno programu Kumir. Grafické prostředí robota:

v KIM demo verze 2010 formát příkazu změněn na obvyklé

Pořadí vytváření algoritmu:

1.Týmy Nástroje -Upravit výchozí prostředínakreslete stěny na poli robota a nastavte robota do výchozí polohy.

2. Příkazy Robot - Změňte výchozí prostředízachránit nové prostředí.

3. Příkazy Vložit – použijte robotaspecifikovat umělce.

4. V okně dokumentu napište pomocí nabídky algoritmus Vložit.

5. Provádění příkazů - provádějte nepřetržitě (nebo krok za krokem) spouštějte algoritmus.

6. Zvažte výsledek provádění algoritmu a v případě potřeby jej odlaďte.

Lekce 1 (2 hodiny) Lekce 2.

Praktická práce "Kompilace lineárních algoritmů.

Úkoly: 1. Robot na libovolném místě v poli. Vybarvěte buňku nad, pod a napravo od výchozí pozice.

  1. Robot na libovolném místě v poli. Posuňte robota o 4 pole doprava a přetřete je.
  2. Vytvořte nové výchozí prostředí nakreslením čtverce se 4 buňkami na hrací plochu. Začněte tím, že ušetříte životní prostředí.
  3. Vytvořte nové výchozí prostředí nakreslením koridoru s průchody ve zdech na hřišti. Uložte prostředí jako obst2.fil. Změňte výchozí prostředí na nově vytvořené.

Lekce 2 (2 hodiny) Lekce 1.

Předmět : Větvení a postupné zpřesňování algoritmu.

Analýza úloh CIM pomocí exekutoru Robot.

používat robota

alg kim 2009

brzy

pokud ne spodní volné

pak doprava

Všechno

pokud ne spodní volné

pak doprava

Všechno

pokud ne spodní volné

pak doprava

Všechno

ošidit

používat robota

alg kim 2010

brzy

pokud ne spodní volné

pak doprava

Všechno

pokud ne spodní volné

pak doprava

Všechno

pokud ne spodní volné

pak doprava

Všechno

ošidit

Atd. otrok. č. 14. Kompilace a ladění větvících algoritmů

Úkoly. Viz příloha.

Lekce 3 Cyklické algoritmy. Lekce 1-2

Cílová: odhalit podstatu konceptu cyklu v algoritmech, ukázat formy zápisu cyklů v algoritmech, dát dovednosti při vytváření a psaní cyklických algoritmů.

Atd. otrok. č. 15. Kompilace a ladění cyklických algoritmů

1. Vytvořte algoritmus, který vybarví všechny vnitřní buňky sousedící se stěnou.

používat robota

alg

brzy

nc, zatímco právo zdarma

přemalovat; že jo

kts

nc, zatímco dno je volné

přemalovat; dolů

kts

nc, dokud se dno neuvolní

přemalovat; doleva

kts

ošidit

2. Vytvořte algoritmus, který vyplní všechny buňky mezi robotem a zdí. Vzdálenost ke zdi není známa.

používat robota

alg

brzy

nc, zatímco právo zdarma

že jo; přemalovat

kts

ošidit

3. Vytvořte algoritmus, který překreslí všechny buňky mezi dvěma stěnami.

používat robota

alg uch3

brzy

nc ještě (není uvolněný nahoře) nebo (není dole volný)

že jo

if (není nahoře zdarma) a (ne dole zdarma)

Že

přemalovat

Všechno

kts

ošidit

4. Vytvořte algoritmus, který vyplní všechny buňky kolem obdélníkové stěny.

alg uch4

brzy

vymalovat;

nc až do úplného uvolnění

malovat;

kts

barva;vpravo

nc, dokud se dno neuvolní

barva;pravý;

kts

přebarvit; dolů

nc, dokud nezůstane volné

barva;dolů;

kts

barva;vlevo

nc, dokud se horní část neuvolní

přemalovat; vlevo, odjet;

kts

ošidit

používat robota

alg uch5

brzy

že jo

nc, dokud se dno neuvolní

přemalovat; že jo

kts

přemalovat; dolů

nc při ponechání volné

přemalovat; doleva

kts

nc, dokud nezůstane volné

přemalovat; dolů

kts

barva;vlevo;barva; nahoru;

nc, zatímco nahoře zdarma

přemalovat; nahoru

kts

nc, dokud se horní část neuvolní

přemalovat; doleva

kts

ošidit

Aktivita 4 Lekce 1

Pomocné algoritmy.

Cílová: představit pojem hlavní a pomocný algoritmus; vysvětlit pravidla pro použití pomocného algoritmu; analyzovat příklady algoritmů pomocí pomocného.

Plán lekce

1.Zavedení nových pojmů (hlavní a pomocný algoritmus, volání) a vysvětlení nových pojmů.

2. Analýza příkladů řešení úloh pomocí pomocného algoritmu.

Při řešení některých problémů je vhodné je rozdělit na menší dílčí úkoly, z nichž každý může být navržen jako nezávislý algoritmus. V tomto případě se nejprve zkompiluje tzv. hlavní algoritmus, ve kterém se k řešení dílčích úloh používají volání pomocných algoritmů, které se přidávají později. Tento druh řešení se nazývámetoda sekvenčního zpřesňování.Umožňuje skupině programátorů pracovat na projektu, přičemž každý řeší svůj vlastní dílčí úkol.

V procesu řešení problému lze každý pomocný algoritmus v případě potřeby rozdělit na menší pomocné algoritmy.

Zavolá se příkaz k provedení pomocného algoritmu výzva a je zapsán v těle hlavního algoritmu.

Jeden a tentýž algoritmus lze považovat za hlavní a pomocný ve vztahu k ostatním algoritmům. V algoritmickém jazyce je hlavní algoritmus napsán jako první a pomocný algoritmus jsou zapsány v řádku níže.

Úkol 1:

Robot je v levém horním rohu pole. Nejsou zde žádné stěny ani zastíněné cely. Sestavte algoritmus pomocí pomocného algoritmu a nakreslete čtyři křížky na jednu vodorovnou čáru. Konečná pozice robota může být libovolná.

Řešení

Analýza na desce:

Úkol 2. Robot je v levém horním rohu pole. Nejsou zde žádné stěny ani zastíněné cely. Napište algoritmus, který nakreslí šachovnicově čtverec 8 x 8. Konečná pozice robota může být libovolná.

Aktivita 4, lekce 2

Praktická práce na PC "Řešení problémů pomocí pomocných algoritmů".

cílová : vštípit praktické dovednosti při konstrukci algoritmů metodou sekvenčního zpřesňování.

Plán lekce

1. Úkol je kompletně dokončen PC. Studenti dostávají úkoly a plní je v prostředí softwaru Kumir. Výsledky práce jsou uloženy jako soubory pro pozdější ověření.

Úkol 1 . Robot je v levém dolním rohu pole. Nejsou zde žádné stěny ani zastíněné cely. Napište algoritmus, který nakreslí 6 svislých pruhů stejné délky v 6 buňkách. Konečná pozice robota může být libovolná.

Úkol 2 .Pomocí pomocných prostředků vytvořte algoritmus pro malování buněk, které tvoří číslo 1212.

Domácí práce: Vymyslete algoritmus, který nakreslí následující obrázek: Použijte dva pomocné algoritmy k vyřešení problému.

Aktivita 5 Lekce 1-2

Test

„Kompilace algoritmu v prostředí exekutorského robota“.

Cílová: otestovat získané znalosti o tvorbě a schopnosti analyzovat algoritmy v prostředí softwaru Kumir.

Úkoly pro kontrolní práce jsou rozděleny podle úrovní obtížnosti a obsahují 3 úkoly s vykonavatelem Robot (úkol 1 a 2 - pro větvení a smyčky, úkol 3 - pro použití pomocného algoritmu.) Texty úkolů jsou uvedeny v příloze.

Počáteční a konečné podmínky a vytvořené algoritmy jsou zaznamenány jako soubor.

Známka je stanovena podle obtížnosti úkolu. Žák má právo volby typu úkolu.

1. Úvod

systém „KuMir“ (název pochází ze slov „Soubor vzdělávacích světů“), se kterým vás tato elektronická verze učebnice seznámí.
Vývojáři jazyka „KuMir“ sledovali cíl vytvořit jednoduchý jazyk pro počáteční kurz informatiky, který splňuje moderní programovací technologii a umožňuje produkční využití. Jako základ byl vzat školní algoritmický jazyk. Jazyk byl doplněn o některé funkce, které jej mění ze vzdělávacího na produkční. Jazyk má:
typy celek, věc, lit; tradiční soubor operací s daty těchto typů (včetně operací s řetězci a standardní sada matematické funkce);
pole ( tab) specifikované typy; strukturní řídicí struktury cyklů, větvení atp.
Kumir je otevřený – připojení externích exekutorů obohacuje jazyk o nové funkce: od správy databází a práce s geometrickými objekty až po rozšíření množiny platných číselných typů (v tomto případě jazyk umožní míchání nových typů se stávajícími číselnými typy ve výrazech).
Moderní technologie Programování nás učí rozdělit program nejen na podprogramy, ale také na větší celky: sady programů, které pracují na společných datech. V různé jazyky programování, takové jednotky se nazývají jinak, v KuMir se taková jednotka nazývá "Executor". Koncepce výkonného umělce je v praktické práci nesmírně důležitá a měla by být zavedena v co nejranější fázi výcviku.
Zkušenosti s používáním KuMir ve výuce a pro vývoj vzdělávacího softwaru ukázaly, že jazyk je snadné se naučit a zároveň je dostatečně výkonný, aby rozšířil širokou třídu produkčních úloh.
Stejně jako E-workshop je KuMir integrovaný systém, který obsahuje textový editor, inkrementální kompilátor s nulovou dobou odezvy a také jednoduchý a pohodlný debugger. dobré jméno pro systém tohoto druhu - "Editor-Compiler": zatímco vy zadáváte svůj program, kompilátor jej zpracovává a program je v každém okamžiku připraven ke spuštění bez sebemenší prodlevy.

2. Názvy a druhy hodnot. Operace KuMir

Při psaní názvů proměnných lze použít libovolné znaky ruské a latinské abecedy, stejně jako čísla. Jméno nesmí začínat číslicí. V systému KuMir neexistují žádná přísná omezení ohledně délky jmen, ale pro usnadnění úprav a zamezení přetečení řádků by proměnné a algoritmy neměly mít příliš dlouhé názvy. Obvykle je název vybrán tak, abyste pochopili, k čemu je algoritmus určen. Při úpravách programů je třeba také pamatovat na to, že ruská a latinská písmena, podobná v pravopisu, počítače rozlišují. Pokud například uživatel při popisu proměnné s názvem A zadal "A" v latinské abecedě a v textu algoritmu se pokusil získat přístup k této proměnné zadáním jejího názvu v ruské abecedě, pak v tomto řádku bude " jméno není definováno" se objeví zpráva v "polích" .
Algoritmický jazyk programovacího systému KuMir používá tři typy veličin: celá čísla ( Celý), skutečný ( věc) a písmeny ( litas).
Typ hodnoty- definuje sadu hodnot, které může hodnota nabývat, a sadu akcí, které lze s touto hodnotou provést.
Hodnota je jeden informační objekt, který má název, hodnotu a typ.

Konstantní hodnota (konstanta) nemění svou hodnotu během provádění algoritmu.
Proměnná může měnit svou hodnotu během provádění algoritmu.
Výraz- záznam, který definuje sled akcí na hodnotách. Výraz může obsahovat konstanty, proměnné, operační znaky, funkce.
Následující symboly se používají k psaní výrazů v Kumir:

K označení znamení logické operace používají se symboly:
= rovný;
< >nerovná se;
< меньше;
> více;
< = меньше или равно;
> = větší nebo rovno;
Pro záznam obtížné podmínky operace jako: A, NEBO NE.
A -
současné splnění výše uvedených podmínek (Х > 0 a Х< = 2);
NEBO- splnění alespoň jedné z podmínek (X > 0 nebo Y > 0);
NE- popření.

3. Vestavěné funkce jazyka KuMir

Zde je příklad vestavěných funkcí:

Odvolání

Funkce

Typy

Argument

Funkce

HŘÍCH(X) cos(X) T. G. (X) EXP(X) LN (X) BŘIŠNÍ SVALY (X) SQRT(X) MOD (A,b) int(X) PI

sinus x kosinus x tečna x
exponent x (ex) Příroda. logaritmus x
modul x
druhá odmocnina x
zbytek divize (A až B)
celočíselná část čísla
číslo "pí" - 3,14159

věc
věc
věc
věc
věc
věc
věc
věc, cíl
věc
věc

věc
věc
věc
věc
věc
věc
věc
Celý
Celý
žádné argumenty

Příklad zápisu aritmetických výrazů v algoritmickém jazyce:

4. Příkazy INPUT / OUTPUT

Často je vyžadováno organizovat výměnu informací ("dialog") mezi osobou a počítačem v procesu provádění algoritmu. K tomu má algoritmický jazyk speciální příkazy pro OUTPUT informace z paměti počítače na obrazovku a INPUT informace z klávesnice (od osoby) do paměti počítače.
příkaz ENTER - příkaz, kterým se nastavují hodnoty proměnných prostřednictvím vstupních zařízení (klávesnice).
Příkaz OUTPUT- příkaz, kterým se hodnota hodnoty projeví na výstupním zařízení počítače (obrazovce monitoru).
Vzhledem k tomu, že hodnoty se v algoritmickém jazyce používají k ukládání informací, vstupní / výstupní příkazy označují názvy veličin, jejichž hodnoty musí být zobrazeny (zobrazeny na obrazovce) nebo zadány (zapamatovány v paměti počítače).
Příklad:

Oficiální slovo NS (nový řádek) říká počítači, že informace by měly být vypsány na novém řádku.

5. Příkaz přiřazení. Tvorba a editace programů lineárních struktur

Pro zapamatování nebo změnu hodnoty veličiny existuje speciální příkaz v algoritmickém jazyce - pokyn k zadání, který se píše jako:

NÁZEV HODNOTY: = VÝRAZ

Znaménko ":=" (dvojtečka následovaná rovná se) se nazývá znaménko úkoly a čte se jako "přiřadit" (například příkaz "n:=e" zní "n přiřadit e"). Při provádění příkazu přiřazení počítač nejprve vypočítá výraz zapsaný na pravé straně (názvy veličin nahradí jejich hodnotami) a poté zapíše výslednou hodnotu výrazu do paměti.

Algoritmy, které jsou jednoduchou posloupností akcí, se nazývají algoritmy lineární struktury.
Zvažte proces tvorby lineární algoritmus na příkladu výpočtu výrazu:
1. Vypočítejte součet dvou čísel
2. Napište program pro nalezení přepony pravoúhlého trojúhelníku se dvěma rameny
3. Najděte objem krychle, pokud je známá její strana

6. Vytváření a editace programů větvících struktur

Řešení problémů nelze vždy reprezentovat jako lineární algoritmus. Existují úkoly, ve kterých je nutné zorganizovat volbu provedení posloupnosti akcí v závislosti na jakýchkoli podmínkách. Takové algoritmy se nazývají algoritmy větvené struktury. V programovacím systému KuMir jsou pro vytvoření algoritmu pro větvenou strukturu poskytnuty konstrukce "Jestli - PAK - ELSE - VŠE" a "VÝBĚR - POKUD - VŠECHNO".

Příkaz větve: POKUD - PAK - JINAK - VŠECHNO

Příkaz větve - rozdělí algoritmus do dvou cest v závislosti na nějaké podmínce; pak provádění algoritmu pokračuje ve společném pokračování. Větvení je úplné a neúplné.

Grafické schéma stavby" Li"

Servisní slova " Li", "Že", "v opačném případě"mají obvyklý význam." Slovo " Všechno" znamená konec stavby. Mezi " Že" A " v opačném případě" - na jednom nebo více řádcích - je zapsána sekvence příkazů algoritmického jazyka (série 1). Mezi " v opačném případě" A " Všechno"je zaznamenána další sekvence příkazů (série 2). Řada 2 spolu se servisním slovem " v opačném případě" může chybět. Při provádění " Li"Počítač nejprve zkontroluje stav zapsaný mezi " Li" A " Že V důsledku kontroly buď ANO nebo NE. Pokud možno ANO, pak se provede SÉRIE 1 a pokud NE, - pak SÉRIE 2 (pokud existuje) .
Pokud podmínka není splněna (ukáže se NE), a řada 2 spolu s " v opačném případě" chybí, pak počítač okamžitě pokračuje ve vykonávání příkazů napsaných za slovem " Všechno".

7. Typy cyklů v programovacím systému KuMir

Algoritmy, jejichž jednotlivé akce se mnohokrát opakují, se nazývají algoritmy cyklické struktury. Soubor akcí algoritmu spojených s opakováním se nazývá cyklus.
Příkaz smyčky zajišťuje opakované provádění sekvence příkazů (tělo smyčky) podle nějaké podmínky.
Pro programování algoritmů cyklické struktury v programovacím systému KuMir jsou k dispozici dva typy smyček: smyčka s předpokladem (loop for while) a smyčka s parametrem (loop for).

Smyčka s předběžnou podmínkou (smyčka while)

Smyčka s předběžnou podmínkou (smyčka while) je smyčka, jejíž provádění se opakuje, dokud je podmínka smyčky pravdivá. Servisní slova NC(začátek cyklu) a KC(konec cyklu) jsou psány přísně pod sebou a spojené vertikální lišta. Napravo od tohoto řádku je zapsána opakovaná sekvence příkazů (tělo smyčky).

Když je spuštěn, počítač cyklicky opakuje následující akce:
a) kontroly psané za slovem sbohem stav;
b) pokud není podmínka splněna (podmínka je nepravdivá), pak provádění cyklu skončí a počítač začne provádět příkazy zapsané po KC. Pokud je podmínka splněna (podmínka je pravdivá), pak počítač provede tělo smyčky, znovu zkontroluje podmínku a tak dále.
Pokud je podmínka ve smyčce sbohem není dodržen od samého začátku, pak se tělo smyčky nikdy neprovede.
Komentář. Provedení smyčky sbohem nemusí skončit, pokud je podmínka po celou dobu pravdivá (tato situace se nazývá smyčka). Proto, aby se takovým situacím předešlo, by tělo smyčky mělo obsahovat příkazy pro změnu podmínky.

Dané kladné celé číslo N. Vypočítejte faktoriál tohoto čísla: N! = 1 * 2 * 3 * ... * N.

Smyčka s parametrem (smyčka pro)

Smyčka s parametrem(loop for) - opakované provádění těla smyčky, zatímco parametr integer prochází množinou všech hodnot od počáteční (i1) po konečnou (in):

Zde i je proměnná celočíselného typu, nazývaná parametr smyčky: i1, in jsou počáteční a konečné hodnoty parametru smyčky, které lze zadat buď libovolnými celými čísly, nebo výrazy s celočíselnými hodnotami; h - krok změny hodnoty parametru cyklu, hodnota kroku může být libovolné celé číslo (kladné i záporné). Záznam „krok h“ v prvním řádku může zcela chybět, zatímco výchozí hodnota kroku je 1.
Při provádění smyčky Pro, jeho tělo se provede pro i = i1, i = i1 + h, i = i1 + 2*h, . . . , i = in. Pravidla algoritmického jazyka umožňují zadat libovolná celá čísla i1, in, h. Zejména in může být menší než i1. Pokud navíc hodnota h< 0, то цикл выполняется нужное количество раз, а если h имеет положительное значение, то этот случай не считается ошибочным - просто тело цикла не будет выполнено ни разу, а ЭВМ сразу перейдет к выполнению команд, записанных после KC. Pro h = 0 dojde k zacyklení.

Příklad: Je dáno kladné celé číslo N. Vypočítejte faktoriál tohoto čísla: N! = 1 * 2 * 3 * ... * N.

8. Algoritmy pro rekurentní výrazy

V matematice a informatice často existují posloupnosti, ve kterých se každý následující člen počítá přes předchozí.
V aritmetický postup, například každý další člen je roven předchozímu, zvětšený o rozdíl progrese:

ai =ai-1+d

V sekvenci 1, 1, 2, 3, 5, 8, 13, ... ( nazývá se Fibonacciho sekvence) každý další člen je roven součtu dvou předchozích členů. Pro tuto sekvenci

ai = ai-1 + ai-2, a1 = a2 =1

Volají se vzorce, které vyjadřují další člen posloupnosti pomocí jednoho nebo více předchozích členů opakující se vztahy.

9. Tabulkové hodnoty a práce s nimi

Pro záznam algoritmů, které pracují s velkým množstvím informací, existují v algoritmickém jazyce speciální tabulkové hodnoty zvané tabulky (pole).
Hodnoty tabulky se skládají z jiných hodnot, obvykle celých čísel nebo skutečných hodnot, nazývaných prvky. Prvky v tabulce mohou být uspořádány různými způsoby. Algoritmický jazyk programovacího systému KuMir používá 2 nejběžnější typy tabulek: lineární a obdélníkové tabulky.

Práce s lineárními tabulkami (jednorozměrná pole)

Jako každá hodnota lineární stůl zaujímá místo v paměti počítače, má název, hodnotu a typ. KuMir používá tabulky typu integer (celtab) a reálný (vehtab). Například:

Záznam celtab A [ 1: 5 ] znamená, že hodnota A je tabulka (tab) složená z celých čísel (celá čísla), prvky této tabulky mají indexy od 1 (spodní mez) do 5 (horní mez). Hodnota A je pět celých čísel: 3, 15, 0, -10,101.
Prvky tabulky nemají samostatné názvy. K označení i-tého prvku tabulky A se používá záznam A [ i ]. Například při provádění příkazu A [ 3 ] : = A [ 2 ] + A [ 4 ] počítač nahradí místo A [ 2 ] a A [ 4 ] hodnoty 2. a 4. prvku tabulky A. , tedy číslo 15 a -10, sečtěte a výslednou hodnotu přiřaďte 3. prvku, tím se místo 0 objeví v tabulce na místě 3. prvku hodnota 5 místo 0.
Jako hodnoty ohraničení tabulky lze použít libovolná (kladná i záporná) celá čísla a také 0. Hodnota dolního ohraničení musí být menší než hodnota horního ohraničení; pokud jsou stejné, má se za to, že tabulka obsahuje jednoho prvku. Pokud se v popisu tabulky v důsledku překlepu ukáže, že spodní hranice je větší než horní, například celtab [ 3: 1], nebude to považováno za chybu a při zadávání algoritmu , v "polích" se nezobrazí žádné zprávy. V tomto případě se bude mít za to, že v této tabulce není jediný prvek a při prvním přístupu k této tabulce se objeví zpráva „špatný index“.

Úkol.

Práce s obdélníkovými tabulkami (maticemi)

Podobně jako lineární tabulka zabírá matice místo v paměti počítače, má název, hodnotu a typ. KuMir používá tabulky typu integer (celtab) a reálný (vehtab).

Zápis celtab A [ 1: 5, 1:2 ] znamená, že hodnota A je tabulka (tab) složená z celých (celočíselných) čísel, prvky této tabulky mají indexy od (první sloupec, první řádek) do (poslední sloupec, poslední řádek). Hodnota A je deset celých čísel: 3, 15, 0, -10, 101, 200, -45, 50, 10, 222.
Prvky tabulky nemají samostatné názvy. Pro označení i-tého prvku tabulky A se používá záznam A [ i, j ]. Například při provádění příkazu A [ 3, 1 ] : = A [ 2, 1 ] + A [ 4, 1 ] počítač nahradí místo A [ 2, 1 ] a A [ 4, 1 ] hodnoty ​​2. a 4. prvku prvního sloupce tabulky A, tedy čísla 15 a -10, je sečtou a výslednou hodnotu přiřadí 3. prvku v prvním řádku, takže místo 0 bude hodnota 5 se objeví na místě 3. prvku prvního řádku v tabulce.
Jako hodnoty ohraničení tabulky lze použít libovolná (kladná i záporná) celá čísla a také 0. Hodnota dolního ohraničení musí být menší než hodnota horního ohraničení; pokud jsou stejné, má se za to, že tabulka obsahuje jednoho prvku. Pokud se v popisu tabulky v důsledku překlepu ukáže, že spodní hranice je větší než horní, například celtab [ 3: 1, 5: 2], nebude to považováno za chybu a při zadávání algoritmu se v "polích" neobjeví žádné zprávy. V tomto případě se bude mít za to, že v této tabulce není jediný prvek a při prvním přístupu k této tabulce se objeví zpráva „špatný index“.

Úkol. V uvedené tabulce B určete index a hodnotu maximálního prvku.

Příloha: Úkoly

Lineární algoritmy

Úkol 1

Najděte součet dvou čísel - a a b
Řešení:

alg součet
brzy věc a, b, c
závěr "zadejte hodnotu 2 čísel"
vstup a, b
c:= a + b
závěr ns , "součet čísel",a,"a",b,"rovná se",c
ošidit

Úkol č. 2

Najděte rozdíl dvou čísel
Řešení:

alg rozdíl
brzy věc a, b, c
závěr "zadejte hodnoty proměnných"
vstup a, b
c:= a - b
výstup ns, "rozdíl čísel",a,"a",b," rovná se",c
ošidit

Úkol #3

Najděte součin dvou libovolných přirozených čísel
Řešení:

Celý a, b, c

alg práce
brzy
závěr
" zadejte dvě čísla"
vstup
A,bc:=a +b
výstup ns,
"
součin čísel",a,"a",b"rovná se",c
ošidit

Úkol #4

Najděte podíl dvou přirozených čísel
Řešení:

věc a, b, c

alg soukromé
brzy
závěr"
zadejte dividendu a dělitele"
vstup
a, b
c:= a/b
výstup ns,
"podíl", a,"a",b,"rovná se",c
ošidit

Úkol #5

Najděte aritmetický průměr pěti libovolných čísel
Řešení:

věc a B c d e f

alg aritmetický
začít věci a B c d e f
závěr "Zadejte libovolných 5 čísel"
vstup a, b, c, d, e
f:=(a + b + c + d + e)/ 5
závěr ns "aritmetický průměr 5 čísel je", f
ošidit

větvení

Úkol 1

Najděte největší ze 3 celých čísel (čísla jsou libovolná)

alg maximum
časný cíl a BC
závěr "Zadejte tři náhodná čísla"
vstup a BC
Li a>b>c
pak závěr je ns "maximální počet je", a
Všechno
Li A<б>S
pak závěr je ns "maximální počet je", b
Všechno
Li A<б<с
pak závěr je ns "maximální počet je", s
Všechno
ošidit

Úkol č. 2

Jsou vám přidělena dvě libovolná čísla. Pokud je první číslo větší než druhé, přiřaďte k němu jejich součet a jejich součin k druhému číslu. Pokud je druhé číslo větší než první, přiřaďte jejich součin k prvnímu číslu a jejich součet k druhému.

alg stav
začít věci a, b
závěr "Zadejte dvě čísla"
vstup a, b
Li a > b
Že a:= a + b
b := a * b
v opačném případě a:= a * b
b := a + b
závěr ns , a, b
ošidit

Úkol č. 3:

Najděte mezi 4 libovolnými čísly minimum
Řešení:

alg minimální
začít věci a, b, c, e
závěr "Zadejte 4 náhodná čísla"
vstup břišní svaly. E
Li a>b>c>e
pak závěr je ns "maximální počet-"a
Všechno
Li A<б>c>e
pak závěr je ns "maximální počet -",b
Všechno
Li
A<б<с>E
pak závěr je ns "maximální počet -", s
Všechno
Li
A<б<с<е
pak závěr je ns , "maximální počet -", např
Všechno
ošidit

Úkol #4

Jsou dány 2 nohy (2 cm a 2 cm) rovnoramenného trojúhelníku a jeho základna (2,82 cm). Určete, zda je trojúhelník pravoúhlý.
Řešení:

alg trojúhelník
začít věci i, h, s
i:= 2
h:= 2
c:= 2,82
Li c**2= (i**2)+(h**2)
pak výstup "pravda"
jinak výstup " lhát"
Všechno
ošidit

Úkol #5

Vytiskněte zprávu "pravda", pokud je součin dvou záporných čísel větší než nula, jinak vytiskněte zprávu "nepravda"
Řešení:

alg negativní
začít věci i, h, s, m
závěr "Zadejte dvě záporná čísla"
vstup já h
c:=0
m:= i*h
Li m>s
pak závěr je ns , "skutečný"
jinak výstup ns ,"lhát"
Všechno
ošidit

Smyčka "pro"

Úkol 1

Nalézt Faktorový přirozené číslon ( Faktoriál přirozeného čísla n je součin všech přirozených čísel mezi 1 a n ) Řešení:

alg faktoriál
začít věci
A. b
Celý
n, a
závěr

vstup
n
a:= 1
nc pro
A z 1 před n
závěr ns,
"zadej číslo"
vstup
b
a:= a * b
kts
závěr ns
,
"faktoriální", n "celých čísel je", a
ošidit

Úkol č. 2

Najděte mezi nimi maximální hodnotun - celá čísla
Řešení:

alg maximum
začít věci
a, b
Celý
v
závěr
"Zadejte počet celých čísel k porovnání"
vstup
n
a:=0
nc pro
A z 1 před n
závěr ns,
"zadej číslo"
vstup
b
Li
b>a
Že
a:=b
Všechno
kts
závěr ns,
"maximální počet mezi údaji je číslo" a
ošidit

Úkol #3

Najít mezin-celé číslo počet záporných čísel
Řešení:

alg náhoda
začít věci
a, b, c
Celý
n, i, s
závěr "
zadejte počet přirozených čísel"
vstup
n
závěr ns,
"zadej číslo"
vstup
b
n:= n-1
h:= 0
nc pro
A z 1 před n
závěr ns,"
zadejte číslo"
vstup
S
Li
c = b
Že
s:= s + 1
Všechno
kts
závěr ns
,

ošidit

Úkol #4

Postupně zadaných n-celých čísel. Najděte počet shod s prvním číslem
Řešení:

začít věci a, b, c
Celý
n, i, s
závěr
"Zadejte počet přirozených čísel"
vstup
n
závěr ns,
"zadej číslo"
vstup
b
n:= n-1
h:= 0
nc pro
A z 1 před n
závěr ns,
"zadej číslo"
vstup
S
Li
c = b
Že s:= s + 1
Všechno
kts
závěr ns
,
"počet shod s prvním číslem je", z
ošidit

Úkol #5

Postupně zadaných n-celých čísel. Najděte rozdíl mezi maximální a minimální hodnotou daných čísel
Řešení:

alg rozdíl
začít věci
A. b, s, d
Celý
n, a
závěr
"Zadejte počet čísel"
vstup
n
a:= 0
c:=0
nc pro
A z 1 před n
závěr ns,
"zadej číslo"
vstup
d
Li
e>s
Že
c:=d
Všechno
Li
d<а
Že
a:= d
Všechno
kts
b:= c - a
závěr ns,
"rozdíl mezi minimální a maximální hodnotou je stejný", b
ošidit

Smyčka while

Úkol 1

Najděte součet všech čísel mezi 1 a 5
Řešení:

alg čísla
začít věci a, b
závěr "Zadejte dvě čísla tak, aby druhé číslo bylo větší než první"
vstup a, b
nashledanou A<б
a:= a + 1
kts
závěr ns
, A
ošidit

Úkol č. 2

Jsou dána dvě čísla taková, že druhé číslo je větší než první. K prvnímu číslu je nutné přičíst 1, dokud se nebude rovnat druhému číslu, zobrazte jej na monitoru.
Řešení:

alg součet
začít věci a, b, c
závěr "zadejte interval součtu"
vstup a, b
c:= a
nashledanou A< б
a:= a + 1
c:= c + a
kts
závěr ns
," součet čísel na daném intervalu je", s
ošidit

Úkol #3

Jsou vám přidělena dvě libovolná čísla. Dokud je jejich součin menší než 100, zvyšte každé číslo o 2 a zobrazte konečná čísla na monitoru
Řešení:

alg práce
začít věci a, b, c
závěr "Zadejte dvě náhodná čísla"
vstup a, b
c:= 100
nashledanou a*b< с
a:= a + 2
b := b + 2
kts
závěr ns
, a, b
ošidit

Jednorozměrná pole

Úkol 1

Vyplňte pole náhodnými čísly a vypište jeho prvky Řešení:

alg pole 2
časný cíl
n, i
věc
b, max
věšák na prádlo
a [1:n]
závěr
"vyplnit pole"
vstup
n
max:= 0
nc pro
i z 1 před n
závěr ns,
"zadejte prvek pole"
vstup
b
Li
b > max
Že max:=b
Všechno
kts
závěr ns
,

ošidit

Úkol č. 2

Najděte maximální prvek pole a zobrazte jej na monitoru Řešení:

alg pole 2
brzy
Celý n, i
věc
b, max
věšák na prádlo a [1:n]
závěr
"vyplnit pole"
vstup
n
max:= 0
nc pro
i z 1 před n
závěr ns,
"zadejte prvek pole"
vstup
b
Li
b > max
Že max:=b
Všechno
kts
závěr ns
,
"maximální prvek tohoto pole je", max
ošidit

Úkol #3

Najděte součet prvků jednorozměrného pole Řešení:

alg součet
brzy Celý
n, i
věšák na prádlo
a [1:n]
věc
B z
závěr
"zadejte počet prvků pole"
vstup
n
z:= 0
nc pro i z 1 před n
závěr ns,
"zadejte prvek pole"
vstup
b
z:= z + b
kts
závěr ns
,
"součet",n,"prvky pole se rovná", z
ošidit

Úkol #4

Najděte součin prvků jednorozměrného pole Řešení:

alg práce
časný cíl
v
věc
s, d
věšák na prádlo
a [1:n]
závěr
"zadejte počet prvků pole"
vstup
n
d:= 1
nc pro
i z 1 před n
závěr ns,
"zadej číslo"
vstup
s
d:= d*s
kts
závěr ns
,"
součin", n, "prvky se rovnají", d
ošidit

Pole

Úkol 1


Naplňte matici náhodnými čísly Řešení:

alg pole je dvourozměrné
Celý
n, j, h, v
spustit stojánek na prádlo
A
závěr
"zadejte počet prvků v tabulce"
vstup
n
h:= 0
v:= 0
závěr ns,
"vyplnit pole"
vstup
A
nc pro
j z 1 před n
Li a > 0
Že
h:= h + 1
v opačném případě
v:= v + 1
kts
závěr ns,
A
ošidit


Úkol č. 2


Vypočítejte počet kladných a záporných prvků prvního řádku matice Řešení:

alg pole 2
brzy
věc b, x, z
Celý
v
závěr

vstup
n x:=0
z:= 0
nc pro
i z 1 před n
závěr
ns"zadejte číslo"
vstup
b
Li
b > 0
Že
x:= x + 1
v opačném případě
z:= z + 1
Všechno
kts
závěr ns
,

závěr ns,

ošidit


Úkol #3


Vypočítejte součet prvků každého řádku Řešení:

alg pole 3
začít věci
b, x, z, y
Celý
v
věšák na prádlo
a[1:n, 1:n]
závěr
"zadejte počet sloupců"
vstup
n x:=0
z:= 0
nc pro
i z 1 před n
závěr ns,
"vyplnit pole"
vstup
a[1:n, 1:n]
b:= a[ 1,i ]+a[ n, i ]
kts
závěr ns
,
"počet kladných čísel je",x
závěr ns,
"počet záporných čísel je", z
ošidit


Úkol #4


Vypočítejte součet tří čísel ve druhém řádku matice tři krát tři Řešení:

alg matice
brzy Celý
v
věšák na prádlo a[1:3, 1:3]
závěr "vyplnit pole"
vstup a[1:3, 1:3]
n:=0
nc Pro i z 1 před 3
n:= n + a[ 2,i]
kts
závěr ns,
"součet čísel ve druhém řádku pole je", n
ošidit

Algoritmus pro kreslení spirály:

použijte zásuvku
alg
brzy
. přesunout do bodu(3,3)
. spusťte pero
. cívka(1); cívka(3); cívka(5); cívka(7); cívka (9)
. zvedněte pero
ošidit
alg turn (arg w)
brzy
. posun po vektoru(a, 0)
. posun po vektoru(0, -a)
. posun po vektoru(-a-1.0)
. posun po vektoru(0, a+1)
ošidit

Věnujte pozornost příkazovému bloku:

Cívka(1); cívka(3); cívka(5); cívka(7); cívka (9)

Pomocný algoritmus „coil (arg thing a)“ se volá 5krát, ale nemůže být volán ve smyčce „Nkrát“, protože pokaždé je volán pomocí různé hodnoty argument.

Ale můžete vidět, že hodnoty argumentu se mění z 1 na 9, pokaždé se zvýší o 2. Můžeme vám tedy pomoci smyčka s počítadlem. Takový cyklus se také nazývá cyklus „pro“.

Smyčka s počítadlem- smyčka, ve které některá proměnná s určitým krokem změní svou hodnotu z dané počáteční hodnoty na konečnou a pro každou hodnotu této proměnné se jednou provede tělo smyčky.

Obvykle se tato smyčka používá, pokud potřebujete iterovat některé hodnoty a provést nějaké akce pro každou z nich.

Celkový pohled na cyklus s počítadlem:

nc pro<счетчик>z<нач. знач.>před<кон. знач.>[krok<знач.>]
<тело цикла (последовательность команд)>
kts

Krok není nutné uvádět, pokud není zadán, považuje se za rovný jedné.

Nyní můžeme přepsat "spirální" algoritmus tímto způsobem:

použijte zásuvku
alg
brzy
. přesunout do bodu(3,3)
. spusťte pero
. celá velikost
. nc pro velikost 1 až 9 krok 2
. . cívka (velikost)
. kts
. zvedněte pero
ošidit
alg turn (arg w)
brzy
. posun po vektoru(a, 0)
. posun po vektoru(0, -a)
. posun po vektoru(-a-1.0)
. posun po vektoru(0, a+1)
ošidit

V tomto příkladu bude proměnná čítače "velikost" přijímat hodnoty: 1, 3, 5, 7, 9. smyčka bude provedena 5krát. Pro každou hodnotu proměnné „size“ se tělo smyčky provede jednou, v našem příkladu se jedná o volání pomocného algoritmu „coil (arg thing)“.

Před prvním použitím proměnné musí být deklarována, tedy o jaký typ se jedná. To se v našem programu provádí v řádku „velikost celého čísla“, tj. naznačíme, že proměnnou „velikost“ budeme používat k ukládání celých čísel, a proto pro ni potřebujeme alokovat paměť. O proměnných si povíme více o něco později.

Blokové schéma takového algoritmu vypadá takto:

Podívejme se na další příklad:

Nejprve si zapamatujeme a napíšeme pomocný algoritmus, který nakreslí čtverec v bodě (x, y). Pro změnu pro kreslení použijeme příkaz posun po vektoru(v předchozích příkladech byly posunuty do bodu).

Algoritmus by mohl vypadat takto:

alg square (arg x, y, strana)
brzy
. přesunout do bodu(x, y)
. posun po vektoru(-strana/2, strana/2)
. spusťte pero
. posun po vektoru(strana, 0)
. posun po vektoru(0, -strana)
. posun po vektoru(-strana, 0)
. posun po vektoru(0, strana)
. zvedněte pero
ošidit

Pomocí takového pomocného algoritmu nakreslíme následující obrázek:

K tomu používáme smyčku "for". Prostudujte si ukázkový program:

použijte zásuvku
alg obrázek1
brzy
. celé číslo z
. nc pro z od 2 do 10 krok 2
. . čtverec(0; 0; z)
. kts
ošidit
alg square (arg x, y, strana)
brzy
. přesunout do bodu(x, y)
. posun po vektoru(-strana/2, strana/2)
. spusťte pero
. posun po vektoru(strana, 0)
. posun po vektoru(0, -strana)
. posun po vektoru(-strana, 0)
. posun po vektoru(0, strana)
. zvedněte pero
ošidit

V tomto příkladu bude proměnná "z" přijímat hodnoty: 2, 4, 6, 8, 10. smyčka bude provedena 5krát. Pro každou hodnotu „z“ se tělo smyčky provede jednou, v našem příkladu se jedná o volání pomocného čtvercového algoritmu.

Před prvním použitím proměnné musí být deklarována, tedy o jaký typ se jedná. To se v našem programu provádí v řádku "integer z", tj. naznačíme, že proměnnou "z" budeme používat k ukládání celých čísel, a proto pro ni potřebujeme alokovat paměť. O proměnných si povíme více o něco později.

Jak jste si všimli, algoritmus používal nejen čísla, ale také algebraické výrazy, vzorce, například "-strana/2". V informatice se těmto výrazům říká aritmetický. Pravidla jazyka umožňují při psaní algoritmů, kdekoli lze napsat číslo, napsat libovolný aritmetický výraz.

Zvažte problém:

Vstup do programu je přirozené číslo nepřesahující 2 * 10 9 . Určete součet číslic tohoto čísla.

Na první pohled je úkol celkem jednoduchý: je potřeba důsledně vybírat čísla v čísle a přičítat je k součtu. Zároveň je zřejmé, že počet číslic v čísle se může měnit, takže konečná hodnota parametru cyklu pro se ukazuje jako nedefinovaná a jsou potíže s její aplikací.

V cyklické algoritmy tam, kde počet opakování určité sady instrukcí nelze získat před začátkem instrukční sady, se používají podmíněné smyčky.

Smyčka while

Jednou z takových konstrukcí v programovacím jazyce Kumir je kolo sbohem. Tento cyklus, často označovaný jako smyčka s předpokladem, má následující formát:

  • nc bye stav
  • loop_body

Podmínka napsaná po oficiální slovo zatímco , je booleovský výraz.

Cyklus se provádí následovně:

  1. Hodnotí se hodnota logického výrazu.
  2. Pokud je výsledek výpočtu ne , pak se cyklus ukončí a Kumir přejde na první příkaz po cyklu while. Pokud je výsledek výpočtu ano, pak se provede tělo smyčky, načež se hodnota výrazu opět vypočítá s novou hodnotou.

Důležité! V těle smyčky se některá hodnota spojená s podmínkou musí stále měnit, aby byl zajištěn konec smyčky, jinak může být smyčka věčná.

Nyní použijeme smyčku while k vyřešení našeho problému.

  • vstupní číslo
  • nc, zatímco číslo > 0
  • součet:= součet + mod(číslo, 10)
  • num:= div(num, 10)
  • částka výběru

Při každém provádění těla smyčky se tedy k částce přidá poslední číslice čísla a poté se číslo 10krát sníží. Je zřejmé, že nakonec bude num rovno 0, načež smyčka skončí.

Do té doby cyklus

V Idolu existuje další varianta podmíněné smyčky, která se nazývá dokud smyčka, která má následující formát:

  • loop_body
  • kc pod podmínkou

Pokud je ve smyčce, zatímco je podmínka kontrolována před tělem smyčky, pak ve smyčce do té doby - po. Proto je tento cyklus často nazýván smyčka s postpodmínkou. Tělo takové smyčky bude vždy vykonáno alespoň jednou.

Práce smyčky do té doby probíhá následovně:

  1. Provede se tělo smyčky
  2. Hodnotí se hodnota logického výrazu. Pokud je výsledek výpočtu ne , začne se tělo cyklu provádět znovu atd. Je-li výsledek výpočtu yes , cyklus končí a Kumir přejde k provedení dalšího příkazu po smyčka.

Úkol. Vstupem do programu je posloupnost celých čísel končících nulou. Najděte počet záporných čísel v posloupnosti. Je zaručeno, že sekvence obsahuje alespoň jedno nenulové číslo.

(úryvek kódu programu)

  • vstupní číslo
  • pokud číslo 0
  • pak k:= k + 1
  • kts při čísle = 0
  • výstup k