Laços de Repetição

  • 4,999 views
Uploaded on

 

More in: Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
No Downloads

Views

Total Views
4,999
On Slideshare
0
From Embeds
0
Number of Embeds
5

Actions

Shares
Downloads
51
Comments
2
Likes
1

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. Tecnologia em Sistemas para Internet - IFMSAula Extra – Laços de RepetiçãoTópicos em ProgramaçãoProf.º Msc. Sidney Roberto de Sousa
  • 2. Tec. em Sistemas para Internet - IFMS 2O que veremos nesta aula?● Porquê utilizar laços de repetição?● O laço de repetição while● O laço de repetição do while● O laço de repetição for
  • 3. Tec. em Sistemas para Internet - IFMS 3Problema● Imagine que devemos resolver o seguinteproblema:Escreva um programa para imprimir na tela asequência de 1 até 4 em uma mesma linha.● Parece simples!
  • 4. Tec. em Sistemas para Internet - IFMS 4SoluçãoSystem.out.println(“1 2 3 4”);
  • 5. Tec. em Sistemas para Internet - IFMS 5Problema● Agora, vamos redefinir o nosso problema:Escreva um programa que leia do usuário umvalor inteiro positivo n e imprima na tela asequência de 1 até n em uma mesma linha.● Vamos tentar resolver este problemautilizando a mesma “estratégia” da soluçãoanterior (que eu batizei de solução “não muitointeligente”...)
  • 6. Tec. em Sistemas para Internet - IFMS 6Solução “não muito inteligente”System.out.println("Digite um numero inteiro positivo:");Scanner leitor = new Scanner(System.in);int n = leitor.nextInt();// Garantindo que o valor de n seja positivo...if (n < 0) {n = n * -1;} else if (n == 0) {n = 1;}// E lá vamos nós...if (n == 1) {System.out.println("1");} else if (n == 2) {System.out.println("1 2");} else if (n == 3) {System.out.println("1 2 3");} else if (n == 4) {System.out.println("1 2 3 4");} else if (n == 5) {System.out.println("1 2 3 4 5");} else if (n == 6) {System.out.println("1 2 3 4 5 6");}// .. continua... até quando?
  • 7. Tec. em Sistemas para Internet - IFMS 7Analisando a solução anterior● Bem, como dito, a solução anterior não é muito inteligente:– Sabemos qual número o usuário irá digitar?– Quantas condições lógicas são necessárias para solucionar oproblema para qualquer número positivo que o usuário digitar?● Precisamos escrever um código que seja capaz de imprimir todos osnúmeros da sequência, porém utilizando um número fixo e mínimo delinhas de código● Para tanto, precisamos de alguma forma escrever um código que repitaa impressão dos números de forma categórica e estratégica● Solução inteligente: utilizar um laço de repetição!
  • 8. Tec. em Sistemas para Internet - IFMS 8Solução utilizando o laço whileClasse ExemploWhile(abaixo no blog)
  • 9. Tec. em Sistemas para Internet - IFMS 9Analisando a solução com o laço whileint contador = 1;while (contador <= n) {    System.out.print(contador + " ");    contador++;}
  • 10. Tec. em Sistemas para Internet - IFMS 10Analisando a solução com o laço whileint contador = 1;while (contador <= n) {    System.out.print(contador + " ");    contador++;}Enquanto...
  • 11. Tec. em Sistemas para Internet - IFMS 11Analisando a solução com o laço whileint contador = 1;while (contador <= n) {    System.out.print(contador + " ");    contador++;}Enquanto o valor da variável contador formenor ou igual ao valor da variável n...
  • 12. Tec. em Sistemas para Internet - IFMS 12Analisando a solução com o laço whileint contador = 1;while (contador <= n) {    System.out.print(contador + " ");    contador++;}Enquanto o valor da variável contador formenor ou igual ao valor da variável n, repita aexecução do código localizado entre as chaves.
  • 13. Tec. em Sistemas para Internet - IFMS 13Analisando a solução com o laço whileint contador = 1;while (contador <= n) {    System.out.print(contador + " ");    contador++;}A variável contador é inicializada com o valor1, que é o primeiro valor que o nosso programadeve imprimir...
  • 14. Tec. em Sistemas para Internet - IFMS 14Analisando a solução com o laço whileint contador = 1;while (contador <= n) {    System.out.print(contador + " ");    contador++;}A cada iteração, o valor da variável contador éimpresso. Logo em seguida, o valor da variávelcontador é incrementado em uma unidade.Assim, na próxima iteração, o valor a serimpresso é uma unidade maior que o valor atual.
  • 15. Tec. em Sistemas para Internet - IFMS 15Sobre o laço while...● O laço while só é executado se e somente sea sua condição lógica de manutenção forsatisfeita● Assim, para que um laço while execute aomenos uma iteração, a sua condição lógica demanutenção deve ser satisfeita ao menosuma vez
  • 16. Tec. em Sistemas para Internet - IFMS 16Solução utilizando o laço do whileClasse ExemploDoWhile(abaixo no blog)
  • 17. Tec. em Sistemas para Internet - IFMS 17Analisando a solução com o laço do whileint contador = 0;do {    contador++;    System.out.print(contador + " ");} while (contador < n);
  • 18. Tec. em Sistemas para Internet - IFMS 18Analisando a solução com o laço do whileint contador = 0;do {    contador++;    System.out.print(contador + " ");} while (contador < n);Repita...
  • 19. Tec. em Sistemas para Internet - IFMS 19Analisando a solução com o laço do whileint contador = 0;do {    contador++;    System.out.print(contador + " ");} while (contador < n);Repita a execução do trecho de código localizadoentre as chaves...
  • 20. Tec. em Sistemas para Internet - IFMS 20Analisando a solução com o laço do whileint contador = 0;do {    contador++;    System.out.print(contador + " ");} while (contador < n);Repita a execução do trecho de código localizadoentre as chaves enquanto o valor da variávelcontador for menor que o valor da variável n.
  • 21. Tec. em Sistemas para Internet - IFMS 21Analisando a solução com o laço do whileint contador = 0;do {    contador++;    System.out.print(contador + " ");} while (contador < n);A variável contador é inicializada com o valor 0.Este não é o valor correto do primeiro valor aser impresso, porém...
  • 22. Tec. em Sistemas para Internet - IFMS 22Analisando a solução com o laço do whileint contador = 0;do {    contador++;    System.out.print(contador + " ");} while (contador < n);… no início de cada iteração, o valor da variávelcontador é incrementado em uma unidade.Logo em seguida, o valor correto é impresso natela.
  • 23. Tec. em Sistemas para Internet - IFMS 23Analisando a solução com o laço do whileint contador = 0;do {    contador++;    System.out.print(contador + " ");} while (contador < n);O laço é executado até que o valor da variável contadorseja menor que o valor da variável n. Isto parece um tantoanti-intuitivo no início mas, se você analisar o código acima,você verá que esta condição se deve ao fato de que oincremento do valor da variável contador é realizado antesde que este seja impresso na tela.
  • 24. Tec. em Sistemas para Internet - IFMS 24Sobre o laço do while...● O laço do while sempre executa ao menosuma iteração● Assim, para que um laço do while executeapós a primeira iteração, a sua condiçãológica de manutenção deve ser satisfeita aomenos uma vez
  • 25. Tec. em Sistemas para Internet - IFMS 25Solução utilizando o laço forClasse ExemploFor(abaixo no blog)
  • 26. Tec. em Sistemas para Internet - IFMS 26Analisando a solução com o laço forfor(int contador = 1; contador <= n; contador++) {    System.out.print(contador + " ");}
  • 27. Tec. em Sistemas para Internet - IFMS 27Analisando a solução com o laço forfor(int contador = 1; contador <= n; contador++) {    System.out.print(contador + " ");}Para...
  • 28. Tec. em Sistemas para Internet - IFMS 28Analisando a solução com o laço forfor(int contador = 1; contador <= n; contador++) {    System.out.print(contador + " ");}Para o valor de contador partindo de 1...
  • 29. Tec. em Sistemas para Internet - IFMS 29Analisando a solução com o laço forfor(int contador = 1; contador <= n; i++) {    System.out.print(contador + " ");}Para o valor de contador partindo de 1 até atingiro valor de n..
  • 30. Tec. em Sistemas para Internet - IFMS 30Analisando a solução com o laço forfor(int contador = 1; contador <= n; contador++) {    System.out.print(contador + " ");}Para o valor de contador partindo de 1 até atingir ovalor de n, incrementando o valor de contador emuma unidade a cada iteração...
  • 31. Tec. em Sistemas para Internet - IFMS 31Analisando a solução com o laço forfor(int contador = 1; contador <= n; contador++) {    System.out.print(contador + " ");}Para o valor de contador partindo de 1 até atingir ovalor de n, incrementando o valor de contador emuma unidade a cada iteração, repita o trecho de códigoentre as chaves.
  • 32. Tec. em Sistemas para Internet - IFMS 32Analisando a solução com o laço forfor(int contador = 1; contador <= n; contador++) {    System.out.print(contador + " ");}O primeiro argumento de um laço for contém asinicializações desejadas para o laço. No caso, avariável contador é inicializada com o valor 1. Estainicialização é executada somente uma vez, antesmesmo da execução da primeira iteração do laço.
  • 33. Tec. em Sistemas para Internet - IFMS 33Analisando a solução com o laço forfor(int contador = 1; contador <= n; contador++) {    System.out.print(contador + " ");}O segundo argumento de um laço for é a condiçãológica de manutenção do laço. Ou seja, é o teste lógicorealizado antes de cada iteração para avaliar se aiteração deve ser executada ou se o laço deve parar deexecutar iterações. No caso, o laço executará enquantoo valor da variável contador for menor ou igual ao valorda variável n.
  • 34. Tec. em Sistemas para Internet - IFMS 34Analisando a solução com o laço forfor(int contador = 1; contador <= n; contador++) {    System.out.print(contador + " ");}O terceiro e último argumento de um laço for contém ocódigo a ser executado no final de cada iteração. Nocaso, após o valor da variável contador ser exibido, eleé incrementado em uma unidade.
  • 35. Tec. em Sistemas para Internet - IFMS 35Ordem de execuçãofor(int contador = 1; contador <= n; contador++) {    System.out.print(contador + " ");}Executado somente uma vez, antes do laço forcomeçar a executar a primeira iteração.
  • 36. Tec. em Sistemas para Internet - IFMS 36Ordem de execuçãofor(int contador = 1; contador <= n; contador++) {    System.out.print(contador + " ");}Executado sempre, antes da execução de cadaiteração.
  • 37. Tec. em Sistemas para Internet - IFMS 37Ordem de execuçãofor(int contador = 1; contador <= n; contador++) {    System.out.print(contador + " ");}Executado sempre, após a execução de cadaiteração.
  • 38. Tec. em Sistemas para Internet - IFMS 38Exemplo laço forPara um exemplo mais complexo, veja aclasse ExemploFor2(abaixo no blog)
  • 39. Tec. em Sistemas para Internet - IFMS 39Thats all, folks!Quaisquer dúvidas, chore fale comigo em salade aula ou me mande um e-mail:sidney.sousa@ifms.edu.br