PPA 1 Počítače a programování-základní pojmy, algoritmus, úvod do programovacího jazyka Java
Základy počítačů Výpočetní systém: hardware + software Hardware: technické vybavení (komponenty) počítače Software: programové vybavení (instrukce které určují co má hardware dělat)
Základní části počítače Architektura číslicového počítače (John von Neumann) Processor (CPU) Centrální jednotka počítače Interpretuje a provádí instrukce Řadič + Aritmeticko-logická jednotka Paměť operační & vnější uchovává data and instrukce Vstupní zařízení myš, klávesnice, atd. Výstupní zařízení display, tiskárna, atd. Paměť (main & auxiliary) Vstupní zařízení (klávesnice, myš, scanner atd.) Procesor (CPU) Výstupní zařízení (display, tiskárna atd.)
Paměť Operační (RWM) Vnější pracovní oblast uchovává běžící a programy jejich data Vnější energeticky nezávislá uchovává programy a jejich výsledky diskety, pevné disky, CDROM, DVDROM, pásky atd.
Organizace dat v operační paměti Bit = jedna dvojková číslice Dvojková číslice může nabývat dvou hodnot 0 nebo 1(pravda/nepravda) Byte = 8 bitů Kapacita paměti v násobcích bytů 1KB (kilobyte) – 210 = 1024 bitů 1MB (megabyte) – 220 = 1048576 bitů 1GB (gigabyte) – 230 = 1073741824 bitů Operační paměť je obvykle “Byte Addressable” - obsahuje jeden byte dat v každé adresovatelné pozici Počet bytů se pro libovolné datové položky (datové typy) může měnit
Organizace dat ve vnější paměti
Systémové programové vybavení Řešení úloh na „holém“ počítači je obtížné, programátor se musí zabývat obsluhou základních prostředků systémové programové vybavení Systémové programové vybavení transformuje „holý počítač“ na tzv. virtuální počítač, který je z hlediska ovládání výhodnější.
Systémové programové vybavení Uživatel Aplikační programy Systémové programy Operační systém Hardware
Systémové programové vybavení Operační systém – základní programové vybavení, které má uživatel k dispozici. Je to soubor programů, které zajišťují základní komunikaci mezi jednotlivými komponentami počítače. Systémové programy : prostředky pro údržbu systému, prostředky pro vytváření aplikačních programů ladící prostředky editory překladače assembler zaváděč programy pro údržbu
Systémové programové vybavení Aplikační programy : vlastní firemní textové procesory tabulkové kalkulátory CAD systémy databázové programy atd.
Řešení úloh na počítači Etapy: definice problému nástin řešení sestavení algoritmu kódování programu ladění programu zpracování dokumentace a údržba programu
Řešení úloh na počítači Definice problému jaká budou vstupní data jaká budou výstupní data jak bude program reagovat na nesprávné, popř. neúplné vstupy
Řešení úloh na počítači Nástin řešení rozmyšlení a návrh celkové strategie řešení problému (např. výběr vhodných numerických metod atd.) částečný rozklad na podproblémy, které mohou být řešeny samostatně jednotlivými členy týmu definice rozhraní mezi jednotlivými podproblémy
Řešení úloh na počítači Sestavení algoritmu - algoritmizace Algoritmus = návod, jak provést určitou činnost, který splňuje následující vlastnosti : je elementární, tj. skládá se z konečného počtu jednoduchých, snadno realizovatelných činností (kroků) je determinovaný, tj. po každém kroku lze určit, zda proces skončil, popř. jakým krokem se bude pokračovat. je konečný, tj. počet opakování jednotlivých kroků algoritmu je vždy konečný. je rezultativní, tj. vede ke správnému výsledku. je hromadný, tj. lze jej použít k řešení velké skupiny podobných úloh
Metody návrhu algoritmu: shora dolů = opakovaný rozklad složitějších problémů na jednodušší zdola nahoru = z elementárních prostředků postupně vytváříme celek Základní složky algoritmu: posloupnost (sekvence) - je tvořena jedním nebo několika kroky, které se provedou právě jednou v daném pořadí cyklus (iterace) - část algoritmu, která se opakuje na základě splnění určité podmínky. Skládá se z podmínky opakování a z těla cyklu. podmíněná operace (selekce) - představuje větvení algoritmu. Je tvořena podmínkou a jednou, dvěma, nebo více výběrovými složkami
Posloupnost Selekce Vstup/výstup Popis algoritmů Vývojové diagramy - znázorňují "tok řízení" v algoritmu. Značky jsou upravené normou. Posloupnost Selekce Vstup/výstup ¨ Podprogram Začátek/konec Spojka Zápis algoritmu přímo v programovacím jazyku (Java, Pascal, C) nebo v pseudojazyku ( obvykle podmnožina příkazů programovacího jazyka ).
Hierarchie programovacích jazyků High Level Language Assembly Language Machine Language Hardware
Programovací jazyky Vyšší programovací jazyk (HLL) nejblíž k přirozenému jazyku slova, čísla, matematické symboly symbols nesrozumitelný pro hardware počítače “přenositelný” zdrojový kód (hardware independent) Java, C, C++, COBOL, FORTRAN, BASIC, Lisp, Ada, etc. Strojový jazyk (lowest level) jazyk srozumitelný hardwaru počítače, nepřehledný pro člověka používá pouze 0 a 1 lze provádět jakékoliv operace s hw výpočetního systému nepřenosný na úrovni hardware (hardware dependent)
Překladače programovacích jazyků provádí překlad z jednoho programovacího jazyka do strojového kódu, popř. do jiného jazyka 2 základní typy překladačů kompilační překladače Interpretační překladače
Kompilační překladač Zdrojový kód cílový program knihovny Vstupní data Sestavovací program program ve strojovém jazyce Vstupní data výpočet Výstupní data
Interpretační překladač Zdrojový kód Interpretační překladač Výstupní data vstupní data
Zpracování dokumentace a udržování programu Uživatelská = návod k použití. Obsahuje stručný popis funkce programu, popis tvaru vstupních a výstupních dat, způsob spouštění a popis významu signalizovaných chyb. technická (programátorská) je podkladem pro opravy, popř. úpravy programu, a to i jinými osobami, než je autor programu. Hlavní částí musí být detailní a srozumitelný popis algoritmu.
Programovací jazyk Java – základní pojmy, realizace prvního programu 1991 – Sun – jazyk Oak – Java – na principech C, C++ - pro ovládání „vestavěných systémů“ – běžná zařízení ovládaná mikroprocesorem Zpracování programu v Javě – 5 fází : editace překlad (ne do .Obj, ale do pseudojazyka zvaného byte-code – tento pseudojazyk je pak interpretován JVM – java virtual machine) zavedení ověřování (typické pro Javu) – vyšší bezpečnost spuštěného programu provádění
Java Program Translation Both Compilation and Interpretation Intermediate Code: “Byte Code” portable low-level code similar to assembly code, but hardware independent invisible to Java programmer Interpreter translates from generic byte code to hardware-specific machine code Java Program Data for Java Program Java Compiler Java Virtual Machine Byte-Code Program Byte-Code Interpreter Machine-Language Instructions Computer Execution of Machine-Language Instructions Output of Java Program
Java Program Translation Including Linker Previously Compiled Helper Programs Data for Java Program Java Compiler Java Virtual Machine Byte-Code Program Byte-Code Interpreter Machine-Language Instructions Linker Computer Execution of Machine-Language Instructions Output of Java Program
Programovací jazyk Java Dva typy programů : aplikace applety –používané na WWW stránkách – liší se od aplikací ve fázi zavádění - jsou do paměti počítače zaváděny internetovým prohlížečem (Netscape, MSIE) a ve fázi ověřování – přísnější pravidla při kontrole byte-code
Vývojové nástroje Java Lze získat zdarma na www.javasoft.com JDK (Java Development Kit) J2SDK (Standard development kit) Java Core API (Application Programming interface) – aplikační programové rozhranní – knihovní třídy které jsou považovány za standardní a musí se vyskytovat v každém prostředí kde se Java používá C:\Program Files\jdk1.2.2\docs\api\index.html – dokumentace ke Core API
Přenositelnost : Java platforma – JVM (Java Virtual Machine) JIT kompilátor (Just in time) – v době zavádění se programpřeloží on-line do strojového kódu – rychlejší běh aplikace Java Core APi
Přeložení a spuštění programu v Javě v textovém editoru (notepad) vytvořit program Příklad jednoduchého programu: public class První { public static void main(String[] args) { System.out.println(” Ahoj ”); } program uložit do souboru První.java spustit překladač javac.exe : javac První.java
Přeložení a spuštění programu v Javě Po úspěšném překladu vznikne soubor První.class Spustit První.class pomocí interpreteru java.exe java První Po úspěšném spuštění se na obrazovce objeví nápis Ahoj Možné problémy : Nejde spustit javac.exe nebo java.exe : zkontrolovat cestu do adresáře, kde javac.exe a java.exe leží : např. c:\Program Files\ j2sdk\bin jméno třídy (identifikátor za class) musí souhlasit se jménem souboru. !!!! Pozor na velká a malá písmena - Java je rozlišuje !!!! – jinak program nejde přeložit
Struktura programu v Javě Hlavní program (metoda) se musí jmenovat main a musí být v programu vždy uvedena (včetně magických slovíček před a za – budou vysvětlena později ) a musí být uvnitř nějaké třídy (class). Na jméně třídy nezáleží, ale třída se musí jmenovat jako soubor ve kterém je uložena (včetně dodržení velkých a malých písmen ) public class jmeno { public static void main (String[ ] args) { …… tělo programu }
Základní dovednosti v Javě Komentáře jednořádkový komentář // komentář do konce řádky Komentářový blok /* */ dokumnetační komentář /** */ - používá se pro automatické generování dokumentace programem javadoc.exe – dokumentace ve formátu HTML -> dokumentační komentář může obsahovat většinu značek formátu HTML Nelze používat vnořené komentáře např. /* začátek komentáře /* vnoření */ konec komentaáře */
Základní dovednosti v Javě Identifikátory – slouží k označení proměnných, metod, tříd, objektů. délka identifikátorů není omezena, !!! musí !!! začínat písmenem nebo podtržítkem, jako další znaky se mohou vyskytnout i číslice, nesmí to být rezervovaná slova, jsou case-sensitive tj. Jmeno, jmeno, JMENO jsou rozdílné ident. Je nutné dodržovat určité konvence – jsou použity v Java Core API třídy a rozhranní : identifikátor začíná vždy velkým písmenem ostatní písmena jsou malá, u víceslovných – každé slovo začíná velkým písmenem Metody a proměnné : začátek malým písmenem, u víceslovných – každé další slovo začíná velkým písmenem balíky : pouze malá písmena (složeniny s tečkou) konstanty : pouze velká písmena, u víceslovných oddělena podtržítkem