Sada 1 - Základy programování

Podobné dokumenty
Sada 1 - Základy programování

Sada 1 - Základy programování

Sada 1 - Základy programování

Sada 1 - Základy programování

Sada 1 - Základy programování

Sada 1 - Základy programování

Sada 1 - Základy programování

Sada 1 - Základy programování

Sada 2 Microsoft Word 2007

Sada 2 Microsoft Word 2007

Sada 2 Microsoft Word 2007

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

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

Sada 2 Microsoft Word 2007

Sada 2 - MS Office, Excel

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

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

Sada 1 CAD Písmo v AutoCADu

Sada 2 Microsoft Word 2007

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

Sada 2 Microsoft Word 2007

Sada 2 Microsoft Word 2007

Sada 2 - MS Office, Excel

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:

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

Sada 2 - MS Office, Excel

Sada 1 CAD Kótování kótovací styl

Sada 2 CAD2. 4. CADKON 2D 2011 Vkládání schodiště

Sada 2 - MS Office, Excel

Sada 1 - PHP. 14. Úvod do jazyka SQL

Programovací jazyk Pascal

Sada 1 - PHP. 09. Formuláře

Sada 1 - Základy programování

Sada 3 CAD3. 6. CADKON DT+ Dveře

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

1 PRVOCISLA: KRATKY UKAZKOVY PRIKLAD NA DEMONSTRACI BALIKU WEB 1

Inovace a zkvalitnění výuky prostřednictvím ICT Základy programování a algoritmizace úloh Jednoduché příkazy jazyka Pascal

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

Sada 2 Stavební provoz

Sada 2 Geodezie II. 12. Výpočet kubatur

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

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

Sada 1 - PHP. 15. Výběr dat z databáze. Příkaz SELECT

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

Inovace a zkvalitnění výuky prostřednictvím ICT Základy programování a algoritmizace úloh Typové a netypové soubory

Sada 1 CAD Stažení a instalace výukového SW firmy Autodesk

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

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

Hotelová škola, Obchodní akademie a Střední průmyslová škola Teplice, Benešovo náměstí 1, p.o. III/2 - Inovace a zkvalitnění výuky prostřednictvím ICT

Sada 2 Stavební provoz

Sada 1 Geodezie I. 13. Měření vodorovných směrů

POČÍTAČE A PROGRAMOVÁNÍ

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

Sada 2 Microsoft Word 2007

Sada 3 CAD3. 4. CADKON DT+ Okna

Sada 1 - PHP. 05. Větvení

Sada 1 - Elektrotechnika

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

Inovace a zkvalitnění výuky prostřednictvím ICT Základy programování a algoritmizace úloh Textové soubory

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

Sada 2 Microsoft Word 2007

Sada 1 CAD Prostorové souřadnice v CAD systémech

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

Úvod do programování

Sada 1 Matematika. 06. Finanční matematika - úvod

STŘEDNÍ ŠKOLA STAVEBNÍ JIHLAVA

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

Sada 1 - Elektrotechnika

Sada 3 Inženýrské stavby

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

ALGORITMIZACE A PROGRAMOVÁNÍ

Sada 2 Klempířská technologie

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

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

Sada 2 Geodezie II. 16. Měření posunů a přetvoření

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

Sada 1 - Ekonomika 3. ročník

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

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

Programování. Debugging a testování. Martin Urza

Sada 2 Geodezie II. 13. Základní vytyčovací prvky

Sada 1 Matematika. 01. Množiny - úvod

Ekonomika Veřejní obchodní společnost Komanditní společnost

Sada 1 Klempířská technologie

Sada 1 - PHP. 20. Obrázky z obrázků

Ekonomika Inflace

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

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

Sada 1 Geodezie I. 04. Vytyčení přímky

Sada 1 Geodezie I. 05. Vytyčení kolmice a rovnoběžky

Sada 1 Matematika. 04. Nekonečné řady

Sada 2 Microsoft Word 2007

NPRG030 Programování I, 2010/11

Ekonomika Státní rozpočet

Sada 1 - Elektrotechnika

for (int i = 0; i < sizeof(hodnoty) / sizeof(int); i++) { cout<<hodonoty[i]<< endl; } cin.get(); return 0; }

Sada 2 Geodezie II. 14. Vytyčení polohopisu

Registrační číslo projektu: CZ.1.07/1.5.00/ Elektronická podpora zkvalitnění výuky CZ.1.07 Vzděláním pro konkurenceschopnost

Sada 2 Geodezie II. 02. Stabilizace bodů

Sada 3 Inženýrské stavby

Transkript:

S třední škola stavební Jihlava Sada 1 - Základy programování 13. Práce s řetězci - palindrom Digitální učební materiál projektu: SŠS Jihlava šablony registrační číslo projektu:cz.1.09/1.5.00/34.0284 Šablona: III/2 - inovace a zkvalitnění výuky prostřednictvím ICT Jaromír Železný 2013 Projekt je spolufinancován Evropským sociálním fondem a státním rozpočtem České republiky

Strukturované datové typy pokud mají data určitou společnou vlastnost a jsou určitým způsobem organizována, říkáme o nich, že tvoří struktury Strukturované datové typy: 1) Řetězec 2) Pole a) jednorozměrné b) vícerozměrné (nejčastěji dvou-, tří-) 3) Záznam 4) Množina 5) Soubor

Řetězec znaků jeden znak = datový typ CHAR řetězec = datový typ STRING CHAR = jeden znak STRING = řetězec dlouhý 255 znaků při deklarování proměnné jako stringse vpaměti rezervuje (vyhradí) prostor pro 255 znaků, který můžeme využít

Řetězec znaků pokud jsme si ale jisti, že do dané proměnné nebudeme tak dlouhá řetězec ukládat, můžeme velikost rezervovaného prostoru upravit při deklaraci var Jmeno:String[15]; var Jmeno:String[15]; takto deklarovaná proměnné nebude mít vyhrazený prostor pro 255 znaků, ale pouze pro 15 znaků pokud bychom do této proměnné chtěli uložit delší řetězec, příkaz by vyvolal chybu.

Řetězec znaků znaky vřetězci jsou uloženy odděleně, můžeme k nim přistupovat jednotlivě každé políčko řetězce má svůindex = své pořadové číslo jednotlivé znaky můžeme vypisovat, ale také je měnit

Program TEST; Var jmeno:string[5]; Begin Jmeno:= Pavla ; Writeln (Jmeno); Writeln (Jmeno[1]); Writeln (Jmeno[2]); Writeln (Jmeno[3]); Writeln (Jmeno[4]); Writeln (Jmeno[5]); Writeln; Jmeno[4] := e ; Jmeno[5] := l ; Writeln (Jmeno); Readln; End. Řetězec znaků

Řetězec znaků funkce LENGTH(RETEZEC) vrací počet znaků v řetězci funkce CHR(CISLO)vrací znak podle hodnoty CISLO z tabulky ASCII funkce ORD(ZNAK) vrací číslo znaku ZNAK z tabulky ASCII funkce UPCASE(ZNAK) převede malé písmeno na velké funkce LOWERCASE(ZNAK)převede velké písmeno na malé (lze použít ve Free Pascalu v TP pomocí ORD(x) -32)

Tabulka ACSI kódů kód znak kód znak kód znak kód znak kód znak kód znak 32 mezera 48 0 64 @ 80 P 96 ` 112 p 33! 49 1 65 A 81 Q 97 a 113 q 34 '' 50 2 66 B 82 R 98 b 114 r 35 # 51 3 67 C 83 S 99 c 115 s 36 $ 52 4 68 D 84 T 100 d 116 t 37 % 53 5 69 E 85 U 101 e 117 u 38 & 54 6 70 F 86 V 102 f 118 v 39 ' 55 7 71 G 87 W 103 g 119 w 40 ( 56 8 72 H 88 X 104 h 120 x 41 ) 57 9 73 I 89 Y 105 i 121 y 42 * 58 : 74 J 90 Z 106 j 122 z 43 + 59 ; 75 K 91 [ 107 k 123 { 44, 60 < 76 L 92 \ 108 l 124 45 61 = 77 M 93 ] 109 m 125 } 46. 62 > 78 N 94 ^ 110 n 126 ~ 47 / 63? 79 O 95 _ 111 o 127 del Kódy s hodnotami 0 až 31 se většinou nezobrazují jako konkrétní znaky (to záleží na daném programu), jsou určeny jako řídící kódy pro různé periférie (monitor, tiskárna apod.) anebo mají konkrétní význam např. přechod textu na novou řádku, pípnutí apod.

Řetězec znaků funkce COPY(RETEZEC,INDEX,POCET) vrací POCET znaků do konce řetězce RETEZEC počínaje znakem na pozici INDEX funkce CONCAT(s1,[s2,, sn])spojuje řetězce s1, CONCAT(s1,[s2,, sn]) s2,, snv jeden řetězec, je-li výsledek delší než 255 znaků, je zkrácen na 255 znaků

Řetězec znaků procedura DELETE(RETEZEC,INDEX,POCET) odstraní POCET znaků z řetězce RETEZEC počínaje znakem na pozici INDEX procedura INSERT(ZDROJ,RETEZEC,INDEX) vloží do řetězce RETEZEC od pozice INDEX řetězec ZDROJ procedura STR(CISLO,RETEZEC) převede číslo CISLO na řetězec RETEZEC procedura VAL(RETEZEC,CISLO, Err_Code) převede řetězec RETEZEC na číslo CISLO

Řetězec znaků Př.: napište program, kterým převrátíme řetězec. Ve výstupu bude první znak na posledním místě, druhý na předposledním, a poslední znak způvodního řetězce bude na prvním místě.

Řetězec znaků - program Postup: 1. Stanovíme si, co má program dělat, tzn. si určíme, co má být vstupem a výstupem. Na vstupu je jakýkoliv řetězec o maximální délce 255 znaků. Na výstupu bude ten samý řetězec, ale zrcadlově převrácený. 2. Navrhneme algoritmus, tzn. si určíme postup. a) Nejprve se zjistíme délku vstupního řetězce, abychom věděli, jak dlouhý bude výstupní řetězec b) Pokud známe délku vstupního a výstupního řetězce, potom máme vyhráno a nyní již stačí pouze vzít poslední znak způvodního řetězce a umístit ho jako první znak řetězce nového. A toto nám právě umožňují indexy. c) Nakonec už jen vypíšeme výstupní řetězec, který je oproti vstupu zrcadlově převrácený

Řetězec znaků - program Postup : 3. Délka vstupního řetězce využijeme funkce LENGHT (=anglicky délka), výsledkem této funkce je číslo. Začátek kódu bude vypadat takto: var delka, poradi : integer; vstupni, vystupni: string; Begin writeln ( Zadej vstupni retezec (max 255 zna ku): ); readln(vstupni); delka := length(vstupni);

Řetězec znaků - program 4. Převrácení řetězce -využijeme toho, že známe délku řetězce, a tudíž víme, kolik znaků musíme přehodit z konce na začátek. Ktomu nám poslouží cyklus se známým počtem opakování (cyklus FOR). Posledním krokem je vypsání řetězce vystupni for poradi:=1 to delka do begin vystupni[poradi] := vstupni[delka poradi + 1]; vystupni := CONCAT (vystupni, vystupni[poradi]); {vystupni := vystupni + vystupni[poradi];} end; Writeln (vystupni);

Řetězec znaků - program Zastavme se u zmateného indexu vprvním přiřazovacím příkazu vlevo je sice index poradi, to bychom ještě pochopili, přece jen musíme projít celý řetězec, a proměnná poradije i vhlavičce cyklu FOR, ale na pravé straně máme najednou index [delka-poradi+1]. Je to pořadí znaku, který je zrcadlově převrácený ke znaku s indexem poradi. Ukážeme si to například na slově JELEN. Na konci by nám mělo vyjít slovo NELEJ. Délka obou řetězců je 5. poradi=1: Vystupni[1]:=Vstupni[5 1+1] Vystupni[1]:= Vstupni[5] poradi=2: Vystupni[2]:=Vstupni[5 2+1] Vystupni[2]:= Vstupni[4] poradi=3: Vystupni[3]:=Vstupni[5 3+1] Vystupni[3]:= Vstupni[3] poradi=4: Vystupni[4]:=Vstupni[5 4+1] Vystupni[4]:= Vstupni[2] poradi=5: Vystupni[5]:=Vstupni[5 5+1] Vystupni[5]:= Vstupni[1]

Řetězec znaků - program Program prevraceni; var delka, poradi : integer; vstupni, vystupni: string; Begin writeln ( Zadej vstupni retezec (maximalne 255 znaku): ); readln (vstupni); delka := length(vstupni); for poradi :=1 to delka do begin vystupni:= CONCAT(vystupni, vstupni[delka - poradi + 1]); end; writeln ( Prevraceny retezec:, vystupni); readln ; end. Úkol: Upravte předcházející program tak, aby testoval, zda je vstupní řetězec PALINDROM

Řetězec znaků PALINDROM Abychom zjistili, zda je dané slovo palindromem, stačí vpředcházejícím programu dopsat podmínku, která by testovala, jestli vstupní a výstupní řetězec je stejný. IF vstupni = vystupni THEN WRITELN ( Je to palindrom ) ELSE WRITELN ( Neni to palindrom );

Řetězec znaků Pokud bychom zjišťovali, zda je palindromem celá věta (např.: JELENOVI PIVO NELEJ), tak nám náš program v této podobě oznámí, že se o palindrom nejedná, neboť po převrácení bude výsledek JELEN OVIP IVONELEJ. Proto potřebujeme ze vstupního řetězce odstranit mezery. Můžeme toho dosáhnout například tím, že budeme v řetězci procházet znak po znaku, a pokud narazíme na mezeru, tak ji vynecháme. Vstup_original := vstupni ; Vstupni := ; FOR i:=1 to length(vstup_original) DO Begin IF vstup_original[i] <> THEN Vstupni := vstupni + vstup_original[i]; End; Writeln (vstupni);

Zdroje: TurboPascal 6.0 - příručka uživatele (help) Literatura: Radek HYLMAR: Programování pro úplné začátečníky, Computer Press, Brno, 2009, ISBN 978-80-251-2129-0 Januš DRÓZD, Rudolf KRYL: Začínáme s programováním, GRADA a.s., Praha, 1992, ISBN 80-85424-41-X Tomáš HRUŠKA: Pascal pro začátečníky, SNTL, Praha 1989, ISBN 80-03-00345-8 Materiál je určen k bezplatnému používání pro potřeby výuky a vzdělávání na všech typech škol a školských zařízení. Autorem materiálu a všech jeho částí, není-li uvedeno jinak, je : Jaromír Železný Pokud není uvedeno jinak, byly při tvorbě použity volně přístupné internetové zdroje. Autor souhlasí se sdílením vytvořených materiálů a jejich umístěním na www.ssstavji.cz.