Modules/Console/hy

From vishap oberon compiler
Jump to navigation Jump to search

Deutsch (de) | English (en) | հայերեն (hy)

Console մոդուլը[edit]

Console մոդուլը տրամադրում է պրոցեդուրաներ Unix֊անման համակարգերի ստանդարտ ներածման և արտածման հոսքերի հետ աշխատելու համար։

Ներմուծում[edit]

Տվյալների ներմուծման համար նախատեսված են երկու պրոցեդուրաներ Read և ReadLine։ Read պրոցեդուրան ստանդարտ ներմուծման հոսքից կարդում է մեկ սիմվոլ։ ReadLine պրոցեդուրան կարդում է մեկ տող։ Այս երկու պրոցեդուրաներն էլ արժեքը վերադարձնում են իրեն հղումային արգումենտի միջոցով։

PROCEDURE Read*(VAR ch: CHAR);
PROCEDURE ReadLine*(VAR line: ARRAY OF CHAR);

Արտածում[edit]

Ստանդարտ արտածման հոսքին տվյալների դուրս բերման համար Console մոդուլը տրամադրում է Char, Int, String, Bool և Hex պրոցեդուրաները։

PROCEDURE Char*(ch: CHAR);
PROCEDURE Int*(i, n: LONGINT);
PROCEDURE String*(s: ARRAY OF CHAR);
PROCEDURE Bool*(b: BOOLEAN);
PROCEDURE Hex*(i: LONGINT);

Այս պրոցեդուրաներն իրենց արգումենտում ստանում են համապատասխան տիպի օբյեկտ և ստանդարտ արտածման հոսքի վրա դուրս են բերում օբյեկտի տեքստային ներկայացումը։ Int պրոցեդուրայի երկրորդ արգումենտը ցույց է տալիս, թե արտածելիս քանի դիրք պետք է հատկացնել։

Օժանդակ պրոցեդուրաներ[edit]

PROCEDURE Flush*();
PROCEDURE Ln*;

Օրինակներ[edit]

MODULE hello;

IMPORT Out := Console;

BEGIN

Out.String("Hey"); Out.Ln;
END hello.

Այլ օրինակ

MODULE Fibonacci;
IMPORT Out := Console, Time := oocTime;
VAR n: INTEGER;

PROCEDURE Fibo(n: INTEGER): LONGINT;
VAR f: LONGINT;
BEGIN
    IF n <= 2 THEN
        f := 1
    ELSE
        f := Fibo(n - 1) + Fibo(n - 2)
    END;
    RETURN f
END Fibo;

PROCEDURE WriteFibo(n: INTEGER);
  VAR start, stop: Time.TimeStamp; 
  interval: Time.Interval;
  f: LONGINT;
BEGIN
    Time.GetTime(start);
    f := Fibo(n);
    Time.GetTime(stop);
    stop.Delta(start, interval);
    Out.String("Fibonacci");
    Out.Int(n, 4);
    Out.Int(f, 12);
    Out.Int(interval.msecInt, 12); Out.String(" milliseconds");
    Out.Ln
END WriteFibo;

BEGIN
    FOR n := 32 TO 40 DO WriteFibo(n) END
END Fibonacci.

Այս ծրագիրը կարտածի՝

noch@chinari /tmp $ ./Fibonacci 
Fibonacci  32     2178309          25 milliseconds
Fibonacci  33     3524578          34 milliseconds
Fibonacci  34     5702887          45 milliseconds
Fibonacci  35     9227465          58 milliseconds
Fibonacci  36    14930352          77 milliseconds
Fibonacci  37    24157817         116 milliseconds
Fibonacci  38    39088169         189 milliseconds
Fibonacci  39    63245986         307 milliseconds
Fibonacci  40   102334155         493 milliseconds