Universidade Federal do Vale do São Francisco Curso de Engenharia da Produção / Elétrica Parte 03 Prof. Jorge Cavalcanti jorge.cavalcanti@univasf.edu.br www.univasf.edu.br/~jorge.cavalcanti www.twitter.com/jorgecav 1 Estruturas de controle de fluxo Em alguns algoritmos, é necessário executar uma mesma tarefa por um número determinado ou indeterminado de vezes. Exemplos: Calcular a raiz quadrada dos números 1 à 10. Observe que para cada número, o mesmo cálculo será realizado. Neste caso, o cálculo é repetido 10 vezes. Calcular a raiz quadrada de um número sempre que este número for menor que 15. Este fato gerou a criação das estruturas de repetição as quais veremos a seguir. 2 1
Estrutura de Repetição Enquanto Neste caso, uma dada tarefa será repetida enquanto uma determinada condição for verdadeira. Sintaxe: enquanto (<expressão lógica ou relacional>) faca<sequência de comandos> Fimenquanto Obs: <expressão lógica ou relacional> é avaliada antes de cada repetição do laço. Quando seu resultado for VERDADEIRO, <seqüência-de-comandos> é executada. 3 algoritmo "Exemplo 1 - enquanto" r: real escreval ("Digite um numero") leia (r) enquanto (r<100) faca r <- (r^(1/2)) escreval (r) leia (r) fimenquanto 4 2
5 E se a condição for 50 < r < 100? algoritmo "Exemplo 1m enquanto" Var r: real Inicio Escreval ( Digite um número maior que 50 e menor que 100 ) leia (r) enquanto (r > 50) e (r < 100) faca r <- r^(1/2) escreval (r) leia (r) fimenquanto 6 3
7 Estrutura de Repetição Repita... Até <seqüência de comandos> será executada sempre que o resultado da <expressão lógica ou relacional> resultar em FALSO. Sintaxe: repita <seqüência de comandos> ate (<expressão lógica ou relacional>) <seqüência de comandos> é executada ao menos uma vez, visto que a avaliação da <expressão lógica ou relacional> encontra-se no final da estrutura de repetição. 8 4
algoritmo "Repita...ate" a: inteiro escreval("digite um numero inteiro menor que 10") leia(a) repita a<- a+1 escreval (a) ate (a>10) Sempre que a condição a>10 for FALSA, a seqüência de comandos será executada. 9 5
Estrutura de Repetição Para Sintaxe: Conta o número de repetições (deve ser necessariamente uma iável do tipo inteiro) Especifica o valor de inicialização iável contadora. Especifica o valor máximo que a iável contadora pode alcançar. para <iável> de <valor-inicial> ate <valor limite> passo<incremento> faca <sequência de comandos> Quando o programa chega neste ponto, a iável contadora é incrementada e comparada com o valor limite. da Indica o valor do incremento que será acrescentado à iável contadora em cada repetição do laço. opcional. 11 É algoritmo "Exemplo Para" // Função : // Autor : // Data : 22/08/2010 // Seção de Declarações j:inteiro para j de 0 ate 10 faca escreval (j) Se passo for omitido, o valor default do incremento é 1. 12 6
algoritmo "Exemplo Para" n, j:inteiro Inicio escreval ("Digite um numero inteiro") leia(n) para j de 0 ate 10 passo n faca escreval (j) No programa foi adicionado uma iável de incremento, onde o valor desta é digitada pelo usuário. Obs:<valor-inicial>, <valor-limite> e <incremento> são avaliados uma única vez antes da execução da primeira repetição, e não se alteram durante a execução do laço, mesmo que iáveis eventualmente presentes nessas expressões tenham seus valores alterados. 13 14 7
Ex.: Construa um pseudocódigo para um algoritmo que exiba em um monitor uma contagem decrescente do valor 30 até o valor 1. algoritmo decrescendo" n: inteiro para n de 30 ate 1 passo -1 faca escreval (n) algoritmo decrescendo2" n: inteiro para n de 0 ate 29 faca escreval (30-n) 15 Exercícios 1. Faça um algoritmo para escrever os números pares de 0 a 100. 2. Faça um algoritmo para escrever a série de Fibonacci = (0, 1, 1, 2, 3, 5, 8, 13, 21, 34,...) enquanto o termo a ser impresso for menor que 300. 3. Construa um algoritmo que receba dois números reais e um dos seguintes símbolos: +, -, * ou /, o qual designará qual operação será aplicada considerando os valores recebidos como seus operandos. O referido algoritmo deve retornar o resultado da operação selecionada com uma precisão de dois dígitos (obser a divisão por 0). 16 8
4. Escreva um programa que requisita dois números e faz a soma deles e depois pergunta se o usuário quer fazer o cálculo novamente. 5. Escreva um programa que recebe um número e conta a partir deste número até 100. 6. Ler 10 números e dizer se cada um é: nulo, positivo ou negativo. 17 9