]]> ]]>

GNU Smalltalk

Реализация языка программирования Smalltalk

Реализация Smalltalk-80, являющаяся частью GNU Project. Запускается на большинстве POSIX-совместимых платформ, включая Windows и Linux.

Примеры:

Hello, World!:

Пример для версий gst 3.1
'Hello, World!' printNl.

Факториал:

Пример для версий gst 3.1

В классе Number есть встроенный метод factorial, который здесь и используется.

0 to: 16 do: [ :i |
  i display.
  '! = ' display.
  i factorial displayNl
].

Числа Фибоначчи:

Пример для версий gst 3.1

Используется итеративное определение чисел Фибоначчи.

a1 := 0.
a2 := 1.
0 to: 15 do: [ :i |
  a2 display.
  t := a1 + a2.
  a1 := a2.
  a2 := t.
  ', ' display
]
'...' displayNl.

Квадратное уравнение:

Пример для версий gst 3.1
a := (stdin nextLine) asNumber.
(a == 0)
ifTrue: [
    'Not a quadratic equation.' displayNl.
]
ifFalse: [
    b := (stdin nextLine) asNumber.
    c := (stdin nextLine) asNumber.
    d := (b * b) - (4 * a * c).
    (d == 0)
    ifTrue: [
        'x = ' display.
        ((-1)*b/2/a) displayNl.
    ]
    ifFalse: [
        (d > 0) 
        ifTrue: [
            'x1 = ' display.
            ((-1)*b+(d sqrt)/2/a) displayNl.
            'x2 = ' display.
            ((-1)*b-(d sqrt)/2/a) displayNl.
        ]
        ifFalse: [
            'x1 = (' display.
            ((-1)*b/2/a) display.
            ',' display.
            ((d abs sqrt)/2/a) display.
            ')' displayNl.
            'x2 = (' display.
            ((-1)*b/2/a) display.
            ',' display.
            ((-1)*(d abs sqrt)/2/a) display.
            ')' displayNl.
        ].
    ].
].

CamelCase:

Пример для версий gst 3.1
text := stdin nextLine asLowercase.
text := text replacingAllRegex: '([^a-zA-Z]+)' with: ' '.
cc := ''.
text onOccurrencesOfRegex: '\b(\w+)\b' do: [ :each | 
    word := each match.
    cc := cc,((word copyFrom: 1 to: 1) asUppercase),(word copyFrom: 2 to: (word size)).
].
cc displayNl.

Комментарии

]]>

blog comments powered by Disqus

]]>

Работа программистам