Computação Eletrônica Entrada e saída, condicionais: if e ...luciano/cursos/ce/entrada_saida_condicionais.pdfe operadores relacionais e/ou lógicos CIn.ufpe.br Condicionais •
Post on 31-Dec-2020
2 Views
Preview:
Transcript
CIn.ufpe.br
ComputaçãoEletrônicaEntradaesaída,condicionais:ifeswitchProf:LucianoBarbosaSitedaturma:www.cin.ufpe.br/~luciano/cursos/ce/
CIn.ufpe.br
EntradaeSaídaemC
2
CIn.ufpe.br
SaídadeDados
• Mensagensparaousuário– Ex:digitaraentradaouresultadodasaída
• Veroprocessamentodonossoprograma• Nestecurso,vemosimpressãoemconsoleouterminal
CIn.ufpe.br
SaídadeDados-printf
• Disponívelnabiblioteca<stdio.h>• printsignifica“imprimir”eofnofinalsignifica“formatar”:
imprimirnasaídainformações(textoenúmeros)deformaformatada.
• Asintaxeé:printf(“stringdecontrole”);
• ou:printf(“stringdecontrole”,arg1,arg2,...);
CIn.ufpe.br
SaídadeDados-printf-Sintaxeprintf(“stringdecontrole”);
• Stringdecontrolepodeconter:texto,códigosespeciaiseespecificadoresdeformatos.
• Códigosespeciais:barrainvertida(\),seguidadeumaletra.– Indicaumaaçãoquedeveserexecutadapeloprintf.
CódigosEspeciais Ação
\n Mudaocursorparaoiníciodalinhaseguinte.
\t tabulação(tab)
\” Escreveaspasduplasnatela
\\ Escreveumabarrainvertidanatela
\a Produzumalertasonoro
Maiscódigosespeciaisem:http://en.cppreference.com/w/cpp/language/escape
CIn.ufpe.br
SaídadeDados-Exemplos
CIn.ufpe.br
Printf:EspecificadoresdeFormato
• Mostrarvaloresnasvariáveisnatela• Marcaolugareoformatodeimpressãodasvariáveis,contidas
nalistaargumentos• Umespecificadorparacadavariávelaserimpressa• Todososespecificadoresdeformatocomeçamcomum%
CIn.ufpe.br
Printf:EspecificadoresdeFormato
EspecificadordeFormato Uso
%d,%i Escreverumvalordotipointeiro
%f Escreverumvalordotiporeal
%c Escreverumcaractere
%s Escreverumacadeiadecaracteres
%e Escreveumvalorrealemnotaçãocientífica
%p Imprimeoendereçodeumponteiro
%% Escreverocaractere‘%’
Maisformatosem:http://www.cplusplus.com/reference/cstdio/printf/
CIn.ufpe.br
SaídadeDados-Exemplos
CIn.ufpe.br
EntradadeDados
• Usuárioinformaumvalorparaumprograma• Osdispositivosmaiscomunssão:teclado,mouse,telasensível
aotoque,scanner,dentreoutros.
CIn.ufpe.br
EntradadeDados–scanf
• Lêapartirdodispositivodeentrada• Armazenaentradanamemória(variáveis)• Disponívelnabiblioteca<stdio.h>• scansignifica“ler”eofsignifica“formatado”• Asintaxedocomandoé:
scanf(“stringdecontrole”,&var1,&var2,...);
CIn.ufpe.br
EntradadeDados–scanf–Sintaxe
• Astringdecontroledeveassumirumdosvaloresabaixo:
StringdeControle Significado
%d,%i leituradenúmerosinteiroscomsinal
%u Leituradenúmerosinteirossemsinal
%f leituradenúmerosreais
%c leituradeumcaractere
%s leituradecadeiadecaracteres
Maisem:http://www.cplusplus.com/reference/cstdio/scanf/
CIn.ufpe.br
EntradadeDados–scanf–Sintaxe
• Precisasaberoendereço(&)ondevaiarmazenarovalor(posiçãodememóriaassociadacomavariávelqueestamosutilizando)
• Utiliza-se&antesdasvariáveissimples(nãocomvetores)
Observeoscolchetes[](indicamvetores)
CIn.ufpe.br
EntradadeDados-Exemplos
CIn.ufpe.br
EntradadeDados-CadeiadeCaracteres
• Afunçãoscanfcom%s,emmuitoscasos,nãoéadequadaparalerumacadeiadecaracteres.
• Problema:espaçoembrancoseparandoumapalavradaoutra->desprezaorestantedotextodigitado.• Nãosabequalotamanhomáximoquepodearmazenarna
variávelvetordecaracteres.• Solução:utilizarastringdecontrole:
“%X[^\n]s”– onde‘X’:tamanhodovetordecaracteresmenos1,“[^\n]s”:informaquealeituradecaracteresdeveterminarsomenteaoencontrarumcaracteredefimdelinha‘\n’(enter)
CIn.ufpe.br
EntradadeDados-Exemplos
19=20-1
Permiteaentradadenomescomespaço.Ex.:“Joãodasilva”
CIn.ufpe.br
EntradadeDados-CadeiadeCaracteres
• Outraopção:funçãofgets:fgets(&variavel,maximo,stdin);– Oendereçodavariávelqueiráreceberovalorlido:&variavel– Tamanhomáximoquedeveserlido:maximo– Deonde:stdin-entradapadrão(teclado)
• Outrafunção:funçãofflush– Limpaobufferdeentradadedados(stdin)– Érecomendávelutilizarfflush(stdin)antesdeumcomandodeleiturado
teclado
• Assimcomooscanfeprintf,fgetseofflushtambémestãodefinidosnabiblioteca<stdio.h>
CIn.ufpe.br
EntradadeDados-CadeiadeCaracteres
CIn.ufpe.br
SemCondicional
b ca
x1 x2
Δ=b2–4acx1=(-b+sqrt(Δ))/(2a)x2=(-b-sqrt(Δ))/(2a)
CIn.ufpe.br
ComCondicional
Δ>0
b ca
Δ=b2–4ac
x1 x2
Δ==0 Δ<0
x1=(-b+sqrt(Δ))/(2a)x2=(-b-sqrt(Δ))/(2a)
x1=(-b+sqrt(Δ))/(2a)
x1
“Nãopossuisoluçãoreal”
CIn.ufpe.br
Condicionais
• Comandosquepermitemdecidirseaexecuçãodeumainstruçãodeveounãoserfeita
• Baseadaemexpressõesbooleanas– Resultadodaavaliação:verdadeirooufalso– EmC,NÃOexisteotipodedadobooleano
• Falsoérepresentadocomoointeiro0(zero)• Qualqueroutronúmerodiferentedezeroindicaverdadeiro.
– Consideremosentão:• 1:verdadeiro• 0:falso
– Umaexpressãobooleanaécompostadeoperandosbooleanos(lógicos)eoperadoresrelacionaise/oulógicos
CIn.ufpe.br
Condicionais
• Operadoresrelacionais:
CIn.ufpe.br
Condicionais• Operadoreslógicos:
– Sãousadosparacombinarcomparações– Operamsobrevaloresbooleanos(0ou1)
CIn.ufpe.br
ExpressõesBooleanas• Umatabelaverdaderepresentatodasascombinações
verdadeiro-falsodosoperadoreslógicos:
CIn.ufpe.br
ExpressõesBooleanas• Operadores&&e||sãoditosshort-circuited
– Operandosdadireitasósãoavaliados,senecessário– Existemosoperadoresbitabit&eIquerepresentamoperações
binárias
• Erroscomuns:– Confundir&&com&– Confundir||com|
CIn.ufpe.br
ExpressõesBooleanas
CIn.ufpe.br
ExpressõesBooleanas
Parêntesessãousadosparaevitar
ambiguidades
Qualovalordebaofinaldoprograma?
1-verdadeiro
CIn.ufpe.br
ExpressõesBooleanas
Qualovalordebaofinaldoprograma?
1-verdadeiro
CIn.ufpe.br
ComandosCondicionais• AlinguagemCoferece3tiposdecomandoscondicionais:
– if–else– switch– comandoternário(?:)
CIn.ufpe.br
If-else
• SeaavaliaçãodeexpressaoBooleanaretornarverdadeiro:– comandossãoexecutados
• Casocontrário:– executam-seoutroscomandos
CIn.ufpe.br
If-else• Exemplo:
Obs.:Aindentaçãofacilitaaleituradoprograma
CIn.ufpe.br
Variações:If-else• Omissãodoelsequandonãohácomandosparaoelse:
• Omissãodaschaves,quandoháapenasumcomandonoifounoelse:
CIn.ufpe.br
If-else• Outrosexemplos:
CIn.ufpe.br
If-else• Comandosaninhados:
• Obs.:Oelseésempreassociadoaoifanteriormaispróximo
CIn.ufpe.br
If-else• Outrosexemplosdecomandosifaninhados:
Háalgoerrado?
CIn.ufpe.br
If-else• Outrosexemplosdecomandosifaninhados:
Oelseésempreassociadoaoifanteriormaispróximodentrodomesmobloco{}
CIn.ufpe.br
Ocomandoswitch• Nãoéelegantemuitascondições:if-elseencadeados• Paraestescasosocomandoswitchpodeseramelhoropção
CIn.ufpe.br
OcomandoswitchParaexecutarumswitch:• Avalia-seexpressao;• Executam-seoscomandosdocasecujo
rótuloéigualaovalorresultantedaexpressão;
• Executam-seoscomandosdedefaultcasoovalorresultantenãosejaigualanenhumrótulo;
CIn.ufpe.br
Ocomandoswitch• Expressãosópodeser:intouchar;• Rótulossãoconstantes• Existenomáximoumacláusuladefault(éopcional);• Ostiposdosrótulostêmqueserdomesmotipodeexpressao;• Váriosrótulospodemestarassociadosaomesmocomando• Oscomandosbreaksãoopcionais:
– Semobreakaexecuçãodoscomandosdeumrótulocontinuanoscomandosdopróximo,atéchegaraofinalouaumbreak.
• Noexemploaolado:– casoexpressaosejaavaliadapararotulo1,os
comandos1e2serãoexecutados.– casoexpressaosejaavaliadapararotulo2,
apenasocomando2seráexecutado.
CIn.ufpe.br
Ocomandoternáriodedecisão(?:)• Ocomandoternário(?:)éumaversãodoif-elsecomsintaxe
maiseconômica;• Sintaxe: (condicao?expressao1:expressao2)
• Lê-se:– Casocondicaosejaverdadeira:avalieeretornecomoresultado
expressao1,casocontrário,avalieeretornecomoresultadoexpressao2
CIn.ufpe.br
Ocomandoternáriodedecisão(?)• Osexemplosabaixosãoequivalentes:
CIn.ufpe.br
Atividade01• CompilareDepurarProgramas
– Executeoprogramaabaixopasso-a-passo(depurar)eanoteovalordecadavariávelemcadapontoindicado:
CIn.ufpe.br
Atividade02• Variáveis,EntradaeSaída
– Façaumprogramaque:1. Leiadoisvaloresdotecladoeosarmazenaemduasvariáveis;2. Troqueoconteúdodeumavariávelcomaoutra;3. Imprimaosvalorestrocadosnatela;
CIn.ufpe.br
Atividade03• Variáveis,EntradaeSaída
– Façaumprogramaqueleiadotecladocinconúmeroseimprimanatelaasomadestescinconúmeros.Oprogramasópodeutilizar2(duas)variáveis.
CIn.ufpe.br
Atividade04• Constantes,Variáveis,EntradaeSaída
– Façaumprogramaqueleiadotecladooraiodeumacircunferênciaeimprimaseudiâmetro,seuperímetroesuaárea.
– Obs.:Declareaconstanteπ
CIn.ufpe.br
Atividade05
• Variáveis,EntradaeSaída,Condicionais– Façaumprogramaque:
1. Soliciteaousuáriodigitartrêsnúmerosreais;2. Lerostrêsnúmerosdigitadosdoteclado;3. Imprimanatelaqualomaiornúmerodigitado.
– Trêsmaneirasdeimplementaresteprograma:• http://www.programiz.com/c-programming/examples/largest-number-three
46
CIn.ufpe.br
Atividade06• Variáveis,EntradaeSaída,Condicionais
– Façaumprogramaqueleiaastrêsnotasdeumaluno(entre0e10),calculeamédiaeimprimaoseuconceitofinal,deacordocomaregraabaixo:
• Notamaiorouiguala9:ConceitoA;• Notamenorque9emaioriguala7:Conceito:B;• Notamenorque7emaioriguala5:ConceitoC;• Notamenorque5emaioriguala3:ConceitoD;• Notamenorque3:ConceitoF;
CIn.ufpe.br
Atividade07• Condicionaiseexpressõesbooleanas:
– Imagineumaavóquesóvaiaprovaronamorodeseuneto(a),seopretendenteestivercommaisde25emenosde40anos,forrico(rendaanualacimadeR$75.000,00)etiverboaaparência(notaacimade7emumaescalade0a10).
– Façaumprogramaparadescobrirseumpretendenteestáaptoounão.Ex.:
Informeasuaidade:39Digiteoseurendimentoanual:49000Comoatrativoévocê,emumaescala0-10?7.5Vocêestáautorizadoanamorar:falso
CIn.ufpe.br
Atividade08• Desafio:
– Façaumprogramaquerecebecomoentradaosaláriobrutodeumtrabalhadoresuadedução,ecalculeoimpostoderenda(IRPF)devido,deacordocomatabelaabaixo.
• Obs.:Ocálculodoimpostoincidesobreosaláriomenosasdeduções;• Deveseraplicadoapenasapartedovalorqueestiverdentrodecadafaixa;• Comparecomosimuladordareceitafederal:
http://www.receita.fazenda.gov.br/aplicacoes/atrjo/simulador/simulador.asp?tipoSimulador=M
Basedecálculo(R$) Alíquota%
Até1.787,77 isento
De1.787,78até2.679,29 7,5%
De2.679,30até3.572,43 15,0%
De3.572,44até4.463,81 22,5%
Acimade4.463,81 27,5%
• Ex:– Salário10.000,00deduções:2.000,00– Basedecalculo:8.000,00– (2.679,29-1.787,77)*7,5%=66,86– (3.572,43-2.679,29)*15%=133,97– (4.463,81-3.572,43)*22,5%=200,56– (8.000,00-4.463,81)*27,5%=972,45– Impostototal:1.373,84
CIn.ufpe.br
Atividade09
50
CIn.ufpe.br
Atividade10
51
CIn.ufpe.br
Atividade10
52
top related