Вы находитесь на странице: 1из 8

3/16/2010

Estruturas de Controle Na aula passada...

Prof. Afonso Paiva
ICMC‐USP

Introdução à Programação de Computadores – SME0330 Introdução à Programação de Computadores – SME0330

Exemplo 1 Exemplo 1: Pseudo‐código


Calcular os dois catetos de um triângulo Algoritmo Lados_Triangulo
retângulo, dados um ângulo (alpha) em graus e a {Algoritmo para calcular o valor dos catetos de um triângulo retângulo}
hipotenusa. início
variável
hipotenusa, alpha: real {Dados de entrada}
ang_rad, pi: real
lado oposto lado_adjacente:
lado_oposto, lado adjacente: real {Dados de saída}
lado_oposto

leia(hipotenusa) {Lendo os dados}


leia(alpha) {Lendo os dados}
pi  3.1416
ang_rad  alpha*pi/180 {Conversão para radianos}
lado_oposto  hipotenusa*sen(ang_rad)
lado_adjacente  hipotenusa*cos(ang_rad)
alpha escreva (lado_oposto)
escreva (lado_adjacente)
fim
lado_adjacente

Introdução à Programação de Computadores – SME0330 Introdução à Programação de Computadores – SME0330

Refazer: Exemplo 2
Algoritmo Lados_Triangulo
• Colocar ponto‐e‐vírgula ; {Algoritmo para calcular o valor dos catetos de um triângulo retângulo}

– sempre após as declarações início
variável
hipotenusa, alpha: real`; {Dados de entrada}
ang_rad, pi: real;
lado oposto lado_adjacente:
lado_oposto, lado adjacente: real; {Dados de saída}
• Exemplos: leia(hipotenusa);
leia(alpha);
{Lendo os dados}
{Lendo os dados}
pi  3.1416;
– hipotenusa: real; ang_rad  alpha*pi/180; {Conversão para radianos}
lado_oposto  hipotenusa*sen(ang_rad);
– leia (cateto_oposto); lado_adjacente  hipotenusa*cos(ang_rad);
escreva (lado_oposto);
escreva (lado_adjacente);
fim

Introdução à Programação de Computadores – SME0330 Introdução à Programação de Computadores – SME0330

1
3/16/2010

Regras Básicas de Legibilidade Exemplo 3
Algoritmo Lados_Triangulo
• Utilizar espaços e/ou linhas em branco para melhorar a
início
legibilidade; variável
hipotenusa, alpha: real
• Uso de parênteses aumenta a legibilidade e previne ang_rad, pi: real
lado_oposto, lado_adjacente: real
erros;; leia(hipotenusa)
( p )
leia(alpha)
• Um comando por linha é suficiente; pi  3.1416
ang_rad  alpha*pi/180
lado_oposto  hipotenusa*sen(ang_rad)
• Ponto‐e‐vírgula sempre; lado_adjacente  hipotenusa*cos(ang_rad)
escreva (lado_oposto)
• Utilize indentação (recuo) nos comandos de acordo com escreva (lado_adjacente)
fim
o nível que estejam, ou seja, alinhe comandos de mesmo
nível e desloque comandos de nível inferior. Sem comentários, sem indentação e sem ponto‐vírgula

Introdução à Programação de Computadores – SME0330 Introdução à Programação de Computadores – SME0330

Pseudo‐linguagem
Exemplo 4 se ....
Problema
Algoritmo Lados_Triangulo
então ...
início
senão ...
variável
hipotenusa, alpha: real
ang_rad, pi: real
lado_oposto, lado_adjacente: real
( p )
leia(hipotenusa)
leia(alpha) Li
Linguagem d
de  Li
Linguagem d
de 
pi  3.1416
ang_rad  alpha*pi/180 máquina programação
lado_oposto  hipotenusa*sen(ang_rad)
lado_adjacente  hipotenusa*cos(ang_rad) ‘0’ ou ‘1’ Java, C, Pascal,etc.
escreva (lado_oposto)
escreva (lado_adjacente)
fim

Sem comentários, sem indentação, sem ponto‐vírgula e bem bagunçado ! Programa
Introdução à Programação de Computadores – SME0330 Introdução à Programação de Computadores – SME0330

Estrutura de Controle Estrutura Seqüencial
• Estruturas de controle permitem o controle do fluxo  É um conjunto de comandos que serão executados em 
de execução dos comandos uma seqüência linear, de cima para baixo

• Vamos analisar as seguintes estruturas de controle:
C1 ;
Os comandos serão
 seqüencial;
l executados na mesma C2 ;
 desvio condicional simples/composto/encadeado; ordem em que foram
escritos
...
 seleção de múltipla escolha;
 repetição com teste no início/final/ variável de controle. Cn;

Convencionaremos que os comandos serão seguidos


por ponto‐e‐vírgula (;)
Introdução à Programação de Computadores – SME0330

2
3/16/2010

Modelo Geral de um Pseudo‐código: Exemplo 5
Algoritmo <nome>
Algoritmo Perimetro_Triangulo
início {Algoritmo para calcular o perímetro de um triângulo}
< declaração de variáveis >
início
<tarefa 1>; {corpo do algoritmo}
variável:
<tarefa 2>; a,b,c: real; {dados de entrada}
... perim: real; {dado de saída}
<tarefa n>; leia(a,b,c);
fim perim  a+b+c;
escreva(perim);
fim

Introdução à Programação de Computadores – SME0330 Introdução à Programação de Computadores – SME0330

Decisão (Desvio) Condicional  Desvio Condicional Simples
• Um desvio condicional é usado para decidir se um No desvio condicional simples uma condição é avaliada e,
conjunto de instruções deve, ou não, ser realizado; se o resultado for verdadeiro, um conjunto de instruções
• Comandos de decisão ou desvio fazem parte das é executado
técnicas de p
programação,
g ç ,p para construir estruturas PSEUDO‐CÓDIGO
PSEUDO CÓDIGO
PSEUDO‐CÓDIGO
Ó
de algoritmos que não são totalmente seqüenciais; se (<condição>) então
se (<condição>) então
<tarefa 1>;
• Com as instruções de desvio pode‐se fazer com <tarefa única>;
<tarefa 2>;
que o algoritmo proceda de uma ou outra maneira, fim se
...
de acordo com as decisões lógicas tomadas em <tarefa n>;
função dos dados ou resultados anteriores. Se a condição for falsa  fim se
encerra‐se a seleção!
Introdução à Programação de Computadores – SME0330 Introdução à Programação de Computadores – SME0330

Exemplo 6 Desvio Condicional Composto
Algoritmo Numero_Positivo Quando mais de uma ação depende de uma mesma
{Algoritmo para verificar se um número é positivo} condição: uma de a condição ser verdadeira e outra
início de a condição ser falsa.
variável:
x: real; PSEUDO CÓDIGO
PSEUDO‐CÓDIGO
leia(x); se (<condição>) então
se ( x > 0 ) então <tarefa 1>;
escreva(“O número”, x, “ é positivo”); senão
fim se <tarefa 2>;
fim
fim se

Introdução à Programação de Computadores – SME0330 Introdução à Programação de Computadores – SME0330

3
3/16/2010

Exemplo 7 Desvio Condicional Composto
Algoritmo Calculo_da_media_final
{Algoritmo para calcular a média final dos alunos, baseado nas notas de provas  e listas}
PSEUDO‐CÓDIGO
início
se (<condição>) então
variável
P1,P2,L: real ; {Dados de entrada} <tarefa V1>;
MF: real; {Dados de saída} ... {Bl
{Bloco V d d }
Verdade}
leia(P1,P2,L); {Lendo os dados} <tarefa Vn>;
MF  (P1 + P2 + L)/3; {Cálculo da média final}
senão
se (MF < 7.0) então
escreva (“Reprovado com média final”, MF); <tarefa F1>;
senão ... {Bloco Falsidade}
escreva (“Aprovado com média final”, MF); <tarefa Fn>;
fim se
fim se
fim
Introdução à Programação de Computadores – SME0330 Introdução à Programação de Computadores – SME0330

Exemplo 8 Desvio Condicional Encadeado
Algoritmo Calculo_da_media_final • Devido à necessidade de processamento,
{Algoritmo para calcular a média final dos alunos, baseado nas notas de provas  e listas}
agrupamos várias seleções;
início
variável • Ocorre quando uma determinada ação (ou bloco)
P1,P2,L: real ; {Dados de entrada} deve ser executado se um grande conjunto de
MF: real;
leia(P1,P2,L);
{Dados de saída}
{Lendo os dados}
possibilidades ou combinações de situações for
MF  (P1 + P2 + L)/3; {Cálculo da média final} satisfeito;
se (MF < 7.0) então
escreva (“Reprovado com média final”, MF); • Vamos estudar dois tipos:
escreva (“Terá que estudar mais”); – Homogêneo
senão
– Heterogêneo
escreva (“Aprovado com média final”, MF);
escreva (“Pode ir para praia relaxar”);
fim se
• Encadear = Ligar
fim
Introdução à Programação de Computadores – SME0330

Desvio Cond. Enc. Homogêneo Desvio Cond. Enc. Homogêneo: se‐então‐se

• Quando conseguimos identificar um padrão lógico de


PSEUDO‐CÓDIGO
construção de um estrutura de seleção encadeada.
se (<condição 1> ) então
• Vamos estudar 2 casos: se (<condição 2>) então
1) se
se‐então‐se:
então se: quando depois de cada então ocorre outro se se (<condição 3>) então
2) se‐senão‐se: quando depois de cada senão ocorre outro se se (<condição 4>) então
<tarefa 1>;
fim se Não há senão após então!
fim se
fim se A ação vai ocorrer quando todas as 
fim se condições forem ao mesmo tempo 
satisfeitas!
Introdução à Programação de Computadores – SME0330

4
3/16/2010

Desvio Cond. Enc. Homogêneo: se‐então‐se Desvio Cond. Enc. Homogêneo: se‐senão‐se
PSEUDO‐CÓDIGO
PSEUDO‐CÓDIGO
se ( X = V1 ) então
<tarefa 1>;
se (<condição1>‫<ר‬condição2>‫<ר‬condição3>‫<ר‬condição4>) então
senão
<tarefa 1>; se ( X = V2 ) então
fim se; <tarefa 2>;
Após cada senão existe
Após cada senão, existe 
senão
se ( X = V3 ) então
outro comando se.
Condição 1 Condição 2 Condição 3 Condição 4
<tarefa 3>;
V V V V Depois do então, existe um
senão
comando.
se ( X = V4 ) então
<tarefa 4>;
fim se
Executa a tarefa fim se
fim se
fim se
Introdução à Programação de Computadores – SME0330

Desvio Cond. Enc. Heterogêneo Exemplo 9
Quando não conseguimos identificar um padrão lógico de
construção de um estrutura de seleção encadeada • Dados os valores A, B, C verificar se eles podem ser
comprimentos dos lados de um triângulo.
PSEUDO‐CÓDIGO
se (<condição 1>) então • Caso positivo, verificar se eqüilátero, isósceles ou
se ((<condição
ç 2>)
) então
<tarefa 1>; escaleno.
senão
se (<condição 3>) então
<tarefa 2>;
• Dados de entrada: A, B, e C
senão
<tarefa 3>; • Dados de saída:
fim se – mensagens triângulo eqüilátero, triângulo isósceles, triângulo
fim se
senão escaleno, não formam um triângulo.
<tarefa 4>;
fim se
Introdução à Programação de Computadores – SME0330

Algoritmo Tipo_Triangulo
Exercício
inicio
variável
A,B,C: real; {Dados de Entrada} Fazer o Teste de Mesa do algoritmo anterior
leia (A,B,C);
se ( (A < B+C) ‫( ר‬B < A+C) ‫( ר‬C < A+C) ) então {é triangulo?}
se ( (A = B) ‫( ר‬B = C) ) então {é eqüilátero?}
1) A=7.1, B=6.9 e C=2.3
escreva (“Triângulo eqüilátero”); 2) A=7.1, B=6.9 e C=7.1
senão
se ( (A = B ) ‫( ש‬A = C) ‫( ש‬B = C) ) então {é isósceles?} 3) A=7.1, B=7.1 e C=7.1
escreva (“Triângulo isósceles”);
senão 4) A=7.1, B=7.1 e C=2.3
escreva (“Triângulo escaleno”);
fim se
5) A=7.1, B=7.1 e C=0.0
fim se
senão
escreva (“Os valores fornecidos não formam um triângulo”);
fim se
fim
Introdução à Programação de Computadores – SME0330

5
3/16/2010

Seleção de Múltipla Escolha Exemplo 10
• Seleções encadeadas homogêneas se‐senão‐se são bastante Escrever um programa em pseudo‐código
freqüentes para o tratamento de listas de valor
para apresentar qual o canal de televisão,
• Para simplificar a escrita, podemos utilizar o comando 
escolha. conforme o número da opção digitada pelo
usuário:
• Algoritmo anterior pode ser reescrito como:
Algoritmo anterior pode ser reescrito como:
escolha X 1. SBT
caso V1: <tarefa 1>;
caso V2: <tarefa 2>; 2. GLOBO
caso V3: <tarefa 3>;
caso V4: <tarefa 4>; 3. BAND
caso_contrário: <tarefa 5>; 4. RECORD
fim escolha
5. TV SENADO
Introdução à Programação de Computadores – SME0330 Introdução à Programação de Computadores – SME0330

Exemplo 10: Pseudo‐código Exemplo 11


Algoritmo Canal_TV Algoritmo Calculo_da_media_final
{Algoritmo para calcular a média final dos alunos, baseado nas notas de provas  e listas}
início
opcao: inteiro; {declaração de variáveis} início
variável
leia ( opcao ); {leitura de dados}
P1,P2,L: real; {Dados de entrada}
escolha opcao MF: real; {Dados de saída}
caso 1:
1 escreva(“SBT”);
(“SBT”) leia(P1,P2,L); {Lendo os dados}
caso 2: escreva(“GLOBO”); MF  (P1 + P2 + L)/3; {Cálculo da média final}
caso 3: escreva(“BAND”); se (MF < 7.0) então
escreva (“Reprovado com média final”, MF);
caso 4: escreva(“RECORD”); escreva (“Terá que estudar mais”);
caso 5: escreva(“TV SENADO”); senão
caso contrário: escreva(“Compre TV a cabo”); escreva (“Aprovado com média final”, MF);
fim escolha escreva (“Pode ir para praia relaxar”);
fim fim se
fim
O algoritmo é utilizado para um aluno. E se fossem vários?
Introdução à Programação de Computadores – SME0330

Estrutura de Repetição Repetição por Condição
• Repetição com teste no início • Podemos utilizar a mesma seqüência de comando;
– enquanto <condição>  faça • Na verdade estamos fazendo com que o fluxo de
• Repetição com teste no final execução repetisse certo trecho do algoritmo;
– repita / até  <condição>
• Trechos de algoritmos que são repetidos são
• Repetição por contagem conhecidos como laços de repetição ou loops
– para V de Vi até Vf passo p faça (número finito de repetições);

Introdução à Programação de Computadores – SME0330 Introdução à Programação de Computadores – SME0330

6
3/16/2010

Repetição com Teste no Início Definições
• Permite repetir várias vezes um mesmo trecho do algoritmo, • Contador: representado por uma variável com um dado 
porém sempre verificando antes de cada execução se é valor inicial, o qual é incrementado a cada repetição.
permitido executar o trecho, ou seja, enquanto o valor da • Incrementar: mesmo que somar um valor constante.
condição for verdadeiro.
• Ex.: Lembra do algoritmo
g de trocar um p
pneu?
• Exemplo:
enquanto <houver parafuso p desapertar> faça início
Desparafusar a roda; PSEUDOCÓDIGO variável
cont: inteiro; {declaração do contador}
fim do enquanto enquanto <condição> faça cont  1; {inicializando o contador}
cont  cont+1; {incrementando o contador}
<tarefa 1>; fim
<tarefa 2>;
... Pode se incrementar mais que um !!!
<tarefa n>;
fim do enquanto Introdução à Programação de Computadores – SME0330

Exemplo 12 Repetição com Teste no Final
Algoritmo ler_e_somar_n_numeros • Utilizaremos a estrutura repita.
{Algoritmo para ler N números naturais e exibir a
soma desses números.}
início
• Permite que um bloco ou ação seja repetido até que
variável uma determinada condição seja verdadeira.
cont, n, soma: inteiro;
cont  1; {Inicializando o contador}
leia(n); {Lendo os dados}
PSEUDO‐CÓDIGO
soma  0; {Inicializando a soma} repita
enquanto (cont <= n) faça
<tarefa 1>;
soma  soma + cont;
cont  cont + 1; {Incrementar o contador em um} <tarefa 2>;
fim do enquanto
...
escreva (“A soma de”, n, “ números é ”, soma);
fim <tarefa n>;
até <condição>;

Exemplo 13 Repetição por Contagem
Algoritmo ler_e_somar_n_numeros • Utilizaremos a estrutura:
{Algoritmo para ler N números naturais e exibir a
soma desses números.} para V de Vi até Vf faça
início
variável
• Sempre repete a execução do bloco um número
cont, n, soma: inteiro; predeterminado de vezes. Possui limites de fluxos.
cont  1; {Inicializando o contador}
leia(n); {Lendo os dados}  V: variável PSEUDO‐CÓDIGO
soma  0; {Inicializando a soma}
repita  Vi: valor inicial para V de Vi até Vf faça
soma  soma + cont; <tarefa 1>;
cont  cont + 1; {Incrementar o contador em um}  Vf: valor final
até (cont >= n);
<tarefa 2>;
escreva (“A soma de”, n, “ números é ”, soma); ...
fim
<tarefa n>;
fim para
Introdução à Programação de Computadores – SME0330

7
3/16/2010

Repetição por Contagem  Exemplo 14
• Outra forma de estrutura: Algoritmo ler_e_somar_20_numeros
{Algoritmo para somar 20 números naturais e exibir a
para V de vi até vf passo p faça soma desses números.}
início
 p: valor do incremento dado a variável V variável
V, soma: inteiro;
PSEUDO‐CÓDIGO cont  1; {Inicializando o contador}
soma  0; {Inicializando a soma}
para V de Vi até Vf passo p faça para V de 1 até 20 (passo 1) faça
<tarefa 1>; soma  soma + V;
fim para
<tarefa 2>; escreva (“A soma de 20 números é ”, soma);
... fim
<tarefa n>;
fim para
Introdução à Programação de Computadores – SME0330

Вам также может понравиться