Você está na página 1de 38

Estrutura de Controlo

• Estrutura Sequencial
• Comandos de entrada e saída de dados
• Estrutura de Selecção
• Estrutura de Repetição
Estrutura Sequencial

A estrutura sequencial de um algoritmo corresponde ao facto de que o conjunto


de acções primitivas será executado em uma sequencia linear de cima para baixo e
da esquerda para direita.

Ex.:
//ALGORITMO Exemplo_Sequencial

INICIO
acção 1
acção 2
.
.
.
acção n
fimalgoritmo
Comandos de entrada e saída de dados

O computador não é uma máquina isolada, pois ele precisa se


comunicar com o mundo exterior através do vídeo, impressora,
teclado, discos, etc. Para realizar esta comunicação existem comandos
que permitem que informações sejam exibidas, como também existem
comandos que permitem que informações sejam colocadas na memória
do computador através do teclado do PC. Com esta finalidade,
utilizaremos os comandos de entrada e saída.

Os comandos que iremos estudar são:


LEIA(Receba)
ESCREVA(Mostre)
Comandos de entrada e saída de dados
Exemplos:

1. Escreva um algoritmo para ler um valor numérico do teclado e atribui-lo a uma variável de tipo
numérica.

// Algoritmo LerNumero
inteiro num
inicio
LEIA(num)
fimalgoritmo
2. Escreva um algoritmo para escrever na tela uma mensagem

//Algoritmo EscreveMsg
//Algoritmo EscreveMsg
string msg
inicio
ou inicio
ESCREVA(“Olá Programadores”) msg “Olá Programadores”
ESCREVA(msg)
fimalgoritmo
fimalgoritmo
Estrutura Sequencial

Ex. 2: Faça um algoritmo que calcule a média aritmética entre 3 notas quaisquer
fornecidas por um utilizador.

Sol.
//ALGORITMO media

real N1, N2, N3, MA

inicio
//Entrada de dados
LEIA (N1,N2,N3)

//processamento
MA  (N1+N2+N3)/3

//Saída de dados
ESCREVA(MA)
fimalgoritmo
Estrutura de Selecção

Uma estrutura de selecção permite a escolha de um grupo de


acções (bloco) a ser executado quando determinadas
condições, representadas por expressões lógicas ou
relacionaionais são ou não satisfeitas.

As principais estruturas de decisão são:


 Selecção simples
 Selecção composta
 Selecção encadeada
Selecção Simples

Se <condição> Então

A estrutura de Selecção "Se <condição> então" normalmente


vem acompanhada de um comando, ou seja, se determinada
condição for satisfeita pelo comando “Se” então executa
determinado comando.

se <condição> então
comando
fim_Se
Exemplo1 (Se … Então)
O algoritmo abaixo determina que o aluno estará aprovado somente se a sua
média for maior ou igual a 10.0.

//ALGORITMO media

real N1, N2, N3, MEDIA

inicio
//Entrada de dados
LEIA (N1,N2,N3)

//processamento
MA  (N1+N2+N3)/3
Se (MEDIA >= 10.0) Então
ESCREVA “APROVADO”
Fim_Se
//Saída de dados
ESCREVA(MA)
fimalgoritmo
(em fluxograma)

Em diagrama de blocos ficaria assim:

Sim
Aprovado

Não
Estrutura de Selecção

Selecção composta “Se <condição> Senão ”

A estrutura de Selecção "Se … Senão", funciona


exactamente como a estrutura "Se Então", com apenas uma
diferença, em "Se…Então" somente podemos executar
comandos caso a condição seja verdadeira, diferente de
"Se … Senão" pois sempre um comando será executado
independente da condição, ou seja, caso a condição seja
"verdadeira" o comando da condição será executado, caso
contrário o comando da condição "falsa" será executado
Exemplo 2 ( Se … Senão)

//ALGORITMO media

real N1, N2, N3, MEDIA


inicio
//Entrada de dados
LEIA (N1,N2,N3)
//processamento
MA  (N1+N2+N3)/3
Se MÉDIA >= 10.0 Então
ESCREVA “APROVADO”
Senão
ESCREVA “REPROVADO”
Fim_Se
ESCREVA(MA)
fimalgoritmo
(em fluxograma)

Em diagrama Se (media >= 10.0 ) então


Media
Não >=10.0 Sim ESCREVA “ Aprovado(a)”

Senão
Reprovado
Aprovado
ESCREVA “ Reprovado(a)”

Fim_Se

No exemplo acima está sendo executada uma condição que, se for verdadeira,
executa o comando "APROVADO", caso contrário executa o segundo comando
"REPROVADO".

Podemos também dentro de uma mesma condição testar outras condições.


Estrutura de selecção encadeada

Selecção encadeada ocorre quando uma determinada


acção ou bloco deve ser executado se um grande
conjunto de possibilidades ou combinações de situações
for satisfeita.
Selecção Encadeada Heterogênea

A estrutura de selecção encadeada heterogênea


ocorre quando não conseguimos identificar um
padrão lógico de construção em uma estrutura de
selecção encadeada.
Se <condição 1>
Então
Se <condição 2>
Então
Inicio // bloco verdade 1
comando 1

comando n
Fim // bloco verdade 1
Fim_Se
Senão
Se <condição 3>
Então
Inicio // bloco verdade 2
comando 1

comando n
Fim // bloco verdade 2
Senão
Se <condição 4>
Então
Se <condição 5>
Então
comando V // Comando Verdade
Fim_Se
Senão
comando F // Comando Falsidade
Fim_Se
Fim_Se
Fim_Se
Selecção encadeada Heterogênea

Exemplo
Dados três valores A, B, C, verificar se eles podem ser os comprimentos dos
lados de um triângulo, se forem, verificar se compõem um triangulo equilátero,
isósceles ou escaleno. Informar se não compuserem nenhum triângulo.

Análise:
Triângulo: (A<B+C) e (B<A+C) e (C < A+B) // Todos lados iguais
Equilátero: (A=B) e (B=C)
Isósceles: (A=B) ou (A=C) ou (B=C) //dois lados iguais
Escaleno: (A<>B) e (B<>C) e (A<>C) // todos lados diferentes
Selecção Encadeada Heterogênea – cont.
//Algoritmo triangulo

inteiro A, B, C

INICIO
ESCREVA “ Introduza os valores dos lados A, B, C “
LEIA (A,B,C)
SE (A<B+C) ) e (B<A+C) e (C < A+B)
Então
SE (A=B) e (B=C)
Então
ESCREVA “ Triângulo Equilátero”
SENÃO
Se (A=B) ou (A=C) ou (B=C)
Então
ESCREVA “ Triângulo Isósceles”
Senão
ESCREVA “ Triângulo Escaleno”
Fim_Se
Fim_Se
SENÃO
ESCREVA “ Estes valores não formam um triângulo”
FIM_SE
fimalgoritmo
Selecção encadeada Homogênea

Chamamos de estrutura de selecção encadeada


homogénea a construção de diversas estruturas de
Selecção encadeadas que seguem um determinado
padrão lógico.
Selecção encadeada Homogênea – Se Então Se

Suponhamos que pretendemos executar um comando cmd num algoritmo


se forem satisfeitas as condições condição1, condição2, condição3. Então
temos:
Se < condição1 >
Então Se < condição2> Esta construção segue um padrão:
Então Se < condição3>  Após cada Então existe outro Se
Então cmd;  Não existem “Senões”
Fim_Se  O cmd é executado somente
Fim_Se quando todas as condições forem
Fim_Se ao mesmo tempo Verdadeiras

Equivalente a:

Se (<condição1> e <condição2> e <condição3> )


Então cmd;
Fim_Se
Selecção encadeada Homogênea – Se Senão Se

Suponhamos que em determinado algoritmo uma variável X possa


assumir apenas 3 valores, V1, V2 e V3, e que exista um comando
diferente que será executado para cada valor armazenado em X:
Se ( X = V1 ) Não se trata de uma estrutura encadeada
Então C1 Todas as condições serão avaliadas, portanto ocorrerá
Fim_Se testes desnecessário
Se (X = V2 ) Para reduzir a quantidade de testes será necessário
Então C2 transforma-lo em estrutura encadeada
Fim_Se
Se (X = V3 )
Se ( X = V1 )
Então C3 Então C1
Fim_Se Senão Se ( X = V2 )
Então C2
Senão Se ( X = V3 )
Então C3
Fim_Se
Fim_Se
Fim_Se
Selecção de multipla escolha:
ESCOLHA … CASO

Quando um conjunto de valores discretos precisa ser testado e acções


diferentes são associados a esses valores, estamos diante de uma selecção
encadeada homogénea do tipo Se-Senão-Se.
Esta situação é frequente na construção de algoritmos que dependem de
alternativas, logo, utilizaremos uma específica para estes casos, a selecção de
múltipla escolha.

Escolha X
caso V1: C1; Caso o conteúdo da variável X seja igual ao
caso V2: C2; valor Vn, então, o comando Cn será
caso V3: C3; executado; caso contrário, serão
Fim_escolha inspeccionados os outros casos até ser
encontrada uma igualdade ou terminarem os
casos.
Selecção de multipla escolha – Cont.

 Para executar um comando que possui mais de um valor em


que se verifica sua necessidade, agrupamos todos esses
valores em um único caso.
 Para executar um comando que se verifica com todos os
valores, excepto os discriminados caso a caso, incluímos
outra situação: caso contrário

Escolha X
caso V1: C1;
caso V2,V3: C2;
caso V4: C3;
caso contrário: C4;
Fim_escolha
Exemplo

Construa um algoritmo que, tendo dados de entrada o preço de um


produto e o seu código de origem, mostre o preço junto da sua
procedência. Caso o código não seja nenhum dos especificado, o produto
deve ser encarado como importado. Siga a tabela de códigos a seguir:

Código de Origem Procedência

1 Cunene
2 Uíge
3 Moxico
4 Benguela
5 ou 6 Lunda Norte
7, 8 ou 9 Kuando Kubango

10 até 20 Huambo
25 até 30 Cabinda
Exemplo
//Algoritmo preco_origem
real preco
inteiro origem
INICIO
leia(preco, origem)
escolha origem
caso 1: Escreva(preco, “ – produto do Cunene”)
caso 2: Escreva(preco, “ – produto do Uíge”)
caso 3: Escreva(preco, “ – produto do Moxico”)
caso 4: Escreva(preco, “ – produto de Benguela”)
caso 5,6: Escreva(preco, “ – produto de Lunda Norte”)
caso 7,8,9: Escreva(preco, “ – produto de Kuando Kubango”)
caso 10 … 20 : Escreva(preco, “ – produto de Huambo”)
caso 20 … 30 : Escreva(preco, “ – produto de Cabinda”)
caso contrário: Escreva(preco, “ – produto Importado”)
fim_escolha
FIM
Exercícios
1. Escreva um algoritmo que leia três valores inteiros e diferentes e
mostre-os em ordem decrescente. Utilize para tal uma selecção
encadeada.
2. Desenvolva um algoritmo que calcule as raízes de uma equação do
2ºgrau, na forma Ax2+Bx+C, levando em consideração a existência de
raízes reais.
3. Tendo dados de entrada a altura e o sexo de uma pessoa, construa um
algoritmo que calcule seu peso ideal, utilizando as seguintes fórmulas:
• Para homens: (72.7 * h) – 58;
• Para mulheres: (62.1 * h) – 44.7;
4. Faça um algoritmo que leia o ano de nascimento de uma pessoa,
calcule e mostre sua idade e, também, verifique e mostre se ela já tem
idade para votar (16 anos ou mais) e para conseguir carta de
condução(18 anos ou mais).
5. Escreva um algoritmo que leia o código de um determinado produto e
mostre a sua classificação. Utilize a seguinte tabela como referencias:
(exercício 2.6 pag.46)
Estrutura de Repetição

Regente da cadeira:
Dikiefu Fabiano, Msc.
Estrutura de Repetição
Uma estrutura de repetição define uma região que contém
instruções a serem repetidas. O número de vezes que estas
instruções serão repetidas depende do resultado de um teste
lógico

Existem dois tipos de laços de repetição:


• Repetição com teste lógico no início
• Repetição com teste lógico no final
Repetição com teste lógico no início
(Enquanto)
Consiste em uma estrutura de controlo do fluxo de execução que permite
repetir diversas vezes um mesmo trecho de algoritmo, porem, sempre
verificando antes de cada execução se é “permitido” executar o mesmo
trecho.
enquanto <teste_logico> faça
cmd1
cmd2

cmdn
fimenquanto
 O teste lógico serve para controlar o número de repetições a serem
realizadas pela estrutura
 Quando o resultado de < teste_logico > for falsa, o comando de repetição
não será executado.
 Se já de primeira vez o resultado é falso, os comandos não são executados
nenhuma vez.
Cont.
Exemplo 1: Faça um algoritmo que deve ler a nota de 5 alunos e calcula a
média aritmética da turma.

Algoritmo media
Real ma, somatorio, medTurma
Inteiro cont
inicio
cont  0;
Somatorio0;
Enquanto (cont < 5) faça
Escreva (“Introduza a nota do aluno”);
leia(ma);
somatorio  somatorio + ma;
cont  cont + 1;
fimenquanto
medTurma  somatorio/5;
escreva(“media anual da turma”, medTurma);
fimalgoritmo
Cont.
Exemplo 2: Faça um algoritmo para cálculo de média aritmética de 4 notas de
exame de 5 alunos

Algoritmo media
Real n1,n2,n3,n4, ma
Inteiro cont
inicio
cont  0;
Enquanto (cont < 5) faça ERRADO!!!
Escreva (“Introduza as notas”);
leia(n1,n2,n3,n4);
ma  (n1+n2+n3+n4)/4;
escreva(“media anual”, ma);
Se (ma >=10) então
Escreva(“Aprovado”);
Senão
Escreva(“Reprovado”);
fimSe
contcont + 1;
fimenquanto
fimalgoritmo
Cont.

No exemplo anterior, sabe-se o número de alunos para o


cálculo de média. Portanto, se não tivéssemos essa
informação, seria necessário uma estrutura de repetição que
fosse executada por uma quantidade indeterminada de vezes.
Assim, teríamos de encontrar um critério de parada, que
possibilita que a repetição fosse finalizada após a última media
ter sido introduzido. Logo, podemos utilizar um valor
predefinido como finalizador, a ser informado após a última
média.
Seja esse valor -1 que quando encontrado, finaliza a execução
da estrutura de repetição.
Algoritmo media
real ma, somatorio, medTurma
inteiro cont
inicio
cont  0;
somatorio0;
ma  0;
Escreva(“digite [-1] para finalizar…”);
Enquanto (ma <> -1) faça
Escreva (“Introduza a nota do aluno”);
Leia(ma);
Se( ma <> -1) Então
inicio
somatorio  somatorio + ma;
cont  cont + 1;
fim
fimse
fimenquanto
Se(cont > 0) Então
inicio
medTurma  somatorio/cont;
Escreva(“media anual da turma = ”, medTurma);
fim
Senão
Escreva(“Nenhuma média válida fornecida”);
fimse
fimalgoritmo
Repetição com teste lógico no final
(Repita)
Permite que um bloco ou acção primitiva seja repetida até que
uma determinada condição seja verdadeira.

repita
cmd1
cmd2

cmdn
ate <teste_logico> ;

O bloco (cmd1, cmd2,…) é executado pelo menos uma vez,


independentemente da validade da condição. Isso acontece
porque a inspecção do teste lógico é feita após a execução do
bloco.
Repetição com teste lógico no fim (repita)
Exemplo: reescrevemos o algoritmo do exemplo 2, que lê a média anual de 5 alunos
e calcula a média geral da turma, e utilizando a estrutura de repetição com teste no
final:

Algoritmo media
Real ma, somatorio, medTurma
Inteiro cont
inicio
cont  0;
somatorio0;
repita
Escreva (“Introduza a nota do aluno”);
leia(ma);
somatorio  somatorio + ma;
cont  cont + 1;
ate (cont < 5)
medTurma  somatorio/5;
escreva(“media anual da turma”, medTurma);
fimalgoritmo
Repetição com variável de controlo - para

Nas estruturas estudadas anteriormente, ocorre casos em que se


torna difícil determinar o número de vezes em que o bloco será
executado. Sabemos que ele será executado enquanto uma
condição for verdadeira, no caso de enquanto, ou até que uma
condição seja satisfeita. A estrutura para é diferente, já que
sempre repete a execução do bloco num número
predeterminado de vezes, pois ela não prevê uma condição e
possui limites fixos.

para V de vi ate vf passo p faça Onde:


cmd1; V: variável de controlo
cmd2; vi: valor inicial da variável V
… vf: valor final da variável, ou seja, o valor
cmdn; até qual ela vai chegar
fimpara p: o valor do incremento dado a variável V
Repetição com variável de controlo - para
Exemplo 4: Voltamos ao exemplo 2, resolvendo-o com a repetição “para”

Algoritmo media
Real ma, somatorio, medTurma
Inteiro cont
inicio

somatorio0;
para cont de 1 ate 5 passo 1 faça
Escreva (“Introduza a nota do aluno”);
leia(ma);
somatorio  somatorio + ma;

fimpara
medTurma  somatorio/5;
escreva(“media anual da turma”, medTurma);
fimalgoritmo
Repetição com variável de controlo - para
Exemplo 5: Elabore um algoritmo que simule uma contagem regressiva de
10 minutos, ou seja, mostre 10:00, e então 9:59, 9:58, …, 9:00; 8:59, 8:58, até
0:00

Algoritmo contagemRegretiva
Inteiro MIN, SEG
inicio

Escreva (“10:00”);
para MIN de 9 ate 0 passo -1 faça
para SEG de 59 ate 0 passo -1 faça
Escreva (MIN“:”SEG);

fimpara
fimpara
fimalgoritmo
Referencia

 Forbelone, André Luís Vilar, “Lógica de Programação-


Construção de Algoritmo e estrutura de dados”
3ªEdição Pearson and Prentice Hall 2005
 Universidade Vale de Itaja, “Lógica de programação”, pdf

Você também pode gostar