MFF UK / Ústav teoretické fyziky / Tomáš Ledvinka
Přednášky
. . . . . . . . . . . . . . . . . . . . . . . . . .
Programování pro fyziky (1.r)
  Úvod
  Programy a algoritmy
  Píšeme program
  Píšeme program II
  Procedury a funkce
    Procedury a funkce
    Příklad funkce
    Makro nebo podprogram?
    Procedury a struktura prog.
    Lokální proměnné
    Hodnotou či odkazem?
    Pravidla a dokumentace
  Malujeme funkce
  Chyby. Typy I.
  Typy II. Pole a Záznamy
  Pole II.Řetězce.Soubory.
  Gnuplot.Interpolace...
  Matice. Velké O...
  Fronta,Zásobník. Postscript
  Bin. soubory, ...
  Ukazatele,Objekty, ...
Počítačová algebra
Klasická elektrodynamika (2.r)
Vybrané partie OTR

Cvičení
. . . . . . . . . . . . . . . . . . . . . . . . . .
Programování pro fyziky (1.r)
Teoretická mechanika (2.r)
Klasická elektrodynamika (2.r)


Věda
. . . . . . . . . . . . . . . . . . . . . . . . . .
Diskové zdroje v OTR
Hyperbolické systémy v OTR


Kontakt
. . . . . . . . . . . . . . . . . . . . . . . . . .
Email
Konzultační hodiny


Ostatní
. . . . . . . . . . . . . . . . . . . . . . . . .
Mallorca
Ze společnosti
Procedury a funkce mají své proměnné

Přesněji bychom měli mluvit o identifikátorech, protože v deklarační části procedury a funkce můžeme deklarovat cokoli, co můžeme deklarovat v bloku programu, proměnné jsou ale tím nejdůležitějším.

Abychom mohli používat podprogramy, je třeba vyjasnit které identifikátory platí uvnitř kterého bloku. Veměme třeba

program KdoKdyKde;

var N,i,s:integer;

  function f(a:integer):integer;
  var i,s:integer; {co kdyz tenhle radek zakomentujeme ?}
  begin
    s:=0;
    for i:=1 to N do s:=s+sqr(a+i);
    f:=s;
  end;

begin
  N:=10;
  s:=0;
  for i:=1 to N do s:=s+f(i);
  writeln(s);
  readln;
end.
Když někde v bloku deklarujeme identifikátor, zůstává v platnosti až do konce tohoto bloku. Může však být zakryt deklarací uvnitř bloku nějaké funkce či procedury. To je případ identifikátorů i a s uvnitř funkce f v příkladu výše.  Naopak,  proměnná N je viditelná i uvnitř  funkce f (není ničím zastíněna), čehož využíváme.  Proměnné deklarované  v bloku programu naýváme globální, ty deklarované v bloku procedury či funkce nazýváme lokální.
Identifikátor je definován počínaje nejbližžším středníkem po jeho deklaraci a konče endem složeného příkazu bloku v němž je deklarován.

Pozor, lokální proměnné nejen že nejsou vidět za endem bloku kde byly deklarovány, ale ani místo v paměti pro ně není přiděleno, když kód procedury zrovna "neběží". Není  tedy možné si v nich schovávat hodnoty mezi dvěma voláními téže funkce.

.