+ All Categories
Home > Documents > Konstanty a proměnné

Konstanty a proměnné

Date post: 18-Mar-2016
Category:
Upload: manasa
View: 38 times
Download: 5 times
Share this document with a friend
Description:
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é. - PowerPoint PPT Presentation
27
1 Konstanty a proměnné Konstanta = něco, co se nemění, je konstantní. (constant) konstant: 4, -23, "pepř", "Ať žije král!" ěnná = něco, co se mění, obsahuje data iable) krabička, jejíž obsah lze měnit dočasné uchování nějaké hodnoty
Transcript
Page 1: Konstanty a proměnné

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

Page 2: Konstanty a proměnné

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 !

Page 3: Konstanty a proměnné

3

Název proměnné - příklady

Správně

• $pi• $pozdrav• $Pozdrav• $Pozdrav_z_Prahy• $b20

Špatně

• $10_j• $proměnná x• $jiná-proměnná• $jina-promenna

Page 4: Konstanty a proměnné

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 !

Page 5: Konstanty a proměnné

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.

Page 6: Konstanty a proměnné

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!

Page 7: Konstanty a proměnné

7

Numerické operátory

1. ** mocnina2. unární minus obracení znaménka3. * / % násobení, dělení, zbytek4. + - 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

Page 8: Konstanty a proměnné

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;

Page 9: Konstanty a proměnné

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;

$a = 0;$b = $a++ + 5;$c = ++$a + 5;

$b je 5, $a je 1$c je 6, $a je 1

Page 10: Konstanty a proměnné

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"

• Uvozovací znaky (delimiters) = většinou uvozovky

písmenka, číslice, i řídící znaky

Page 11: Konstanty a proměnné

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

Page 12: Konstanty a proměnné

12

Interpolace

• Chceme-li vytisknout znak těsně za jméno proměnné, užijeme složené závorky:

#!/usr/bin/perluse warnings;$pozdrav = "Ahoj";print "$pozdrav , Pepku !\n"; print '$pozdrav , Pepku !\n';

Ahoj , Pepku ! ... odskok na nový řádek$pozdrav , Pepku !\n ... bez odskoku

print "${pozdrav}, Pepku !\n"; Ahoj, Pepku !

Tady není mezera

Page 13: Konstanty a proměnné

13

Escaping

• Jak vytisknout znaky \ " ' ?

print "\\"; print "'"; print '"'; print "\"";

\'""

zpětné lomítkoapostrofuvozovkyuvozovky

• Je třeba rozmyslet, jaké oddělovače použít

• Lze použít vlastní oddělovače !

Page 14: Konstanty a proměnné

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í

q/ totéž jako 'qq/ totéž jako "

print q/Ahoj, Pepku!/;print qq/${pozdrav}, Pepku/;

Místo / lze použít libovolný nealfanumerický znak, tedy např. # | + _, nebo dvojici (), {}, <>,[]

Page 15: Konstanty a proměnné

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.

Page 16: Konstanty a proměnné

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";

$koncovka = "em";$kmen = "hrad";$tvar = $kmen . $koncovka";print "$tvar\n";

hradu

print "Dvakrát pět je ".2*5.".\n"; Dvakrát pět je 10.

Page 17: Konstanty a proměnné

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 . " ";

Page 18: Konstanty a proměnné

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é

Page 19: Konstanty a 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

Page 20: Konstanty a proměnné

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

Page 21: Konstanty a proměnné

21

Příklad

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

Page 22: Konstanty a proměnné

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

Page 23: Konstanty a proměnné

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é

Page 24: Konstanty a proměnné

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éž

Page 25: Konstanty a proměnné

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.

Page 26: Konstanty a proměnné

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

Page 27: Konstanty a proměnné

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, print 4.000, ' ', .00000000033, ' ', 2E-4, ' ', 9.77E-5, " ", 10_181_973,

' ', 9.87E9, " ", 86.7E14, "\n";' ', 9.87E9, " ", 86.7E14, "\n";Výsledek bude:Výsledek bude:

4 3.3e-10 0.0002 9.77e-05 10181973 9870000000 8.67e+154 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 Můžeme si ho ale naformátovat podle svých představ - funkce printfprintf

my $x = 9.1234567890123456;my $x = 9.1234567890123456;

printf "%.5f\n", $x; # tisk čísla na 5 desetinných míst, tedy 9.12346printf "%.5f\n", $x; # tisk čísla na 5 desetinných míst, tedy 9.12346


Recommended