MFF UK / Ústav teoretické fyziky / Tomáš Ledvinka
Přednášky
. . . . . . . . . . . . . . . . . . . . . . . . . .
Programování pro fyziky (1.r)
  Úvod
  Programy a algoritmy
  Píšeme program
    Krotíme Delphi
    PASCAL - Program
    PASCAL - Příkaz
    PASCAL - Cykly
    PASCAL - Výraz
  Píšeme program II
  Procedury a funkce
  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

Výrazy


V předcházejících příkladech programů jsme používali m.j. přiřazovací příkaz a ten má na pravé straně výraz. Jde o přirozené zobecnění matematické notace do formy textu "vytisknutelného na dálnopise", zůstávají pojmy operand, operace, priorita.

Především, operace "porovnání" (>, <, <=, ...) jsou v Pascalu operátory s nějnižší prioritou. V syntaktickém diagramu to vypadá takhle:

Teď přichází na řadu obvyklé sčítání, odčítání a analogické logické operace

Termy, tedy sčítance mohou být součinem, podílem atp. jednotlivých faktorů.

Zde je třeba upozornit na operaci zbytku celočíselného dělení mod:

program CislaII;

var a,i,j,k:integer;

begin
for
a:=100 to 999 do begin
i := a div 100; {stovky}
j := (a div 10) mod 10; {desitky}
{j := (a mod 100) div 10; }
k := a mod 10; {jednotky}
if a=i*i*i+j*j*j+k*k*k then writeln(a);
end;
end
.
program EuklidII;

var a,b :integer;

begin
a := 11088;
b := 17017;
while a<>b do
if a>b then a:=(a-1) mod b + 1
         else b:=(b-1) mod a + 1;
writeln(a);
end.
program EuklidIII;

var a,b,c :integer;

begin
a := 11088;
b := 17017;
repeat
c := a mod b;
a := b;
b := c; {vyznam: (a,b) := (b,a mod b) }
until b=0;
writeln(a);
end.
No a konečně každý faktor může být identifikátor proměnné či konstanty, číslo atp.

Nejříve si připomeňme, že designátor je prozatím totéž, co identifikátor. První řádek (horní kolej) pak říká, že pravé strany následujících přiřazovacích příkazů jsou správné faktory, tedy i termy, tedy i jednoduché výrazy a konečně tedy i správné výrazy:

s:=a; 
y:=sin(x);
b:=InRange(y,-1,1);


Jak víme ne každý syntakticky správný kus kódu nám překladač schválí, třeba

var a:integer;
begin
a:=a(1);
end.
není správný program. Identifikátor před závorkou totiž musí být identifikátor funkce. To že deklarujeme proměnnou či konstantu vlastně znamená, že uvedenému identifikátoru přiřadíme význam. Některé identifikátory jsou však definovány "samy od sebe". Mezi ně patrí i tzv. standardní funkce. Zde je seznam některých z nich:

Následující funkce vrací reálnou hodnotu
ArcTan     arkustangens
Cos        kosinus
Sin        sinus
Exp        exponenciála
Ln         přirozený logaritmus
Sqrt        druhá odmocnina
Int         celá část čísla
Round nejbližší celé číslo

Protože druhá mocnina celého čísla je vždy celé číslo, je typ výsledku volání funkce sqr dán typem parametru. Podobně je tomu i s absolutní hodnotou čísla.
Sqr        druhá mocina
Abs        absolutní hodnota

.