# eigenen Quelltext ausgeben



## gh23 (6. Jan 2006)

tach 

ich hab nen problem ... und zwar soll ich nen programm schreiben was seinen eigenen quelltext ausgibt

mich würde es freund wenn mit jmd nen ansatz dazu geben kann , also nich gleich code, wills ja schließlich selba machen  

achja... aus datei lesen is nich, darauf wär ich auch selber gekommen aber sonst hab ich keine idee  

also vielen dank im voraus 

gruß


----------



## SlaterB (6. Jan 2006)

hmm, ich würde sagen das ist allgemein unmöglich?

es sei denn du meinst,  ein ganz bestimmtes Programm zu finden das so verrückt konstruiert ist, 
dass es genau seinen Quelltext ausgibt,

dazu kann man kaum Tipps geben, sowas ist höchstens für Experten ne Denksportaufgabe,
Stichwort 'quine' bei google liefert Seiten mit solchen Programmen in allen möglichen Sprachen

ich würde behaupten: jemand der in Foren Fragen dazu stellt, kommt für sowas nicht in Frage (sorry  )

wenn du es doch versuchen willst schau dir die entsprechenden Beispiele ganz kurz an (evtl. zunächst in anderen Programmiersprachen),
dann sieht man, dass das immer ein undurchschaubares Gewirr aus chars, Strings und Schleifen ist


----------



## gh23 (6. Jan 2006)

joa dass das allgemein unmöglich is, is klar ... ich soll schon sowas "verrückt" konstruieren 

aber so schwer kanns nun auch nich sein.. is immerhin ne aufgabe ausm ersten semester .. und ich studier noch nich ma info 

aber danke für den tip mit "quine".. werd ma danach suchen


----------



## Beni (6. Jan 2006)

Ohne dass ich mich tiefer mit der Materie auseinander gesetzt hätte, fallen mir zwei Lösungsmöglichkeiten ein:
Einen Code einführen (im Sinne von 1="public2, 2=while, 3="main", ...), und dann den Code des Programmes codiert in einem Array speichern. Dann müsste das Programm nur diesen Code decodieren, und fertig. (Der Array kann beliebig gross sein, ausgeben kann man den Array trotzdem mit einer einzigen kleinen Schleife).

Oder: Einen String im Quellcode speichern, der dem Code entspricht. Auf den ersten Blick ergibt das auf eine endlose Rekursion, der String müsste ja sich selbst + weiteren Code enthalten. Aber anstelle von "sich selbst" kann man z.B. ein Platzhalter einfügen, welcher dann kurz vor der Ausgabe noch mit dem String ersetzt wird (Die Rekursionstiefe bleibt dann bei 1, im Code steht nur der Platzhalter, also muss auch in der Ausgabe nur der Platzhalter da stehen).


----------



## bygones (7. Jan 2006)

```
public class Ausgabe {
  public void ausgabe() throws IOException {
    BufferedReader in = new BufferedReader(new FileReader("Asugabe.java"));

   String line;

   while((line = in.readLine()) != null) {
      System.out.println(line);
   }
   in.close();
}
```

so gibt sich die Datei selber aus 

achso - datei lesen is net....


----------



## SlaterB (7. Jan 2006)

und dann auch noch der Fehler 'class Ausgabe' <-> "Asugabe.java"


----------



## Guest (8. Jan 2006)

gh23 hat gesagt.:
			
		

> aber so schwer kanns nun auch nich sein.. is immerhin ne aufgabe ausm ersten semester ..



Das bedeutet aber nicht, dass es auch möglich ist. Es könnte gut sein, dass mit dieser Aufgabe die Studierenden zum Hirnen gezwungen werden sollen. Denn, für einen Erstsemestler ist diese Aufgabe definitiv nicht zu lösen. Und, das sage ich aus Erfahrung, da ich selber Informatik unterrichte.


----------



## gh23 (8. Jan 2006)

mh ... also ich habe es gelöst und ich finde dass es auch erstsemestern zu zumuten ist, das schwere an der aufgabe ist eigentlich die idee... das dann umzusetzen ist nun nen bissel fummelarbeit 

also ich geb zu dass ich wahrscheinlich auf die idee nich so schnell allein gekommen wäre (aber genau dafür sind ja foren da, nich wa ?  )
habe es jetz nach beni's ersten ansatz mit dem array gemacht, gibt sicher noch nen menge mehr ansätze (von denen sicher auch nen paar eleganter sind  ), aber aufgabe erfüllt is aufgabe erfüllt 

also nochma vielen dank an alle 
gruß


----------



## Guest (8. Jan 2006)

gh23 hat gesagt.:
			
		

> also ich geb zu dass ich wahrscheinlich auf die idee nich so schnell allein gekommen wäre (aber genau dafür sind ja foren da, nich wa ?  )



Da bin ich nicht ganz deiner Meinung. Wenn jeder Student sofort in Foren nach Antwort auf eine Frage sucht, blebt das Lernefekt klar aus! Und die Übungsaufgaben sind nicht nur dazu da, gelöst zu werden. Sie sollen dazu beitragen, dass die Studierende lernen, wie Problem anpacken werden und dazu ihre EIGENE Mechanismen entwickeln. Denn, inrgendeinmal wird man mit einem Problem konfrotiert sein, für das es keine Lösung im Internet gibt.


----------

