Você está na página 1de 17

CNEC Gravata

Tcnicas de Programao
e
Programao e Algoritmos
TP07
Prof. Giovane Barcelos
giovane@professor.facensa.edu.br

Roteiro
1. Conceitos Bsicos

SEQUENCIAL

2. Estrutura, variveis, entrada, sada


3. Expresses e converses
4. Expresses, comandos condicionais, seleo simples
e composta, debug
5. Seleo encadeada e mltipla escolha

DECISO

SUB-ROTINA

6. Sub-rotinas

7. Repetio, contadores e acumuladores REPETIO


8. Vetor e Matriz
MATRIZ
9. Arquivos

Pg. 2

ARQUIVOS

GoByz

De 17

Repetio

O que uma estrutura de repetio?


Estrutura de repetio uma estrutura de desvio de
fluxo de controle que repete um conjunto de
instrues computacionais dependendo de uma
condio ser verdadeira ou falsa
Ou seja, repete um bloco de instrues dependentes
de uma condio
Repete um bloco de cdigo um nmero determinado
ou indeterminado de vezes
A estrutura de repetio til para reduzir e
viabilizar blocos de cdigo. Imagine que fosse
necessrio escrever um programa que mostrasse os
1000
primeiros
nmeros
inteiros
positivos
comeando em um. Como isto seria possvel?

Pg. 3

GoByz

De 17

Repetio

while (condio) { comandos }


A estrutura while executa um bloco de comandos
enquanto uma dada condio for verdadeira
Estrutura:
while (condicao) comando;
while (condicao) { comandos }

Pg. 4

GoByz

De 17

Repetio

Exemplo while
Mostrar os 1000 primeiros nmeros inteiros positivos
comeando em um
public class Go_17 {
public static void main(String[] args) {
int numero = 1;

Condio de
Repetio

Pg. 5

while (numero < 1001) {


System.out.printf("%d\n", numero);
numero++;
}
Passo ou Incremento

da Varivel de
Controle de Repetio

GoByz

De 17

Repetio

Exemplo while
Mostrar os N primeiros nmeros inteiros positivos
comeando em um
public class Go_18 {
public static void main(String[] args) {
Scanner ler = new Scanner(System.in);
System.out.print("Nmero: ");
int numero = ler.nextInt();

}
Pg. 6

int inteiroPositivo = 1;
while (inteiroPositivo <= numero) {
System.out.printf("%d\n", inteiroPositivo);
inteiroPositivo++;
}

GoByz

De 17

Repetio
while

O que acontece se a condio for falsa na primeira


vez?
while (a != a) a = a + 1;
O que acontece se a condio for sempre verdadeira?
while (a == a) a = a + 1;

Pg. 7

GoByz

De 17

Repetio

Determinada
Loop (repetio) determinado:
double preco = ler.nextDouble();
while (contador <= numeroItens) {
total = total + preco;
contador++;
preco = ler.nextDouble();
}
Loop (repetio) indeterminado:
double preco = ler.nextDouble();
while (preco > 0) {
total = total + preco;
preco = ler.nextDouble();
}
Pg. 8

GoByz

De 17

Repetio

do { comandos } while ( condicao );


Da mesma forma que o while, A estrutura do while
executa um bloco de comandos enquanto uma dada
condio for verdadeira
A diferena em relao ao while que ela SEMPRE
entra no bloco de comandos na primeira vez, visto
que, a condio verificada ao final do bloco
Estrutura:
do comando; while ( condio );
do { comandos } while ( condio ) ;

Pg. 9

GoByz

De 17

Repetio

Exemplo do while
Algoritmo que percorre os nmeros de 1 a 10 e
classifica estes em pares e impares.
public class Go_22 {
public static void main(String[] args) {
int numero = 1;

Pg. 10

do {
if ((numero % 2) == 0){
System.out.printf("O nmero %d par!\n", numero);
} else {
System.out.printf("O nmero %d impar!\n",
numero);
}
numero++;
} while ( numero < 11);

GoByz

De 17

Repetio
Problemas

Os principais problemas encontrados com o while e


do while so:
Onde so inicializadas as variveis usadas na
condio da repetio?
A varivel de controle da condio, tambm
chamada de passo, pode estar em qualquer ponto
da repetio

Pg. 11

GoByz

De 17

Repetio

for (inicio ; condio ; passo) { comandos ;}


O comando for resolve os problemas apresentados
anteriormente pelo while e do while
Estrutura:
for (incio; condio; passo) comando;
for (incio; condio; passo) { comandos };
Incio: Uma ou mais atribuies e/ou declaraes de
variveis, separadas por ,
Condio: idntico ao while e do while
Passo: Um ou mais comandos, separados por ,

Pg. 12

GoByz

De 17

Repetio

Exemplo for
Mostrar os N primeiros nmeros inteiros positivos
comeando em um
public class Go_19 {
public static void main(String[] args) {
Scanner ler = new Scanner(System.in);
System.out.print("Nmero: ");
int numero = ler.nextInt();

Pg. 13

for ( int inteiroPositivo = 1;


inteiroPositivo <= numero;
inteiroPositivo++ ){
System.out.printf("%d\n", inteiroPositivo);
}

GoByz

De 17

Repetio

Exemplo for
Mostrar os 1000 primeiros nmeros inteiros positivos
comeando em um
public class Go_19 {
public static void main(String[] args) {
for (int numero = 1; numero < 1001; numero++){
System.out.printf("%d\n", numero);
}
}
}

Pg. 14

GoByz

De 17

Repetio

Quando usar o for, while e do while ?


Do ponto de vista de implementao qualquer um
deles intercambivel
Entretanto, para clareza de cdigo sugerido:
Se o cdigo uma repetio determinada utilize
sempre o for
Se a repetio indeterminada e o bloco de cdigo
s pode ser iniciado se a condio for verdadeira,
d preferncia ao while
Se a repetio indeterminada e o bloco deve ser
iniciado sempre na primeira vez independente da
condio ser verdadeira, de preferncia ao do
while
Esta em dvida de qual utilizar, implemente com o
for
Pg. 15

GoByz

De 17

Repetio
Uso Prtico

Castigo: Escreva 500 vezes no quadro a frase


No vou falar mais durante a aula!
public class Go_21 {
public static void main(
String[] args) {
for (int conta = 1;
conta < 501;
conta++) {
System.out.println(
"No vou falar +
mais durante a aula!");
}
}
}

Pg. 16

GoByz

Boa Tentativa!

De 17

Repetio

Vamos Praticar!

Pg. 17

GoByz

De 17

Você também pode gostar