Strona 1 z 1

Jak poprawić ten kod?

: czw cze 29, 2023 2:28 pm
autor: KontoLibreOffice
Jak poprawić składnię tego kodu by działał w LO

Kod: Zaznacz cały

Imports System.Collections.Generic
Module Module1
     Sub Main()
        Dim n1 As Integer
        Dim n2 As Integer
        n1 = 1
        n2 = 1
        Console.WriteLine("{0}", n1)
        While n2 < 500
            Console.WriteLine(n2)
            n2 = n2 + n1
            n1 = n2 - n1
        End While
        Console.ReadLine()
     End Sub
End Module

Re: Jak poprawić ten kod?

: czw cze 29, 2023 8:16 pm
autor: Jan_J
Kod zawiera dość elementarną bezparametrową procedurę (makro) Visual Basica. Jedyny element, jaki „nie pasuje” do StarBasica, to obsługa obiektu Console, czyli wyposażenia makra w dostęp do odpowiednika standardowych strumieni wejścia i wyjścia.

Nie chodzi o składnię języka, tylko o obiekty należące do biblioteki.

Warto inaczej sformułować pytanie:
(1) jak w StarBasicu realizować odpowiedniki czytania i pisania z urządzeń znakowych?
(2) program nie komunikuje się z maszynerią obsługującą dokumenty. Jaki jest sens pisania tego typu skryptów koniecznie akurat w Basicu będącym częścią pakietu biurowego?

Ad (2) każdy „poważny” język skryptowy przeznaczony nie-wyłącznie do obsługi wewnętrznych mechanizmów aplikacji graficznej ma dostęp do standardowych kanałów wejścia i wyjścia tekstowego, dostarczanych przez system operacyjny. Obecnie najpopularniejszym językiem tego typu jest Python. Ale jest ich sporo.

Ad (1) wierzę, że StarBasic, czyli implementacja Basic w Open/LibreOffice także ma taką możliwość. Standardowa funkcja Print albo generuje okno typu MessageBox, albo wypisuje wartość do pliku. Potrzebny byłby obiekt podobny do konsoli (jak w VB), która prezentowałaby efekt dwustronnej komunikacji. Nie znam szczegółów realizacyjnych biblioteki Basica związanych z tym mechanizmem. A już zwłaszcza funkcjonujących w zbliżony sposób w każdym obsługiwanym systemie operacyjnym.