Autor Beitrag
Startprogrammer
Hält's aus hier
Beiträge: 9



BeitragVerfasst: So 17.11.02 21:13 
Hallo Freunde,
wir sollen ein Programm mit Auswahlstrukturen schreiben, und zwar folgendermaßen. Das ist jetzt der Algorithmus dafür:

1. Körpermasse in Kg eingeben
2. Körpergröße in cm eingeben
3. Körpergröße quadrieren
4. Punkt 1. durch Punkt 3. teilen
5. Ergebnis aus Punkt 4. =KMI
6. Wenn KMI<20, Ausgabe:Untergewicht
wenn 20 < oder = KMI < oder = , Ausgabe: Idealgewicht
wenn 22 < KMI , Ausgabe: Übergewicht
7. Fertig

Jetzt weiß ich überhaupt nicht, wie das ganze ablaufen soll. Vielleicht könnt ihr mir helfen, da was hinzukriegen. KMI bedeutet Körper-Masse-Index. Also bis dann
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: So 17.11.02 21:16 
Mach für jede Eingabe ein Edit dann berechnest du das in einem ButtonClick-Ereigniss und gibst es in einem Label aus - fertig.
Was du noch brauchst ist IntToStr und StrToInt gegeben Falls noch.
Wolff68
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 302
Erhaltene Danke: 1

WinXP home
D6 Prof
BeitragVerfasst: So 17.11.02 22:21 
Also ich versteh Dein Problem nicht ganz.
Im Prinzip hast Du doch bereits den Ablauf und die Variablen oben selber beschrieben. Musst es nur noch auf 'Delphianisch' übersetzen. Also hier mal die Delphi-Basics die Du brauchst (Und in einer wachen Minute von Deinem Lehrer aufgeschnappt haben solltest)

Zuerst brauchst Du ja einen Auslöser, daß das Rechnen beginnen soll.
Also pack Dir am besten einen Button auf das Formular und mach einen Doppelklick drauf. Damit wird im Quelltext ein Form1.Button1Click Rumpf erzeugt, in den Du jetzt den Programmtext reinpacken kannst.

Zitat:
1. Körpermasse in Kg eingeben
2. Körpergröße in cm eingeben
Also brauchst 2 Eingabefelder. zB Edit.
Zack, rauf aufs Formular und vielleicht noch edGewicht und edGroesse nennen.

Zitat:
3. Körpergröße quadrieren
4. Punkt 1. durch Punkt 3. teilen
5. Ergebnis aus Punkt 4. =KMI
Aus Punkt 5. wird ersichtlich, daß Du eine Variable KMI brauchst. Also oben var KMI : Real;
Punkt 3. Größe quadtrieren: Sqr(StrToFloat(edGroesse.Text)) (Das StrToFloat brauchst, um den Text in eine Zahl zu verwandeln.
Punkt 4. Teilen : StrToFloat(edGewicht.Text)/...
Zusammengeschrieben wird daraus:KMI := StrToFloat(edGewicht.Text)/Sqr(StrToFloat(edGroesse.Text));

Zitat:
6. Wenn KMI<20, Ausgabe:Untergewicht
wenn 20 < oder = KMI < oder = , Ausgabe: Idealgewicht
wenn 22 < KMI , Ausgabe: Übergewicht
Du brauchst also eine Ausgabe. Plazieren wir also zB ein Label auf dem Formular und nennen es Ausgabe.
Wenn schreibt sich in Delphi IF und sonst = else
Am besten macht man das dann mit einer leicht verschachtelten If-then-else. Das sieht dann so aus:
ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
IF KMI <= 20 then //Wenn KMI <= 20
  Ausgabe.Caption := 'Untergewicht'
else //Sonst (Also wenn KMI nicht < 20)
  IF KMI > 22 then // Wenn KMI > 22
    Ausgabe.Caption := 'Übergewicht' 
  else //Sonst (Also wenn KMI nicht > 22. KMI <= 20 haben wir oben ja schon geprüft)
    Ausgabe.Caption := 'Idealgewicht';


Alles klar?

StrToFloat gibt übrigends wüste Fehlermeldungen aus, wenn Du in die Edits keine Zahlen eingibst. Wie man das verhindert wirst aber später noch lernen. Also vorerst einfach mal sichergehen, daß Du nur Zahlen eingibst....

_________________
"Der Mensch ist nicht was er sich vorstellt oder wünscht zu sein, sondern das was andere in ihm sehen."
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: So 17.11.02 22:55 
Na wenn das jetzt nach dem Kochrezept nicht klappt... :roll:
Startprogrammer Threadstarter
Hält's aus hier
Beiträge: 9



BeitragVerfasst: Mo 18.11.02 18:25 
Hallo, danke für die schnelle Hilfe, aber der Lehrer meint: (o-ton Inf.-Lehrer)"Ja, nicht schlecht, aber du solltest das etwas ausführlicher machen...". Ja, toll, ausführlicher? Hä? Ich hätte mich nicht an die Aufgabenstellung gehalten. Versteh ich zwar nicht, aber egal. :shock: :autsch:
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mo 18.11.02 18:31 
Er meint bestimmt die Zeile:
ausblenden Quelltext
1:
KMI := StrToFloat(edGewicht.Text)/Sqr(StrToFloat(edGroesse.Text));					

Do solltest bestimmt mit Variablen arbeiten und so.
Startprogrammer Threadstarter
Hält's aus hier
Beiträge: 9



BeitragVerfasst: Di 19.11.02 16:35 
Ich soll da auch was mit Variablen machen, aber ich checke das ganze nicht. Ich muss mir irgendwie was ausdenken. Mal sehen...
Wolff68
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 302
Erhaltene Danke: 1

WinXP home
D6 Prof
BeitragVerfasst: Di 19.11.02 18:18 
Also gut.
Eben weniger effektiv gebündelt, dafür eher durchzublicken.
(Damit es auch Dein Lehrer kapiert !?)

1. Variablen einsetzen:
Du könntest die Zahlen in den Eingabefeldern erstmal in Variablen einlesen.
Also weitere Variablen deklarieren:
der Beginn der Prozedur sollte ja in etwa so aussehen:
ausblenden Quelltext
1:
2:
3:
4:
5:
procedure Form1.Button1Click(...);
var KMI : Real;
begin
....... Programmschritte .....
end;
Jetzt machen wir einfach noch 3 Variablen dazu. Das sieht dann so aus:
ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
var KMI : Real;
    Gewicht : Real;
    Groesse : Real;
    QuadrGroesse : Real;
begin
...
end;

Jetzt kannst im Programmtext die Variablen füllen:
ausblenden Quelltext
1:
2:
3:
4:
Gewicht := StrToFloat(edGewicht.Text);
Groesse := StrToFloat(edGroesse);
QuadrGroesse := Groesse * Groesse; //oder auch Sqr(Groesse)
KMI := Gewicht / QuadrGroesse;

Und auch die verschachtelte If-Anweisung kann man natürlich übersichtlicher machen:
ausblenden Quelltext
1:
2:
3:
If KMI <= 20 then Ausgabe.Caption := 'Untergewicht';
If (KMI > 20) and (KMI <= 22) then Ausgabe.Caption := 'Normalgewicht';
If KMI > 22 then Ausgabe.Caption := 'Übergewicht';


Für den Anfang ist es vielleicht echt übersichtlicher und leichter verständlich.

Übrigends: Wenn Du meinen Code dem Lehrer vorgelegt hast (und weiteren vorlegen willst): Ich persönlich hab nix dagegen. Aber Du solltest immer vorher begriffen haben warum der Code so geschrieben ist, wie er funktioniert und was er macht. DU sollst lernen! Ich kann es schon! Wenn Du nur abpinselst hast Du überhaupt nix erreicht. Spätestens in der nächsten Arbeit stehst dann auf'm Schlauch.
Also wenn was unklar ist: Lieber hier (oder direkt) nochmal nachfragen bis es Dir klar ist wie und warum das so geschrieben ist.

_________________
"Der Mensch ist nicht was er sich vorstellt oder wünscht zu sein, sondern das was andere in ihm sehen."
Startprogrammer Threadstarter
Hält's aus hier
Beiträge: 9



BeitragVerfasst: Mi 20.11.02 21:28 
Ich schätze mich glücklich, Informatik nicht schriftlich gewählt zu haben. Danke für die Hilfe....
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mi 20.11.02 21:35 
Startprogrammer hat folgendes geschrieben:
Ich schätze mich glücklich, Informatik nicht schriftlich gewählt zu haben. Danke für die Hilfe....


Wie soll denn da die mündliche Prüfung aussehen? :shock:
Klabautermann
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Veteran
Beiträge: 6366
Erhaltene Danke: 60

Windows 7, Ubuntu
Delphi 7 Prof.
BeitragVerfasst: Mi 20.11.02 23:48 
Hallo,
Luckie hat folgendes geschrieben:
Wie soll denn da die mündliche Prüfung aussehen? :shock:

als der ******* von Programmie-Lehrer mir im Zweiten Jahr meiner Ausbildung nur 'ne zwei geben wollte bin ich freiwillig in die Mündliche Prüfung geganen. Das lief dann so ab, dass ich eine Aufgabe gestellt bekahm (in dem Fall einen Sortieralgorithmus (mit ein paar eigenheiten) zu entwickeln und als C(++)-Code zu Papier bringen. Dafür bekahm ich 15 Minuten Zeit. Danach musste ich diesen an der Tafel vor dem Komitee (3 Leute inklusive meines Lehrers) präsentieren. Nachdem wir ein paar Sonderfälle durchgespielt haben mit demen mein Alogo problemlos klar kahm wurde noch eine Musterlösung angeschrieben und ich musst erklähren warum ich nicht so vorgegangen war. Das gelang mir indem ich einen Sonderfall konstruierte der die Musterlösung zum scheitern brachte. Meine Variante war zusätzlich noch ein paar Zeilen kürzer. Ich fand das war ein sehr gelungener Tag. - Habe ich erwähnt das mein Lehrer mir die 2 geben wollte weil meine programme zwar alle funktionierten aber nicht seinen Mustern entsprachen :mrgreen: .

Mündliche Prüfungen sind also absolut möglich.

Gruß
Klabautermann