Úvod do jazyka C – 2. část Operátory a bitové funkce ...
Transcript of Úvod do jazyka C – 2. část Operátory a bitové funkce ...
![Page 1: Úvod do jazyka C – 2. část Operátory a bitové funkce ...](https://reader031.fdocument.pub/reader031/viewer/2022012517/6191a5bab5f21d1f8b7db7c9/html5/thumbnails/1.jpg)
8. lekce
Úvod do jazyka C – 2. částOperátory a bitové funkce
Editace a kompilace programu
Schéma počítačeMiroslav Jílek
1/62
![Page 2: Úvod do jazyka C – 2. část Operátory a bitové funkce ...](https://reader031.fdocument.pub/reader031/viewer/2022012517/6191a5bab5f21d1f8b7db7c9/html5/thumbnails/2.jpg)
Operátory
2/62
![Page 3: Úvod do jazyka C – 2. část Operátory a bitové funkce ...](https://reader031.fdocument.pub/reader031/viewer/2022012517/6191a5bab5f21d1f8b7db7c9/html5/thumbnails/3.jpg)
Operátory
= přiřazení, např.: a = 5;
3/62
![Page 4: Úvod do jazyka C – 2. část Operátory a bitové funkce ...](https://reader031.fdocument.pub/reader031/viewer/2022012517/6191a5bab5f21d1f8b7db7c9/html5/thumbnails/4.jpg)
Operátory
= přiřazení, např.: a = 5;
+ sčítání, např.: c = a + 1;
4/62
![Page 5: Úvod do jazyka C – 2. část Operátory a bitové funkce ...](https://reader031.fdocument.pub/reader031/viewer/2022012517/6191a5bab5f21d1f8b7db7c9/html5/thumbnails/5.jpg)
Operátory
= přiřazení, např.: a = 5;
+ sčítání, např.: c = a + 1;
+= přičtení, např.: a += 5; (stejné jako a = a + 5;)
5/62
![Page 6: Úvod do jazyka C – 2. část Operátory a bitové funkce ...](https://reader031.fdocument.pub/reader031/viewer/2022012517/6191a5bab5f21d1f8b7db7c9/html5/thumbnails/6.jpg)
Operátory
= přiřazení, např.: a = 5;
+ sčítání, např.: c = a + 1;
+= přičtení, např.: a += 5; (stejné jako a = a + 5;)
++ inkrementace, např. a++ nebo ++a (stejné jako a = a + 1;)
6/62
![Page 7: Úvod do jazyka C – 2. část Operátory a bitové funkce ...](https://reader031.fdocument.pub/reader031/viewer/2022012517/6191a5bab5f21d1f8b7db7c9/html5/thumbnails/7.jpg)
Operátory
= přiřazení, např.: a = 5;
+ sčítání, např.: c = a + 1;
+= přičtení, např.: a += 5; (stejné jako a = a + 5;)
++ inkrementace, např. a++ nebo ++a (stejné jako a = a + 1;)(v běžném příkazu je stejný výsledek, v případě použití jako parametr funkce např. function MojeFunkce (++a) se nejprve přičte +1 a až následně se zavolá funkce s novou hodnotou proměnné a, v případě function MojeFunkce (a++) se nejprve zavolá funkce s původní hodnotou a až po provedení funkce se hodnota proměnné a zvýší o 1)
7/62
![Page 8: Úvod do jazyka C – 2. část Operátory a bitové funkce ...](https://reader031.fdocument.pub/reader031/viewer/2022012517/6191a5bab5f21d1f8b7db7c9/html5/thumbnails/8.jpg)
Operátory
= přiřazení, např.: a = 5;
+ sčítání, např.: c = a + 1;
+= přičtení, např.: a += 5; (stejné jako a = a + 5;)
++ inkrementace, např. a++ nebo ++a (stejné jako a = a + 1;)(v běžném příkaze je stejný výsledek, v případě použití jako parametr funkce např. function MojeFunkce (++a) se nejprve přičte +1 a až následně se zavolá funkce s novou hodnotou proměnné a, v případě function MojeFunkce (a++) se nejprve zavolá funkce s původní hodnotou a až po provedení funkce se hodnota proměnné a zvýší o 1)
- odčítání, např.: a = b – 1;
8/62
![Page 9: Úvod do jazyka C – 2. část Operátory a bitové funkce ...](https://reader031.fdocument.pub/reader031/viewer/2022012517/6191a5bab5f21d1f8b7db7c9/html5/thumbnails/9.jpg)
Operátory
= přiřazení, např.: a = 5;
+ sčítání, např.: c = a + 1;
+= přičtení, např.: a += 5; (stejné jako a = a + 5;)
++ inkrementace, např. a++ nebo ++a (stejné jako a = a + 1;)(v běžném příkaze je stejný výsledek, v případě použití jako parametr funkce např. function MojeFunkce (++a) se nejprve přičte +1 a až následně se zavolá funkce s novou hodnotou proměnné a, v případě function MojeFunkce (a++) se nejprve zavolá funkce s původní hodnotou a až po provedení funkce se hodnota proměnné a zvýší o 1)
- odčítání, např.: a = b - 1;
-= odečtení, např.: a -= 1; (stejné jako a = a – 1;)
9/62
![Page 10: Úvod do jazyka C – 2. část Operátory a bitové funkce ...](https://reader031.fdocument.pub/reader031/viewer/2022012517/6191a5bab5f21d1f8b7db7c9/html5/thumbnails/10.jpg)
-- dekrementace, např.: a --; nebo --a;(význam pro použití u funkcí je stejný jako u inkrementace)
10/62
![Page 11: Úvod do jazyka C – 2. část Operátory a bitové funkce ...](https://reader031.fdocument.pub/reader031/viewer/2022012517/6191a5bab5f21d1f8b7db7c9/html5/thumbnails/11.jpg)
-- dekrementace, např.: a --; nebo --a;(význam pro použití u funkcí je stejný jako u inkrementace)
* násobení, např.: a = b * 3;
11/62
![Page 12: Úvod do jazyka C – 2. část Operátory a bitové funkce ...](https://reader031.fdocument.pub/reader031/viewer/2022012517/6191a5bab5f21d1f8b7db7c9/html5/thumbnails/12.jpg)
-- dekrementace, např.: a --; nebo --a;(význam pro použití u funkcí je stejný jako u inkrementace)
* násobení, např.: a = b * 3;
*= autonásobení, např.: a *= 3; (stejné jako a = a * 3;)
12/62
![Page 13: Úvod do jazyka C – 2. část Operátory a bitové funkce ...](https://reader031.fdocument.pub/reader031/viewer/2022012517/6191a5bab5f21d1f8b7db7c9/html5/thumbnails/13.jpg)
-- dekrementace, např.: a --; nebo --a;(význam pro použití u funkcí je stejný jako u inkrementace)
* násobení, např.: a = b * 3;
*= autonásobení, např.: a *= 3; (stejné jako a = a * 3;)
/ dělení, např.: a = b / 3;
13/62
![Page 14: Úvod do jazyka C – 2. část Operátory a bitové funkce ...](https://reader031.fdocument.pub/reader031/viewer/2022012517/6191a5bab5f21d1f8b7db7c9/html5/thumbnails/14.jpg)
-- dekrementace, např.: a --; nebo --a;(význam pro použití u funkcí je stejný jako u inkrementace)
* násobení, např.: a = b * 3;
*= autonásobení, např.: a *= 3; (stejné jako a = a * 3;)
/ dělení, např.: a = b / 3;
/= autodělení, např.: a /= 3; (stejné jako a = a/3;)
14/62
![Page 15: Úvod do jazyka C – 2. část Operátory a bitové funkce ...](https://reader031.fdocument.pub/reader031/viewer/2022012517/6191a5bab5f21d1f8b7db7c9/html5/thumbnails/15.jpg)
-- dekrementace, např.: a --; nebo --a;(význam pro použití u funkcí je stejný jako u inkrementace)
* násobení, např.: a = b * 3;
*= autonásobení, např.: a *= 3; (stejné jako a = a * 3;)
/ dělení, např.: a = b / 3;
/= autodělení, např.: a /= 3; (stejné jako a = a/3;)
% zbytek celočíselného dělení (modulo), např.: a = b % 2;
15/62
![Page 16: Úvod do jazyka C – 2. část Operátory a bitové funkce ...](https://reader031.fdocument.pub/reader031/viewer/2022012517/6191a5bab5f21d1f8b7db7c9/html5/thumbnails/16.jpg)
-- dekrementace, např.: a --; nebo --a;(význam pro použití u funkcí je stejný jako u inkrementace)
* násobení, např.: a = b * 3;
*= autonásobení, např.: a *= 3; (stejné jako a = a * 3;)
/ dělení, např.: a = b / 3;
/= autodělení, např.: a /= 3; (stejné jako a = a/3;)
% zbytek celočíselného dělení (modulo), např.: a = b % 2;
%= automodulo, např.: a %= 2;
16/62
![Page 17: Úvod do jazyka C – 2. část Operátory a bitové funkce ...](https://reader031.fdocument.pub/reader031/viewer/2022012517/6191a5bab5f21d1f8b7db7c9/html5/thumbnails/17.jpg)
-- dekrementace, např.: a --; nebo --a;(význam pro použití u funkcí je stejný jako u inkrementace)
* násobení, např.: a = b * 3;
*= autonásobení, např.: a *= 3; (stejné jako a = a * 3;)
/ dělení, např.: a = b / 3;
/= autodělení, např.: a /= 3; (stejné jako a = a/3;)
% zbytek celočíselného dělení (modulo), např.: a = b % 2;
%= automodulo, např.: a %= 2;
! negace, např.: a = ! b;Pozor: Když je hodnota b = 0, pak negací je b = 1 !!!
Když je b není rovno 0, pak negace je b = 0.
17/62
![Page 18: Úvod do jazyka C – 2. část Operátory a bitové funkce ...](https://reader031.fdocument.pub/reader031/viewer/2022012517/6191a5bab5f21d1f8b7db7c9/html5/thumbnails/18.jpg)
&& Logické And, např.: a = b && c;V případě, že „b „ a také „c“ je true, pak je výsledkem a = 1, v ostatních případech je výsledkem a = 0. Za true je považovaná jakákoli číselná hodnota různá od nuly, false je rovno nule.V případě, že „b“ je false, pak je celý výraz false a „c“ se již nevyhodnocuje! Toho můžeme využít při řazení dílčích podmínek.
18/62
![Page 19: Úvod do jazyka C – 2. část Operátory a bitové funkce ...](https://reader031.fdocument.pub/reader031/viewer/2022012517/6191a5bab5f21d1f8b7db7c9/html5/thumbnails/19.jpg)
&& Logické And, např.: a = b && c;V případě, že „b „ a také „c“ je true, pak je výsledkem a = 1, v ostatních případech je výsledkem a = 0. Za true je považovaná jakákoli číselná hodnota různá od nuly, false je rovno nule.V případě, že „b“ je false, pak je celý výraz false a „c“ se již nevyhodnocuje! Toho můžeme využít při řazení dílčích podmínek.
|| Logické Or, např.: a = b || c;V případě, že „b „ a také „c“ je false, pak je výsledkem a = 0, v ostatních případech je výsledkem a = 1.V případě, že „b“ je true, pak je celý výraz true a „c“ se již nevyhodnocuje! Toho můžeme využít při řazení dílčích podmínek.
19/62
![Page 20: Úvod do jazyka C – 2. část Operátory a bitové funkce ...](https://reader031.fdocument.pub/reader031/viewer/2022012517/6191a5bab5f21d1f8b7db7c9/html5/thumbnails/20.jpg)
&& Logické And, např.: a = b && c;V případě, že „b „ a také „c“ je true, pak je výsledkem a = 1, v ostatních případech je výsledkem a = 0. Za true je považovaná jakákoli číselná hodnota různá od nuly, false je rovno nule.V případě, že „b“ je false, pak je celý výraz false a „c“ se již nevyhodnocuje! Toho můžeme využít při řazení dílčích podmínek.
|| Logické Or, např.: a = b || c;V případě, že „b „ a také „c“ je false, pak je výsledkem a = 0, v ostatních případech je výsledkem a = 1.V případě, že „b“ je true, pak je celý výraz true a „c“ se již nevyhodnocuje! Toho můžeme využít při řazení dílčích podmínek.
>, <, <=, >=, == (logická rovnost), != (logická nerovnost) PorovnáníVýsledkem je pravda (true) nebo nepravda (false)
20/62
![Page 21: Úvod do jazyka C – 2. část Operátory a bitové funkce ...](https://reader031.fdocument.pub/reader031/viewer/2022012517/6191a5bab5f21d1f8b7db7c9/html5/thumbnails/21.jpg)
Bitové funkce
21/62
![Page 22: Úvod do jazyka C – 2. část Operátory a bitové funkce ...](https://reader031.fdocument.pub/reader031/viewer/2022012517/6191a5bab5f21d1f8b7db7c9/html5/thumbnails/22.jpg)
Bitové funkce& bitový And na dvě čísla
např.: pro a = 5, b = 3 bude v binárním kódu a = 101, b = 011, výsledek a & b bude 001, protože 1&0=0, 0&1=0, 1&1=1
22/62
![Page 23: Úvod do jazyka C – 2. část Operátory a bitové funkce ...](https://reader031.fdocument.pub/reader031/viewer/2022012517/6191a5bab5f21d1f8b7db7c9/html5/thumbnails/23.jpg)
Bitové funkce& bitový And na dvě čísla
např.: pro a = 5, b = 3 bude v binárním kódu a = 101, b = 011, výsledek a & b bude 001, protože 1&0=0, 0&1=0, 1&1=1
| bitový Or na dvě číslanapř.: pro a = 5, b = 3, bude v binárním kódu a = 101, b = 011výsledek a | b bude 111, protože 1|0=1, 0|1=1, 1|1=1
23/62
![Page 24: Úvod do jazyka C – 2. část Operátory a bitové funkce ...](https://reader031.fdocument.pub/reader031/viewer/2022012517/6191a5bab5f21d1f8b7db7c9/html5/thumbnails/24.jpg)
Bitové funkce& bitový And na dvě čísla
např.: pro a = 5, b = 3 bude v binárním kódu a = 101, b = 011, výsledek a & b bude 001, protože 1&0=0, 0&1=0, 1&1=1
| bitový Or na dvě číslanapř.: pro a = 5, b = 3, bude v binárním kódu a = 101, b = 011výsledek a | b bude 111, protože 1|0=1, 0|1=1, 1|1=1
<< bitový posun dolevanapř.: a = b << 2; posune desetinnou čárku o dvě pozice v binárním kódu doprava (platné číslice se od desetinné čárky posunou doleva), jestliže b = 510, pak 1012 se změní na 101002, potom bude a = 2010
24/62
![Page 25: Úvod do jazyka C – 2. část Operátory a bitové funkce ...](https://reader031.fdocument.pub/reader031/viewer/2022012517/6191a5bab5f21d1f8b7db7c9/html5/thumbnails/25.jpg)
Bitové funkce& bitový And na dvě čísla
např.: pro a = 5, b = 3 bude v binárním kódu a = 101, b = 011, výsledek a & b bude 001, protože 1&0=0, 0&1=0, 1&1=1
| bitový Or na dvě číslanapř.: pro a = 5, b = 3, bude v binárním kódu a = 101, b = 011výsledek a | b bude 111, protože 1|0=1, 0|1=1, 1|1=1
<< bitový posun dolevanapř.: a = b << 2; posune desetinnou čárku o dvě pozice v binárním kódu doprava (platné číslice se od desetinné čárky posunou doleva), jestliže b = 510, pak 1012 se změní na 101002, potom bude a = 2010
>> bitový posun doprava např.: a = b >> 2; posune desetinnou čárku o dvě pozice v
binárním kódu doleva, jestliže b = 5, pak 101 se změní na 1,01 a to je a =1+1/4
25/62
![Page 26: Úvod do jazyka C – 2. část Operátory a bitové funkce ...](https://reader031.fdocument.pub/reader031/viewer/2022012517/6191a5bab5f21d1f8b7db7c9/html5/thumbnails/26.jpg)
Typy závorek
( ) parametry funkcí{ } ohraničují části kódu (bloky), pokud definujeme proměnnou uvnitř
těchto závorek, pak platí (je platná) pouze uvnitř závorek![ ] definují indexy polí
26/62
![Page 27: Úvod do jazyka C – 2. část Operátory a bitové funkce ...](https://reader031.fdocument.pub/reader031/viewer/2022012517/6191a5bab5f21d1f8b7db7c9/html5/thumbnails/27.jpg)
Kombinace kláves
Alt Gr + D zapíše &Alt Gr + X zapíše #Alt Gr + W zapíše |Alt Gr + B zapíše {Alt Gr + N zapíše }Alt Gr + F zapíše [Alt Gr + G zapíše ]
27/62
![Page 28: Úvod do jazyka C – 2. část Operátory a bitové funkce ...](https://reader031.fdocument.pub/reader031/viewer/2022012517/6191a5bab5f21d1f8b7db7c9/html5/thumbnails/28.jpg)
Editace kódu programu
Komentář v kódu programu
// text - pro jeden řádek/* - na začátku prvního řádku komentáře*/ - na konci posledního řádku komentáře
Za každým řádkem, pokud kód nepokračuje složenými závorkami, musí být středník!
28/62
![Page 29: Úvod do jazyka C – 2. část Operátory a bitové funkce ...](https://reader031.fdocument.pub/reader031/viewer/2022012517/6191a5bab5f21d1f8b7db7c9/html5/thumbnails/29.jpg)
Hlavní program:
int main (void){
kód programureturn 0;
}
int funkce je typu integer (v hlavním programu musí být int)return v případě úspěšného běhu programu vrací nulu, jinak číslo chyby(void) bez vstupních parametrů (pokud žádné nepoužijeme)
nebo
29/62
![Page 30: Úvod do jazyka C – 2. část Operátory a bitové funkce ...](https://reader031.fdocument.pub/reader031/viewer/2022012517/6191a5bab5f21d1f8b7db7c9/html5/thumbnails/30.jpg)
int main (int argc, char ** args){
kód programureturn 0;
}
argc je počet parametrů (arguments count), args je pole parametrů, **args znamená odkaz na odkaz na char – to znamená, že pod odkazem je dvourozměrné pole charů
30/62
![Page 31: Úvod do jazyka C – 2. část Operátory a bitové funkce ...](https://reader031.fdocument.pub/reader031/viewer/2022012517/6191a5bab5f21d1f8b7db7c9/html5/thumbnails/31.jpg)
Procedura:
datový_typ jmeno_procedury (parametry)
… a dále jako u hlavního programu
31/62
![Page 32: Úvod do jazyka C – 2. část Operátory a bitové funkce ...](https://reader031.fdocument.pub/reader031/viewer/2022012517/6191a5bab5f21d1f8b7db7c9/html5/thumbnails/32.jpg)
Můj první program
program muj_prvni_program;#include stdio.hint main(void){
printf(“Muj prvni program. Hura!\n”);return 0;
}
32/62
![Page 33: Úvod do jazyka C – 2. část Operátory a bitové funkce ...](https://reader031.fdocument.pub/reader031/viewer/2022012517/6191a5bab5f21d1f8b7db7c9/html5/thumbnails/33.jpg)
Můj druhý programprogram muj_prvni_program;#include stdio.hint main(void){
printf(“Zadej cele cislo “);int c;scanf(“%d“,&c);if (c<0){
printf(“To je zaporne cislo.\n“);}else if (c>0){
printf(“To je kladne cislo.\n“);}else{
printf(“Cislo je nula.\n“);}return 0;
}
33/62
![Page 34: Úvod do jazyka C – 2. část Operátory a bitové funkce ...](https://reader031.fdocument.pub/reader031/viewer/2022012517/6191a5bab5f21d1f8b7db7c9/html5/thumbnails/34.jpg)
program muj_prvni_program;#include stdio.hint main(void){
printf(“Zadej cele cislo “);int c;scanf(“%d“,&c);if (c<0) printf(“To je zaporne cislo.\n“);else if (c>0) printf(“To je kladne cislo.\n“);else
printf(“Cislo je nula.\n“);return 0;
}
34/62
![Page 35: Úvod do jazyka C – 2. část Operátory a bitové funkce ...](https://reader031.fdocument.pub/reader031/viewer/2022012517/6191a5bab5f21d1f8b7db7c9/html5/thumbnails/35.jpg)
Připojení souboru s kódem (program je napsán ve více souborech):
Program může být napsán ve více souborech.To můžeme použít, když potřebujeme program rozdělit do menších celků, např. z důvodu potřeby rozdělení na logické celky.
#include “cesta k souboru“
Pokud je druhý soubor ve stejné složce, jako soubor první (hlavní):
např.: #include “program2.c“ (Windows)#include “./program2.c“ (Linux)
35/62
![Page 36: Úvod do jazyka C – 2. část Operátory a bitové funkce ...](https://reader031.fdocument.pub/reader031/viewer/2022012517/6191a5bab5f21d1f8b7db7c9/html5/thumbnails/36.jpg)
Editační prostření
Kód programu lze editovat v jakémkoli textovém editoru.
36/62
![Page 37: Úvod do jazyka C – 2. část Operátory a bitové funkce ...](https://reader031.fdocument.pub/reader031/viewer/2022012517/6191a5bab5f21d1f8b7db7c9/html5/thumbnails/37.jpg)
Editační prostření
Kód programu lze editovat v jakémkoli textovém editoru.Postačí poznámkový blok.
37/62
![Page 38: Úvod do jazyka C – 2. část Operátory a bitové funkce ...](https://reader031.fdocument.pub/reader031/viewer/2022012517/6191a5bab5f21d1f8b7db7c9/html5/thumbnails/38.jpg)
Editační prostření
Kód programu lze editovat v jakémkoli textovém editoru.Postačí poznámkový blok.Na FIT je používaný editor Gedit.
38/62
![Page 39: Úvod do jazyka C – 2. část Operátory a bitové funkce ...](https://reader031.fdocument.pub/reader031/viewer/2022012517/6191a5bab5f21d1f8b7db7c9/html5/thumbnails/39.jpg)
Editační prostření
Kód programu lze editovat v jakémkoli textovém editoru.Postačí poznámkový blok.Na FIT je používaný editor Gedit.
Soubory s kódem programu se ukládají s koncovkou .c
39/62
![Page 40: Úvod do jazyka C – 2. část Operátory a bitové funkce ...](https://reader031.fdocument.pub/reader031/viewer/2022012517/6191a5bab5f21d1f8b7db7c9/html5/thumbnails/40.jpg)
Kompilace programu
Nejprve je třeba nainstalovat kompilátor gcc.http://tdm-gcc.tdragon.net/download - dawnload kompilátoru gcc
40/62
![Page 41: Úvod do jazyka C – 2. část Operátory a bitové funkce ...](https://reader031.fdocument.pub/reader031/viewer/2022012517/6191a5bab5f21d1f8b7db7c9/html5/thumbnails/41.jpg)
Kompilace programu
Nejprve je třeba nainstalovat kompilátor gcc.http://tdm-gcc.tdragon.net/download - dawnload kompilátoru gcc
Vytvořený zdrojový kód (soubor) musíme před spuštěním zkompilovat!
41/62
![Page 42: Úvod do jazyka C – 2. část Operátory a bitové funkce ...](https://reader031.fdocument.pub/reader031/viewer/2022012517/6191a5bab5f21d1f8b7db7c9/html5/thumbnails/42.jpg)
Kompilace programu
Nejprve je třeba nainstalovat kompilátor gcc.http://tdm-gcc.tdragon.net/download - dawnload kompilátoru gcc
Vytvořený zdrojový kód (soubor) musíme před spuštěním zkompilovat!
Kompilace: – otevřeme příkazový řádek ve složce, kde máme zdrojový soubor
42/62
![Page 43: Úvod do jazyka C – 2. část Operátory a bitové funkce ...](https://reader031.fdocument.pub/reader031/viewer/2022012517/6191a5bab5f21d1f8b7db7c9/html5/thumbnails/43.jpg)
Kompilace programu
Nejprve je třeba nainstalovat kompilátor gcc.http://tdm-gcc.tdragon.net/download - dawnload kompilátoru gcc
Vytvořený zdrojový kód (soubor) musíme před spuštěním zkompilovat!
Kompilace: – otevřeme příkazový řádek ve složce, kde máme zdrojový soubor– spustíme příkaz: gcc jménosouboru.c
43/62
![Page 44: Úvod do jazyka C – 2. část Operátory a bitové funkce ...](https://reader031.fdocument.pub/reader031/viewer/2022012517/6191a5bab5f21d1f8b7db7c9/html5/thumbnails/44.jpg)
Kompilace programu
Nejprve je třeba nainstalovat kompilátor gcc.http://tdm-gcc.tdragon.net/download - dawnload kompilátoru gcc
Vytvořený zdrojový kód (soubor) musíme před spuštěním zkompilovat!
Kompilace: – otevřeme příkazový řádek ve složce, kde máme zdrojový soubor– spustíme příkaz: gcc jménosouboru.c– vygenerovaný soubor se vždy jmenuje a.exe (windows) nebo a.out (linux)
44/62
![Page 45: Úvod do jazyka C – 2. část Operátory a bitové funkce ...](https://reader031.fdocument.pub/reader031/viewer/2022012517/6191a5bab5f21d1f8b7db7c9/html5/thumbnails/45.jpg)
Kompilace programu
Nejprve je třeba nainstalovat kompilátor gcc.http://tdm-gcc.tdragon.net/download - dawnload kompilátoru gcc
Vytvořený zdrojový kód (soubor) musíme před spuštěním zkompilovat!
Kompilace: – otevřeme příkazový řádek ve složce, kde máme zdrojový soubor– spustíme příkaz: gcc jménosouboru.c– vygenerovaný soubor se vždy jmenuje a.exe (windows) nebo a.out (linux)
Příkaz lze také spustit s parametry, např.: gcc -Wall -pedantic jménosouboru.c
45/62
![Page 46: Úvod do jazyka C – 2. část Operátory a bitové funkce ...](https://reader031.fdocument.pub/reader031/viewer/2022012517/6191a5bab5f21d1f8b7db7c9/html5/thumbnails/46.jpg)
Kompilace programu
Nejprve je třeba nainstalovat kompilátor gcc.http://tdm-gcc.tdragon.net/download - dawnload kompilátoru gcc
Vytvořený zdrojový kód (soubor) musíme před spuštěním zkompilovat!
Kompilace: – otevřeme příkazový řádek ve složce, kde máme zdrojový soubor– spustíme příkaz: gcc jménosouboru.c– vygenerovaný soubor se vždy jmenuje a.exe (windows) nebo a.out (linux)
Příkaz lze také spustit s parametry, např.: gcc -Wall -pedantic jménosouboru.c
Tento způsob kompilace vypíše, kromě chyb, také varování (neinicializovaná proměnná,podmínka, která je vždy true, přiřazení proměnné jiného datového typu do proměnné s jinýmdatovým typem….).
46/62
![Page 47: Úvod do jazyka C – 2. část Operátory a bitové funkce ...](https://reader031.fdocument.pub/reader031/viewer/2022012517/6191a5bab5f21d1f8b7db7c9/html5/thumbnails/47.jpg)
Spuštění programu
Soubor s programem se spouští v příkazovém řádku otevřeného v příslušné složce příkazem:
jménosouboru.exe (windows) ./jmenosouboru.out (linux)
47/62
![Page 48: Úvod do jazyka C – 2. část Operátory a bitové funkce ...](https://reader031.fdocument.pub/reader031/viewer/2022012517/6191a5bab5f21d1f8b7db7c9/html5/thumbnails/48.jpg)
Otevření příkazového řádku:
– Windows 10 – Start – cmd– Linux – Start – Administration - Terminal
Práce s příkazovým řádkem:
Windows: cd jméno_složky - vnoření do složkycd .. - výstup do nadřazené složkydir - výpis obsahu složky
Linux: cd jméno_složky - vnoření do složkycd .. - výstup do nadřazené složkyls - výpis obsahu složky
Poznámka: Pokud je jméno složky nebo souboru složeno z více slov oddělených mezerou, pak se název souboru nebo složky zapisuje v uvozovkách!
Např.: cd “Nová složka“
48/62
![Page 49: Úvod do jazyka C – 2. část Operátory a bitové funkce ...](https://reader031.fdocument.pub/reader031/viewer/2022012517/6191a5bab5f21d1f8b7db7c9/html5/thumbnails/49.jpg)
Schéma počítače
49/62
![Page 50: Úvod do jazyka C – 2. část Operátory a bitové funkce ...](https://reader031.fdocument.pub/reader031/viewer/2022012517/6191a5bab5f21d1f8b7db7c9/html5/thumbnails/50.jpg)
Schéma počítače
Sběrnice (BUS) přenáší data mezi elementy počítače
50/62
![Page 51: Úvod do jazyka C – 2. část Operátory a bitové funkce ...](https://reader031.fdocument.pub/reader031/viewer/2022012517/6191a5bab5f21d1f8b7db7c9/html5/thumbnails/51.jpg)
Schéma počítače
Sběrnice (BUS) přenáší data mezi elementy počítače
HDD pevný disk: uložení informací (aplikace, data) – přístupová rychlost asi 8 ms
51/62
![Page 52: Úvod do jazyka C – 2. část Operátory a bitové funkce ...](https://reader031.fdocument.pub/reader031/viewer/2022012517/6191a5bab5f21d1f8b7db7c9/html5/thumbnails/52.jpg)
Schéma počítače
Sběrnice (BUS) přenáší data mezi elementy počítače
HDD pevný disk: uložení informací (aplikace, data) – přístupová rychlost asi 8 ms
RAM operační paměť: uložení informací (aplikace, data) - přístupová rychlost asi 100 ns
52/62
![Page 53: Úvod do jazyka C – 2. část Operátory a bitové funkce ...](https://reader031.fdocument.pub/reader031/viewer/2022012517/6191a5bab5f21d1f8b7db7c9/html5/thumbnails/53.jpg)
Schéma počítače
Sběrnice (BUS) přenáší data mezi elementy počítače
HDD pevný disk: uložení informací (aplikace, data) – přístupová rychlost asi 8 ms
RAM operační paměť: uložení informací (aplikace, data) - přístupová rychlost asi 100 ns
Vstup / Výstup rozhraní - klávesnice, myš, tiskárna
53/62
![Page 54: Úvod do jazyka C – 2. část Operátory a bitové funkce ...](https://reader031.fdocument.pub/reader031/viewer/2022012517/6191a5bab5f21d1f8b7db7c9/html5/thumbnails/54.jpg)
Procesor vykonává instrukce
54/62
![Page 55: Úvod do jazyka C – 2. část Operátory a bitové funkce ...](https://reader031.fdocument.pub/reader031/viewer/2022012517/6191a5bab5f21d1f8b7db7c9/html5/thumbnails/55.jpg)
Procesor vykonává instrukce
ALU aritmeticko logická jednotka – provádí matematické (+ a -, všechny další matematické operace se provádí pomocí + nebo - a bitových operací) a logické (AND, OR, XOR, NOT, bitový posun) operace
55/62
![Page 56: Úvod do jazyka C – 2. část Operátory a bitové funkce ...](https://reader031.fdocument.pub/reader031/viewer/2022012517/6191a5bab5f21d1f8b7db7c9/html5/thumbnails/56.jpg)
Procesor vykonává instrukce
ALU aritmeticko logická jednotka – provádí matematické (+ a -, všechny další matematické operace se provádí pomocí + nebo - a bitových operací) a logické (AND, OR, XOR, NOT, bitový posun) operace
Cache skrytá paměť: uložení informací (aplikace a odděleně data - dvě cache) - přístupová rychlost asi 10 ns
56/62
![Page 57: Úvod do jazyka C – 2. část Operátory a bitové funkce ...](https://reader031.fdocument.pub/reader031/viewer/2022012517/6191a5bab5f21d1f8b7db7c9/html5/thumbnails/57.jpg)
Procesor vykonává instrukce
ALU aritmeticko logická jednotka – provádí matematické (+ a -, všechny další matematické operace se provádí pomocí + nebo - a bitových operací) a logické (AND, OR, XOR, NOT, bitový posun) operace
Cache skrytá paměť: uložení informací (aplikace a odděleně data - dvě cache) - přístupová rychlost asi 10 ns
Registry uložení dat - přístupová rychlost asi 1 ns
57/62
![Page 58: Úvod do jazyka C – 2. část Operátory a bitové funkce ...](https://reader031.fdocument.pub/reader031/viewer/2022012517/6191a5bab5f21d1f8b7db7c9/html5/thumbnails/58.jpg)
Procesor vykonává instrukce
ALU aritmeticko logická jednotka – provádí matematické (+ a -, všechny další matematické operace se provádí pomocí + nebo - a bitových operací) a logické (AND, OR, XOR, NOT, bitový posun) operace
Cache skrytá paměť: uložení informací (aplikace a odděleně data - dvě cache) - přístupová rychlost asi 10 ns
Registry uložení dat - přístupová rychlost asi 1 ns
Řadič (Driver) dekóduje binární instrukce a na základě instrukce vydá pokyny (řídí) pro procesor
58/62
![Page 59: Úvod do jazyka C – 2. část Operátory a bitové funkce ...](https://reader031.fdocument.pub/reader031/viewer/2022012517/6191a5bab5f21d1f8b7db7c9/html5/thumbnails/59.jpg)
Operační paměť
DRAM – dynamic random access memory - dynamická paměť s přístupem na libovolné místo
59/62
![Page 60: Úvod do jazyka C – 2. část Operátory a bitové funkce ...](https://reader031.fdocument.pub/reader031/viewer/2022012517/6191a5bab5f21d1f8b7db7c9/html5/thumbnails/60.jpg)
Paměťová buňka (element RAM)
Uložení 1 do paměti: adresa 1, data 1Uložení 0 do paměti: adresa 1, data 0
Adresa v operačním systému 32 bit je 32 bitů – např. 00A8ff751 znak jsou 4 bity – 8 znaků adresy x 4 bity je 32 bitů, to jsou 4 byty
Adresa v operačním systému 64 bit je 64 bitů – např. 00A8ff75abab00111 znak jsou 4 bity – 16 znaků adresy x 4 bity je 64 bitů, to je 8 bytů
Adresu paměťové buňky určuje procesor, adresa je definovaná ve vyhrazené paměti aplikace (heap+stack+systémové informace), která pracuje s těmito daty.
Např. 4 GB RAM má 2^35 paměťových buněk (4 GB = 2^32 B = 2^35 b)(4 GB = 2^2 . 2^30 B = 2^32 B = 2^32 . 2^3 b = 2^35 b)
60/62
![Page 61: Úvod do jazyka C – 2. část Operátory a bitové funkce ...](https://reader031.fdocument.pub/reader031/viewer/2022012517/6191a5bab5f21d1f8b7db7c9/html5/thumbnails/61.jpg)
Pozor:
32 bitový operační systém může adresovat maximálně 16 GB paměti, protože má 2^32 adres a adresuje se každý čtvrtý byte (základem je integer),
každý čtvrtý proto, že 32 bitová sběrnice může přenášet 32 bitů = 4 byty.64 bitový operační systém může adresovat maximálně 64 EB (exa=2^60 bytů) paměti,
protože má 2^64 adres a adresuje se také každý čtvrtý byte.
61/62
![Page 62: Úvod do jazyka C – 2. část Operátory a bitové funkce ...](https://reader031.fdocument.pub/reader031/viewer/2022012517/6191a5bab5f21d1f8b7db7c9/html5/thumbnails/62.jpg)
Princip Cache paměti (SRAM – statická paměť)
Negovaná data automaticky umí klopný obvod (flip flop) – může použít, když potřebuje negovaná data.
Protože statická paměť nemá kondenzátory (capacitor), je rychlejší - nepotřebuje čas na změnu stavu (state). Nepoužívá se na RAM, protože je mnohem dražší, než statická.
62/62