Algoritmy a programování

WorthwhilePanther avatar
WorthwhilePanther
·
·
Download

Start Quiz

Study Flashcards

33 Questions

Co je algoritmus?

Posloupnost kroků pro postupné řešení problému

Jak lze znázornit algoritmus?

Vývojovým diagramem

Co je to algoritmizace?

Proces tvorby algoritmu pro řešení konkrétního problému

Co je to program?

Posloupnost kroků pro postupné řešení problému

Co je to programovací jazyk?

Nástroj pro implementaci algoritmů a zápis programů

Jaké jsou druhy algoritmů?

Iterativní, rekurzivní, paralelní, distribuovaný

Jaké jsou druhy programovacích jazyků?

Nízkoúrovňové, vysokoúrovňové, kompilované, interpretované

Co určuje míru abstrakce programovacího jazyka?

Nízkoúrovňovost nebo vysokoúrovňovost jazyka

Co je pravda o rekurzivním algoritmu?

Používá zásobník (LIFO) pro předání parametrů volání

Co je pravda o sériovém algoritmu?

Vykonává všechny příkazy jeden po druhém (v sérii)

Co je pravda o nízkoúrovňových jazycích?

Složí se z registru, paměťových adres a zásobníku volání

Co je pravda o kompilovaných jazycích?

Převáděné přeložkou (kompilátorem) přímo na strojový kód

Co je pravda o transpilovaných jazycích?

Program se přeloží/transpiluje do zdrojového kódu v jiném jazyce

Co je pravda o interpretovaných jazycích?

Kód je vyhodnocován řádek po řádku při běhu programu

Jaké vlastnosti má algoritmus?

Konečnost, správnost, resultativnost, determinovanost

Co je charakteristické pro první generaci programovacích jazyků?

Hardwarová závislost, instrukce tvořeny posloupností nul a jedniček

Jaký je rozdíl mezi jazyky Wiring, PHP a C#?

Wiring je kompilovaný jazyk, PHP a C# jsou interpretované jazyky

Co je základní strukturou programu v jazyce C#?

Hlavní metoda

Kde se píše kód v jazyce PHP?

Do souboru s příponou .php

Jaký typ kódu se v základu píše v jazyce JavaScript?

.js

V jakém typu souboru se píše kód v jazyce Assembler?

.asm

Co jsou identifikátory v programovacích jazycích?

Pojmenování strukturálních částí zdrojového kódu

Jak se dělí algoritmy podle implementace?

Rekurzivní a iterativní

Jak lze znázornit algoritmus?

Matematicky (vzorcem)

Co je to programovací jazyk?

Nástroj pro implementaci algoritmů a zápis programů

Jaké jsou druhy programovacích jazyků?

Vysokoúrovňové, objektově orientované, procedurální, interpretované

Která vlastnost algoritmu zaručuje, že algoritmus končí po určitém počtu kroků a nenajde se v cyklu?

Konečnost

Která generace programovacích jazyků je charakterizována tím, že instrukce jsou tvořeny posloupností nul a jedniček?

První generace

Jaký je rozdíl mezi rekurzivním a iterativním algoritmem?

Rekurzivní algoritmus si představuje funkci, ve které je kód algoritmu zapouzdřený v rekurzi, opakuje se na částech vstupních dat, iterativní algoritmus používá smyčku a iteruje se, dokud nejsou splněny určité podmínky.

Co je pravda o rekurzivním algoritmu?

Může být obtížné ke implementaci pro složité úlohy

Co je charakteristické pro první generaci programovacích jazyků?

Složí se z registru, paměťových adres a zásobníku volání

Co je pravda o transpilovaných jazycích?

Program se přeloží/transpiluje do zdrojového kódu v jiném jazyce

Co je pravda o sériovém algoritmu?

Vykonává všechny příkazy jeden po druhém (v sérii)

Study Notes

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

  • Algoritmus končí po určitém počtu kroků a nenajde se v cyklu (konečnost).

  • Výsledek vytvořený algoritmem musí být správný (správnost).

  • Algoritmus dospije k řešení po určitém počtu kroků (resultativnost).

  • Jednoznačný způsob pokračování práce algoritmu je určen v každém kroku (determinovanost).

  • Algoritmus lze použít pro řešení obecné úlohy (univerzálnost).

  • Algoritmus vedoucí k stejným výsledkům, pokud jsou zadána stejná data (opakovatelnost).

  • Neexistují jen čtyři generace programovacích jazyků: 1. generace (strojový kód), 2. generace (symbolické adresy), 3. generace (procedurální jazyky) a 4. generace (objektově orientované jazyky), ale existuje 5. generace s GUI.

  • První generace programovacích jazyků: jednoúčelové programy, instrukce jsou tvořeny posloupností nul a jedniček, hardwarově závislý, obtížné ladit, prakticky nečitelný.

  • Druhá generace programovacích jazyků: obecné příkazy, zkracované pomocí symbolických názvů, hardwarově závislý, čitelnost je lepší.

  • Třetí generace programovacích jazyků: procedurální jazyky, vyšší úroveň programování, hardwarově nezávislí, předchůdce OOP, procedury (funkce), jazyky: C, Pascal, SQL.

  • Čtvrtá generace programovacích jazyků: objektově orientované jazyky, reprezentace reálného světa pomocí objektů, jedná se o snahu zobrazit reálný svět, jazyky: C#.

  • Rozdíl mezi jazyky Wiring, PHP a C#: Wiring = interpretované jazyky (skriptovací jazyky), C# = kompilované jazyky, různý způsob překladu jejich zdrojového kódu.

  • V jazyce C#: základní struktura programu: seznam knihoven (= using), jmenný prostor (= namespace), třída (= zapouzdřuje hlavní metodu), hlavní metoda (= spustí se po startu konzolové aplikace).

  • V jazyce Wiring: metoda setup() = vykoná se při startu programu, metoda void() = vykonává se opakovaně po dobu běhu programu, a to ihned po dokončení metody setup().

  • V jazyce PHP: kód se píše mezi tagy do souboru s příponou .php.

  • V jazyce JavaScript: kód se (v základu) píše do souboru s příponou .js, konzolová funkce k vypisání textu.

  • V jazyce Assembler: kód se píše do souboru s příponou .asm, využívá se přiměřeně snadné složité skládání, produkuje strojový kód.

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

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

  • Obvykle se liší oblasti platnosti (scopes): globální, modulová, funkční a kódového bloku.

  • Algoritmy se dělí podle implementace: rekurzivní a iterativní.

  • Rekurzivní algoritmus: funkce obsahuje kód algoritmu zapouzdřený v rekurzi, rozděluje problém na několik podproblemů, výsledky podproblemů "vybublávají" napovrch, až je k dispozici výsledek pro vyřešení rozloženého problému.

  • Rozdíl mezi rekurzivním a iterativním algoritmem: rekurzivní algoritmus si představuje funkci, ve které je kód algoritmu zapouzdřený v rekurzi, opakuje se na částech vstupních dat, iterativní algoritmus používá smyčku a iteruje se, dokud nejsou splněny určité podmínky.

  • Výhody rekurzivního algoritmu: efektivní pro vyřešení problémů s hierarchickou strukturou, vhodné pro problematiky, kde se koncepce podproblemů vyskytují.

  • Rekurzivní algoritmus:

    • Ujednodučený kód může být kratší pro jednodušší problémy
    • Používá zásobník (LIFO) pro předání parametrů volání
    • Vyžaduje paměť a musí být pečlivě implementováno, aby se končila, jinak může dojít k nekonečnému volání a StackOverflow exception
  • Iterativní algoritmus:

    • Algoritmus, který se opakuje v cyklu, dokud nedojde k požadovanému výsledku
    • Může být snadnější ke implementaci a má menší spotřebu paměti
    • Může být obtížné ke implementaci pro složité úlohy
  • Sériový algoritmus:

    • Vykonává všechny příkazy jeden po druhém (v sérii)
    • Není vždy možné převést sériový na paralelní
    • Může být zrychlené při malém množství repetitivních příkazů, jejichž synchronní provedení je příliš pomalé
  • Paralelní algoritmus:

    • Vykonává všechny příkazy zároveň (ve více vláknech)
    • Využívá vícevláknové zpracování
    • Dosahuje rychlejšího výsledku na více strojích
  • Jazyky podle míry abstrakce:

    • Nízkoúrovňové jazyky: – Složí se z registru, paměťových adres a zásobníku volání – Pracují se strukturou, která se blíží strojovému kódu – Hlavní výhoda: nejvyšší rychlost programu – Nevýhody: nepřenositelnost na jiný typ procesoru, složité programování, nepříliš srozumitelný zápis
    • Vysokoúrovňové jazyky: – Umožňují zapisovat programy, které se blíží lidskému jazyku – Pracují s proměnnými, poli, objekty, funkcemi, cykly, vlákny – Dělení na kompilované, interpretované a transpilované
  • Kompilované jazyky:

    • Převáděné přeložkou (kompilátorem) přímo na strojový kód
    • Jednou překladem se program spustí
    • Výhody: pokud se překlad nepovede, spuštění programu nebude možné (chyby se odhalí hned při kompilaci), přeložený program běží rychleji, jako by byl napsán v Assembleru
    • Nevýhody: při změně zdrojového kódu je nutné provést znovu překlad, určitá závislost na platformě
  • Interpretované jazyky:

    • Kód je vyhodnocován řádek po řádku při běhu programu
    • Interpret provádí každé volání znovu
    • Výhody: řeší problém přenositelnosti programů mezi různými platformami, dynamické typování
    • Nevýhody: zjištění chyb až při spuštění chybného kódu, pomalejší než kompilované jazyky
  • Transpilované jazyky:

    • Program se přeloží/transpiluje do zdrojového kódu v jiném jazyce
    • Výhody: můžeme psát kód v novějším jazyce, který se automaticky přemění na jiný, převod kódu ze staršího jazyka do nového, převod již existujícího kódu do modernější podoby
  • Transpilátor:

    • Speciální typ kompilátoru převádí zdrojový kód z jednoho vysokoúrovňového programovacího jazyka na druhý

Tento kvíz se zaměřuje na základní koncepty algoritmů, jejich znázornění a druhy. Dále se dotýká algoritmizace a významu programování.

Make Your Own Quizzes and Flashcards

Convert your notes into interactive study material.

Get started for free

More Quizzes Like This

Algoritmi. Generalități
7 questions
Algoritmy a programování
22 questions
Algoritmus a programování
12 questions
Algoritmo de Búsqueda Mean Shift
40 questions
Use Quizgecko on...
Browser
Browser