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

38
CIn.ufpe.br Computação Eletrônica Laços de repetição – for, while, do-while Prof: Luciano Barbosa

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

Page 1: Computação Eletrônica Laços de repetição – for, while, do-whileluciano/cursos/ce/lacos.pdf · 2018-08-12 · CIn.ufpe.br Estruturas de Repetição - while • A estrutura

CIn.ufpe.br

ComputaçãoEletrônicaLaçosderepetição–for,while,do-while

Prof:LucianoBarbosa

Page 2: Computação Eletrônica Laços de repetição – for, while, do-whileluciano/cursos/ce/lacos.pdf · 2018-08-12 · CIn.ufpe.br Estruturas de Repetição - while • A estrutura

CIn.ufpe.br

EstruturasdeRepetição•  Imagineumprogramaquecalculaamédiadeumaluno.•  Esteprogramaébastantesimples,bastaria:

–  Lerasnotasdoteclado;–  Calcularamédia;e–  Imprimiroresultado.

Page 3: Computação Eletrônica Laços de repetição – for, while, do-whileluciano/cursos/ce/lacos.pdf · 2018-08-12 · CIn.ufpe.br Estruturas de Repetição - while • A estrutura

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

Page 4: Computação Eletrônica Laços de repetição – for, while, do-whileluciano/cursos/ce/lacos.pdf · 2018-08-12 · CIn.ufpe.br Estruturas de Repetição - while • A estrutura

CIn.ufpe.br

EstruturasdeRepetição-while•  Fluxogramadowhile:

–  Háapossibilidadedenuncaseexecutaroscomandoscasoaprimeiraavaliaçãodacondiçãojáresulteemfalso.

Avaliarcondição

Executarcomandos

verdadeiro

falso

prosseguir

(repetir)

Page 5: Computação Eletrônica Laços de repetição – for, while, do-whileluciano/cursos/ce/lacos.pdf · 2018-08-12 · CIn.ufpe.br Estruturas de Repetição - while • A estrutura

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”.

Page 6: Computação Eletrônica Laços de repetição – for, while, do-whileluciano/cursos/ce/lacos.pdf · 2018-08-12 · CIn.ufpe.br Estruturas de Repetição - while • A estrutura

CIn.ufpe.br

EstruturasdeRepetição-while•  Comowhile,oprogramaanteriorpoderiaseralteradopara

trabalharcomváriosalunos:Variávelrepetir:valor1:oprogramadevecontinuar;valor0:oprogramadeveterminar.Ovalorderepetirpodemudarparazeronalinha21casoocaracterelidonãoseja‘s’,oquefinalizaolaço.

Page 7: Computação Eletrônica Laços de repetição – for, while, do-whileluciano/cursos/ce/lacos.pdf · 2018-08-12 · CIn.ufpe.br Estruturas de Repetição - while • A estrutura

CIn.ufpe.br

EstruturasdeRepetição-while•  Variaçõesdowhile:

•  Aschavessãonecessáriasapenasquandohámaisdeumcomandoaserrepetido.

Page 8: Computação Eletrônica Laços de repetição – for, while, do-whileluciano/cursos/ce/lacos.pdf · 2018-08-12 · CIn.ufpe.br Estruturas de Repetição - while • A estrutura

CIn.ufpe.br

EstruturasdeRepetição-while•  Exemplosdeusodowhile:

Page 9: Computação Eletrônica Laços de repetição – for, while, do-whileluciano/cursos/ce/lacos.pdf · 2018-08-12 · CIn.ufpe.br Estruturas de Repetição - while • A estrutura

CIn.ufpe.br

EstruturasdeRepetição:do-while•  Fluxogramadodo-while:

–  Oscomandosserãoexecutadosaomenosumavez,poisaavaliaçãodacondiçãoocorreapenasapósaprimeiraexecução.

Avaliarcondição

Executarcomandos

verdadeiro

falso

prosseguir

(repetir)

Page 10: Computação Eletrônica Laços de repetição – for, while, do-whileluciano/cursos/ce/lacos.pdf · 2018-08-12 · CIn.ufpe.br Estruturas de Repetição - while • A estrutura

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.

Page 11: Computação Eletrônica Laços de repetição – for, while, do-whileluciano/cursos/ce/lacos.pdf · 2018-08-12 · CIn.ufpe.br Estruturas de Repetição - while • A estrutura

CIn.ufpe.br

EstruturasdeRepetição:do-while•  Comodo-while,oprogramaanteriorpoderiaserescritoassim:

Podemosutilizarexpressõesbooleanastãocomplexasquantosequeiradentrodosparêntesesdowhile.Obs.:Zerosempreéinterpretadocomofalsoequalqueroutronúmerocomoverdadeiro.

Page 12: Computação Eletrônica Laços de repetição – for, while, do-whileluciano/cursos/ce/lacos.pdf · 2018-08-12 · CIn.ufpe.br Estruturas de Repetição - while • A estrutura

CIn.ufpe.br

EstruturasdeRepetição:do-while•  Variaçõesdodo-while:

•  Aschavessãonecessáriasapenasquandohámaisdeumcomandoaserrepetido.

Page 13: Computação Eletrônica Laços de repetição – for, while, do-whileluciano/cursos/ce/lacos.pdf · 2018-08-12 · CIn.ufpe.br Estruturas de Repetição - while • A estrutura

CIn.ufpe.br

EstruturasdeRepetição-do-while•  Exemplosdeusododo-while:

Page 14: Computação Eletrônica Laços de repetição – for, while, do-whileluciano/cursos/ce/lacos.pdf · 2018-08-12 · CIn.ufpe.br Estruturas de Repetição - while • A estrutura

CIn.ufpe.br

EstruturasdeRepetição:Contadores•  Algumasvezessabemosexatamentequantasvezesqueremos

executaroscomandos.•  Nessescasospodemosutilizarumavariávelinteiracomo

contador,incrementando-aacadaexecução,everificandoseamesmaatingiuvalordesejadodeexecuções.

•  Ex.:Imprimirtodososnúmerosde1a15:Inicialização

Avaliarcondição

incremento

Page 15: Computação Eletrônica Laços de repetição – for, while, do-whileluciano/cursos/ce/lacos.pdf · 2018-08-12 · CIn.ufpe.br Estruturas de Repetição - while • A estrutura

CIn.ufpe.br

EstruturasdeRepetição-for•  Fluxogramadofor:

Avaliarcondição

verdadeiro

falso

prosseguir

Inicialização

incremento

Executarcomandos

Page 16: Computação Eletrônica Laços de repetição – for, while, do-whileluciano/cursos/ce/lacos.pdf · 2018-08-12 · CIn.ufpe.br Estruturas de Repetição - while • A estrutura

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.

Page 17: Computação Eletrônica Laços de repetição – for, while, do-whileluciano/cursos/ce/lacos.pdf · 2018-08-12 · CIn.ufpe.br Estruturas de Repetição - while • A estrutura

CIn.ufpe.br

EstruturasdeRepetição:for•  Sesoubermosdeantemãoquantosalunoshánaturma(por

exemplo:5),oprogramaanteriorpoderiaserescritoassim:

Page 18: Computação Eletrônica Laços de repetição – for, while, do-whileluciano/cursos/ce/lacos.pdf · 2018-08-12 · CIn.ufpe.br Estruturas de Repetição - while • A estrutura

CIn.ufpe.br

EstruturasdeRepetição:for•  Variaçõesdofor(nemtodassãorecomendáveis):

•  Aschavessãonecessáriasapenasquandohámaisdeumcomandoaserrepetido.

Page 19: Computação Eletrônica Laços de repetição – for, while, do-whileluciano/cursos/ce/lacos.pdf · 2018-08-12 · CIn.ufpe.br Estruturas de Repetição - while • A estrutura

CIn.ufpe.br

EstruturasdeRepetição:for•  Outrosexemplosdeusodofor:

Page 20: Computação Eletrônica Laços de repetição – for, while, do-whileluciano/cursos/ce/lacos.pdf · 2018-08-12 · CIn.ufpe.br Estruturas de Repetição - while • A estrutura

CIn.ufpe.br

EstruturasdeRepetição:for•  Outrosexemplosdeusodofor:

Page 21: Computação Eletrônica Laços de repetição – for, while, do-whileluciano/cursos/ce/lacos.pdf · 2018-08-12 · CIn.ufpe.br Estruturas de Repetição - while • A estrutura

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.

Page 22: Computação Eletrônica Laços de repetição – for, while, do-whileluciano/cursos/ce/lacos.pdf · 2018-08-12 · CIn.ufpe.br Estruturas de Repetição - while • A estrutura

CIn.ufpe.br

EstruturasdeRepetição:break

•  Exemplo:

Page 23: Computação Eletrônica Laços de repetição – for, while, do-whileluciano/cursos/ce/lacos.pdf · 2018-08-12 · CIn.ufpe.br Estruturas de Repetição - while • A estrutura

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.

Page 24: Computação Eletrônica Laços de repetição – for, while, do-whileluciano/cursos/ce/lacos.pdf · 2018-08-12 · CIn.ufpe.br Estruturas de Repetição - while • A estrutura

CIn.ufpe.br

EstruturasdeRepetição:continue

•  Exemplo:calcularoprodutoapenasdosnúmerosdigitadosqueforemdiferentesdezero:

Page 25: Computação Eletrônica Laços de repetição – for, while, do-whileluciano/cursos/ce/lacos.pdf · 2018-08-12 · CIn.ufpe.br Estruturas de Repetição - while • A estrutura

CIn.ufpe.br

EstruturasdeRepetição:LaçosAninhados

•  Todososlaçosvistospodemseraninhados,unsdentrodosoutros.Exemplos:

Page 26: Computação Eletrônica Laços de repetição – for, while, do-whileluciano/cursos/ce/lacos.pdf · 2018-08-12 · CIn.ufpe.br Estruturas de Repetição - while • A estrutura

CIn.ufpe.br

EstruturasdeRepetição:LaçosAninhados

•  Exemplo:

•  Qualovalorfinaldetotal,impressopeloprograma?

Page 27: Computação Eletrônica Laços de repetição – for, while, do-whileluciano/cursos/ce/lacos.pdf · 2018-08-12 · CIn.ufpe.br Estruturas de Repetição - while • A estrutura

CIn.ufpe.br

EstruturasdeRepetição:LaçosAninhados

•  Exemplo:impedirentradasinválidas,paracalcularoprodutoapenasdosnúmerosdigitadosqueforemdiferentesdezero:

Page 28: Computação Eletrônica Laços de repetição – for, while, do-whileluciano/cursos/ce/lacos.pdf · 2018-08-12 · CIn.ufpe.br Estruturas de Repetição - while • A estrutura

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}}

Page 29: Computação Eletrônica Laços de repetição – for, while, do-whileluciano/cursos/ce/lacos.pdf · 2018-08-12 · CIn.ufpe.br Estruturas de Repetição - while • A estrutura

CIn.ufpe.br

ExemplodeCálculodeMaiorouMáximo

29

Page 30: Computação Eletrônica Laços de repetição – for, while, do-whileluciano/cursos/ce/lacos.pdf · 2018-08-12 · CIn.ufpe.br Estruturas de Repetição - while • A estrutura

CIn.ufpe.br

ExemplodeCálculodeMédia

30

Page 31: Computação Eletrônica Laços de repetição – for, while, do-whileluciano/cursos/ce/lacos.pdf · 2018-08-12 · CIn.ufpe.br Estruturas de Repetição - while • A estrutura

CIn.ufpe.br

Atividade11.  Escrevaumalgoritmoquelê50númerosinteiroseemseguida

mostraasomadetodososímpareslidos.2.  Altereoalgoritmoanteriorparaqueeleconsidereapenasa

somadosímparesqueestejamentre100e200.3.  Construaumalgoritmoqueleiaumconjuntode20números

inteirosemostrequalfoiomaioreomenorvalorfornecido.4.  Altereoprogramaanteriorparaqueelenãopermitaaentrada

devaloresnegativos.

Page 32: Computação Eletrônica Laços de repetição – for, while, do-whileluciano/cursos/ce/lacos.pdf · 2018-08-12 · CIn.ufpe.br Estruturas de Repetição - while • A estrutura

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;}

Page 33: Computação Eletrônica Laços de repetição – for, while, do-whileluciano/cursos/ce/lacos.pdf · 2018-08-12 · CIn.ufpe.br Estruturas de Repetição - while • A estrutura

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

Page 34: Computação Eletrônica Laços de repetição – for, while, do-whileluciano/cursos/ce/lacos.pdf · 2018-08-12 · CIn.ufpe.br Estruturas de Repetição - while • A estrutura

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

|

Page 35: Computação Eletrônica Laços de repetição – for, while, do-whileluciano/cursos/ce/lacos.pdf · 2018-08-12 · CIn.ufpe.br Estruturas de Repetição - while • A estrutura

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 −

Page 36: Computação Eletrônica Laços de repetição – for, while, do-whileluciano/cursos/ce/lacos.pdf · 2018-08-12 · CIn.ufpe.br Estruturas de Repetição - while • A estrutura

CIn.ufpe.br

Atividade5:1EE–2014.1

36

Page 37: Computação Eletrônica Laços de repetição – for, while, do-whileluciano/cursos/ce/lacos.pdf · 2018-08-12 · CIn.ufpe.br Estruturas de Repetição - while • A estrutura

CIn.ufpe.br 37

Page 38: Computação Eletrônica Laços de repetição – for, while, do-whileluciano/cursos/ce/lacos.pdf · 2018-08-12 · CIn.ufpe.br Estruturas de Repetição - while • A estrutura

CIn.ufpe.br 38