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



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

Programovací jazyk 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

NPRG030 Programování I, 2010/11

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

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

Úvod do programování 6. hodina

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

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

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

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

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

Algoritmizace a programování

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

O datových typech a jejich kontrole

Úvod do programování 7. hodina

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

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

Sada 1 - Základy programování

Sada 1 - Základy programování

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

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

Úvod do programování. Lekce 1

NPRG030 Programování I, 2018/19 1 / :25:37

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

- speciální symboly + - * / =., < > <> <= >= a další. Klíčová slova jsou chráněnými útvary, které nelze použít ve významu identifikátorů.

Standardní algoritmy vyhledávací.

Proměnné a parametry. predn_08.odt :00:38 1

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

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

Poslední nenulová číslice faktoriálu

Uplatnění metod na zvolený jazyk

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

Reprezentace aritmetického výrazu - binární strom reprezentující aritmetický výraz

Úvod do programování

PHP - úvod. Kapitola seznamuje se základy jazyka PHP a jeho začleněním do HTML stránky.

Závěrečná zkouška z informatiky 2011

PROGRAMOVÁNÍ V SHELLU

8. lekce Úvod do jazyka C 3. část Základní příkazy jazyka C Miroslav Jílek

Data v počítači. Informační data. Logické hodnoty. Znakové hodnoty

LabView jako programovací jazyk II

Poslední aktualizace: 14. října 2011

ALGORITMIZACE A PROGRAMOVÁNÍ

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

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

BI-PA1 Programování a algoritmizace 1 Katedra teoretické informatiky

BI-PA1 Programování a algoritmizace 1, ZS Katedra teoretické informatiky

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

III/2 Inovace a zkvalitnění výuky prostřednictvím ICT

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

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

VY_32_INOVACE_08_2_04_PR

Informatika Datové formáty

Anotace. Soubory a práce s nimi, rekurze podruhé, struktury (datový typ record), Martin Pergel,

Algoritmizace a programování

Sada 1 - Základy programování

Rekurze. Pavel Töpfer, 2017 Programování 1-8 1

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

Semestrální práce z předmětu. Jan Bařtipán / A03043 bartipan@studentes.zcu.cz

Jak v Javě primitivní datové typy a jejich reprezentace. BD6B36PJV 002 Fakulta elektrotechnická České vysoké učení technické

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

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

Sada 1 - Základy programování

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

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.

Znaky. IAJCE Přednáška č. 10. každému znaku je nutné přiřadit nějaké číslo (nezáporné přímé mapování znak <->

Programování v jazyce JavaScript

LEKCE 6. Operátory. V této lekci najdete:

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

Anotace. Ordinalni typy - typ char, funkce ord, chr, succ, prev, inc, dec,

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

Programování v jazyce C pro chemiky (C2160) 5. Čtení dat ze souboru

for (i = 0, j = 5; i < 10; i++) { // tělo cyklu }

PB161 Programování v C++ Proudy pro standardní zařízení Souborové proudy Paměťové proudy Manipulátory

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

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.

Textové soubory. alg9 1

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

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

Sada 1 - Základy programování

Práce s textem. Třída Character. Třída Character. Třída Character. reprezentuje objekty zapouzdřující hodnotu typu char (boxing / unboxing)

Algoritmizace prostorových úloh

IMPLEMENTACE OPERAČNÍHO SYSTÉMU LINUX DO VÝUKY INFORMAČNÍCH TECHNOLOGIÍ JAZYK C

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

X36UNX 16. Numerické výpočty v sh příkazy expr, bc, dc. Zdeněk Sojka

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

Jazyk C# a platforma.net

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

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

Algoritmizace prostorových úloh

POČÍTAČE A PROGRAMOVÁNÍ

1 PRVOCISLA: KRATKY UKAZKOVY PRIKLAD NA DEMONSTRACI BALIKU WEB 1

Základní jednotky používané ve výpočetní technice

II. Úlohy na vložené cykly a podprogramy

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

VÝRAZY výrazy = operandy prokládané operátory, vyhodnocované podle priority operátorů

III/2 Inovace a zkvalitnění výuky prostřednictvím ICT

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

Formátová specifikace má tvar (některé sekce nemají smysl pro načítání) %

Transkript:

Znaky - standardní typ char var Z, W: char; - znakové konstanty v apostrofech, např. a, +, (znak mezera) - proměnná zabírá 1 byte, obsahuje kód příslušného znaku - v TP (často i jinde) se používá kódová tabulka ASCII 0-31 speciální řídicí znaky 32-127 základní část znakové sady 128-255 národní abecedy resp. semigrafika - dekadické číslice souvislá řada v pořadí od 0 do 9 - velká písmena anglické abecedy souvislá řada od A do Z - malá písmena anglické abecedy souvislá řada od a do z - znakové konstanty lze zapisovat i kódem, např. #65 (totéž co A ) nebo #27 (klávesa Esc) (c) Pavel Töpfer, 2014 Programování 1-7 1

- lze používat v procedurách read, write např. read(z); write( Z ); POZOR v příkladu výše rozlišovat Z a Z! - do proměnné lze dosazovat, např. W:=? ; Z:=W; - na typu char je definováno uspořádání (podle kódů), je možné používat relační operátory =, <, >, <=, >=, <> if (Z>= A ) and (Z<= Z ) then {hodnotou proměnné Z je velké písmeno anglické abecedy} while Z <> W do {dokud mají proměnné Z a W různou hodnotu} (c) Pavel Töpfer, 2014 Programování 1-7 2

Standardní funkce var Z, Z1: char; B: byte; B := ord(z); Z := chr(b); vrací kód znaku Z v ASCII-tabulce (ordinální hodnotu) k zadanému ASCII-kódu vrací příslušný znak - funkce navzájem inverzní tedy chr(ord(z)) = Z - z hlediska syntaxe jazyka jde o přetypování - v kódu se nic neděje (znak je stejně reprezentován svým kódem) Použití: B:=ord(Z) ord( 0 ); cifra její hodnota Z:=chr(B+ord( 0 )); hodnota 0..9 cifra Z1 := UpCase(Z) malá písmena anglické abecedy změní na velká, ostatní znaky ponechá beze změny Použití: místo delšího if UpCase(Z) = A then if (Z= A ) or (Z= a ) then (c) Pavel Töpfer, 2014 Programování 1-7 3

Příklad: vstup čísla po znacích - co přibližně dělá procedura read - algoritmus: Hornerovo schéma var Zn: char; {čtené znaky} Hodn: integer; {číselná hodnota} Hodn:=0; read(zn); while (Zn>= 0 ) and (Zn<= 9 ) do Hodn := Hodn*10 + ord(zn) ord( 0 ); read(zn) end; {výsledná hodnota je v proměnné Hodn} Pro jednoduchost předpokládáme korektní vstup, bez vedoucích mezer. (c) Pavel Töpfer, 2014 Programování 1-7 4

Znakové řetězce - standardní typ string type JmenoTypu = string [N]; N celočíselná konstanta udávající maximální délku stringu N je nejvýše rovno 255 pokud N neuvedeme, implicitní hodnota je 255 Příklad: type JmenoMesice = string[8]; var Mesic: JmenoMesice; {proměnná pro řetězce max. 8 znaků} S: string; {proměnná pro řetězce max. 255 znaků} Reprezentace proměnné: - jednorozměrné pole znaků indexované od 1 do N - vlastní evidence aktuální délky uloženého řetězce (v bytu s indexem 0 pozor při manipulaci, formálně je typu char) (c) Pavel Töpfer, 2014 Programování 1-7 5

Konstanty: duben řetězec délky 5 znaků? řetězec délky 1 znak (jako char) prázdný řetězec (žádný znak) Operace se stringy: - do proměnné lze dosazovat, např. Mesic := duben ; nastaví se tím aktuální délka (zde na 5) - jediný operátor + znamená zřetězení, např. po provedení S := 12. + Mesic; bude mít proměnná S hodnotu 12. duben a aktuální délku 9 - lze používat v procedurách read, write read(s); - načte tolik znaků, kolik je maximální délka S, nejvýše však do konce řádku na vstupu write(s); - vypíše tolik znaků, kolik je aktuální délka S Doporučení: Při čtení používat raději readln(s) přijdeme sice případně o znaky, které se nevešly do maximální délky S, zato při následujícím čtení budeme číst od začátku dalšího řádku. Jinak při čtení dalšího stringu ze vstupu načteme prázdný řetězec! (c) Pavel Töpfer, 2014 Programování 1-7 6

Standardní procedury a funkce se znakovými řetězci Length(S) aktuální délka řetězce Concat(S1, S2,, Sn) spojení řetězců za sebe totéž se snáze zapíše operátorem + : S1 + S2 + + Sn Copy(S, Index, Pocet) vykopírování podřetězce dané délky počínaje od daného indexu Delete(S, Index, Pocet) v řetězci S zruší podřetězec dané délky počínaje od daného indexu Insert(Co, Kam, Index) do řetězce Kam vloží Co na pozici daného indexu Pos(Co, Kde) pozice prvního výskytu podřetězce Co v řetězci Kde (0 když tam není obsažen) (c) Pavel Töpfer, 2014 Programování 1-7 7

Indexování: S[i] = i-tý znak řetězce S, je typu char S[2] := 5 ; for I:=1 to length(s) do if S[I] =? then S[I] :=! ; {v řetězci S nahradí všechny otazníky vykřičníkem} POZOR při indexování stringu změny neovlivňují aktuální délku: S:= ABC ; {aktuální délka S je 3} for I:= 1 to 10 do S[I]:= Z ; {do S se vloží 10 znaků, ale aktuální délka S zůstává nastavena na 3} write(s); {vypíše ZZZ } Uspořádání stringů - lexikografické, indukované uspořádáním na typu char 4 < Z < f < fa < fb < g < č < á - je možné používat relační operátory =, <, >, <=, >=, <> (c) Pavel Töpfer, 2014 Programování 1-7 8

Příklad: načtení dlouhého čísla (kladné celé, max. 100 cifer) type Cislo = array [1..100] of byte; var A: Cislo; {A[1] cifra v řádu jednotek} PA: byte; {počet cifer} S: string[100]; I: integer; readln(s); PA := 0; for I:=length(S) downto 1 do inc(pa); A[PA] := ord(s[i])-ord( 0 ) end; (c) Pavel Töpfer, 2014 Programování 1-7 9

Číselné soustavy - převod z dvojkové soustavy na číselnou hodnotu - algoritmus: Hornerovo schéma 110010 1.2 5 + 1.2 4 + 0.2 3 + 0.2 2 + 1.2 1 + 0.2 0 = = ((((1.2 + 1).2 + 0).2 + 0).2 + 1).2 + 0 = 50 - převod z šestnáctkové soustavy na číselnou hodnotu A1F A.16 2 + 1.16 1 + F.16 0 = = 10.16 2 + 1.16 1 + 15.16 0 = = (10.16 + 1).16 + 15 = 2591 (c) Pavel Töpfer, 2014 Programování 1-7 10

program Bin_Dec; {převod čísla z dvojkové soustavy - Hornerovo schéma} var S: string[15]; {dvojkový zápis čísla} N: integer; {jeho hodnota} I: integer; read(s); N:=0; for I:= 1 to length(s) do N:=N*2 + ord(s[i])-ord('0'); writeln('hodnota: ', N) end. (c) Pavel Töpfer, 2014 Programování 1-7 11

program Hex_Dec; {převod čísla z šestnáctkové soustavy - Hornerovo schéma} var S: string[15]; {šestnáctkový zápis čísla} N: integer; {jeho hodnota} I: integer; read(s); N:=0; for I:= 1 to length(s) do if (S[I]>='0') and (S[I]<='9') then N:=N*16 + ord(s[i])-ord('0') else N:=N*16 + ord(s[i])-ord('a') + 10; end; writeln('hodnota: ', N) end. (c) Pavel Töpfer, 2014 Programování 1-7 12

110010 1.2 5 + 1.2 4 + 0.2 3 + 0.2 2 + 1.2 1 + 0.2 0 = = ((((1.2 + 1).2 + 0).2 + 0).2 + 1).2 + 0 = 50 - převod číselné hodnoty do dvojkové soustavy - algoritmus: Hornerovo schéma využité v opačném směru posloupnost zbytků při celočíselném dělení dvěma tvoří odzadu dvojkový zápis čísla připojování dvojkových cifer do stringu zleva 50 : 2 = 25, zb. 0 25 : 2 = 12, zb. 1 12 : 2 = 6, zb. 0 6 : 2 = 3, zb. 0 3 : 2 = 1, zb. 1 1 : 2 = 0, zb. 1 (c) Pavel Töpfer, 2014 Programování 1-7 13

program Dec_Bin; {převod čísla do dvojkové soustavy - obrácené Hornerovo schéma} var S: string[15]; {dvojkový zápis čísla} N: integer; {jeho hodnota} read(n); S:=''; {prázdný řetězec} while N > 0 do if odd(n) then S:='1'+S else S:='0'+S; N:=N div 2 end; writeln('dvojkový zápis čísla: ', S) end. (c) Pavel Töpfer, 2014 Programování 1-7 14

program Dec_Hex; {převod čísla do šestnáctkové soustavy - obrácené Hornerovo schéma} var S: string[15]; {šestnáctkový zápis čísla} N: integer; {jeho hodnota} Z: integer; read(n); S:=''; {prázdný řetězec} while N > 0 do Z:=N mod 16; if (Z <= 9) then S:= chr(z + ord('0')) + S else S:= chr(z 10 + ord('a')) + S; N:=N div 16; end; writeln('šestnáctkový zápis čísla: ', S) end. (c) Pavel Töpfer, 2014 Programování 1-7 15

Konverzní procedury Str(V, S) - konverze číselná hodnota V string S - V může být výraz typu integer nebo real - součástí V může být formátování V:n resp. V:n:m jako u write - volání Str se implicitně provádí v proceduře write (zápis čísla) Val(S, V, ErrCode) - konverze string S číselná hodnota V - V může být proměnná typu integer nebo real - ErrCode=0 převod se povedl bez chyby - ErrCode>0 pozice výskytu chyby (index v S) - volání Val se implicitně provádí v proceduře read (čtení čísla) (c) Pavel Töpfer, 2014 Programování 1-7 16