1. Procedúry a funkcie
a) Procedúra
Pri písaní programu sa často stáva, že niektoré príkazy, lepšie povedané sústava príkazov sa opakuje. Aby sme sa tomu vyhli, sprehľadnili program a hlavne uľahčili si prácu môžeme takéto príkazy zlúčiť do jedného a dať mu nové meno. Programátor tým vlastne vytvorí nový príkaz. Toto nám poskytujú procedúry (funkcie). Procedúra je vlastne taký malý program v programe. Takže až na malé zmeny má tú istú štruktúru.
Štruktúra:
PROCEDURE meno_procedúry(definícia vstupných premenných);
CONST definovanie_konštánt_procedúry;
TYPE definovanie_nových_typov_premenných;
VAR definovanie_lokálnych_premenných_pre_procedúru;
BEGIN { begin - začiatok procedúry }
príkaz;
..
END; { end - koniec procedúry }
b) Funkcia
Funkcia sa od procedúry líši len tým, že okrem vykonania sady príkazov vráti nejakú hodnotu. Deklaruje sa kľúčovým slovom function
.
Štruktúra:
FUNCTION meno(definícia vstupných premenných):typ_výstupu;
CONST definovanie_konštánt_funckie;
TYPE definovanie_nových_typov_premenných;
VAR definovanie_lokálnych_premenných_pre_funkciu;
BEGIN { begin - začiatok funkcie }
príkaz;
..
meno:=výsledok;
END; { end - koniec funkcie }
Príklad:
program kratenie_zlomkov;
uses crt;
var c,m,D,a,b:integer;
v1,v2:real;
procedure nsd;
begin
while a<>b do
if a>b then a:=a-b
else b:=b-a;
end;
begin
clrscr;
writeln('Zadaj zlomok,ktory treba upravit.');
write('Zadaj citatela: '); readln(c);
write('Zadaj menovatela: '); readln(m);
a:=c; b:=m;
nsd;
v1:=c/(A);
v2:=m/(A);
write(c:40); writeln(v1:5:0);
write('__':40); writeln(' = __');
writeln;
write(m:40); writeln(v2:5:0);
readkey;
end.
2. Aritmetika a logika v PC
I. Aritmetika v PC
a) súčet
0+0=0 1+10=11 110+1=111
0+1=1 11+1=100 111+1=1000
1+0=1 100+1=101
1+1=10 101+1=110
b) rozdiel
Pc mení túto operáciu tak, že používa inverzný kód (doplnkový).
Postup: Prvé číslo zoberie v pôvodnom tvare a druhé číslo dá do inverzného kódu (vymení „0“ za „1“ a naopak), potom sčíta a jednotku z najvyššieho rádu pripočíta k výsledku.
Pr.: 9-6=3 1001 =9
- 0110 =6
____
1001
+ 1001 = inverzný kód
____
10010
+1
_____
0011 = 3
Pozn.: Ak PC odčítava dve rovnaké čísla vo výsledku sú samé nuly, len na začiatku je jednotka. Tomu sa hovorí, že výsledok je nulový -> kontrola paritným bitom.
c) súčin
0*0=0 0*1=0 1*0=0 1*1=1
d)podiel
20:5=4
10100:101=100
-101
___
101
+ 010
___
111
+1
___
100
II. Logika v PC
a) Logický súčet - OR(alebo) – alternatíva
- funkcia – Y = A+B A v B
- značka IO A
1
B Y= A + B
- pravdivostná tabuľka (správanie sa logického obvodu)
0+0=0 1+0=1
0+1=1 1+1=1
b) Logický súčin – AND (A) – konjunkcia
- funkcia – Y = A*B A ٨ B
- značka IO A
&
B Y= A * B
- pravdivostná tabuľka (správanie sa logického obvodu)
0*0=0 1*0=0
0*1=0 1*1=1
c) Negovaný logický súčet – NOR
___
- funkcia – Y = A+B (A + B)’
- značka IO A
1
____
B Y= A + B
- pravdivostná tabuľka (správanie sa logického obvodu)
0+0=1 1+0=0
0+1=0 1+1=0
d) Negovaný logický súčin
___
- funkcia – Y = A*B (A* B)’
- značka IO A
&
____
B Y= A * B
- pravdivostná tabuľka (správanie sa logického obvodu)
0*0=1 1*0=1
0*1=1 1*1=0
e) Jednoduchá logická negácia – NOT (nie)
_
- funkcia – Y = A (A)’
1
- značka IO A
Y= A‘
- pravdivostná tabuľka (správanie sa logického obvodu)
0=1 1=0
Teoretické základy položil anglický matematik BOOLE -> Booleova algebra
V PC sa to realizuje „0“ = LOW = 0V log. 0
„1“ = HIGH = 5V; 3,3V; 2,7V log. 1
Základné pravidlá:
1. De Morganove pravidlá
____ _ _ ____ _ _
A+B = A * B A*B = A + B
2. Zákon dvojitej negácie
A = A
Takýmto spôsobom sa realizujú jednoduché a zložité logické systémy (pamäte, mikroprocesory...).
Týchto 5 logických operácií + operácie, ktoré umožňujú priebeh presunu medzi registrami dokážu vytvoriť ľubovoľný logický systém.
IO -> integrované obvody, ktoré vnútri obsahujú veľké množstvo tranzistorov (INTEL = 695 mil. tranzistorov v jednom jadre. Teraz už aj 4-jadrové CPU).