absoluteranfänger Geschrieben 3. September 2008 Geschrieben 3. September 2008 Hallo miteinander, ihr habt sicher schon erkannt ich bin neu hier in der Runde und muss Euch leider gleich mit einem (für mich zumindest) dicken Problem "nerven" Im Rahmen meiner Ausbildung hatte ich nun knapp ein halbes Jahr das Fach Informatik (mehr kommt jetzt auch nicht mehr) und demnächst steht die Klausur ins Haus. Dazu haben wir auch ein paar Beispielaufgaben erhalten, bei denen ich mich ja schon bei den klitzekleinsten Nachmittage mit beschäftigt habe. Nun gibt es allerdings ein paar Aufgaben, bei denen finde ich ja noch nicht einmal einen Anfang... Wie z.B. diese hier: oder besser so: http://foto.arcor-online.net/palb/alben/64/1242764/1280_3335626237323562.jpg Jedenfalls habe ich keinen Plan, wie ich das bewerkstelligen soll. Ich bekomme einfach nichts Gescheites hin, ehrlich gesagt bekomme ich dank der vielen Fehlermeldungen und Warnungen nicht mal ein lauffähiges Programm zu Stande Es wäre wirklich super, wenn ihr mir helfen könntet. Auch für hilfreiche Tipps und jegliche Hilfestellungen bin ich immer offen. DANKE! Zitieren
Klotzkopp Geschrieben 3. September 2008 Geschrieben 3. September 2008 ehrlich gesagt bekomme ich dank der vielen Fehlermeldungen und Warnungen nicht mal ein lauffähiges Programm zu Stande Lass doch erst mal den Code liegen, und formuliere einen Algorithmus, als PAP oder Struktogramm. Wenn das steht, kannst du anfangen, das in Code umzusetzen. Beides gleichzeitig klappt nur bei einfachen Problemstellungen, oder wenn du die entsprechende Erfahrung hast. Zitieren
absoluteranfänger Geschrieben 3. September 2008 Autor Geschrieben 3. September 2008 Lass doch erst mal den Code liegen, und formuliere einen Algorithmus, als PAP oder Struktogramm. Sorry - wie gesagt bin ich kein Experte, sondern hatte nur ein halbes Jahr Informatik. Das Wort Code sagt mir ja im Hinblick auf den Quellcode noch etwas, aber die anderen beiden Wörter sagen mir grade rein gar nichts: PAP? und Struktogramm sagt mir in dem Zusammenhang leider auch nichts Zitieren
TDM Geschrieben 3. September 2008 Geschrieben 3. September 2008 Lösen sie diese Aufgabe ohne While-Anweisungen zu benutzen *hust*For*hust* [...]ein halbes Jahr Informatik. [...] PAP? und Struktogramm sagt mir in dem Zusammenhang leider auch nichts Programmablaufplan und Struktogramm hat man eigentlich am Anfang der Informatik bevors mit Programmieren losgeht. Zitieren
Klotzkopp Geschrieben 3. September 2008 Geschrieben 3. September 2008 Das Wort Code sagt mir ja im Hinblick auf den Quellcode noch etwas, aber die anderen beiden Wörter sagen mir grade rein gar nichts: PAP? und Struktogramm sagt mir in dem Zusammenhang leider auch nichts Was für eine Ausbildung machst du denn da? Was ich meine: Du sollst zuerst den Algorithmus (also die Vorgehensweise zur Problemlösung) allgemein formulieren, unabhängig von einer konkreten Programmiersprache. Meinetwegen auch einfach als Fließtext in Deutsch. Erst dann sollst du diesen Algorithmus in die Programmiersprache C umsetzen. Wenn du nämlich beides gleichzeitig versuchst, kommt dabei nur Murks raus. Zitieren
absoluteranfänger Geschrieben 3. September 2008 Autor Geschrieben 3. September 2008 (bearbeitet) Programmablaufplan [...] hat man eigentlich am Anfang der Informatik bevors mit Programmieren losgeht. :upps so sagt mir PAP nun auch was ...ich werde mal versuchen sowas aufzustellen und im Anschluss hier zu posten. Was für eine Ausbildung machst du denn da? Maschinenbau Studium - Entwicklung und Konstruktion sind mein Gebiet, die Informatik überlasse ich gerne den Profis. Ist absolut nicht mein Ding, daher tue ich mich gerade wahrscheinlich auch so unheimlich schwer damit. Bearbeitet 3. September 2008 von absoluteranfänger Zitieren
absoluteranfänger Geschrieben 3. September 2008 Autor Geschrieben 3. September 2008 Problemstellung: Ich soll ein Computerprogramm in der Programmiersprache C erstellen, welches die Addition von Brüchen, welche eine gewisse Regelmäßigkeit im Nenner aufweisen, automatisiert durchführt. Die Brüche sind so lange zu addieren, bis die Faktoren im Nenner einen gewissen Maximalwert erreicht haben. Das Ergebnis dieser Berechnung ist dann auf dem Bildschirm auszugeben. Es sollen geeignete Kontrollstrukturen verwendet werden und es dürfen keine while-Anweisungen verwendet werden, daher muss ich mich auf die Verwendung einer for-Schleife konzentrieren. Ist das ein brauchbarer PAP? Zitieren
Klotzkopp Geschrieben 3. September 2008 Geschrieben 3. September 2008 Ist das ein brauchbarer PAP?Nein, das ist überhaupt kein PAP. Das ist eine Wiederholung der Aufgabenstellung. Der Algorithmus formuliert die Lösung der Aufgabe. Begriffe wie "gewisse Regelmäßigkeit", "gewisser Maximalwert" und "Bruch" haben darin nichts zu suchen, denn damit kann ein Computer nichts anfangen. Auch welcher Art die Kontrollstrukturen sein sollen, ist hier nicht direkt relevant. Alle Arten von Schleifen lassen sich ineinander überführen. Zitieren
Crash2001 Geschrieben 3. September 2008 Geschrieben 3. September 2008 Ein PAP ist das nicht. Das ist nur die Problembeschreibung mit einer ersten Analyse. Was ein PAP ist, erfährst du hier. DAs ist halt grob eine Darstellung deines Programmes, was wann passiert. Zitieren
TDM Geschrieben 3. September 2008 Geschrieben 3. September 2008 Mal an einer Fahrenheits-Celsius-Berechnung demonstrieren... PAP: Struktogramm: [Editerle] Crash war wohl schneller. :beagolisc [Editerle2] So, das ganze jetzt für dein Problem. Zitieren
absoluteranfänger Geschrieben 3. September 2008 Autor Geschrieben 3. September 2008 Ein PAP ist das nicht. Das ist nur die Problembeschreibung mit einer ersten Analyse. Was ein PAP ist, erfährst du hier. DAs ist halt grob eine Darstellung deines Programmes, was wann passiert. Gut, dann werde ich mich mal anhand dieser Bildchen orientieren und versuchen einen Ablauf zu erstellen Zitieren
Klotzkopp Geschrieben 3. September 2008 Geschrieben 3. September 2008 Struktogramm: Das ist IMHO ein schlechtes Beispiel. Das ist nicht einmal ein Struktogramm. Was soll "Programm Fahrenheit" für eine Schleife sein? Oder "Beginn/Ende"? Und was ist "Ausgabebildschirm fixieren"? Kann es sein, dass das ziemlich alt ist? Es würde mich jedenfalls nicht wundern, wenn da auch irgendwo "Lochstreifen auswerfen" auftauchen würde Es muss ja nicht mal ein PAP oder Struktogramm sein. Es reicht auch, das ganze einfach als Text zu formulieren, in etwa so: Eine Variable S für die Summe anlegen, mit Startwert 0 Eine Variable n von 2 bis 198 laufen lassen ... usw. Zitieren
TDM Geschrieben 3. September 2008 Geschrieben 3. September 2008 Kann es sein, dass das ziemlich alt ist? Keine Ahnung, war in der Wiki verlinkt, aber die Seite scheint irgendwie ein Aktualisierungsdatum von 1999 zu haben. Naja wie auch immer. Ich wollte nur in etwa zeigen was es ist. Zitieren
absoluteranfänger Geschrieben 3. September 2008 Autor Geschrieben 3. September 2008 Wenn ich das hier nun lese, dann ist mein PAP wohl wieder kein richtiger Ich hatte nun den hier erstellt: Daher nun einfach mal ein anderer Versuch: Zunächst rufe ich das Programm auf, dann binde ich die Biblitotheksfunktionen ein, nun würde ich die Variablen (a, b, c, loesunga, loesungb, loesungc und ergebnis) in ihrem Typ deklarieren, es folgt der Beginn des Hauptprogramms, das Hauptprogramm führt eine Addition durch, dieses Hauptprogramm läuft so lange, bis die Variablen folgende Werte haben: a <= 198; b <= 199 und c <= 200, zu diesem Hauptprogramm erstelle ich ein Unterprogramm, welches die Variablen 1/a, 1/b, 1/c in jedem Durchlauf miteinander multipliziert, nach jedem Durchlauf des Hauptprogramms erhöhe ich den Wert der Variablen wie folgt: a = a +2, b = b + 2, c = c + 2, haben die Variablen ihr im Hauptprogramm definiertes Maximum erreicht, wird das Unterprogramm nicht noch einmal durchlaufen, sondern es erfolgt die Bildschirmausgabe des Ergebnisses, wurde das Programm ohne Fehler abgearbeitet, wird es beendet Kann man denn mit dieser Form nun etwas anfangen? Zitieren
Klotzkopp Geschrieben 3. September 2008 Geschrieben 3. September 2008 Kann man denn mit dieser Form nun etwas anfangen?Das ist schon gar nicht schlecht. Eine Gesetzmäßigkeit, die das Ganze noch weiter vereinfacht, ist dir aber offenbar noch nicht aufgefallen: b ist immer a+1, und c ist immer a+2. Du brauchst also weder b noch c. Zitieren
Crash2001 Geschrieben 3. September 2008 Geschrieben 3. September 2008 Ich würde dir dazu raten, nicht a, b und c als variablen zu nehmen, sondern n, n+1 und n+2. So musst du nur eine Variable hochzählen und nicht derer drei. Laut deinem PAP wird nur addiert, wenn a > 198 ist. Zudem ist dort nicht ersichtlich, was addiert wird. [edit] hmpf - da war diesmal Klotzkopp schneller als ich. [/edit] Zitieren
flashpixx Geschrieben 3. September 2008 Geschrieben 3. September 2008 Eine Gesetzmäßigkeit, die das Ganze noch weiter vereinfacht, ist dir aber offenbar noch nicht aufgefallen: b ist immer a+1, und c ist immer a+2. Du brauchst also weder b noch c. Das war jetzt schon etwas bissig :-P An den OP damit's nicht off-topic wird: Setz dich wirklich mit Papier und Bleistift hin und spiele einen Fall durch und notiere Dir jeden Schritt den Du im Kopf machst. Dann hast Du ganz groben Pseudocode, den musst Du dann verfeinern. Das ganze solltest Du dann vom konkreten Beispiel mit Variablen machen (mathematische Schreibweise). Wenn Du den Pseudocode hast, dann kannst Du ihn leicht in die passende Sprache übersetzen HTH Phil Zitieren
Klotzkopp Geschrieben 3. September 2008 Geschrieben 3. September 2008 Das war jetzt schon etwas bissig :-P:confused: So war's aber nicht gemeint. Tut mir leid, falls das so rüberkam. Zitieren
absoluteranfänger Geschrieben 3. September 2008 Autor Geschrieben 3. September 2008 (bearbeitet) Das ist schon gar nicht schlecht. :beagolisc Eine Gesetzmäßigkeit, die das Ganze noch weiter vereinfacht, ist dir aber offenbar noch nicht aufgefallen: b ist immer a+1, und c ist immer a+2. Du brauchst also weder b noch c. Doch, aber ich weiß nicht, wie sich der Computer da in der Speicherverwaltung verhält. Ich habe immer Angst, ich überschreibe eine Variable, deren Wert ich an anderer Stelle noch benötige... Ändere ich meine Überlegung also nach dem ab, würde es wie folgt aussehen: Zunächst rufe ich das Programm auf, dann binde ich die Biblitotheksfunktionen ein, nun würde ich die Variablen (a, faktor1, faktor2 und ergebnis) in ihrem Typ deklarieren, es folgt der Beginn des Hauptprogramms, das Hauptprogramm führt eine Addition durch, dieses Hauptprogramm läuft so lange, bis die Variable folgenden Wert besitzt: a <= 200, zu diesem Hauptprogramm erstelle ich ein Unterprogramm namens Division (a = 2; a++) das 1/a berechnet und nenne das Ergebnis dann faktor1, zu diesem Hauptprogramm erstelle ich ein Unterprogramm namens Division (a = 2; a++) das 1/a berechnet und nenne das Ergebnis dann faktor2, als weiteres Unterprogramm folgt ein Programm mit dem Namen Multiplikation, das faktor * 1/a (a++) berechnet, hat die Variable ihr im Hauptprogramm definiertes Maximum erreicht, werden die Unterprogramme nicht noch einmal durchlaufen, sondern es erfolgt die Bildschirmausgabe des Ergebnisses, wurde das Programm ohne Fehler abgearbeitet, wird es beendet ...nur ich habe Angst ich überschreibe mir benötigte Werte und mache meine Rechnung damit im Endeffekt kaputt Bearbeitet 3. September 2008 von absoluteranfänger Zitieren
TDM Geschrieben 3. September 2008 Geschrieben 3. September 2008 nun würde ich die Variablen (a, faktor1, faktor2 und ergebnis) in ihrem Typ deklarieren, es folgt der Beginn des Hauptprogramms Variablen im Programm deklarieren. Außerhalb ist Mist. Außerdem, was man auch beachten sollte ist: S = (1 / (n+0) * (n+1) * (n+2)) + (1 / (n+2) * (n+3) * (n+4)) Hoffentlich hab ich jetzt nicht zu viel verraten. btw: Warum kommt mir diese Berechnung bekannt vor? Zitieren
Klotzkopp Geschrieben 3. September 2008 Geschrieben 3. September 2008 zu diesem Hauptprogramm erstelle ich ein Unterprogramm namens DivisionFür ein einfaches 1/x würde ich kein Unterprogramm erstellen. Und wenn du nicht a++ benutzt, sondern wirklich a+1 bzw. a+2, dann brauchst du auch nicht zu befürchten, dass du etwas überschreibst. Du kannst ruhig auf einen Rutsch 1 / ( a * (a+1) * (a+2) ) ausrechnen, und das aufsummieren. Zitieren
Crash2001 Geschrieben 3. September 2008 Geschrieben 3. September 2008 (bearbeitet) ZWeimal ein Unterprogramm mit gleichem Namen erstellen geht nicht, bzw nur das als letztes deklarierte sollte dann vorhanden sein. (zumindest wenn sie die gleichen Variablen übergeben bekommen) Wieso rechnest du erst 1/Faktor1 und 1/Faktor2, wenn du das auch direkt in einem zusammenfassen kannst per 1/ ( n * (n+1) * (n+2) ), wenn n deine Variable ist, die du in 2er-Schrittweite von der For-Schleife hochzählen lässt. [edit] @Klotzkopp & TDM: Och menno - lasst euch doch mal 2 Minuten mehr Zeit. Bin doch nebenher am Essen. [/edit] Bearbeitet 3. September 2008 von Crash2001 Zitieren
flashpixx Geschrieben 3. September 2008 Geschrieben 3. September 2008 Das sieht doch schon mal gar nicht so schlecht aus. Codier es doch einmal so. ...nur ich habe Angst ich überschreibe mir benötigte Werte und mache meine Rechnung damit im Endeffekt kaputt Naja, du musst dir eben überlegen welche Gültigkeit (scope) Variablen besitzen und ggf. den Code dann anpassen. Phil [edit] da stehen ja fast schon die fertigen Lösungen Zitieren
xk4fu Geschrieben 3. September 2008 Geschrieben 3. September 2008 for(n=0;n<=100){ i = i + 1/(n * (n+1) * (n+2)) n = n + 3 } ist sowas in der art nicht quasi alles was man machen muss? Zitieren
Klotzkopp Geschrieben 3. September 2008 Geschrieben 3. September 2008 ist sowas in der art nicht quasi alles was man machen muss?Ja, das ist im Prinzip alles. Aber wir möchten absoluteranfänger dahin führen, dass er sich das selbst erarbeitet, und nicht einfach nur vorsagen, denn dann kann er das nächste Problem selbst lösen. Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.