9.1.2 Laços Controlados por Entrada: Contador



Documentos relacionados
P r o g r a m a ç ã o d e C o m p u t a d o r e s 1 o S e m P r o f. A n d r é A m a r a n t e L u i z L A B 5 tag %2d while printf PE1:

Programação científica C++

Introdução à Programação. Armazenamento de Grande Quantidade de Informação Usando Vetores

Convertendo Algoritmos para a Linguagem C

Estruturas de Repetição

INTRODUÇÃO À LINGUAGEM C++

José Romildo Malaquias

02. [Manzano, 1996] Escreva um programa em C que apresente os quadrados dos números inteiros de 15 a 200.

9 Comandos condicionais

Prof. Vania Gimenez.Notas de aula Lógica de programação- Este material não substitui os livros indicados no site no link bibliografia.

14.1 Vetor - Problemas

3. INTRODUÇÃO À LINGUAGEM C 3.1. CONCEITOS BÁSICOS. Lógica de Programação

compreender a importância de cada estrutura de controle disponível na Linguagem C;

insfcanceof new public switch transient while byte continue extends for int null

Algoritmos e Programação

Estruturas de repetição (Ciclos)

Comandos de repetição while

LINGUAGEM C. Estrutura básica de um programa

Laboratório de Programação I

7. Estrutura de Decisão

17 - Funções e Procedimentos em C Programação Modular

Conceitos básicos da linguagem C

Capítulo 8. CICLOS. Tabela 8.1 Programa8a.f90.

Notas de Aula de Algoritmos e Programação de Computadores

Programação: Estruturas de seleção

Técnicas de Programação I

Bem vindo Joe Ramone!

Sumário Algoritmos e Estrutura de Dados Repetição

Programação I. Departamento de Engenharia Rural Centro de Ciências Agrárias

Comandos If-else. Unesp Campus de Guaratinguetá. Curso de Programação Computadores Prof. Aníbal Tavares Profa. Cassilda Ribeiro. 5.

Exercícios de Fixação Pseudocódigo e Estruturas Básicas de Controle

6 - A Lógica da Programação Enlaçamento

Linguagem de Programação I

LÓGICA DE PROGRAMAÇÃO. Vitor Valerio de Souza Campos

Universidade Federal de Rondônia Técnicas de Desenvolvimento de Programas Lista 4

Estruturas de Controle em PHP

Resumo da Matéria de Linguagem de Programação. Linguagem C

Linguagem C. Programação Estruturada. Fundamentos da Linguagem. Prof. Luis Nícolas de Amorim Trigo

Linguagem C: Estruturas de Controle. Prof. Leonardo Barreto Campos 1

Programação WEB I Estruturas de controle e repetição

Algoritmos e Programação. Curso de Engenharia de Produção Prof. Ms. Rogério Cardoso rogerio.cardoso@aedu.com professor@rogeriocardoso.com.

Estrutura Condicional C++

IFTO LÓGICA DE PROGRAMAÇÃO AULA 05

COMANDO DA AERONÁUTICA ESCOLA DE ESPECIALISTAS DE AERONÁUTICA SUBDIVISÃO DE ADMISSÃO E DE SELEÇÃO

VisuALG Estruturas de Repetição. Professores: Vilson Heck Junior Felipe Schneider Costa

Algoritmo Iterativo. Dilema do Martelo x Edifício. O Martelo. O Edifício 01/06/2014. Dilema das ações x declarações

1. Fazer um programa em C que pergunta um valor em metros e imprime o correspondente em decímetros, centímetros e milímetros.

ALGORITMOS E FLUXOGRAMAS

Estruturas de Repetição

Programação. MEAer. Bertinho Andrade da Costa. Instituto Superior Técnico. Introdução ao Pré-Processador. 2011/2012 1º Semestre

Algoritmos Estruturas Seqüenciais. José Gustavo de Souza Paiva

Linguagem C: for. Introdução à linguagem C(++) Profs. Anilton, Lasaro e Paulo Coelho. Faculdade de Computação Universidade Federal de Uberlândia

INTRODUÇÃO À PROGRAMAÇÃO

Curso de Programação Computadores

5 Apresentando a linguagem C

Linguagem e Técnicas de Programação I Operadores, expressões e funções. Prof. MSc. Hugo Souza Material desenvolvido por: Profa.

Listas (Parte 2) Túlio Toffolo BCC202 Aula 10 Algoritmos e Estruturas de Dados I

Lista de Exercícios 3 Estruturas de Controle Profa Susana M Iglesias

Programação WEB II. Conhecendo o PHP. Prof: Kelly E. Medeiros Bacharel em Sistema de Informação. Módulo III

Estruturas de Dados. Alguns dados não costumam ser tão simples assim... Podem ser compostos por vários dados distintos

Introdução a Programação. Ponteiros e Strings, Alocação Dinâmica

ATENÇÃO!!! Rui Morgado - TLP 2

Introdução a Algoritmos Parte 04

9 Laços. Unesp Campus de Guaratinguetá

Algoritmos e Estruturas de Dados I 01/2013. Estruturas Condicionais e de Repetição (parte 2) Pedro O.S. Vaz de Melo

Algoritmos e Programação Estruturada

Aula 3 Desvio Condicional

AULA 1 AULA 2. Estudo dirigido para as três primeiras AULAS de LPI Professora ANITA MACIEL 1º ESTUDO DIRIGIDO

Introdução a Computação

PROGRAMAÇÃO FUNÇÕES NA LINGUAGEM C

Módulo 10. Medição do Desempenho

Reaproveitando algoritmos

Elementos de programação em C

1 Funções básicas de implementação de arquivos

Universidade Federal do Vale do São Francisco - UNIVASF Colegiado de Engenharia de Computação CECOMP

JavaScript (ou JScript)

Variáveis e Comandos de Atribuição

INF 1007 Programação II

Vamos ver duas telas: Mesa e Itens de uma Mesa, como exemplo.

Plano de Aula. if(condição) { bloco de comandos; } else { bloco de comandos2; }

A linguagem C oferece quatro estruturas de decisão: if, if-else, switch e o operador condicional.

2. OPERADORES ALGORITMOS, FLUXOGRAMAS E PROGRAMAS FUNÇÕES... 10

TÉCNICAS DE PROGRAMAÇÃO

Estruturas de Repetição

INF 1005 Programação I

Estrutura de Dados Básica

Usando um Simulador da Máquina de Turing Claudio Kirner 2010

Tipos de Dados Avançados Vetores e Matrizes

Algoritmos e Estruturas de Dados I. Universidade Federal de São João del-rei Pedro Mitsuo Shiroma Sala 119 Bloco 3

Linguagem C: variáveis, operadores, entrada/saída. Prof. Críston Algoritmos e Programação

Estruturas de Repetição. Programação em Java Estruturas de Repetição

LÓGICA DE PROGRAMAÇÃO PARA ENGENHARIA INTRODUÇÃO À PROGRAMAÇÃO COM C/C++ Prof. Dr. Daniel Caetano

Programação Básica em Arduino Aula 2

cast poderia ser usado também para transformar um real (float) em inteiro. A sintaxe C (float)i pode ser substituída em C++ por float(i).

Comandos Sequenciais if else, e Switch

Neste artigo estudaremos os conceitos relacionados às matrizes unidimensionais (vetores) e multidimensionais.

Algoritmos de Busca em Tabelas

ALP Algoritmos e Programação

Transcrição:

9.1.2 Laços Controlados por Entrada: Contador Exemplo 2- Escreva um algoritmo e um programa em C que dado um Número qualquer, seja calculado e impresso a tabuada desse número. Algoritmo tabuada Variáveis: i,n, resp: inteiro. Início algoritmo escreva ( Qual tabuada deseja imprimir ) Leia (n) i 1. Enquanto ( i 10) faça início resp n * i escreva ( resp ). i i + 1. fim Fim algoritmo Laços 1

9.1.2 Laços Controlados por Entrada: Contador Em linguagem C o algoritmo anterior torna-se //Exemplo 2 - prog tabuada #include <stdio.h> #include <stdlib.h> main() { // inicio programa int i, n, resp; i=1; printf( Qual tabuada vc deseja? ); scanf( %d,&n); While (i <= 10) { //inicio do while resp=n * i; printf( %2d*2d=%2d\n,n,i,resp); i=i+1; } //fim do while system( pause ); }//fim programa Laços 2

9.1.2 Enlaçamento: amento: Laços Controlados por Entrada : Mais Exercícios cios Exemplo 7: Faça um algoritmo e um programa em C que, dadas as notas individuais em três aspectos do ano escolar num curso (Lab, Exame_inter, Exame_final) para um estudante com nº. de matrícula Nmatric, calcule a média final com pesos 20%, 30% e 50%, respectivamente. O relatório de saída é uma linha impressa para cada estudante, fornecendo o número do aluno, suas notas individuais, a média final e dizendo se ele foi aprovado ou reprovado. A entrada é controlada por contador. A variável n_estudantes indica o número de estudantes a ser processado; a variável contador dá o número de registros já processados. Ambas são Laços 37 3 variáveis inteiras.

9.1.2 Enlaçamento: amento: Laços Controlados por Entrada : Mais Exercícios cios Algoritmo Relatório Variáveis Lab, Exame_inter, Exame_final : real Média : real Nmatric, n_estudantes, contador : inteiro Início 1. [Entrar contador de dados, neste caso, número de estudantes] Leia (n_estudantes) 2. [Inicializar contador de registros processados] contador O continua... Laços 4

9.1.2 Enlaçamento: amento: Laços Controlados por Entrada : Mais Exercícios cios 3. [Iniciar repetição controlada por contador]...continuação pg. anterior Enquanto (contador < n_estudante) faça início enquanto 3.1 [Ler os registros dos alunos] Leia (Nmatric, Lab, Exame_inter,Exame_final) 3.2 [Calcular média] Media 0.2*Lab + 0.3*Exame_inter + 0.5*Exame_final 3.3 [Imprimir resultados] Escreva ( Número de matrícula:, Nmatric) Escreva ( Nota Laboratório,Lab) Escreva ( Exame Intermediário:,Exame_inter) Escreva ( Exame Final:, Exame_final) Escreva ( Média Final:, Media) continua... Laços 5

9.1.2 Enlaçamento: amento: Laços Controlados por Entrada : Mais Exercícios cios...continuação pg. anterior Se Média 5.0 Então Escreva ( Aluno Aprovado`) Senão Escreva ( Aluno Reprovado`) 3.4. [atualizar o contador de registros realmente processados] contador contador + 1 Fim enquanto 4. [Terminar] Saída Fim Algoritmo Laços 6

9.1.2 Enlaçamento: amento: Laços Controlados por Entrada : Mais Exercícios cios //Prog01_Lacos Exemplo 7 //usando laços com contador #include <stdlib.h> #include <stdio.h> main() { float Lab, Exame_inter,Exame_final; float Media; int n_estudante,contador,nmatric; //1.Entrar contador de dados, neste caso, número de estudantes] printf("digite o numero de alunos: "); scanf("%d",&n_estudante); printf("\n\n" ); Código em C continua na próxima pag. Laços 7

9.1.2 Enlaçamento: amento: Laços Controlados por Entrada : Mais Exercícios cios //2.Inicializar contador...continuação contador = 0; //3.Iniciar Laço controlado por contador while (contador < n_estudante) { // início enquanto // 3.1 Ler dados dos alunos printf("digite o numero de matricula do aluno: "); scanf("%d/n",&nmatric); printf("digite as notas de Lab, Exame_inter e Exame_final do aluno %d\n",nmatric); scanf("%f%f%f",&lab,&exame_inter,&exame_final); //3.2 [Calcular média] Media = 0.2*Lab+0.3*Exame_inter+0.5*Exame_final; Laços 8

9.1.2 Enlaçamento: amento: Laços Controlados por Entrada : Mais Exercícios cios } //3.3 Imprimir resultados... continuação printf("\tnumero do estudante:%d\n",nmatric); printf("\tnota Laboratorio:%5.2f\n",Lab); printf("\texame Intermediario:%5.2f\n",Exame_inter); printf("\texame Final:%5.2f\n",Exame_final); printf("\tmedia Final:%5.2f ",Media); if (Media <= 5.0) printf( \taluno Reprovado\n ); else printf( \taluno Aprovado\n ); //3.4. Atualizar o contador de registros realmente processados contador= contador +1 ; } // Fim enquanto system("pause"); Laços 9

10 Laços Unesp Campus de Guaratinguetá Curso de Programação Computadores Prof. Aníbal Tavares Profa. Cassilda Ribeiro Ministrado por: Prof. André Amarante

10.1.2 Enlaçamento: amento: Laços Controlados por Entrada : Mais Exercícios cios Ex2: Fazer um algoritmo/programa que imprima os números ímpares entre 1 e m. Algoritmo imprime_int_ímpares Variáveis: i, m inteiro; Inicio algoritmo Leia(m); i 1; Enquanto ( i m) faça inicio Se (i % 2 = 1) então escreva ( i ); fim se i i + 1; fim Fim algoritmo // Programa Números Ímpares. main() { int m, i=1; printf( Entre com m: ); scanf( %d,&m); while (i <= m) { //Início while if (i % 2 == 1) //Ímpar? printf( %d \n, i); i=i+1; } //fim do while system( pause ); }//fim programa Laços 11

10.1.2 Laços Controlados por Entrada: Contador Programa em C Execução para m=2 e i=1 // Programa Números Ímpares. main() { int m, i=1; P1 printf( Entre com m: ); scanf( %d,&m); while (i <= m) { //Início while P2 if (i % 2 == 1) //Ímpar? P3 printf( %d \n, i); P4 i=i+1; } //fim do while system( pause ); Iter. P1 P2 P3 1 i<=2 (v) (v) 1 2 i<=2 (v) (f) - 3 i<=2 (f) - - Resultado na Tela 1 P4 i=2 i=3 - }//fim programa Laços 12

10.1.2 Laços Controlados por Entrada: Contador Ex3: Fazer um algoritmo/programa que imprima de 1 até m apenas os números ímpares (outra versão!). Algoritmo imprime_int_ímpares Variáveis: i, m inteiro; Inicio algoritmo Leia(m); i 1; Enquanto ( i inicio escreva ( i ); i i + 2; fim Fim algoritmo m) faça Só percorre ímpares! // Programa Números Ímpares. main() { int m, i=1; printf( Entre com m: ); scanf( %d,&m); while (i <= m) { //Início while printf( %d \n, i); i=i+2; // Incremento! } //fim do while system( pause ); }//fim programa Laços 13

10.1.2 Laços Controlados por Entrada: Contador // Programa Números Ímpares. main() { int m, i=1; P1 Programa em C Execução para m=5 e i=1 printf( Entre com m: ); scanf( %d,&m); while (i <= m) { //Início while P2 P3 printf( %d \n, i); i=i+2; // Incremento!!!! } //fim do while system( pause ); }//fim programa Iter. P1 P2 1 i<=7 (v) 1 2 i<=7 (v) 3 3 i<=7 (v) 5 Resultado na Tela 1 3 5 P3 i=3 i=5 i=7 4 i<=7 (f) - - Laços 14

10.1.2 Laços Controlados por Entrada: Contador Ex4: Fazer um algoritmo/programa que imprima apenas os m primeiros números pares. Algoritmo imprime_int_pares Variáveis: i,k,m inteiro. Inicio algoritmo Leia(m); i 1; k=1; Enquanto ( k m) faça Se (i % 2 = 0) então escreva ( i ); k k + 1; fim se i i + 1; fim enquanto Fim algoritmo // Programa Números Pares. main() { int m, k, i; i = 1; k = 1; printf( Entre com m: ); scanf( %d,&m); while (k <= m) { //Início while if (i % 2 == 0) //Par? { printf( %d \n, i); } k = k + 1; i=i+1; } //fim do while system( pause"); Laços 15 }//fim programa

10.1.2 Laços Controlados por Entrada: Contador P1 Programa em C // Programa Números Pares. main() { int m, k, i; i = 1; k = 1; printf( Entre com m: ); scanf( %d,&m); while (k < =m) { //Início while P2 if (i % 2 == 0) //Par? { printf( %d \n, i); P3 k = k + 1; P4 } P5 i=i+1; } //fim do while }//fim programa Execução: m=2, i=1 e k=0 Iter. P1 P2 P3 P4 P5 1 k<2 (v) (f) - - i=2 2 k<2 (v) (v) 2 k=1 i=3 3 k<2 (v) (f) - - i=4 4 k<2 (v) (v) 4 k=2 i=5 5 k<2 (f) - - - - Resultado na Tela 2 4 Laços 16

10.1.2 Laços Controlados por Entrada: Contador Ex 5: Dado um valor m, calcular o produto de 1 até m. Idéia: i 1 2 m prod Iteração i prod 0 1 1 1 1 1 2 2 2 3 3 6 Observação: A variável i serve para percorrer as variáveis de 1 até m. Cada vez que um valor é apresentado, ele será multiplicado pelo conteúdo de prod. Portanto, pode-se dizer que i é variável contadora ao passo que prod é variável acumuladora. Laços 17

10.1.2 Laços Controlados por Entrada: Contador Ex 5: Dado um valor m, calcular produto de 1 até m. Algoritmo CalculaProd Variáveis: i, prod: inteiro; Inicio algoritmo i 1; prod 1; Escreva ( digite o valor de m ); Leia(m); Enquanto ( i < m) faça i i + 1; prod prod * i; fim enquanto Escreva( produto=, prod); Fim algoritmo #include <stdio.h> main() Programa em C { // inicio programa int i=1, prod=1; printf( Valor de m: ); scanf( %d,&m); while (i < m) { //inicio do while i=i+1; prod = prod*i; } //fim do while printf( Produto=%d,prod); system( pause ); }//fim programa Laços 18

Observe que o tanto o Ex 5, como o exemplo 5 estão calculando o fatorial de m. Só que um está calculando de trás para frente e o outro de frente para traz. #include <stdio.h> main() { // inicio programa int i=1, prod=1; printf( Valor de m: ); scanf( %d,&m); while (i < m) 10.1.2 Laços Controlados por Entrada: Contador Programa Ex 5 { //inicio while i=i+1; prod = prod*i; } //fim while printf( Produto=%d,prod); system( pause ); }//fim programa Programa Exemplo 5 #include<stdlib.h> #include<stdio.h> main() {int N, Produto, Multiplicador; printf("digite o numero para se calcular o fatorial\n"); scanf("%d",&n); //Inicializar variáveis Produto= 1; Multiplicador=N; while (Multiplicador >= 1) { // inicio while Produto=Produto * Multiplicador; Multiplicador = Multiplicador-1; } //fim while printf("fatorial de %d = %d\n",n,produto); system("pause"); Laços 19 }//fim programa

10.1.2 Laços Controlados por Entrada: Sentinela b) Entrada controlada por sentinela Este método é muito utilizado quando não se sabe a priori quantas vezes o laço vai ser executado. Utiliza-se então, um dado extra no fim do conjunto de dados, de modo que, quando este dado é lido, sabe-se que todos os outros já foram lidos. Exemplo 8: Refazer o exemplo 7 - página 37, considerando que no final dos dados a respeito dos alunos foi inserido um dado extra com o número do aluno igual 0. Quando for lido o número 0 para um aluno, o programa deve parar de calcular as médias. Laços 20

10.1.2 Laços Controlados por Entrada: Sentinela Algoritmo Relatório2 Variáveis Lab, Exame_inter, Exame_final, Media : real Nmatric, n_estudantes : inteiro 1. [Ler os dados do primeiro aluno] Leia (Nmatric, Lab, Exame_inter,Exame_final) 2. [Iniciar repetição controlada por sentinela] Enquanto (Nmatric 0) faça Inicio 2.1 [Calcular a média] Observe aqui, que o primeiro dado deve ser lido antes do laço, para que o teste condicional possa ser executado. Média 0.2*Lab +0.3*Exame_inter + 0.5*Exame_final Laços 21

10.1.2 Laços Controlados por Entrada: Sentinela 2.2 [Imprimir resultados] Escreva ( Numero estudante:`, Nmatric) Escreva ( Nota Laboratório:`, Lab) Escreva ( Exame Intermediário:`, Exame_inter) Escreva ( Exame Final:`, Exame_final) Escreva ( Média Final:`, Média) Se Média 5.0 Então Escreva ( Aluno Aprovado`) Senão Escreva ( Aluno Reprovado`) 2.3 [Ler dados do próximo aluno] Leia (Nmatric, Lab, Exame_inter, Exame_final) Fim enquanto 3. [Terminar] Fim algoritmo Observe aqui, que o próximo dado deve ser lido antes de terminar o laço, para que o teste condicional possa ser executado com o novo dado. Laços 22

10.1.2 Laços Controlados por Entrada: Sentinela //Usando Laços com sentinela #include <stdlib.h> Código em C #include <stdio.h> main() { float Lab, Exame_inter,Exame_final; float Media; int Nmatric; // 1.Entrar com dados do primeiro aluno printf("digite o numero do 1o. aluno: "); scanf("%d",&nmatric); Laços 23

10.1.2 Laços Controlados por Entrada: Sentinela // 3 - Iniciar repetição controlada por sentinela while (Nmatric!= 0) { // inicio enquanto // 3.1 - Inserir notas do aluno printf( Digite as notas de Lab, Exame_inicial e ExameF do %d\n",nmatric); scanf("%f%f%f",&lab,&exame_inter,&exame_final); // 3.2 - Calcular média Media = 0.2 *Lab + 0.3 *Exame_inter + 0.5*Exame_final; // 3.3 - Imprimir resultados printf("\tnumero do estudante: %d\n",nmatric); printf( "\tnota Laboratorio:%5.2f\n",Lab); Laços 24

10.1.2 Laços Controlados por Entrada: Sentinela } printf("\texame Intermediario:%5.2f\n",Exame_inter); printf("\texame Final:%5.2f\n",Exame_final); printf("\tmedia Final:%5.2f\n,Media); if (Media >= 5.0) printf( \taluno Aprovado\n ); else printf( \taluno Reprovado\n ); // 3.4 [Ler numero de matricula do proximo aluno printf("digite o numero do aluno, ou zero (0) para parar "); scanf("%d",&nmatric); } // Fim enquanto printf("fim do Programa.\n\n"); system("pause"); Laços 25

10.1.3 Laços com teste no final 10.1.3 Laços com teste no final Existe um outro tipo de laço condicional onde a condição é avaliada no final do corpo do laço. Linguagem Algorítmica Faça comandos enquanto <condição> Funcionamento deste laço 1. Os comandos, são executados. 2. A condição é avaliada 3. Se o resultado for verdadeiro, volta-se ao ponto 1. 4. Se o resultado for falso, termina-se o laço e o programa continua na instrução seguinte ao laço. Laços 26

10.1.3 Laços com teste no final Fluxograma Sintaxe em linguagem C comandos condição F V do { comandos; } while (condição) Obs: O corpo do laço do_while é executado pelo menos uma vez, enquanto que o laço com teste no início, pode nunca ser executado. Laços 27

10.1.3 Laços com teste no final Exemplo 9: Fazer um programa em C para calcular h(n)=1+1/2+1/3+...+1/n, usando o comando do_while #include <stdlib.h> #include <stdio.h> main() { int n; float h; printf ("Entre com o valor de n\n"); scanf("%d",&n); printf("para n = %d,",n); h = 0; do { h = h + 1/float(n); n = n-1; } while (n > 0); printf(" o valor de h eh:%f\n\n",h); } system("pause"); Laços 28

10.2 Laços Contados 10.2 Laços Contados Para algumas aplicações, o controle condicional de laços, imposto pela construção enquanto - faça é desnecessariamente complicada, pois pode-se desejar um laço um número fixo de vezes, e este número é conhecido. Para este tipo de aplicação existe uma construção repetitiva que tem a seguinte forma: Exemplo 10: Para ID 1, 2,.., 10 faça valor valor + 2 Laços 29

10.2 Laços Contados Neste exemplo a variável de controle do laço é ID. A variável ID começa valendo 1. No corpo do laço a variável valor é incrementada de 2. Em seguida, ID é automaticamente incrementada de 1, e a instrução do corpo do laço é executada novamente. Isto se repete 10 vezes, isto é até o valor de ID=10 Exemplo 11: Para J 1, 2,.., 30 faça val val * 3 Neste exemplo a variável de controle do laço é J. E ela começa valendo 1. No corpo do laço a variável val é multiplicada por 3. Em seguida, J é automaticamente incrementada de 1, e a instrução do corpo do laço é executada novamente. Isto se repete 30 vezes, isto é até o valor de J=30 Laços 30

10.2 Laços Contados Exemplo 12: Para val 1, 2,.., N faça Neste exemplo a variável de controle do laço é val. A variável val começa valendo 1 e é automaticamente incrementada de 1 a cada vez, até o valor de N. Então este laço se repete N vezes Exemplo 13: Para Index 10, 9,..,1 faça Neste exemplo a variável de controle do laço é Index. A variável Index começa valendo 10 e é decrementada de 1 a cada volta do laço, até que o valor de Index seja 1. Este laço se repete 10 vezes. Laços 31

10.2 Laços Contados Em cada um dos seguintes segmentos, dê o valor que será impresso para a variável Var. assumir que todas as variáveis são inteiras. a) Var 0 Para Index = 1, 2,.., 10 Var Var + 1; Escreva ( Var ) Var = 10 b) Var 0 Para Index = 4, 8,.., 36 Var Var + 1; Escreva ( Var ) Var = 9 Laços 32

10.2 Laços Contados c) Var 0 Para Index = 10, 9,.., 1 Var Var + 1 Index Index + 1 Escreva ( Var ) Var = infinito, pois o laço não fecha porque o valor da variável Index está sendo alterado dentro do laço d) Var 0 Para Index = 1, 2,..,15 Para Index2 = 1, 2,.., 8 Var Var + 1 Escreva ( Var ) Var = 120 Laços 33

10.2.1 Laços Contados: O comando for Na linguagem C o laço contado é feito pelo comando for. Em C o comando for é um tipo de laço condicional onde a inicialização do valor da variável contadora, a avaliação da condição e a atualização do valor da variável contadora estão em um mesmo campo. Linguagem Algorítmica Para <i; cond; i++> Faça comandos; Funcionamento deste laço 1. Variável contadora é inicializada. 2. A condição é avaliada: 3. Se o resultado for verdadeiro, realiza-se os comandos. 4. Se o resultado for falso, termina-se o laço e continua-se na instrução seguinte ao laço. 5. Atualiza-se variável contadora e retorna-se para o passo 2. Laços 34

10.2.1 Laços Contados: O comando for Fluxograma Sintaxe em linguagem C i=1; for(i=1;i<=n;i++) { F i n V i i+1; comandos } comandos; Obs: O funcionamento do laço for é semelhante ao do laço while. Note que existem 3 campos separados por ;. No 1º é realizada a inicialização das variáveis, no 2º é realizada a verificação da condição lógica e no 3º a atualização dos valores das variáveis. Laços 35

10.2.1 Laços Contados: O comando for Programa para imprimir os 5 primeiros números Programa com while #include <stdio.h> main() { P1 int i = 1; P2 while (i <= 5) P3 P4 } { } printf( %d \n,i); i = i + 1; Programa com for #include <stdio.h> main() { int i; P1 P2 P4 for (i=1;i<=5;i=i+1) { P3 printf( %d \n,i); } } Laços 36

10.2.1 Laços Contados: O comando for Programa para imprimir os 5 primeiros números Programa com for #include <stdio.h> main() { int i; P1 P2 P4 for (i=1;i<=5;i=i+1) { P3 printf( %d \n,i); } } Execução Programa Iteração P2 P3 P4 1 i<=5 (v) 1 i=2 2 i<=5 (v) 2 i=3 3 i<=5 (v) 3 i=4 4 i<=5 (v) 4 i=5 5 i<=5 (v) 5 i=6 6 i<=5 (f) - - Laços 37

10.2.1 Laços Contados: O comando for Ex - 6: Escreva um programa que lê um número e escreve a seqüência crescente e decrescente entre 1 e esse número conforme o seguinte exemplo: Digite um numero: 4 1 4 2 3 3 2 4 1 Laços 38

10.2.1 Laços Contados: O comando for Programa que imprime números crescente e decrescente Programa Ex-6 #include <stdio.h> #include <stlib.h> main() { int i, j; printf( Entre com n: ); scanf( %d,&n); for ( i=1, j=n ; i<=n; i++, j-- ) { printf( %d %d \n, i, j); } system( pause ) } Inicialização em conjunto de i e j. Uso de,! Atualização conjunta de i e j. Uso de,! Laços 39

10.2.1 Laços Contados: O comando for Programa que imprime números crescente e decrescente Programa Ex-6 #include <stdio.h> #include <stlib.h> main() { int i, j; printf( Entre com n: ); P1 P2 scanf( %d,&n); P4 for ( i=1, j=n ; i<=n; i++, j-- ) { printf( %d %d \n, i, j); P3 } system( pause ) } Execução Programa P1 n = 5, i = 1, j = n Iter. P2 P3 P4 1 i<=5 (v) 1 5 i=2 2 i<=5 (v) 2 4 i=3 3 i<=5 (v) 3 3 i=4 4 i<=5 (v) 4 2 i=5 5 i<=5 (v) 5 1 i=6 6 i<=5 (f) - - Laços 40

10.3 Enlaçamento amento Laços Encaixados 10.3 Laços Encaixados Assim como temos uma construção Se_Então_Senão dentro da outra, podemos ter um laço dentro do outro. O laço mais interno deve estar completamente embutido dentro do laço externo. Não pode haver sobreposição Exemplos de laços embutidos válidos e não válidos. Válidos Válidos Laços Não Válido 41

10.3 Enlaçamento amento Laços Encaixados Como exemplo de laços encaixados, vamos modificar o Ex2, pág 22 e 23 que calcula a tabuada de um número lido n, para um programa que dado um numero m qualquer, calcule e imprima todas as tabuadas de 1 até esse número m. Para tanto será embutido o laço que calcula a tabuada, num segundo laço que irá determinar qual a tabuada será calculada. A idéia é a seguinte: j = 1, 2,..., m i = 1, 2,..., 10 tab = i*j Laço que determina, qual tabuada j será calculada, para as m tabuadas à serem calculadas. Laço que calcula cada uma das tabuadas j Laços 42

10.3 Enlaçamento amento Laços Encaixados Deste modo, quando j=1, no laço externo, o laço interno irá calcular a tabuada do 1. Quando j=2, no laço externo, o laço interno irá calcular a tabuada do 2. j=1 i=1 i=2 i=3... i=10 1*1 1*2 1*3... 1*10 j=2 i=1 i=2 i=3... i=10 2*1 2*2 2*3... 2*10 Quando j=m, no laço externo, o laço interno irá calcular a tabuada do 1. j=m i=1 i=2 i=3... i=10 m*1 m*2 m*3... m*10 Laços 43

10.3 Enlaçamento amento Laços Encaixados Algoritmo tabuada2 Variáveis: i,n, resp: inteiro. Inicio algoritmo Leia (n); j 1; Enquanto (j <= n) início i 1; Enquanto ( i <= 10) faça início resp j * i; escreva ( resp ); i i + 1; fim j j + 1; fim Fim algoritmo Para cada valor de j, são executados 10 vezes o laço com a variável i. j=1 i=1 i=2 i=3... i=10 1*1 1*2 1*3... 1*10 j=2 i=1 i=2 i=3... i=10 2*1 2*2 2*3... 2*10 j=m Laços 44

10.3 Enlaçamento amento Laços Encaixados Programa Tabuada2 - while main() // incluir <stdio.h> e stdlib.h! { int i, j, n, resp; i = 1; j = 1; printf("ateh qual tabuada deseja?") scanf("%d",&n); while (j <= n) { // início do 1o. while printf("\t\ntabuada do %d\n", j); i = 1; while ( i <= 10) { // início 2o. while resp = j * i; printf("%d*%d=%d\n",j,i,resp); i = i + 1; } // fim 2o. while j = j + 1; } //fim 1o. while } // fim programa Programa Tabuada2 - for main() // incluir <stdio.h> e stdlib.h! { int i, j, n, resp; printf("ate qual tabuada deseja?") scanf("%d",&n); for (j=1;j <= n;j++) { // início do 1o. for printf("\t\ntabuada do %d\n", j); for (i=1; i <= 10; i++) { // início 2o. for resp = j * i; printf("%d*%d=%d\n",j,i,resp); } // fim 2o. for } //fim 1o. for } // fim programa Laços 45

Unesp-Campus de Guaratinguetá 10 Laços FIM Aula 10 Referências dos slides Curso de Programação de Computadores Prof. Aníbal Tavares Profa. Cassilda Ribeiro Prof. Décio Mourão Laços Prof. Galeno Sena 46