IAJCE 07/08 Přednáška č. 1. naučit myslet transformace reálných problémů na funkční programy základy programování



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

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

Algoritmizace. Cíle předmětu

Lekce 01 Úvod do algoritmizace

Úvod do programování

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

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

Osobní počítač. Zpracoval: ict Aktualizace:

Základní pojmy informačních technologií

Algoritmizace. 1. Úvod. Algoritmus

Výukový materiál zpracován v rámci projektu EU peníze školám

Maturitní témata Školní rok: 2015/2016

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

Logické operace. Datový typ bool. Relační operátory. Logické operátory. IAJCE Přednáška č. 3. může nabýt hodnot: o true o false

VISUAL BASIC. Přehled témat

Co je to počítač? Počítač je stroj pro zpracování informací Jaké jsou základní části počítače? Monitor, počítač (CASE), klávesnice, myš

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

Algoritmizace a programování

Základní pojmy. Program: Algoritmus zapsaný v programovacím jazyce, který řeší nějaký konkrétní úkol. Jedná se o posloupnost instrukcí.

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

Profilová část maturitní zkoušky 2017/2018

Program a životní cyklus programu

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

Profilová část maturitní zkoušky 2013/2014

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

Profilová část maturitní zkoušky 2014/2015

IAJCE Přednáška č. 9. int[] pole = new int[pocet] int max = pole[0]; int id; for(int i =1; i< pole.length; i++) { // nikoli 0 if (Pole[i] > max) {

Algoritmizace. Obrázek 1: Přeložení programu překladačem

Úvod Seznámení s předmětem Co je.net Vlastnosti.NET Konec. Programování v C# Úvodní slovo 1 / 25

INFORMAČNÍ SYSTÉMY. RNDr. Karel Hrach, Ph.D. (Velká Hradební 15, pracovna 2.03) Prezentace viz Studium / Studijní materiály (v menu nalevo)

Střední škola pedagogická, hotelnictví a služeb, Litoměříce, příspěvková organizace

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

Obsah. Předmluva 13 Zpětná vazba od čtenářů 14 Zdrojové kódy ke knize 15 Errata 15

Gymnázium a Střední odborná škola, Rokycany, Mládežníků 1115

INFORMAČNÍ SYSTÉMY. RNDr. Karel Hrach, Ph.D. (Velká Hradební 15, pracovna 2.03) Prezentace viz Studium / Studijní materiály (v menu nalevo)

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

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

Algoritmizace řazení Bubble Sort

Architektura počítačů

Gymnázium Vysoké Mýto nám. Vaňorného 163, Vysoké Mýto

1. Informace a informatika

Informatika pro 8. ročník. Hardware

C2115 Praktický úvod do superpočítání

1 Osobní počítač Obecně o počítačích Technické a programové vybavení... 4

Úvod. Programovací paradigmata

Gymnázium a Střední odborná škola, Rokycany, Mládežníků 1115

Profilová část maturitní zkoušky 2015/2016

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

Práce v textovém editoru

Seznámení s prostředím dot.net Framework

Martin Hejtmánek hejtmmar

Sběrnicová struktura PC Procesory PC funkce, vlastnosti Interní počítačové paměti PC

Algoritmus (nebo dřívějším pravopisem algorithmus)

KAPITOLA 1 - ZÁKLADNÍ POJMY INFORMAČNÍCH A KOMUNIKAČNÍCH TECHNOLOGIÍ

11. Přehled prog. jazyků

Úvod do programovacích jazyků (Java)

Vývojové diagramy 1/7

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

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

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

VÝUKOVÝ MATERIÁL. 3. ročník učebního oboru Elektrikář Přílohy. bez příloh. Identifikační údaje školy

Hardware - komponenty počítačů Von Neumannova koncepce počítače. Von Neumannova koncepce počítače

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

ALGORITMIZACE A PROGRAMOVÁNÍ

Programovací jazyk Pascal

Inovace a zkvalitnění výuky prostřednictvím ICT Základy programování a algoritmizace úloh Třídění dat. Ing. Hodál Jaroslav, Ph.D. VY_32_INOVACE_26 04

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

Programovací jazyky Přehled a vývoj

Přednášky o výpočetní technice. Hardware teoreticky. Adam Dominec 2010

NPRG030 Programování I, 2018/19 1 / :03:07

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

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

2. lekce Algoritmus, cyklus Miroslav Jílek

Překladač a jeho struktura

Gymnázium Vysoké Mýto nám. Vaňorného 163, Vysoké Mýto

Algoritmizace prostorových úloh

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:

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

VZDĚLÁVACÍ MATERIÁL III/2

Informační Systém pro Psychiatrii HIPPO

Operační systémy. Jednoduché stránkování. Virtuální paměť. Příklad: jednoduché stránkování. Virtuální paměť se stránkování. Memory Management Unit

SADA VY_32_INOVACE_PP1

Střední škola pedagogická, hotelnictví a služeb, Litoměříce, příspěvková organizace

Programování a algoritmizace

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

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

Ahoj mami. Uložení dat v počítači. Příklady kódování dat. IAJCE Přednáška č. 4

Wichterlovo gymnázium, Ostrava-Poruba, příspěvková organizace. Maturitní otázky z předmětu INFORMATIKA A VÝPOČETNÍ TECHNIKA

Architektury počítačů a procesorů

ANOTACE vytvořených/inovovaných materiálů

Základy algoritmizace

OTÁZKY K ZÁVĚREČNÉ ZKOUŠCE Z INFORMAČNÍCH A KOMUNIKAČNÍCH TECHNOLOGIÍ

ALGORITMIZACE A DATOVÉ STRUKTURY (14ASD) 1. cvičení

Ing. Igor Kopetschke TUL, NTI

Objektově orientované programování

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

Algoritmus. Přesné znění definice algoritmu zní: Algoritmus je procedura proveditelná Turingovým strojem.

1. Programování proti rozhraní

Datacard. Instrukce k aktualizaci firmware tiskáren. Aktualizační aplikace pro operační systémy Windows

KTE / ZPE Informační technologie

Transkript:

Úvod Literatura: Předmět = úvod do programování menší úpravy oproti min. semestru http://webak.upce.cz/~hajek/iajce/ Vaše poznámky Virius M.: C# pro zelenáče, nakladatelství Neocortex Slidy z přednášek <> kniha, ale o pomůcka přednášejícího o ulehčení vašich záznamů Cíle naučit myslet transformace reálných problémů na funkční programy základy programování Předpoklady Zápočet Zkouška Hodnocení logické myšlení znalost pojmů: HW/SW, operační systém, soubor,... základní obsluha PC (OS Windows) viz cvičení části o praktická jednoduchý program v C#, 60 min o teoretická 3 otázky z předem daného seznamu, písemná příprava + diskuze ukázka příkladu a seznam otázek viz www nelze dělat zkoušku po částech žádné pomocné materiály zkouší se porozumění, učení nazpaměť nic neřeší praktická část: o program musí jít přeložit, spustit a musí pracovat dle zadání o dokončení s vyžádanou dopomocí zkoušejícího nelze dostat 1 známka subjektivně dle předvedeného výkonu 1

Poznámky začátečník = nutné průběžné studium angličtina účel přednášek = vysvětlit, když něčemu nerozumím, okamžitě se zeptám účast nepovinná, když to nepotřebuji, na přednášky nechodím Počítačové jednotky informace Počítač bit (binary digit) o 1 bit = 1 b o jedna číslice ve dvojkové soustavě, lze uložit informaci 0/1 N b lze uložit 2 N různých hodnot Bajt (Byte) o 1 B = 8 b o 2 8 = 256 hodnot násobitelé v digitální technice základ 2, nikoli 10: k 10 3 = 1000 K 2 10 = 1024 M = K*K 2 10 * 2 10 = 2 20 = 1 048 576 G = K*M 2 30 = 1 073 741 824 T = M*M 2 40 = univerzální stroj na automatické zpracování informace. Vlastnosti o struktura nezávislá od zpracovávaných problémů o nutné zvenčí zavést návod na zpracování program o program zpracovává data = užitečná informace jako vstup i výstup (čísla, texty, obrázky, apod.) Počítač třídy PC (Personal Computer) vnitřní uspořádání (architektura) o tzv. Von Neumannova architektura společná paměť pro program i data paměť data program Vstup CPU Výstup 2

volitelný poměr program / data o HW pohled = elektronické zařízení, pracující pouze ve dvojkové soustavě dvojková soustava = ON/OFF (např. 5V / 0V) Vstupní a výstupní zařízení Procesor Paměť (I/O = input/output) výměna informací mezi počítačem a okolím vstupní zařízení = převod informací do číselné (dvojková soustava) podoby o klávesnice, scanner, zvuková karta,... výstupní obráceně do podoby srozumitelné okolí o monitor, tiskárna, zvuková karta (Central Processing Unit) srdce počítače dle pokynů programu zpracovává data vykonává pouze jednoduché, elementární operace = instrukce o Základní aritmetické operace (+-*/) o Logické operace (AND, OR, NOT, XOR) o Přesuny dat (CPU paměť, paměť paměť). o větvení, skoky strojový kód SK = program jako posloupnost instrukcí z uživatelského (programátorského) pohledu schránka na data ; průběžně očíslovaná paměťová místa PM Paměť???? - 1 PM j o h položka 6 5 4 a 3 2-30 1 10 0 adresa o číslo PM = adresa o obsah PM = položka 3

o velikost PM z kolika bitů je složeno skutečnost dle počítače (8 b, 32 b) IAJCE jak budeme potřebovat základní parametry o vybavovací, přístupová doba = doba od vydání příkazu (CPU) do jeho splnění (pamětí) o kapacita = množství uložitelné informace (v B) paměti v PC o vnitřní operační paměť, RAM na bázi polovodičů kapacita dnes 100ky MB až 1ky GB vybavovací doba 1-ky ns obsah se po vypnutí napájení ztrácí. Algoritmus Definice obr. Von Neumannova architektura paměť o vnější dlouhodobé uložení dat, obsah zachován i po vypnutí napájení HDD (magnetický záznam), CD-ROM, CD-RW (optický), FLASH Disc (polovodičový) kapacita 100-ky GB, jednotky TB vybavovací doba 1-ky ms obr. Von Neumannova architektura = I/O zařízení další info viz http://cs.wikipedia.org/wiki/algoritmus = přesný návod či postup, kterým lze vyřešit daný typ úlohy o příklad: start motoru automobilu 1) sešlápnutí spojky 2) otočení klíčkem do polohy II 3) čekej, dokud nezhasnou kontrolky 4) otočení klíčkem do polohy III 5) jestliže motor do 5 s nenaskočí, čekej 5 s a opakuj vše od bodu 1... v programování = teoretický princip řešení problému o Příklad: třídící algoritmy = jak seřadit položky (čísla, slova,...) dle velikosti Bubble sort, Select sort, Quick sort různý princip, dle toho rychlost třídění, spotřeba paměti,... 4

Vlastnosti algoritmů Determinismus: o Každý krok algoritmu jednoznačně definován (v rámci množiny příkazů cíle algoritmu) Př.: algoritmus pro jízdu autem: řidič: nastartuj zařaď 1... ne-řidič: 1) sešlápnutí spojky 2) otočení klíčkem do polohy II... robot: 1) levou nohu přesuň na souřadnici X 2,Y 2,Z 2 (spojka) 2) levou nohou proveď pohyb R,, (sešlápni spojku)... o co, jak, kdy se má provést, jak se bude pokračovat. Př.: chybný algoritmus 1) sešlápnutí spojky 2) otočení klíčkem do jaké polohy 3) čekej, dokud nezhasnou kontrolky 4) otočení klíčkem do polohy III 5) motor naskočí, start dokončen co když ne o Elementárnost: každý krok musí být pro cíl algoritmu jednoznačně determinován Konečnost: algoritmus musí skončit v konečném počtu kroků. o Př.: chybný algoritmus: 1) sešlápnutí spojky... 5) jestliže motor do 5 s nenaskočí, čekej 5 s a opakuj vše od bodu 1 co když nenaskočí nikdy Vstupy = data, která jsou mu předány před započetím jeho provádění, nebo v průběhu jeho činnosti. o Třídění: data ke třídění Výstupy = odpovědi na problém, který algoritmus řeší. o Třídění: setříděná data Efektivita: posouzení využití daných prostředků algoritmem o Př.: Quick Sort je (časově) efektivnější než Bubble Sort (= rychlejší) o pojem: složitost algoritmu Obecnost: algoritmus řeší obecnou třídu problémů o setřiď 2 položky vs. N položek 5

Terminologie v programování Programovací jazyk (PJ) = prostředek pro zápis algoritmů, jež mohou být provedeny na počítači o jazyk (viz např. http://en.wikipedia.org/wiki/language) = soubor symbolů, výrazových prostředků a pravidel pro jejich využití prostředek komunikace mezi subjekty (PJ čitelný pro člověka, zpracovatelný počítačem) program = zápis algoritmu ve zvoleném programovacím jazyce zdrojový kód ZK (source code) o = vlastní text programu o posloupnost příkazů v PJ v textových souborech překlad (kompilace) programu = proces transformace ZK na strojový kód SK o SK na PC s OS fy Microsoft = soubor *.exe (executable), také program překladač (kompilátor) = program provádějící překlad aplikace = program s dalšími podpůrnými soubory (nápověda, DLL knihovny,...), řešící daný problém o často záměna program = aplikace o Příklad: Aplikace: MS Word, základ: winword.exe spuštění programu (na PC) OS provede kopii *.exe z vnější paměti do RAM a předá řízení programu ladění programu (Debugging) = proces hledání a odstraňování chyb v programech instalace programu = proces kopie aplikace do počítače (vnější paměti) z distribučního média (CD, Internet) Úvod do jazyka C# Sí šárp vznik cca rok 2000, tvůrce = Microsoft standardizován 2003 ECMA-334 C# Language Specification primární PJ pro platformu.net (.NET Framework, dot net ).NET =: o http://en.wikipedia.org/wiki/.net_framework o programovací jazyky (C#, C++, Visual Basic.NET] o vývojové nástroje (Visual Studio) o běhové prostředí (.NET runtime package) = virtuální počítač (nadstavba OS), kde programy pro.net běží Výhody: jednoduchý, bezpečný, plně OOP Nevýhody o Jen Windows (omezeně Linux Project Mono, viz http://www.mono-project.com/main_page) o Pomalý, velká spotřeba paměti 6

Příklad Hello world ZK v txt souboru program.cs class Program static void Main(string[] args) System.Console.WriteLine("Můj první program!"); překladač C# c:\windows\microsoft.net\framework\v???\csc.exe o??? je verze.net frameworku Překlad: o csc.exe program.cs o výsledek: program.exe spuštění o program.exe Hello world v různých programovacích jazycích http://en.wikibooks.org/wiki/list_of_hello_world_programs Syntaxe a sémantika PJ Syntaxe = souhrn pravidel udávajících přípustné tvary dílčích konstrukcí a celého programu. Př.: Neúplná podmínka o správná syntaxe if (plat < 5000) Console.WriteLine("Ahoj"); 7

Sémantika o Špatně if plat < 5000 Console.WriteLine("Ahoj") nutno bez výhrady dodržovat syntakticky nesprávný program nelze zkompilovat = význam jednotlivých konstrukcí if (a > 3) Console.WriteLine("Ahoj"); jestliže je a > 3, pak vytiskni Ahoj, jinak nedělej nic Další prostředky pro zápis algoritmů Pseudojazyk Pseudojazyk Vývojový diagram (pseudocode) Chybí ( Chybí ) PJ s univerzální syntaxí srozumitelnou všem programátorům žádná syntaktická pravidla Chybí ; Příklad z http://en.wikipedia.org/wiki/pseudocode o jazyk PHP <?php if (is_valid($cc_number)) execute_transaction($cc_number, $order); else show_failure();?> o pseudojazyk if credit card number is valid execute transaction based on number and order else show a generic failure message end if použití: komunikace mezi programátory napříč jazyky, knihy,... 8

Vývojový diagram viz ČSN ISO 5807 "Zpracování informací = symbolický jazyk pro vizuální znázornění algoritmů značky + doplňující textové informace (nemoralizováno) výběr nejdůležitějších značek Mezní značka Předem definovaná činnost START END Nastartuj auto Vstup Výstup Rozhodování Vstup: X, Y Tisk: Teplota X > 0 NE < 0 X > 0 ANO = 0 Zpracování týden X = X +1 1 2 3 4 Spojky na téže stránce mezi stránkami spojnice 1 2 1 2 9

Příklad algoritmizace úlohy Vytiskni N-krát dané slovo o poc = počítadlo tisků; pomocný záznam nutný pro běh algoritmu Vývojový diagram Start 1 Vstup: slovo, N poc = 1 poc <= N ANO poc = poc + 1 NE 1 Tisk: slovo Konec Pseudojazyk pocitadlo = 0 N = 2 slovo = Ahoj dokud (pocitadlo < N) prováděj begin vypiš slovo pocitadlo = pocitadlo + 1 end Programovací jazyk C# Pascal int pocitadlo = 0; int N = 2; string slovo = "Ahoj"; while (pocitadlo < N) Console.WriteLine(slovo); pocitadlo++; var pocitadlo, N: integer; var slovo: string; pocitadlo := 0; N := 2; slovo := "Ahoj"; while (pocitadlo < N) do begin writeln(slovo); pocitadlo := pocitadlo + 1; end 10