[Oberon] How to write this program in Oberon-07?

Jörg joerg.straube at iaeth.ch
Mon Jan 24 16:03:08 CET 2022


Hi Joe

 

LOOP/EXIT might seem handy, but for source code readability and maintainability reasons it was neglected.
Use REPEAT or WHILE instead.

If numeric case is not implemented, use IF ELSIF or IF OR instead

Or look into this “elegant” alternative 😊

 

  IMPORT In, Out, Strings;

 …

  In.Char(ch);

  WHILE In.Done DO

    Strings.Search(ch, “AEIOUaeiou”, pos); IF pos >= 0 THEN INC(countVowels) END;

    In.Char(ch)

  END;

 

The Module Strings.Mod is quite portable.

I can send you the Oberon-07 version of it if you don’t have it.

 

br

Jörg

 

Von: Oberon <oberon-bounces at lists.inf.ethz.ch> im Auftrag von Joe Turner <medianjoe at mailfence.com>
Antworten an: ETH Oberon and related systems <oberon at lists.inf.ethz.ch>
Datum: Montag, 24. Januar 2022 um 15:15
An: <oberon at lists.inf.ethz.ch>
Betreff: [Oberon] How to write this program in Oberon-07?

 

I'm working through the book "Into the Realm of Oberon" which is written for Oberon-2. I can't figure out how to translate the following program into Oberon-07 (I'm using the OBNC compiler):

 

MODULE case;

IMPORT In,Out;

 

VAR countVowels: INTEGER; ch: CHAR;

 

BEGIN

  In.Open;

  countVowels:=0;

  LOOP

    In.Char(ch);

    IF ~In.Done THEN EXIT END;

    CASE ch OF

      "a", "e", "i", "o", "u",

      "A", "E","I","O","U": INC(countVowels)

    ELSE

    END;

  END;

  Out.Int(countVowels,0);

  Out.String(" vowels read.");Out.Ln;

END case.

 

Oberon-07 doesn't allow LOOP, EXIT, or ELSE in CASE. 

Thanks in advance for any help.

-- Sent with https://mailfence.com Secure and private email -- Oberon at lists.inf.ethz.ch mailing list for ETH Oberon and related systems https://lists.inf.ethz.ch/mailman/listinfo/oberon 

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.inf.ethz.ch/pipermail/oberon/attachments/20220124/b4eca2de/attachment.html>


More information about the Oberon mailing list