1 4. Estrutura de Controle Os algoritmos são criados para solucionar

Propaganda
4. Estrutura de Controle
Os algoritmos são criados para solucionar problemas propostos utilizando
conceitos de bloco lógico, entrada e saída de dados, constantes, variáveis,
expressões lógicas, atribuições e comandos.
Dentro do algoritmo, haverá
necessidade de tomadas de decisões que vão interferir diretamente no andamento do
programa. As estruturas básicas de controle do fluxo de execução são: seqüencial,
condicional ou de seleção e repetição.
Fig.1: Ilustração de Estrutura de Controle
Fonte:Internet
4.1 Estrutura de Controle Seqüencial
Conjunto de comandos que são executados numa seqüência linear, de cima
para baixo, ou seja, na mesma ordem em que aparecem. Cada comando é executado
somente após o término do comando anterior.
Uma estrutura de Controle sequencial é delimitada pelas palavras reservadas
Inicio e Fim e é constituída de comandos de atribuição, comandos de entrada e
comandos de saída.
Fig.2: Ilustração de Estrutura Seqüencial
Fonte: Internet
Sintaxe Geral:
inicio
Comando 1;
Comando 2;
Comando 3;
....
Comando n
fim
1
Fig,2: Ilustração de Estrutura de controle Sequencial
4.2 Estrutura de Controle Condicional ou de Seleção
Permite a escolha de um grupo de ações (blocos) a serem executadas de
acordo com a aceitação ou não de certas condições, representadas por expressões
lógicas ou relacionais.
São testados parâmetros e, dependendo dos seus valores, toma-se um
caminho ou outro. As condições que são testadas num algoritmo são do tipo lógica
booleana (Verdadeiro ou Falso). Portanto, a seleção de ações pode ter, no máximo,
duas alternativas: uma se a condição for verdadeira e outra se a condição testada for
falsa.
Fig.3: Ilustração de Estrutura de Controle Condicional ou de Seleção
Fonte: Internet
4.2.1 Seleções Simples (Se... Então)
Sintaxe Geral:
se <condição> então
início // início do bloco verdade
comando 1;
comando 2;
...
comando n;
fim; // fim do bloco verdade
fimse;
Quando a <condição> for verdadeira o “bloco verdade” é executado
Quando a <condição> for falsa o “bloco verdade” não é executado
Exemplo: Média Aritmética com Aprovação
início
// declaração de variáveis
real: N1, N2, N3, N4, // notas bimestrais
MA; // média anual
// entrada de dados
2
leia (N1, N2, N3, N4);
// processamento
MA = (N1 + N2 + N3 + N4) / 4;
// saída de dados
escreva (MA);
se (MA >= 7) então
escreva (“Aluno Aprovado !”);
fimse;
fim.
4.2.2 Seleção Composta (Se...então...senão)
Nesta estrutura uma única condição (expressão lógica) é avaliada e dependendo
do resultado, um comando ou um conjunto de comandos serão executados se a
avaliação for verdadeira ou não serão executados se a avaliação for falsa.
Sintaxe Geral:
se <condição> então
início // início do bloco verdade
comando 1;
comando n;
fim; // fim do bloco verdade
senão
início // início do bloco falsidade
comando 1;
comando n;
fim; // fim do bloco falsidade
fimse;
Quando a <condição> for verdadeira o “bloco verdade” é executado
Quando a <condição> for falsa o “bloco falsidade” é Executado
Exemplo: Média Aritmética com aprovação e reprovação
início
// declaração de variáveis
real: N1, N2, N3, N4, // notas bimestrais
MA; // média anual
leia (N1, N2, N3, N4);
MA = (N1 + N2 + N3 + N4) / 4;
escreva (MA);
se (MA >= 7) então
início
escreva (“Aluno Aprovado !”);
escreva (“Parabéns !”);
fim;
senão
início
escreva (“Aluno Reprovado !”);
3
escreva (“Estude mais !”);
fim;
fimse;
fim.
4.2.3 Seleção Encadeada ou Aninhada
Esta estrutura ocorre quando um grande conjunto de possibilidades ou
combinações de situações forem satisfeitas formando uma seleção encadeada ou
aninhada.
Exemplo: localização do Ponto
Sintaxe Geral:
se – então – se
se <Cond1> então
se <Cond2> então
se <Cond3> então
se <Cond4> então W;
fimse;
fimse;
fimse;
fimse;
É equivalente a:
se <Cond1> e <Cond2> e <Cond3> e <Cond4> então W;
fimse;
4.2.4 Seleção de Múltipla Escolha
4
Esta estrutura é uma generalização da construção SE, onde somente uma
condição é avaliada e dois caminhos podem ser seguidos. Nesta estrutura de Seleção
de Múltipla Escolha pode haver uma ou mais condições a serem testadas e um
comando diferente associado a cada uma dessas.
Sintaxe Geral:
escolha X
caso V1: C1;
caso V2: C2;
caso V3: C3;
caso V4: C4;
fimescolha;
Exemplo: Origem do Produto
início
real: Preço;
inteiro: Origem;
leia (Preço, Origem);
escolha Origem
caso 1: escreva (Preço, “ – produto do Sul”);
caso 2: escreva (Preço, “ – produto do Norte”);
caso 3: escreva (Preço, “ – produto do Leste”);
caso 4: escreva (Preço, “ – produto do Oeste”);
caso 7, 8, 9: escreva (Preço, “ – produto do Sudeste”);
caso 10..20: escreva (Preço, “ – produto do Centro-Oeste”);
caso 5, 6, 25..50: escreva (Preço, “ – produto do Nordeste”);
caso contrário: escreva (Preço, “ – produto importado”);
fimescolha;
fim.
4.3 Estrutura de Controle de Repetição
A estrutura de Controle de Repetição é utilizado quando se deseja que um
determinado conjunto de instruções ou comandos sejam executados um número
definido ou indefinido de vezes, ou enquanto uma determinada condição prevalecer
ou até que seja alcançada.
As estruturas de repetição são também chamadas de Laços ou Loops.
Quanto ao critério de parada, os laços podem utilizar: Repetição com Teste no
Início, repetição com Teste no Final ou repetição com Variável de Controle.
5
Fig.4: Ilustração de Estrutura de Controle de Repetição
Fonte: Internet
4.3.1 Repetição com Teste no Início
Laço que verifica antes de cada execução, se é “permitido” executar o trecho do
algoritmo. Trata-se de um laço que se mantém repetindo enquanto uma dada
condição permanecer verdadeira.
Sintaxe Geral:
enquanto <condição> faça
comando 1;
comando 2;
...
comando n;
fimenquanto;
A elaboração de algoritmos com estas estruturas necessita de dois tipos de
variáveis denominadas variáveis contadoras e acumuladoras.
Uma variável contadora é uma variável que recebe um valor inicial, geralmente
0 (zero) antes do início de uma estrutura de repetição, e é incrementada no interior da
estrutura de um valor constante, geralmente 1 (um), conforme o exemplo abaixo:
início
inteiro: CON;
CON = 0;
//Contadora => inicialização com valor 0 (zero)
enquanto CON < 3 faça
CON = CON + 1;
//Contadora é incrementada da constante 1 (um)
fimenquanto;
fim.
Exemplo: Média Aritmética para 50 alunos com teste no início com contador
início
// declaração de variáveis
real: N1, N2, N3, N4, // notas bimestrais
MA; // média anual
inteiro: CON; // contador
6
CON = 0; // inicialização do contador
enquanto (CON < 50) faça // teste da condição de parada
leia (N1, N2, N3, N4);
MA = (N1 + N2 + N3 + N4) / 4;
escreva (MA);
se (MA >= 7) então
escreva (“Aluno Aprovado. Parabéns !”);
senão
escreva (“Aluno Reprovado. Estude mais !”);
fimse;
COM = CON + 1; // incremento do contador
fimenquanto;
fim.
Uma variável acumuladora é uma variável que recebe um valor inicial,
geralmente 0 (zero) antes do início de uma estrutura de repetição, e é incrementada
no interior da estrutura de um valor variável, geralmente a variável usada na estrutura
de controle, conforme o exemplo abaixo:
início
inteiro: CON, X, ACM;
CON = 0;
ACM = 0;
ACM é o acumulador
enquanto CON < 3 faça
CON = CON + 1;
leia (X);
ACM = ACM + X;
fimenquanto;
fim.
Exemplo: Média Aritmética para 50 alunos com teste no início com contador e
acumulador
início
// declaração de variáveis
real: MA, // média anual de dado aluno
ACM, // Acumulador
MAT; // Média Anual da Turma
inteiro: CON; // contador
COM = 0; // inicialização do contador
ACM = 0; // inicialização do acumulador
enquanto (CON < 50) faça // teste da condição de parada
leia (MA);
ACM = ACM + MA; // soma em ACM os valores lidos em MA
CON = CON + 1; // incremento do contador
fimenquanto;
MAT = ACM / 50; // calculo da média anual da turma
escreva (“média anual da turma = “, MAT);
fim.
7
4.3.2 Repetição com Teste no Final
Laço que verifica depois de cada execução, se é “permitido” continuar executando
o trecho do algoritmo. Trata-se de um laço que se mantém repetindo até que uma
dada condição se torne verdadeira.
Sintaxe Geral:
repita
comando 1;
comando 2;
...
comando n;
até <condição>;
Exemplo: Média Aritmética para 50 alunos com teste no final (repita)
início
// declaração de variáveis
real: MA, // média anual de dado aluno
ACM, // Acumulador
MAT; // Média Anual da Turma
inteiro: CON; // contador
COM = 0; // inicialização do contador
ACM = 0; // inicialização do acumulador
repita
leia (MA);
ACM = ACM + MA; // soma em ACM os valores lidos em MA
CON = CON + 1; // incremento do contador
até (CON >= 50); // teste da condição de parada
MAT = ACM / 50; // calculo da média anual da turma
escreva (“média anual da turma = “, MAT);
fim.
4.3.3 Repetição com Variável de Controle
Laço simplificado para utilização em repetições de quantidade predeterminada.
Incorpora internamente o funcionamento de um contador de repetições:
Sintaxe Geral:
para V de vi até vf passo p faça
comando 1;
comando 2;
...
comando n;
fimpara;
Exemplo: Média Aritmética para 50 alunos com variável de controle (para)
8
início
// declaração de variáveis
real: MA, // média anual de dado aluno
ACM, // Acumulador
MAT; // Média Anual da Turma
inteiro: V; // contador
ACM = 0; // inicialização do acumulador
para V de 1 até 50 passo 1 faça
leia (MA);
ACM = ACM + MA; // soma em ACM os valores lidos em MA
fimpara;
MAT = ACM / 50; // calculo da média anual da turma
escreva (“média anual da turma = “, MAT);
fim.
4.4 Comparação entre Estruturas de Repetição:
Aprendemos 3 maneiras de construir laços de repetição, e é importante perceber
que existem laços mais adequados ou convenientes para cada situação:
4.5 Exercícios de Fixação:
1) Elabore um algoritmo que dada a idade de um nadador classifique-o em uma
das seguintes categorias:
Infantil A = 5 a 7 anos
Infantil B = 8 a 11 anos
Juvenil A = 12 a 13 anos
Juvenil A = 14 a 17 anos
Adultos = Maiores de 18 anos
2) Elabore um algoritmo que gera e escreve os números ímpares do números
lidos entre 100 e 200.
3) Construa um algortimo que leia 500 valores inteiros e positivos e:
Encontre o maior valor
Encontre o menor valor
Calcule a média dos números lidos
9
4) Faça um algoritmo que determine o maior entre N números. A condição de
parada é a entrada de um valor 0, ou seja, o algoritmo deve ficar calculando o
maior até que a entrada seja igual a 0 (ZERO).
5) Faça um algoritmo que conte de 1 a 100 e a cada múltiplo de 10 emita uma
mensagem: “Múltiplo de 10”.
6) Observe o algoritmo e responda:
X, N : inteiro
Inicio
leia (N , X)
Y=1
Enquanto ( X > 0 ) faça
inicio
Y=Y*N
X=X-1
fim
Fim enquanto
escreva ( Y )
Fim
a) Qual o objetivo do algoritmo acima (i.e.: qual o problema que ele está
solucionando)?
b) O algoritmo está correto? Como você fez para testá-lo?
c) Altere o algoritmo, utilizando a Estrutura Repita ... Até
d) Altere o algoritmo, utilizando a Estrutura Para ... Faça
e) Qual das três opções de algoritmo é a melhor na sua opinião? Por que?
1
Download