solu es iterativas com la os n.
Download
Skip this Video
Loading SlideShow in 5 Seconds..
Soluções Iterativas com Laços PowerPoint Presentation
Download Presentation
Soluções Iterativas com Laços

Loading in 2 Seconds...

play fullscreen
1 / 41

Soluções Iterativas com Laços - PowerPoint PPT Presentation


  • 74 Views
  • Uploaded on

Soluções Iterativas com Laços. Como poderiamos imprimir 50 vezes um mesmo texto? Ou imprimir os números de 1 a 1000 ?. O Laço While. while ( teste-de-continuação ) { comandos }. O Laço While. int n = 0; while (n < 50) { System. out.println ("Bom Jogo!"); n++; }

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about 'Soluções Iterativas com Laços' - lynn


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
solu es iterativas com la os
Soluções Iterativas com Laços

Como poderiamos imprimir 50 vezes um mesmo texto?

Ou imprimir os números de 1 a 1000 ?...

o la o while
O Laço While

while (teste-de-continuação)

{

comandos

}

o la o while1
O Laço While

int n = 0;

while (n < 50)

{

System.out.println("Bom Jogo!");

n++;

}

System.out.println("Fim das mensagens");

o la o while2
O Laço While

int n = 50;

while (n > 0)

{

System.out.println("Bom Jogo!");

n--;

}

System.out.println("Fim das mensagens");

o la o while3
O Laço While

E se eu quisesse perguntar o número de vezes a ser impresso?

import java.util.Scanner;

public class Cap04Ap04

{

public static void main(String[] args)

{

Scanner entrada = new Scanner(System.in);

System.out.print("Entre numero de linhas a imprimir: ");

int n = entrada.nextInt();

while (n > 0)

{

System.out.println("Bom Jogo!");

n--;

}

System.out.println("Fim das mensagens");

}

}

algo mais til
Algo mais útil...

n! = n  (n-1)  (n-2)  … 1.

int f;

f = 1;

while (n>1)

{

f *= n; // equivalente a f = f * n;

n--; // equivalente a n = n-1

}

Ou

int f;

f = 1;

while (n>1)

f *= n--;

return f;

while
While

f n

1 4 valores na entrada do laço

4 3 1a. iteração permitida (pois n=4 > 1): f = 1 x 4 e n se torna 3

12 2 2a. iteração permitida (pois n=3 > 1): f = 4 x 3 e n se torna 2

24 1 3a. iteração permitida (pois n=2 > 1): f = 12 x 2 e n se torna 1

24 laço termina (pois n=1) e o valor de f = 24 retorna

OBS:

11! = 39916800

12! = 479001600

13! = 6227020800

o que faz este programa
O que faz este programa?

int contador = 0;

While (true)

{

contador += 1

System.out.print(contador + “\n”);

}

fun es exercicio
Funções – Exercicio

A série de Taylor que calcula o seno de um número é dada por:

Escreva um programa que calcula o seno de um número

exerc cio
Exercício

Implementar a função fatorial com o For

exerc cio1
Exercício

Implementar o jogo da Adivinhação

exercicio
Exercicio

public class Cap04Ap06

{

public static void main(String[] args)

{

int segredo, chute, conta=0, a=1, b=6;

Scanner entrada = new Scanner(System.in);

segredo = a + (int)(Math.random()*b); // numero no intervalo [a,a+b)

do

{

System.out.print("Chute um numero: ");

chute = entrada.nextInt();

conta++;

if (chute==segredo)

{

System.out.println("ACERTOU! :-)");

conta = 0;

}

else

{

System.out.println("errou :-(");

}

} while (conta != 0);

}

}

conceito de fun o matem tica
Conceito de Função Matemática

função f(x,y)= x2 + y2 mapeia (1,2) a 5 e (2,3) a 13, ou seja: f(1,2)= 5 e f(3,3)= 13.

uma função mapeia valores de seu domínio em valores de seu contra-domínio

Máquinas Funcionais x Máquinas Procedimentais

defini o de fun es
Definição de Funções

modificadores tipoRetorno nome(argumentos)

{

comandos

}

a primeira linha é chamada de assinatura do método (method signature) ou cabeçalho do método (method header) e o conjunto de comandos é denominado de corpo do método.

defini o de fun es2
Definição de Funções

- os nomes das variáveis no main não precisam ser os mesmos nomes usados pelo universo de um método (porque são valores que são passados)

- o método é público (public), no sentido de que qualquer parte do programa pode usá-lo,

defini o de fun es3
Definição de Funções

public class Cap04Ap01

{

public static int max3(int a, int a2, int a3)

{

int max = a;

if (a2>max)

max= a2;

if (a3>max)

max= a3;

return max;

}

public static void main(String[] args)

{

int a=1;

int b=7;

int c=10;

int i = max3(a,b,c);

System.out.println("Máximo= "+i);

}

}

slide22
Void...

public class Cap04Ap02

{

public static void discriminante(int a, int b, int c)

{

double d= b*b-4*a*c;

if (d<0)

{

System.out.println("Não existem raízes reais");

}else

{

if (d==0)

{

System.out.println("Existem duas raízes reais iguais");

}else

{

System.out.println("Existem duas raízes reais diferentes");

}

}

}

public static void main(String[] args)

{

int a=1;

int b=6;

int c=9;

discriminante(a,b,c);

}

}

sobrecarga de m todos
Sobrecarga de Métodos

public static int min(int a, int b) // metodo 1

{

if (a<b)

return a;

return b;

}

public static double min(double a, double b) // metodo 2

{

if (a<b)

return a;

return b;

}

public static int min(int a, int b, int c) // metodo 3

{

return min(min(a,b),c);

}

public static void main(String[] args)

{

System.out.println(min(7,2));

System.out.println(min(5,3,1));

System.out.println(min(7.0,2.0));

}

Métodos podem ter o mesmo nome e lista de argumentos diferentes. Este recurso é denominado de sobrecarga de método (method overloading).

sobrecarga de m todos1
Sobrecarga de Métodos

A sobrecarga de métodos é exclusivamente baseada na lista de argumentos. Mudanças nos modificadores ou tipoRetorno não sobrecarregam métodos.

O compilador sempre procura pelo método mais específico, num processo denominado de resolução de sobrecarga (overload resolution).

O que ocorreria se tivéssemos?:

min(3,7)

public static double min(int a, double b)

...

public static double min(double a, int b)

erro dizendo que a referência a min é ambígua

exerc cio2
Exercício

Sem usar if, escreva o método boolean intervalo(int x, int a, int b) que testa se a <= x <= b , onde x, a e b são números inteiros.

Sobrecarregue o método do exercício anterior para x, a e b sendo números reais e teste para intervalo(3,1,5), intervalo(2.5,1,5) e intervalo(2.5,1,5).

O número decimal 0.1 não é representado com precisão pelo sistema binário dos computadores, de maneira que a==b é falso se double a = 1.2; e double b = 12*0.1;. Escreva o método boolean igual(double x, double y) que confirma x ser igual a y somente se |x y| < TOL, onde | | significa o módulo e TOL é uma constante pública e estática definida por você. Teste o método para as variáveis a e b definidas acima.

recurs o
Recursão

Processo de Indução

Base da Indução: Condição que não implica recursão, deve ser uma parada obrigatória

Passo da recursão: Deve se aproximar um pouco mais da solução. Pm é verdade, então Pm+1 também é verdade, desde que saibamos construir a solução para o incremento de 1 grau de complexidade a partir de Pm.

recurs o1
Recursão

Expansão e Contração

recurs o exemplo
Recursão - Exemplo

public static long fat(int n)

{

if (n==0)

return 1;

else

return n*fat(n-1);

}

slide31

Exercicio: implementar a serie de Fibonacci

Esta seqüência foi descrita primeiramente por Leonardo de Pisa, também conhecido como Fibonacci (Dc. 1200), para descrever o crescimento de uma população de coelhos. Os números descrevem o número de casais em uma população de coelhos depois de n meses se for suposto que:

-no primeiro mês nasce apenas um casal,

-casais amadurecem sexualmente (e reproduzem-se) apenas após o segundo mês de vida,

-não há problemas genéticos no cruzamento consangüíneo,

-todos os meses, cada casal fértil dá a luz a um novo casal, e

-os coelhos nunca morrem.

F(n) = 0, se n = 0

F(n) = 1, se n = 1

F(n) = F(n-1) + F(n-2), para n >= 2

Este método recursivo gera um processo chamado de recursão de árvore, onde cada chamada gera duas outras. Este processo é muito pouco eficiente, pois o tempo de execução cresce exponencialmente com n e as chamadas recursivas são repetitas várias vezes.

dados compostos com vetores
Dados Compostos com Vetores

Dependendo do problema que queremos resolver utilizando um (ou mais de um) programa(s) de computador, podemos encontrar a situação em que uma grande quantidade de dados precisa ser manipulada simultaneamente em um objeto.

vetores unidimensionais
Vetores unidimensionais

Sintaxe:

tipo[] nomeVetor= new tipo[tamanho];

Exemplo:

int [] numeros = new int[2];

numeros[0] = 1;

numeros[1] = 2;

numeros[2] = 3; // Está errado, porque?

vetores unidimensionais1
Vetores unidimensionais

class DespesasAnuais

{

double[] despEduc = new double[12];

double maxDesp()

{

int i = 1;

double max = despEduc[0];

while (i < 12)

{

if (despEduc[i] > max)

max = despEduc[i];

i++;

}

return max;

}

public static void main(String[] arg)

{

DespesasAnuais desp2008 = new DespesasAnuais();

desp2008.despEduc[0] = 20.01;

desp2008.despEduc[1] = 10.11;

desp2008.despEduc[2] = 22.01;

desp2008.despEduc[3] = 13.11;

desp2008.despEduc[4] = 25.01;

desp2008.despEduc[5] = 19.11;

double despMax = desp2008.maxDesp();

System.out.println(despMax);

}

}

exercicio1
Exercicio

Escreva um programa que leia os dados da inflação de cada mês ao longo de um ano e calcule qual foi a inflação de todo o ano.

vetores bidimensionais
Vetores Bidimensionais

Sintaxe:

tipo[][] nomeVetor= new tipo [tamanho1][tamanho2];

Exemplo:

double[][] matrizPedagio = new double[10][10];

matrizPedagio[0][0] = 2,50

matrizPedagio[0][1] = 7,50;

...

exercicio2
Exercicio

Crie uma matriz de duas dimensões, que contenha a distancia entre as cidades A e B:

Distancia[A][B] = 100km

Desenvolva uma função que recebe um par de cidades e retorna a distancia entre elas.

exerc cios
Exercícios

Construa um programa que receba duas matrizes quadradas de tamanho N por N e calcule a soma dessas duas matrizes.

Construa um programa que receba duas matrizes quadradas de tamanho N por N e calcule o produto dessas duas matrizes (dica: você precisará de três índices de controle).

exemplo de flags
Exemplo de Flags

Ler um vetor de números até encontrar o numero 0