Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Konzole

Udělejme si krátkou odbočku do světa opravdových programátorů, ajťáků a hackerů. A tou je - konzole, neboli příkazový řádek.

K čemu je dnes, v době super grafiky, psaní do nějakého příkazového řádku? Hlavními důvody jsou automatizace a jednoduchost rozhraní. Pomocí skriptů (což jsou textové popisné soubory) můžeme snadno a rychle sestavit posloupnosti příkazů, které zajistí řešení nějakého problému, aniž na to musíme programovat velké množství složitých jednoúčelových programů. Konzole je proto základem operačních systémů.

V historických dobách výpočetní techniky (za éry sálových počítačů) byla konzole jediným prostředkem pro komunikaci člověka s počítačem. Komunikace probíhala pomocí terminálů připojených k počítači přes sériový port. Terminál tvořil displej, zobrazující texty přijaté z počítače, a klávesnice, vysílající kódy stisknutých kláves. Prapůvodcem terminálů byl dálnopis, umožňující vysílání kódů kláves v sériovém kódu a tisk přijatých znaků na papír. K tomu účelu vznikla množina ASCII znaků zahrnující jak základní zobrazitelné znaky (anglické, to znamená bez diakritických znamének), tak i několik řídicích znaků sloužících k řízení tisku na dálnopisu. Tabulku ASCII znaků najdete na konci této lekce.

ASCII znaky využívají pouze 7 bitové kódy. Rozšířením kódu znaků na 8 bitů byla ASCII tabulka doplněna o další podmnožinu 128 znaků rozšiřující znaky o speciální znaky a znaky s diakritikou. Tato doplňková sada však nestačí k pokrytí potřeby znaků všech jazyků a proto vzniklo více sad rozšiřujících znaků, kódové stránky. V českých Windows se používá znaková sada windows-1250, tuto znakovou sadu používá interně i systém Petr. Naproti tomu konzole používá jinou kódovou stránku, 850 (Latin 2). Je to pozůstatek z dob systému DOS. Systém Petr proto zajišťuje při konzolovém vstupu a výstupu textů správné překódování znakových sad a není třeba se o to starat. Narazit na nesoulad můžete v případě znaků, které se vyskytují v jedné sadě a ne v druhé - to jsou například rámečky v kódu 850. Dalším zádrhelem může být to, pokud vstupem nebo výstupem konzolového programu má být text zobrazitelný ve Windows, tedy rozdílné znakové sady. Pro tyto účely je možné použít konverzní utility, které zajistí potřebnou konverzi znaků. Obvyklejší v praxi je znaky s diakritikou v konzolových režimech vůbec nepoužívat. Ale není to nijak zvláštní omezení, neboť konzolový režim je určen počítačovým expertům pro systémové účely a ne běžné laické veřejnosti.

Jak tedy začít. Vytvořte si v Petrovi nový program, s názvem například Konzole.

Konzolové programy jsou trochu zvláštní kategorií programů. Při jejich spuštění musí operační systém zajistit otevření konzolového okna pro program. K tomu slouží speciální příznak v souboru programu, který systém informuje, že se jedná o konzolový program a že tedy program nepoběží v grafickém okně. Pro zajištění nastavení tohoto příznaku musíme v Petrovi jako jednu z prvních věcí udělat to, že na úplný začátek hlavní funkce programu umístíme prvek režim konzoly. Ten najdeme ve skupině konzola. Před tento prvek nesmíme vložit žádný jiný prvek, ani komentář, jinak by konzolový režim nefungoval.

A teď vložíme nějaký příkaz. Například si zkusíme vytvořit prográmek, kterým začínají tutoriály snad ke všem ostatním jazykům. Za prvek režim konzoly vložte prvek výstup textu na konzolu. Jak vidíte, prvek již obsahuje textovou konstantu pro možnost zadání nějakého textu. Tak nějaký text doplňte. Tím je váš první konzolový program hotov. Proti jiným jazykům trochu opožděný příklad, ale nakonec přece. Výsledek by mohl vypadat takto nějak:

Když program zkusíte spustit, problikne černé okno a zase zmizí. Program se možná provedl, systém pro něj otevřel konzolové okno, ale po ukončení programu ho zase zavřel a my nic neviděli. Proto si potřebujeme otevřít trvalé konzolové okno. Abychom se vyhnuli nutnosti použití příkazů pro změnu složky, připravíme si zástupce, který výchozí složku sám nastaví.

Přes systémové menu Start / Programy / Příslušenství si najděte Příkazový řádek a pravým tlačítkem myši ho zkopírujte na plochu. Otevřete okno vlastností vzniklého zástupce a v záložce Zástupce upravte políčko Spustit v: tak, aby ukazovalo do stejné složky, jako je program který vytváříte. Typicky by zde mohlo být: %HOMEDRIVE%%HO­MEPATH%\Dokumen­ty\Peter\Program.

Spusťte zástupce příkazového řádku. Objeví se černé okno, ve kterém uvidíte plnou cestu do složky s programem. Za textem cesty bliká kurzor. Zkuste program opět spustit, tentokrát ale z konzolového okna. A to tak, že do příkazového řádku napíšete jméno programu a stisknete Enter. Na dalším řádku by se měl objevit text, který jste v programu uvedli.

Budete-li chtít program znovu spouštět, můžete využít historie příkazů - pomocí šipky nahoru se můžete vrátit k předešlému příkazu a buď ho pozměnit (lze upravovat šipkami vlevo a vpravo, příp. klávesami Delete a BackSpace) nebo jen znovu odeslat stiskem Enter. Před každým spuštěním ovšem nezapomeňte program nejdříve uložit.

Tip: Pro usnadnění práce se soubory a konzolou je dobrým tipem program FAR. Je to souborový manažer umožňující snadnou a přehlednou manipulaci se soubory - kopírování, přejmenování, změna atributů. Ale také FTP přístup či hromadné porovnání adresářů. Oproti jiným podobným souborovým manažerům má jednu velkou přednost - konzolové okno. Konzolové výstupy z programů neustále zůstávají na obrazovce. To je jeden z podstatných důvodů, proč je FAR jedním z nejčastějších manažerů používaných systemáky.

Kromě výstupu textu na konzolu je samozřejmě možný i vstup. K tomu slouží prvek vstup textu z konzoly. Prvek navrátí text zadaný klávesnicí. Proto si do pole společných proměnných připravíme textovou proměnnou text a do ní uložíme text načtený z prvku pro vstup textu. Příkaz pro vstup textu doplňte na konec programu, za minulý příkaz pro výstup textu.

Aby náš program dělal něco alespoň malinko smyslupného, pojmeme program jako kalkulátor faktoriálu (což jsou násobky číselné řady od 1 až po zadané číslo). Změňte proto text v příkazu pro výstup textu na výzvu, která se zobrazí uživateli před zadáním čísla, např. "Zadejte číslo 1 až 170:". Předtím ještě zrušte prvek pro odřádkování, výzvu není vhodné na konci odřádkovat, aby zadávaný text od uživatele pokračoval za textem výzvy.

No a nakonec vložte další příkaz pro výstup textu, který bude sloužit k zobrazení výsledku. Nejdříve zadané číslo převeďte z textového tvaru na číselné vyjádření, pak vypočtěte faktoriál (v Petrovi je na to přímo matematická funkce), výsledek převeďte opět na textový tvar a zobrazte. Celý program by mohl vypadat nějak takto:

Když program spustíte, zobrazí se výzva k zadání čísla a po zadání čísla výsledek. V případě zadání čísla většího než 170 program zobrazí chybu 1#INF jako příznak přetečení výsledku.

Tabulka ASCII znaků

dek hex znak
0 $00 NUL
1 $01 SOH
2 $02 STX
3 $03 ETX
4 $04 EOT
5 $05 ENQ
6 $06 ACK
7 $07 BEL
8 $08 BS
9 $09 HT
10 $0A LF
11 $0B VT
12 $0C FF
13 $0D CR
14 $0E SO
15 $0F SI
 
dek hex znak
32 $20 mezera
33 $21 !
34 $22 "
35 $23 #
36 $24 $
37 $25 %
38 $26 &
39 $27 '
40 $28 (
41 $29 )
42 $2A *
43 $2B +
44 $2C ,
45 $2D -
46 $2E .
47 $2F /
 
dek hex znak
64 $40 @
65 $41 A
66 $42 B
67 $43 C
68 $44 D
69 $45 E
70 $46 F
71 $47 G
72 $48 H
73 $49 I
74 $4A J
75 $4B K
76 $4C L
77 $4D M
78 $4E N
79 $4F O
 
dek hex znak
96 $60 `
97 $61 a
98 $62 b
99 $63 c
100 $64 d
101 $65 e
102 $66 f
103 $67 g
104 $68 h
105 $69 i
106 $6A j
107 $6B k
108 $6C l
109 $6D m
110 $6E n
111 $6F o
             
16 $10 DLE
17 $11 DC1
18 $12 DC2
19 $13 DC3
20 $14 DC4
21 $15 NAK
22 $16 SYN
23 $17 ETB
24 $18 CAN
25 $19 EM
26 $1A SUB
27 $1B ESC
28 $1C FS
29 $1D GS
30 $1E RS
31 $1F US
 
48 $30 0
49 $31 1
50 $32 2
51 $33 3
52 $34 4
53 $35 5
54 $36 6
55 $37 7
56 $38 8
57 $39 9
58 $3A :
59 $3B ;
60 $3C <
61 $3D =
62 $3E >
63 $3F ?
 
80 $50 P
81 $51 Q
82 $52 R
83 $53 S
84 $54 T
85 $55 U
86 $56 V
87 $57 W
88 $58 X
89 $59 Y
90 $5A Z
91 $5B [
92 $5C \
93 $5D ]
94 $5E ^
95 $5F _
 
112 $70 p
113 $71 q
114 $72 r
115 $73 s
116 $74 t
117 $75 u
118 $76 v
119 $77 w
120 $78 x
121 $79 y
122 $7A z
123 $7B {
124 $7C |
125 $7D }
126 $7E ~
127 $7F ¦

 

Stáhnout

Stažením následujícího souboru souhlasíš s licenčními podmínkami

Staženo 222x (129 kB)
Aplikace je včetně zdrojových kódů v jazyce Petr Lite (jsou obsaženy v EXE souboru, který lze v programu přímo otevřít)

 

Všechny články v sekci
Konzole
Článek pro vás napsal Panda38
Avatar
Uživatelské hodnocení:
Ještě nikdo nehodnotil, buď první!
Programátor C++, WinAPI, ASM.
Aktivity