1. Programação I
Tema V: Estruturas de Controlo de
Fluxo
Docente: Eugénio Xavier Domingos
Caetano
2. Estruturas de Controlo de Fluxo
Em ciência da computação, estrutura de controle
(ou fluxo de controle) refere-se à ordem em que
instruções, expressões e chamadas de função são
executadas ou avaliadas em programas de
computador sob programação imperativa ou
funcional.
Os tipos de estruturas de controle disponíveis
diferem de linguagem para linguagem, mas podem
ser cruamente caracterizados por seus efeitos.
O primeiro é a continuação da execução em uma
outra instrução, como na estrutura sequencial ou
3. O segundo é a execução de um bloco de código
somente se uma condição é verdadeira, uma
estrutura de seleção.
O terceiro é a execução de um bloco de código
enquanto uma condição é verdadeira, ou de forma a
iterar uma coleção de dados, uma estrutura de
repetição.
O quarto é a execução de instruções distantes
entre si, em que o controle de fluxo possivelmente
volte para a posição original posteriormente, como
4. O quinto é a parada do programa de computador.
Interrupções e sinais são mecanismos de baixo
nível que podem alterar o fluxo de controle de forma
similar a uma sub-rotina, mas geralmente em
resposta a algum estímulo externo ou um evento ao
invés de uma estrutura de controle em uma
linguagem.
Em nível de linguagem de máquina, as instruções
de estruturas de controle geralmente funcionam ao
alterar o contador de programa.
5. Tipos de Estruturas em Portugol
Estrutura de seleção ou decisao: Também
chamada de expressão condicional ou ainda
construção condicional, a estrutura de seleção
realiza diferentes computações ou ações
dependendo se a seleção (ou condição) é
verdadeira ou falsa.
◦ A condição é uma expressão processada e transformada
em um valor booleano.
6. Estrutura de repetição: Uma estrutura de
repetição realiza e repete diferentes computações
ou ações dependendo se uma condição é
verdadeira ou falsa, condição essa que é um
expressão processada e transformada em um valor
booleano.
◦ Está associado a ela além da condição (também
chamada "expressão de controle" ou "condição de
parada") o bloco de código: verifica-se a condição, e caso
seja verdadeira, o bloco é executado.
◦ Após o final da execução do bloco, a condição é
7. ◦ Deve-se observar que, caso o bloco de código nunca
modificar o estado da condição, a estrutura será
executada para sempre, uma situação chamada laço
infinito.
◦ Da mesma forma, é possível especificar uma estrutura
em que o bloco de código modifica o estado da condição,
mas esta é sempre verdadeira.
◦ Algumas linguagens de programação especificam ainda
uma palavra reservada para sair da estrutura de
repetição de dentro do bloco de código, "quebrando" a
estrutura.
◦ Também é oferecido por algumas linguagens uma palavra
8. Estrutura de decisao: Se…Entao
Escolha Simples: Pode-se selecionar a sequência
de comandos a ser executada.
Formato:
se condição então
comandos
fim se
9. Escolha Composta: A maioria dos algoritmos
precisam tomar decisões ao longo de sua
execução.
◦ Para isso existem as estruturas de decisão, e a mais
utilizada é a estrutura SE-ENTÃO-SENÃO (Em inglês IF-
THEN-ELSE).
◦ O funcionamento é simples: com base no resultado de
uma expressão booleana (VERDADEIRO ou FALSO), o
fluxo do algoritmo segue para um bloco de instruções ou
não.
◦ Observe o esquema da estrutura SE-ENTÃO-SENÃO:
10. se condição então
<instruções a serem executadas caso a expressão
booleana resulte em VERDADEIRO>
senão
<instruções a serem executadas caso a expressão
booleana resulte em FALSO>
fimse
O bloco de código SENÃO é opcional.
É comum encontrar instruções de decisão apenas
com SE-ENTÃO sem o bloco SENÃO.
11. Estruturas ‘Aninhadas’
Algoritmo “maior_de_tres”
//algoritmo para obter o maior entre três valores
inteiros
var
maior: inteiro
numero1, numero2, numero3: inteiro
inicio
12. se (numero1 > numero2) então
se (numero2 >= numero3) então
maior<-numero1
senão
se (numero1 > numero3) então
maior<-numero1
Senão
maior<-numero3
fim se
fim se
13. senão
se (numero2 ≥ numero3) então
maior<-numero2
senão
maior<-numero3
fim se
fim se
escreva(maior)
fim
14. Estruturas ‘Aninhadas’ (simplificação)
Algoritmo “maior_de_tres_melhor”
//algoritmo para obter o maior entre três valores
inteiros
var
maior: inteiro
numero1, numero2, numero3: inteiro
Inicio
leia(numero1, numero2, numero3)
15. se (numero2 > maior) então
maior<-numero2
fimse
se (numero3 > maior) então
maior<-numero3
fim se
escreva(maior)
fim
16. Exercício
Desenvolver um algoritmo para, dados dois times
de futebol (cada time identificado por um número
inteiro), seus pontos ganhos e seu saldo de gols no
campeonato, decidir qual dos dois está em melhor
colocação (armazenando o resultado na variável
ganhador).
O resultado deve ser impresso.
A regra diz que está na frente no campeonato o time
que tiver mais pontos ganhos, com desempate pelo
saldo de gols.
17. Conclusao
Para algumas CPUs, as únicas instruções de
estruturas de controle disponíveis são os diversos
tipos de jump condicional.