DTP Základy programování Úvod do předmětu

Podobné dokumenty
Programovací jazyky. imperativní (procedurální) neimperativní (neprocedurální) assembler (jazyk symbolických instrukcí)

Úvod. Programovací paradigmata

Programovací jazyky. imperativní (procedurální) neimperativní (neprocedurální) assembler (jazyk symbolických instrukcí)

Vlastnosti algoritmu. elementárnost. determinovanost. rezultativnost. konečnost. hromadnost. efektivnost

Program a životní cyklus programu

IB111 Programování a algoritmizace. Programovací jazyky

IB111 Úvod do programování skrze Python Přednáška 13

Programovací jazyk Pascal

ZÁKLADY PROGRAMOVÁNÍ. Mgr. Vladislav BEDNÁŘ /14

Algoritmizace a programování

Programování v C++ Úplnej úvod. Peta (maj@arcig.cz, SPR AG )

11. Přehled prog. jazyků

Algoritmizace. Cíle předmětu

Úvod do programovacích jazyků (Java)

Maturitní otázky z předmětu PROGRAMOVÁNÍ

PB161 Programování v jazyce C++ Přednáška 7

PB161 Programování v jazyce C++ Přednáška 7

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

VÝUKOVÝ MATERIÁL. Bratislavská 2166, Varnsdorf, IČO: tel Číslo projektu

Algoritmizace prostorových úloh

Algoritmy I. Cvičení č. 2, 3 ALGI 2018/19

Programovací jazyky Přehled a vývoj

Masarykova střední škola zemědělská a Vyšší odborná škola, Opava, příspěvková organizace

Virtuální počítač. Uživatelský program Překladač programovacího jazyka Operační systém Interpret makroinstrukcí Procesor. PGS K.

IB111 Programování a algoritmizace. Objektově orientované programování (OOP)

Programování v C++ 1, 1. cvičení

3 Co je algoritmus? Trocha historie Definice algoritmu Vlastnosti algoritmu... 3

MATURITNÍ OTÁZKY ELEKTROTECHNIKA - POČÍTAČOVÉ SYSTÉMY 2003/2004 PROGRAMOVÉ VYBAVENÍ POČÍTAČŮ

Objektově orientované programování

Úvod do programování - Java. Cvičení č.4

PROGRAMOVACÍ JAZYKY A PŘEKLADAČE STRUKTURA PŘEKLADAČE

Úvod do programování

Pascal. Katedra aplikované kybernetiky. Ing. Miroslav Vavroušek. Verze 7

1. lekce. do souboru main.c uložíme následující kód a pomocí F9 ho zkompilujeme a spustíme:

Vyučovací hodina. 1vyučovací hodina: 2vyučovací hodiny: Opakování z minulé hodiny. Procvičení nové látky

Programovací jazyk. - norma PASCAL (1974) - implementace Turbo Pascal, Borland Pascal FreePascal Object Pascal (Delphi)

Algoritmizace- úvod. Ing. Tomáš Otáhal

Čtvrtek 8. prosince. Pascal - opakování základů. Struktura programu:

Abstraktní třídy, polymorfní struktury

Algoritmizace prostorových úloh

ÚVODNÍ ZNALOSTI. datové struktury. správnost programů. analýza algoritmů

1. lekce. do souboru main.c uložíme následující kód a pomocí F9 ho zkompilujeme a spustíme:

Algoritmizace. 1. Úvod. Algoritmus

Algoritmizace a programování

MIKROPROCESORY PRO VÝKONOVÉ SYSTÉMY

Algoritmizace a programování

Šablony, kontejnery a iterátory

Jazyk C++, některá rozšíření oproti C

Základní pojmy. Úvod do programování. Základní pojmy. Zápis algoritmu. Výraz. Základní pojmy

1. Programování proti rozhraní

Martin Flusser. Faculty of Nuclear Sciences and Physical Engineering Czech Technical University in Prague. October 17, 2016

ALGORITMIZACE A PROGRAMOVÁNÍ

KTE / ZPE Informační technologie

Obsah přednášky 7. Základy programování (IZAPR) Přednáška 7. Parametry metod. Parametry, argumenty. Parametry metod.

VÝUKOVÝ MATERIÁL. Bratislavská 2166, Varnsdorf, IČO: tel Číslo projektu

1 Základních pojmy z oblasti programování, vyšší programovací jazyky, programovací paradigmata

Programování II. Modularita 2017/18

1 Nejkratší cesta grafem

Základy algoritmizace a programování

Základní datové typy, proměnné - deklarujeme předem - C je case sensitive rozlišuje malá a velká písmena v názvech proměnných a funkcí

Matematika v programovacích

Vstupní požadavky, doporučení a metodické pokyny

Programování v C++ 3, 3. cvičení

2) Napište algoritmus pro vložení položky na konec dvousměrného seznamu. 3) Napište algoritmus pro vyhledání položky v binárním stromu.

Programování v C++ 1, 17. cvičení

Preprocesor. Karel Richta a kol. katedra počítačů FEL ČVUT v Praze. Karel Richta, Martin Hořeňovský, Aleš Hrabalík, 2016

Seminář z Informatiky a výpočetní techniky. Slovanské gymnázium Olomouc 4. září 2014 Tomáš Kühr

Sada 1 - Základy programování

2. lekce Algoritmus, cyklus Miroslav Jílek

Zápis programu v jazyce C#

2 Datové typy v jazyce C

Algoritmizace. Algoritmizace (Y36ALG), Šumperk - 1. přednáška 1

Algoritmizace a programování. Ak. rok 2012/2013 vbp 1. ze 44

VISUAL BASIC. Přehled témat

Úvod do programování. Lekce 1

VÝUKOVÝ MATERIÁL. Bratislavská 2166, Varnsdorf, IČO: tel Číslo projektu

2. Modelovací jazyk UML 2.1 Struktura UML Diagram tříd Asociace OCL. 3. Smalltalk 3.1 Jazyk Pojmenování

8 Třídy, objekty, metody, předávání argumentů metod

NPRG030 Programování I, 2015/16 1 / :25:32

Programové konvence, dokumentace a ladění. Programování II 2. přednáška Alena Buchalcevová

Pokročilé programování v jazyce C pro chemiky (C3220) Úvod do jazyka C++

Předměty. Algoritmizace a programování Seminář z programování. Verze pro akademický rok 2012/2013. Verze pro akademický rok 2012/2013

PROGRAMOVÁNÍ V C++ CVIČENÍ

Objektově orientované programování. Úvod

Dynamicky vázané metody. Pozdní vazba, virtuální metody

Operační systémy. Cvičení 4: Programování v C pod Unixem

Lekce 01 Úvod do algoritmizace

dovolují dělení velkých úloh na menší = dekompozice

Základy programování (IZP)

Řídicí struktury. alg3 1

1 Základy algoritmizace a programování. 1.1 Algoritmus Možnosti zápisu algoritmů. Základy algoritmizace a programování

Překladač a jeho struktura

Obsah přednášky. programovacího jazyka. Motivace. Princip denotační sémantiky Sémantické funkce Výrazy Příkazy Vstup a výstup Kontinuace Program

Název předmětu: Školní rok: Forma studia: Studijní obory: Ročník: Semestr: Typ předmětu: Rozsah a zakončení předmětu:

Programování a algoritmizace

IB015 Neimperativní programování. Organizace a motivace kurzu, programovací jazyk Haskell. Jiří Barnat

PROGRAMOVACÍ JAZYKY A PŘEKLADAČE LEXIKÁLNÍ ANALÝZA

Programovací jazyk C++ Hodina 1

PROMĚNNÉ, KONSTANTY A DATOVÉ TYPY TEORIE DATUM VYTVOŘENÍ: KLÍČOVÁ AKTIVITA: 02 PROGRAMOVÁNÍ 2. ROČNÍK (PRG2) HODINOVÁ DOTACE: 1

Transkript:

DTP Základy programování 01 - Úvod do předmětu

Úvod Co již umíte? Plán předmětu Studijní materiály Způsob ukončení předmětu

Základní pojmy I. Řešený problém: Řešeným nebo zpracovávaným problémem je konkrétní problém z reálného, materiálního světa nebo abstraktní problém, který je produktem lidského intelektu Algoritmus: Algoritmus je postup řešení daného problému. Postup sestává z jednotlivých dílčích kroků. Jestliže se dílčí kroky algoritmu provádějí výlučně jeden po druhém, je algoritmus sekvenční. Je-li přípustné, aby se některé kroky algoritmu prováděly současně, je algoritmus paralelní. Vlastnosti: - determinismus (je jednoznačně dáno pořadí kroků) - obecnost (je vhodný pro celou třídu problémů) - resultativnost (vede ke správnému řešení) -konečnost (konečný počet kroků)

Základní pojmy II. Datová struktura: je abstraktní vyjádření zúčastněných vlastností (atributů) prvků (elementů) řešeného problému. Např. pro prvek student a problém studijní IS datová struktura informace o jménu, datu narození, oboru studia, výsledcích, Správnost algoritmu: je stanovení oborů hodnot proměnných a vztahů mezi proměnnými pro každý příkaz programu. Vztahy se vyjadřují tvrzeními (logickými výroky), vztahujícími se k jednotlivým místům programu a nezávislými na cestě, po níž se k danému místu postup valgoritmu dostane. (* Platí antecedence P *) S; (* Platí konsekvence Q *) Důkaz správnosti může být velmi složitý a nespadá vždy do problematiky algoritmizace (ale např. do oblasti numerické matematiky apod.)

Základní pojmy III. Složitost: Kritérium pro objektivní hodnocení dvou různých algoritmů. Nejčastěji časová a prostorová složitost jako funkce velikosti vstupních dat. Asymptotická časová složitost: - Ο(f(n)) Omikron notace Horní hranice (nejhorší případ) - Θ(f(n)) Theta notace průměrný odhad - Ω(f(n)) Omega notace Dolní hranice (nejlepší případ) Př.: O(c), O(log(n)), O(n), O(n*log(n)), O(n^2), O(n^3), O(k^n)

Programovací jazyky Programovací jazyk: prostředek pro zápis algoritmů, jež mohou být provedeny na počítači. Zápis algoritmu ve zvoleném programovacím jazyce se nazývá program. Programovací jazyk je tedy komunikačním nástrojem mezi programátorem, který v programovacím jazyce formuluje postup řešení daného problému, a počítačem, který program vykonává. Programovací jazyk je soubor pravidel pro zápis algoritmu, odborně řečeno se jedná o formální jazyk. Programovací jazyk má svoje lexikální jednotky, syntaktickou stavbu i sémantiku. V praxi existuje poměrně malý počet konceptů zahrnující stovky jazyků, které byly navrženy nebo implementovány. Nejlepší cesta jak se naučit programovací jazyk je používáním. Zkoušením využívat jazyk k řešení problémů. Psaním malých testovacích programů, na vyzkoušení si základních úloh.

Dělení programovacích jazyků Nižšíprogramovacíjazyky(low level languages): - strojový kód jediný kterému počítač přímo rozumí (je závislý na konkrétním procesoru a jeho instrukční sadě) 11001101 00100001 (0xCD 0x21) - Jazyk symbolických adres (assembly language, assembler - překladač) strojově závislý, pro programátory přístupnější, pojmenování adres a instukcí mov al, 61h Vyšší programovací jazyky zavádějí mnohem větší stupeň abstrakce a obecně nejsou přímo závislé na konkrétním procesoru (jejich překladač ano) Dělení podle způsobu překladu: - kompilované překladač (compiler) převádí zdrojový kód na strojový kód (spustitelný program), ten je pak možné na cílovém počítači přímo provádět - interpretované jazyk se nepřekládá dopředu, ale řeší se až při požadavku na spuštění (pouze se interpretují, částečně překládají do mezikódu nebo i kompletně překládají) pomalejší

Vyšší programovací jazyky I. Procedurální programovací jazyky (imperativní) sekvenční provádění instrukcí a procedur s využitím příkazů pro řízení toku programu - strukturované algoritmus je rozdělen na podproblémy implementované s využitím strukturovaných datových typů a řídících struktur (posloupnost příkazů, větvení, cykly) Např. C, Pascal -objektově-orientované programování (OOP) založeno na objektech (data + metody) a vztazích mezi nimi. Definovány jako třídy, kdy objekt je její instancí. Vlastnosti: Abstrakce, zapouzdření, dědičnost, polymorfismus. Objektově orientovaný přístup zahrnuje i metody analýzy a návrhu programu Kromě čistě OO jazyků (např. Smalltalk) je většinou možné využít i klasického (strukturovaného) přístupu (C++)

Vyšší programovací jazyky II. Funkcionální programovací jazyky řeší algoritmů vyhodnocováním nebo aplikací funkcí na známé hodnoty. Celý program je chápán jako funkce a výsledek je výraz v normální formě. Základem je výpočtový model - λ-kalkul. Př. LISP (list processing) Logické programovací jazyky program se skládá z množiny tvrzení a jejich odvozování a dokazování. Např. PROLOG (založen na predikátové logice 1. řádu)

Prostředky strukturovaných programovací jazyků I. Proměnné a konstanty slouží k práci s hodnotami. Mají svůj datový typ a svoji identifikaci. Datový typ - říká druh možných dat (obor hodnot) a přípustné operátory. - jednoduché (int, char, ) - složené (array, string, ) Př.: int cislo; Operátory určuje jaká operace se bude provádět (+, -, *, &&, ) Výraz skládáse z proměnných konstant a operátorů (a+b, cislo1 < cislo2, ) Příkaz proveditelný výraz (vracející hodnotu) Např.: vysledek = cislo1 + cislo2;

Prostředky strukturovaných programovací jazyků II. Větvení v závislosti na podmínce (vyhodnocení výrazu) dojde odlišnému provádění dalších příkazů Př.: if (a>5) příkaz1; else příkaz2; Cykly provádění části kódů opakovaně (většinou se změněnými hodnotami proměnných) Př.: while (c>='0' && c<='9') { } Funkce: - standardní které nabízí sám jazyk ( printf( Hello ); ) - uživatelské definované programátorem Funkce jsou zaváděny k přehlednějšímu strukturovanému kódu (jedná se prostě o uzavřený celek kódu k určitému účelu) a umožňují opakované volání s různými parametry (jejich počet a typ musí souhlasit při deklaraci funkce i jejím volání) Např.: int secti(int a, int b) { return (a+b); } vysledek = secti(5,8);

Příklad programovacích jazyků C: #include <stdio.h> int main(void) { printf( Hello, World\n ); return 0; } C (jinak): #include <stdio.h> void main() { char* msg="hello World!"; puts(msg); } PASCAL program Hello(Output); begin Writeln( Hello World ); End. C++: #include <string.h> #include <stdio.h> class Message { private: char msg[50]; public: Message(char* s) {strcpy(msg,s);}; void print() {puts(msg);}; }; void main() { m = new Message("Hello World!"); m->print(); delete m; } C++ (neobjektová varianta) #include <iostream> #include <string> using namespace std; int main() { string msg("hello World!"); cout << msg; return 0; } LISP: ( (setq msg "Hello World") (print 'msg)) PROLOG: Message is "Hello World" Message?

Zásady psaní programů Vhodně pojmenovávat identifikátory Vhodně strukturovat kód (používání uživatelských funkcí apod.) Přehledně upravovat zdrojový kód (odsazování apod.) Psát komentáře!

Překlad Řádkovým příkazem: Q:\gcc.exe hello.c -o hello.exe -std=c99 -Wall - pedantic W Q:\hello.exe Pomocí makefile (textový soubor s příkazy a parametry překladu, překlad se pak volá příkazem make ) Pomocí IDE (Integrated development environment) vývojové prostředí s možnostmi překladu a ladění programů

Vývojová prostředí I. III.

Vývojová prostředí II.

KONEC Děkuji za pozornost DOTAZY? Příště