Anzeige:
Ergebnis 1 bis 2 von 2

Thema: Problem mit oberon - prozedur

  1. #1
    Kuesschen
    Gast

    Question Problem mit oberon - prozedur

    ich hätte da eine frage zu der sprache oberon.
    es geht um eine prozedur bei der man großbuchstaben in kleinbuchstaben umwandelt.
    Hier das Programm:

    VAR s: ARRAY 80 OF CHAR;
    s:= "Ursula Engelen-Kiefer";
    ToLower (s);
    Write.String(s)

    PROCEDURE ToLower (VAR s: ARRAY OF CHAR)
    VAR i : INTEGER;
    BEGIN
    i:=0;
    WHILE (i < LEN (s)) & (s[i] # OX ) DO
    IF (s[i] >= "A") & (s[i] <= "Z") THEN
    s[i] := CHR (ORD ("a") + ORD (s[i]) - ORD ("A") ) ;
    END;
    INC (i);
    END;
    END ToLower;

    Meine Frage:
    Ich verstehe die Zeile mit den Ordnungsnummern nicht
    s[i]:= CHR (ORD ("a") + ORD (s[i]) - ORD ("A")
    bedeutet hier CHR auch character oder etwas anderes und wieso muss ich a + s[i] - A rechnen?
    Ich hoffe es kann mir jemand weiterhelfen !
    Vielen lieben Dank schon mal!
    Grüßle Kuesschen

  2. #2
    Registrierter Benutzer
    Registriert seit
    14.09.2002
    Ort
    Bruchsal
    Beiträge
    164
    Oberon?!? Hat eine ziemliche Ähnlichkeit zu Pascal

    Naja, dein Problem ist aber unabhängig von der Programmiersprache
    Intern interpretiert dein Computer Zeichen als ganze Zahlen von 0 bis 255. "A" entspricht der Zahl 65, "a" der Zahl 97 (die Werte kannst du in jeder ASCII-Tabelle nachlesen). Stellen wir nun die Rechnung
    Code:
    ORD ("a") + ORD (s[i]) - ORD ("A")
    mal ein bisschen um:
    Mit ORD("a") - ORD("A") wird die Differenz zwischen den entsprechenden Zahlenwerten ausgerechnet, die ist 32. Wir müssen also zur Zahlenentsprechung von "A" 32 hinzuaddieren, um die Zahlenentsprechung von "a" zu erhalten.
    Addierst du nun also diesen Wert zur Zahlenentsprechung eines beliebigen Grossbuchstabens, so erhältst du den Zahlenwert des zugehörigen Kleinbuchstaben.
    Mit CHR(wert) wird die Programmiersprache angewiesen, diese Zahl als ASCII-Zeichen zu handhaben.

    Beispiel:
    B entspricht 66
    Code:
    ORD("B") + 32 = ORD("b") 
    66           + 32 = 98
    CHR(98) = "b"
    Hoffe, dir geholfen zu haben, für ein besseres Verständnis wirf noch einen Blick auf diese ASCII-Tabelle.

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •