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