Řízení toku programu Programátor musí být schopen nějak ovlivňovat běh programu a k tomu má několik možností:

Podobné dokumenty
Programovací jazyk Pascal

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

Object Pascal je přísně typový procedurální jazyk, který umožňuje jak strukturované, tak objektově orientované programování.

NPRG030 Programování I, 2017/18 1 / :22:16

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

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

- znakové konstanty v apostrofech, např. a, +, (znak mezera) - proměnná zabírá 1 byte, obsahuje kód příslušného znaku

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

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

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

Činnost: 1) Vyhodnotí se výraz E. 2) Jeho hodnota se uloží do proměnné V.

Úvod do programování

Identifikátory označují objekty v programu používané (proměnné, typy, podprogramy).

Implementace seznamů do prostředí DELPHI pomocí lineárního seznamu

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

Sada 1 - Základy programování

PROGRAMOVÁNÍ V SHELLU

CZ.1.07/1.5.00/

VISUAL BASIC. Práce se soubory

TTreeView je ten strom vlevo (vzhled se dá upravovat) a TListView je ten seznam vpravo (včetně volitelných módů zobrazení jako ikony).

1. D Y N A M I C K É DAT O V É STRUKTUR Y

Tematický celek Proměnné. Proměnné slouží k dočasnému uchovávání hodnot během provádění aplikace Deklarace proměnných

Aplikovaná informatika. Podklady předmětu Aplikovaná informatika pro akademický rok 2006/2007 Radim Farana. Obsah. Obsah předmětu

NPRG030 Programování I, 2010/11

Příklad : String txt1 = new String( Ahoj vsichni! ); //vytvoří instanci třídy String a přiřadí ji vnitřní hodnotu Ahoj vsichni!

ALGORITMIZACE A PROGRAMOVÁNÍ

Základy programovacího jazyka Turbo Pascal

Příklady: (y + (sin(2*x) + 1)*2)/ /2 * 5 = 8.5 (1+3)/2 * 5 = /(2 * 5) = 1.3. Pavel Töpfer, 2017 Programování 1-3 1

NPRG030 Programování I, 2016/17 1 / :58:13

Pseudonáhodná čísla = algoritmicky generovaná náhrada za náhodná čísla

Cvičení 7: Delphi objekty CheckedBox, Radio- Button, EditBox

type Obdelnik = array [1..3, 1..4] of integer; var M: Obdelnik;

2.1 Podmínka typu case Cykly Cyklus s podmínkou na začátku Cyklus s podmínkou na konci... 5

Sada 1 - PHP. 03. Proměnné, konstanty

1. Implementace funkce počet vrcholů. Předmět: Algoritmizace praktické aplikace (3ALGA)

Programování 2 (NMIN102) Soubory. RNDr. Michal Žemlička, Ph.D.

Visual Basic for Applications

Základy programování Proměnné Procedury, funkce, události Operátory a podmínková logika Objekt Range a Cells, odkazy Vlastnosti, metody a události

EVROPSKÝ SOCIÁLNÍ FOND. Úvod do PHP PRAHA & EU INVESTUJEME DO VAŠÍ BUDOUCNOSTI

Software602 Form Designer

Sada 1 - Základy programování

Příkazy preprocesoru - Před překladem kódu překladačem mu předpřipraví kód preprocesor - Preprocesor vypouští nadbytečné (prázdné) mezery a řádky -

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:

Basic256 - úvod do programování Příklady. ing. petr polách

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

Test z programování v jazyce VBA v rámci předmětu Počítače II Vzorová zadání a vypracování

2 Strukturované datové typy Pole Záznam Množina... 4

- znakové konstanty v apostrofech, např. a, +, (znak mezera) - proměnná zabírá 1 byte, obsahuje kód příslušného znaku

Programy v prostředí operačního systému

ŘÍDÍCÍ STRUKTURY - PODMÍNKY

Programování. Programování s řetězci. Martin Urza

Test prvočíselnosti. Úkol: otestovat dané číslo N, zda je prvočíslem

6 Příkazy řízení toku

Počítačová simulace logistických procesů I. 11. přednáška Programování v SimTalk. ŠAVŠ, Fábry

O datových typech a jejich kontrole

Soubory. Hung Hoang Dieu. Department of Mathematics Faculty of Nuclear Sciences and Physical Engineering Czech Technical University in Prague 1 / 7

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

Program a životní cyklus programu

Dynamické datové typy a struktury

Zápis programu v jazyce C#

PSK3-9. Základy skriptování. Hlavička

- jak udělat konstantu long int: L long velka = 78L;

Abstraktní datové typy FRONTA

6. Příkazy a řídící struktury v Javě

Klasický podprogram, který nazýváme procedura. Jedná se v podstatě o příkaz. 1

Jazyk VHDL konstanty, signály a proměnné. Jazyk VHDL paralelní a sekvenční doména. Kurz A0B38FPGA Aplikace hradlových polí

Sada 1 - Základy programování

Program převod z desítkové na dvojkovou soustavu: /* Prevod desitkove na binarni */ #include <stdio.h>

1.1 Struktura programu v Pascalu Vstup a výstup Operátory a některé matematické funkce 5

DSL manuál. Ing. Jan Hranáč. 27. října V této kapitole je stručný průvodce k tvorbě v systému DrdSim a (v

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.

MS Excel Základy maker. Operační program Vzdělávání pro konkurenceschopnost. Projekt Zvyšování IT gramotnosti zaměstnanců vybraných fakult MU

5a. Makra Visual Basic pro Microsoft Escel. Vytvořil Institut biostatistiky a analýz, Masarykova univerzita J. Kalina

Přednáška 7. Celočíselná aritmetika. Návratový kód. Příkazy pro větvení výpočtu. Cykly. Předčasné ukončení cyklu.

Tematický celek Práce ze soubory. 5.2 Objektový model FSO. - slouží pro ukládání záznamů, - každý ze záznamů obsahu jedno nebo více polí.

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

Úvod do Matlabu. Praha & EU: Investujeme do vaší budoucnosti. 1 / 24 Úvod do Matlabu

Zadání: TÉMA: Zápis algoritmu, čtení textového souboru, porovnání řetězců.

Skriptování co se do minula nevešlo, práce s řetězci a řešení rovnic

Datové typy a struktury

C2110 Operační systém UNIX a základy programování

Funkce, podmíněný příkaz if-else, příkaz cyklu for

Paměť počítače. alg2 1

Programování v jazyce JavaScript

SPJA, cvičení 1. ipython, python, skripty. základy syntaxe: základní datové typy, řetězce. podmínky: if-elif-else, vyhodnocení logických výrazů

Programování: základní konstrukce, příklady, aplikace. IB111 Programování a algoritmizace

Popis funkcí a parametrů programu. Reliance External communicator. Verze 1.5.0

WSH Windows Script Hosting. OSY 2 Přednáška číslo 2 opravená verze z

Programování v jazyce JavaScript

Sada 1 - Základy programování

Sada 1 - Základy programování

Rozšíření ksh vůči sh při práci s proměnnými

Formátové specifikace formátovací řetězce

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

Čtvrtek 3. listopadu. Makra v Excelu. Obecná definice makra: Spouštění makra: Druhy maker, způsoby tvorby a jejich ukládání

PODPORA ELEKTRONICKÝCH FOREM VÝUKY

Skripta ke školení. Základy VBA. vypracoval: Tomáš Herout. tel:

MS Excel makra a VBA

Struktura programu v době běhu

Začínáme vážně programovat. Řídící struktury Přetypování Vstupně výstupní operace Vlastní tvorba programů

Transkript:

Delphi lekce 7 Minimum z Object Pascalu (část 2) Řízení toku programu Programátor musí být schopen nějak ovlivňovat běh programu a k tomu má několik možností: Větvení cykly větvení volání podprogramů V podstatě máme dvě možnosti, příkaz IF a CASE. if boolean-výraz then příkaz1 else příkaz2; Kde oba příkazy mohou být složené příkazy (tj. posloupnost, end) a část else je nepovinná. case ordinální-typ of polozka1: příkaz1; polozka2, polozka3: příkaz2; polozka4..polozka10: příkaz3; else příkaz4; Všimněte si, že parametrem case může být i interval. Ohledně ordinálního typu viz minulá lekce. Cykly Máme tři možnosti: While, Repeat until a For. Repeat syntaxe: repeat příkaz1;...; příkazn; until výraz;

Pokud výraz vrátí True je cyklus ukončen. Důležité je, že test je proveden až po, tj. nejmeně jedna iterace cyklu je provedena. repeat Write('Vložte hodnotu (0..9): '); Readln(I); until (I >= 0) and (I <= 9); While syntaxe: while výraz do příkaz(y) while not ds.eof do // zpracování řádku ds.next; Hlavní rozdíl proti repeat-until je provedení testu před provedením prvního příkazu, tj. nemusí být proveden ani jedna iterace. For Tento cyklus (v základní variantě) potřebuje přesný počet iterací. for počitadlo := hodnotaod to hodnotado do příkaz (např. 1 to 10) nebo sestupně for počitadlo := hodnotaod downto hodnotado do příkaz (např. 10 downto 1) Počitadlo je proměnná ordinálního typu (tj. i například výčet nebo char). Hodnotado je vypočtena (v případě výrazu jen jednou před začátkem provádění). for I := ListBox1.Items.Count - 1 downto 0 do ListBox1.Items[I] := UpperCase(ListBox1.Items[I]); For in Novější Delphi (myslím Delphi 2005+) umí používat cyklus for jako iteraci přes jiný typ (např. string, set, pole nebo kolekci jako je následník TList). var C: Char; S1, S2: String; S1 := 'řetězec ; for C in S1 do S2 := S2 + C;

Volání podprogramů Podprogramy (procedury a funkce) slouží ke zlepšení čitelnosti kódu, opakované využití kódu atd. Obecně se snažíme udržovat jednotlivé části programu do délky jedné stránky. Pokud kód překročí stránku zdrojového kódu, mělo by se silně uvažovat o rozdělení do procedur. Procedura i funkce může mít parametry, funkce navíc i návratovou hodnotu. Parametry mohou být prakticky libovolného typu (včetně složitých datových typů jako je record nebo array). deklarace: procedure Jmeno (par1, par2.); function Jmeno2(par1, par2.):typ; kde par1 je specifikace předávaného parametru (promenna:typ), např. s:string s případnou specifikací jak se má kompilátor chovat k předané proměnné uvnitř podprogramu. Př.: procedure Test(const s1:string; var i2:integer; s3: string); // s1 se nedá měnit a navíc const napovídá kompilátoru, že může dobře optimalizovat // i2 proměnná se dá měnit a její hodnota při opuštění podprogramu se přenese do volaného kódu // s3 proměnná se dá měnit, ale její hodnota je na konci ztracena Parametr i2 je předáván odkazem, s1 a s3 hodnotou. U funkce je návratová hodnota reprezentována proměnnou Result nebo parametrem exit. function Sum(i1, i2: Integer):Integer; Result := i1 + i2; // nebo exit i1 + i2; // nejsem si jist zda od Delphi 2007 nebo až od Delphi 2009 Metody Pokud je procedura nebo funkce definována na třídě tak se jedná o metodu. Metody jsem rozebral na delphi.cz (http://delphi.cz/post/object-pascal-zacatecnici.aspx).

Nejčastější procedury a funkce z RTL (sysutils) Abort Tichá výjimka, ukončení provádění aktuální akce CreateDir CreateDir('C:\test'); vytvoří adresář CreateGuid ID:GUID; if CreateGuid(ID) = S_OK then Edit1.Text := GUIDToString(ID); CurrToStr, FloatToStr Date DateTimeToStr, DateTimeToString, DateToStr DayOfWeek DecodeDate, DecodeTime DeleteFile DirectoryExists EncodeDate, EncodeTime ExtractFileExt, ExtractFileName, ExtractFilePath FileExists FindFirst, FindNext, FindClose ForceDirectories Format Konverze currency na string a float na string Datum Převod TDateTime na string Den v týdnu (pozor: neděle je první) TDateTime na složky Smazání souboru Existuje adresář? složky na TDateTime Práce s názvem souboru (vrátí příslušnou část) Existence souboru Hledání souboru, v Delphi 2010 lépe přes objektový přístup Vytvoří celou adresářovou cestu Efektivní formátování řetězců Format( Cislo: %d, [i]);

FreeAndNil IntToHex, IntToStr IncMonth LowerCase, AnsiLowerCase Now QuotedStr StrToInt, StrToIntDef Trim, TrimLeft, TrimRight ChDir MaxInt, MinInt MkDir Pos Random Uvolnění objektu a nastavení na nil Integer na string, resp. string v hexa Zvyš měsíc v datumu string na malé písmena, Ansi včetně češtiny Aktuální čas vrací zadaný řetezec v uvozovkách, třeba pro SQL String na integer, *Def s def. hodnotou (zamezí výjimce) Odříznutí mezer (a spol.) z řetezce Změna adresáře rozsah integeru vytvoř adresář existuje část řetězce v řetězci? if Pos(' ', S) > 0 then Vrátí náhodné číslo StringOfChar Vytvoří řetězec ze znaku a jeho četnosti (StringOfChar('A', 10); => AAAAAAAAAAAA Copy vrátí část řetězce s := textova polozka ; s2 := copy(s, 2, 4); // vrati xtov příklad: na formulář vložte 3x TEdit a tlačítko po stisku tlačítka: o se zjistí aktuální datum, převede se na řetezec (jen datum) a první 3 znaky naplní první edit

o druhý edit = hexa hodnota maximalní hodnoty typu integer zjištěná programově o získá se text ze třetího editboxu a zkusí se převést na číslo. pokud je číslo menší jak 10 vypíše hodnota je v menší než 10 (xx) pokud je číslo v intervalu 10 100 vypíše hodnota je v intervalu 10-100 (xx) >100 - vypíše hodnota je větší jak 100 (xx) neplatná hodnota > neplatná hodnota Výpis přes ShowMessage, místo xx zadaná hodnota (použít case a StrToInt resp. StrToIntDef, případně obsluhu vyjímek) Otestovat pro tyto texty: 1, 10, 99, 100, -1, te02