Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - FAQ - Zum CC1-Forum - Zum CC-Pro-Forum

Re: Array füllen Kategorie: Programmierung (von Dietmar Weickert - 6.02.2004 10:26)
Als Antwort auf Re: Array füllen von TN - 5.02.2004 21:39

> >
> > Hallo TN!
> >
> > Zunächst einmal trenne die Eingabefunktion von der Verwertung der Tastendrücke:
> >
> > function NumTaste returns byte {
> >
> > byte myCode;
> >
> > do { myCode=rbkeyb.get(); } while (myCode & 0xF0) != 0x30;  // Alles nicht-numerische überlesen
> >
> > return myCode & 0x0F;  // Wert der getippten Zahl zurück geben
> >
> > }
> >
> > Um jetzt dein v als Ergebnis dreier eingetippter Ziffern zu berechnen genügt eine einfache Zuweisung:
> >
> > v = NumTaste() * 100 + NumTaste() * 10 + NumTaste();  // Drei Tasten lesen und verwerten
> >
> > Das Ganze ist jetzt sehr rasch hinein getippt und ohne Test. Sorry für allfällige Fehler. Aber vom
> > Prinzip kannst du es so verwenden.
> >
> > Beste Grü�e,
> > Dietmar.
> >
> Hallo,
>
> ich habe die Funktion geändert:
> //*******************************************//
> function NumTaste (int myCode)returns int
> //*******************************************//
> {rbkeyb.select(0);
> do { myCode=rbkeyb.get(); }
>    while (myCode & 0xF0) != 0x30;  // Alles nicht-numerische überlesen
>
> return myCode & 0x0F; }// Wert der getippten Zahl zurück geben
>
> und bin auf "int" umgestiegen. byte geht doch nur bis 255.
> Ist das richtig?
> Der Aufruf erfolgt dann durch:
> v = NumTaste(r)* 100 +NumTaste(r)* 10 + NumTaste(r);}
>
> "r" ist dabei als globale int Variable definiert.
>
> Kann das so funktionieren?
>
> GruÃ? TN
>

Hallo!

Ja, das kann funktionieren! Aber warum machst du aus einer Variable einen Parameter (myCode)?
Da die Funktion keinen Eingangsparameter braucht, ist das nichts anderes als schlechter
Programmierstil, weil jemand, der dein Programm lesen soll, es bestimmt nicht gleich versteht.

Die Variable r bringt nichts. Für myCode wird ja sowieso auf dem Stack ein Platz reserviert, du
könntest also genau so gut beim Aufruf NumTaste(5) statt NumTaste(r) schreiben. myCode wird ja
sowieso sofort mit einem anderen Wert überschrieben.Und ob r global oder lokal definiert wird, macht
keinen Unterschied, solange du r nicht in anderen Funktionen oder Modulen verwenden möchtest.

Du kannst natürlich von byte auf int umstellen, verschwendst aber dabei nur Speicher. Zeichen werden
immer in Bytes dargestellt (zumindest in der C2). Beim Einsatz von int verwendest du ein High-Byte
zusätzlich, dass immer den Wert 0 enthält. Gerechnet wird sowieso mit int-Genauigkeit, also 2 Bytes.
Es genügt daher, dass v den Typ int hat.

Ich weiÃ? nicht, mit welchen Sprachen du bisher programmiert hast, aber das Konzept der Funktion
mit eigenem Stack-Bereich scheint dir nicht vertraut zu sein. Ich würde dir empfehlen, dich hier
zumindest etwas einzulesen. Bücher zu diesem Thema gibt es zuhauf, da findest du bestimmt schnell
etwas, womit dir geholfen ist. (Es muss nichts Spezifisches für die CC2 sein, die Prinzipien sind bei
allen prozeduralen Sprachen gleich. Nimm dir irgendein Buch über die Grundlagen von C, C++, C#
oder Java.)

Beste Grü�e,
Dietmar.


    Antwort schreiben


Antworten:

Re: Array füllen (von TN - 6.02.2004 13:55)