Zum neuen Informatik-Forum >>
 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen   RegistrierenRegistrieren   ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

Algorithmus - Allgemein

 
Dieses Forum ist gesperrt, du kannst keine Beiträge editieren, schreiben oder beantworten.   Dieses Thema ist gesperrt, du kannst keine Beiträge editieren oder beantworten.    Informatikerboard.de Foren-Übersicht -> Theoretische Informatik
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Hansy



Anmeldungsdatum: 27.01.2006
Beiträge: 4

BeitragVerfasst am: 04. März 2006 15:16    Titel: Algorithmus - Allgemein Antworten mit Zitat

Hallo,

ich möchte gerne wissen wie man einen Algorithmus schreibt. Ich habe schon gegoogelt aber nichts gefunden. Vlt könnte einer mit das erklären ...

Danke Euch!

Mfg
Hansy
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Crotaphytus



Anmeldungsdatum: 08.05.2005
Beiträge: 213

BeitragVerfasst am: 04. März 2006 15:31    Titel: Antworten mit Zitat

Ok... Also dieser Post ist in etwa das gleiche, wie wenn du in ein Automobilforum gehen würdest und fragst "Hallo, ich würde gerne wissen, wie man einen Motor baut."


Du musst schon n bisschen genauer werden... Erst mal solltest du dir klar drüber werden, was ein Algorithmus eigentlich ist (oder ist, wie ich vermute, das die erste Frage?). Dann könntest du dich etwas genauer darüber auslassen, was genau der denn können soll. Und drittens wär es interessant, in welcher Sprache du den schreiben willst.

_________________
Genie oder Wahnsinn? Wer kann es wissen...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Hansy



Anmeldungsdatum: 27.01.2006
Beiträge: 4

BeitragVerfasst am: 04. März 2006 15:51    Titel: Antworten mit Zitat

Ok also dnake für deinen Post.

Wir programmieren zur Zeit in der Programmiersprache "Comal" ... Ist sehr alt aber sehr gut für Anfänger. Und ein Algorithmus ist ein Lösungsschema das unabhängig von der Form der Lösung ist.

Aber ich habe null ahnung wie man einen Algoritmus überhaupt schreibt smile
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Crotaphytus



Anmeldungsdatum: 08.05.2005
Beiträge: 213

BeitragVerfasst am: 04. März 2006 17:13    Titel: Antworten mit Zitat

Ok. Also ich würd einen Algorithmus jetzt als "Schritt-für-Schritt" - Anleitung zur Lösung eines gegebenen Problems beschreiben. Ich denk aber, dass wir da im Grunde das gleiche meinen.

Gut, wie schreibt man so was? Ich geb dir jetzt einfach mal ein Beispiel, nämlich den sogenannten "Euklidischen Algorithmus". Der ist eine mögliche Lösung, um den größten gemeinsamen Teiler zweier Zahlen zu finden. Das Problem ist klar, du willst den ggT der Zahlen x und y haben. Zur Lösung machst du dann nach Euklid folgendes:

1. Falls x < y vertausche x und y
2. Berechne z = x - y
3. Setze x = y und y = z
4. Falls z != 0 weiter bei 1
5. x ist der ggT

Also hast du hier schön aufgeschrieben, welche Schritte gemacht werden müssen, um zur Lösung zu kommen. Jetzt willst du dies natürlich mit dem Computer berechnen. Also musst du das irgendwie so schreiben, dass es der PC versteht. Du musst also jeden dieser Schritte der Syntax deiner Programmiersprache anpassen.

Leider kenn ich jetzt die Syntax von Comal nicht. Stattdessen schreib ich das jetzt einfach mal in ner Art Pseudocode hin:

Code:

ggT(x, y) {
  do {
    if(x < y) {
      hilfsvariable = x;
      x = y;
      y = hilfsvariable;
    }
    z = x - y;
    x = y;
    y = z;
  } while(z != 0)
  return x;
}


Ich hoffe mal, es ist halbwegs verständlich, was der Code macht. Man könnte das jetzt natürlich noch etwas umformulieren und beispielsweise exzessiv von Rekursion gebrauch machen. Aber ich denke, das würde etwas zu weit führen. Gibt ja eher darum, zu zeigen, wie man einen vorformulierten Algorithmus auf den Code kommt. Wenns dich trotzdem interessiert, das Beispiel könnte dann etwa so aussehen:

Code:

ggT(x, y) {
  if(y == 0) return x;
  if(x < y) ggT(y, x);
  else ggT(y, x-y);
}


Kannst ja mal schauen ob du verstehst, warum das wirklich das Gleiche ist wie oben... Augenzwinkern


Aber noch mal, wie löst du ein Problem (denn darauf läuft deine Frage ja eigentlich hinaus):

1. Überleg dir, was genau du machen würdest, wenn du das Problem lösen sollst. Überleg, wie du Schritt für Schritt vorgehst, und schreib diese Schritte auf.
2. Schaue bei jedem Schritt, wie du den so formulieren kannst, dass ihn der Computer versteht. Wenn das direkt nicht möglich ist, war der Schritt zu allgemein und du musst den noch weiter aufdröseln. (War im Beispiel bei "Vertausche x und y" so, das ging nicht so ohne weiteres, dazu brauchte ich noch ne Hilfsvariable.)
3. Wenn jeder Schritt als Codestück ausdrückbar ist, füg die Teile zum Programm zusammen.

Wie du siehst, war auch das jetzt so ne Art Algorithmus, auch wenn der wohl nicht auf den Computer übertragbar ist. Aber im Grunde kannst du alles als Algorithmus schreiben, selbst wenn du aufs Klo gehst. Augenzwinkern

_________________
Genie oder Wahnsinn? Wer kann es wissen...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Hansy



Anmeldungsdatum: 27.01.2006
Beiträge: 4

BeitragVerfasst am: 07. März 2006 16:08    Titel: Antworten mit Zitat

Boahhh cool danke! Gott Gott

Ok also erstmal habe ich aus der Aufgabe das Programm in Comal erstlellt. Das sieht jetzt so aus:

Aber wie mach ich jetzt daraus ein normalen Algorithmus?

Quellcode:
Code:

0010 // Würfel
0020 // Ver.:0
0040
0050 // Deklarationsteil
0060 //------------------------------------------------------------------//
0070 DIM würfel
0080 pause$:="Weiter mit beliebiger Taste"
0090 //------------------------------------------------------------------//
0100 // Anweisungsteil
0110 //------------------------------------------------------------------//
0120 PAGE
0130 menue1
0140 PAUSE
0150 //------------------------------------------------------------------//
0160 FOR zaehler:=1 TO 10 DO
0170 PAGE
0180 würfel:=RND(1,6)
0190 IF würfel=1 THEN
0200 eins
0210 ELIF würfel=2 THEN
0220 zwei
0230 ELIF würfel=3 THEN
0240 drei
0250 ELIF würfel=4 THEN
0260 vier
0270 ELIF würfel=5 THEN
0280 fuenf
0290 ELIF würfel=6 THEN
0300 sechs
0310 ENDIF
0320 centerpause:=(80-LEN(pause$))/2
0330 PRINT AT 11,centerpause: pause$
0340 PAUSE
0350 ENDFOR zaehler
0360 END
0370 //------------------------------------------------------------------//
0380 //Prozedurenteil
0390 //------------------------------------------------------------------//
0400 PROC menue1
0410 // Anwesiungssteil
0420 //------------------------------------------------------------------//
0430 text1$:="Würfelprogramm"
0440 text2$:="Weiter mit beliebiger Taste"
0450 centertext1:=(80-LEN(text1$))/2
0460 centertext2:=(80-LEN(text2$))/2
0470 PRINT AT 11,centertext1: text1$
0480 PRINT AT 12,centertext2: text2$
0490 //------------------------------------------------------------------//
0500 ENDPROC menue1
0510
0520 PROC rahmen1(zeileoben,spalteoben,zeileunten,spalteunten)
0550
0560 // Deklarationsteil
0570 DIM breite
0580 DIM zeile
0590
0600 // Anweisungsteil
0610 breite:=spalteunten-spalteoben-1
0620 PRINT AT zeileoben,spalteoben: "┌",breite*"─","┐"
0630 FOR zeile:=zeileoben+1 TO zeileunten-1 DO
0640 PRINT AT zeile,spalteoben: "│",breite*" ","│"
0650 ENDFOR zeile
0660 PRINT AT zeileunten,spalteoben: "└",breite*"─","┘"
0670 ENDPROC rahmen1
0680
0690 PROC eins
0700 rahmen1(3,5,3+6,5+12)
0710 PRINT AT 6,6: " o "
0720 ENDPROC eins
0730
0740 PROC zwei
0750 rahmen1(3,30,3+6,30+12)
0760 PRINT AT 5,31: " o "
0770 PRINT AT 7,31: " o "
0780 ENDPROC zwei
0790
0800 PROC drei
0810 rahmen1(3,65,3+6,65+12)
0820 PRINT AT 5,66: " o "
0830 PRINT AT 6,66: " o "
0840 PRINT AT 7,66: " o "
0850 ENDPROC drei
0860
0870 PROC vier
0880 rahmen1(17,5,17+6,5+12)
0890 PRINT AT 19,6: " o o "
0900 PRINT AT 21,6: " o o "
0910 ENDPROC vier
0920
0930 PROC fuenf
0940 rahmen1(17,30,17+6,30+12)
0950 PRINT AT 19,31: " o o "
0960 PRINT AT 20,31: " o "
0970 PRINT AT 21,31: " o o "
0980 ENDPROC fuenf
0990
1000 PROC sechs
1010 rahmen1(17,65,17+6,65+12)
1020 PRINT AT 18,66: " o o "
1030 PRINT AT 20,66: " o o"
1040 PRINT AT 22,66: " o o "
1050 ENDPROC sechs
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Crotaphytus



Anmeldungsdatum: 08.05.2005
Beiträge: 213

BeitragVerfasst am: 07. März 2006 18:59    Titel: Antworten mit Zitat

Das is Comal? Uäh... Sieht aus wie Basic mit erweiterter Funktionalität... Aber gut. So wie ich das Programm deute, macht der Algorithmus nicht viel mehr, als sich ne zufällige Zahl zwischen 1 und 6 suchen und daraus dann grafisch nen Würfel darstellen.
_________________
Genie oder Wahnsinn? Wer kann es wissen...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Gast






BeitragVerfasst am: 07. März 2006 19:17    Titel: Antworten mit Zitat

ja .. Das hast du Recht .. Das ist wie Basic .. und genau er würfelt zufällig eine Zahl aus 1-6 Augenzwinkern

Aber wie sieht jetzt der Algorithmus dazu aus?

mfg
Hansy ^^
Nach oben
as_string



Anmeldungsdatum: 24.02.2006
Beiträge: 80
Wohnort: Heidelberg

BeitragVerfasst am: 07. März 2006 22:34    Titel: Antworten mit Zitat

Hallo!

Ehrlich gesagt weiß ich einfach nicht genau, was Du damit meinst: "Wie sieht der Algorithmus dazu aus". Denkst Du da an eine grafische Darstellung, wie z. B. ein Flußdiagramm oder ein Struktogramm? Dein Programm z. B. ist auch schon eine Darstellung des Algorithmus, eben in Comal Syntax. Genau so kann man das auch in einer Pseudo-Syntax machen, wie oben (wobei die schon sehr stark an C erinnert hat...)
Was genau willst Du von uns haben? Ein Algorithmus ist ja was abstraktes. Da kann man nicht fragen: "Wie sieht der aus". Sondern man kann nur fragen: "Wie sieht der in der Darstellung xy aus?" Und da hast Du selbst uns eine gegeben. Die Beschreibung von Crotaphytus mit "... macht das Programm nicht viel mehr als..." ist auch eine Beschreibung/Darstellung des Algorithmus, wenn auch keine formale. Wie gesagt, es gäbe dann eben noch die Möglichkeit mit verschiedenen Arten von Diagrammen das zu machen etc....

Gruß
Marco
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Gast






BeitragVerfasst am: 08. März 2006 21:35    Titel: Antworten mit Zitat

Ich danke Euch Augenzwinkern Ich habe das jetzt mal probiert und abgeben smile Falls das richtig war, dann werde ich es mal hir hinein posten und ein Tut schreiben Augenzwinkern

mfg
Hansy
Nach oben
Beiträge der letzten Zeit anzeigen:   
Dieses Forum ist gesperrt, du kannst keine Beiträge editieren, schreiben oder beantworten.   Dieses Thema ist gesperrt, du kannst keine Beiträge editieren oder beantworten.    Informatikerboard.de Foren-Übersicht -> Theoretische Informatik Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum nicht posten
Du kannst Dateien in diesem Forum nicht herunterladen