Computação Eletrônica Laços de repetição – for, while,...

Post on 12-Aug-2020

1 views 0 download

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