Buscar

Aula08 For2 2011

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 26 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 26 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 26 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Comandos iterativosComandos iterativosComandos iterativosComandos iterativos
•• para ... p
•• enquanto ... 
•• faça ... enquanto
1
Comando de repetiçãoComando de repetiçãopp
para número fixo de repetiçõespara número fixo de repetições
Pseudolinguagem
para <atribuição(ões)> ; <condição_do_laço>;<incremento(s)/decremento(s)>
<comando>
Pseudolinguagem
<comando>
1 comando
atribuição(ões): inicialização(ões) da(s) variável(eis) de controle;
condição_do_laço: condição que controla a execução do laço;
2
incremento(s)/decremento(s): incrementos e/ou decrementos 
da(s) variável(eis) de controle.
AlgoritmoAlgoritmo AprovadoReprovadoAprovadoReprovadogg p pp p
entradas : numeros, médias
saídas: para cada aluno, numero e ‘Aprovado’ ou ‘Reprovado’
Cabeçalho que
controla a repetição
1.Para (contador = 1; contador <=5 ; contador + 1)
início Comando a ser
p ç
ler numero, média
se média >= 6,0 
repetido
escrever numero, ‘Aprovado’ 
senão escrever numero, ‘Reprovado’
fim
2. Terminar.
3
Comando forComando forComando forComando for
Diagrama de sintaxeDiagrama de sintaxe
for expressão( ;
expressão ; )expressão
comando
4
// Determina se alunos foram ou não aprovados
#include <stdio h>#include <stdio.h>
int main ( )
{ int contador, numaluno;
Controle de 
repetiçãoComando a ser { int contador, numaluno;
float media;
for (contador = 1; contador < 6; contador ++) 
repetição
repetido
( ; ; )
{
scanf (“%d”, &numaluno);
scanf(“%f”, &media);
if (media >= 6.0) 
printf (“O aluno %d foi aprovado”, numaluno);
else
printf (“O aluno %d foi reprovado”, numaluno); 
} 
t 0
5
return 0; 
}
Ler 500 valores Ler 500 valores –– informar o maior e sua posiçãoinformar o maior e sua posição
// t l d t i i i//entre valores, determina maior e sua posicao
#include <stdio.h>
int main ( )
{{
float n; // lido }
float maior; // guarda o maior lido 
int posicao; // posicao do maior nos lidos 
int k; // variavel de controle do forint k; // variavel de controle do for 
scanf(“%f”, &n); // por enquanto o primeiro eh o maior 
maior = n;
posicao = 1;posicao 1; 
for (k = 2; k <= 500; k++)
{
scanf(“%f”, &n);
if (n >= maior)
O que acontece se
entre os números lidos
if (n >= maior)
{
maior = n;
posicao = k;
existem valores iguais
?p ;
}
} // do for
printf(“\nMaior lido: %7.2f na posicao %d\n”, 
maior posicao);
6
maior, posicao);
return 0;
}
Imprimir números divisíveis por 5 entre dois Imprimir números divisíveis por 5 entre dois 
limites fornecidos, e seu produtolimites fornecidos, e seu produto
Algoritmo DivisiveisPorCinco ;
Entradas: LimSup, LimInf
S íd t d di i í i 5 t li it d dSaídas: todos os divisíveis por 5 entre os limites dados
produto destes
inícioc o
1. Ler (LimInf, LimSup);
2. se LimInf > LimSup
então in erter os limitesentão inverter os limites
3. Inicializar o Produto em 1
4. Para K de limite inferior até o limite superiorp
faça se K divisível por 5
então início
4 1 Escrever (K)4.1 Escrever (K)
4.2 acumular Produto 
fim
7
5. Escrever(Produto)
6. Fim
Imprimir números divisíveis por 5 entre dois Imprimir números divisíveis por 5 entre dois 
limites fornecidos, e seu produtolimites fornecidos, e seu produto
//imprime divisiveis por cinco entre um limite informado, mais seu produto
#include <stdio.h>
int main ( )
{{
int liminf, limsup; // limites
long int produto; // produto 
int aux, k; // variaveis auxiliares
scanf(“%d %d”, &liminf, &limsup); // obter os limites 
if (liminf > limsup) // testa se limites estao em ordem correta 
{ // inverte os valores dos limites 
aux = liminf;aux = liminf;
liminf = limsup;
limsup = aux;
}}
produto = 1; // inicializacao de produto 
for (k = liminf; k <= limsup; k++)
if (k % 5 == 0) // se k for zero ?
{{
printf(“\n%d”, k);
produto = produto * k;
}
8
}
printf(“\nProduto: %d”, produto);
return 0;
}
Seja o problema:Seja o problema:j pj p
Faça um algoritmo e o programa em C 
correspondente que leia um valor inteiro n 
e informe os primeiros n termos da Série f m p m m
de Fibonacci.
9
Série de FibonacciSérie de Fibonacci
Descoberta por Leonardo Pisano - 1202escobe ta po eo a do sa o 0
1 1 2 3 5 8 13 ...1 1 2 3 5 81 1 2 3 51 1 2 31 1 21 11 1 2 3 5 8 13 ...1 1 2 3 5 81 1 2 3 51 1 2 3
NN-1
1 1 2
N-2
1 1
fib(1) = 1fib(1) = 1
fib(2) = 1
fib( ) fib( 1) fib( 2) 2fib(n) = fib(n-1) + fib(n-2), para n > 2
10
Série de FibonacciSérie de Fibonacci
Descoberta por Leonardo Pisano - 1202escobe ta po eo a do sa o 0
1 1 2 3 5 8 13 ...1 1 2 3 5 81 1 2 3 51 1 2 31 1 21 11 1 2 3 5 8 13 ...1 1 2 3 5 8
NN-1N-2
1 1 2 3 51 1 2 31 1 21 1
fib(1) = 1fib(1) = 1
fib(2) = 1
fib( ) fib( 1) fib( 2) 2fib(n) = fib(n-1) + fib(n-2), para n > 2
11
SérieSérie de Fibonaccide FibonacciSérieSérie de Fibonaccide Fibonacci
Descoberta por Leonardo Pisano - 1202escobe ta po eo a do sa o 0
1 1 2 3 5 8 13 ...1 1 2 3 5 81 1 2 3 51 1 2 31 1 21 11 1 2 3 5 8 13 ...1 1 2 3 5 8
NN-1N-2
1 1 2 3 51 1 2 31 1 21 1
fib(1) = 1fib(1) = 1
fib(2) = 1
fib( ) fib( 1) fib( 2) 2fib(n) = fib(n-1) + fib(n-2), para n > 2
12
Série de FibonacciSérie de Fibonacci
/*Algoritmo Fibonacci
{ gera uma seqüência de N termos da série de Fibonacci }
entradas: N (inteiro)
saídas: seqüência dos N termos, impressos um a um*/saídas: seqüência dos N termos, impressos um a um /
1. início
2. termo_2← 1 {inicializa 1o termo da série}
3 termo 1← 1 {inicializa 2o termo da série}3. termo_1← 1 {inicializa 2o termo da série}
4. ler n
5. para (i = 1;i<=n;i++) {um único comando: não precisa início/fim no For}
5.1 se (i =1 ou i = 2) {usando IF}
5.1.1 imprime termo_2 {os dois 1os termos são iguais}
5.1.2 senão termo← termo 1 + termo 25.1.2 senão termo← termo_1 termo_2
imprime termo
termo_2← termo_1
termo 1← termo
13
termo_1← termo
6. fim
/* Calcula a sequência de Fibonacci até o termo solicitado*/
#include <stdio.h>
#include <stdlib h>#include <stdlib.h>
int main()
{ 
int t, t 1=1, t 2 = 1; // declara termos, inicializando os 2 primeiros, _ , _ ; c ara t rmos, n c a zan o os pr m ros
int n; // número de termos a serem informados 
int cont; // variável de controle do for
printf("Informe quantos termos devem ser gerados: ");
f("%d" & )scanf("%d",&n);
printf("\n\n"); // deixa 2 linhas em branco
for (cont=1; cont <= n; cont++) // apenas 1 comando: sem { }
if (cont == 1 || cont == 2) // 2 primeiros termos iniciam iguaisif (cont == 1 || cont == 2) // 2 primeiros termos iniciam iguais
printf("%d ",t_1); // ou t_2, aqui tanto faz
else
{ com switch-case?{ 
t=t_1+t_2; // calcula termo atual 
printf("%d ",t); // imprime termo calculado e atualiza
t_2=t_1; // conteúdos anteriores, já preparando
ó
com switch case?
j p p
t_1=t; // para o calculo do próximo termo
}
printf("\n\n"); // deixa 2 linhas em branco
system("pause");
14
system( pause );
return(0);
}
/* Calcula a sequência de Fibonacci até o termo solicitado*/
#include <stdio.h>
int main()()
{ 
int t, t_1=1, t_2 = 1; // declara termos, inicializando os 2 primeiros
int n; // número de termos a serem informados 
int cont; // variável de controle do forint cont; // variável de controle do for
printf("Informe quantos termos devem ser gerados: ");
scanf("%d",&n);
printf("\n\n"); // deixa 2 linhas em branco
f ( t 1 t < t++) // 1 d { }for (cont=1; cont <= n; cont++) // apenas 1 comando: sem { }
switch (cont){ 
case 1: printf("%d ",t 2); // imprime 1o termo - t 2case 1: printf( %d ,t_2); // imprime 1o termo t_2
break;
case 2: printf("%d ",t_1); // imprime 2o termo - t_1
break;
d f lt t t 1 + t 2 // l l t t ldefault: t = t_1 + t_2; // calcula termo atual;
printf("%d ",t); // imprime termo calculado e
t_2 = t_1; // atualiza conteúdos anteriores, já
t 1 = t; // preparando cálculo do próximo termot_1 t; // preparando cálculo do próximo termo
} 
printf("\n\n"); // deixa 2 linhas em branco
return(0);
}
15
}
Série de Fibonacci: execução do programa
16
Seja o problema:Seja o problema:j pj p
F l it C Faça um algoritmo e o programa em C 
correspondente que leia dois valores 
inteiros e informe os números da Série de 
Fibonacci neste intervalo fechado Fibonacci neste intervalo fechado. 
Para facilitar, assuma que os números 
informados estarão em ordem crescente.
17
Série de FibonacciSérie de Fibonacci
/*Algoritmo Fibonacci
{ gera uma seqüência de N termos da série de Fibonacci }
entradas: N (inteiro)
saídas: seqüência dos N termos impressos um a um*/saídas: seqüência dos N termos, impressos um a um /
1. início
2. termo_2 ← 1 //inicializa 1o termo da série_
3. termo_1 ← 1 //inicializa 2o termo da série
4. ler ninic, nfinal
5. gera temos anteriore a ninic // não pode iniciar no meio...
6. para (i = onde está ; i<=nfinal;i++)
informa termoiinforma termoi
7. fim
18
/* Informa termos selecionados da Sequência de Fibonacci */
#include <stdio.h>
int main()int main()
{ 
int t, t_1=1, t_2 = 1; // declara termos, inicializando os 2 primeiros
int n_inic, n_fim; // número de termos a serem 
i f d informados 
int cont; // variável de controle dos for: são 2!
printf("Informe posicao inicial e final dos termos informados: ");
scanf("%d%d" &n inic &n fim);scanf( %d%d ,&n_inic,&n_fim);
printf("\n\n"); //deixa 2 linhas em branco
/* gera termos da sequência que não serão mostrados: pode ser que o 
for abaixo nunca seja executado */
 f d
j
for (cont=1; cont < n_inic; cont++) // termos não informados
switch (cont) // passa por ou calcula termos de 3 a (n_inic - 1)
{ case 1: 
case 2: break; // 2 primeiros termos já estão prontoscase 2: break; // 2 primeiros termos já estão prontos
default:
t = t_1 + t_2; // calcula termo atual e
t_2 = t_1; //atualiza conteúdos anteriores, já
ó
j
t_1 = t; // preparando para o calculo do próximo termo
}
// sai do for com cont = n_inic, isto é, posição do 1o termo pedido
/* Início da impressão dos termos solicitados: */ 
19
/ Início da impressão dos termos solicitados: / 
// (continua no próximo slide)
.....
/* Início da impressão dos termos solicitados: observe que o conteúdo 
de cont já está inicializado em n_inic porque saiu com este valor do FOR 
anterior */ 
for (; cont <= n_fim; cont++) // não inicializa variável de controle
if (cont == 1 || cont == 2) // 2 primeiros termos iniciam iguais
printf("%d ",t_1); // ou t_2, tanto faz 
elseelse
{ 
t=t_1+t_2; // calcula termo atual;
printf("%d ",t); // imprime termo calculado e
t 2=t 1; // atualiza conteúdos anteriores ját_2=t_1; // atualiza conteúdos anteriores, já
t_1=t; // preparando para o calculo do próximo termo
}
d 2 l h bprintf("\n\n"); //deixa 2 linhas em branco
return(0);
}
20
Comandos Comandos for for aninhadosaninhadosmm ff
for ( <expressão 1> ; <expressão 2> ; <expressão3> ) 
<comando>
1 comando
Comando:
1 comando
...
- qualquer comando -> pode ser comando for
...
for (ka = 1; ka <= 10; ka++)
{
scanf (“%d”, &n);
f ( l 1 l l )
...
for (ka = 1; ka <= 5;ka++)
for (ele=1;ele<=3;ele++)for (ele = 1;ele < n; ele++)
printf(“%d ”, ele);
}
for (ele 1;ele< 3;ele++)
printf(“%d %d”, ka , ele);
...
21
...
Exercício: Exercício: gerador de tabuadagerador de tabuada
Faça um programa que ç p g q
gere o resultado da 
tabuada de todos os 
números de 1 a 10.m
O resultado deve 
aparecer como na tela ao 
ladolado.
Dica: use 2 comandos for
aninhados: 1 para 
t l controlar os 
multiplicadores e outro 
para controlar os 
lti li dmultiplicandos.
Programa Gerador de TabuadasPrograma Gerador de Tabuadas
/* gera a tabuada dos números de 1 a 10:
Entrada: não há
Saida: impressao da tabuada na tela */
#include <stdio h>#include <stdio.h>
# include <stdlib.h>
int main ( )
{{
int multiplicando, multiplicador;
system("color f9");
for (multiplicador=1; multiplicador <=10; multiplicador++)
{ // para cada valor de multiplicador varia multiplicando de 1 a 10{ // para cada valor de multiplicador, varia multiplicando de 1 a 10
printf(" Tabuada de %d:\n", multiplicador); // 1 vez, antes do for
for (multiplicando = 1; multiplicando <= 10; multiplicando++)
printf("%2d X %2d = %3d\n", multiplicando , multiplicador, 
l l d * l l d )
p ( p p
multiplicando * multiplicador);
printf("\n"); // 1 linha em branco, após conclusão do for interno
system("pause>>null"); // segura tela para visualização até enter
}}
system("pause"); 
return 0; 
}
Programa Gerador de TabuadasPrograma Gerador de Tabuadas
/* gera a tabuada dos números de 1 a 10:
Entrada: não há
Saida: impressao da tabuada na tela */
#include <stdio h>#include <stdio.h>
# include <stdlib.h>
int main ( )
{{
int multiplicando, multiplicador;
system("color f9");
for (multiplicador=1; multiplicador <=10; multiplicador++)
{ // para cada valor de multiplicador varia multiplicando de 1 a 10{ // para cada valor de multiplicador, varia multiplicando de 1 a 10
printf(" Tabuada de %d:\n", multiplicador); // 1 vez, antes do for
for (multiplicando = 1; multiplicando <= 10; multiplicando++)
printf("%2d X %2d = %3d\n", multiplicando , multiplicador, 
l l d * l l d )
p ( p p
multiplicando * multiplicador);
printf("\n"); // 1 linha em branco, após conclusão do for interno
system("pause>>null"); // segura tela para visualização até enter
}}
system("pause"); 
return 0; 
} for aninhado (for dentro de for)
ExercícioExercício
Processar as notas de 3 turmas de alunos.
Para cada turma ler inicialmente o número de Para cada turma, ler inicialmente o número de 
alunos da turma. Depois, para cada aluno, ler 
suas 3 notas, calcular e informar a média.suas 3 notas, calcular e informar a média.
No final, fornecer a média das notas de cada 
turma.
25
O que fazem os programas O que fazem os programas p gp g
abaixo:abaixo://programa de teste
#include <stdio.h>
//programa de teste
#include <stdio.h>
# include <stdlib.h>
int main ( )
{
# include <stdlib.h>
int main ( )
{{
int i;
for (i = 1; i < 10 ; i--)
printf("\n%d" i);
{
int i, j;
for (i = 1, j=2; i < j ; i--, j++)
printf("\n%d %d" i j);printf( \n%d , i);
system("pause"); 
return 0; 
}
printf( \n%d %d , i,j);
system("pause"); 
return 0; 
}} }
Loop (laço) infinito!!!!

Outros materiais