INSTRUÇÕES BÁSICAS As instruções básicas em Lógica de Programação variam de acordo com a linguagem utilizada como base para o ensino. As linguagens-base normalmente utilizadas são BASIC, Pascal e C, e suas respectivas instruções são "traduzidas" para o Portugol (linguagem em que normalmente escrevemos os algoritmos). Usarei uma sintaxe que pode não corresponder a uma ou mais das linguagens-base citadas, mas o foco aqui é explicar o que cada instrução faz e quando ela é necessária ou não. Basicamente as instruções se dividem em três grupos: de decisão, de iteração e diversas. As instruções de decisão permitem o desvio de fluxo na execução do algoritmo de acordo com condições pré-estabelecidas. Já as instruções de iteração permitem repetir um determino trecho do algoritmo de acordo com uma condição (iteração condicional) ou de acordo com um número de vezes fixo (iteração definida). As instruções diversas referem-se a instruções como as usadas para declaração de variáveis, funções e/ou bibliotecas; para o retorno de valores; etc. Vale ressaltar que estas últimas (instruções diversas) não são o foco deste tutorial. Nas definições, as partes descritas entre colchetes ([]) são opcionais e as descritas entre menor e maior (<>) são valores ou variáveis a serem passados. Instruções de Decisão São as instruções que permitem desviar o fluxo de execução de acordo com condições pré-estabelecidas. São elas: SE <condição> ENTÃO
...
[SENÃO
...]
FIM-SE
SELECIONE <valor>
CASO <valor1>:
...
CASO <valor2>:
...
[CASO CONTRÁRIO:
...]
FIM-SELECIONE
Instruções de iteração
São as instruções que permitem repetir um determino trecho do algoritmo de acordo com uma condição (iteração condicional) ou de acordo com um número de vezes fixo (iteração definida). São elas:
{Iteração Condicional}
ENQUANTO <condição> FAÇA
...
FIM-ENQUANTO
REPITA
...
ATÉ <condição>
{Iteração Definida}
PARA <variável> DE <i> ATÉ <j> [PASSO <n>] FAÇA
...
FIM-PARA
PARA CADA <variável> EM <vetor> FAÇA
...
FIM-PARA
Exemplos
a) Verificando se dois números lidos são iguais ou não:
ESCREVA("Digite o primeiro número:")
LEIA(x)
ESCREVA("Digite o segundo número:")
LEIA(y)
SE x=y ENTÃO
ESCREVA("Eles são iguais!")
SENÃO
ESCREVA("Eles não são iguais!")
FIM-SE
B) Checando qual das opções foi escolhida:
ESCREVA("1 - Cadastrar aluno")
ESCREVA("2 - Procurar aluno")
ESCREVA("3 - Excluir aluno")
ESCREVA("4 - Sair")
LEIA(opção)
SELECIONE opção
CASO 1:
ESCREVA("Você escolheu a primeira opção!")
CASO 2:
ESCREVA("Você escolheu a segunda opção!")
CASO 3:
ESCREVA("Você escolheu a terceira opção!")
CASO 4:
ESCREVA("Você escolheu a quarta opção!")
CASO CONTRÁRIO:
ESCREVA("Você escolheu uma opção inválida!")
FIM-SELECIONE
c) Obter um valor que seja maior do que zero. O número deve ser requisitado novamente caso seja menor ou igual a zero:
valor = 0
ENQUANTO valor<=0 FAÇA
ESCREVA("Digite um valor maior que zero:")
LEIA(valor)
FIM-ENQUANTO
ESCREVA("Você digitou o número ", valor)
d) Ler uma lista de nomes até que o nome preenchido seja vazio (""):
REPITA
ESCREVA("Digite o nome:")
LEIA(nome)
ATÉ nome=""
e) Mostrar os números de 1 até 99:
PARA i DE 1 ATÉ 99 FAÇA
ESCREVA(i)
FIM-PARA
f) Mostrar os valores de um vetor:
frutas = ["maçã", "banana", "mamão"]
PARA CADA fruta EM frutas FAÇA
ESCREVA(fruta)
FIM-PARA Considerações finais É importante compreender que estas instruções são como as ferramentas que um pedreiro utiliza para construir uma casa. Você pode combiná-las a vontade para obter os resultados desejados. E elas também são intercambiáveis, ou seja, você também pode substituir umas pelas outras (por exemplo, um ENQUANTO pode ser usado no lugar de um REPITA, e vice-versa; ou um PARA no lugar de um PARA CADA, e vice-versa). Algumas dicas para escolher qual instrução usar dependendo do caso: 1 - num caso de decisão, se o objeto de decisão é o mesmo e este pode possuir mais do que dois valores, sendo importante distinguí-los, então prefira a estrutura SELECIONE ao invés da estrutura SE. Este é o caso do exemplo "b"; 2 - Se você já tem definido valores iniciais e finais ou a quantidade de vezes, então prefira uma estrutura PARA ao invés de uma estrutura ENQUANTO. Este é o caso do exemplo "e"; 3 - Ao percorrer os elementos de um vetor, lista ou coleção é bem mais prático usar um PARA CADA do que um PARA. Este é o caso do exemplo "f"; 4 - Quando não se sabe a quantidade exata de vezes que um determinado código deve ser executado, utilize uma estrutura ENQUANTO ou REPITA ao invés de uma estrutura PARA. Este é o caso dos exemplos "c" e "d"; 5 - Quando a condição da iteração dependente de uma leitura de dados, o REPITA é mais adequado já que permite que a mesma seja feita *antes* da verificação da condição. Este é o caso do exemplo "d". Resumo: Instrução de decisão SE... ENTÃO: Verifica se uma determinada condição é verdadeira, e caso positivo executa o seu bloco de código; caso negativo, havendo uma instrução SENÃO, o bloco de código desta é executado; caso negativo, e não havendo uma instrução SENÃO; o código continuará a partir do final da estrutura (após o FIM-SE). Instrução de decisão SELECIONE... CASO: Executa o bloco de código do caso correpondente ao valor da variável passada; havendo uma instrução CASO CONTRÁRIO, e o valor não corresponda a nenhum dos casos descritos, o bloco desta será executado. Instrução de iteração ENQUANTO... FAÇA: Executa o bloco de código enquanto a condição passada for verdadeira. A cada iteração (volta ou loop) a condição é testada novamente e quando a mesma se torna falsa, a execução do bloco é interrompida. Instrução de iteração REPITA... ATÉ: Executa o bloco de código até que a condição passada seja verdadeira. A cada iteração (volta ou loop) a condição é testada novamente e quando a mesma se torna verdadeira, a execução do bloco é interrompida. Instrução de iteração PARA: Executa o bloco de código variando a variável passada de acordo com os valores iniciais e finais determinados. Opcionalmente, a cláusula PASSO pode definir o nível de incremento (de 2 em 2, por exemplo) ou o nível de decremento (-1 para uma iteração reversa). Instrução de iteração PARA CADA: Executa o bloco de código variando a variável passada de acordo com o valor da posição correspondente no vetor/coleção/lista passado. ------------------------------------ Escrito por: Washington C. Corrêa Jr. (14/10/2006 - Brasil) Qualquer correção, crítica, ou acréscimo são bem-vindos! Abraços, Graymalkin