Úvod do programování 6. hodina

Slides:



Advertisements
Podobné prezentace
Standardní knihovní funkce pro práci s textovými řetězci
Advertisements

Pro začátek něco lehčího
VISUAL BASIC Práce s řetězci Použitá literatura: Kvoch: Visual Basic 4.
Pascal - příklady.
Opakování Co je výsledkem následujícího prográmku? my $a="kol"; my $b="o"; $a.= $b; $b.= $a; print "a = $a, b = $b\n"; Vkládání speciálních znaků? Uvozovací.
Třída Array Je součásti balíčku java.util Účelem je usnadnit práci s poli Metody – nejpoužívanější equel(),fill(),sort() a binarySearch() equels() Slouží.
Algoritmy I Cvičení č. 2. Cíl hodiny Datové typy a přetypování (int, float, double, bool, char, long, short) Konstanty – Celočíselné Desítkové – 15, 0,
Algoritmy I. Cvičení č. 10.
Třídění Seminář IVT. Definice uspořádání skupiny dat (záznamů) dle daného klíče vzestupně (od nejmenší do největší hodnoty klíče) sestupně (od největší.
Algoritmy I Cvičení č. 4.
Algoritmy I Cvičení č. 3.
Programování v Pascalu Přednáška 7
Materiály k přednášce Úvod do programování Ondřej Čepek.
J a v a Začínáme programovat Lucie Žoltá pole řetězec debugr.
PHP PHP – základy syntaxe (část 1) - 03 Mgr. Josef Nožička IKT PHP
C# - znakové typy a řetězce
Obchodní akademie, Ostrava-Poruba, příspěvková organizace Vzdělávací materiál/DUM VY_32_INOVACE_01B8 Autor Ing. Jiří Kalousek Období vytvoření listopad.
Abeceda a formální jazyk
Datové typy a práce s nimi
KIV/PPA1 cvičení 7 Cvičící: Pavel Bžoch. Osnova cvičení Zadání samostatné práce –Vysvětlení nejasností –Způsob odevzdání –Hodnocení Řazení Vyhledávání.
Počítače a programování 1 8.přednáška. Obsah přednášky Řetězce - deklarace a vytvoření Základní metody pro práci s řetezci Znaky - třída Character Základní.
Jiří Znoj - zno Tvorba konkordace Algoritmy II 3. projekt, 5. zadání Jiří Znoj - zno
Proměnné v PHP Každý programovací jazyk pracuje s nějakými hodnotami. To, do čeho se tyto hodnoty ukládají, se nazývá proměnné. Každý programovací jazyk.
JavaScript Podmínky, cykly a pole.
Využití vzorců a funkcí k úpravám v textu
Orbis pictus 21. století Tato prezentace byla vytvořena v rámci projektu.
Gymnázium prof. Jana Patočky Jindřišská Praha 1 „Praha & EU: Investujeme do vaší.
13/04/20151 Indexery (1) Členy třídy (struktury) umožňující třídě (struk- tuře) používat hranaté závorky a pracovat s ní podobně jako s polem (používat.
Algoritmizace a programování Textové soubory - 13 Mgr. Josef Nožička IKT Algoritmizace a programování
KIV/PPA1 cvičení 9 Cvičící: Pavel Bžoch. Osnova cvičení Třída String a její metody –Řetězce a operace s nimi.
Rozpoznávání v řetězcích
Práce s řetězci Řetězec je libovolný text nebo libovolná skupina znaků. Řetězec se také označuje jako string. Činnosti prováděné s řetězci: Počítání znaků.
Textový procesor Autorem materiálu a všech jeho částí, není-li uvedeno jinak, je MGR. MILOŠ NYGRÝN.
STRING A UKAZATELE. Co to je řetězec? Řetězec v Javě je samostatný objekt. Je konstantní, co znamená, že jednou vytvořený řetězec nelze změnit. Chceme-li.
Úvod do UNIXu (4 th round) David Hoksza (většina sekce o vi a obrázek na slidu 7 převzat od Libora Forsta –
Počítače a programování 1 7.přednáška. Základy Pole ve třídách a metodách Pole Arrays.
JUI přednáška Vstup a výstup, cykly RNDr. Jiří Dvořák, CSc.
Vazby dynamických proměnných,databázové systémy Přednáška č. 10.
Ukazatele, řetězce Přednáška č. 3. Ukazatele  Ukazatel (pointer) – typ o velikosti 4 bajty (v 32bit. systémech) pro uložení adresy objektu na který ukazuje.
Soubory BI-PA1 Programování a algoritmizace 1, ZS Katedra teoretické informatiky © Miroslav Balík Fakulta informačních technologií České vysoké.
4. Typ pole 4.1 Jednorozměrná pole
Řetězce String. Co je to řetězec Jako řetězec označujeme pojmenovanou skupinu libovolných znaků Deklarujeme jej pomocí příkazu Délka řetězce není v tomto.
Fce VB - matematické Abs( výraz ) Fix( výraz ) Int( výraz) Sgn(výraz )
Úvod do programování 10. hodina RNDr. Jan Lánský, Ph.D. Katedra informatiky a matematiky Fakulta ekonomických studií Vysoká škola finanční a správní 2015.
Programování KONSTANTY, ČTENÍ PO JEDNOM ZNAKU GETCHAR() FORMÁTOVANÝ VÝSTUP POMOCÍ PRINTF, VÝVOJOVÉ DIAGRAMY, CYKLY.
Programovací jazyk C# 2. část. Datové typy C# rozeznává dva druhy datových typů, hodnotové a referenční. Hodnotové datové typy Proměnné hodnotového datového.
Úvod do programování 9. hodina RNDr. Jan Lánský, Ph.D. Katedra informatiky a matematiky Fakulta ekonomických studií Vysoká škola finanční a správní 2015.
Úvod do programování 8. hodina RNDr. Jan Lánský, Ph.D. Katedra informatiky a matematiky Fakulta ekonomických studií Vysoká škola finanční a správní 2015.
Makra v Excelu syntaxe. Zápis nahraného makra SubEnd Sub O klíčová slova Sub a End Sub – začátek a konec makra O komentáře O text za znakem ', až do konce.
Programovací jazyk C# 4. část - cykly.
Úvod do programování 11. hodina
Programování ENUM, SWITCH,pole jednorozměrná a vícerozměrná, deklarace, inicializace, kopírování, porovnání Erik Král.
Algoritmizace a programování
Definiční obor a obor hodnot
Úvod do Pythonu – IO operace se soubory.
Výukový materiál zpracován v rámci projektu
Výukový materiál zpracován v rámci projektu
Výukový materiál zpracován v rámci projektu
Algoritmizace a programování
Programování 2. hodina RNDr. Jan Lánský, Ph.D.
Úvod do programování 11. hodina
Výukový materiál zpracován v rámci projektu
Databázové systémy a SQL
Výukový materiál zpracován v rámci projektu
Výukový materiál zpracován v rámci projektu
Řetězce (24) Funkce strchr: deklarována v: string.h
ALG 07 Selection sort (Select sort) Insertion sort (Insert sort)
Algoritmizace a datové struktury (14ASD)
Databázové systémy a SQL
Algoritmizace a datové struktury (14ASD)
Transkript prezentace:

Úvod do programování 6. hodina RNDr. Jan Lánský, Ph.D. Katedra informatiky a matematiky Fakulta ekonomických studií Vysoká škola finanční a správní 2015

Úvod do programování 6. hodina Umíme z minulé hodiny Algoritmy Třídění pole: Selection sort, Insertion sort, Bubble sort Třídění pole omezených hodnot: Counting sort Binární vyhledávání v setříděném poli Syntax Globální proměnné Měření počtu operací Měření doby běhu programu Jan Lánský Úvod do programování 6. hodina

Úvod do programování 6. hodina Cíle hodiny Syntax Znaky Textové řetězce Algoritmy Lexikografické uspořádání Zřetězení, podřetězec Hledání indexu výskytu znaku, řetězce Vymazání, vložení a nahrazení znaku, řetězce Změna hodnoty znaku na pozici dané indexem Naše vlastní řetězce Vlastní implementace řetězcových algoritmů jsou výborné na procvičení schopností práce s polem Jan Lánský Úvod do programování 6. hodina

Znaky char - velikost 16 bitů – UTF16 znak V některých programovacích jazycích bývá char 8 bitů ASCII char - velikost 16 bitů – UTF16 znak Znakové konstanty uzavřeny v apostrofech Př.: char c1 = 'a'; Každé znakové konstantě odpovídá celočíselná hodnota Př.: int i = c1; Ale nedělat char c2 = (char) 40; Uspořádané podposloupnosti: číslice, malá písmena, velká písmena Jan Lánský Úvod do programování 6. hodina

Znaky Každá znaková konstanta má celočíselnou hodnotu Kolikáté písmeno abecedy nebo kolikáté číslo ? Převod písmen na velká písmena a na malá písmena. Nevyvolá chybu. Jan Lánský Úvod do programování 6. hodina

Úvod do programování 6. hodina Typy znaků Některé znaky jsou zároveň řídící a oddělovače slov (například znaky pro odřádkování char.IsLetterOrDigit – písmeno nebo číslo char.IsLetter – písmeno char.IsLower – malá písmena (a, b, c, …) char.IsUpper – velká písmena (A, B, C, …) char.IsDigit – číslice (0, 1, 2, …) char.IsControl – řídící znaky ( …) char.IsPunctuation – interpunkce (? : , …) char.IsWhiteSpace – oddělovače slov (mezera, …) char.IsSymbol – symboly (< = + …) Jan Lánský Úvod do programování 6. hodina

Typy Znaků Tabulka prvních 256 znaků včetně typu znaku. Prvních 128 znaků společné i 8-bitovým znakovým sadám Výpis abecedy malých písmen v cyklu Analogicky: velká písmena, čísla Jan Lánský Úvod do programování 6. hodina

Textové řetězce string – pole znaků s konstantní hodnotou Hodnoty uzavřeny v uvozovkách Př.: string a = "ahoj"; a[0] až a[3] Př.: prázdný řetězec string s = "" Př.: string s =Console.ReadLine() Nelze přímo modifikovat prvky přes []. Pomocí funkcí vytváříme nové řetězce (s použitím již existujících řetězců StringBuilder – pole znaků s nekonstantní hodnotou (nebudeme probírat) char uzavírá hodnoty do apostrofů Jan Lánský Úvod do programování 6. hodina

Textové řetězce Inicializace řetězce Načtení řetězce z klávesnice Převod řetězce na pole znaků Převod pole znaků na řetězec Délka řetězce Získání hodnoty znaku s daným indexem Pole konstantních hodnot. Mohu přiřadit celé nové pole, ale ne modifikovat hodnoty prvků pole Přístup ke konkrétnímu znaku je jen pro čtení, hodnota znak nejde modifikovat pomocí [] Neovlivní s2 Jan Lánský Úvod do programování 6. hodina

Funkce vracející bool 'o' 'v' 'a' 'N' 'k' 'n' 'o' 'v' 'a' 'k' 'N' Test, zda obsahuje zadaný řetězec Test rovnosti řetězců Test nerovnosti řetězců s2.Contains("ova"); true "Novak" != "novak"; true 'o' 'v' 'a' 'N' 'k' 'n' 'o' 'v' 'a' 'k' 'N' Jan Lánský Úvod do programování 6. hodina

Lexikografické uspořádání string.Compare Nalezne nejnižší index, na kterém se hodnoty znaků liší. Menší znak určil menší řetězec. Lexikografické = podobné abecedě. Ale liší se (malá, velká písmena) 0 – řetězce se rovnají -1 první řetězec je menší 1 první řetězec je větší Pokud je jeden řetězec prodloužením druhého řetězce, pak delší řetězec je větší Compare("doga", s1); -1 Compare("druhy", s1); 1 'd' 'r' 'u' 'h' 'o' 'g' 'a' 'd' 'r' 'u' 'h' 'y' Jan Lánský Úvod do programování 6. hodina

Indexy Index prvního (posledního) výskytu řetězce (znaku) v řetězci. Možno omezit pozice od které hledám a délku prohledávaného úseku První výskyt znaku První 'b' od pozice 3 v úseku délky 1 nenalezeno První výskyt řetězce Poslední výskyt První 'u' od pozice 2 je na 3 'b' 'u' 1 2 3 4 5 Poslední 'b' 4 Předposlední řádek: omezení pozice od které hledám Poslední řádek: navíc omezena i délka prohledávaného úseku První "ubu " 1 První 'u' 1 První pozice má index 0 Indexy pole s1 Jan Lánský Úvod do programování 6. hodina

Počet výskytů Taková funkce není, vytvoříme si jí Index posledního výskytu Hledáme od posledního výskytu doprava Šlo by testovat přímo poslední v hlavičce cyklu Končíme, nenalezli jsme další výskyt Jan Lánský Úvod do programování 6. hodina

Převod na malá a velká písmena Převod = konverze ToUpper - velká písmena ToLower - malá písmena Nevyvolá chybu, co nejde převést nechá být Volání funkcí: řetězec tečka funkce Lze volat i řetězcové hodnotě 'p' 'a' 'v' 'e' 'l' 'P' 'A' 'V' 'E' 'L' s4 "pavel" s4 "PAVEL" Aplikováno na s4, ale výsledek stejný jako by bylo aplikováno na s1 s1 "Pavel" Jan Lánský Úvod do programování 6. hodina

Zřetězení 'N' 'o' 'v' 'a' 'k' ' ' 'P' 'e' 'l' Zřetězení = konkatenace: Nový řetězec obsahuje první zadaný řetězec následovaný druhým zadaným řetězcem + operátor zřetězení Zřetězit lze i řetězec se znakem s2 "Novak" s1 "Pavel" 'N' 'o' 'v' 'a' 'k' ' ' 'P' 'e' 'l' " " s1 + " " + s2 Jan Lánský Úvod do programování 6. hodina

Podřetězec Podřetězec – souvislá část řetězce Podřetězec začínající na pozici zadané indexem a končící na konci řetězce Podřetězec začínající na pozici zadané indexem a mající zadanou délku Chyba: pokud index + délka > Length s3.Substring(6,3) "Nov" 'N' 'o' 'v' 'a' 'k' 'P' 'e' 'l' ' ' 1 2 3 4 5 6 7 8 9 10 s3.Substring(6) "Novak" První pozice má index 0 Indexy pole s3 s3 "Pavel Novak" Jan Lánský Úvod do programování 6. hodina

Vložení Vložení: na pozici zadanou indexem vloží zadaný řetězec. Znaky původního řetězce posune. Vložení doprostřed řetězce Vložení nakonec řetězce s3.Insert(6, "je") "Pavel je Novak" 'P' 'a' 'v' 'e' 'l' ' ' 'j' 'N' 'o' 'k' 1 2 3 4 5 6 7 8 9 10 11 12 Zelená – posun Červená - vložení Indexy pole s3 První pozice má index 0 s3 "Pavel Novak" Jan Lánský Úvod do programování 6. hodina

Odstranění Odstranění: V řetězci nalezne podřetězec určený svým začátkem (a délkou). Nalezený řetězec odstraní. Zbylé znaky posune. Zadaný index začátku odstraňovaného řetězce Zadaný index začátku a délka odstraňovaného podřetězce Chyba: pokud index + délka > Length Zelená – posun 'P' 'a' ' ' 'N' 'o' 'v' 'k' 'e' 'l' 1 2 3 4 5 6 7 8 9 10 s3.Remove(2, 3) "Pa Novak" s3.Remove(5) "Pavel" První pozice má index 0 s3 "Pavel Novak" Indexy pole s3 Jan Lánský Úvod do programování 6. hodina

Nahrazení 'P' 'a' 'w' 'e' 'l' ' ' 'N' 'o' 'k' 't' 'r' 'v' Nula nahrazení není chyba Nahrazení Vymazání: Replace("retezec", "") Nahrazení: V řetězci nalezne podřetězec určený hodnotou, ten odstraní a na místo jeho bývalého začátku vloží jiný podřetězec. Opakuje pro všechny výskyty. První podřetězec je nahrazen druhým Stejné jako předchozí řádek Místo řetězců můžou být jen znaky s3.Replace("Pavel", "Petr") s3.Replace('v', 'w') 'P' 'a' 'w' 'e' 'l' ' ' 'N' 'o' 'k' 't' 'r' 'v' Zelená – posun Červená - výměna s3 "Pavel Novak" Jan Lánský Úvod do programování 6. hodina

Změna hodnoty znaku v řetězci String je pole znaků s konstantní hodnotou Nelze použít zápis s[0] = 'a' Přesto chceme hodnoty znaků někdy měnit Tři možná řešení Využití funkce Substring Konverze na pole znaků a zpět Konverze na StringBuilder a zpět Naše volba Jan Lánský Úvod do programování 6. hodina

Úvod do programování 6. hodina Změna hodnoty znaku Podřetězec, který začíná na začátku řetězce a končí před zadaným indexem Podřetězec, který začíná na za zadaným indexem a končí na konci řetězce Vše spojíme 'a' … 'v' hodnota 's' ' ' 'o' 'e' -1 index +1 Len s1 s2 Jan Lánský Úvod do programování 6. hodina

Změna hodnoty znaku - Ukázka Novak  Horal index = 2 hodnota 'r' 'H' 'o' 'r' 'a' 'k' 'v' 1 2 3 4 s2 Od pozice 3 do konce řetězce s1 Od pozice 0 počet prvků 2 Jan Lánský Úvod do programování 6. hodina

Funkce Split string[] string.Split(char[]) Problém Nyní nebudeme ještě používat, až později string[] string.Split(char[]) Rozdělí řetězec na disjunktní podřetězce podle oddělovačů zadaných v poli Vrací pole řetězců Problém Při dělení na slova, čísla nejde vyjmenovat všechny myslitelné oddělovače. Znak, se kterým jsme nepočítali. Tj. pole polí. Na nás zatím moc složité Jan Lánský Úvod do programování 6. hodina

Úvod do programování 6. hodina Ukázkový příklad … spíše antipříklad V zadaném řetězci převeďte každé liché slovo na velká písmena a každé sudé slovo na malá písmena. Řešení na následujícím slajdu Není řešeno obecně, ale pro konkrétní řetězec (s hlavičkou by se nevešlo na slajd) Časová složitost může být vysoká (dle přesné implementace stringu) Iterativní přidávání znaků na konec Jan Lánský Úvod do programování 6. hodina

Ukázkový příklad řešení velke – zda je nyní slovo z velkých písmen prvni – zda čekáme na první písmeno řetězce zmena – zda při příštím nepísmenu máme změnit proměnnou velke Až zkončí písmena bude změna velikosti Při prvním nepísmenu změna velikosti, Vytváříme nový řetězec přidáváním znaků nakonec Jan Lánský Úvod do programování 6. hodina

Úvod do programování 6. hodina Naše řetězce char[] Pole znaků char[] může odsimulovat string Se znalostí minulých hodin snadno vytvoříme jednotlivé funkce, co má string Ukážeme si několik funkcí, zbytek bude na cvičení Jan Lánský Úvod do programování 6. hodina

Naše řetězce char[] Výpis na obrazovku znak po znaku Převod řetězce string na náš řetězec char[] Zřetězení, bude další slide Jan Lánský Úvod do programování 6. hodina

Naše řetězce char[] Vytvořit pole potřebné délky Do nového řetězce nakopírujeme první řetězec Druhý řetězec kopírujeme s posunem o délku prvního pole Jan Lánský Úvod do programování 6. hodina

Úvod do programování 6. hodina Zpětná vazba Objevili jste ve slajdech chyby? Včetně pravopisných Nechápete nějaký slajd? Je příliš obtížný, nesrozumitelný? Máte nějaký nápad na vylepšení? Anonymní formulář Odeslání za pár vteřin http://goo.gl/forms/WxkZqBsZLs Jan Lánský Úvod do programování 6. hodina