Linguagem de programação Fortran 77

 
 

Parte II - Estruturas de controle

Sumário:
  • Introdução
  • Seleção ou decisão
  • Seleção simples
  • Seleção composta
  • Expressões lógicas combinadas
  • Repetição
  • Repetição com variável de controle
  • Exercício
 

Introdução

As estruturas de controle determinam o curso de ações de um algoritmo. Nesta parte, serão analisadas as estruturas seletiva e repetitiva, ou seja, o desvio do fluxo de execução e o fluxo repetitivo de execução de instruções do programa.

 
 

Seleção ou decisão

Seleção ou decisão é a habilidade que o sistema possui para escolher uma ação de um conjunto de alternativas específicas. Os comandos de seleção do fortran são: if...then e if...then...else. O primeiro chamado de seleção simples e o segundo de seleção composta.

 
 

Seleção simples

Testa uma expressão lógica. Caso seja verdadeira, o conjunto de instruções que segue a expressão é executado.
Estrutura do comando:
Exemplo:

Ler dois valores numéricos, efetuar a soma e apresentar a mensagem "soma maior que dez" caso o resultado da adição seja maior que 10.

A sintaxe de linha única dispensa o uso dos termos then e endif. A condição acima escrita nas linhas 6 a 8 poderia ser codificada, ocupando uma só linha, como segue:

if (soma.gt.10) write(*,*) 'soma maior que dez'

Uma outra forma de desvio é usando uma expressão numérica em lugar de uma variável através do chamado if aritmético ou if com deslocamento.

Exemplo:

Se a condição (k-3), na linha 4, resultar em um valor menor que zero, será executado o comando de label 10 da linha 5; se (k-3) resultar em zero, o sistema executará o comando de label 20 da linha 7; se o resultado da condição (k-3) for maior que zero, a instrução de label 30 será executada. Em cada caso, a instrução seguinte a ser executada é a de label 50 continue da linha 10 e, em seguida, o sistema finaliza executando os comandos das linha 11 e 12.

No exemplo acima, à variavel k fora atribuído o número 3, k=3, na linha 3. A avaliação efetuada na linha seguinte: if (k-3) resulta em 0, desviando o fluxo de execução para linha 7 de label 20. O sistema imprime o literal k = 0 como resultado e a instrução goto 50, da linha 8, encaminha a execução para o encerramento do programa.

 
 

Seleção composta

Avalia uma expressão lógica e caso ela seja verdadeira, o conjunto de instruções após a palavra then é executado. Caso a expressão seja falsa, o código ou os códigos que seguem a palavra else serão executados.
Estrutura do comando:
Exemplo:

Efetuar o cálculo da média aritmética das notas de três provas e avaliar a situação quanto à aprovação. Se a média for maior ou igual a 6.0, escrever a expressão (Aprovado), caso contrário, (Reprovado).

Na linha 6, o sistema testa o conteúdo da variável media apurada na linha 5 e se for maior ou igual a 6.0, será mostrada como saída a palavra (Aprovado), caso contrário, será exibida a palavra (Reprovado).

 
 

Expressões lógicas combinadas

As expressões lógicas que redundam apenas no valor .true. ou .false. podem ser combinadas, utilizando-se operadores relacionais e lógicos.

Exemplo:

Escrever uma programa que receba um número inteiro entre 0 e 5 e determinar se esse valor é par ou impar. Caso o usuário digite um número fora dos limites citados, informar essa condição de erro.

A instrução da linha 6 testa se o número informado n é maior que 0 (zero) e menor que 5, efetuando uma crítica de validade do dado de entrada. Se esta avaliação lógica resultar em falso ocorrerá uma condição de erro e o comando da linha 13 será executado, apresentando como informação de saída a palavra Errado e encerrando o processo, em seguida.

Se o teste lógico da linha 6 resultar em verdadeiro, ou seja, o valor de n está entre 0 e 5, a instrução seguinte, também de teste lógico, será executada para verificar se o número é par, ou seja, se é igual a 2 ou igual a 4. Em caso positivo (verdade) o sistema mostra na saída o termo Par constante na linha 8, caso contrário, o termo Impar da linha 10 e finaliza o processo em ambos os casos.

 
 

Repetição

A repetição é uma poderosa habilidade, ao lado da decisão, que o sistema tem para repetir um conjunto de ações específicas.
Estrutura do comando:

Repete a execução de comandos enquanto uma dada condição for verdadeira ou , em outras palavras, enquanto a expressão lógica for verdadeira os comandos internos ao do while serão repetidos.

Exemplo:

Multiplicar dois números inteiros fornecidos pelo usuário e apresentar o resultado, repetindo esse processamento por tantas vezes quantas forem a necessidade do usuário.

Enquanto a variável resp for igua a "s" os comandos inseridos entre do while e end do serão executados sucessivamente até que o usuário entre com um caractere diferente de "s".

 
 

Repetição com variável de controle

Estrutura do comando:

Repete a execução de comandos enquanto uma condição for verdadeira. A variável de controle "var" recebe um valor inicial e a cada iteração do comando ela é atualizada de acordo com o conteúdo de "incremento ou decremento" até alcançar o "limite" estabelecido. Ao atingir o "limite", o fluxo de execução é desviado para a instrução continue do label informado. Se o "incremnento/decremento" não for especificado pelo programador, o sistema incrementa, automaticamente, uma unidade em "var" a cada iteração efetivada.

Exemplo:

Efetuar a somatória de dez números inteiros quaisquer informados pelo usuário e escrever o resultado.

À variável de controle i é atribuido o valor inicial 1 e depois ela vai sendo incrementada de uma unidade, por padrão, a cada iteração. Ao atingir o valor 10 o sistema desvia o fluxo para o comando continue do label 100, executa os dois comandos seguintes e encerra o programa.

Informando os números 0 a 9 como entrada para o programa obtem-se o resultado mostrado na janela a seguir:

Pontos a considerar no comando do label:

  • deve ser determinada uma variável de controle e os valores inicial e final;
  • o sistema incrementa a variável de controle de 1 em 1 por padrão, no entanto, pode-se definir outro valor inteiro para o incremento ou decremento;
  • tipicamente, este comando é usado quando se sabe o número de iterações a serem executadas.
 
 

Exercícios

  1. Fazer um programa para receber dois números distintos como entrada e escrever o maior deles.

  2. Fazer um programa que receba o ano de nascimento de uma pessoa e o ano atual. Calcular a idade dessa pessoa e exibi-la juntamente com a mensagem relativa à capacidade jurídica que trata o código civil:
    • idade menor ou igual a 16 - Absolutamente incapaz
    • idade maior que 16 e menor ou igual a 18 - Relativamente incapaz
    • idade maior que 18 - Capaz

  3. Uma determinada empresa decide reajustar os vencimentos de seus funcionários, proporcionando um aumento de 10% aos que percebem até R$ 600,00 e 4,5% aos que ganham acima desse valor. Construir um programa para obter o salário de um funcionário e escrever o valor do salário reajustado.

  4. Fazer um programa para escrever a tabuada de 1 a 10 do número fornecido pelo usuário, utilizando as duas estruturas de repetição estudadas.

  5. Elaborar um programa para gerar e escrever certa quantidade de termos da série de Fibonacci. (A quantidade de termos será fornecida pelo usuário). A série de Fibonacci é formada pela seguinte seqüência: 1, 1, 2, 3, 5, 8, 13, 21 ..., de modo que o próximo termo é obtido pela soma dos dois imediatamente anteriores.

  6. Em uma pesquisa realizada junto aos habitantes de uma região foram coletados os seguintes dados: idade, sexo (m/f) e salário.
    Fazer um programa para calcular e informar:
    • maior e menor idade do grupo;
    • média de salário do grupo;
    • percentual de homens.
    Encerrar a entrada de dados ao ser digitado zero na idade.