Sie sind auf Seite 1von 45

FaculdadePitgorasEngenhariaEltrica/Automao

AlgoritmoseProgramao2semestre2011
Professora:SilvanaDinizNOTASDEAULA

UNIDADEI

IntroduoaosAlgoritmos1

Definiodealgoritmos:

Dadoumproblema,umalgoritmoaespecificaodeumasequnciadeaescujaexecuo
resultanaresoluodoproblema.

Dada a definio de algoritmos, vemos que os algoritmos no so especficos do domnio da


computao.Algoritmosfazempartedodiaadiadaspessoas,mesmoqueelasnosaibamoque
soalgoritmos.Porexemplo,abaixoestumalgoritmodecomoprepararumaPicanhadesol:

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:

Via de regra, a elaborao de um algoritmo para solucionar um determinado problema


envolvedefinirospassosintermediriosnumaseqncialgica.

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:

Os programas de computador so algoritmos implementados numa linguagem de


programao (C, C++, Pascal, Java, C# etc.). Normalmente, um programa de computador
compostoporumconjuntodealgoritmos,cadaumdosquaisresponsvelpelasoluodeumsub
problema.
Existem duas principais diferenas entre escrever um algoritmo a ser seguido por um ser
humano e escrever um algoritmo e ser seguido por um computador. A primeira delas est na
linguagem utilizada. Enquanto para um ser humano podemos utilizar o portugus, no caso dos
computadores,estamosrestritosslinguagensdeprogramao,que,porsuavez,soconvertidas
emlinguagemdemquinapeloscompiladores.Asegundaprincipaldiferenaestnofatodeque
umapessoaconseguetomardecisesporcontaprprianaocorrnciadesituaesinesperadasna
execuo de um algoritmo. Quando escrevemos um algoritmo para ser executado por um
computador,todasassituaesdevemserprevistaseotratamentoadequadoparacadaumadelas
deveserespecificado.
2

FaculdadePitgorasEngenhariaEltrica/Automao
AlgoritmoseProgramao2semestre2011
Professora:SilvanaDinizNOTASDEAULA

AplicaesdealgoritmosemEngenharia:

Freqentemente, a soluo de problemas de engenharia pode ser descrita como uma


seqnciasistematizadadepassos.Nessescasos,podemosescreveralgoritmosparasolucionlos
edeixarotrabalhorepetitivoparaserrealizadopelocomputador.

Exemplos:
algoritmoparaclculodascorrentesnumcircuito;
algoritmoparaoprocessodemisturadeduassubstncias;
algoritmo para determinar uma seqncia de movimentos de um manipulador robtico
numprocessodesolda.

Percebese que o domnio das tcnicas de construo de algoritmos uma ferramenta


essencialparaumengenheiro.

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:

Fluxograma uma representao grfica de algoritmos, onde formas geomtricas


diferentesimplicamaes(instruese/oucomandos)distintos.Asformasgeomtricasdiferentes
facilitamoentendimentodasidias.

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

Observe no cdigo acima que os comandos entre os delimitadores Incio e Fim tm um


alinhamento deslocado direita comparando aos delimitadores. Esse recurso denominado
indentao(tambmchamadadeendentaoouidentao).Aindentaoaumentaalegibilidade
do cdigo, torna mais fcil identificar o contedo de cada poro do cdigo. Outro recurso para
aumentaralegibilidadeutilizarnomessignificativosparaasvariveis.Asvariveis,R,VeI,por
exemplo, poderiam se chamar carro, nibus e bicicleta. O algoritmo funcionaria da mesma
forma e produziria os mesmos resultados. No entanto, um programador que tivesse que dar
manutenonocdigoteriagrandedificuldadeementenderoseufuncionamento.

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:

Combinao de variveis, constantes e operadores que, uma vez avaliada, resulta em um


valor.Asexpressespodemserdotipoaritmticasoulgicas.

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

Operao Operadorem Operado Tipo


Prioridade Exemplo
Exemploem
pseudocdigo remC
emC
pseudocdigo
Disjuno OU
||
Binrio 3
(3)||(0) VerdadeiroOUFalso
Conjuno E
&&
Binrio 2
(2)&&(1) VerdadeiroEVerdadeiro
Negao NO
!
Unrio 1
!1
NOVerdadeiro

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:

Operaes de sada de dados referemse a quaisquer valores exibidos ou retornados ao


usurio. Esses valores podem ser uma mensagem de orientao, o resultado de uma expresso,
umvalorconstanteouocontedodeumavarivel.ConformevistonoalgoritmoCalculaCorrente,
empseudocdigo,asadadedadosserrepresentadapelocomandoEscreva.Porexemplo:

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

Aps compilar e executar o programa corretamente v fazendo as seguintes mudanas, uma de


cadavez.Apscadamudana,separadamente,compileeexecuteoprogramaetentevisualizaro
quemudou.

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.

Dica: Utilize nomes de variveis mais significativos como temo, velocidade_media,


16

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:

A estrutura condicional composta trabalha sempre com uma condio e duas


possibilidades de deslocamento do fluxo de execuo do algoritmo: o primeiro bloco de
instrues, logo aps a verificao, ser executado sempre que a condio for atendida
(verdadeira)e,casocontrrio,osegundoblocodeinstruesserexecutado(condiofalsa).

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):

A estrutura condicional com mltiplas possibilidades de escolha bastante til em


programao. So tambm conhecidas como condies aninhadas, pois consistem de uma
combinaodecondiesse...entoagrupadas.

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

Comparase a expresso (no comando Escolha) com cada um dos rtulos de 1 a N. Se a


expressoforigualaalgumdosrtulos,oblocodeinstruescorrespondentequelertuloser
executado. Caso a expresso no seja igual a nenhum dos rtulos ser executado o bloco de
instrues que segue a palavra reservada Seno. O bloco do Seno opcional. Caso no exista,
nenhumcomandoexecutadoseaexpressofordiferentedetodososrtulos.

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):

A repetio contada utilizada principalmente em situaes em que sabemos a priori


quantasvezeselairocorrer.

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

No algoritmo Imprime1a100VersaoRepContada, a varivel i funciona como um contador.


Inicialmente,assumeovalor1edepoisincrementadadeumemumatqueatinjaovalor100,
condioquedeterminaotrminodarepetio(loop).Paracadavalordei,executaseocomando
Escrevai.Issoequivalenteaopseudocdigoabaixo:

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.

Em linguagem C, a estrutura de repetio com teste no incio implementada pelo


comandowhile,quetambmocomandomaisutilizadoemoutraslinguagens,taiscomoJava,
MatlabouPascal.

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:

Estrutura de repetio condicional com teste


noincio
while(<condicao>)

//comandos

Nessaestrutura,fazseotestenoincioe,casooresultadosejaverdadeiro,executamseos
36

FaculdadePitgorasEngenhariaEltrica/Automao
AlgoritmoseProgramao2semestre2011
Professora:SilvanaDinizNOTASDEAULA

comandosdobloco.Acondioentotestadanovamenteeosmesmospassossorepetidosat
queacondiosejafalsa.

A estrutura de repetio condicional com teste no final tem funcionamento similar. No


entanto,oscomandossoexecutadosesdepoisotestefeito.Dessaforma,oscomandosso
executadospelomenosumavez.

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

importante tambm notar que a linguagem C++ diferencia letras maisculas e


minsculas,ouseja,charumapalavrareservadadeC++masCHARouChArno(entretanto,
normalmentedesaconselhaseousodessadiferenciaoporatrapalharalegibilidadedocdigo).

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

Das könnte Ihnen auch gefallen