Informatiker Board (http://www.informatikerboard.de/board/index.php)
- Themengebiete (http://www.informatikerboard.de/board/board.php?boardid=1)
-- Praktische Informatik (http://www.informatikerboard.de/board/board.php?boardid=6)
--- Programmierung (http://www.informatikerboard.de/board/thread.php?threadid=47)
Geschrieben von Kira007 am 28.09.2006 um 16:50:
Programmierung
Hallo zusammen
a:10
Wiederhole, falls a> 10
a:a-100
Ausgabe a =10 diese Aufgabe ist mir klar
ich habe vor ein paar Tagen mit der Prgrammierung angefangen und habe irgendwie ein Problem mit folgender Aufgabe.
A: 200
Wiederhole, falls b > 10
a=a-100
b=a*2
Ausgabe a
Hoffe mir kann dabei jemand helfen, möchte gerne wissen was ich als Ausga a erhalte wenn b 1000 ist.
Gruß Kira
Geschrieben von Crotaphytus am 28.09.2006 um 17:32:
Prinzipiell würd ich ja sagen, probiers aus...
Allerdings kannst du dir das auch so überlegen: In der Schleife wird b nur abhängig von a geändert. Das heißt, wie du b vorher setzt, ist vollkommen egal, das beeinfluss nur, ob die Schleife anläuft oder nicht. Wenn sie das tut, ist das Verhalten immer gleich.
Geschrieben von kurellajunior am 28.09.2006 um 17:51:
generell lohnt sich bei solch kleinen Schleifen eine Tabelle mit den Variablen als Spalten und jede Zeile ine Iterationsschritt. Damit kommt man meist zum Ziel.
Bei größeren Schleifen kann man so anfangen und erkennt dann meist die Regelmäßigkeit und die Abbruchbedingung ist klar.
Wenn Du magst, kannst ja mal die ersten beiden Iterationen hinschreiben
Geschrieben von Kira007 am 28.09.2006 um 23:07:
also bei der zweiten Aufgabe habe ich nicht wiklich eine Ahnung wie es funktioniert, wäre super wenn es mir jemand erklären könnte.
Das Gleichheitszeichen in der Informatik hat doch auch eine andere Bedeutung als in der Mathematik oder ?
was würde ich z.B. als Ausgabe a erhalten wenn ich b = 100 setze ?
Als Ausgabe erhalte ich Null ?
Gruß Kira
Geschrieben von kurellajunior am 28.09.2006 um 23:18:
Das Gleichheitszeichen wird in den meisten Dialekten als Zuweisung von rechts nach links interpretiert.
a=a-100 heißt demnach
substrahiere 100 von a und speichere das Ergebnis wieder in a.
Eine ebenfalls mögliche Schreibweise ist
Und ist äquvalent zur oberen
Geschrieben von Kira007 am 28.09.2006 um 23:26:
Ok, Danke für die Erklärung habs verstanden
wie würde dann die 1Iteration aussehen, mit b:1000
Gruß Kira
Geschrieben von dachdecker2 am 29.09.2006 um 07:55:
Zitat: |
Original von Crotaphytus
Prinzipiell würd ich ja sagen, probiers aus...
Allerdings kannst du dir das auch so überlegen: In der Schleife wird b nur abhängig von a geändert. Das heißt, wie du b vorher setzt, ist vollkommen egal, das beeinfluss nur, ob die Schleife anläuft oder nicht. Wenn sie das tut, ist das Verhalten immer gleich. |
Da steht die Lösung schon drin - wenn b größer als 10 ist, wird die Schleife ausgeführt, ansonsten wird sie übergangen. In der Regel kannst du davon ausgehen, dass b einen Zufallswert enthält, wenn du es nicht selbst mit einem bestimmten Wert initialisierst. Folglich wird das Programm je nach Variablentyp von b mehr oder weniger oft die Schleife ausfürhen oder nicht.
Beispiel: Wenn b vom Typ unsigned char ist (dessen Wertebereich von 0 bis 255 reicht), und echte Zufallswerte im Speicher stehen, kannst du davon ausgehen, dass die Schleife in etwa 245 von 255 Starts ausgeführt wird. a (einige Programmiersprachen sind case sensitive, d.h. sie unterscheiden zwischen Groß- und Kleinschreibung -> A = 200 verändert in diesen Sprachen den Wert von A, nicht den von a) wird nach der Ausführung der Schleife 0 sein. In jedem Durchlauf 100 von a abgezogen werden und nach dem zweiten Durchlauf die Schleifenbedinung nicht mehr erfüllt ist.
Mache doch mal die angesprochene Tabelle, in der du die Spalten Schleifendurchlauf, a und b mit Zahlen belegst.
Bevor du dir eine Unart aneignest
- du solltest zur besseren Übersichtlichkeit Zusammengehörigen Code gleich einrücken, zum Beispiel so:
code: |
1:
2:
3:
4:
5:
6:
7:
8:
9:
|
a: 200
Wiederhole, falls b > 10
a=a-100
b=a*2
// so ein Fenster bekommst du mit [code] Fensterinhalt [/code ]
|
|
Geschrieben von kurellajunior am 29.09.2006 um 08:51:
Ich hüpf dir mal auf die Spürnge mit der ersten Zeile der Tabelle: (Hinweis: b sollte größer 10 sein
)
code: |
1:
2:
3:
4:
5:
|
b: 20
i a b
00 200 20
01 |
|
Und jetzt Du weiter.
Noch ein tip: drück auf zitieren und entferne die [quote] tags, um meinen Code weiterbenutzen zu können.
Geschrieben von Kira007 am 29.09.2006 um 09:05:
OK, Danke für Eure Hilfe
was bedeutet das i, und wie kommst Du auf die 20 ?, frage lieber bevor ich weiter mache
oder hast Du b:20 als Startwert genommen ?
Geschrieben von kurellajunior am 29.09.2006 um 09:44:
i steht in der Regel für Iteration(sschritte) soll einfach nur durchzähken.
Und ja ich habe b einfach auf 20 gesetzt, damit die Schleife losgeht
Jan
Geschrieben von Kira007 am 29.09.2006 um 15:40:
code: |
1:
2:
3:
4:
5:
|
b: 20
i a b
00 200 20
01 100 200 |
|
ist das so richtig
oder wäre es dann aufgrund Das Gleichheitszeichen wird in den meisten Dialekten als Zuweisung von rechts nach links interpretiert.
a=a-100 heißt demnach
substrahiere 100 von a und speichere das Ergebnis wieder in a.
code: |
1:
2:
3:
4:
5:
|
b: 20
i a b
00 200 20
01 300 600 |
|
Geschrieben von kurellajunior am 04.10.2006 um 13:07:
Zitat: |
Original von Kira007
code: |
1:
2:
3:
4:
5:
|
b: 20
i a b
00 200 20
01 100 200 |
|
ist das so richtig
|
Ja, wie Du auf das zweite kommst ist mir unklar
denn
Zitat: |
Das Gleichheitszeichen wird in den meisten Dialekten als Zuweisung von rechts nach links interpretiert.
a=a-100 heißt demnach
substrahiere 100 von a und speichere das Ergebnis wieder in a. |
hast Du ja genau gemacht:
200-100 = 100 und das wir in a gespeichert (und damit der alte Wert überschrieben!)
Machst Du denn die Sache noch zu Ende?
Jan
Geschrieben von Kira007 am 14.10.2006 um 09:34:
Ist schon alles klar.
Danke Dir
Gruß Kira
Forensoftware: Burning Board, entwickelt von WoltLab GmbH