instituto federal de educaÇÃo, ciÊncia e tecnologia...
TRANSCRIPT
INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA
CATARINENSE – CÂMPUS VIDEIRA. CURSO DE GRADUAÇÃO EM CIÊNCIA DA COMPUTAÇÃO
APOSTILA DE LÓGICA – DISCIPLINA DE ALGORITMOS
2
1. CONCEITOS DE PROGRAMAÇÃO
1.1. LÓGICA
A lógica de programação é necessária para pessoas que desejam trabalhar comimplementaçãodeprogramasparaosdispositivoscomputacionais,elapermitedefinirasequêncialógicaparaaelaboraçãodeumprojeto.
Entãooqueélógica?Lógica de programação é a técnica de encadear pensamentos para atingir
determinadoobjetivo.
1.2. SEQUÊNCIA LÓGICA
Estespensamentospodemserdescritoscomoumasequênciade instruções,quedevemserseguidasparasecumprirumadeterminadatarefa.
Sequência Lógica são passos executados até atingir umobjetivo ou solução de
umproblema.
1.3. INSTRUÇÕES
Na linguagem comum, entende-se por instruções “um conjunto de regras ounormasdefinidasparaarealizaçãoouempregodealgo”.
Eminformática,porém,instruçãoéainformaçãoqueindicaaumcomputadorumaaçãoelementaraexecutar.Convémressaltarqueumaordemisoladanãopermiterealizaro processo completo, para isso é necessário um conjunto de instruções colocadas emordemsequenciallógica.
Éevidentequeessasinstruçõestêmqueserexecutadasemumaordemadequada.Dessa maneira, uma instrução tomada em separado não tem muito sentido; paraobtermosoresultado,precisamoscolocarempráticaoconjuntodetodasas instruções,naordemcorreta.
Instruções são conjuntos de regras ou normas definidas para a realização ou
empregodealgo.Eminformática,éoqueindicaaumcomputadorumaaçãoelementaraexecutar.
1.4. ALGORITMO
Um algoritmo é formalmente uma sequência finita de passos que levam aexecução de uma tarefa. Podemos pensar em algoritmo como uma receita, umasequênciadeinstruçõesquedãocabodeumametaespecífica.Estastarefasnãopodemserredundantesnemsubjetivasnasuadefinição,devemserclaraseprecisas.
Comoexemplosdealgoritmos,podemoscitarosalgoritmosdasoperaçõesbásicas(adição,multiplicação,divisãoesubtração)denúmerosreaisdecimais.Outrosexemplos
3
seriamosmanuaisdeaparelhoseletrônicos, comoumaTV,queexplicampasso-a-passocomo,porexemplo,programaroscanais.
Atémesmoascoisasmaissimples,podemserdescritasporsequênciaslógicas.Porexemplo:
“Somardoisnúmerosquaisquer”.
• ColoqueoprimeironúmeronacaixaA• ColoqueosegundonúmeronacaixaB• SomeonúmerodacaixaAcomnúmerodacaixaBecoloqueoresultadona
caixaC
Caixa A Caixa B+ = Caixa C
1.5. PROGRAMAS
Osprogramasde computadoresnadamais sãodoquealgoritmosescritosnumalinguagemdecomputador(Java,Pascal,C,COBOL,Fortran,VisualBasic,Smalltalk,entreoutras)equesãointerpretadoseexecutadosporumamáquina,nocasoumcomputador.Notem que dada esta interpretação rigorosa, um programa é por natureza, muitoespecíficoerígidoemrelaçãoaosalgoritmosdavidareal.
1.6. EXERCÍCIOS
1) Descreva uma sequência de passos para somar dois números emultiplicar oresultadopeloprimeironúmero.
2) Façaumalgoritmoparatrocarumalâmpada.Descrevacomdetalhes.
4
2. DESENVOLVENDO ALGORITMOS
2.1. PSEUDOCÓDIGO
Os algoritmos são descritos em uma linguagem chamada pseudocódigo oupseudolinguagem. Este nome é uma alusão à posterior implementação em umalinguagemdeprogramação,ouseja,quando formosprogramaremuma linguagem,porexemploC,estaremosgerandocódigoemC.Porissoosalgoritmossãoindependentesdaslinguagensdeprogramação.Aocontráriodeuma linguagemdeprogramaçãonãoexisteumformalismorígidodecomodeveserescritooalgoritmo.
Oalgoritmodeveserfácildeinterpretarefácildecodificar.Ouseja,eledeveserointermediárioentrealinguagemfaladaealinguagemdeprogramação.
2.2. REGRAS PARA CONSTRUÇÃO DO ALGORITMO
Para escrever um algoritmo precisamos descrever a sequência de instruções, demaneirasimpleseobjetiva.Paraissoutilizaremosalgumastécnicas:
• Usarsomenteumverboporfrase• Imaginarquevocêestádesenvolvendoumalgoritmoparapessoasquenão
trabalhamcominformática• Usarfrasescurtasesimples• Serobjetivo• Procurarusarpalavrasquenãotenhamsentidodúbio
2.3. FASES
Éimportanteressaltarquequalquertarefaquesigadeterminadopadrãopodeserdescritaporumalgoritmo,comoporexemplo:
CALCULAROSALDOFINANCEIRODEUMESTOQUEEntretanto ao montar um algoritmo, precisamos primeiro dividir o problema
apresentadoemtrêsfasesfundamentais.
Ondetemos:ENTRADA:SãoosdadosdeentradadoalgoritmoPROCESSAMENTO:SãoosprocedimentosutilizadosparachegaraoresultadofinalSAÍDA:Sãoosdadosjáprocessados
5
2.4. EXEMPLO DE ALGORITMO
Imagine o seguinte problema: Calcular amédia final dos alunos da 3ª Série. Osalunosrealizarãoquatroprovas:P1,P2,P3eP4.
Onde:MédiaFinal=(P1+P2+P3+P4)/4 Paramontaroalgoritmoproposto,faremostrêsperguntas:a)Quaissãoosdadosdeentrada?R:OsdadosdeentradasãoP1,P2,P3eP4.b)Qualseráoprocessamentoaserutilizado?R: O procedimento será somar todos os dados de entrada e dividi-los por 4
(quatro)(P1+P2+P3+P4)/4c)Quaisserãoosdadosdesaída?R:OdadodesaídaseráamédiafinalAlgoritmo
• Recebaanotadaprova1• Recebaanotadeprova2• Recebaanotadeprova3• Recebaanotadaprova4• Sometodasasnotasedividaoresultadopor4• Mostreoresultadodadivisão
2.5. EXERCÍCIOS
1)Identifiqueosdadosdeentrada,processamentoesaídanoalgoritmoabaixo:• Recebacódigodapeça• Recebavalordapeça• RecebaQuantidadedepeças• Calculeovalortotaldapeça(Quantidade*Valordapeça)• Mostreocódigodapeçaeseuvalortotal
2)Façaumalgoritmopara“Calcularoestoquemédiodeumapeça”,sendoque:ESTOQUEMÉDIO=(QUANTIDADEMÍNIMA+QUANTIDADEMÁXIMA)/2
6
3. DIAGRAMA DE BLOCO
3.1. O QUE É UM DIAGRAMA DE BLOCO?
O diagrama de blocos é uma forma padronizada e eficaz para representar ospassoslógicosdeumdeterminadoprocessamento.Comodiagramapodemosdefinirumasequência de símbolos, com significado bem definido, portanto, sua principal função éfacilitaravisualizaçãodospassosdeumprocessamento.
Para desenvolver um diagrama correto de forma clara e precisa, algumasrecomendaçõessãonecessárias:
• Inicieodiagramacompoucosblocos,eaopoucosvásubdividindoosblocosdeformaacriarpequenostrechos.
• Recomenda-se iniciaraconstruçãodecimaparabaixoedadireitaparaaesquerda
• Nãocruzeaslinhasentreosblocos• Transcrevaodiagramadeblocoempseudolinguagem
3.2. SIMBOLOGIA
De forma a tornar mais simples o entendimento de diagramas de blocos, sénecessáriaumapadronizaçãodosblocosqueserãoutilizados,algunsosblocosutilizadossãodemonstradosnaTabela1.
Tabela1–PrincipaisBlocos
Terminal–símboloutilizadocomopontoparaindicaroinícioe/ouofimdeumprograma
Setadefluxodedados–permiteindicarosentidodofluxodedados.Serveexclusivamenteparaconectarossímbolosoublocosexistentes
Processamento–Símbolooublocoqueseutilizaparaindicarcálculos(algoritmos)aefetuaratribuiçõesdevaloresouqualquermanipulaçãodedadosquetenhaumblocoespecíficoparasuadescrição
Teclado–Entradadedadosqueserãoinseridosatravésdoteclado
Display–Saídadedadosvisuaisatravésdeummonitor.
7
Dentro do símbolo sempre terá algo escrito, pois somente os símbolos não nos
dizemnada.Vejanosexemplosaseguir:
Início
Fim
CalcularMedia=(n1+n2+n3+n4)/4
“CALCULAR A MÉDIA DE 4 NOTAS”
Receba n1
Receba n2
Receba n3
Receba n4
Média
3.3. EXERCÍCIOS
1)Construaumdiagramadeblocosque:
• Leiaacotaçãododólar• Leiaumvaloremdólares• ConvertaessevalorparaReal• Mostreoresultado
8
2)Desenvolvaumdiagramaque:
• Leia4(quatro)números• Calculeoquadradoparacadaum• Sometodose• Mostreoresultado
3)Construaumdiagramadeblocosparapagamentodecomissãodevendedores
depeças,levando-seemconsideraçãoquesuacomissãoseráde5%dototaldavendaequevocêtemosseguintesdados:
• Identificaçãodovendedor• Códigodapeça• Preçounitáriodapeça• Quantidadevendida
9
4. CONSTANTES, VARIÁVEIS E TIPOS DE DADOS. Variáveiseconstantessãooselementosbásicosqueumprogramamanipula.Uma
variáveléumespaçoreservadonamemóriadocomputadorparaarmazenarumtipodedadodeterminado.
4.1. CONSTANTES
Constanteéumdeterminadovalor fixoquenãosemodificaao longodo tempo,duranteaexecuçãodeumprograma.
4.2. VARIÁVEIS
Variável é a representação simbólica dos elementos de certo conjunto. Cadavariável corresponde a uma posição de memória, cujo conteúdo pode se alterado aolongodotempoduranteaexecuçãodeumprograma.Emboraumavariávelpossaassumirdiferentesvalores,elasópodearmazenarumvaloracadainstante.
Partindo de uma analogia, uma variável pode ser considerada como uma caixa,ondeotipodedadoquepodeserarmazenadonavariáveléotamanhodacaixa,mesmoprincípioaconteceemprogramação,umavariávelqueiráreceberumvalorlógicotemumtamanhoembytes(1byte)inferioraumavariávelqueiráreceberumvalorReal(4ou8bytes).
Total
34
Nome
Valor
Tipo
Figura1-Representaçãodeumavariável
Umavariávelécompostaportrêspartes:1. Nome:éorótulodacaixa;comoelairáseridentificada.2. Valor:oqueestáarmazenadodentrodacaixa.3. Tipo:sãoasdimensõesdacaixa,emcomputaçãoserefereaquantidadede
bitsdisponíveisparaarmazenamento.
10
4.3. NOME DAS VARIÁVEIS
Paraatribuironomeparaumavariável,algumasregrasdevemseobedecida:1. Onomedeumavariávelpodeterumoumaiscaracteres;2. Oprimeiro caracteredonomedeveráobrigatoriamente ser uma letra ou
sublinhado;3. Onomenãopoderáconterespaçosembranco;4. Nãopoderãoserutilizadosoutroscaracteresdiferentesdeletras,números
ousublinhado;5. Nãopoderãoserutilizadascomonomedavariável,palavrasreservadasda
linguagem,aTabela2apresentaalistadepalavrasreservadasnoC.Tabela2-Palavras-chavedoC
autobreakcasecharconstcontinuedefaultdo
doubleelseenumexternfloatforgotoif
intlongregisterreturnshortsignedsizeofstatic
structswitchtypedefunionunsignedvoidvolatilewhile
4.4. TIPOS DE VARIÁVEIS
Asvariáveiseasconstantesprecisamterseutipoespecificadoparaarmazenarerecuperarosvalores,paraissoosseguintestipossãodisponíveisemC:
Tabela3-Tiposdevariáveis
Tipo Descrição
char Caractere. Campo de 8 bits que são usados para representação dos caracteres
double Número em ponto flutuante (números reais) de precisão dupla (aproximadamente 14 dígitos significativos) os valores vão de ±1.7 × 10-308 até ±1.7 × 10308
float Número em ponto flutuante de precisão simples (aproximadamente 7 dígitos significativos) os valores vão de ±3,4 × 10-38 até ±3,4 × 1038
int Inteiro de 32 bits com sinal (de -2.147.483.648 até 2.147.483.647)
void Sem valor
4.5. LENDO E IMPRIMINDO VALORES EM C
Para lere imprimirvaloresemCnãotemmuitosegredo,oprincipaldetalhequedeve se observar se refere ao tipo de variável, pois as funções de captura e impressãonecessitamquesejaespecificadoessetipo.
11
Vamosaumexemplo:
4.5.1. Imprimindo valores
Aimpressãodevaloreséfeitapelocomandoprintf:
a = 5
a
Início
Fim
Figura2-ImprimindovaloresPerceba que o printf possui alguns caracteres estranhos dentro das aspas, o
primeiro %d se refere ao tipo de dado esperado, outros formatos que poderão serutilizados:
Tabela4-Caracterescoringas
Caractere Descrição
%dou%i Númerodecimalinteiro.%f Númeroreal%c Caractere
O“\n”(barrainvertida)éosímboloindicadoparaaofinalrealizarumaquebrade
linhanahoradeapresentaroresultadoOutroexemplodeimpressão:
12
a = 5
a
Início
Fim
pi = 3.14
pi
Figura3-Imprimindo2valores
Numaoperaçãodessesvalores,fizemosduassaídasprintfs,umacomoresultadosendoimpressocomointeiroeoutracomonúmeroreal:
Você iráperceberqueoResultado1 será inconsistente, isso sedevea formade
armazenamentodovalorRealquenahoraderealizaraapresentaçãonãoéapresentadodevidamente:
Resultado 1= -2147483648 Resultado 2= 15.700001
4.5.2. Lendo um valor
Paralerumvalordigitado,utilizamosafunçãoscanf:
13
a
Início
Fim
a
Figura4-LendoumvalorNoteassemelhançasdosargumentoscomafunçãoprintf,aexceçãosedánouso
do operador “&” que em C é utilizado para passar a localização de uma variável namemóriaenãoseuvalor.
Cuidequeaoexecutaresseprogramaa telaapresentadaestávazia, aguardandoquevocêdigitealgo:
Figura5-Aguardandoalgoserdigitado
Apósdigitarovalor:
14
Figura6-Apósaexecução
4.6. EXEMPLO 01 – LENDO DOIS VALORES E APRESENTANDO A SOMA
Nesse exemplo iremos apresentar um programa que irá solicitar ao usuário que
digitedoisvaloreseapresenteasomadeles:
a+b
Início
Fim
a
b
Figura7-Algoritmoparasomardoisvalores
4.7. EXERCÍCIOS
1. Convertaoexemploacimadeformaquepossarealizarasomadenúmerosreais.2. Indiqueosnomesdasvariáveisquesãoválidos.Justifiqueosnomesinválidos.
a. pesob. média_finalc. R$
d. inte. 1diaf. teste1
g. area.do.quadradoh. valorreali. a+b
15
5. OPERADORES Osoperadoressãomeiospeloqualincrementamos,decrementamos,comparamos
eavaliamosdadosdentrodocomputador.Temostrêstiposdeoperadores:• OperadoresAritméticos• OperadoresRelacionais• OperadoresLógicos
5.1. OPERADORES ARITMÉTICOS
Osoperadoresaritméticossãoosutilizadosparaobterresultadosnuméricos.Alémdaadição,subtração,multiplicaçãoedivisão,háooperadorrestodadivisão.Ossímbolosparaosoperadoresaritméticossão:
Tabela5-Operadoresaritméticos
Operação SímboloAdição +Subtração -Multiplicação *Divisão /Restodadivisão %
Tabela6-HierarquiadasOperaçõesAritméticasNível Operação1º ()Parênteses2º *ou/(oqueaparecerprimeiro)3º +ou–(oqueaparecerprimeiro)
ExemploTotal = PRECO * QUANTIDADE 1 + 7 * 2 - 1 = 14 3 * (1 - 2) + 4 * 2 = 5
5.2. OPERADORES RELACIONAIS
Os operadores relacionais são utilizados para comparar números. Os valores aseremcomparadospodemsernúmerosouvariáveis.
Estes operadores sempre retornam valores lógicos (0 para falso e 1 paraverdadeiro). Para estabelecer prioridades no que diz respeito a qual operação executarprimeiro,utilizeosparênteses.
16
Osoperadoresrelacionaissão:
Tabela7-OperadoresrelacionaisDescrição Símbolo
Iguala =ou==Diferente !=ou<>Maiorque >Menorque <Maiorouiguala >=Menorouiguala <=
Exemplo:TendoduasvariáveisA=5eB=3Osresultadosdasexpressõesseriam:
Tabela8-ExemplodeexpressõesExpressão ResultadoA==B FALSOA!=B VERDADEIROA>B VERDADEIROA<B FALSOA>=B VERDADEIROA<=B FALSO
5.3. OPERADORES LÓGICOS
Os operadores lógicos servem para combinar resultados de expressões,retornandoseoresultadofinaléverdadeirooufalso.
Osoperadoreslógicossão:
Tabela9-OperadoreslógicosOperador Original EmC
e and &&ou or || (tecla ao lado do Z no
teclado)não not !
E/AND = Uma expressão AND (E) é verdadeira se todas as condições forem
verdadeiras
Tabela10-OperadorE1ºValor 2ºValor Resultado
F F F
17
F V FV F FV V V
OR/OU=UmaexpressãoOR (OU)éverdadeirasepelomenosumacondição for
verdadeira
Tabela11-OperadorOU1ºValor 2ºValor Resultado
F F FF V VV F VV V V
NOT=Uma expressãoNOT (NÃO) inverte o valor da expressão ou condição, se
verdadeirainverteparafalsaevice-versa.
Tabela12-OperadorNÃO1ºValor Resultado
V FF V
Exemplos:SuponhaquetemostrêsvariáveisA=5,B=8eC=1.Osresultadosdasexpressõesseriam:
Tabela13-ExpressõesExpressão Resultado
A==B && B>C FALSOA!=B || B<C VERDADEIROA>B ! VERDADEIROA<B && B>C VERDADEIROA>=B || B==C FALSOA<=B ! FALSO
5.4. EXERCÍCIOS
1) Tendo as variáveis SALARIO, IR e SALLIQ, e considerando os valores abaixo.Informeseasexpressõessãoverdadeirasoufalsas.
18
2) SabendoqueA=3,B=7eC=4,informeseasexpressõesabaixosãoverdadeirasoufalsas.
a)(A+C)>B ( )b)B>=(A+2) ( )c)C==(B–A) ( )d)(B+A)<=C ( )e)(C+A)>B ( )
3) Sabendo que A=5, B=4 e C=3 e D=6, informe se as expressões abaixo sãoverdadeirasoufalsas.
a)(A>C)&&(C<=D) ( )b)(A+B)>10||(A+B)==(C+D) ( )c)(A>=C)&&(D>=C) ( )
4) Faça um programa que solicite ao usuário que digite a base e a altura de umtriângulo.Emseguida,apresenteaáreadomesmo.
Área=(Base*Altura)/2
5) Crieumprogramaquesoliciteaousuárioquedigiteaquantidadedehorasedeminutos. Após isso, o programa deverá responder a quantidade de segundos nesseperíodo.
Segundos=(Quantidadedehoras*3600)+(Quantidadedeminutos*60)
6) Escrever um algoritmo para determinar o consumo médio de um automóvelsendofornecidaadistânciatotalpercorridapeloautomóveleototaldecombustívelgasto
Consumomédio=distânciatotal/totaldecombustívelgasto
7) A Loja Café comAçúcar está vendendo seus produtos em 5 (cinco) prestaçõessemjuros.Façaumprogramaquerecebaumvalordeumacompraemostreovalordasprestações.
19
6. COMANDOS DE DECISÃO Oscomandosdedecisãooudesviofazempartedastécnicasdeprogramaçãoque
conduzem a estruturas de programas que não são totalmente sequenciais. Com asinstruçõesdeSALTOouDESVIOpode-se fazercomqueoprogramaprocedadeumaououtra maneira, de acordo com as decisões lógicas tomadas em função dos dados ouresultadosanteriores.
6.1. SE / IF
Aestruturadedecisão“SE/IF”normalmentevemacompanhadadeumcomando,ou seja, se determinada condição for satisfeita pelo comando SE/IF então executedeterminadocomando.
A decisão é sempre composta por um ou mais operador relacional, equando mais de um operador relacional estiver na condição,obrigatoriamente deve-se utilizar o operador lógico para conectar asexpressões.
AdecisãosópodeserrespondidacomSimouNão
Imagine um algoritmo que determinado aluno somente estará aprovado se sua
médiaformaiorouiguala5.0,vejanoexemplodealgoritmocomoficaria.SEMEDIA>=5.0ENTÃO
ALUNOAPROVADOEmdiagramadeblocosficariaassim:
Figura8-ComandoIF
20
6.2. SE... SENÃO / IF....ELSE
Aestruturadedecisão“SE/SENÃO”,funcionaexatamentecomoaestrutura“SE”,com apenas uma diferença, em “SE” somente podemos executar comandos caso acondição seja verdadeira, diferente de “SE/SENÃO”, pois sempre um comando seráexecutado independente da condição, ou seja, caso a condição seja “verdadeira” ocomandodacondiçãoseráexecutado,casocontrárioocomandodacondição“falsa”seráexecutada.
Emalgoritmoficariaassim:SEMÉDIA>=5.0ENTÃO
ALUNOAPROVADOSENÃO
ALUNOREPROVADOOdiagramaeocódigoemC
Figura9-UsodoSE/SENÃONo exemplo acima está sendo executada uma condição que, se for verdadeira,
executa o comando “APROVADO”, caso contrário executa o segundo comando“REPROVADO”.
6.2.1. Exercício
1) Faça um programa que verifique se um caractere é M ou F. Se for M deve
apareceramensagem“Masculino”,seforF,deveaparecer“Feminino”.2) Façaumprogramaquesomedoisvalores,seoresultadofor0deveaparecera
mensagem“Zero”,casocontrário,“DiferentedeZero”.
21
6.3. IF/ELSE ENCADEADOS
Paraoexemplodadoanteriormentepodemospensaremtornaroprogramamaiselaborado,criandoasseguintessituações:
• Casooalunotirenotaabaixode5,sejaconsideradoreprovado.• Casooalunotenhanotamaiorouiguala5,porém,menordoque7estará
emexame.• Casooalunotenhanotamaiorouiguala7estaráaprovado.
AtenteasaídadoprimeiroIF,neleacondiçãomédia>=5garanteduassituações,
sefalsaentãoapresentaamensagemde“Reprovado”,seforverdadeiraentraparamaisumadecisãoIF.
No segundo IF não me preocupo se a média for maior do que 5, pois isso foiverificado no bloco anterior, com isso verifico agora se média >= 7 e as duaspossibilidades:“Exame”ou“Aprovado”.
Figura10-IFsencadeados
6.4. VÁRIOS IFS
Podemos também utilizar vários IFs em sequência para resolver o problema damédia:
22
media < 5Sim
Não
Reprovado
Fim
media
media >= 5 && media < 7
Sim
Não
Exame
media >= 7Sim
Não
Aprovado
Figura11-IFemsequênciaNesse caso, deve-se tomar cuidado nas condições do IF, como queremos que
apenasumamensagemsejaexibida,acondiçãonãopodeseraplicadaparavárioscasos,porisso,quenosegundoIFtivemosquerealizarduascomparações.
6.5. CASO SELECIONE / SELECT... CASE
AestruturadedecisãoCASO/SELECIONEéutilizadaparatestar,nacondição,umaúnica expressão, queproduzum resultado, ou, então, o valordeumavariável, emqueestáarmazenadoumdeterminado conteúdo.Compara-se, então,o resultadoobtidonotestecomosvaloresfornecidosemcadacláusula“Caso”.
No exemplo do diagrama de blocos abaixo, é recebido uma variável “Valor” etestado seu conteúdo, caso uma das condições seja satisfeita, é apresentado o mêscorrespondente,casocontrárioéapresentadaamensagem“Nãoéummêsválido!”.
DiagramadeBloco:
23
Recebe Valor
Valor = 1
Valor = 2
Valor = 3
.
.
.
.
Valor = 12
Não
Não
Não
Sim
Sim
Sim
SimNão
Janeiro
Fevereiro
Março
Março
Não é um mês válido
Figura12-DiagramadeblocodoSwitch
EmC:
Figura13-Códigofontedoswitch
24
6.6. EXERCÍCIOS
1. Osmoradores de uma localidade possuem um poço artesiano que distribui
águaparaacomunidade,acobrançaéfeitapeloconsumo,até10m3omoradorpagataxafixadeR$10,00, acimadessaquantidade,elepagaR$2,00pormetro cúbicoexcedente.Faça umprograma que receba a quantidade de litros gastos pelomorador e retorno ovalorquedeveserpago.
2. Faça um diagrama de bloco que leia um número inteiro e mostre uma
mensagemindicandoseestenúmeroéparouímpar,eseépositivoounegativo.
3. ASecretariadeMeioAmbientequecontrolao índicedepoluiçãomantém3gruposdeindústriasquesãoaltamentepoluentesdomeioambiente.Oíndicedepoluiçãoaceitávelvariade0,05até0,3.Seoíndicesobeparamaisde0,3asindústriasdo1ºgruposão intimadas a suspenderem suas atividades, se o índice crescer para mais de 0,4 asindústrias do 1º e 2º grupo são intimadas a suspenderem suas atividades, se o índiceatingirmaisde0,5todososgruposdeverãosernotificadosaparalisaremsuasatividades.Façaumprogramaqueleiaoíndicedepoluiçãomedidoeemitaanotificaçãoadequadaaosdiferentesgruposdeempresas.
4. Elaboreumalgoritmoquedadaa idadedeumciclista classifique-oemuma
dasseguintescategorias:InfantilA=5a7anosInfantilB=8a11anosJuvenilA=12a13anosJuvenilB=14a17anosAdultos=Maioresde18anos
25
7. COMANDOS DE REPETIÇÃO Utilizamos os comandos de repetição quando desejamos que um determinado
conjuntodeinstruçõesoucomandossejamexecutadosumnúmerodefinidoouindefinidodevezes,ouenquantoumdeterminadoestadoprevalecerouatéquesejaalcançado.
Essetipodeestruturaémuitoimportanteemprogramação,eseuusoéconstantenasdisciplinasdeprogramação.
Basicamenteumlaçoderepetiçãoécompostoportrêspartes:
1. Inicialização2. Verificaçãodacondição.3. Incremento/decremento
Nodiagramaaseguirsãoapresentasastrêspartes:
i <= 10
Sim
Não
i = i + 1
i = 0
Fim
2
3
1
Figura14-PartesdeumlaçoderepetiçãoQuantoaoformatodarepetição,sãobasicamentetrêsosformatosaceitosemC:
• Enquantox,processar(While...Loop);• Processar...,Enquantox(Do...While);• Para...Até...Seguinte(For...To...Next).
26
7.1. ENQUANTO X, PROCESSAR (WHILE... LOOP).
Neste caso, o bloco de operações será executado enquanto a condição x forverdadeira. O teste da condição será sempre realizado antes de qualquer operação.Enquantoacondiçãoforverdadeiraoprocessoserepete.Podemosutilizaressaestruturaparatrabalharmoscomcontadores.
Emdiagramadeblocoaestruturaéaseguinte:
Figura15-DiagramaWhile
Exemplodecontador:
i <= 10Sim
Não
i = i + 1
i = 0
Fim
i
Figura16-LaçoWhile
7.2. PROCESSAR..., ENQUANTO X (DO... LOOP WHILE).
Nestecasoprimeirosãoexecutadososcomandos,esomentedepoisérealizadootestedacondição.Seacondiçãoforverdadeira,oscomandossãoexecutadosnovamente,casosejafalsoéencerradoocomandoDO.
27
EmdiagramadeblocoelinguagemC:
i <= 10
Não
i = i + 1
Fim
i = 0
i
Sim
Figura17-LaçoderepetiçãoDO
7.3. PARA... ATÉ... SEGUINTE (FOR... TO... NEXT).
AconstruçãodoLaçoFor,emdiagramaémuitosemelhantecomolaçoWhile,masa inicialização, controle e incremento se dá na mesma linha, tornando mais fácil avisualizar.
AbaixosegueoexemplodolaçoWhile,modificadoparatrabalharcomFor:EmC:
Em certas linguagens há operadores específicos para o incrementocomoéo casodeCeas linguagensderivadasqueutilizamooperador++(porexemplo,poderíamosutilizari++emvezdei=i+1).
28
7.4. CASOS PRÁTICOS COM REPETIÇÃO
Para melhor ilustrar o uso dos laços de repetição iremos apresentar alguns
exemplospráticos:
7.4.1. Exemplo 01 - Somando os valores
Atividade:Criarumprogramaparasomarosnnúmerospares.PartimosdolaçoderepetiçãojáapresentandoWhile:
i <= 10Sim
Não
i = i + 1
i = 0
Fim
i
Figura18-LaçoWhileComonãosabemosovalorden,iremoscriarumavariávelparaela,especificarum
valoreutilizarovalordencomolimitedolaçoderepetição.
29
i <= n
Sim
Não
i = i + 1
Fim
i
i = 0
n
Figura19-ModificaçõesnolaçobásicoSe for digitado o valor 5 (utilizaremos esse valor para o restante do exemplo)
perceba que o programa irá contar de 1 a 6, não coincidindo como esperado que eracontaraté5,pararesolverisso,vamosretirarosinalde“=”dacomparação.
A atividade proposta é somar os números pares, desconsiderando o 0 (zero) oprogramadeverealizaraseguinteconta:
Total = 2 + 4 + 6 + 8 + 10 Total = 30
Antesderealizarasoma,vamosapresentaressesvalores,comonossoprogramaapresentaosnúmerosde1a5,paraapresentarosvaloresparesbastamultiplicarmosovalordeipor2:
30
i < n
Sim
Não
i = i + 1
n = 5
Fim
i * 2
i = 0
Figura20-Imprimindovalorespares
Porenquantoapenasalteramosovalormostrado.
Agoravamoscriarumavariáveltemporáriaqueiráarmazenarparacadapassodolaçoodobrodovalordeievamosdeslocaroprintfparaofinal:
i < n
Sim
Não
i = i + 1
total = 0
Fim
n = 5
i = 0
total
total = total + (i * 2)
Executando passo-a-passo a repetição se desdobra na seguinte forma (note que
apósocálculo,oresultadoéarmazenadoemtotal):
31
Etapa VariávelTotal
Variáveli Cálculoefetuado
1ᵒ 0 1 0+(1*2)= 22ᵒ 2 2 2+(2*2)= 63ᵒ 6 3 6+(3*2)= 124ᵒ 12 4 12+(4*2)= 205ᵒ 20 5 20+(5*2)= 30
Saída 30 Matematicamentefalandoafórmuladonossoexemploé:
𝑇𝑜𝑡𝑎𝑙 = 𝑖 ∗ 2!
! ! !
7.4.2. Exemplo 02 – Verificando os divisores.
Atividade:Dadoumnúmeron,verificarentre2en–1quaissãoseusdivisores.ParafacilitararesoluçãovamospartirutilizandoolaçoderepetiçãoWhile:
i < n
Sim
Não
i = i + 1
Fim
n = 27
i = 0
i
Figura21-LaçoWhile
32
Comonãoprecisamososnúmero1eon,vamosfazerumamodificaçãonaordemdo conteúdo doWhile, começamos por imprimir o número n (com isso, apresentará ovalorden–1)einiciamosovalordei=2:
i < n
Sim
Não
i = i + 1
Fim
n = 27
i = 2
i
Figura22-ModificaçõesnolaçoWhileAgora, iremos verificar se o valor de n pode ser dividido por i e a saída, caso
positivo:
i < n
Sim
Não
i = i + 1
Fim
n = 27
i = 0
n % i == 0
O número é divisível por i
Sim
Fim
Não
Figura23-Diagramadoprograma
33
Figura24-Código-fonte
7.5. EXERCÍCIOS
1) Apresente o total da soma obtido dos cem primeiros números inteiros(1+2...+99+100).
2) Faça um programa que a partir de dois números imprima os números do
intervaloexcluindoosvaloresdados.
3) Crieumprogramaquedadoumnúmeroeleimprimaatabuadadessenúmerode1a10.
4) Façaumprogramaque conte de 1 a 100 e a cadamúltiplo de 10 emita umamensagem:“Múltiplode10”.
5) Escrevaummétodoquerecebedoisnúmerosreaisaeberetornaasomadetodososnúmerosparesexistentesentreessesdois
6) Utilizandorepetição,calculeofatorialdeumnúmero.Lembre-sequeofatorialde0é1e,nãoexistefatorialdenúmerosnegativos.