Pascal og Algoritmer med Delphi



Relaterede dokumenter

Forord. Læsevejledning

3. Hold ALT nede, og tryk på F1 (så snart du har gjort det, behøver du ikke længere holde ALT nede).

Hændelse 1: En sygeplejerske i nattevagt kontakter forvagten telefonisk med henblik på ordination af smertestillende til en 68-årig indlagt kvinde.

Bilag 6- Høringssvar fra fordebatten om ny planlægning i Laanshøj

RockDelta GG200 Støjabsorberende stenuldsplader til udendørs skydebaner

Python 3 Matematik Programmerings kursus:

Skriftlig eksamen i Datalogi

Start med at vælge hvilken afdeling der skal laves ændringer i f.eks. fodbold.

Procedurer og funktioner - iteration og rekursion

DM02 opgaver ugeseddel 2

Forslag til løsning af Opgaver til ligningsløsning (side172)

19 Hashtabeller. Noter. PS1 -- Hashtabeller. Hashing problemet. Hashfunktioner. Kollision. Søgning og indsættelse.

Funktionalligninger - løsningsstrategier og opgaver

BRUGSANVISNING.

5. systemet skal indeholde 2 stk 1 Mbit(8 bit ROM implementeret som flash memory.

Andreas Lauge V. Hansen klasse 3.3t Roskilde HTX

إêîëîوè إïèنهىèîëî èéà: رےùèééےنے زے لèمè âے زےنمèمà جه îنëà û. (نے âے àè è)

Sproget Rascal (v. 2)

Programmering i C. Lektion december 2008

DATALOGI 1E. Skriftlig eksamen torsdag den 3. juni 2004

Opgave 1: Log ind og skift password m.m.

Velkommen til 2. omgang af IT for let øvede

Ligninger med reelle løsninger

Forelæsning Uge 4 Mandag

INTRODUKTION. Konformitetserklæring

Abstrakte datatyper C#-version

Behold emballagen i tilfælde af, du får brug for at transportere telefonen senere. Behold kassebonen, da den også er dit garantibevis.

Spil Master Mind. Indledning.

KIRK 4020 og KIRK Brugervejledning

Eksempel: Skat i år 2000

Værktøjet ARTOGIS AGS/Redline tilbyder brugeren mulighed for at indsætte egne grafik- og tekstobjekter

JavaScript. nedarvning.

إثءةدؤةء ظرةسشإس جإ ثءسذدسصثثإتشا ءذد HDPE

Exceptions i Delphi. Try except

طîسق êëâ àëشâ applefi ëâ 1204 د ëâ 1453

Delphi - CrackMe og Keygen

DM01 DM Obl. Afl. Jacob Christiansen, , D12, Elias 18/ Side 1 af 11

Programmering C. Casper Hermansen Klasse 2.7 Programmering C. Navn: Casper Hermansen. Klasse: 2.7. Fag: Programmering C

Vejledning for anvendelse af PensionsIndberetningssystem PI

Vejledning til Photofiltre nr.166 Side 1 Lave små grafik knapper i Photofiltre

Arduino kursus lektion 4:

Sproget Six. Til brug i rapportopgaven på kurset Oversættere. Vinter Abstract

MS Visual Studio Basic En kort vejledning

Dokumentation af programmering i Python 2.75

En kopi fra Boligforeningen. AAB afdeling 50 1 af 6

uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, Ksys, aritm, StdCtrls, Buttons, ComCtrls;

Brugervejledning. Version 1.0, Dansk

Forslag til løsning af Opgaver til analytisk geometri (side 338)

6. Eventstyret programmering og Windows

Polynomier et introforløb til TII

Kapitel 4 Løkker i C#

Fakturering kan foretages som en massefakturering eller for en enkelt ordre.

Indhold. Indledning. Opsætning af rykkerprocedure

SDB. MySQL Installation Guide

Finde invers funktion til en 2-gradsfunktion - ved parallelforskydning. John V Petersen

Vejledning til dagpengekortet på Selvbetjeningen

Grafteori, Kirsten Rosenkilde, september Grafteori

Python programmering. Per Tøfting. MacFest

Indholdsfortegnelse. Indholdsfortegnelse.. side 2. Adgang til webgraf 3. Opslag adresse Styring af layout.. 5. Zoom funktioner..

Indholdsfortegnelse: Hvad hedder det forskellige på sitet? Forsiden Servicemenu. Manual Skive Kommune Umbraco subsite

WebGIS. Zoom. Klik på knappen Startside (skift øst/vest) hvis du vil se kommuner i den anden landsdel. September 2014

Java Programmering. En bog for begyndere. Skrevet af Henrik Kressner

Workshop W2 Tasks og Templates

BRUGERVEJLEDNING. Version B DAN

AAU, Programmering i Java Intern skriftlig prøve 18. maj 2007

Kom godt i gang med DLBR NorFor Foderplan - Kødkvæg

Variabel- sammenhænge

Danmarks Tekniske Universitet

0-(456%"$&'(#($ :/;)*1<&7=.===->+'+-#

Rediger eller opret institutionsmedarbejder på en ungdomsuddannelse

TALTEORI Wilsons sætning og Euler-Fermats sætning.

Civilingeniøreksamen januar Skriftelig prøve den 12. januar 2001 Kursusnummer 49104

Eksamensopgaver datalogi, dlc 2011 side 1/5. 1. Lodtrækningssystem

Hvis du har den i mappen i forvejen skal du ikke hente den en gang til. Nu skal baggrundsbilledet laves, så tryk på NY på ikonen foroven.

Ordbogsværktøjet mikrov.dk

JAR Øvelse nr. 2. JAR-Manual, Version 1.0. Avanceret søgning. Regionsvejledning

TALTEORI Primfaktoropløsning og divisorer.

MANUAL TIL RESULTATINDBERETNING OG OPDATERING AF KLUBSPECIFIKKE DATA I DANSK TENNIS FORBUND OG UNIONERNES HOLDTURNERINGSPROGRAM (HTP)

Det sprogpædagogiske kørekort 2012/2013. Modul 2: Blog for begyndere

Ældresagen datastue Aktivitetsteltscentret Bavnehøj Nørre Snede Tema: Internettet på ipad. Tema. Internettet. på ipad Opdateret 29.

Hypotese test. Repetition fra sidst Hypoteser Test af middelværdi Test af andel Test af varians Type 1 og type 2 fejl Signifikansniveau

Vejledning til udfyldelse af ansøgningsskema vedrørende efteruddannelse

i x-aksens retning, så fås ). Forskriften for g fås altså ved i forskriften for f at udskifte alle forekomster af x med x x 0

Spørgeskema på HVAL.DK

Opfølgning på Dygtig Skildpadde (Michael) To algoritmeskabeloner

Sådan benytter du HOTLINEs ServiceDesk (SD)

Interaktionsudvikling

DM507 Algoritmer og datastrukturer

Klasser og Objekter i Python. Uge 46 Learning Python: kap 15-16,

DM507 Algoritmer og datastrukturer

Afstand fra et punkt til en linje

TI-30X B og TI-30X S. Foregående indtastninger # $ Sidste svar %i. Generelle oplysninger. Operationernes rækkefølge.

DANMARKS TEKNISKE UNIVERSITET

Module 2: Beskrivende Statistik

Vejledning PROPHIX 11. Brug af cellekommentarer i Prophix. Systemansvarlige Michael Siglev Økonomiafdelingen msi@adm.aau.

Oprettelse af Aktivitet

W8 Project Explorer. Introduktion til Project Explorer Oprettelse af link sets Forskellige typer af links Kobling til andre dele af MicroStation

TALTEORI Wilsons sætning og Euler-Fermats sætning.

Transkript:

Pascal og Algoritmer med Delphi Oktober 2002, NF

Indholdsfortegnelse Indholdsfortegnelse...2 Vigtige komponenter i Delphi...3 Form:...3 Edit:...3 Button:...3 Label:...3 Properties/Egenskaber...3 Memo:...3 RichEdit:...4 Image:...4 Canvas:...4 Simple datatyper i Delphi...5 Integer...5 Real...5 String...6 Char...6 Boolean...6 Strukturerede datatyper...7 String:...7 Array:...8 Record (post):...8 Sekvenser...9 Assignment statement/tildelingssætning:...9 Compound Statement/Sammensat sætning:...9 Forgreninger...10 IF sætning:...10 IF, THEN, ELSE sætning:...10 CASE sætning:...10 Løkker...11 While løkken:...11 Repeat-Until løkken:...11 FOR løkken:...11 Moduler...12 Procedurer:...12 Funktioner:...13 Rekursion:...13

Datalogi, Pascal, Vigtige komponenter i Delphi 10-10-02, NF Side 3 af 14 Vigtige komponenter i Delphi I det følgende skal vi se lidt på fem forskellige komponenter/objekter i Delphi, nemlig: Form (programmets vindue), Edit (edit-boks til input og output af en tekstlinie), Button (en knap til udførsel af en handling), Label (et fast) og Memo (input og output af flere linier af tekst). Hvert af de følgende afsnit omtaler en komponent, med egenskaber, metoder og handlinger: Form: Oprettes når Delphi startes og er programmets vindue. I denne komponent placeres programmets øvrige komponenter. Properties/Egenskaber: Name: Angiver formens individuelle navn. Standard: Form1, Form2 osv. Caption: Angiver den tekst der skal vises i vinduets titelbjælke øverst. Edit: Findes under fanen Standard. En edit-box er et felt som kan anvendes af programmet til at vise en tekststreng (output), eller til at læse en tekststreng (input) fra brugeren. Properties/Egenskaber: Name: Angiver edit-boxens individuelle navn. Standard: Edit1, Edit2 osv. Text: Angiver den tekst, der skal vises i edit-boxen. Denne variabel kan af programmet tildeles en tekststreng, men det er også i denne variabel, at en tekststreng skrevet af brugeren lagres. Button: Findes under fanen Standard. Button er en knap, som udfører en af programmøren defineret programkode, når brugeren klikker på den med musen. Properties/Egenskaber: Name: Angiver knappens individuelle navn (dette gælder generelt for alle Delphi komponenter). Standard er Button1, Button2 osv. Caption: Angiver den tekst, som brugeren kan læse på knappen, når programmet kører. Events/Handlinger: OnClick: Er den handling/hændelse (event), som vil finde sted, hvis brugeren klikker på knappen med musen. Label: Findes under fanen Standard. En label er en tekststreng, som valgfrit kan placeres på en form. Properties/Egenskaber Name: Standard er Label1, Label2, Caption: Angiver den tekst, som den pågældende label skal indeholde Memo: Findes under fanen Standard. En memo er et felt på formen, der fungerer på samme måde, som en tekst editor. Properties/Egenskaber:

Datalogi, Pascal, Vigtige komponenter i Delphi 10-10-02, NF Side 4 af 14 Name: Angiver memoens navn. Dette navn kommer også til at stå øverst i memoens felt på formen. Standard er Memo1, Memo2 osv. ScrollBars: Angiver hvilke retninger denne memo skal kunne 'scrolle' (rulles) i. Vælg mellem: ssnone, sshorizontal, ssvertical og ssboth. Meningen er indlysende. Methods/Metoder: Lines.Clear: Sletter indholdet af Memo. Lines.Add( abc ): tilføjer en linie til memoen: abc. RichEdit: Findes under fanen Win32. Komponent som udvider funktionaliteten af Memo. Den har blandt andet en metode til udskrivning indbygget. Methods/Metoder: Print: Udskriver indholdet af RichEdit. Image: Findes under fanen Additional. Komponent som kan anvendes til visning og fremstilling af grafik. Properties/Egenskaber: Name: Som ovenfor. Standard er Image1, Image2 osv. Canvas/Lærred: En abstrakt egenskab, som indeholder egenskaber og metoder til fremstilling af grafik i billedfeltet (se nedenfor). Canvas: Egenskab (objekt) for Image. Denne egenskab indeholder grafiske egenskaber og funktioner. Properties/Egenskaber: Pixels[x, y]: Denne egenskab benyttes til at læse eller skrive til enkelte pixels i et billede. Methods/Metoder: MoveTo(x, y): Flytter pennen til positionen x, y i billedet. LineTo(x, y): Trækker en ret linie fra pennens position til positionen x, y i billedet og opdaterer pennens position. FillRect(ClientRect): Sletter indholdet af Image. Hvis man i programkoden f.eks. har brug for at få adgang til en edit-box Text egenskab, skriver man navnet på edit boxen derefter et punktum (. ) og afslutter med Text, Eksempel: Edit1.Text := I edit boxen står dette nu. ; Hvis man vil beskrive en handling/hændelse for f.eks. en knap, dobbeltklikker man på den pågældende knap, og man kan derefter beskrive handlingen/hændelsen med programkode.

Datalogi, Pascal, Simple datatyper 10-10-02, NF Side 5 af 14 Simple datatyper i Delphi En datatype er en definition på hvilken type data, der kan gemmes i en bestemt variabel. De 5 datatyper der er mest grundlæggende er: Integer, Real, String, Char og Boolean. Her følger en beskrivelse af datatyperne og en beskrivelse af konverteringfunktioner i Delphi til at konvertere en datatype til en anden. Alle variable i Delphi defineres enten som globale eller lokale variable under en Var sektion. Globale variable defineres før brug, normalt før alle procedurerne lige før eller efter sektionen Implementation. Lokale variable defineres før det første Begin i den procedure de skal bruges i. Forskellen på lokale og globale variable er den, at lokale variable kun kan bruges i den procedure de er defineret i, mens globale variable kan bruges overalt i den Unit, de er defineret i. Integer En variabel af typen Integer er et heltal dvs. en Integer variabel kan antage værdierne...,-3,-2,- 1,0,1,2,3,... Talområdet går fra ca. 2E9 til +2E9. De to konverteringsfunktioner der er blevet gennemgået er IntToStr og StrToInt. Syntaksen for disse to funktioner er: IntToStr(heltal); { har typen String } StrToInt(streng); { har typen Integer } IntToStr omformer en integer variabel fra et heltal til en tekststreng dvs. hvis variablen er heltallet 954 bliver tekststrengen teksten 954. StrToInt er den modsatte funktion dvs. den laver f.eks. tekststrengen 954 om til heltallet 954. Real En variabel af typen real er et reelt tal dvs. en Real variabel kan antage alle værdier fra 1E38 til 1E38. Hvis man benytter typen Extended foregår beregningerne hurtigere, mere nøjagtigt og med et større talområde: 1E4932 til 1E4932. Det nemmeste vil være at indføje en type erklæring: TYPE Real = Extended De to konverteringsfunktioner der er blevet gennemgået er FloatToStr og StrToFloat. Grunden til at det hedder Float og ikke Real er at man også kalder reelle tal for flydende tal, samt at de også virker på andre typer som f.eks Extended. Syntaksen for disse to funktioner er: FloatToStr(reelt tal); { har typen String } StrToFloat(streng); { har typen Real } FloatToStr omformer en Real variabel fra et reelt tal til en tekststreng, dvs. hvis variablen er det reelle tal 9,54 bliver tekststrengen teksten 9,54. StrToFloat er den modsatte funktion, dvs. den laver f.eks. tekststrengen 9,54 om til det reelle tal 9,54.

Datalogi, Pascal, Simple datatyper 10-10-02, NF Side 6 af 14 String En variabel af typen String er en rækkefølge af bogstaver, tal eller tegn af enhver form inkl. mellemrum f.eks. "ff^s, w'. - å"6%". De fire konverteringsfunktioner, der er blevet gennemgået, er IntToStr, StrToInt, FloatToStr og StrToFloat. Beskrivelser af disse funktioner kan findes under Integer og Real. Char En variabel af typen Char er et tegn repræsenteret ved en tegnværdi. Der findes forskellige kodninger (ASCII, ANSI mm.). Her er ASCII-værdier for almindelige tegn fra 32 til 255 for skrifttypen Times New Roman: Tegnværdier for Times New Roman skrifttypen: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 32! " # $ % & ' ( ) * +, -. / 48 0 1 2 3 4 5 6 7 8 9 : ; < = >? 64 @ A B C D E F G H I J K L M N O 80 P Q R S T U V W X Y Z [ \ ] ^ _ 96 ` a b c d e F g h i j k L m n o 112 P q r s t u V w x y z { } ~ 128 ƒ... ˆ Š Œ 144 ' ' " " - - (tm) š Œ Ÿ 160 (c) ª «- (r) 176 ± ² ³ µ * ¹ º» 1/4 1/2 3/4 192 À Á Â Ã Ä Å Æ Ç È É Ê Ë Ì Í Î 208 Ï Ð Ñ Ò Ó Ô Õ Ö Ø Ù Ú Û Ü Ý Þ 224 ß à á â ã ä Å Æ ç è é ê Ë ì í î 240 Ï ð Boolean En variabel af typen Boolean er en logisk variabel, der kan antage de to værdier True og False. Den benyttes f.eks. ved forgreninger og i løkker.

Datalogi, Pascal, Strukturerede datatyper 10-10-02, NF Side 7 af 14 Strukturerede datatyper String: Tekst kan lagres i en variabel af typen String. Der kan maksimalt lagres 255 tegn. String typen er en tabel på 256 tegn. De enkelte tegn repræsenteres ved der ASCII værdi (se tabel). Det første tegn har en værdi svarende til antallet af tegn i strengen, herefter følger de enkelte tegn i rækkefølge. De enkelte tegn i strengen kan adresseres ved at angive indeks i tabellen som vist herunder. Indeks starter med 0. VAR s: String; s := 'ABC'; (* s[0] = chr(3), tegn nr. 3 *) s[1] := 'C'; s[3] := 'A'; Nyttige funktioner: Copy(s: String; Index: Integer; Count: Integer): String kopierer en delstreng ud af strengen s, startende ved positionen Index med Count tegn. Pos(subs, s: String): Integer beregner position af delstreng subs i s. Hvis subs ikke findes i s returneres 0. AnsiUpperCase(s: String): String konverterer en streng til store bogstaver.

Datalogi, Pascal, Strukturerede datatyper 10-10-02, NF Side 8 af 14 Array: Hvis flere dataelementer af samme type skal lagres sammen, kan man benytte et Array (en tabel). Denne tabel kan være i flere dimensioner: VAR fem_tabellen: ARRAY [1..10] OF Integer; Den_lille_tabel: ARRAY[1..10; 1..10] OF Integer; Record (post): Hvis flere dataelementer af forskellig type skal lagres sammen, kan man benytte en Record (en post). Normalt angiver man først posten som type, og derefter anvender man den i en variabel. Hvis man vil have en hel database i lageret på en gang, kan man lave en variabel som et ARRAY af poster: TYPE ElevpostType = RECORD navn: String[40]; tlf: String[15]; VAR Elevpost: ElevpostType ElevDB: ARRRAY [1..100] OF ElevpostType;

Datalogi, Pascal, Simple Programstrukturer 10-10-02, NF Side 9 af 14 Sekvenser I Pascal udføres sætninger i den rækkefølge de står. Sætninger er adskilt af semikolon. Eksempler på sætninger: Assignment statement/tildelingssætning: Simpel: i := 2; Beregning af udtryk: r := 2/(3+4); Beregning af funktionsværdi: r := sqrt(i); r := sin(pi/6); r := ln(2); Compound Statement/Sammensat sætning: En sekvens af sætninger kan omformes så de virker som én sætning. Eksempel: <Sætning1>; <Sætning2>; <Sætning3>; Opgave: Beregn 22/7 og 355/113 og disse tals relative afvigelse fra π.

Datalogi, Pascal, Simple Programstrukturer 10-10-02, NF Side 10 af 14 Forgreninger Der findes 3 måder at lave forgreninger på i Pascal: IF sætning: IF <Logisk udtryk> THEN <Sætning>; Hvis det logiske udtryk sandt udføres <Sætning>, ellers udføres intet. IF, THEN, ELSE sætning: IF <Logisk udtryk> THEN <Sætning1> ELSE <Sætning2>; Hvis det logiske udtryk er sandt udføres <Sætning1>, ellers udføres <Sætning2>. CASE sætning: Eksempel: CASE i OF 1: <Sætning1>; 2: <Sætning2>; ELSE <Sætning3>; Hvis variablen i er 1 udføres <Sætning1>, hvis variablen i er 2 udføres <Sætning2>, eller udføres <Sætning3>. Opgave: Lav et program, der udskriver løsningerne til 2. gradsligningen. Brug diskriminanten og to IF-THEN-ELSE sætning til at skelne mellem nul, en eller to løsninger.

Datalogi, Pascal, Simple Programstrukturer 10-10-02, NF Side 11 af 14 Løkker Der findes 3 måder at lave løkker på i Pascal: While løkken: WHILE <Logisk udtryk> DO <Sætning>; Udføres sålænge det logiske udtryk sandt, nul eller flere gange. Repeat-Until løkken: REPEAT <Sætning> UNTIL <Logisk udtryk>; Udføres indtil det logiske udtryk er sandt, en eller flere gange. FOR løkken: FOR i:=<startværdi> TO <Slutværdi> DO <Sætning>; Udfører sætning med heltallige værdier for kontrolvariablen i fra Startværdi til Slutværdi begge inklusive.. Der foretages derfor ialt <Slutværdi> - <Startværdi> + 1 gennemløb. Opgave: Lav et program i Delphi, som lister alle løsninger til retvinklede trekanter med heltallige sidelængder mindre end 100. Den første løsning er 3, 4, 5. Der må ikke forekomme dubletter, og programmet skal kunne skrive løsningerne ud på papir.

Datalogi, Pascal, Strukturerede Programmer 10-10-02, NF Side 12 af 14 Moduler Der findes 2 måder at lave moduler på i Pascal: Procedurer: En procedure er et delprogram, som først skal defineres, og som derefter kan anvendes af hovedprogrammet. Eksempel: PROCEDURE Ombyt(var a, b: Char); VAR c: Char; c := a; a := b; b := c; Procedurens navn er Ombyt. Den ombytter 2 tegn a og b, der angives som parametre i parentes. Den kan f.eks. benyttes i forbindelse med sortering af bogstaver i alfabetisk rækkefølge. Proceduren kaldes fra hovedprogrammet. Eksempel: PROGRAM BobleSorter; VAR TegnOmbyt: Boolean; s: String; PROCEDURE Ombyt... TegnOmbyt := True; WHILE TegnOmbyt DO TegnOmbyt := False; FOR i := 1 TO Length(s)-1 DO IF s[i]>s[i+1] THEN Ombyt(s[i], s[i+1]); TegnOmbyt := True; END. Parametrene til denne procedure er såkaldte var-parametre. Det betyder, at de lokale variable a og b i proceduren virker direkte på de globale variable s[i] og s[i+1], som angives i procedurekaldet. Det er de globale variables adresser, der overføres til proceduren.

Datalogi, Pascal, Strukturerede Programmer 10-10-02, NF Side 13 af 14 Hvis ordet var udelades er parametrene såkaldte værdi-parametre. Disse overfører en værdi til proceduren, men kan ikke aflevere resultater til programmet udenfor proceduren. Eksempel: PROCEDURE CirkelBeregning(r: Real; var o, a: Real); o := 2*pi*r; a := pi*r*r; Her er r en værdiparameter og overfører talværdien for radius for en cirkel til proceduren. De to varparametre o og a bliver brugt til at aflevere værdien af cirklens omkreds og areal til det kaldende program. Funktioner: En funktion er et delprogram som først skal defineres, og som derefter kan anvendes af hovedprogrammet. Funktioner kan afleveres én funktionsværdi. Eksempel: FUNCTION Fak(n: Integer): Integer; VAR i, produkt: Integer; produkt := 1; FOR i := 1 TO n DO produkt := produkt*i; Fak := produkt; Fakultetsfunktionen beregnes her ved at gange alle tal fra 1 til funktionens parameterværdi sammen og aflevere resultatet i variablen Fak. I et program kan denne funktion kaldes. Eksempel: PROGRAM Fakultet; VAR F: Real; FUNCTION Fak... F := Fak(5); END. Rekursion: Procedurer og funktioner kan benyttes på en særlig måde, hvor proceduren/funktionen kalder sig selv. Dette kaldes rekursion. Eksempel på en rekursiv funktion:

Datalogi, Pascal, Strukturerede Programmer 10-10-02, NF Side 14 af 14 FUNCTION Fak(n: Integer): Integer; IF n=0 THEN Fak := 1 ELSE Fak := n*fak(n-1); Denne funktion benytter, at n! = n*(n-1)! Stopklodsen, der afslutter funktionskaldene er betingelsen n=0, hvor funktionen returnerer 1 (0!=1). Hvis man foretager funktionskaldet Fak(3) foregår beregningen således: fak(3) = 3* fak(2) fak(2) = 2* fak(1) fak(1) = 1* fak(0) fak(0) = 1 = 3* 2* 1* 1 = 6 Et andet eksempel er Fibbonnaci talfølgen - næste tal er lig summen af de to forgående (start med to et-taller): FUNCTION Fib(n: Integer): Integer; IF n<=2 THEN Fib := 1 ELSE Fib := Fib(n-2)+Fib(n-1); Denne funktion benytter, at Fib(n) = Fib(n-2) + Fib(n-1). Stopklodsen, der afslutter funktionskaldene er betingelsen n<=2, hvor funktionen returnerer 1 (de to første tal i talfølgen). Hvis man foretager funktionskaldet Fib(4) foregår beregningen således: fib(4) = fib(2) + fib(3) = 1 + fib(1) + fib(2) = 1 + 1 + 1 = 3 Opgave: Lav et program i Delphi, som lister forholdet fib(n)/fib(n+1) for de første 20 værdier for n. For store n tilnærmer disse værdier sig til Det gyldne Snit. Sammenlign værdierne med udtrykket: 5 1 2