REPETIO As declaraes para repetir comandos so chamadas

  • Slides: 21
Download presentation
REPETIÇÃO As declarações para repetir comandos são chamadas loopings ou loops. Existem 2 tipos

REPETIÇÃO As declarações para repetir comandos são chamadas loopings ou loops. Existem 2 tipos básicos de loop: 1. Counted loops 2. Conditional loops Counted loop: repete os comandos (ou ações) um número específico (ou conhecido) de vezes. Sabe-se de antemão quantas vezes o “laço” será repetido. Conditional loop: o número de vezes que os comandos serão repetidos é desconhecido. O número de vezes que o “laço” será repetido depende de uma condição.

O loop for Forma geral: for variável = inicio: incr: final %intervalo ação end

O loop for Forma geral: for variável = inicio: incr: final %intervalo ação end variável: variável do loop. Controla o loop. inicio: valor inicial incr: incremento (opcional para incr. 1) final: valor final OU intervalo (inicio: final) : intervalo de valores através do qual a variável do loop fará a iteração. Incremento de 1

Ex. : >> for i = 1: 5 fprintf('%d n', i) end 1 2

Ex. : >> for i = 1: 5 fprintf('%d n', i) end 1 2 3 4 5 Como imprimir o vetor a seguir? 0 >> for i = 0: 50: 200 50 100 fprintf('%d n', 150 end 200 i)

Input no for Ex. : repetir o “laço” para entrar um número definido de

Input no for Ex. : repetir o “laço” para entrar um número definido de dados. %ex. for i = 1: 3 n = input('Entre um número: '); fprintf('Você digitou %. 1 f n', n) end >> for 1 Entre um número: 33 Você digitou 33. 0 Entre um número: 1. 1 Você digitou 1. 1 Entre um número: 55 Você digitou 55. 0

Encontrando somas e produtos Ex. : somar “n” números digitados pelo usuário. %ex. soma

Encontrando somas e produtos Ex. : somar “n” números digitados pelo usuário. %ex. soma (for) soma = 0; fprintf('Digite a quantidade de números para somar: n') q = input('Entre a quantidade de números: '); for i = 1: q n = input('Entre com o número à ser somado: '); soma = soma + n; end fprintf('Soma dos números: %. 1 f n', soma) >> for 2 Digite a quantidade de números para somar: Entre a quantidade de números: 3 Entre com o número à ser somado: 4 Entre com o número à ser somado: 3. 2 Entre com o número à ser somado: 1. 1 Soma dos números: 8. 3

Pre-alocando vetores Frequentemente necessitamos armazenar os dados de entrada em um vetor. Isso pode

Pre-alocando vetores Frequentemente necessitamos armazenar os dados de entrada em um vetor. Isso pode ser feito de 2 maneiras: ü vetor vazio: começar com um vetor vazio e estender o vetor com cada número de entrada (ineficiente). ü pre-alocar: pre-especificar o tamanho correto do vetor e mudar o valor de cada elemento. Este método é melhor. Este segundo método é mais eficiente, pois já se sabe, antecipadamente, quantos elementos o vetor terá. É muito comum se utilizar a função zeros para pre-alocar o vetor.

Ex. : somar “n” números digitados pelo usuário. %ex. soma - método 1 -

Ex. : somar “n” números digitados pelo usuário. %ex. soma - método 1 - vetor vazio soma = 0; fprintf('Digite a quantidade de números para somar: n') q = input('Entre a quantidade de números: '); for i = 1: q n(i) = input('Entre com o número à ser somado: '); soma = soma + n(i); end fprintf('Soma dos números: %. 1 f n', soma) >> for 3 Digite a quantidade de números para somar: Entre a quantidade de números: 3 Entre com o número à ser somado: -1 Entre com o número à ser somado: 9 Soma dos números: 9. 0

Ex. : somar “n” números digitados pelo usuário. %ex. soma - método 2 –

Ex. : somar “n” números digitados pelo usuário. %ex. soma - método 2 – pre-alocar soma = 0; fprintf('Digite a quantidade de números para somar: n') q = input('Entre a quantidade de números: '); n = zeros(1, q); for i = 1: q n(i) = input('Entre com o número à ser somado: '); soma = soma + n(i); end fprintf('Soma dos números: %. 1 f n', soma) >> for 4 Digite a quantidade de números para somar: Entre a quantidade de números: 3 Entre com o número à ser somado: -1 Entre com o número à ser somado: 9 Soma dos números: 9. 0

Diferença entre os métodos: q = input('Entre a quant. Nºs: '); for i =

Diferença entre os métodos: q = input('Entre a quant. Nºs: '); for i = 1: q n(i) = input('Entre com o núm. à ser somado: '); soma = soma + n(i); end n = zeros(1, q); for i = 1: q n(i) = input('Entre com o núm. à ser somado: '); soma = soma + n(i); end

Exercício/Desafio: Estudar (pesquisar) e mostrar (provar) que o método 2 – prealocar o vetor,

Exercício/Desafio: Estudar (pesquisar) e mostrar (provar) que o método 2 – prealocar o vetor, ou seja, especificar o tamanho do vetor, é mais eficiente do que o método 1 – vetor vazio.

Exercícios: 1) Digitar um número “n”. Em seguida, entrar “n” números e calcular a

Exercícios: 1) Digitar um número “n”. Em seguida, entrar “n” números e calcular a média aritmética. Verificar também, quantos números são maiores do que a média. Utilizar os 2 métodos de alocação de memória. 2) Digitar um número “n” e depois entrar vários números (“n” números). Verificar quantos são positivos, a média aritméticas dos números negativos e a porcentagem de números nulos.

Loops for’s aninhados Quando a ação de um loop é um outro loop, isso

Loops for’s aninhados Quando a ação de um loop é um outro loop, isso é chamado de loop aninhado. Forma geral: for var_loop_um = intervalo_um ação_1 (que inclui o loop interno) for var_loop_dois = intervalo_dois ação_2 end loop externo loop interno

Ex. : imprimir uma caixa de asteriscos ( * ). %ex. caixa de asteriscos

Ex. : imprimir uma caixa de asteriscos ( * ). %ex. caixa de asteriscos linhas = 3; colunas = 5; % loop de linhas for i = 1: linhas % loop colunas, imprimi os *’s for j = 1: colunas fprintf('*'); end fprintf('n’) end >> for 5 *****

Exercícios. 1) Modifique o ex. anterior para ler o número de linhas e de

Exercícios. 1) Modifique o ex. anterior para ler o número de linhas e de colunas da caixa. 2) No ex. anterior, faça as alterações necessárias para mostrar os valores das linhas e colunas (“i” e “j”) em cada passagem. 3) Imprimir um triângulo de asteríscos. * ** ****. . 4) Modifique o ex. para obter uma matriz com os valores da multiplicação da linha por cada coluna. (Matriz 3 x 5).

O loop while Forma geral: while condição ação end Ex. : ler e imprimir

O loop while Forma geral: while condição ação end Ex. : ler e imprimir vários números até digitar um número menor do que zero.

%ex. while fprintf('Digite um número e um num. < 0 para fim: '); num

%ex. while fprintf('Digite um número e um num. < 0 para fim: '); num = input('n Digite um número: '); while num >= 0 fprintf('n Número = %. 2 f n', num); fprintf('Digite um número e um num. < 0 para fim: '); num = input('n Digite um número: '); end >> while 1 Digite um número e um num. < 0 para fim: Digite um número: 4 Número = 4. 00 Digite um número e um num. < 0 para fim: Digite um número: 77 Número = 77. 00 Digite um número e um num. < 0 para fim: Digite um número: -1

Observe que geralmente utilizamos um comando de leitura antes do while e um outro,

Observe que geralmente utilizamos um comando de leitura antes do while e um outro, “dentro” do while (final do loop). fprintf('Digite um número e um num. < 0 para fim: '); num = input('n Digite um número: '); while num >= 0 fprintf('n Número = %. 2 f n', num); fprintf('Digite um número e um num. < 0 para fim: '); num = input('n Digite um número: '); end

Contadores no loop while Muitas vezes é necessário contar o número de vezes que

Contadores no loop while Muitas vezes é necessário contar o número de vezes que uma ação foi repetida. cont = 0; num = input('n Digite um número POSITIVO: '); while num > 0 fprintf('n Número = %. 2 f n', num); cont = cont + 1; num = input('n Digite um número POSITIVO: '); end fprintf(‘Você digitou %d números positivos. n’, cont)

Verificando erro na entrada com o loop while Error-checking: % Laço até o usuário

Verificando erro na entrada com o loop while Error-checking: % Laço até o usuário digitar um número positivo. num = input('n Digite um número positivo: '); while num < 0 num = input('n Inválido! Digite um número positivo: '); end fprintf(‘OK! Você digitou %. 1 f n’, num)

Loops com vetores e matrizes Supondo que existe um vetor vet, cujo intervalo dos

Loops com vetores e matrizes Supondo que existe um vetor vet, cujo intervalo dos índices vão de 1 até o comprimento do vetor: for i = 1: length(vet) % ação com vet(i) end Supondo agora que existe uma matriz mat, cujo intervalo dos índices vão de 1 até o número de linhas e de colunas: [L, C] = size(mat); for linha = 1: L for col = 1: C % ação com mat(linha, col) end

Exercício. 1) Escreva um script para ler vários números negativos, até o usuário digitar

Exercício. 1) Escreva um script para ler vários números negativos, até o usuário digitar um número maior ou igual a zero. Calcular e imprimir a média só dos números negativos digitados. Se nenhum número negativo for digitado, escrever uma mensagem de erro. 2) Faça um script para ler vários números, até o usuário digitar zero. Calcular e imprimir a porcentagem só dos números negativos e a média dos positivos. Se nenhum número positivo for digitado, escrever uma mensagem de erro. 3) Escreva um script para ler vários números, até o usuário digitar zero. Calcular e imprimir a porcentagem só dos números pares positivos e a média dos ímpares negativos. Se nenhum número ímpar negativo for digitado, escrever uma mensagem de erro. Resto da divisão: rem(x, y)