SMALLTALK: FUNDAMENTOS DA LINGUAGEM - PARTE 2

Como já vimos, para declarar o "return" de métodos colocamos um (^) circunflexo na frente da variável cujo valor será retornado. É importante que a linha de código contendo o símbolo seja a última porque, se ele é encontrado, o método é encerrado.

Na realidade não precisamos usar o símbolo na frente de uma variável isolada. Pode ser na frente de uma linha de código como:

            ^x := y + 29.       "retorna o valor de x"

Opa! Vimos aí que comentários são colocados dentro de aspas. Use bastantes comentários. São a melhor documentação.

Se você usa uma variável como parâmetro, na designação do método, não precisa declará-la (entre barras) dentro do método:

              aMethod: aParameter
               
              ^aParameter * 45

No Smalltalk a montagem de um IF THEN é um pouco diferente. Veja um exemplo:

      | x y |
      x := 1.
      y := 2.
      (x > y)
         ifTrue: [
          "faz alguma coisa".
                        ]
         ifFalse: [
          "faz alguma coisa".
            ].

Claro que você pode escrever várias linhas de código dentro das chaves.

Para comparações, usamos:

      >      "greater than"
      <      "less than"
      =      "igual em valor"
      ~=     "não igual em valor"
      >=     "greater than ou igual"
      <=     "less than ou igual"

O operador "==", usado em comparação, verifica se os dois objetos são o mesmo e não se têm igual valor.

E os operadores de AND e OR são mostrados nesses exemplos:

     (a > 0) & (b < 0)     "Retorna true se a é positivo
                             e b é negativo. Caso contrário: false."

      (a > 0) | (b < 0)     "Retorna true se a é
                             positivo ou b é negativo."

Você pode usar o símbolo de "return" dentro de uma comparação:

         (m < n)
         ifTrue: [^m]
         ifFalse:[^n]

Isso fará retornar o valor de n se n é maior do que m , senão retorna o valor de m .

Dissemos que para declarar um string se usa apóstrofos. Você pode declarar um "caracter" usando o símbolo "$" precedendo-o:

                  someChar := $K.

Um número não pode começar com ponto decimal como em outras linguagens. Nem terminar.

  
                  someValue := .57 "ERRO!!!!!!!"

Os sinais de operações aritméticas são:

       +      "adição"
       -      "subtração"
       *      "multiplicação"
       /      "divisão"
       //     "divisão com truncagem"
       \\     "resto da divisão"
Alguns exemplos de operações matemáticas. Você pode testar usando Workspace+Transcript, como vimos na aula passada.
       5 + 4.      "retorna 9"

       9 // 4.     "retorna 2"

       9 \\ 4.     "retorna 1"

       | x y |
       x := 5.
       y := 7.
       x * y       "retorna 35"

Em Smalltalk, nil significa "nada". Toda variável declarada tem, inicialmente o valor nil .

O usual LOOP FOR é declarado assim:

1 to: último-valor do: [
:i | i+1. 

"fazer alguma coisa" 

 ]

Isso pode ser confuso para programadores de Java ou C. Vamos ver exemplos comparativos:

Para:

    for(i=1; i<=4; i++){
      x = i*5;
    }
em Smalltalk teriamos:
   1 to:4 do: [
    : i | i+1.
     x   := i*5.
   ]

Vamos então a um exemplo de LOOP WHILE em Smalltalk:

 
      x := 5.
      y := 0.
      [y <= x] whileTrue: [
      "fazer alguma coisa".
        y := y + 1
      ].

Teremos 6 roundtrips.

Reconheço que para velhos programadores - como eu, dos "tempos do Cobol" - pode ser difícil, no início.


              LIÇÃO ANTERIOR       PRÓXIMA LIÇÃO             
ÍNDICE HOMEPAGE