Beruflich Dokumente
Kultur Dokumente
AlgoritmoseProgramao2semestre2011
Professora:SilvanaDinizNOTASDEAULA
UNIDADEI
IntroduoaosAlgoritmos1
Definiodealgoritmos:
Dadoumproblema,umalgoritmoaespecificaodeumasequnciadeaescujaexecuo
resultanaresoluodoproblema.
Mododepreparo(algoritmo)daPicanhadesol
1Numatigelacoloque1kgdesalgrosso,1peadepicanhacortadaaomeionosentidodocomprimentoecubra
commais1kgdesalgrosso.Deixedescansandopor24horasemlocalarejado.
2Depoisde24horas,retireoexcessodesalgrossoemergulheapicanhaem2litrosdeleite.Deixerepousarpor
mais24horasparadessalgar.
3Passadoesteperodo,retireapicanhadoleiteesequeabemcomumpapeltoalha.Corteapicanhaemfatiase
numachapacommanteigadegarrafa,grelheosrapidamenteOUcoloqueasfatiasdepicanhanumaassadeirauntada
easseemfornopraquecidoa180Cpor35minutos.
4 Sirva com vinagrete de feijo verde, ou pur de banana da terra, ou farofa, ou mandioca cozida ou chips de
mandioca.
Fonte:http://receitas.maisvoce.globo.com/Receitas/Carnes/0,,REC25021777023+PICANHA+DE+SOL,00.html
Outrosexemplosdealgoritmosnanossavidacotidianapodemsercitados:
algoritmodecomotomarummedicamento;
algoritmodecomoirdeumpontoaoutronumacidade;
algoritmodecomomontarumabicicleta.
AlgoritmoseLgica:
Exemplo:
Umsenhorestnumadasmargensdeumriocomtrscargas:umaraposa,umgaloeumsacode
milho.Eledeveatravessaroriocomsuastrscargasedispedeumbarcoquecomportaapenas
ele prprio e uma de suas cargas de cada vez. Especifique uma sequncia de viagens tal que o
problemasejasolucionado.
Material baseado no contedo desenvolvido pelo professor Marco Aurlio Guimares Moreira
1
FaculdadePitgorasEngenhariaEltrica/Automao
AlgoritmoseProgramao2semestre2011
Professora:SilvanaDinizNOTASDEAULA
A tabela a seguir mostra uma possvel seqncia de operaes cuja execuo resulta na soluo
para o problema. Observe que, dependendo da ordem das operaes, o galo pode ficar sozinho
comaraposaouomilhopodeficarsozinhocomogalo.Issoimplicariaperdadeumadascargas,o
quevaicontraosrequisitosdasoluo.
Cargasdoladoesquerdo
Operao
Cargasdoladodireitodepois
depoisdaoperao
daoperao
galo,raposa,milho,senhor
Incio
raposa,milho
Atravessecomogalo
galo,senhor
raposa,milho,senhor
Voltesozinho
Galo
Milho
Atravessecomaraposa
Raposa,galo,senhor
galo,milho,senhor
Voltecomogalo
Raposa
Galo
Atravessecomomilho
Milho,raposa,senhor
Galo,senhor
Voltesozinho
Milho,raposa
Atravessecomogalo
Galo,raposa,milho,senhor
Algoritmodecomoconstruirumalgoritmo:
Podemosdefiniralgunspassosbsicosparaaconstruodeumalgoritmo:
Passo 1) Dado um problema, faa uma anlise preliminar e entenda o problema com a maior
precisopossvel;
Passo2)Desenvolvaumalgoritmopararesolveroproblema;
Passo3)Executeoalgoritmoparavriostestescujosresultadossejamconhecidos,ouseja,faaum
TestedeQualidade;
Passo4)Casooresultadosejasatisfatrio,oalgoritmoestprontoparaserimplementado;
Passo5)Casocontrrio,volteaopasso2.
Algoritmoseprogramas:
FaculdadePitgorasEngenhariaEltrica/Automao
AlgoritmoseProgramao2semestre2011
Professora:SilvanaDinizNOTASDEAULA
AplicaesdealgoritmosemEngenharia:
Exemplos:
algoritmoparaclculodascorrentesnumcircuito;
algoritmoparaoprocessodemisturadeduassubstncias;
algoritmo para determinar uma seqncia de movimentos de um manipulador robtico
numprocessodesolda.
Nveldeabstrao:
Abstraoserefereomissodedetalhes.Umalgoritmopodeserescritocomdiferentes
nveisdeabstrao.Considere,porexemplo,oalgoritmoparairdeumpontoaoutronumacidade.
Podemos especificar apenas os principais pontos de passagem (algoritmo em alto nvel de
abstrao). Por outro lado, podese tambm especificar cada rua do caminho, cada mudana de
faixaqueomotoristadeveefetuar.
Os nveis de abstrao esto tambm ligados com a linguagem de programao adotada.
Dependendo da linguagem, um procedimento conceitualmente simples pode se transformar em
dezenas de linhas de cdigo. Linguagens de mais alto nvel so mais prximas da linguagem
humana(Portugus,Inglsetc.).Poroutrolado,linguagensdemaisbaixonvelsomaisprximas
aoqueocomputadorconsegueprocessar(0se1s).
DescriodeAlgoritmos:
Ummesmoproblemapodeserresolvidopordiferentesalgoritmos.Porexemplo,parairde
umpontoaoutro,podeseadotardiferentescaminhosouaindadiferentesmeiosdetransporte.
Cadaalgoritmo,porsuavez,podeserdescritodediferentesmaneiras.
Considere,comoexemplo,oproblemadeconstruirumalgoritmoparacalcularacorrente
nocircuitoabaixo:
FaculdadePitgorasEngenhariaEltrica/Automao
AlgoritmoseProgramao2semestre2011
Professora:SilvanaDinizNOTASDEAULA
Aresoluodoproblema(especificaodeumconjuntodeaesquedefinemoalgoritmo)
pode,porexemplo,serdescritadeformanarrativa.
DescrioNarrativa:
ObtenhadousurioovalordeV
ObtenhadousurioovalordeR
CalculeIporI=V/R
InformeaousurioovalordeI
Descrioporfluxograma:
Omesmoalgoritmopodeserdescritonaformadeumfluxograma:
Descrioporpseudocdigos:
O pseudocdigo a escrita, por meio de regra predefinida, dos passos a serem seguidos
paraaresoluodeumproblemaexpostoemumenunciado.
Aconversodeumalgoritmodepseudocdigoparaumalinguagemdeprogramaoum
passo fcil. Basta, para isso, o conhecimento do vocabulrio e regras sintticas da
linguagem/idiomadesejado.
Exemplo:
Resoluodoproblemadoclculodacorrente.
FaculdadePitgorasEngenhariaEltrica/Automao
AlgoritmoseProgramao2semestre2011
Professora:SilvanaDinizNOTASDEAULA
AlgoritmoCalculaCorrente
Variveis
R:Real
V:Real
I:Real
Incio
EscrevaInformeatenso:
LeiaV
EscrevaInformaaresistncia:
LeiaR
IV/R
EscrevaAcorrentede:,I
Fim
ExercciosparapraticarEMAULA:
Exerccio1:
Com base no exemplo do algoritmo CalculaCorrente, faa um algoritmo em pseudocdigo para
calcularotempogastoporumveculonumtrajeto,dadosavelocidade(constante)eadistncia
percorrida.
ExercciosparapraticarEMCASA:
Exerccio2:
Dadasasmedidasdeumasalaemmetros(comprimentoelargura),informeasuareaemmetros
quadrados.
FaculdadePitgorasEngenhariaEltrica/Automao
AlgoritmoseProgramao2semestre2011
Professora:SilvanaDinizNOTASDEAULA
UNIDADEII
Tiposdedados,variveiseconstantes
Varivel:
Umavarivelumlocal(umendereo)namemriaprincipalquearmazenaumcontedo.
Parafacilitaraprogramao,nospermitidodarnomeaesseendereo.Noexemplodoalgoritmo
de clculo de corrente, V, R e I podem ser classificados como variveis. Um dado classificado
comovarivelquandoexisteapossibilidadedequesejaalteradoemalguminstantenodecorrer
dotempo,ouseja,duranteaexecuodoalgoritmo/programa.
EmC++todasasvariveisdevemserdeclaradasantesdeseremusadas.Umadeclarao
especificaumtipo,eseguidaporumalistadeumaoumaisvariveisdaqueletipo.Adeclarao
deumavariveltemaseguinteformageral:
<tipo><nome>=<valor>;
Exemplos:
intinicio,fim,numero;
floatvalor;
shortintcodigo;
charc,linha[100];
floatmedia=0;
Ostiposdedados(int,float,short,char,etc.)seroexplicadosmaisafrente.O<valor>
facultativo, ou seja, no obrigatrio em toda a declarao. O <valor> ser muito til na
inicializaodevariveis,assuntoqueserabordado,maistarde,quandoiniciarmosaunidadede
EstruturasdeRepetio.
Constante:
Emoposiosvariveis,umaconstanteumvalorquenovariaaolongodaexecuode
um algoritmo/programa. Por exemplo, um programa para calcular a rea de um crculo, a rea
seriadadapor:
A=PI*R*R
R
varivel(umvalorquedependedoraiodocrculoqueousurioinforma)
PI
constante(valesempre3,14159265...)
A
varivel(representaareaedependedoraioqueousurioinforma)
EmC++,utilizamosoprefixoconstassociadoaumtipo,umnomeeumvalorparadefinir
umaconstante.Adeclaraodeumaconstantetemaseguinteformageral:
const<tipo><nome>=<valor>;
6
FaculdadePitgorasEngenhariaEltrica/Automao
AlgoritmoseProgramao2semestre2011
Professora:SilvanaDinizNOTASDEAULA
Exemplos:
constinteterna=256;
constfloatPI=3.14159265;
Nomenclaturadevariveis:
Toda varivel deve ser declarada antes de ser utilizada (em pseudocdigo ou em C).
Declarar uma varivel significa reservar um espao na memria no computador utilizando uma
nomenclatura apropriada, para que os dados (lidos do teclado ou calculados por expresses)
possamserguardadoseacessadossemprequenecessrio.
Onomedadosvariveisdeveobedecersseguintesregras:
devecomearcomumaletraousublinhado_;
todoonomespodeconterletras,nmerosousublinhado;
Letrasmaisculaseminsculassoconsideradasdiferentes(Somadiferentedesoma);
Palavras reservadas no podem ser usadas como nomes de variveis (veja as palavras
reservadasnoANEXOI);
Variveispodemterotamanhodeat32caracteres.
Exemplo:
Variveiscomnomesvlidos:
Soma,
_acumulador
j1,R,V,I,hg123,HG123,INPS,IR.
Exemplo:
Variveiscomnomesinvlidos:
1soma
e(2,j%,
aq*,joao&Maria,Joo
boa prtica (mas no regra) escolher nomes que indiquem a funo da varivel. Para
umavarivelquerepresentavelocidade,poderiaserdadoonomep.Noentanto,issodificultaria
aleituradocdigo.Nomesmaisindicadosseriamv,vel,oumesmovelocidade.
Outropontodesumaimportncia:C"casesensitive",ouseja,maisculaseminsculas
fazem diferena. Se declararmos uma varivel com o nome soma ela ser diferente de Soma,
SOMA, SoMa ou sOmA. Da mesma maneira, os comandos (todas as palavras reservadas) da
linguagemCifefor,porexemplo,spodemserescritosemminsculas,poissenoocompilador
noirinterpretloscomosendocomandos,massimcomovariveis.Porexemplo,seescreveIf
ou invs if, o compilador ir acusar um erro de varivel no declarada e, consequentemente,
no ir executar o algoritmo at que o erro seja corrigido, e o programa seja compilado
novamente.
FaculdadePitgorasEngenhariaEltrica/Automao
AlgoritmoseProgramao2semestre2011
Professora:SilvanaDinizNOTASDEAULA
Tiposdedados:
OsdadosmanipuladosporvariveisemumprogramaemCpodemserdotiponumrico,
literalouliteral.
Dadosnumricosinteiros:
So aqueles que no possuem componentes decimais ou fracionrios, podendo ser
positivosounegativos.TentamrepresentaroconjuntodosnmerosinteirosdaMatemtica.
Exemplo:
Variveisqueseriamdeclaradascomodotipointeiro:
Oquerepresenta
Umpossvelnome
Umpossvelvalor
Nmerodefilhosnaescola
n_filhos
2
Nmerodecarrosdeumaempresa n_carros
50
Nmerodepeasvendidas
Pecas
0
Pontosporinfraodetrnsito
ptos_infracao
3
Dadosnumricosreais:
Soaquelesquepodempossuircomponentesdecimaisoufracionrios,epodemtambm
serpositivosounegativos.AproximamoconjuntodosnmerosreaisdaMatemtica.
Exemplo:
Variveisqueseriamdeclaradascomodotiporeal:
Oquerepresenta
Umpossvelnome
Umpossvelvalor
Correnteemumcircuito
I
2.03
Foraaplicada
F
50.0
Altitude
altitude
1010.1
Dadosliterais:
Constitudos por uma sequncia de caracteres contendo letras, dgitos e/ou smbolos
especiais.Estetipodedadostambmmuitasvezeschamadodecadeiadecaracteresoustring.
comum,emalgumaslinguagens,adiferenciaoentrearepresentaodeumnicodadoliteral,
que chamado de caractere (por exemplo, a) e um conjunto de caracteres (por exemplo,
abacate. Para um nico caractere, utilizamse aspas simples; para uma cadeia de caracteres,
aspasduplas.
Exemplo:
Variveisqueseriamdeclaradascomodotipoliteral
Oquerepresenta
Umpossvelnome
Umpossvelvalor
Primeiraletradonome
primeira_letra
A
Nome
nome
Astrogildo
Mensagemdeerro
mensagem_erro
operaoinvlida
Dadoslgicos:
SocaracterizadoscomotiposlgicososdadoscomvaloresVerdadeiro(1)ouFalso
(0),sendoqueestetipodedadopodeapresentarapenasumdosdoisvalores.AlinguagemCno
apresentaumtipodedadosespecialparaarmazenarvariveisdotipolgico.Normalmente,esse
8
FaculdadePitgorasEngenhariaEltrica/Automao
AlgoritmoseProgramao2semestre2011
Professora:SilvanaDinizNOTASDEAULA
tipo de informao armazenada em variveis do tipo inteiro (int). Valores diferentes de zero
representamVerdadeiro;Falsorepresentadopelovalor0(zero).
Exemplo:
Variveisqueseriamdeclaradascomodotipolgico
Oquerepresenta
Umpossvelnome
Umpossvelvalor
Portaestaberta
porta_aberta
Verdadeiro
Nvelacimade10metros
nivel10
Falso
Sistemaligado
ligado
Falso
DeclaraodosvriostiposdevariveisempseudocdigoeemC:
Declaraoempseudocdigo
DeclaraocorrespondenteemC
Variveis:
a:Inteiro
inta;
b:Real
floatb;
c:Caractere
charc;
d:Literal
chard[20];
e:Lgico
inte;
Obs.: Uma varivel real pode ser declarada em C como do tipo float ou como do tipo
double.Dessaforma,adeclaraofloatb;poderiasersubstitudapordoubleb;.Adiferena
queotipofloatocupametadedoespaoemmemriadotipodouble.Poroutrolado,variveisdo
tipo double so representadas com maior preciso. A utilizao do tipo double recomendada
apenas em casos especficos, como anlise numricas muito complexas so necessrias para
garantirpreciso.
Operadores:
So elementos funcionais que atuam sobre operandos e produzem um resultado. Como
exemplo,naexpresso20+30,osnmeros20e30sooperandosrelacionadospelooperadorde
adio(+).
Osoperadoressoclassificadosquantoadoiscritriosprincipais:
nmerodeoperandossobreosquaisatuam:unrios,binrioseternrios.
tiposdeoperandossobreosquaisatuam:aritmticos,lgicos,relacionaiseliterais.
Expresses:
Expressesaritmticas:
Soaquelascujoresultadodotiponumrico,sejaeleinteirooureal.Somenteousode
operadoresaritmticosevariveisnumricaspermitidoemexpressesdessetipo.
Operao
Operadorem Operador
Tipo
Prioridade Exemplo
pseudocdigo emC
Inversodesinal
Unrio 1
(1)=1
Manutenodesinal
+
+
Unrio 1
+1=1
9
FaculdadePitgorasEngenhariaEltrica/Automao
AlgoritmoseProgramao2semestre2011
Professora:SilvanaDinizNOTASDEAULA
Multiplicao
Diviso
Adio
Subtrao
*
/
+
*
/
+
Binrio
Binrio
Binrio
Binrio
3
3
4
4
6*7=42
8/2=4
1+2=3
45=1
Atabeladeoperadoresaritmticosvlidatantonaconvenodepseudocdigoquanto
em linguagem C. O valor na coluna de Prioridade define a ordem com que os operadores so
aplicados.Emexpressescomoperadoresdemesmaprioridade,soexecutadososoperadoresda
esquerdaprimeiro.Exemplos:
1+2*3=1+(2*3)=7
1+23*20/5=(1+2)((3*20)/5)
Notequeamultiplicaonormalmenterepresentadapelosmbolo*aoinvsdosmbolo
x, que mais comum em expresses aritmticas no contexto da Matemtica. Em algumas
linguagensdeprogramao,aexponenciaoporvezesrepresentadapelosmbolo^oucomo
usodefuno.Exemplos:
EmMatlab:3^2
EmJava:Math.pow(3,2);
EmC:pow(3,2);
Expresseslgicas:
Soaquelascujaavaliaoresultaemumvalorlgico(verdadeirooufalso).
TabelaVerdadedoOperadorNO(NOT)
Primeiracondio
Resultado
Verdadeira
Falso
Falsa
Verdadeiro
TabelaVerdadedoOperadorE(AND)
PrimeiraCondio
SegundaCondio
Resultado
Falsa
Falsa
Falso
Verdadeira
Falsa
Falso
Falsa
Verdadeira
Falso
Verdadeira
Verdadeira
Verdadeiro
TabelaVerdadedoOperadorOU(OR)
PrimeiraCondio
SegundaCondio
Resultado
Falsa
Falsa
Falso
10
FaculdadePitgorasEngenhariaEltrica/Automao
AlgoritmoseProgramao2semestre2011
Professora:SilvanaDinizNOTASDEAULA
Verdadeira
Falsa
Verdadeiro
Falsa
Verdadeira
Verdadeiro
Verdadeira
Verdadeira
Verdadeiro
ExpressesRelacionais:
Realizamumacomparaoentreduasvariveisdemesmotipoeretornamumvalordotipo
lgico.
Comparao
Operadorem Operador Tipo
Exemplo
Exemploem
pseudocdigo emC
emC
pseudocdigo
Igual
=
==
Binrio
(a==b)
(a=b)
Diferente
<>
!=
Binrio
(a!=b)
(a<>b)
Menor
<
<
Binrio
(a<b)
(a<b)
Menorouigual <=
<=
Binrio
(a<=3)
(a<=3)
Maior
>
>
Binrio
(b>20)
(b>20)
Maiorouigual >=
>=
Binrio
(c>=b)
(c>=b)
EstruturaBsicadeumProgramaemC++(ProgramandocomDevC++):
TemosabaixoaestruturabsicadeumprogramaescritonalinguagemC++
#include<stdio.h>
#include<iostream>
/*UmPrimeiroPrograma*/
main()
{
printf("OLA!EUESTOUVIVO!\n");//Escrevenatelaafraseentreaspas
system("PAUSE");
return0;
}
Explicandocadaparte
#include<stdio.h>
#include<iostream>
O cabealho #include<> serve para indicar ao compilador todas as bibliotecas que este
programa utilizar. Na maioria dos programas que escreveremos durante esta apostila,
utilizaremoso#include<stdio.h>eo#include<iostream>.Astdio.hcontmasprincipaisfunes,
comandos e classes de entrada e sada de C++, necessrias para realizar programas que, por
exemplo, recebam dados via teclado e enviem dados via monitor. A iostream contm outras
funes importantes como a de pausar o sistema para que possamos ver os resultados no
monitor.LeiamaisnoANEXOII,sobreasbibliotecasdalinguagemC.
/*UmPrimeiroPrograma*/
11
FaculdadePitgorasEngenhariaEltrica/Automao
AlgoritmoseProgramao2semestre2011
Professora:SilvanaDinizNOTASDEAULA
Quandofazemosumprograma,umaboaidiausarcomentriosqueajudemaelucidaro
funcionamento do mesmo. No exemplo apresentado temos um comentrio: /*Um Primeiro
Programa*/. O compilador desconsidera qualquer coisa que esteja comeando com /* e
terminandocom*/.Umcomentriopode,inclusive,termaisdeumalinha.Alis,seocomentrio
fordeapenasumalinha,podeseusar//.
intmain()
{
.....
}
main()indicaqueestamosdefinindoumafunodenomemain.TodososprogramasemC
tm que ter uma funo main, pois esta funo que ser chamada quando o programa for
executado.Noexemplo,afunomainnorecebeargumentos(osparntesesestovazios).Aps
o main () iniciase um {. Esta chave ir delimitar que o corpo (contedo) da funo main e os
comandospertencentesamesma.Nofinaldetodososcomandosum}deverseradicionadopara
finalizar a funo main. Sendo assim, o O cdigo que estiver dentro das chaves ser executado
seqencialmentequandoafunoforchamada.
printf("OLA!EUESTOUVIVO!\n");//Escrevenatelaafraseentreaspas
Estaalinhadecomandodocdigoquechamaafunoprintf(),passandoastring(uma
string uma seqncia de caracteres, como veremos a seguir) "Ola! Eu estou vivo!\n" como
argumento. por causa do uso da funo printf() pelo programa que devemos incluir o arquivo
cabealhostdio.h.Afunoprintf()nestecasoirapenascolocarastringnateladocomputador.
O \n uma constante chamada de constante barra invertida. No caso, o \n a constante barra
invertidade"newline"eeleinterpretadocomoumcomandodemudanadelinha,isto,aps
imprimir Ola! Eu estou vivo! o cursor passar para a prxima linha. importante observar
tambmqueoscomandosdoCterminamcom;equestringssodelimitadasporaspasduplas.
Notetambmqueapsafunoprintfhumalinhadecomentrioiniciadapor//paraindicarum
comentriosobrealinhadecomando.
system("PAUSE");
Alinhasystem(PAUSE)umachamadadefunoprpriadeC++.Afunosystem()
recebe argumentos como o PAUSE que na verdade so comandos para o sistema operacional.
Neste caso, ela recebe o comando PAUSE para pausar a execuo do programa at que o
usurioaperteumateclaqualquer.Utilizamosesterecursoparaqueateladoprogramanoseja
terminada automaticamente pelo sistema, impedindo que vejamos os resultados do programa.
Nota: por causa do uso da funo system() pelo programa que devemos incluir o arquivo
cabealhoiostream.h.
Obs.: Quando estiver digitando seu cdigo adicione aps PAUSE (dentro das aspas) o
comando>nullevejaoacontece.
return0;
12
FaculdadePitgorasEngenhariaEltrica/Automao
AlgoritmoseProgramao2semestre2011
Professora:SilvanaDinizNOTASDEAULA
Altimalinhadoprograma,return(0);,indicaonmerointeiroqueestsendoretornado
pela funo, no caso o nmero 0. O comando return 0 a resposta da funo main para o
sistema. Quase toda funo retorna um valor para o sistema ou programa que a chamou, por
exemplo,umafunopoderetornaroresultadodeumaoperaomatemticaexecutadaporela.
No caso da funo main, ela retorna um valor para o sistema operacional que executou o
programa.Essevalorinterpretadopelosistemacomoumamensagemindicandoseoprograma
foiexecutadocorretamenteouno.Umvalorderetorno0indicaqueoprogramafoiexecutado
sem problemas; qualquer outro valor de retorno indica problemas. Quando o programa
executado at o fim, ele retorna 0 ao sistema operacional, indicando que ele foi executado e
terminadocorretamente.Quandooprogramaencontraalgumerroouterminadoantesdahora,
eleretornaumvalorqualqueraosistema,indicandoerroduranteaexecuo.
SadadedadosemLinguagemC:
EscrevaOvalordacorrentede,I
EscrevaOprogramaexecutouumaoperaoinvlidaeserfinalizado
EmlinguagemC,asadadedados,equivalenteaescrevafeitapelafunoprintf().
Exemplos:
printf(Ovalordacorrentede%f,I);
//varivelreal
printf(Mariatem%dfilhos,n_filhos);
//varivelinteira
printf(Aprimeiraletradonome%c,letra);
//varivelcaractere
printf(%s,nome);
//varivelstring(cadeiadecaracteres)
Afunoprintf()temaseguinteformageral:
printf(string_de_controle,lista_de_argumentos);
Teremos,nastringdecontrole,umadescriodetudoqueafunovaicolocarnatela.A
stringdecontrolemostranoapenasoscaracteresquedevemsercolocadosnatela,mastambm
quais os tipos de variveis sero exibidas e suas respectivas posies. Isto feito usandose os
cdigosdecontrole,queusamanotao%.Nastringdecontroleindicamosquais,dequaltipoe
em que posies esto as variveis a serem apresentadas. muito importante que, para cada
cdigodecontrole,tenhamosumargumentonalistadeargumentos.Resumindo,afunoprintf()
converte, formata e imprime seus argumentos na sada padro (normalmente a tela) sob o
controledastring_de_controle.
Exemplosdeprintf()eoqueelesexibem:
printf("Teste%%%%")
Teste%%
printf("%f",40.345)
40.345
13
FaculdadePitgorasEngenhariaEltrica/Automao
AlgoritmoseProgramao2semestre2011
Professora:SilvanaDinizNOTASDEAULA
printf("%.2f",52.4578)
52.46
printf("Umcaractere%ceuminteiro%d",'D',120)
UmcaractereDeuminteiro120
printf("%sehumexemplo","Este")
Esteehumexemplo
printf("%s%d%%","Jurosde",10)
Jurosde10%
Notequenosexemplosacima,osvaloresasseremexibidossodiretamentecaracteresou
nmeros. Porm voc poderia exibir os valores de uma varivel que acabou de armazenar o
resultadodeumclculo.Porexemplo:
printf("Mediadastemperaturalidas:%f",media)
Nestecaso,assumimos,porexemploqueovalordamediacalculdadofoi78,45.Assim,o
printfacimairexibir:
Mediadastemperaturaslidas:78.45
Entradadedados:
Uma operao de entrada de dados referese a qualquer valor que seja informado
(digitado)pelousurio,ouseja,fornecidoatravsdadigitaopeloteclado.Estevalorpodeserum
numricoouliteraleserarmazenado,obrigatoriamente,emumavariveldeseurespectivotipo.
Conforme visto no algoritmo CalculaCorrente, em pseudocdigo, a entrada de dados ser
representadapelocomandoLeia.Porexemplo:
LeiaV;
LeiaR;
EmC,aoperaodeentradadedadosrealizadapelafunoscanf().
Exemplos:
scanf(%f,&I);
//guardavalordigitadodotecladonavarivelrealI
scanf(%d,&n_filhos);
//guardavalordigitadodotecladonavarivelinteiran_filhos
scanf(%c,&letra);
//guardavalordigitadodotecladonavarivelcaracterletra
scanf(%s,&nome);
//guardavalordigitadodotecladonavarivelstringnome
Afunoscanf()temaseguinteformageral:
scanf(string_de_controle,lista_de_argumentos);
Afunoscanf()lcaracteresdaentradapadro(normalmenteoteclado),interpretando
os de acordo com o formato especificado na string_de_controle, e armazena os resultados nos
argumentos descritos de acordo com % descrito. Abaixo uma descrio dos principais tipos %
(f,c,f,s)chamadosdemscaras.
TiposdeMscaras:
14
FaculdadePitgorasEngenhariaEltrica/Automao
AlgoritmoseProgramao2semestre2011
Professora:SilvanaDinizNOTASDEAULA
Observe que tanto a funo printf() como a funo scanf() exige uma mscara diferente (%f,
%d,%c,s)paracadatipodedado(int,float,charoucadeiadecaracteres).Natabelaaseguir
soapresentadosalgunsdoscdigos%:
CdigosdeBarraInvertida:
Alm dos cdigos de controle, existem tambm os cdigos especiais, tais como o '\n' que
executam tarefas especiais. Os cdigos de barra invertida so descritos na string de controle e
servem para efeitos de apresentao/formatao de texto/dados na tela do computador. Na
tabelaabaixoestolistadosessescdigosespeciais:
ExemplosparapraticarEMAULA:
15
FaculdadePitgorasEngenhariaEltrica/Automao
AlgoritmoseProgramao2semestre2011
Professora:SilvanaDinizNOTASDEAULA
Exerccio1
VamostransformaroalgoritmodeCorrenteEltricaemcdigodeC++:
Empseudocdigo
CdigoemC++
AlgoritmoCalculaCorrente
//Programaparaclculodacorrentedeum
Variveis
circuitoeltricoV=RI
R:Real
V:Real
#include<stdio.h>
I:Real
#include<iostream>
Incio
EscrevaInformeatenso:
floatV;
LeiaV
floatR;
EscrevaInformaaresistncia: floatI;
LeiaR
IV/R
intmain()
EscrevaAcorrentede:,I
{
Fim
printf("\nInformeatensao:");
scanf("%f",&V);
printf("\nInformearesistencia:");
scanf("%f",&R);
I=V/R;
printf("\nOvalordacorrenteehde:%f\n",I);
system("PAUSE");
return0;
}
1. Nalinhaprintf("\nOvalordacorrenteehde:%f\n",I);troqueo%fpor%.2f
Expliqueoquemudou.
2. Retireos\ndaslinhascomafunoprintf();
Expliqueoquemudou.
3. Nalinhasystem("PAUSE");acrescente>nullapsoPAUSE(aindadentrodasaspas).
Expliqueoquemudou.
4. Enxugueseucdigodeclarandotodasasvariveisemumaslinha:floatV,R,I;
Exerccio2
Agora,juntocomumcolega,tenteimplementaremocdigoC++opseudocdigodoexerccioda
aula anterior para calcular o tempo gasto por um veculo num trajeto, dados a velocidade
(constante)eadistnciapercorrida.
FaculdadePitgorasEngenhariaEltrica/Automao
AlgoritmoseProgramao2semestre2011
Professora:SilvanaDinizNOTASDEAULA
distancia_percorridada,etc.
Exerccio3:
Faaagoraumprogramaparacalcularareadeumcrculo(A=*r2),onde:
A=reaasercalculada
=constante(3.141592653)
r=raiodacircunfernciaaserfornecidopelousurio
Obs:Utilizeorecursodedeclaraodaconstanteconformevistonesteaula.
ExemplosparapraticarEMCASA:
Em casa, altere os cdigos dos programas desenvolvidos no exemplo acima, de forma que eles
fiquemmaisclarosparaosprogramadoreseparaosusuriosdoprograma.Exemplos:
Utilize linhas de comentrios para explicar o que determinada linha de comando est
executando,casoestasejadeextremaimportnciaparaoprograma.Ex.://Nestalinha,acorrente
docircuitoestsendocalculada....
Informe ao usurio (quando estiver usando a funo printf()) sobre o que se trata o
programa.Ex.:Esteprogramafoifeitaparacalcular....
Informeaousurioasunidadesdosvaloresqueelesdevemfornecer.Exemplo:Entrecom
adistnciapercorridaemKm.
Informeaousurioaunidadedovalorcalculado.Exemplo:Otempogastopeloveculono
trajetofoide......horas(segundos,minutos).
Sequiserincrementeaindamaiscominformandoaousurio:Otempogastopeloveculo
notrajetode.....Kmaumavelocidademdiade.....Km/hfoide......horas.
Noseesqueadecontrolaronmerodecasasdecimaisparaqueovalormostradofique
muitogrande.
17
FaculdadePitgorasEngenhariaEltrica/Automao
AlgoritmoseProgramao2semestre2011
Professora:SilvanaDinizNOTASDEAULA
UNIDADEIII
EstruturasdeDeciso
EstruturaCondicionalSimples:
Asestruturasdedecisopermitemqueofluxodeexecuodasinstruessigadiferentes
caminhos dependendo do resultado da avaliao de uma expresso lgica (reveja o que uma
expresso lgica na unidade anterior). A estrutura condicional simples aquela que determina
uma condio para que um grupo de instrues possa ser executado. Se essa condio no for
atendida,ofluxodeexecuodeslocadoparaainstruoseguinteaofimdoblocodecondio.
Empseudocdigo(algoritmo),aformageraldeumaestruturacondicionalsimples:
Se(Condio)ento
{instruesaseremexecutadascasoacondiosejaverdadeira}
FimSe
Exemplo:
Vejamosumalgoritmoabaixoqueinformenatelaumavisodealarmedetemperatura.
AlgoritmoAlarmeDeTemperatura1
Variveis
Temperatura:Real
Incio
EscrevaInformeatemperatura:
LeiaTemperatura
Se(Temperatura>120)ento
EscrevaAteno:temperaturaacimadomximopermitido
EscrevaVerifiqueoestadodavlvuladearfrio
FimSe
Fim
No algoritmo acima, se a temperatura informada pelo usurio for maior do que 120, o
programa imprime na tela mensagens de alerta. Caso a condio (Temperatura > 120) no seja
satisfeita,oprogramanofaznada.
EmC,aestruturacondicionalsimplestemaseguinteforma:
if(condio)
Instruo1aserexecutadacasoacondiosejaverdadeira
Instruo2aserexecutadacasoacondiosejaverdadeira
....
Instruonaserexecutadacasoacondiosejaverdadeira
}
18
FaculdadePitgorasEngenhariaEltrica/Automao
AlgoritmoseProgramao2semestre2011
Professora:SilvanaDinizNOTASDEAULA
Aschavesdelimitamoincioefimdoblocodeinstruesaserexecutado.Casooblocode
instrues seja composto por apenas uma instruo no obrigatrio o uso das chaves (mas
recomendaseregularemtodasassituaes).
OalgoritmoAlarmeDeTemperatura1teriaaseguinteformaemcdigoC
#include<stdio.h>
#include<iostream>
floattemperatura;
intmain()
{
printf(Informeatemperatura:);
scanf(%f,&temperatura);
if(temperatura>120)
printf(Ateno:temperaturaacimadomximopermitido);
printf(Verifiqueoestadodavlvuladearfrio);
}
system(PAUSE);
return0;
}
EstruturaCondicionalComposta:
Aestruturacondicionalcompostaempseudocdigotemaforma:
Se(Condio)ento
{instruesaseremexecutadascasoacondiosejaverdadeira}
Seno
{instruesaseremexecutadascasoacondiosejafalsa}
FimSe
Exemplo:
Vamosvercomoficariaoalgoritmotemperatura,casoqueiramosadicionaroutrainstruo(aviso
natela)paraocasodacondionoseratendida(falsa).
AlgoritmoAlarmeDeTemperatura2
Variveis
Temperatura:Real
19
FaculdadePitgorasEngenhariaEltrica/Automao
AlgoritmoseProgramao2semestre2011
Professora:SilvanaDinizNOTASDEAULA
Incio
EscrevaInformeatemperatura:
LeiaTemperatura
Se(Temperatura>120)ento
EscrevaAteno:temperaturaacimadomximopermitido
EscrevaVerifiqueoestadodavlvuladearfrio
Seno
EscrevaTemperaturaestdentrodafaixaesperada
FimSe
Fim
ComparandooalgoritmoAlarmeDeTemperatura1eoalgoritmoAlarmeDeTemperatura2,a
diferenaqueosegundoimprimeamensagemTemperaturaestdentrodafaixaesperada,no
caso de a condio (Temperatura > 120) ser falsa enquanto o algoritmo AlarmeDeTemperatura1
noexecutanenhumainstruo.
EmC,aestruturacondicionalcompostatemaseguinteforma:
if(condio)
Instruo1aserexecutadacasoacondiosejaverdadeira
Instruo2aserexecutadacasoacondiosejaverdadeira
....
Instruonaserexecutadacasoacondiosejaverdadeira
else
Instruo1aserexecutadacasoacondiosejafalsa
Instruo2aserexecutadacasoacondiosejafalsa
....
Instruonaserexecutadacasoacondiosejafalsa
OalgoritmoAlarmeDeTemperatura2podeserimplementadoemCdaseguintemaneira:
#include<stdio.h>
#include<iostream>
floattemperatura;
intmain()
{
printf(Informeatemperatura:);
scanf(%f,&temperatura);
if(temperatura>120)
printf(Ateno:temperaturaacimadomximopermitido);
20
FaculdadePitgorasEngenhariaEltrica/Automao
AlgoritmoseProgramao2semestre2011
Professora:SilvanaDinizNOTASDEAULA
printf(Verifiqueoestadodavlvuladearfrio);
}
else
{
printf(Temperaturaestdentrodafaixaesperada);
}
system(PAUSE);
return0;
Naestruturacondicionalcompostasempreum,eapenasum,dosblocosdeinstruesser
executado, ou o bloco que segue o teste if(condio) ou o bloco correspondente ao else. As
estruturasdedecisopermitem,portanto,queofluxodeexecuodeumprogramanosejamais
sequencial conforme vimos at o momento, onde todas as instrues necessariamente sero
executadas.Comasestruturasdedeciso,somenteumtrechodacondiosersatisfeitoeo(s)
outro(s)trecho(s)jamaisseroexecutadosparaaquelaexecuo.
Estruturacondicionalcommltiplaspossibilidadesdeescolha(Aninhado):
Aestruturageralempseudocdigo:
Se(Condio1)ento
{conjuntodeinstruescasocondio1sejaverdadeira}
SenoSe(Condio2)ento
{conjuntodeinstruescasocondio2sejaverdadeira}
SenoSe(Condio3)ento
{conjuntodeinstruescasocondio3sejaverdadeira}
SenoSe(CondioN)ento
{conjuntodeinstruescasocondioNsejaverdadeira}
Seno
{conjuntodeinstruescasonenhumadasNcondiestestadassejaverdadeira}
FimSe
Nessa estrutura condicional, so testadas N condies. Para cada uma delas, existe um
conjuntodeinstruesqueserexecutadocasoacondiosejaverdadeira.Apenasumconjunto
de instrues ser executado, aquele correspondente primeira condio avaliada como
verdadeira.Senenhumadascondiesforverdadeira,serexecutadooconjuntodeinstruesdo
correspondenteaoSeno.ValeressaltarqueocomandoSenoopcional,ouseja,podeouno
existir.
21
FaculdadePitgorasEngenhariaEltrica/Automao
AlgoritmoseProgramao2semestre2011
Professora:SilvanaDinizNOTASDEAULA
Exemplo:
Vejamosoalgoritmoqueinformeoportedemogrficodeumacidadedeacordocomonmerode
habitantesinformados:
AlgoritmoTamanhoDaCidade
Variveis
Populacao:Inteiro
Incio
EscrevaInformeonmerodehabitantesdacidade:
LeiaPopulacao
Se(Populacao<100000)ento
EscrevaCidadepequena
SenoSe((Populacao>=100000)E(Populacao<500000))
EscrevaCidadedeportemdio
Seno
EscrevaCidadegrande.
FimSe
Fim
EmC,aestruturacondicionalcommltiplaspossibilidadesdeescolhatemaforma:
if(condio1)
{
Instruo1aserexecutadacasoacondio1sejaverdadeira
Instruo2aserexecutadacasoacondio1sejaverdadeira
....
Instruonaserexecutadacasoacondio1sejaverdadeira
elseif(condio2)
Instruo1aserexecutadacasoacondio2sejaverdadeira
Instruo2aserexecutadacasoacondio2sejaverdadeira
....
Instruonaserexecutadacasoacondio2sejaverdadeira
elseif(condio3)
Instruo1aserexecutadacasoacondio3sejaverdadeira
Instruo2aserexecutadacasoacondio3sejaverdadeira
....
Instruonaserexecutadacasoacondio3sejaverdadeira
elseif(condioN)
22
FaculdadePitgorasEngenhariaEltrica/Automao
AlgoritmoseProgramao2semestre2011
Professora:SilvanaDinizNOTASDEAULA
}
else
{
Instruo1aserexecutadacasoacondioNsejaverdadeira
Instruo2aserexecutadacasoacondioNsejaverdadeira
....
InstruonaserexecutadacasoacondioNsejaverdadeira
Instruo1aserexecutadacasotodasasNcondiessejafalsa
Instruo2aserexecutadacasotodasasNcondiessejafalsa
....
InstruonaserexecutadacasotodasasNcondiessejafalsa
OalgoritmoTamanhoDaCidadeteriaaseguinteimplementaoemC:
#include<stdio.h>
#include<iostream>
intpopulacao;
intmain()
{
printf(Informeonmerodehabitantesnacidade:);
scanf(%d,&populacao);
if(populacao<100000)
printf(CidadePequena);
elseif((populacao>=100000)&&(populacao<500000))
printf(Cidadedemdioporte;
else
printf(Cidadegrande);
return0;
system(PAUSE);
}
Estruturacondicionalcommltiplaspossibilidadesdeescolha(Escolha...Caso):
Nosexemplosanterioresdeestruturacondicionalcommltiplaspossibilidadesdeescolha,
foitratadaaestruturaSe...SenoSe...FimSe.Noentanto,quandoasmltiplaspossibilidadesde
desvio de fluxo so escolhidas pela comparao de igualdade entre uma expresso nica e uma
constante, podese tambm utilizar a estrutura Escolha... Caso para que o cdigo fique mais
enxutoemenoscomplexo,commaiorclarezadeentendimentoparaquemanalisasuaexecuo
posteriormente.
Empseudocdigoaformageraldaestrutura:
23
FaculdadePitgorasEngenhariaEltrica/Automao
AlgoritmoseProgramao2semestre2011
Professora:SilvanaDinizNOTASDEAULA
Escolha(expresso)
Caso<rtulo1>:
<blocodeinstruescasoexpressosejaigualartulo1>
Caso<rtulo2>:
<blocodeinstruescasoexpressosejaigualartulo2>
Caso<rtulo3>:
<blocodeinstruescasoexpressosejaigualartulo3>
...
Caso<rtuloN>:
<blocodeinstruescasoexpressosejaigualartuloN>
Seno
<blocodeinstruescasoexpressosejadiferentedetodososrtulos
de1aN>
FimEscolha
Exemplo:
Algoritmoqueinformaonomedodiadasemanadeacordocomnmerodigitadopelousurio.
AlgoritmoDiaDaSemana
Variveis
dia:Inteiro
Incio
EscrevaInformeonmerododiadasemana:
Leiadia
Escolha(dia)
Caso1:
EscrevaDomingo
Caso2:
EscrevaSegundafeira
Caso3:
EscrevaTerafeira
Caso4:
EscrevaQuartafeira
Caso5:
EscrevaQuintafeira
Caso6:
EscrevaSextafeira
Caso7:
EscrevaSbado
Seno
24
FaculdadePitgorasEngenhariaEltrica/Automao
AlgoritmoseProgramao2semestre2011
Professora:SilvanaDinizNOTASDEAULA
EscrevaDia,dia,noexiste!
FimEscolha
Fim
NoalgoritmoDiaDaSemana,ousuriodigitaonmerododiadasemana.Seonmerofor
igualaalgumdosinteirosde1a7,exibeseamensagemdodiacorrespondente.Seonmerono
corresponder a um dia vlido, a execuo do algoritmo cai no bloco de instrues Seno, que
informaaousurioqueodianoexiste.
EmlinguagemC,aestruturaEscolha...Casoimplementadapeloscomandosswitch...case,que
tmaformageral:
switch(expresso)
case<rtulo1>:
Instruo1aserexecutadacasoaexpressosejartulo1
Instruo2aserexecutadacasoaexpressosejartulo1
....
Instruonaserexecutadacasoaexpressosejartulo1
break;
case<rtulo2>:
Instruo1aserexecutadacasoaexpressosejartulo2
Instruo2aserexecutadacasoaexpressosejartulo2
....
Instruonaserexecutadacasoaexpressosejartulo2
break;
case<rtulo3>:
Instruo1aserexecutadacasoaexpressosejartulo3
Instruo2aserexecutadacasoaexpressosejartulo3
....
Instruonaserexecutadacasoaexpressosejartulo3
break;
...
case<rtuloN>:
Instruo1aserexecutadacasoaexpressosejartuloN
Instruo2aserexecutadacasoaexpressosejartuloN
....
InstruonaserexecutadacasoaexpressosejartuloN
break;
default:
Instruo1aserexecutadacasoexpressosejadiferentedetodososrtulos
Instruo2aserexecutadacasoexpressosejadiferentedetodososrtulos
....
Instruonaserexecutadacasoexpressosejadiferentedetodososrtulos
break;
}
25
FaculdadePitgorasEngenhariaEltrica/Automao
AlgoritmoseProgramao2semestre2011
Professora:SilvanaDinizNOTASDEAULA
ComparandoasestruturasempseudocdigoeemC,temosaseguinteequivalncia:
Palavrachaveempseudocdigo
PalavrachaveemC
Escolha
switch
Caso
case
Seno
default
EmCtemosaindaumcomandobreaknofinaldecadacase.Ocomandobreakevitaquese
faamoutrascomparaesentrertuloseexpressodetesteassimqueencontrarmosumrtulo
igualexpressodeteste,ouseja,apsortulodaexpressoatendido,seublocodeintrues
executado e o break fora o programa a sair da estrutura switch case, sem testar nenhuma
condioamais.
OalgoritmoDiaDaSemanaequivalenteaoseguintecdigoemC:
#include<stdio.h>
#include<iostream>
intdia;
intmain()
{
printf("Informeonmerododiadasemana:");
scanf("%d",&dia);
switch(dia)
{
case1:
printf("\nDomingo");
break;
case2:
printf("\nSegundafeira");
break;
case3:
printf("\nTerafeira");
break;
case4:
printf("\nQuartafeira");
break;
case5:
printf("\nQuintafeira");
break;
case6:
printf("\nSextafeira");
break;
case7:
26
FaculdadePitgorasEngenhariaEltrica/Automao
AlgoritmoseProgramao2semestre2011
Professora:SilvanaDinizNOTASDEAULA
printf("\nSbado");
break;
default:
printf("\nDia%dnoexiste!",dia);
}
system(PAUSE);
return0;
}
Porm,ocdigoacimapoderiatambmserperfeitamentetersidoimplementadocomif...
elseif...,conformeaseguir:
#include<stdio.h>
intdia;
intmain()
{
printf("Informeonmerododiadasemana:");
scanf("%d",&dia);
if(dia==1)
printf("\nDomingo");
elseif(dia==2)
printf("\nSegundafeira");
elseif(dia==3)
printf("\nTerafeira");
elseif(dia==4)
printf("\nQuartafeira");
elseif(dia==5)
printf("\nQuintafeira");
elseif(dia==6)
printf("\nSextafeira");
elseif(dia==7)
printf("\nSbado");
else
printf("\nDia%dnoexiste!",dia);
system(PAUSE);
return0;
}
Cabe,entoaoprogramador(voc)aescolheraformamaisconvenienteouapropriadaao
seuproblema.
Lembrese que um dos critrios para um cdigo ser considerado bom ou enxuto, o
mesmodeveutilizaromenornmerodelinhaspossveis.
27
FaculdadePitgorasEngenhariaEltrica/Automao
AlgoritmoseProgramao2semestre2011
Professora:SilvanaDinizNOTASDEAULA
ExemplosparapraticarEMAULA:
Exerccio1
Faa um algoritmo que e informe se a pessoa considerada obesa baseado no IMC (ndice de
Massa Corprea) fornecido pelo usurio. Nota: Para ser considerado obeso o IMC deve ser
superiora30.
Exerccio2
Agora,juntocomumcolega,tenteimplementaremocdigoC++umprogramaparaentrarcom
umnmeroe:
escrevaaraizquadradadonmero,casosejapositivo
escrevaoquadradodelecasosejanegativo.
Dica:Nestecaso,precisaremosdafunosqrt()parafazeraraizquadradaepow()parafazero
quadradodonmero.Sernecessriotambmainclusodabibliotecamath.hparaexecutaressa
funes.
Exerccio3:
EscrevaumalgoritmoqueanalisenovamenteoIMCdeumapessoa.Casosejamaiorouigual30
informarObesidade,casosejamenordo30oumaiorque18,informarDentrodafaixaNormal
ecasosejamenorouigual,informarAbaixodoPeso.
Exerccio4:
Dadoumaletra(S,C,DouV),informeoestadocivil(Solteiro,Casado,DivorciadoouVivo).
ParapraticarEMCASA:
Exerccio5
Numafbrica,umamquinaprecisademanutenosemprequeonmerodepeasdefeituosas
supera 10% da produo Dados o total de peas produzidas e o total de peas defeituosas
(fornecidos pelo usurio), faa um programa em C++ que informe se a mquina precisa de
manuteno.
Exerccio6
No exerccio 2, o que acontecer se o usurio entrar com o nmero 0 (zero)? Veja que no
positivoenemnegativo.Comooprogramaotratar?Comoresolveresseproblema,informando
ao usurio que ele entrou com um nmero nulo (zero)? Altere o cdigo do exemplo 1 para
resolver essa situao utilizando uma das estruturas de deciso com mltiplas possibilidades de
escolha.Qualamelhor?Porqu?
Exerccio7
Implemente em cdigo C++, um programa no qual o usurio fornece dois nmeros reais e um
caracter (A,S,M,D), representando adio, subtrao, multiplicao e diviso respectivamente.
Calcule e infome o resultado da operao escolhida. Faa tambm a previso para um caracter
diferentedasopesfornecidas(A,S,M,D)einformeaousurioOpoInvlida.
Dica: para resolver essa situao utilize uma das estruturas de deciso com mltiplas
possibilidadesdeescolha.Qualamelhor?Porqu?
28
FaculdadePitgorasEngenhariaEltrica/Automao
AlgoritmoseProgramao2semestre2011
Professora:SilvanaDinizNOTASDEAULA
UNIDADEIV
Estruturasderepetio:
Todososprogramasvistosataquiseguemumaestruturalineardecomandos,ouseja,os
comandossoexecutadosnaordememquesodigitados.Asestruturasderepetiopermitem
quedeterminadapartedocdigosejaexecutadarepetidas.Nessecaso,ofluxodeexecuono
mais linear, pois pode permite que o programa volte a um inicial e repita se uma sequencia de
instruesnovamente.
Existemtrstiposprincipaisdeestruturasderepetio:
repetiocontada(repetiocontroladaporvarivel);
repetiocondicionalcomtestenoincio;
repetiocondicionalcomtestenofinal.
Estruturaderepetiocontada(repetiocontroladaporvarivel):
Exemplo:
Suponhaquequeiramosimprimirtodososnmerosinteirosde1a100.Comoconhecimentoque
temosataqui,ocdigoparafazerumprogramadessesseriaextremamentedeselegante:
AlgoritmoImprime1a100VersaoLinear
Variveis
Incio
Escreva1
Escreva2
Escreva3
...
Escreva100
Fim
Utilizandoaestruturaderepetiocontada,poupamosmuitaslinhasdecdigoedeixamos
oprogramamenossujeitoaerrosdedigitao:
AlgoritmoImprime1a100VersaoRepContada
Variveis
i:Inteiro
Incio
Parai=1At100
Escrevai
FimPara
Fim
29
FaculdadePitgorasEngenhariaEltrica/Automao
AlgoritmoseProgramao2semestre2011
Professora:SilvanaDinizNOTASDEAULA
AlgoritmoImprime1a100VersaoLinearEquivalenteRepeticao
Variveis
i:Inteiro
Incio
i1
Escrevai
ii+1
Escrevai
ii+1
Escrevai
...
ii+1
Escrevai
Fim
importantenotarqueaquantidadedevezesqueolao(loop)Paraserexecutadopode
serdeterminadaemtempodeexecuo.Porexemplo,aoinvsdeimprimirosnmerosinteirosde
1a100,poderamosimprimirosnmerosde1aN,emqueNumvalorinformadopelousurio.
Vejaoalgoritmoaseguir:
AlgoritmoImprime1aN
Variveis
I,N:Inteiro
Incio
EscrevaInformequantosnmerosdesejaimprimir:
LeiaN
ParaI=1AtN
EscrevaI
FimPara
Fim
Em linguagem C, a repetio contada feita pelo comando for. O comando for tem trs
partesprincipais:inicializao,condioeincremento.Aformageraldocomandofor:
for(<inicializacao>;<condicao>;<incremento>)
Instruo1aserexecutada
Instruo2aserexecutada
....
Instruonaserexecutada
}
30
FaculdadePitgorasEngenhariaEltrica/Automao
AlgoritmoseProgramao2semestre2011
Professora:SilvanaDinizNOTASDEAULA
Aschavesdocomandoforpodemseromitidascasooblocodecomandossejacomposto
porapenasumcomando.
OcdigoaseguiroequivalenteemCaoalgoritmoparaimprimirnmerosde1aN:
/*Codigofonteparaimprimirnumerosde1aN*/
#include<stdio.h>
#include<iostream>
inti,N;
intmain()
{
printf(Informequantosnumerosdesejaimprimir:);
scanf(%d,&N);
for(i=1;i<=N;i++)
printf(%d,i);
system(PAUSE);
return0;
}
LoopInfinito
Casonadasejafeitoparatornaracondiosetornefalsa,oscomandosdolaoserepetiro
infinitasvezeseteremosumloopinfinito.Porexemplo,seomitssemosocomandodeincremento,
oloopforseriaexecutadoinfinitamente.Vejaabaixoocdigoquecaiemloopinfinito.
/*Codigofontecomproblemasequecaiemloopinfinito*/
#include<stdio.h>
#include<iostream>
inti,N;
intmain()
{
printf(Informequantosnumerosdesejaimprimir:);
scanf(%d,&N);
for(i=1;i<=N;)
printf(%d,i);
system(PAUSE);
return0;
}
31
FaculdadePitgorasEngenhariaEltrica/Automao
AlgoritmoseProgramao2semestre2011
Professora:SilvanaDinizNOTASDEAULA
Veja que no algoritmo anterior, i seria sempre igual a 1 e, portanto, a condio para
finalizaoI<=Njamaisseriaalcanada.
LoopFlexvel
Oloopforbastanteflexvel.Poderamos,porexemplo,mudarocomandodeincremento
paraimprimirapenasosnmerosmpares:
/*Codigofonteparaimprimirtodososnumerosimparesde1aN*/
#include<stdio.h>
#include<iostream>
inti,N;
intmain()
{
printf(Informeomaiornumerodasequencia:);
scanf(%d,&N);
for(i=1;i<=N;i=i+2)//incrementode2
printf(%d,i);
system(PAUSE);
return0;
}
Poderamosaindaimprimirosnmerosde1aNemordemdecrescente:
/*Codigofonteparaimprimirtodososnumerosde1aNemordemdecrescente*/
#include<stdio.h>
#include<iostream>
inti,N;
intmain()
{
printf(Informequantosnumerosdesejaimprimir:);
scanf(%d,&N);
for(i=N;i>0;i)//incrementode1
printf(%d,i);
system(PAUSE);
return0;
}
32
FaculdadePitgorasEngenhariaEltrica/Automao
AlgoritmoseProgramao2semestre2011
Professora:SilvanaDinizNOTASDEAULA
Programaquecalculaofatorialdeumnmerointeiroepositivoinformadopelousurio:
/*ProgramaquecalculaofatorialdeN*/
#include<stdio.h>
#include<iostream>
intmain()
{
inti;//contador
intN;//numeroparacalcularfatorial
intfat=1;//valordofatorial
printf("InformeN,onumerocujofatorialdevesercalculado:");
scanf("%d",&N);
for(i=2;i<=N;i++)
{
fat=fat*i;
printf("\nOvalordofatorialde%deh%d",N,fat);
system(PAUSE);
return0;
}
VarivelAuxiliar
Programa que calcula a soma dos nmeros inteiros compreendidos num intervalo
informadopelousurio.Vejaquenecessitamosdeumavarivelauxiliarquepermitequevalores
entreduasvariveissejamtrocadosentresi,semaperdadenenhumdeles.
/*ProgramaquecalculaofatorialdeN*/
#include<stdio.h>
#include<iostream>
inti;
//contador
intaux;
//varivelauxiliar
intlim1;
//primeirolimitedointervalo
intlim2;
//segundolimitedointervalo
intsoma=0; //resultadodesejado
intmain()
{
33
FaculdadePitgorasEngenhariaEltrica/Automao
AlgoritmoseProgramao2semestre2011
Professora:SilvanaDinizNOTASDEAULA
printf("Informeoprimeirolimite:");
scanf("%d",&lim1);
printf("\nInformeosegundolimite:");
scanf("%d",&lim2);
if(lim2<lim1)//trocarlim1porlim2
{
aux=lim2;
lim2=lim1;
lim1=aux;
}
for(i=lim1;i<=lim2;i++)
{
soma=soma+i;
}
printf("\nOvalordasomaeh%d",soma);
system(PAUSE);
return0;
Estruturaderepetiocondicionalcomtestenoincio:
Conformeoprprionomeindica,naestruturaderepetiocondicionalcomtestenoincio,
um bloco de comandos executado dependendo da inspeo de uma expresso condicional
colocada antes do bloco. Os comandos s so executados se a expresso for verdadeira e
enquantoelaforverdadeiraoscomandosdoblococontinuamaserexecutados.
Exemplo:
Considerenovamenteoproblemademostrartodososnmerosinteirosde1a100.Utilizandoa
estruturaderepetiocondicionalcomtestenoincio,asoluoseria:
AlgoritmoImprime1a100VersaoEnquanto
Variveis
k:Inteiro
Incio
k1
Enquanto(k<=100)Faa
Escrevak
kk+1
FimEnquanto
Fim
34
FaculdadePitgorasEngenhariaEltrica/Automao
AlgoritmoseProgramao2semestre2011
Professora:SilvanaDinizNOTASDEAULA
Conformeseobservanesseproblemadeexemplo,aestruturaderepetiocomtesteno
incio pode, com algumas adaptaes, ser equivalente estrutura de repetio contada. A
diferena nesse exemplo que as operaes de inicializao e incremento da varivel k (que
funcionacomocontador)nosopartedaconstruobasedoloopmassoadicionadasparte.
Aformageraldocomando:
while(<condicao>)
Instruo1aserexecutada
Instruo2aserexecutada
....
Instruonaserexecutada
Aschavesdocomandowhilepodemseromitidascasooblocodecomandossejacomposto
porapenasumcomando.
Comparando com o comando for, vemos que no caso do comando while as etapas de
inicializaoeincrementonofazempartedasintaxedoloop,apesardepoderemseradicionadas
aoblocodecomandoseaocdigoqueprecedeocomandowhile.
/*Codigofonteparaimprimirnumerosde1a100utilizandoocomandowhile*/
#include<stdio.h>
#include<iostream>
intk=1;
intmain()
{
while(k<=100)
printf(%d,k);
k=k+1;
system(PAUSE);
return0;
}
Exemplo:
Elaboreumcdigoquesolicitavriossalriosatquandoosalriodigitadofor0(zero)eimprima:
- TotaldepessoascomsalriomenorouigualaR$540,00
- TotaldepessoascomsalriomaiorqueR$5000,00.
35
FaculdadePitgorasEngenhariaEltrica/Automao
AlgoritmoseProgramao2semestre2011
Professora:SilvanaDinizNOTASDEAULA
#include<stdio.h>
#include<iostream>
#include<stdio.h>
#include<iostream>
floatsalario;
intconta_salmenor=0;
intconta_salmaior=0;
intmain()
{
printf("PROGRAMAVERIFICAFAIXASALARIAL");
printf("\nParasairdigitesalarioiguala0(zero)");
printf("\n\nInformeseusalariomensal:");
scanf("%f",&salario);
while(salario!=0)
{
if(salario<=540)
conta_salmenor=1+conta_salmenor;
elseif(salario>=5000)
conta_salmaior=1+conta_salmaior;
printf("\nInformeseusalariomensal:");
scanf("%f",&salario);
}
printf("\n\nNumerodepessoas<=R$540,00>%d\n",conta_salmenor);
printf("\n\nNumerodepessoas>=R$5000,00>%d\n\n",conta_salmaior);
system("PAUSE");
return0;
}}
Estruturaderepetiocondicionalcomtestenofinal:
LembremonosdaanalogiaemCdaestruturaderepetiocondicionalcomtestenoincio:
//comandos
Nessaestrutura,fazseotestenoincioe,casooresultadosejaverdadeiro,executamseos
36
FaculdadePitgorasEngenhariaEltrica/Automao
AlgoritmoseProgramao2semestre2011
Professora:SilvanaDinizNOTASDEAULA
comandosdobloco.Acondioentotestadanovamenteeosmesmospassossorepetidosat
queacondiosejafalsa.
Aformadocomandoempseudocdigo:
Faa
{Comandos}
Enquanto(<condio>)
Exemplo:
Considere um programa que d permisses de acesso especiais a usurios que tenham
conhecimentodeumcdigosecreto.
AlgoritmoCodigoSecretoComFacaEnquanto
Variveis
Codigo:Inteiro
Incio
Faa
EscrevaDigiteocdigosecreto:
LeiaCodigo
Enquanto(Codigo<>123456)
EscrevaBemvindoaosistema!
Fim
Asoluoparaomesmoproblemausandooloopwhileseriaumpoucomaiscomplicada:
AlgoritmoCodigoSecretoComEnquanto
Variveis
Codigo:Inteiro
Incio
EscrevaDigiteocdigosecreto:
LeiaCodigo
Enquanto(Codigo<>123456)Faa
EscrevaDigiteocdigosecreto:
LeiaCodigo
FimEnquanto
EscrevaBemvindoaosistema!
Fim
EmlinguagemC,oFaaEnquantorepresentadopelocomandodowhile,cujasintaxe:
do
37
FaculdadePitgorasEngenhariaEltrica/Automao
AlgoritmoseProgramao2semestre2011
Professora:SilvanaDinizNOTASDEAULA
Instruo1aserexecutada
Instruo2aserexecutada
....
Instruonaserexecutada
}while(<condicao>)
OexemplodocdigosecretoficariaassimemlinguagemC:
#include<stdio.h>
#include<iostream>
intcodigo;
intmain()
{
do
{
printf("\n\nDigiteocodigosecreto:");
scanf("%d",&codigo);
}while(codigo!=123456);
printf("Bemvindoaosistema!\n");
system(PAUSE);
return0;
}
Umadasaplicaesdocomandodowhileparaforarqueousurioescolhaumaopo
vlidaentrealternativasprdefinidas.
Exemplo:
Vejaocdigoaseguiretentedescobriroqueelefaz:
#include<stdio.h>
#include<iostream>
intx,y,opcao,resultado;
intmain()
{
printf("Informex:");
scanf("%d",&x);
printf("\nInformey:");
scanf("%d",&y);
38
FaculdadePitgorasEngenhariaEltrica/Automao
AlgoritmoseProgramao2semestre2011
Professora:SilvanaDinizNOTASDEAULA
do
{
printf("\n\nEscolhaasuaopcao:\n\n");
printf("\t(1)...Somarx+y\n");
printf("\t(2)...Subtrairxy\n");
printf("\t(3)...Multiplicarx*y\n\n");
scanf("%d",&opcao);
}while((opcao<1)||(opcao>3));
switch(opcao)
{
case1:
resultado=x+y;
break;
case2:
resultado=xy;
break;
case3:
resultado=x*y;
break;
}
printf("\n\nResultadodaoperacao:%d",resultado);
system(PAUSE);
return0;
}
Veja que no cdigo acima, a operao (somar, subtrair ou multiplicar) s ser realizada
quandoousuriodigitarumaopovlida.Olaodo...whilesinterrompidoquandoousurio
digitarumnmerovlido,nestecaso,1a3.
Outraaplicaousualrepetirummesmoprogramavriasvezes,atqueousuriodeseje
sair.
Exemplo3:
/*Programaquecalculaamediadedoisnumerosrepetidasvezes*/
#include<stdio.h>
#include<iostream>
intresposta;
floatn1,n2,media;
intmain()
{
39
FaculdadePitgorasEngenhariaEltrica/Automao
AlgoritmoseProgramao2semestre2011
Professora:SilvanaDinizNOTASDEAULA
do
{
printf("\nInformeoprimeironumero:");
scanf("%f",&n1);
printf("\nInformeosegundonumero:");
scanf("%f",&n2);
media=0.5f*(n1+n2);
printf("\nAmediavale:%f",media);
printf("\nDesejarepetiroprograma?);
printf(Digite:1paraContinuare0paraSair");
scanf("%d",&resposta);
}while(resposta==1);
return0;
}
ParapraticarEMAULA:
Exerccio1
ElaboreemcdigoC++,umprogramaparaleronmerodealunosexistentesemumaturma,ler
asnotasdestesalunos,ecalcularamdiaaritmticadestasnotas.
Exerccio2
Agora,juntocomumcolega,tenteimplementaremocdigoC++umprogramaparaentrarcom
umnmeroe:
escrevaaraizquadradadonmero,casosejapositivo
escrevaoquadradodelecasosejanegativo.
Comopodeperceberessecdigojfoifeitonaunidadeanteriot,pormagoravocdever
controlar atravs de uma das condies de repetio a execuo desse programa da seguinte
forma: enquanto os nmeros forem positivos ou negativos, o programa dever continuar a ser
executadoininterruptamentesemprepedindoqueousurioemcomnovosnmeros.Oprograma
sserinterrompidoquandoousuriodigitar0(zero).
Apsafinalizaodeseucdigo,testeparaestecasoanecessidadeounodeacrescentar
osystem(PAUSE)ouno.Justifiquesuaexperincia.
Exemplo3:
Dadasasnotasduasdeumaluno,informesuamdia.Seuprogramadeveforarousurioadigitar
notasnafaixade0a10,paraentofazeramdia.
ParapraticarEMCASA:
Exerccio4
40
FaculdadePitgorasEngenhariaEltrica/Automao
AlgoritmoseProgramao2semestre2011
Professora:SilvanaDinizNOTASDEAULA
Dados o nmero de pacientes de uma clinica, escreva um programa em C++ para ler o peso de
cadaumdospacientes.Informeopesodopacientemaispesado.
Exerccio5
EscrevaumprogramaemC++quesoliciteaidadedevriaspessoaseimprima:
Totaldepessoascommenosde21anos.
Totaldepessoascommaisde50anos.
Oprogramaterminaquandoaidadefor99.
Exerccio7
RefaaoprogramadoExerccio7daunidadeIIIparaimplementarumaestruturaderepetioas
seguintemaneira.Oprogramadeverexibirummenucomasseguintesopes:
1Somar
2Subtrair
3Multiplicar
4Dividir
5Sair
Aps a escolha da opo, o usurio deve fornecer dois nmeros e o programa dever mostrar o
resultadodaoperaoescolhida.Faatambmaprevisoparaumnmerodiferentedasopes
fornecidaseinformeaousurioOpoInvlida.
41
FaculdadePitgorasEngenhariaEltrica/Automao
AlgoritmoseProgramao2semestre2011
Professora:SilvanaDinizNOTASDEAULA
ANEXOIPALAVRASRESERVADAS
PalavrasReservadasnaLinguagemC++
Na linguagem C++ existem palavras que so de uso reservado, ou seja, que possuem
funes especficas na linguagem de programao e no podem ser utilizadas para outro fim,
como por exemplo, ser usada como nome de varivel. Por exemplo, a palavra reservada for
serveparachamarumlaoderepetio,enopodeserutilizadacomonomedeumavarivel.
AlistaabaixorelacionaaspalavrasreservadasdalinguagemC++:
asm
auto
bool
break
case
catch
char
class
const
cast
Continue
default
delete
do
double
Dynamic_cast
else
enum
explicit
export
extern
false
float
for
friend
goto
if
inline
int
long
mutable
namespace
new
operator
private
protected
public
register
reinterpret_cast return
short
signed
sizeof
static
static_cast
struct
switch
template
this
throw
true
try
typedef
typeid
typename
union
unsigned
using
virtual
void
Volatile
wchar_twhile
42
FaculdadePitgorasEngenhariaEltrica/Automao
AlgoritmoseProgramao2semestre2011
Professora:SilvanaDinizNOTASDEAULA
ANEXOIIFUNESDASBIBLIOTECAS
BibliotecasC++
EmC++,abibliotecaumacoleodeclasses,funesevariveisescritasnaprprialinguagem
parafacilitarodesenvolvimentodeaplicaes.TambmincorporabibliotecasdoC.
ImportanteressaltarqueasbibliotecasdoC++nopossuemo.h,comoasbibliotecasdoC.
Exemplo:
<stdio.h>(bibliotecadoC)
<algorithm>(bibliotecadoC++)
FunesdasBibliotecasdoC
#include <stdio.h> Essa biblioteca responsvel pela entrada e sada "Standard In/Out", ou
melhor,entradaesadapadro.Nelaencontramosfunesparaessetipodecoisa,oquepodeser
aleituradoteclado,escritaformatada(ouno)natelaeoperaescomarquivos.
Algumasfunesdessabiblioteca:fprintf,printf,fscanf,scanf,getchar,putc,getc,fopenefclose.
#include<ctype.h>Estabibliotecaserveparatestarcaracteres.Testarsemaisculo,testarse
minsculo,testarseespao,testardgitodecimal...Almdisso,essabibliotecapermiteconverter
maiscula em minscula e viceversa. Algumas funes dela: isupper, islower, isspace, isdigit,
toupperetolower.
#include <string.h> A biblioteca string responsvel por disponibilizar funes para trabalhar
comconjuntosdecaracteres,isto,"strings".Possuidoisgruposdecomandos,osquecomeam
comstreosquecomeamcommem.Oprimeirogrupopermite,porexemplo:copiar,concatenar,
comparareverotamanhodeumastring.Asfunesreferentesaissoso:strcpy,strcat,strcmpe
strlen.Asfunesdosegundogrupomencionadofazemcoisassemelhantescomocopiar,movere
comparar:memcpy,memmove,memcmp.
#include<math.h>Estbibliotecadeclarafunesmatemticasquepodemservirpara:achara
raizquadrada,acharoseno,coseno,tangente,logaritmonabase10.Asfunesreferentesaisso
so: sqrt, sin, cos, tan, log10. Fora isso, um outro uso para declarao desta biblioteca a
possibilidadedearredondarumnmero.Paraissousamosafunoqueretornaovalorabsoluto:
fabs.
#include<stdlib.h>Elaresponsvelpelaconversesdenmeros,asalocaesnamemriase
outrasfunes.Comelapodemosconverterum"char"emum"double",converterum"char"para
"long", criar um nmero randmico, alocar na memria, realocar na memria, desalocar da
memria, execuo de comandos do sistema operacional respectivamente. As funes citadas
so: atof, atol, rand, malloc, realloc, free e system. Tambm no podia deixar de falar que ela
retornaovalorabsolutodeumnmerointeirousandoabs.
#include <time.h> Esta biblioteca declara funes para manipularmos a data e hora. Podemos
usarestabibliotecaparapegarohorriodoprocessador,pegarohorriodosistema,fazermosa
diferenaentredoishorrios.Asfunesreferentesso:clock,timeedifftime.
#include <stddef.h> Este arquivo define macros e tipos de uso geral em programas: NULL,
offsetof,ptrdiff_t,size_temuitosoutros.
43
FaculdadePitgorasEngenhariaEltrica/Automao
AlgoritmoseProgramao2semestre2011
Professora:SilvanaDinizNOTASDEAULA
#include<windows.h>Todasasdefiniesdejanelas:criar,abrir,etc.umarquivocabealho
grande com cerca de 500 mega de definies. Saiba que o lccwin32 incorpora neste arquivo
muitos dos arquivos que normalmente so individualizados em outras distribuies (como o
winbase.h,porexemplo).
OutrasbibliotecasdoC:#include<assert.h>,#include<complex.h>,#include<ctype.h>,#include
<errno.h>, #include <fenv.h>, #include <float.h>, #include <inttypes.h>, #include <iso646.h>,
#include <limits.h>, #include <locale.h>, #include <setjmp.h>, #include <signal.h>, #include
<stdarg.h>, #include <stdbool.h>, #include <stddef.h>, #include <stdint.h>, #include <stdint.h>,
#include<tgmath.h>,#include<wchar.h>,#include<wctype.h>
FunesdasBibliotecasdoC++
#include <algorithm> Este cabealho fornece diversos algoritmos genricos teis para busca,
ordenaoetransformaodecontainers(estruturasdedados),entreoutros.
#include <fstream> um manipulador de fluxos de dados de arquivos de computador
especializado para o tipo de dado nativo char. Ele permite ler e escrever em modo de texto. A
bibliotecapadrotambmfornececlassesparacasosdeusode(std::fstream)somenteparaleitura
(std::ifstream)ousomenteparaescrita(std::ofstream).
#include <functional> Este cabealho fornece suporte para funesobjeto, classes que
encapsulam funes de forma que a instncia da classe possa ser invocada tal qual uma funo
qualquer. O cabealho ainda define algumas funesobjeto de uso geral tais como operaes
aritmticaselgicas.Umexemploequal_to,umafunoobjetobinriaquetestasedoisvalores
soiguais.Nadamaisqueumafunodecomparaogenricaencapsuladaemumaclasse.
#include<iostream>Estecabealhoresponsvelpelamanipulaodefluxodedadospadrodo
sistema (entrada padro, sada padro e sada de erros padro) e representa uma evoluo do
cabealho<stdio.h>dalinguagemC.Soapresentadososobjetoscin,cout,cerreclogparaoenvio
e recebimento de dados dos fluxos de entrada, sada, erro sem buffer e erro com buffer,
respectivamente;
#include <locale> Este cabealho manipula diversas convenes culturais do utilizador, como a
representao de nmeros, moeda e datas, para efeitos de internacionalizao. A biblioteca faz
uso da faceta, uma interface para um servio dum locale especfico. Cada locale possui um
conjunto de facetas. O construtor padro da classe std::locale define uma cpia do locale da
mquinaexecutandooprograma,comasconvenesatuaisdoutilizador.
#include <map> O container std::map<Key, Data, Compare, Alloc> um conjunto associativo
ordenadoquemapeiaobjetosdotipoKey(achave)emobjetosdotipoData(ovalor).Aschaves
sonicas:seumobjetoinseridocomumachavejexistente,ovalorpresentesubstitudopelo
valor inserido. Internamente, os elementos do mapa so ordenados atravs das chaves. Uma
variaodocontainerostd::multimap,quepermitechavesrepetidas.
#include<set>Ocontainerstd::set<Key,Compare,Alloc>umconjuntoassociativoquepermite
acesso aleatrio rpido aos dados. Difere do container std::map pois os valores dos elementos
tambmsosuaschaves.Poressemotivo,cadavalor(e,portanto,suachave)nico,nopode
repetir. O container pode ser acessado de forma bidirecional, a partir do comeo ou do fim. A
44
FaculdadePitgorasEngenhariaEltrica/Automao
AlgoritmoseProgramao2semestre2011
Professora:SilvanaDinizNOTASDEAULA
implementaointernadocontainergeralmenteumarvoredebuscabinria.Umavariaodo
containerostd::multiset,ummulticonjuntoassociativo,quepermitevaloresrepetidos.
#include <sstream> std::stringstream um manipulador de fluxos de dados de cadeias de
caracteresespecializadoparaotipodedadonativochar.Elepermitelereescreveremmodode
texto.Abibliotecapadrotambmfornececlassesparacasosdeusodestd::stringstreamsomente
paraleitura(std::istringstream)ousomenteparaescrita(std::ostringstream).
#include<string>Ocontainerstd::stringumacadeiadecaracteresespecializadaparaotipode
dado nativo char. Ele remove vrios dos problemas introduzidos pela linguagem C ao confiar no
programador no gerenciamento de cadeias de caractere, encapsulando internamente rotinas e
consideraesqueoprogramadornoprecisatomarconhecimento.
#include<vector>Ocontainerstd::vectorumarranjoegeneralizaoconceitodumvetoremC.
Pode ser acessado atravs de ndices para os elementos assim como em C (atravs de uma
sobrecarga do operador adequado) e sua memria alocada de forma contgua. Entretanto,
diferentedumvetoremC,otamanhodocontainerdinmicocomgerenciamentoautomticoe
humaflexibilidademaiorparaadicionarelementos.
OutrasbibliotecasdoC++:#include<functional>,#include<iterator>,#include<locale>,#include
<memory>,#include<stdexcept>,#include<utility>,#include<fstream>,#include<ios>,#include
<iostream>, #include <iosfwd>, #include <iomanip>, #include <istream>, #include <ostream>,
#include <sstream>, #include <streambuf>, #include <complex>, #include <numeric>, #include
<valarray>,#include <cassert>, #include <cctype>, #include <cerrno>,#include <cfloat>, #include
<climits>,#include<cmath>,#include<csetjmp>,#include<csignal>,#include<cstdlib>,#include
<cstddef>, #include <cstdarg> ,#include <ctime>, #include <cstdio>, #include <cstring>, #include
<cwchar>,#include<cwctype>
45