1 / 27

Konstanty a proměnné

Konstanty a proměnné. Konstanta = něco, co se nemění, je konstantní. (constant). Př. konstant: 4, -23, "pepř", "Ať žije král!". Proměnná = něco, co se mění, obsahuje data. (variable) krabička, jejíž obsah lze měnit dočasné uchování nějaké hodnoty. Název proměnné.

manasa
Download Presentation

Konstanty a proměnné

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Konstanty a proměnné Konstanta = něco, co se nemění, je konstantní. (constant) Př. konstant: 4, -23, "pepř", "Ať žije král!" • Proměnná = něco, co se mění, obsahuje data. • (variable) • krabička, jejíž obsah lze měnit • dočasné uchování nějaké hodnoty

  2. Název proměnné • V Perlu začíná znakem $. • Je utvořen z alfanumerických znaků a podtržítka. • První znak za $ nesmí být číslice. • Maximální délka 251 znaků • Záleží na velikosti písmen ! • Nesmí obsahovat mezery. • Nepoužívat znaky s diakritikou !

  3. Špatně $10_j $proměnná x $jiná-proměnná $jina-promenna Název proměnné - příklady Správně • $pi • $pozdrav • $Pozdrav • $Pozdrav_z_Prahy • $b20

  4. Obsah proměnné Skalární veličina, tedy číslo nebo řetězec • $pi = -3.14 • $pozdrav = "Dobrý den" Řetězec je v uvozovkách !

  5. Typy čísel • Integer (celé číslo) • Floating point (racionální číslo) Integer • Lze oddělovat tisíce podtržítky (jen pro čitelnost programu): (10 milionů = 10_000_000) • Maximální číslo uložitelné v počítači: 32 bitů, tj. 4 294 967 295Pro větší čísla je třeba použít zvl. modul.

  6. Typy čísel • Floating point (tzv. reálné číslo) • čísla s desetinnou čárkou • výsledky aritmetických operací s necelým výsledkem • odmocniny (2), další iracionální čísla () • Zaokrouhlování !POZOR!

  7. Numerické operátory ** mocnina unární minus obracení znaménka * / % násobení, dělení, zbytek + - sčítání, násobení Červená čísla vyjadřují přednosti (precedence). Chceme-li to jinak, použijeme závorky 3 + 5 * 4 je něco jiného než (3 + 5) * 4

  8. Přiřazovací operátor = • Není to rovnítko ! • $pi = 3.14; $pozdrav = "Ahoj"; • Vícenásobné přiřazení • $f = $g = $k = 8; • nebo dokonce • $a = 5 * ($c = 2); výsledek: a je 10, c je 2 - nehezké • $x = 5 * 6; • $y = $x - 6; • $z = $y / 8;

  9. Autoinkrement, autodekrement • Autoinkrement ++ • zvětší hodnotu proměnné o 1 • Autodekrement -- • zmenší hodnotu proměnné o 1 • Využití v cyklech • $a++; $b--; ++$a; --$b; $b je 5, $a je 1 $c je 6, $a je 1 $a = 0; $b = $a++ + 5; $c = ++$a + 5;

  10. Řetězce • Řetězec = (libovolně dlouhá) posloupnost libovolných znaků ohraničená z obou stran uvozovacími znaky Př.: "Dobrý den, agente 007" "Dobrý den\n" písmenka, číslice, i řídící znaky • Uvozovací znaky (delimiters) = většinou uvozovky

  11. Typy uvozovek • Dvojité uvozovky ("řetězec")  stejné • interpolation: • je-li v řetězci proměnná, nahrazuje se svým obsahem • interpretují se tzv. "escape sequences", např. \n (konec řádku), \t (tabulátor) • Jednoduché uvozovky ('řetězec') stejné • proměnné se nenahrazují svým obsahem, řetězec se bere doslova - no interpolation

  12. Interpolace #!/usr/bin/perl use warnings; $pozdrav = "Ahoj"; print "$pozdrav , Pepku !\n"; print '$pozdrav , Pepku !\n'; Ahoj , Pepku ! ... odskok na nový řádek $pozdrav , Pepku !\n ... bez odskoku • Chceme-li vytisknout znak těsně za jméno proměnné, užijeme složené závorky: print "${pozdrav}, Pepku !\n"; Ahoj, Pepku ! Tady není mezera

  13. Escaping • Jak vytisknout znaky \ " ' ? \ ' " " zpětné lomítko apostrof uvozovky uvozovky print "\\"; print "'"; print '"'; print "\""; • Je třeba rozmyslet, jaké oddělovače použít • Lze použít vlastní oddělovače !

  14. Vlastní oddělovače • Hodí se, když chceme pracovat se složitějším textem, který obsahuje víc znaků • Je třeba vybrat takové oddělovače, které se v textu nevyskytují print q/Ahoj, Pepku!/; print qq/${pozdrav}, Pepku/; q/ totéž jako ' qq/ totéž jako " Místo / lze použít libovolný nealfanumerický znak, tedy např. # | + _, nebo dvojici (), {}, <>,[]

  15. Čísla a řetězce • Převody mezi čísly a řetězci - automatické • Př. $deset="10" ... to je řetězec, ale vyskytne-li se mezi čísly, převede se taky na číslo. • Automatické převody neplatí pro osmičková ani hexadecimální čísla, ta se musí explicitně převést pomocí funkcí oct a hex.

  16. Řetězcové operátory • Zřetězení = konkatenace (concatenation) • přilepení jednoho řetězce na konec druhého • je-li třeba, číslo se převede na řetězec print "hrad"."u"; hradu $koncovka = "em"; $kmen = "hrad"; $tvar = $kmen . $koncovka"; print "$tvar\n"; print "Dvakrát pět je ".2*5.".\n"; Dvakrát pět je 10.

  17. Ještě přiřazování • = není rovnítko, takže lze i: • $x = $x - 6; $slovo = $slovo." ".$slovo; • Další možný zápis: • $x -= 6; totéž jako $x = $x - 6; • $x += -6; totéž jako $x = $x + (-6); • $x *= 6; totéž jako $x = $x * 6; • $x /= 6; totéž jako $x = $x / 6; • $slovo .= " "; $slovo = $slovo . " ";

  18. Globální a lokální proměnná • Globální proměnnou (global variable) lze používat (tzn. i měnit) v celém programu • Lokální proměnná (local / lexical variable) je definovaná jen pro blok, ve kterém je deklarovaná a v případných podblocích • Je třeba ji deklarovat : • my $promenna; • Zvykneme si deklarovat všechny proměnné

  19. Lokální proměnné $w = 8; # globální proměnná print $w; # vytiskne 8 {my $w; # lokální proměnná uvnitř bloku$w = 19;print $w; # vytiskne 19 } print $w; # vytiskne 8 Použití v podprogramech

  20. Hlídání proměnných • Globální proměnné není třeba deklarovat, ale je to vhodné • our $glob_promenna; • Kontrola, aby byly všechny proměnné deklarovány - use strict; • Při opomenutí – varování při překladu • Globální proměnné se používají málo

  21. Příklad #!/usr/bin/perl # skládání slov use warnings; use strict; my $kmen, $koncovka; $kmen = <STDIN>; # uživatel zadá kmen z klávesnice $koncovka = <STDIN>; # totéž pro koncovku print "Celé slovo je: ".$kmen.$koncovka.".\n";

  22. Vstup a výstup - jen pro začátek • Vstup - data, která zadáváme programu, aby je zpracoval • diamantový operátor < > • Výstup - data, která program vyprodukuje, výsledky • print • Standardní vstup - klávesnice • Standardní výstup - obrazovka

  23. Standardní vstup • Diamantový operátor přečte jednu řádku ze vstupu • $vstup = <STDIN>; • v proměnné $vstup je to, co zapíše uživatel na klávesnici, včetně znaku konce řádku • Konec řádku: • UNIX : "\n" line feed (LF) - chr(10) • Windows : "\r\n" carriage return - chr(13) (CR LF) • chomp($vstup); • odstranění konce řádku z obsahu proměnné

  24. Standardní výstup • Soubor lze otevřít i pro výstup, ale to necháme na později • Standardní výstup se otevře automaticky vždy • print [seznam čísel a/nebo řetězců, oddělených čárkami] • print "Dnes je krásně\n"; • print "Dnes" , " ", "je k", "rásn", "ě\n"; # totéž

  25. Unixová odbočka - přesměrování standardního vstupu a výstupu • Standardní vstup / výstup lze přesměrovat ze /do souboru • Přesměrování vstupu < • Přesměrování výstupu • > vytvoření souboru • >> přidání na konec existujícího souboru • ./tisk.perl > vystup.txt • Výstup programu tisk.perl se zapíše do souboru vystup.txt. • Pokud soubor už existoval, přepíše se.

  26. Ještě o číslech 42; # integer 42 12.5; # floating point number 101873.000; # 101 873 .005 # 0.005 5E-3; # stejné číslo jako na předchozím řádku 23e-100; # zápis velmi malých čísel (23 krát 10 na minus 100 2.3E-99; # stejné číslo jako na předchozím řádku 23e6; # 23 milionů 23_000_000; # stejné číslo jako na předchozím řádku

  27. Formátování výstupu • Příkaz print vypíše řetězec přesně tak, jak mu ho zadáme • Čísla ale upraví do co nejjednoduššího tvaru print 4.000, ' ', .00000000033, ' ', 2E-4, ' ', 9.77E-5, " ", 10_181_973, ' ', 9.87E9, " ", 86.7E14, "\n"; Výsledek bude: 4 3.3e-10 0.0002 9.77e-05 10181973 9870000000 8.67e+15 Můžeme si ho ale naformátovat podle svých představ - funkce printf my $x = 9.1234567890123456; printf "%.5f\n", $x; # tisk čísla na 5 desetinných míst, tedy 9.12346

More Related