Projekt mit
1 €
unterstützen?
So geht das *:


Step 17 - Algorithmik :

Der Algorithmusbegriff

Was ist ein Algorithmus?

Ein Algorithmus ist grob gesagt ein Schema, nach dem man vorgehen muss um ein bestimmtes Problem zu lösen. Also ein (Koch-)Rezept was zu tun ist, bis man den Kuchen fertig hat. Die Zutaten dabei sind aber immer programmiertechnische Wörter. Also mit der Sprache Delphi wird der Algorithmus genau formalisiert. Im Fortgeschrittenen-Bereich wird auf Rekursive Funktionen eingegangen. Dies sind meistens die einfachsten Algorithmen. Der bekannteste ist hierbei wohl ohne Zweifel Quicksort.

Ein eigentlich einfacher Algorithmus ist z.B. der Euklidsche Algorithmus zur Berechnung des größten gemeinsamen Teilers von zwei Zahlen z1 und z2. Diesen hat der grichische Mathematiker Euklid etwa 300 v. Chr. in seinem Werke "Die Elemente" veröffentlicht.

Hier der Delphi-Quelltext:

function ggT(z1,z2:Integer):Integer;
begin
  while z2<>0 do
  begin
    if z1>z2 then
      z1:=z1-z2
    else
      z2:=z2-z1;
  end;
  result:=z1;
end;

Dieser Algorithmus scheint auf den ersten Blick nicht wirklich trivial zu sein, aber rechnen wir doch mal ein Beispiel durch, um zu sehen, ob er tatsächlich funktioniert:


Gesucht ist der ggT von z1:=54 und z2:=42;

z2=42<>0 stimmt
somit erster Durchlauf:
z1>z2  stimmt
     => z1:=z1-z2=54-42=12
erster Durchlauf endet.

z2=42<>0 stimmt
zweiter Durchlauf:
z1>z2 stimmt nicht
    => z2:=z2-z1=42-12=30
zweiter Durchlauf endet.

z2=30<>0 stimmt
dritter Durchlauf:
z1>z2 stimmt nicht
    => z2:=z2-z1=30-12=18
dritter Durchlauf endet.

z2=18<>0 stimmt
vierter Durchlauf: z1>z2 stimmt nicht
    => z2:=z2-z1=18-12=6
vierter Durchlauf endet.

z2=6<>0 stimmt
fünfter Durchlauf: z1>z2 stimmt
    => z1:=z1-z2=12-6=6
fünfter Durchlauf endet.

z2=6<>0 stimmt
sechster Durchlauf:
z1>z2 stimmt nicht
    => z2:=z2-z1=6-6=0
sechster Durchlauf endet.

s2=0<>0 stimmt nicht, while-Schleife wird abgebrochen
   => z1=6 wird als Resultat zurückgegeben
       => der größte gemeinsame Teiler von 54 und 42 ist 6.



Da das Kommentarmodul dieser Seite zur Zeit neu überarbeitet werden muss, sendet bitte alle Fragen, Anregungen oder Probleme mit Betreff zu welchem Thema es sich handelt an folgende Mailadresse:


Hinweis:

Dieses Kommentar-Modul teilt seinen Inhalt mit dem gleichnamigen Kapitel im Delphi-Anfängerkurs. Daher kann es vorkommen, dass Fragen zu Lazarus im Anfängerkurs im Delphi-Anfängerkurs und umgekehrt stehen. Wenn ihr euch registriert, werdet ihr aber immer an die richtige Stelle weitergeleitet.
Zu dieser gemeinsamen Nutzung der Datenbank habe ich mich entschlossen, weil die Sprachelemente in Lazarus genauso wie in Delphi genutzt werden können.

www.marco-hetzel.de
www.delphi-lernen.de
www.lazarus-lernen.de

© 2006-2019 by Marco Hetzel , last modified 01.11.2018, 11:28

(* Unterstützung dient der Aufrechthaltung laufender Kosten für dieses Projekt.)