Algoritmy a programování
18 Questions
0 Views

Algoritmy a programování

Created by
@WorthwhilePanther

Podcast

Play an AI-generated podcast conversation about this lesson

Questions and Answers

Přiřaďte druhy algoritmů k jejich popisu:

Rekurzivní = Algoritmus, který volá sám sebe Iterativní = Algoritmus, který využívá smyčku pro opakované provádění kroků Sériový = Algoritmus, ve kterém jsou kroky prováděny postupně jeden po druhém Paralelní = Algoritmus, ve kterém jsou některé kroky prováděny současně

Přiřaďte pojmy k jejich významu:

Algoritmizace = Proces tvorby algoritmu pro řešení konkrétního problému Program = Implementace algoritmů, posloupnost instrukcí popisující činnost počítače Programovací jazyk = Nástroj pro implementaci algoritmů a zápis programů Míra abstrakce = Určuje, jestli je programovací jazyk nízkoúrovňový nebo vysokoúrovňový

Přiřaďte druhy programovacích jazyků k jejich charakteristikám:

Nízkoúrovňové = Kompilované do strojového kódu a přímo manipulují s pamětí a registry Vysokoúrovňové = Poskytují vysokou úroveň abstrakce a jsou nezávislé na konkrétním hardwaru Kompilované = Překládají se do strojového kódu před spuštěním programu Interpretované = Překládají se až během provádění programu

Přiřaďte zásady tvorby algoritmů k jejich popisu:

<p>Jednoznačnost = Každý krok algoritmu musí být jasně definován Univerzálnost = Algoritmus musí být použitelný pro různé vstupní hodnoty Koncovost = Algoritmus musí skončit po konečném počtu kroků Efektivita = Algoritmus musí řešit problém dostatečně rychle a s minimálním využitím prostředků</p> Signup and view all the answers

Spojte následující typy algoritmů s jejich popisem:

<p>Rekurzivní algoritmus = Používá zásobník pro předání parametrů a vyžaduje paměť k ukončení rekurze. Iterativní algoritmus = Opakuje se v cyklu, dokud nedojde k požadovanému výsledku. Sériový algoritmus = Provádí všechny příkazy jeden po druhém. Paralelní algoritmus = Provádí všechny příkazy zároveň ve více vláknech.</p> Signup and view all the answers

Spojte následující typy jazyků s jejich vlastnostmi:

<p>Nízkoúrovňové jazyky = Blíže strojovému kódu, pracují s registry a paměťovými adresami. Vysokoúrovňové jazyky = Umožňují zapisovat programy podobné přirozenému lidskému jazyku, pracují s proměnnými a funkcemi. Kompilované jazyky = Převáděny přímo na strojový kód, mají rychlé spuštění, ale vyžadují znovu překlad po změně zdrojového kódu. Interpretované jazyky = Mají dynamické typování a zdrojový kód se analyzuje při každém volání.</p> Signup and view all the answers

Spojte následující typy jazyků s jejich primárním použitím:

<p>Python = Všeobecné programování C++ = Objektově orientované programování TypeScript = Transpilace zdrojového kódu SQL = Dotazy do databáze</p> Signup and view all the answers

Přiřaďte název generace programovacích jazyků k jejich popisu:

<ol> <li>generace = Instrukce tvořeny nulami a jedničkami, hardwarově závislý, nečitelný</li> <li>generace = Obecné příkazy, zkracovány pomocí symbolických názvů, hardwarově závislý, čitelnost je lepší</li> <li>generace = Vyšší úroveň programování, representace reálného světa pomocí objektů, hardwarově nezávislý</li> <li>generace = Objektově orientované jazyky, snaží se o reprezentaci reálného světa pomocí objektů</li> </ol> Signup and view all the answers

Přiřaďte způsob překladu jazyka k jeho názvu:

<p>Wiring = Interpretovaný jazyk PHP = Interpretovaný jazyk C# = Kompilovaný jazyk Assembler = Kompilovaný jazyk</p> Signup and view all the answers

Spojte název programovacího jazyka s jeho základní strukturou programu:

<p>C# = Seznam knihoven, jmenný prostor, třída (zapouzdřuje hlavní metodu), hlavní metoda Wiring = Metoda <code>setup()</code> = vykoná se při startu programu, metoda <code>void()</code> = vykonává se opakovaně po dobu běhu programu PHP = Kód se píše mezi tagy do souboru s příponou <code>.php</code> JavaScript = Kód se (v základu) píše do souboru s příponou <code>.js</code></p> Signup and view all the answers

Přiřaďte pojmy k jejich významu:

<p>Identifikátory = Pojmenovávají entities jazyka, např. proměnné, typy, funkce, struktury, objekty Zásady názvů identifikátorů = Záleží na konkrétním jazyku Oblasti platnosti = Definují oblast, ze které je možné k vlastnosti přistupovat Rekurzivní algoritmus = Funkce zapouzdřená v rekurzi rozdělující problém na podproblémy</p> Signup and view all the answers

Přiřaďte výhody rekurzivního algoritmu k jejich popisu:

<p>Účinnější než iterativní řešení = Může být efektivnější v mnoha oblastech AI a matematiky Jednodušeji popisovat komplikované problémy = Může být snadněji paralelizatelný Snadněji paralelizatelný = Může být účinnější než iterativní řešení Efektivnější v mnoha oblastech AI a matematiky = Jednodušeji popisovat komplikované problémy</p> Signup and view all the answers

Přiřaďte vlastnosti algoritmu k jejich popisu:

<p>Konečnost = Algoritmus skončí po určitém počtu kroků, nezacykluje se Správnost = Výsledek musí být správný, v souladě se vstupními daty Resultativnost = Po určitém počtu kroků dospije k řešení nebo vrátí chybový výsledek Determinovanost = V každém kroku je určen způsob pokračování práce algoritmu</p> Signup and view all the answers

Spojte pojmenování oblasti platnosti s jejich popisem:

<p>Globální oblast platnosti = Definuje oblast platnosti pro celý program nebo projekt Modulová oblast platnosti = Definuje oblast platnosti pro konkrétní modul programu nebo knihovnu Funkční oblast platnosti = Definuje oblast platnosti pro konkrétní funkci nebo proceduru Kódový blok = Definuje oblast platnosti pro konkrétní část kódu</p> Signup and view all the answers

Přiřaďte druhy algoritmů k jejich popisu:

<p>Iterativní algoritmus = Algoritmus opakuje určenou část svého kódu dokud nenastane podmínka pro ukončení cyklu Rekurzivní algoritmus = Funkce zapouzdřená v rekurzi rozdělující problém na podproblémy</p> Signup and view all the answers

Přiřaďte druhy programovacích jazyků k jejich charakteristikám:

<ol> <li>generace = Hardwarově závislé, obtížné hledání chyb, nečitelné instrukce tvořeny nulami a jedničkami</li> <li>generace = Hardwarově závislé, čitelnost je lepší, ale porozumění je stále těžké</li> <li>generace = Vyšší úroveň programování, representace reálného světa pomocí objektů, hardwarově nezávislý</li> <li>generace = Objektově orientované jazyky, snaží se o reprezentaci reálného světa pomocí objektů</li> </ol> Signup and view all the answers

Přiřaďte názvy programovacích jazyků k jejich primárním použitím:

<p>C# = .NET Framework aplikace, herní aplikace pro Windows platformu Wiring = Programy pro mikrokontrolery a vestavěné systémy PHP = Webové aplikace a dynamické webové stránky JavaScript = Skriptování webových stránek a webové aplikace</p> Signup and view all the answers

Přiřaďte zásady tvorby algoritmů k jejich popisu:

<p>Konečnost algoritmu = Algoritmus skončí po určitém počtu kroků, nezacykluje se. Správnost algoritmu = Výsledek musí být správný, v souladě se vstupními daty. Resultativnost algoritmu = Po určitém počtu kroků dospijí k řešení nebo vrátí chybový vysad. Determinovanost algoritmu = V každém kroku je určen způsob pokračování práce algoritmu.</p> Signup and view all the answers

Study Notes

  • Rekurzivní algoritmus používá zásobník pro předání parametrů a je vyžadována přítomnost paměti, aby ukončil rekurzi, jinak dojde k nekonečnému volání a k chybě StackOverflow exception.

  • Iterativní algoritmus se opakuje v cyklu, dokud nedojde k požadovanému výsledku. Může být snadnější k implementacii a má menší spotřebu paměti než rekurzivní algoritmus. Pro složité úlohy může být obtížné k implementaci.

  • Sěrový algoritmus provádí všechny příkazy jeden po druhém. Ne vždy možné převést sérový na paralelní, ale může dojít ke zrychlení pro obrovské množství repetitivních příkazů, jejichž synchronní provedení je příliš pomalé.

  • Paralelní algoritmus provádí všechny příkazy zároveň ve více vláknech. Dosahuje rychlejšího výsledku než sérový algoritmus.

  • Jazyky se dělí podle míry abstrakce na nízkoúrovňové a vysokoúrovňové.

  • Nízkoúrovňové jazyky, jako jako Assembly, jsou blíže strojovému kódu a pracují s registry, paměťovými adresami a zásobníky. Mají nejvyšší rychlost programu, ale jsou obtížné pro implementování složitých programů jako je psaní jader OS.

  • Vysokoúrovňové jazyky, jako C#, Java, Python, C++, umožňují zapisovat programy podobné přirozenému lidskému jazyku a pracují s proměnnými, poli, objekty, funkcemi, cykly a vlákny.

  • Jazyky se rozděluji na kompilované, interpretované a transpilované.

  • Kompilované jazyky, jako C, C++, jsou převáděny přímo na strojový kód a mají rychlý spuštění, ale po změně zdrojového kódu je nutné provést znovu překlad a některé závislosti na platformě.

  • Interpretované jazyky, jako Python, Ruby, JavaScript, mají dynamické typování, ale chyby se objevují až při spuštění nepravidelného kódu, a zdrojový kód se analyzuje při každém volání interpretovanému jazyku.

  • Transpilované jazyky, jako TypeScript, převádějí zdrojový kód do jiného jazyka při jeho spuštění a mají výhodu možnosti psát kód v novějším jazyce.

  • Imperativní, objektově orientované, procedurální a funkční jsou různé kategorie vysokoúrovňových jazyků.

  • Imperativní jazyky, jako C, používají příkazy, které mění stav programu.

  • Objektivně orientované jazyky, jako Java, pracují s objekty a operacemi na nich.

  • Procedurální jazyky, jako C, pracují s procedurami a voláními.

  • Funkční jazyky, jako Haskell, pracují s funkcemi.

  • Algoritmus má sedm vlastností: konečnost, správnost, resultativnost, determinovanost, univerzálnost, opakovatelnost a konečnost.

  • Konečnost: Algoritmus skončí po určitém počtu kroků, nezacykluje se.

  • Správnost: Výsledek musí být správný, v Souladě se vstupními data.

  • Resultativnost: Po určitém počtu kroků dospijí k řešení nebo vrátí chybový výsad.

  • Determinovanost: V každém kroku je určen způsob pokračování práce algoritmu.

  • Univerzálnost: Lze použít pro řešení obecné úlohy.

  • Opakovatelnost: Vede vždy ke stejným výsledkům s danými vstupy.

  • Existují čtyři základní generace programovacích jazyků: strojový kód, symbolické adrese, procedurální jazyky a objektově orientované jazyky.

    1. generace: Jednoúčelové programy, instrukce jsou tvořeny nulami a jedničkami, hardwarově závislý, obtížné při hledání chyb, nečitelný.
    1. generace: Obecné příkazy, zkracovány pomocí symbolických názvů, hardwarově závislý, čitelnost je lepší, ale porozumění je stále těžké.
    1. generace: Vyšší úroveň programování, representace reálného světa pomocí objektů, hardwarově nezávislý, jedná se o concept strukturovaného programování, procedury, jazyky: C, Pascal, SQL.
    1. generace: Objektově orientované jazyky, WYSIWYG, jedná se o snahu o reprezentaci reálného světa pomocí objektů, jazyky: C#.
  • Rozdíl mezi minimize jazyky Wiring, PHP a C#: liší se způsobem překladu jejich zdrojového kódu, kompilované jazyky: C#, Wiring, interpretované jazyky: PHP.

  • Základní struktura programu v jazyce C#: základní struktura se liší vytvořeným řešením (konzolová aplikace, desktopová aplikace.), seznam knihoven, jmenný prostor, třída (zapouzdřuje hlavní metodu), hlavní metoda.

  • Základní struktura programu v jazyce Wiring: metoda setup() = vykoná se při startu programu, metoda void() = vykonává se opakovaně po dobu běhu programu.

  • Základní struktura programu v jazyce PHP: kód se píše mezi tagy do souboru s příponou .php.

  • Základní struktura programu v jazyce JavaScript: kód se (v základu) píše do souboru s příponou .js.

  • Základní struktura programu v jazyce Assembler: kód se minimize do souboru s příponou .asm.

  • Identifikátory: pojmenovávají entities jazyka, např. proměnné, typy, funkce, struktury, objekty.

  • Zásady názvů identifikátorů: záleží na konkrétním jazyku.

  • Oblasti platnosti: definují oblast, ze které je možné k vlastnosti přistupovat, rozlišujeme obecně: globální, modulová, funkční, kódového bloku.

  • Rekurzivní algoritmus: si lze představit jako funkci, ve které je kód algoritmu zapouzdřený v rekurzi, rozdělí problem na několik podproblemů, jejichž výsledky uchovává v zásobníku, následně je používá k získání kýženého výsledku, funkce je znovu volána dříve, než je dokončeno její předchozí volání, stejný postup opakuje na částech vstupních dat, musí obsahovat zarážku (podmínku), která má rekurzivní volání ukončit a vrátit výsledek, výsledek vrácený zarážkou je použit k získání mezivýsledků (výsledků podproblémů), výsledky podproblémů postupně "vybublávají" napovrch, až je k dispozici výsledek pro vyřešení rozloženého problému.

  • Výhody rekurzivního algoritmu: může být účinnější než iterativní řešení, jednodušeji popisovat komplikované problémy, může být snadněji paralelizovatelný, může být efektivnější v mnoha oblastech AI a matematiky.

Studying That Suits You

Use AI to generate personalized quizzes and flashcards to suit your learning preferences.

Quiz Team

Related Documents

Co je to algoritmus.pdf

Description

Zjistěte, jak dobře rozumíte algoritmům, programování a jejich různým způsobům znázornění. Tento kvíz vám pomůže procvičit vaše znalosti o algoritmizaci, druzích algoritmů a implementaci programů.

More Like This

Algoritmy a programování
22 questions
Algoritmy a programování
33 questions
Algoritmus a programování
12 questions
Algoritmos y sus características
10 questions
Use Quizgecko on...
Browser
Browser