120 likes | 246 Views
Premenné. Random Access Memory (RAM) pamäť s priamym prístupom – operačná pamäť.
E N D
Random Access Memory (RAM)pamäť s priamym prístupom – operačná pamäť Je ústredným pamäťovým priestorom počítača a počas riešenia konkrétnej úlohy musí byť v nej uložený program a údaje, s ktorými program pracuje. Nie je to však pamäť na dlhodobé ukladanie údajov, pretože vypnutím počítača sa celý obsah pamäte RAM stratí. Technicky je pamäť riešená ako polovodičový integrovaný obvod – dnes s extrémne vysokou hustotou integrácie. Elementárnym prvkom pamäti je taká mikroštruktúra, ktorá je schopná zotrvať vo dvoch diskrétnych stavoch – a teda uchovať jednu binárnu hodnotu {0, 1} – jeden bit. Zaužívalo sa aj tento pamäťový element nazývať bitom.
Zobrazenie údajov v pamäti RAM 0000 b7 b6 b5 b4 b3 b2 b1 b0 0001 Jeden bit je veľmi malý pamäťový priestor – ako základný adresovateľný prvok sa používa 8-bitová usporiadaná skupina: ktorú nazývame slabika (byte [bajt] ). Slabiky sú usporiadané lineárne za sebou a každá má svojou jedinečnú adresu. Adresy zvyčajne vyjadrujeme v 16-kovej sústave, v nakreslenom príklade je veľkosť pamäti : FFFFH + 1H = 65536 8-bitových slabík. Dnes sú už bežným štandardom počítače s operačnou (RAM) pamäťou 4 GB a viac. (4 GB + 1 = 4 294 967 296) 0002 0003 0004 0005 b7 b6 b5 b4 b3 b2 b1 b0 0006 0007 0008 0009 000A 000B 000C 000D 000E 000F 0010 0011 0012 0013 • • • • • • FFFA FFFB FFFC FFFD FFFE FFFF
Čo sa zmestí do jednej slabiky? Odpoveď je na prvý pohľad veľmi jednoduchá - nič iné, ako 256 (=28) kombinácií núl (0) a jednotiek (1) 00000000 To, že vieme do pamäti zapísať ako celé čísla, tak aj čísla 00000001 s pohyblivou rádovou čiarkou, kladné aj záporné čísla, 00000010 texty a inštrukcie programu je vecou 00000011 00000100 interpretácie obsahu slabiky. 00000101 00000110 "Najprirodzenejšia" interpretácia považuje slabiku priamo 00000111 za celé číslo (integer) zapísané v dvojkovej sústave a rozsah 00001000 hodnôt týchto čísel v desiatkovej sústave je 0 … 255. 11111100 Je to veľmi malý rozsah a jazyk C++ spravidla nepoužíva 11111101 jednu slabiku na ukladanie celočíselných hodnôt. 11111110 11111111
Typy premenných a počet obsadených slabík Jazyk C++ pozná štyri základné typy premenných (boolean,character,integer a floating). Kompilátor im pri deklarácii priradí pevný počet slabík v operačnej pamäti. znakové premenné (char) [1], (wchar_t) [2] logické premenné (bool) [1] kompilátor premenné s pohyblivou rádovou bodkou (float) [4], (double) [8] celočíselné premenné (integer) short [2], int [4], long [4], longlong [8]
Kde v pamäti sú naše údaje? Každý program pre PC pracuje s údajmi (data), ktoré musia byť v priebehu výpočtu v operačnej pamäti. Programátor rozhodne, v akom formáte ich uloží do počítača, aby sa v priebehu výpočtu napríklad nestrácala presnosť výsledkov.Údaje sa ukladajú do premenných. Každá premenná má svoje meno a typ. Jazyk C++ je benevolentný pri voľbe mien (identifikátorov) premenných, zakázané sú iba tzv. kľúčové slová, nesmú sa používať žiadne zvláštne znaky (s výnimkou podčiarkovníka) – teda ani napr. medzera. Identifikátor musí začínať písmenom. Treba rešpektovať skutočnosť, že C++ je citlivé na veľké/malé písmená. Je výhodné ako identifikátory voliť zmysluplné názvy, ktoré napovedajú o obsahu tej-ktorej premennej.
Deklarácie premenných y y0 r M Úloha: (r, ) sú polárne súradnice bodu M v rovine. Určte jeho pravouhlé súradnice (x0, y0)! Programátor: • nalistuje v učebnici transformačné vzťahy: x0 = r . cos ; y0 = r. sin • vidí, že bude musieť pridať knižnicu: #include<cmath> • konštatuje, že bude potrebovať uložiť do pamäti štyri hodnoty (r, , x0, y0), zvolí názvy premenných (r, fi, x, y) a po úvahe sa rozhodne pre všetky premenné zvoliť typ float[4 slabiky] • kompilátoru oznámi svoje rozhodnutie deklaráciou premenných: float r = 10, fi = /3, x = 0, y = 0; • v deklarácii môže premenným priradiť aj počiatočné hodnoty • deklarácia premennej musí predchádzať jej prvému použitiu! x0 x
Deklarácie premenných Kompilátor: • požiadavku vytvoriť premennú typu float s menom "r" realizuje tak, že do tzv. alokačnej tabuľky zapíše meno premennej, jej typ a vyhľadá v časti pamäti, do ktorej ukladá údaje, súvislú 4-slabičnú oblasť, ktorú rezervuje a počiatočnú adresu tejto oblasti tiež uloží do alokačnej tabuľky.
Deklarácie premenných • od tohto okamžiku, každá odvolávka na premennú "r" znamená, že kompilátor v alokačnej tabuľke vyhľadá meno "r", zistí, že premenná s týmto menom je typu float, od zaznamenanej počiatočnej adresy (1000H) vyberie štyri slabiky a vráti ich volajúcemu miestu v programe ako hodnotu premennej "r" • podobne pre premenné fi, x, y pozná správnu adresu, od ktorej štyri nasledujúce slabiky obsahujú ich hodnotu • napíše výkonnú časť programu (čo sa iba budeme učiť)
Deklarácie premenných • #include <iostream> • #include <cmath> • #define PI 3.14159 • usingnamespacestd; • intmain() • { • float r = 10, fi = PI/3., x, y; • x = r * sin(fi); • y = r * cos(fi); • cout << "Polarnesuradnice" << endl; • cout << "r = " << r << "\tfi = " << fi << endl << endl; • cout << "Pravouhlesuradnice" << endl; • cout << "x = " << x << "\ty = " << y << endl; • return 0; • }
Zhrnutie – deklarácie premenných • Údaje, s ktorými bude program riešiť zadanú úlohu sa ukladajú do súvislej oblasti operačnej pamäti; • Technicky je premenná práve táto alokovaná oblasť v pamäti (napr. 4 slabiky), v ktorých je uložená okamžitá hodnota konkrétnej premennej; • pevný počet slabík, ktoré kompilátor priradí jednotlivým premenným, závisí od typu premennej (char, bool, short, int, long, longlong, float , double); • Každá premenná použitá v programe musí mať svoju deklaráciu, ktorou oznámime kompilátoru typ a meno premennej; meno sa tak stáva symbolickou adresou príslušnej premennej (jej fyzická adresa je v alokačnej tabuľke); • Deklarácia premennej musí predchádzať jej prvé použitie!
Zhrnutie – deklarácie premenných • Príklady deklarácií: Reálne je premenná vytvorená intpocetStudentov; až vtedy, keď jej prvý krát priradíme short i, j, k; hodnotu (čo nazývame inicializácia) bool ona1_on0; pocetStudentov = 36; char znak, pismeno; i = 7; j = 4; k = 0; float pi; ona1_on0 = 1; písmeno = ´A´; pi = 3.14159; • Deklaráciu a inicializáciu možno spojiť: float pi = 3.14159; Rovnítko (=) je operátorom priradenia – hodnota výrazu na pravej strane sa priradí premennej na ľavej strane.