Matematik i Delphi 2

Tags:    delphi
Skrevet af Bruger #394 @ 18.08.2002
Matematik i Delphi (Part 2)

I denne artikel vil jeg fortælle om lidt mere matematik i Delphi (sjovt nok). Vi vil bla. komme ind på Sinous, Cosinous, Tanges og andre. Jeg vil også vise et par begreber til hvordan man kan opsætte forskellige former og udregninger til forskellige beregninger. Jeg vil uddybe brugen af variabler (da der i forrige artikel var nogen som ikke helt forstod det) og samtidig konvertering af tal og resultater til fx. string. Lad os ligge ud med variabler.

Variabler til brug af beregninger

I Delphi er der mange forskellige former for variabler-typer. Til heltal bruges typisk "Integer" og til decimal-tal bruges typisk "Float" eller "Double". En variabel kan defineres sådan :
ResultInt : Integer;
Result : Float;
PÅ fx. formens OnCreate form kan vi så lagre nogle tal i disse to variabler. Vi sætter bare dem begge til 0.
ResultInt := 0;
Result := 0;
Nu for at sikre at der er lagret værdien 0 i begge variabler, vil vi få en besked til at poppe frem. For at konvertere tal til string (tekst) og omvendt bruger vi nogle indbygget funktioner i Delphi. Det kan gøres sådan :
ShowMessage('Værdien i variablen ResultInt er : ' IntToStr(ResultInt));
På samme måde bruges FloatToStr til at konvertere alle former for decimal-tal. Men lad os så komme igang med det nye indhold!

Nyttige funktioner

Jeg vil lige kort forklare og vise to små til tider nyttige funktioner. Hvordan man danner et tilfældigt tal og hvordan man afrunder tal. Herunder vil jeg vise hvordan vi kan danne et tilfældigt tal mellem 0 og 100 :
Randomize;
Result := Random(100);
Hvis du har et pænt voldeligt komma-tal kan det på ingen tid afrundes til noget mere overskueligt. Herunder viser jeg hvordan vi kan afrunde :
Round(67.8378493827002348032);

Større end, mindre end & lige med

Man kan checke værdier på mange måder. Her vil jeg lige kort vise hvordan man checker om et tal henholdsvis er lige med, større end, mindre end eller ikke lige med! Man bruger de berømte "næb". Herunder vises et eksempel til hvordan man checker hvordan variablen Result's indhold er i forhold til 1024.
if (Result = 1024) then ShowMessage('Tallet er lige med 1024.');
if (Result > 1024) then ShowMessage('Tallet er over 1024.');
if (Result < 1024) then ShowMessage('Tallet er under 1024.');
if Result <> 1024) then ShowMessage('Taller er ikke 1024.');
Man kan også checke om tallet er 1024 eller over, sådan:
if (Result >= 1024) then ShowMessage('Tallet er 1024 eller mere!');
Og selvfølgelig lige med eller under ved hjælp at <= .

Sin, Cos & Tan

Nu kommer vi så over i den lidt mere avanceret del af matematikken selv - Sinous, Cosinous og Tangens. Sinous og Cosinous bruges til at finde punkter (fx på grafer). Det er ganske simpelt at bruge disse begreber i Delphi. Sinous og Cosinous laves på denne måde
Result := Sin(24);
Result := Cos(77);
Tanges udregnes ved at dividere Sin og Cos. Af andre lidt større funktioner kan også nævnes EXP. Den kan udregnes sådan :
Result := Exp(2000);

Renter

Der er mange forskellige måder at udregne renter på. Men den helt rigtie er dog
kn = k(1 + x)n . k er antal penge der skal betales, x er rentesats (i 0, et eller andet. Hvis man regner direkte med 1, et eller andet skal der kun stå x i parentesen) og n er antal år. Formlen laves i Delphi sådan :
Result := K * power(1 + x, n);

Jeg er kun et menneske

I forrige artikel fik jeg lavet et par småfejl (dumme-slag til mig). Jeg skrev at Int64 var et decimal-tal, det passer selvfølgelig ikke, da det er en forkortelse for Integer 64-bit. Jeg lavede også en fejl i udregningen af Pythagoras, den laves rigtigt sådan:
Result := Sqrt(power(a, 2) + power(b, 2));
Jeg beklager mange gange!



Hvad synes du om denne artikel? Giv din mening til kende ved at stemme via pilene til venstre og/eller lægge en kommentar herunder.

Del også gerne artiklen med dine Facebook venner:  

Kommentarer (3)

User
Bruger #1768 @ 20.06.03 19:15
Et ret god hjælpe artikel :-)
User
Bruger #1474 @ 09.11.03 18:34
Jeg synes du gaar alt for let hen over en masse vigtige ting. Du fortaeller foreksempel ikke at Delphi altid regner i radianer, i stedet for grader. Og at du derfor bliver nodt til at koventere mellem disse to for at beregne saa som vinkler. Desuden ville det ogsaa vaere meget oplagt at naevne ArcCos() - det modsatte af cosinus. Lidt assembler ville ogsaa havde vaeret meget interresant at indrage - da det er mega let at lavde udregninger med assembler. Men ak :(
Desuden har Random() og dermed Randomize da intet med matematik at gore!
User
Bruger #4575 @ 23.11.03 20:04
Det kunne også have været rart hvis du beskrev hvad sinous og cosnius egentligt gjorde... Jeg aner ikke hvad jeg kan bruge dem til!!
Du skal være logget ind for at skrive en kommentar.
t