Computação Eletrônica Laços de repetição – for, while,...
Transcript of Computação Eletrônica Laços de repetição – for, while,...
CIn.ufpe.br
ComputaçãoEletrônicaLaçosderepetição–for,while,do-while
Prof:LucianoBarbosa
CIn.ufpe.br
EstruturasdeRepetição• Imagineumprogramaquecalculaamédiadeumaluno.• Esteprogramaébastantesimples,bastaria:
– Lerasnotasdoteclado;– Calcularamédia;e– Imprimiroresultado.
CIn.ufpe.br
EstruturasdeRepetição• Comopoderíamosfazerparacalcularamédiadecadaumdos
alunosdeumaturmaemummesmoprograma?• Precisamosrepetirosmesmoscomandos,váriasvezes,atéque
amédiadecadaalunotenhasidocalculadaeimpressa.• Solução:Laços(eminglês:Loops)• EmCtemostrêsopçõesdeestruturasderepetição:
– while– do–while– for
CIn.ufpe.br
EstruturasdeRepetição-while• Fluxogramadowhile:
– Háapossibilidadedenuncaseexecutaroscomandoscasoaprimeiraavaliaçãodacondiçãojáresulteemfalso.
Avaliarcondição
Executarcomandos
verdadeiro
falso
prosseguir
(repetir)
CIn.ufpe.br
EstruturasdeRepetição-while• Aestruturawhilepossuiaseguintesintaxe:
• Apalavra“while”significa“enquanto”emportuguês,portanto,lê-se:– “Enquantoaexpressãobooleanaforverdadeira,executeoscomandosdo
blocoabaixo”.– Ouseja,oblocodecomandosserárepetidoenquantoaexpressãobooleana
forverdadeira.• Algodentrodolaçodevesercapazdemodificaroresultadoda
expressãobooleana,casocontrárioolaçonuncaterminará,eoprogramaentraráem“loopinfinito”.
CIn.ufpe.br
EstruturasdeRepetição-while• Comowhile,oprogramaanteriorpoderiaseralteradopara
trabalharcomváriosalunos:Variávelrepetir:valor1:oprogramadevecontinuar;valor0:oprogramadeveterminar.Ovalorderepetirpodemudarparazeronalinha21casoocaracterelidonãoseja‘s’,oquefinalizaolaço.
CIn.ufpe.br
EstruturasdeRepetição-while• Variaçõesdowhile:
• Aschavessãonecessáriasapenasquandohámaisdeumcomandoaserrepetido.
CIn.ufpe.br
EstruturasdeRepetição-while• Exemplosdeusodowhile:
CIn.ufpe.br
EstruturasdeRepetição:do-while• Fluxogramadodo-while:
– Oscomandosserãoexecutadosaomenosumavez,poisaavaliaçãodacondiçãoocorreapenasapósaprimeiraexecução.
Avaliarcondição
Executarcomandos
verdadeiro
falso
prosseguir
(repetir)
CIn.ufpe.br
EstruturasdeRepetição:do-while• Aestruturado-whilepossuiaseguintesintaxe:
• Adiferençadowhileparaodo-whileéque,nodo-whilesempreaconteceaprimeiraexecuçãodoblocodecomandoseaexpressãobooleanasóéavaliadaaofinaldecadaexecução.– Seforverdadeira,oblocodecomandosérepetido;– Seforfalso,olaçotermina.
CIn.ufpe.br
EstruturasdeRepetição:do-while• Comodo-while,oprogramaanteriorpoderiaserescritoassim:
Podemosutilizarexpressõesbooleanastãocomplexasquantosequeiradentrodosparêntesesdowhile.Obs.:Zerosempreéinterpretadocomofalsoequalqueroutronúmerocomoverdadeiro.
CIn.ufpe.br
EstruturasdeRepetição:do-while• Variaçõesdodo-while:
• Aschavessãonecessáriasapenasquandohámaisdeumcomandoaserrepetido.
CIn.ufpe.br
EstruturasdeRepetição-do-while• Exemplosdeusododo-while:
CIn.ufpe.br
EstruturasdeRepetição:Contadores• Algumasvezessabemosexatamentequantasvezesqueremos
executaroscomandos.• Nessescasospodemosutilizarumavariávelinteiracomo
contador,incrementando-aacadaexecução,everificandoseamesmaatingiuvalordesejadodeexecuções.
• Ex.:Imprimirtodososnúmerosde1a15:Inicialização
Avaliarcondição
incremento
CIn.ufpe.br
EstruturasdeRepetição-for• Fluxogramadofor:
Avaliarcondição
verdadeiro
falso
prosseguir
Inicialização
incremento
Executarcomandos
CIn.ufpe.br
EstruturasdeRepetição:for• Aestruturaforéespecializadaparaestescasos.• Suasintaxeéaseguinte:
• Noforhálocaisespecíficosparasedefinir:– Ainicialização(executadaapenasantesdoprimeirolaço);– Aexpressãobooleana(avaliadasemprenocomeçodecadalaço);– Osincrementos(realizadosapenasaofinaldecadalaço);
• Obs.:nenhumdestestermoséobrigatório.• Melhoraalegibilidadedocódigo,poisagrupaemummesmolocala
inicialização,oincrementoaserdadoeacondiçãodetérminodolaço.
CIn.ufpe.br
EstruturasdeRepetição:for• Sesoubermosdeantemãoquantosalunoshánaturma(por
exemplo:5),oprogramaanteriorpoderiaserescritoassim:
CIn.ufpe.br
EstruturasdeRepetição:for• Variaçõesdofor(nemtodassãorecomendáveis):
• Aschavessãonecessáriasapenasquandohámaisdeumcomandoaserrepetido.
CIn.ufpe.br
EstruturasdeRepetição:for• Outrosexemplosdeusodofor:
CIn.ufpe.br
EstruturasdeRepetição:for• Outrosexemplosdeusodofor:
CIn.ufpe.br
EstruturasdeRepetição:break
• Obreakpermiteencerrarumlaçonomeiodesuaexecução.Podeserutilizadocom– while,do-while,oufor
• Asintaxeéaseguinte:
– Dificultaacompreensãodocódigo,poishámaisdeumacondiçãodetérminoaserverificada,maséútilquandoprecisamosencerrarolaçonomeiodobloco,evitandoquealgunscomandossejamexecutados.
CIn.ufpe.br
EstruturasdeRepetição:break
• Exemplo:
CIn.ufpe.br
EstruturasdeRepetição:continue
• Ocontinuepermitepassarparaapróximarepetiçãonomeiodolaço.– Podeserutilizadonowhile,do-while,ounofor.
• Asintaxeéaseguinte:
– Dificultaacompreensãodocódigo,poishámaisdeumacondiçãoaserverificada,maséútilquandoprecisamospularospróximoscomandosnomeiodobloco,indodiretoparaapróximarepetição.
CIn.ufpe.br
EstruturasdeRepetição:continue
• Exemplo:calcularoprodutoapenasdosnúmerosdigitadosqueforemdiferentesdezero:
CIn.ufpe.br
EstruturasdeRepetição:LaçosAninhados
• Todososlaçosvistospodemseraninhados,unsdentrodosoutros.Exemplos:
CIn.ufpe.br
EstruturasdeRepetição:LaçosAninhados
• Exemplo:
• Qualovalorfinaldetotal,impressopeloprograma?
CIn.ufpe.br
EstruturasdeRepetição:LaçosAninhados
• Exemplo:impedirentradasinválidas,paracalcularoprodutoapenasdosnúmerosdigitadosqueforemdiferentesdezero:
CIn.ufpe.br
• Comoescolherentreasestruturasderepetição?
– Porém,namaioriadoscasos,pode-seescolhermaisdeumaopçãopararesolvercadatipodeproblemaeacabasendoumaquestãodepreferênciapessoal.
EstruturasdeRepetição:resumo
if(numerodevezeséconhecido){usa-seofor}else{if(testeprecisaserfeitonoinício){usa-sewhile}else{usa-sedo-while}}
CIn.ufpe.br
ExemplodeCálculodeMaiorouMáximo
29
CIn.ufpe.br
ExemplodeCálculodeMédia
30
CIn.ufpe.br
Atividade11. Escrevaumalgoritmoquelê50númerosinteiroseemseguida
mostraasomadetodososímpareslidos.2. Altereoalgoritmoanteriorparaqueeleconsidereapenasa
somadosímparesqueestejamentre100e200.3. Construaumalgoritmoqueleiaumconjuntode20números
inteirosemostrequalfoiomaioreomenorvalorfornecido.4. Altereoprogramaanteriorparaqueelenãopermitaaentrada
devaloresnegativos.
CIn.ufpe.br
Atividade1.1
32
#include<stdio.h>int main() {
int num; int soma = 0; for (i=0;i<50;i++) { printf("Digite o numero: "); scanf("%d",&num); if(num%2==1){ soma = soma + num; } } printf("\nA soma eh: %d",soma); return 0;}
CIn.ufpe.br
Atividade2• Façaumprogramaparaimprimiratabuadade1a9utilizando
laçosderepetição.Asaídadoprogramadeveserdotipo:
1x1 = 1 1x2 = 2 ... 1x9 = 9 //linha em branco 2x1 = 2 2x2 = 4 ... 2x9 = 18 //linha em branco 3x1 = 3 3x2 = 6 ... ... 9x1 = 9 ... 9x9 = 81
CIn.ufpe.br
Atividade3• Emumadisciplinacomtrêsexercícios,umprofessordesejasaberquala
maioreamenornotadecadaexercícioequalamaioreamenormédiafinal.Façaumprogramaparaauxiliá-lonestatarefa.1. Oprogramadeverecebercomoentradatrêsnotasdecadaalunoem
umalinha;2. Deveperguntaraousuáriosedesejainserirasnotasdeoutroaluno,e:
• Casoarespostaseja“sim”devesolicitarosdadosdopróximoaluno.• Casoarespostaseja“não”devemostraramaioreamenornotado
primeiro,dosegundo,edoterceiroexercícioeamaioreamenormédia.– Obs.:Asnotasdevemserimpressascomduascasasdecimais,deacordocomo
exemploabaixo:
Entre com as notas do 1º aluno: 5.0 6.0 7.0 Deseja inserir as notas de outro aluno? (s/n):s Entre com as notas do 2º aluno: 4.0 8.0 5.0 Deseja inserir as notas de outro aluno? (s/n):s Entre com as notas do 3º aluno: 5.0 6.0 9.0 Deseja inserir as notas de outro aluno? (s/n):n | 1ºExercicio | 2ºExercicio | 3ºExercicio | Media
| | Maior|Menor | Maior|Menor | Maior|Menor | Maior|Menor
| | 5.00 4.00 | 8.00 6.00 | 9.00 5.00 | 6.67 5.67
|
CIn.ufpe.br
Atividade4• Fazerumprogramaparacalculararaizquadradadeumnúmeropositivo
usandooroteiroabaixo(baseadonométododeaproximaçõessucessivasdeNewton-Raphson).
• SejaYonúmeroparaoqualsequercomputararaizquadrada:– A primeira aproximação para a raiz quadrada de Y édadapor:
– Asdemaisaproximaçõessãocalculadaspelaseguintefórmuladerecorrência:
– Aaproximaçãodevecontinuaratéqueovalorobtidomudepoucocomopassardasiterações(menosdee=0.1),Ouseja:
– Compareoresultadoobtidocomoresultadoproduzidopelafunçãosqrt()disponívelnabiblioteca<math.h>:
– Obs.:Ovalorabsoluto|.|podesercalculadoatravésdafunçãofabs(),disponívelnabiblioteca<math.h>.
21YX =
nova. a eanterior oaproximaçã a é onde,2 1
2
1 ++−
−= ii
iii XX
XYXXX i
1.0 onde ,1 =<−+ eeXX ii
realizadas iterações de número o é onde ,)( nYsqrtXn −
CIn.ufpe.br
Atividade5:1EE–2014.1
36
CIn.ufpe.br 37
CIn.ufpe.br 38