Forum: Mikrocontroller und Digitale Elektronik Einfaches Programm auf der Programmiersprache CAPL verstehen


von Hel B. (helbi)


Lesenswert?

Hallo,

ich wollte die Grundlagen von CAPL-Programmiersprache kennenlernen.

Dabei gibt es ein Programmbeispiel. Ich wollte das Beispiel betrachten 
und verstehen wie das Programm Schrittweise funktioniert:


byte binary Array[16]  // Was passiert in der Zeile? Ist hier Datentyp
                          BYTE deklariert mit Array? Was ist 16 ?
int number = 1234;     // Warum gerade 1234? Wie wollten Sie hier mit 
der
                          Variable number benutzen? Was bringt die?
int index = 0;         // Wofür ist die Variable index? Warom ist die =0 
?

while ( number !=0)    //Solange Variable  number ungleich 0
{
   binaryArray[index++]=number % 10;     //Was passiert in der Zeile?
   number = number /10                    Was passiert in der Zeile? Es
                                          wurde aber schon in der
                                          vorherigen Zeile durch 10
                                          geteilt? Warum auch hier?
}


-> REsultat 11010010     wie kommt man aufs Ergebnis?


=======================     ==========================



Und zweites Programmchen: es geht um Beispiel mit Datenyp Funktion:

void PrintMe (int num, char msg[])    //  Wird hier Funktion PrintMe
                                          deklariert? Mit Variablen 1)
                                          num von Typ int und 2) msg von
                                          Typ char.

                                          WElche Rolle spielen die
                                          Variablen? Was bedeuten [] bei
                                          msg?
{
    write ("%d %s",num msg);
}

PrintMe(1,"Fehler");          //Funktionsaufruf    Was bedeutet 1 und
                                "Fehler"?   Wofür sind die?

long Mult(int x, int y)        //Was ist Mult, x, y ?
{
int i;
long result;                    //Was ist result und wofür ist die?
result = 1;

for (i = 1; i <= y; i++)
     result *= x;               //Was passierz in der Zeile?

return result;
}

xy = Mult(2,4);                  //Funktionsaufruf   Warum brauvht man
                                   hier Funktion aufzurufen? Kan man
                                   welchen Ergebnis sehen? Warum xy sind
                                   nebeneinander geschrieben und kein
                                    Zeichen (z.B. *) dazwieschen?

: Bearbeitet durch User
von spess53 (Gast)


Lesenswert?

Hi

> Es wurde aber schon in der vorherigen Zeile durch 10
>geteilt?>number % 10;

heißt

number mod 10

>ich wollte die Grundlagen von CAPL-Programmiersprache kennenlernen.

Was ist denn das? Erinnert mich irgendwie an C

MfG Spess

von 1234567890 (Gast)


Lesenswert?

spess53 schrieb:
> Was ist denn das? Erinnert mich irgendwie an C

CAPL ist eine von Vector Informatik entwickelte Programmier-
sprache, die in den weit verbreiteten Software-Werkzeugen
CANoe und CANalyzer zur Verfügung steht.

von Stefan (Gast)


Lesenswert?

CAPL ist ein unglaublicher Krampf. Das ist VBA noch richtig gut dagegen. 
Sowas kann man nicht als Programmiersprache bezeichnen. Und ja, ich 
weiß, wovon ich spreche.
S.

von JJ (Gast)


Lesenswert?

Im ersten Snippet muss
    byte binary Array[16]
wahrscheinlich
    byte binaryArray[16]
heißen. Damit wird es eine sinnvolle Defnition und weiter unten auch so 
benutzt.

Der Rest sieht eigentlich sehr nach Standard-C aus.

von Erwin D. (Gast)


Lesenswert?

Stefan schrieb:
> CAPL ist ein unglaublicher Krampf. Das ist VBA noch richtig gut
> dagegen.
> Sowas kann man nicht als Programmiersprache bezeichnen. Und ja, ich
> weiß, wovon ich spreche.
> S.

Hat das irgendwas mit der Frage des TO zu tun?
Hilft ihm das irgendwie weiter?

von JJ (Gast)


Lesenswert?

Hel B. schrieb:
> void PrintMe (int num, char msg[])    //  Wird hier Funktion PrintMe
>                                           deklariert? Mit Variablen 1)
>                                           num von Typ int und 2) msg von
>                                           Typ char.
>
>                                           WElche Rolle spielen die
>                                           Variablen? Was bedeuten [] bei
>                                           msg?
> {
>     write ("%d %s",num msg);
> }

PrintMe ist eine Prozedur (= Funktion ohne Rückgabewert) die zwei 
Argumente erwartet. Das erste muss ein Integer sein und wird innerhalb 
der Prozedur als Variable num zur Verfügung gestellt. Das zweite 
Argument ist ein Array aus char Elemeten - sprich ein String.

Hel B. schrieb:
> long Mult(int x, int y)        //Was ist Mult, x, y ?
> {

Das ist jetzt eine Funktion, die ein Ergebnis vom Typ long zurückgibt.

Hel B. schrieb:
> long result;                    //Was ist result und wofür ist die?

einfach nur eine Variable vom Typ long

Hel B. schrieb:
> result *= x;               //Was passiert in der Zeile?

Das, was schon in result steht, wird mit x multipliziert.

Hel B. schrieb:
> xy = Mult(2,4);                  //Funktionsaufruf   Warum brauvht man

xy ist eine neue Variable und wir mit dem Rückgabewert der Funktion 
gefüllt.

von Jim M. (turboj)


Lesenswert?

JJ schrieb:
> Im ersten Snippet muss
>     byte binary Array[16]
> wahrscheinlich
>     byte binaryArray[16]
> heißen. Damit wird es eine sinnvolle Defnition und weiter unten auch so
> benutzt.
>
> Der Rest sieht eigentlich sehr nach Standard-C aus.

Es geht hier aber um eine der vielen C-Erweiterungen...

Um die zu verstehen muss man wohl vorher den K&R gelesen haben, was dem 
OP irgendwie entgangen ist. Und nein, C ist als Programmiersprache nicht 
selbsterklärend.

von W.A. (Gast)


Lesenswert?

Erwin D. schrieb:
> Hat das irgendwas mit der Frage des TO zu tun?
> Hilft ihm das irgendwie weiter?

Er könnte sich überlegen, ob er sinnvoll ist, in diesen Auswuchs von 
Programmiersprache Zeit zu investieren oder ob er damit in eine 
Sackgasse läuft.

Besser könnte er solche Grundlagen anhand einer weit verbreiteten 
Programmiersprache lernen.

von Einer K. (Gast)


Lesenswert?

W.A. schrieb:
> Er könnte sich überlegen, ob er sinnvoll ist, in diesen Auswuchs von
> Programmiersprache Zeit zu investieren
Manchmal hat man die Wahl, manchmal nicht.
Ich durfte auch schon Druckertreiber für Data General AOS/VS erstellen. 
Da war die Wahl auch sehr begrenzt.

JJ schrieb:
> Im ersten Snippet muss
>     byte binary Array[16]
> wahrscheinlich
>     byte binaryArray[16]
Unwahrscheinlich.
Ich vermisse in c auch manchmal binary Arrays.
Die Ausgabe sieht so aus, als wäre das schon richtig so.
(leider kenne ich CAPL nicht gut genug)

von A.H. (Gast)


Lesenswert?

FYI: Die Beispiele scheinen aus diesem Uni-Übungsskript zu kommen:

http://www.ias.uni-stuttgart.de/lehre/praktika/automatisierung/unterlagen/06-Kurzanleitung_CAPL-v10_de.pdf

Dort steht auf Seite Seit 8:

    byte binaryArray[16]

statt wie oben

    byte binary Array[16]

Das zweite Beispiel von Seite 10 enthält aber auch im Original den 
Tipfehler des fehlenden Kommas bei "write".

von JJ (Gast)


Lesenswert?

Oh, machen wir hier wieder Hausaufgaben für andere?

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.