• Nenhum resultado encontrado

2Estruturasderepetição

N/A
N/A
Protected

Academic year: 2021

Share "2Estruturasderepetição"

Copied!
25
0
0

Texto

(1)

Linguagem C

(2)

Estrutura de repetição

Estrutura de repetição para número definido de

repetições -

for

Estrutura de repetição para número indefinido de

repetições

com pré-condição -

while

com pós-condição -

do... while

Comandos de desvio incondicional

(3)

Terminologia

O código repetido em um laço (loop) é chamado

corpo do laço.

O corpo do laço é constituído de um ou mais

comandos.

Cada repetição do corpo do laço é chamada de

uma iteração

do laço.

A iteração é controla por um teste de condição.

A

condição

de

controle

é uma expressão

(4)

Estrutura de Repetição para

Número

Definido

de Repetições –

for

Tem seu funcionamento controlado por uma

variável que conta o número de vezes que o

comando é executado.

Em C, essa estrutura é implementada pelo

comando

for

, cuja forma básica é a seguinte:

for (inicialização; condição; alteração) {

comandos;

(5)

for (

inicialização

;

condição

;

alteração

)

A

inicialização

é

uma

expressão

que

atribui um valor inicial ao

contador.

A

condição

verifica se a

contagem chegou ao fim.

A

alteração

modifica o

valor do contador.

Enquanto a contagem

(6)

Exemplo 1:

#include <stdio.h> int main(void) { int i, n = 10; for ( i = 1; i <= n; i++ ) {

printf("Exibe esta mensagem 10 vezes!"); }

return 0; }

(7)

Exemplo 2:

usando duas variaveis controle

#include <stdio.h>

int main(void) {

int up, down;

for (up=0, down=6; up<down; up++, down--) {

printf("up = %d, down = %d\n", up, down); }

(8)

Exemplo 3:

Exibe a tabela ASCII com pausas a cada 23 linhas.

#include <stdio.h> int main(void) { int c, n=0; for(c=0; c<=255; c++) { printf("\n%c ==> %d", c, c); n++; if (n==23) {

printf("\n\nPressione uma tecla ..."); n=0;

getch(); }

(9)

Desafio de Programação

O quadrado de um número natural

n

é

dado pela soma dos

n

primeiros números

ímpares consecutivos. Por exemplo, 1

2

=1,

2

2

=1+3, 3

2

=1+3+5, 4

2

=1+3+5+7, etc.

Dado um número

n

, calcule seu quadrado

usando a soma de ímpares ao invés de

produto.

(10)

Estrutura de Repetição para Número Indefinido

de Repetições –

while

e

do-while

Essa estrutura de repetição é utilizada quando

não

se sabe o número de vezes em que um trecho do

algoritmo deve ser repetido.

 Embora, também possa ser utilizada quando se sabe esse

número.

C, implementa dois comandos para esta situação:

 Comando while

(11)

Estrutura de Repetição para Número Indefinido

de Repetições –

while

e

do-while

A diferença importante entre os laços

while

e

do-while

envolve o momento em que a expressão

booleana de controle é verificada.

Com

while

,

a expressão booleana é verificada antes que o corpo do

laço seja executado.

Com

do-while

,

o corpo do laço é executado primeiro, e a condição

(12)

Repetição com pré-condição –

while

while:

O corpo do laço é

executado

zero

ou

mais vezes

Sintaxe:

while (condição)

{

corpo do laço;

}

(13)

Exemplo: exibe os dígitos de um número.

#include <stdio.h>

int main(void) {

unsigned n, d; // dois inteiros sem sinal

printf("\n Digite um número: "); scanf("%u", &n);

printf("\n Os seus dígitos são: ");

while ( n != 0 ) {

d = n % 10; // extrai o resto da divisao inteira

(14)

Desafio de Programação

Uma certa agência bancária, as contas são

identificadas por números de até seis dígitos

seguidos de um dígito verificador, calculado

conforme exemplificado abaixo. Dado um número

de conta

n

, exiba o número de conta completo

correspondente.

Seja

n

= 7314 o número da conta.

Adicionamos os dígitos de

n

e obtemos a soma s =

4+1+3+7 = 15;

 Calculamos o resto da divisão de s por 10 e obtemos o

dígito d = 5.

(15)

Desafio de Programação

Um número natural é triangular se é igual

à soma dos

n

primeiros números naturais

consecutivos, a partir de 1. Por exemplo,

1, 3, 6, 10, 15, ... são triangulares.

Dado um natural

n>=1

, informe se ele é

(16)

Repetição com pós-condição –

do-while

do-while:

 O corpo do laço é executado

uma ou mais vezes.

Sintaxe

do

{

corpo do laço;

(17)

Exemplo:

#include <stdio.h> int main(void) { int x; do {

printf("Digite um inteiro positivo: "); scanf("%d", &x);

} while (x <= 0);

printf("O valor digitado foi %d\n",x); return 0;

(18)

Exercício

Faça um programa que simule uma calculadora

com as operações de produto e divisão.

O programa deve ler dois números ponto-flutuante e a

operação aritmética desejada. Calcular a resposta e

exibir na tela. Após, deve perguntar ao usuário se

deseja realizar outro cálculo. Finalizar o programa

apenas quando o usuário desejar.

(19)

Comandos de desvio incondicional

As vezes é preciso alterar o fluxo de controle de

uma estrutura de laço.

As duas formas para se alterar o fluxo de

controle são:

comando

break

ou

continue

.

break

Encerra o laço

continue

(20)

Exemplos: break

(verificar se um nº é primo)

#include <stdio.h>

int main(void) { int n, k;

printf("\nDigite um numero: "); scanf("%u", &n);

// verifica se eh divisivel por 2 ate n-1

for ( k=2; k<=n-1; k++) { if ( n%k == 0 ) {

break; // interrompe se for divisivel por k

} }

if ( k==n ){

printf("\nO numero e' primo"); } else {

printf("\nO numero nao e' primo"); }

(21)

Exemplos: continue

(exibir números pares)

#include <stdio.h>

int main(void) {

int i=0;

printf("Os cinco primeiros numeros pares:\n"); for(i=0; i<10; i++)

{

if ( i%2 ) == 1 {

continue; // se 'i' for impar, reinicia o laco

}

printf("%d ",i); }

(22)

Considerações –

continue

O comando

continue

força a próxima

interação do laço e pula o código que estiver

abaixo.

Nos laços

while

e

do-while

ele faz com que o

controle do programa vá diretamente para o teste

condicional e depois continue o processo do laço.

Num

for

, o computador primeiro executa o

incremento do laço e, depois, o teste condicional, e

finalmente faz com que o laço continue.

O comando

continue

deve ser evitado, pois

(23)

Laços Aninhados

É possível aninhar um laço dentro do outro.

Quando fizer isto, lembre-se de que qualquer comando

break ou continue se aplicam ao laço

mais interno

.

int i, j;

for (i=0; i<3; i++) {

for (j=0; j<5; j++) { if (j = = 2) {

continue;

}

(24)

Revisão (1/2)

 A possibilidade de repetir ações é uma das razões pelas quais

usamos o computador. Os laços for, while e do-while são as estruturas oferecidas por C para cumprirem esta tarefa.

 O operador vírgula permite que sejam inicializadas ou

incrementadas mais de uma expressão no laço for.

 Uma construção agrupada por chaves é tratada como uma

única instrução.

 O corpo de um laço while pode ser nunca executado.

Entretanto o corpo de um laço do-while é sempre executado pelo menos uma vez.

 Laços podem ser colocados no corpo de outros laços à

vontade em C.

 Os operadores relacionais têm precedência maior que a do

(25)

Revisão (2/2)

 Num laço while a expressão de teste é avaliada antes do

corpo ser executado;

 Num laço do-while a expressão de teste é avaliada depois

do corpo do laço ser executado;

 Um laço do-while é sempre encerrado por ponto-e-vírgula;  O comando break causa a saída imediata do laço que o

contém.

 O comando continue força a próxima interação do laço que o

Referências

Documentos relacionados

 Uso em contextos de testes separados para cada um dos valores passíveis de serem assumidos por uma variável ou expressão  Decisões múltiplas.

De acordo com estes resultados, e dada a reduzida explicitação, e exploração, das relações que se estabelecem entre a ciência, a tecnologia, a sociedade e o ambiente, conclui-se

SSH para controlar o plano do nó do cálculo com calor-admin: endereço IP de Um ou Mais Servidores Cisco ICM NT do heat-admin@&lt; do ssh &gt;.. Mude à raiz:

O contexto internacional marcado pela polarização característica da Guerra Fria, a intensa campanha anticomunista travada contra o governo de João Goulart, o posicionamento da

Ao final da operação da máquina, o programa imprime o total de tubos cortados e o número de tubos rejeitados, tal como mostrado no exemplo de execução do programa, a seguir?. Exemplo

Todos os procedimentos de inspeção para entrada de produtos, durante a produção e durante a aceitação final, devem ser seguidos de acordo com as

17 CORTE IDH. Caso Castañeda Gutman vs.. restrição ao lançamento de uma candidatura a cargo político pode demandar o enfrentamento de temas de ordem histórica, social e política

Devido à grande parcela de jovens que foram identificados entre as vítimas, é imprescindível a elaboração de programas de prevenção ao afogamento no ambiente escolar,