Академический Документы
Профессиональный Документы
Культура Документы
Algoritmos e Programao
3a edio
Fortaleza
2013
Cincias Artes
Qumica Biologia
Biolgicas Artes
Plsticas Informtica Fsica Matemtica Pedagogia
Copyright 2013. Todos os direitos reservados desta edio UAB/UECE. Nenhuma
parte deste material poder ser reproduzida, transmitida e gravada, por qualquer meio
eletrnico, por fotocpia e outros, sem a prvia autorizao, por escrito, dos autores.
Sobre os autores......................................................................................101
Captulo 1
Fundamentos
Algoritmos e Programao 7
Objetivos
Apresentar o conceito de algoritmos e suas formas bsicas de repre-
sentao: texto, fluxograma e pseudocdigo. Outros fatores impor-
tantes so: entradas e sada, seguidas de outros fundamentos como
variveis.
1. A idia de algoritmo
Para realizar uma viagem primordial fazer o seu planejamento. De onde se
partir e qual o destino? Que meios de transporte sero usados, qual o custo
e tempo que cada um leva? So necessrias novas roupas? Se mais de um
lugar foi visitado no percurso quanto tempo se ficar e o que se visitar em
cada um deles? Onde se ficar em cada lugar, em um hotel, uma pousada ou
um albergue? Tendo-se essas informaes (entre outras) pode-se coloc-las
em papel para estimar o custo total e ver a viabilidade da viagem. Mas se im-
previstos acontecerem? Uma lista de planos alternativos poder evitar muitas
dores de cabea.
Partir de uma receita para se preparar alguma coisa rotina comum
em culinria. Quem escreve tais receitas lista o que necessrio, tanto
em ingredientes quanto em utenslios alm, claro, nas etapas que devem
ser seguidas. Seguir a risca, entretanto, pode s vezes ser invivel por que
algum ingrediente poder no estar disponvel (um alternativo poder ser
usado). A boa receita deve prever as faltas potenciais para sua realizao
e document-las.
Montar um novo equipamento, que acabou de chegar pelos correios
numa grande caixa, pode no ser uma tarefa muito fcil principalmente quan-
do as instrues de montagem no so bem documentadas ou fracamente
ilustradas. Boas instrues vm em passos escritos em blocos separados e
ao lado de gravuras legveis e de fcil compreenso. Em muitos casos o fabri-
cante fornece, para auxiliar seus clientes, uma listagem das ferramentas apro-
priadas (quando necessrias). Bicicletas, mveis e alguns brinquedos ilustram
bem esta situao.
Pessoas que tem pouco tempo a perder precisam de uma agenda (e
s vezes tambm uma secretria) para darem conta de todas as suas obriga-
es. As tarefas ou compromissos so listados por data e hora. Imprevistos
8
Pereira, R. R; Souza, J. T. de; Bezerra, M. J. de
2. Construo de algoritmos
H muitas formas de se representar um algoritmo. As mais comuns so por
texto livre, por fluxogramas e por pseudocdigos. Num algoritmo em tex-
to livre a idia expressa utilizando-se todos os recursos existentes numa
linguagem natural especfica (portugus, ingls, etc.). Um exemplo comum
desta abordagem so as receitas de bolo normalmente apresentadas em dois
pargrafos: aquele com a lista de ingredientes e outro descrevendo a prepara-
10
Pereira, R. R; Souza, J. T. de; Bezerra, M. J. de
Fortaleza
1
Palavras reservadas
Em programao de
computadores, uma Figura 1 -
palavra reservada
uma palavra que, em
algumas linguagens de A construo de algoritmos via pseudocdigos a preferencial deste
programao, no pode
texto. Nesta representao so usados recursos de linguagem natural, mas
ser utilizada como um
identificador por ser com quantidade bastante reduzida de vocbulos e estruturas para melhor as-
reservada para uso da similao. Os vocbulos desta metodologia so divididos em duas categorias:
gramtica da linguagem. de aplicao pr-determinada, chamadas palavras reservadas1 e de definio
Por exemplo, na linguagem
customizada (durante criao do algoritmo), mas com regras pr-estabelecidas.
de programao PASCAL,
um programador no pode Palavras reservadas podem ser comandos ou elementos de estruturas. Os
utilizar uma varivel com comandos so invocaes de tarefas especficas nos algoritmos, por exemplo,
o nome read pois esta um comando de impresso deve imprimir uma mensagem de texto. A invoca-
palavra reservada para
o de um comando conhecida como chamada do comando. Os elementos
a leitura de variveis. Ela
uma "palavra chave", de estruturas associam-se nas estruturas de controle para efetuar decises
e por ser de uso restrito, ou repeties (dependendo do contexto). Importantes comandos e estruturas
tambm uma "palavra de controle sero estudados ao decorrer deste texto.
reservada".
Algoritmos e Programao 11
//bloco de instrues
instruo 1
instruo 2
instruo 3
//bloco 1
instruo 1-1
instruo 1-2
// bloco 2 indentado
instruo 2-1
instruo 2-2
instruo 2-3
instruo 1-3
12
Pereira, R. R; Souza, J. T. de; Bezerra, M. J. de
3. Execuo de algoritmos
Executar um algoritmo significa executar seqencialmente cada uma das li-
nhas que formam o bloco principal onde pode haver dezenas ou mesmo cen-
tenas de linhas. No necessariamente todas as linhas sero processadas.
Podero ocorrer as seguintes possibilidades: (i) algumas linhas podero ser
saltadas; (ii) um grupo de linhas poder ser diversas vezes repetido (iii) um
comando ou mdulo poder ser chamado principiando o processamento de
linhas de outro bloco processamento; (iv) a execuo encerrada porque a
ltima linha foi executada ou porque foi suspenso explicitamente.
O salto e a repetio em algoritmos sero estudados mais adiantes.
Para suspender um algoritmo antes da ltima linha utilizaremos o comando
pare, como segue.
instruo 1
instruo 2
pare
instruo 3
instruo 4
4. Entrada e sada
4.1. Dispositivos de e/s
Dispositivos de entrada e sada, ou simplesmente E/S, so todos e quaisquer
hardwares responsveis pelo fornecimento ou leitura de informaes do/para
o computador. A forma mais tradicional de entrada de dados ainda a alfanu-
mrica e feita atravs de teclados. Devido sua grande importncia, definire-
mos neste texto os teclados como sendo a entrada padro dos programas.
Similarmente a mais tradicional sada de dados visual e ocorre via monitores
(naturalmente associados s placas de vdeo). Definiremos a associao mo-
nitor/placa de vdeo como sendo a sada padro.
leia x
14
Pereira, R. R; Souza, J. T. de; Bezerra, M. J. de
escreva ol mundo!!
Algoritmos e Programao 15
5. Variveis
5.1. A memria principal e as variveis
A memria principal a memria voltil do computador, ou seja, s arma-
zenar alguma informao enquanto corrente eltrica cruzar seus circuitos
(A memria projetada para manter informaes, mesmo com o equipamento
desligado, a memria secundria, como por exemplo, os discos rgidos). Na
memria principal sero colocados os programas para que sejam executados.
Estes por sua vez precisaro de memria adicional para realizar suas tarefas.
Nos computadores modernos muitos programas podem estar em execuo
ao mesmo tempo e assim concorrerem pela mesma memria livre no momen-
to em que suas atividades requererem mais espao.
A problemtica geral sobre o gerenciamento de memria em computa-
dores a seguinte: como impedir que programas distintos no sejam gravados
na mesma rea de memria e ainda, como impedir que eles concorram pela
mesma regio livre de memria no momento em que requerem espao adicio-
nal? De fato esta responsabilidade do sistema operacional atravs do geren-
ciador de memria.
Os projetistas de um sistema operacional devem prever que os progra-
mas, que rodaro sobre ele, faro tais exigncias em relao memria prin-
cipal. Tal delegao de controle da memria ao sistema operacional implica no
seguinte fato: qualquer demanda por memria ser resolvida mediante requisi-
o formal ao sistema operacional mantendo-o sempre no controle da mem-
ria principal. Uma analogia deste comportamento o funcionamento de alguns
espaos para estacionamento de carros: o cliente faz a solicitao formal por
uma vaga entrada do estabelecimento.
O funcionrio na guarita (que trabalha como o gerenciador de memria)
registra a entrada do cliente e marca como usada a vaga que ele preencher.
Quando ele volta e recolhe seu carro, espao liberado e o funcionrio atualiza
o status daquela vaga como livre. Se um cliente qualquer requer uma vaga no
h risco de ser indicado a um lugar j ocupado.
Na memria secundria os dados so gerenciados atravs de blocos de
bytes chamados arquivos que se encontram em diretrios (pastas) estrutura-
16
Pereira, R. R; Souza, J. T. de; Bezerra, M. J. de
das numa grande rvore de diretrios. Essa metodologia transparente aos usu-
rios de computadores os quais contam com as possibilidades de adicionar e re-
mover arquivos e pastas. E na memria principal, como ocorre o gerenciamento?
Cada processo (programa) consiste num conjunto de instrues gravadas numa
parte da memria que foi requisitada ao sistema. O sistema busca por essa me-
mria e a marca como ocupada numa tabela de controle. Quando o processo
se encerra (fim da execuo do programa) seu espao liberado removendo-se
a marca da tabela: esta rea agora est apta ao uso por outros processos.
E quando cada processo requer por memria adicional? Neste caso
instrues do prprio programa fazem a requisio de memria ao sistema
operacional. Os programas devem dizer quanto precisam e o sistema res-
ponde marcando reas livres de memria que assumiro e mantero o status
de ocupadas enquanto estiverem sobre a tutela daquele processo que as re-
quereu. E como os programas gerenciaro internamente cada bloco de me-
mria requisitado? Para tanto existe um mecanismo denominado vinculao:
ele consiste em ligar uma entidade abstrata interna definida no cdigo do
programa (pelo programador) a uma parte finita da memria. Tais entidades
so denominadas variveis do programa e a regio a que so vinculadas de
clulas de memria.
Um programa pode requerer quantas clulas de memria adicional pre-
cisar atravs do uso de variveis. Cada varivel conter seu prprio nome e
seu escopo (este conceito ser abordado mais adiante). Devido ao carter
formal de requisio de memria as variveis precisam ser referenciadas no
programa antes de serem utilizadas. Esse referenciamento denominado de-
clarao de variveis.
Variveis podem ser primitivas ou derivadas. As variveis primitivas tratam
da representao de dados elementares como nmeros e caracteres. Existem
categorias distintas de variveis primitivas as quais se diferenciam basicamente
pelo tipo de dados que se propem a armazenar e pela faixa de representao
destes dados. Variveis derivadas (como os vetores) so aquelas constitudas por
mais de um elemento primitivo e sero estudadas mais adiante.
b) Tipo caractere
meira coluna. Com 1-byte, por exemplo, tem-se 8-bits e logo nmeros entre 0
e 255: assim com 1-byte 256 caracteres distintos podem ser representados.
Uma das mais comuns tabelas de caracteres utiliza 7-bits e denomina-se
ASCII (American Standard Code for Information Interchange, que em portugus
significa "Cdigo Padro Americano para o Intercmbio de Informao). Este
padro tem uso difundido em todo o mundo e aceito praticamente por todos
os softwares de edio de texto. Neste texto os algoritmos tomaro seus carac-
teres do padro ASCII. A representao em pseudocdigo ora aparecer como
nmero (que neste caso est na faixa 0 a 27-1, ou seja, 0 a 127) ora aparecer
como o caractere propriamente dito (grafema). Neste ltimo caso os grafemas
correspondentes sero escritos sempre entre aspas simples ( ). A seguir ilus-
tramos parcialmente a tabela ASCII fazendo pares do valor numrico com o
caractere (entre aspas simples) equivalente:
c) Tipo lgico
Uma varivel lgica quando ela possui apenas dois valores possveis: gene-
ricamente Verdadeiro e Falso, ou ainda 0 e 1. Tais notaes provm da lge-
bra booleana e por essa razo este tipo de dados comumente denominado
tambm tipo booleano.
Em termos de memria 1-bit seria necessrio para representar variveis
lgicas. Entretanto o que se v na prtica o uso de 1-byte. Isso se deve ao
modelo de endereamento das mquinas modernas efetuado byte a byte (o
endereamento bit a bit seria custoso e ineficiente). O uso de um byte comple-
to por booleanos resolvido da seguinte forma: uma varivel lgica ser Falsa
se todos os oito bits forem zeros, do contrrio ser Verdadeira.
Em algumas linguagens de programao h uma relao direta entre
variveis inteiras de 1-byte e variveis lgicas. Se x uma varivel lgica, por
exemplo, ao receber um valor inteiro, caso seja nulo (todos os bits iguais a 0)
ento a x ser atribudo de fato o valor Falso; caso contrrio a x ser atribudo
Verdadeiro. Analogicamente se y inteiro e a y atribudo Falso, tal varivel
receber 0; do contrrio se a y for atribudo Verdadeiro, tal varivel receber 1.
declare
i: inteiro
x, y: real
b: lgico
c: caractere
//instrues do bloco de cdigo
declare
alpha, beta: inteiro
dia _ de _ sol: lgico
x200, y _ 90, hx: real
ch _ base _ 5: caractere
declare
x: inteiro
leia x
escreva valor fornecido =, x
declare
x, y: inteiro
leia x, y
escreva A soma vale =, x+y
leia x
leia y
declare
n: inteiro
leia n
escreva n, ao quadrado vale , n*n
Neste pseudocdigo o comando escreva concatena o valor de n, uma
mensagem de texto e o valor da expresso, n*n (produto de n por n). Um
exemplo de execuo segue:
6 <ENTER>
6 ao quadrado vale 36
Saiba Mais
O link do light-bot traz um jogo muito interessante para o incio da aprendizagem em
programao. O nome do jogo Light-bot o qual consiste de um rob capaz de executar
tarefas (sequncia de passos) com o objetivo de chegar ao quadrado azul e acend-lo.
Ao carregar a pgina do jogo, voc deve clicar em play e logo em seguida clicar em new
game para iniciar. Vamos l ! Voc ver que a prtica aliada aos algoritmos que voc de-
senvolver para chegar ao quadrado azul o ajudaro na aprendizagem de programao.
24
Pereira, R. R; Souza, J. T. de; Bezerra, M. J. de
Sntese do captulo
Neste captulo foi apresentado o conceito de algoritmo e suas formas bsi-
cas de representao: texto, fluxograma e pseudocdigo. Mostra tambm as
possibilidades de execuo que um algoritmo pode ter. Lembrando que as
mesmas devem seguir uma sequncia, mas que nem sempre todas podem
ser processadas. Outros fatores importantes para algoritmos so: entrada e
sada. O conceito de varivel e os tipos podem ser: inteiro, real, caractere e
booleano. A primeira parte do programa a declarativa, a qual define os tipos
de variveis tambm contemplaram este captulo.
Atividades de avaliao
1. Definir algoritmo utilizando suas prprias palavras.
2. Formule em forma de fluxograma trs algoritmos que descrevem tarefas
de seu dia-a-dia.
3. Discutir sintaxe e semntica em uma metodologia de construo de algo-
ritmos.
4. O que so pseudocdigos e que aspectos de sintaxe esto envolvidos?
5. Qual a importncia da indentao na construo de pseudocdigos?
6. Outras metodologias de construo de algoritmos utilizam blocos do tipo
incio-fim para promover o encapsulamento de cdigo. Pesquise e res-
ponda por que a indentao neste caso no necessria e qual o papel
dela quando utilizada.
7. Pesquise e responda: qual a diferena entre uma instruo de cdigo e
uma instruo de mquina?
8. Conceituar entrada e sada padro e discutir as questes de simplificao
de hardware associadas a elas.
9. Quais as principais diferenas entre o gerenciamento de memria secun-
dria e primria?
10. Que so variveis e qual a relao entre elas, a memria principal e o
sistema operacional?
11. Quais so e o que representam os tipos primitivos de variveis?
12. Construir pequeno algoritmo que leia trs valores da entrada padro reais
e escreva na sada padro a mdia aritmtica entre eles.
Algoritmos e Programao 25
http://equipe.nce.ufrj.br/adriano/c/apostila/algoritmos.htm
http://armorgames.com/play/2205/light-bot
Referncias
SEBESTA, Robert W. Concepts of Languagues Programming. 8th
edition. University of Colorado. Addison-Wesley 2007. 752p. ISBN-10:
032149362.
FERNANDEZ, M; Corts, M. Introduo Computao. 1 Edio. Forta-
leza. RDS Editora, 2009.
Captulo 2
Elementos construtivos
Algoritmos e Programao 29
Objetivos
Apresentar os elementos essenciais para a construo de algoritmos.
1. Operadores
Variveis so vinculaes com a memria real do computador e funcionam
como meros armazenadores temporrios de informao digital. Entretanto,
para a construo de algoritmos funcionais, deve ser possvel tambm operar
entre si tais variveis. Operar neste contexto pode significar tanto alterar o
contedo de uma varivel quanto associar duas ou mais destas numa ex-
presso vlida para se obter um novo valor (por exemplo, x+y envolve duas
variveis numa operao de soma cujo resultado um novo valor).
Operadores so objetos de construo de algoritmos, de simbologia
prpria e semntica bem definida, destinados s operaes com ou entre va-
riveis. Por exemplo, na expresso, a+b, o smbolo + um operador e sua
semntica a execuo da soma entre os valores nas variveis a e b.
Operadores podem ser unrios ou binrios, ou seja, podem ou operar um
ou dois operandos respectivamente. O exemplo mais comum de operador unrio
o de mudana de sinal. A sintaxe -x, onde o sinal de menos o operador, x
a varivel e o valor retornado o valor na varivel (numrica) com sinal invertido.
Outro exemplo de operador unrio valor absoluto. A sintaxe |x|, onde
as duas barras verticais representam o operador, x a varivel e o valor re-
tornado o mdulo do valor na varivel (numrica). Operadores aritmticos
so exemplos de operadores binrios. Na expresso, a*b, o asterisco denota
um operador binrio operando as variveis a e b e cuja semntica a mul-
tiplicao numrica. Nesta expresso o valor retornando o produto entre o
contedo existente nessas variveis.
Operadores podem ser infixos, prfixos ou psfixos. Esta classificao
refere-se posio relativa dos operadores nas expresses em que aparecem.
Por exemplo, em, a+b, o operador de adio, +, infixo, ou seja, disposto entre
seus operandos. Na expresso de mudana de sinal, -a, o operador pr-fixo, ou
seja, disposto antes do operando. Na expresso de clculo de um fatorial, x!, o
operador ps-fixo, ou seja, disposto depois do operando. Usualmente a maioria
dos operadores binrios usada infixamente e dos unrios pr-fixamente.
30
Pereira, R. R; Souza, J. T. de; Bezerra, M. J. de
2
Notao Polonesa H situaes em que operadores tradicionalmente infixos so utilizados
Inversa, tambm como pr ou ps-fixao. Em notao polonesa2 inversa (PEREIRA; 2006),
conhecida como notao
ps-fixada, foi inventada
por exemplo, a expresso, AB+, legal e denota a soma das variveis A e B
pelo filsofo e cientista da com operador de adio ps-fixado. Esta notao conveniente aos com-
computao australiano putadores no que diz respeito a avaliao de expresses (teis no projeto de
Charles Hamblin em compiladores, por exemplo).
meados dos anos 1950.
Ela deriva da notao Operadores so funes, ou seja, ao invs da notao apresentada at
polonesa cujos operadores ento uma dada operao pode ser expressa utilizando uma funo nome-
so prefixos dos ada com seus operandos entre parnteses e separados por vrgula. Assim,
operandos. Como exemplo
a expresso, A+B, escrita
por exemplo, a expresso, SOMA(A, B), tem exatamente o mesmo efeito de,
como +AB. A notao A+B. Na notao funcional o smbolo + substitudo pela funo SOMA().
polonesa foi introduzida Em outras sintaxes propostas para algoritmos, ou mesmo em lingua-
em 1920 pelo matemtico
polons Jan ukasiewicz.
gens de programao, operadores so introduzidos apenas pela notao fun-
(Da o nome sugerido de cional. Se um operador no possui smbolo que permita prefixao, in-fixao
notao Zciweisakul). ou ps-fixao, ento a notao funcional nica opo. Exemplos: logarit-
mo natural LN(), funo exponencial EXP(), funes trigonomtricas (SEN(),
COS() e etc.) entre outras.
1.1. A atribuio
O operador de atribuio o elemento de construo de algoritmos que
expressa mais genuinamente a essncia da mquina de von Neuman3
3
A Arquitetura de von (FERNANDEZ; 2009). Este operador o responsvel pela modificao do
Neuman (de John contedo das clulas de memria (variveis) alocadas. Cada atribuio cor-
von Neuman), uma responde a uma ao da CPU que envia dados de seus registradores para
arquitetura de computador
que se caracteriza pela
uma clula de memria alvo e cujo valor s se modificar novamente por
possibilidade de uma outra atribuio.
mquina digital armazenar Atribuies podem ser explcitas ou implcitas. Numa atribuio ex-
seus programas no mesmo
plcita o operador utilizado para indicar que o lado direito da expresso
espao de memria que
os dados, podendo assim alvo do lado esquerdo, ou seja, uma varivel do lado esquerdo ter seu valor
manipular tais programas. modificado para o valor avaliado no lado direito. Veja o exemplo a seguir.
A mquina proposta por
Von Neumann rene os declare
seguintes componentes: a: inteiro
(i) uma memria, (ii) uma x, y: real
unidade aritmtica e lgica
(ULA), (iii) uma unidade c: caractere
central de processamento a120
(UCP), composta por x3.253
diversos registradores,
ya+x+23
e (iv) uma Unidade de
Controle (UC). cw
escreva b, y, c
Algoritmos e Programao 31
declare
a, b: lgico
aV
bF
xx+y
34 <ENTER>
Resposta: 44
declare
ch: caractere
ch tecla
escreva tecla pressionada: , ch
Operadores Nomes
= Igual a
> Maior que
< Menor que
Maior ou igual a
Menor ou igual a
Diferente de
A B AB AB AB
F F F F F
F V F V V
V F F V V
V V V V F
2. Expresses
Expresses podem ser constitudas pela associao de diversas variveis de
tipos no necessariamente compatveis, mas que se arranjem de forma lgica e
avalivel. Uma vez definidas tais expresses, a avaliao implica num processo
sistemtico que finaliza num valor final cujo tipo depender da expresso.
Por exemplo, na expresso, x+1 > y-p*p, resolvem-se primeiramente as
expresses aritmticas em cada lado do operador relacional para depois fazer
a comparao que resultar num valor lgico. Este procedimento de escolha
de quem operar primeiro numa expresso segue na verdade dois conjuntos
de regras de operadores. So eles o de precedncia de operadores e de
associatividade de operadores. Os analisaremos a seguir.
(maior precedncia)
(menor precedncia)
A+B-C
<nmero>+<nmero>-<nmero>
<nmero>+<nmero>
<nmero>
Algoritmos e Programao 37
A>B>C
<nmero> > <nmero> > <nmero>
<nmero> > <lgico> //inconsistncia! No pode continuar
3. Estruturas de controle
Existem dois mecanismos construtivos que qualquer mtodo de elaborao
de algoritmos deve possuir: deciso e repetio. O conjunto de componentes
de cdigo que se associam para representar um processo de deciso ou de
repetio denominado estrutura de controle. Sem tais estruturas no seria
possvel a construo de algoritmos.
3.1. Deciso
Um processo de deciso consiste na escolha entre dois ou mais blocos de
pseudocdigo para execuo. Apenas um, entre os blocos existentes, sele-
cionado e assim tem seu contedo executado.
Uma deciso o resultado da avaliao de uma expresso booleana.
Adiante so estudados diferentes tipos de estruturas de deciso.
a) Deciso unidirecional
se (...) ento
...
Algoritmos e Programao 39
declare
x: inteiro
leia x
se (x>0) ento
escreva x
escreva o valor positivo!
Outro exemplo:
declare
a: inteiro
leia a
se (a mod 2 = 0) ento
escreva o nmero par
escreva fim da execuo!
b) Deciso bidirecional
se (...) ento
...
seno
...
declare
num, x: inteiro
leia num
se (num mod 2 = 0) ento
x num div 2
escreva x
seno
x (num+1) div 2
escreva x + 1
Outro exemplo:
declare
n: inteiro
leia n
se (n mod 2 = 0) ento
escreva nmero par!
seno
escreva nmero mpar!
declare
a, b, c: inteiro
leia a, b, c
se (a<b+c b<a+c c<a+b) ento
escreva O trimgulo existe!
seno
escreva O tringulo no existe!
a<b+c a>abs(b-c)
c) Deciso mltipla
declare
n: inteiro
leia n
caso (n) seja
1: escreva Ol mundo!
2: escreva Hello world!
3: escreva Hallo Welt!
seno
escreva Opo invlida!!
declare
ch: caractere
raio, base, altura, lado: inteiro
escreva pressione: C para cculo, T para tringulo, Q para
quadrado
ch tecla
caso ch seja
C: escreva Valor do raio:
leia raio
escreva rea = , 3.14159235*raio*raio
T: escreva Valores da base e da altura:
leia base, altura
escreva rea = , base*altura/2
Q: escreva Valor do lado:
leia lado
escreva rea = , lado*lado
seno
escreva Opo invlida!!
declare
op: caractere
x, y: inteiro
escreva fornecer valores:
leia x, y
escreva forcecer opo : + - * /
op tecla
caso op seja
+: escreva Soma: , x+y
-: escreva Subtrao: , x-y
*: escreva Multiplicao: , x*y
/: se (b0) ento
escreva x/y
seno
escreva diviso por zero!
seno escreva Opo invlida!!
se (...) ento
// bloco
se (...) ento
// bloco
seno
se (...) ento
// bloco
seno
se (...) ento
// bloco
seno
// bloco
Estudo de Caso IMC: A sigla IMC significa ndice de massa corprea. Trata-
se de um nmero calculado pela razo entre o peso em kg (na verdade a
massa!) e o quadrado da altura (em metros) de uma pessoa. O IMC determina
se esta pessoa est em um dos estados seguintes: magra (o IMC menor que
20), gorda (o IMC maior que 25) ou em bom peso (o IMC est no intervalo
fechado de 20 a 25). O pseudocdigo seguinte resolve o problema do IMC:
declare
peso, altura, imc: real
escreva Fornecer peso e altura:
leia peso, altura
imc peso /(altura*altura)
se (imc<20) ento
escreva Voc est magro!
seno
se (imc>25) ento
escreva Voc est gordo!
seno
escreva Voc est num bom peso!
declare
A, B, C, menor: inteiro
leia A, B, C
se (A<B A<C) ento
menor A
seno
se (B<C) ento
menor B
seno
menor C
escreva Menor valor = , menor
declare
a, b, c, delta, x0, x1: real
escreva Fornea coeficientes da equao:
leia a, b, c
se (a0) ento
delta b*b 4*a*c
se (delta0) ento
x0 (-b + raiz(delta))/(2*a)
x1 (-b - raiz(delta))/(2*a)
escreva Razes: , x0, x1
seno
escreva Razes Complexas!
seno
escreva A equao no de segundo grau!
declare
a, b, c: inteiro
leia a, b, c
se (a<b+c b<a+c c<a+b) ento
se (a=b a=c) ento
escreva Eqiltero!
seno
se (a=b a=c b=c) ento
escreva Issceles!
seno
escreva Escaleno!
seno
escreva O tringulo no existe!
3.3. Repetio
As estruturas de deciso permitem a modelagem de apenas parte dos pro-
blemas resolvidos por algoritmos. As estruturas de controle de repetio es-
tendem largamente esta capacidade de modelagem. Elas fornecem meios de
repetio de execuo de blocos de cdigos especficos. A associao entre
capacidades de deciso e repetio constitui prtica comum na construo
de algoritmos.
Uma estrutura de controle de repetio encapsula apenas um bloco de
cdigo e o repete mediante um critrio que notavelmente muda durante o pro-
cesso (Naturalmente este bloco pode conter internamente outros blocos com
nvel de indentao acima e que tambm tero execuo repetida). Cada re-
50
Pereira, R. R; Souza, J. T. de; Bezerra, M. J. de
declare
i: inteiro
para i 1 at 100 faa
escreva i
declare
i, x: inteiro
para i 1 at 50 faa
x 2*i
escreva x
Algoritmos e Programao 51
declare
i: inteiro
para i 2, 100, 2 faa
escreva i
declare
i: inteiro
para i 7, 30, 3 faa
escreva i,
7 10 13 16 19 22 25 28
52
Pereira, R. R; Souza, J. T. de; Bezerra, M. J. de
declare
i: inteiro
para i 20, 0, -1 faa
escreva i,
declare
n, i, fat: inteiro
leia n
fat 1
para i 1 at n faa
fat fat*i
escreva fat
declare
i, b, e, pot: inteiro
leia b, e
pot 1
para i 1 at e faa
pot pot*b
escreva pot
declare
n, cnt: inteiro
cnt 0
para n 1 at 1000000 faa
se (n mod 7 = 0 n mod 3 0) ento
cnt cnt + 1
escreva Total: , cnt
declare
n, cnt: inteiro
cnt 0
para n 0, 1000000, 7 faa
se (n mod 3 0) ento
cnt cnt + 1
escreva Total: , cnt
Neste algoritmo o lao possui passo igual a 7 e limite inferior igual a 0. Isso
faz com que o contador assuma apenas valores divisveis por 7 e obviamente
reduza o nmero de iteraes a um stimo do total no algoritmo anterior. Como
o valor do contador j divisvel por 7 em todas as iteraes, ento o aumento
do valor em cnt fica condicionado apenas a no divisibilidade do valor em n por
3. Por essa razo a expresso booleana se reduz a um nico teste relacional.
declare
x: inteiro
x 0
enquanto (x<20) faa
escreva x,
x x + 2
0 2 4 6 8 10 12 14 16 18
2 4 6 8 10 12 14 16 18 20
repita
<bloco>
at <expresso booleana>
declare
x: inteiro
x 0
repita
escreva x,
x x + 2
at (x>20)
0 2 4 6 8 10 12 14 16 18 20
c) Aninhamento de laos
declare
i, j: inteiro
para i 1 at 10 faa
para j 1 at 10 faa
escreva i+j
Os limites dos contadores dos laos podem ser expressos como fun-
o de qualquer varivel inteira do programa (exceto o prprio contador). Isso
inclui tambm os contadores de laos hierarquicamente acima em um dado
aninhamento. Veja o exemplo:
declare
i, j, cnt: inteiro
cnt 0
para i 1 at 10 faa
para j i at 10 faa
cnt cnt + 1
escreva cnt
Valor de i 1 2 3 4 5 6 7 8 9 10
Nmero de iteraes do segundo lao 10 9 8 7 6 5 4 3 2 1
declare
ch: caractere
enquanto (V) faa
ch tecla
caso (ch) seja
x: escreva ol mundo!!
y: escreva hello world!
z: escreva hallo Welt!!
seno pare
declare
n, d: inteiro
b: lgico
pata n 2 at 5000 faa
b V
d 2
enquanto (d*d n) faa
se (n mod d = 0) ento
b F
pare
d d+1
se (b) ento
escreva n,
Sntese do captulo
Neste captulo foram apresentados elementos essenciais para a construo de
algoritmos. Os operadores so objetos de semntica bem definida e que so clas-
sificados como: lgicos, relacionais e aritmticos. Em seguida, abordamos ele-
mentos construtivos: estruturas de deciso e de repetio que so fundamentais
para a construo de algoritmos. Finalizando, ilustramos seis estudos de casos
que utilizam todos os elementos abordados no captulo.
Contamos que voc
j esteja fera no jogo
sugerido no final do
captulo 1 e que agora com
os conceitos aprendidos
neste captulo voc Atividades de avaliao
consiga progredir e utilizar
as estruturas de deciso e 1. Faa um algoritmo para calcular o quadrado de um nmero.
repetio abordadas aqui.
2. Faa um algoritmo para calcular a mdia das notas de uma turma de 20
alunos.
3. Construir um algoritmo que receba trs valores inteiros quaisquer e os
imprima em ordem crescente.
4. Faa um algoritmo para calcular o fatorial de um nmero N inteiro dado.
5. Faa um algoritmo que, dados nmeros de zero at um mximo, mostre a
soma de todos os no-primos, subtrada da soma dos primos.
6. Faa um algoritmo que determine se um nmero divisvel ou no por outro.
7. Construir algoritmos para o calculo do nmero de dgitos dos valores: (a)
100! (b) 21000
8. Considere uma moeda que contenha cdulas de 50,00, 10,00, 5,00 e
1,00. Considere ainda que caixas eletrnicos de um banco operem com
todos os tipos de notas disponveis, mantendo um estoque de cdulas
para cada valor. Os clientes deste banco utilizam os caixas eletrnicos
para efetuar retiradas de uma certa quantia. Escreva um algoritmo
que, dado o valor da retirada desejada pelo cliente, determine o n-
mero de cada uma das notas necessrio para totalizar esse valor, de
modo a minimizar a quantidade de cdulas entregues.
9. Faa um algoritmo para calcular a soma de todos os nmeros inteiros
menores que 100 e que no sejam divisveis por 3.
10. O reverso de um nmero natural o novo nmero obtido pela inverso de
seus dgitos, ex: o reverso de 127 721. Escreva algoritmo que receba
um nmero natural e escreva seu reverso.
Algoritmos e Programao 61
http://armorgames.com/play/2205/light-bot
Referncias
PEREIRA, SILVIO DO LAGO. Estruturas de Dados Fundamentais: Con-
ceitos e Aplicaes. 9 Edio. Editora rica 2006. ISBN: 8571943702 .
FERNANDEZ, M; Corts, M. Introduo Computao. 1 Edio. Forta-
leza. RDS Editora, 2009.
Captulo 3
Variveis indexadas
Algoritmos e Programao 65
Objetivos
Apresentar a estrutura matriz, a qual utilizada para manipulao
de variveis com capacidade de armazenar na memria mais de um
valor ao mesmo tempo. Para manipular as variveis utiliza-se o me-
canismo de indexao.
1. Matrizes
1.1. Introduo a matrizes e vetores
Uma varivel escalar uma entidade abstrata que se refere a uma clula de
memria e que possui um tipo relacionado, uma faixa restrita de representa-
o e a capacidade de armazenar um nico valor. H, entretanto, a possibi-
lidade de definir variveis com capacidade de guardar mais de um valor ao
mesmo tempo. Tais variveis so denominadas matrizes.
Naturalmente os valores armazenados por matrizes no compartilham
a mesma clula de memria: de fato mais de uma clula estar presente na
definio de matrizes. Cada uma destas clulas funciona como uma varivel
escalar independente o que faz das matrizes aglomerados de variveis esca-
lares. Todas essas variveis constituintes so do mesmo tipo de forma que po-
demos ter, por exemplo, matrizes de inteiros, lgicos ou de reais, mas nunca
a mistura deles. Denomina-se tipo base o tipo de dados comum a todos os
aglomerados da matriz.
Uma varivel matriz, assim como todas as demais, possui apenas um
nome. Ento como manipular cada uma das variveis escalares (clulas) que
a constitui? O mecanismo para se referenciar cada uma das clulas de uma
matriz denominado indexao. Assim, por exemplo, se M uma matriz dos
primeiros dez mpares ento M[1] = 1, M[2] = 3, M[3] = 5 e assim por diante:
aqui os colchetes retratam hospedeiros dos ndices que neste caso vo de um
a dez acessando independentemente cada valor em M. O vetor M ainda pode
ser descrito desta forma: M[k]=2k-1, com o ndice k no intervalo {1..10}.
Matrizes podem contar com um ou mais ndices. Cada ndice de uma ma-
triz est associado a uma dimenso da matriz. Assim matrizes unidimensionais
precisam de um ndice, bidimensionais de dois e assim por diante. As matrizes na
matemtica se confundem com as matrizes bidimensionais aqui descritas.
66
Pereira, R. R; Souza, J. T. de; Bezerra, M. J. de
|12 -7 14|
|1 -9 -5|
|11 78 25|
Algoritmos e Programao 67
12 7 14 1 9 5 11 78 25
declare
<varivel>[comprimento]: <tipo>
Segue um exemplo:
declare
M[20], i: inteiro
para i 1 at 20 faa
M[i] i*i
declare
M[10], i, imax: inteiro
para i 1 at 10 faa
leia M[i]
imax 1
para i 2 at 10 faa
se (M[i] > M[imax]) ento
imax i
escreva M[imax]
declare
<varivel _ 1>[c1]: <tipo>
//...
<varivel _ 1> {<valo1 _ 1>, <valo1 _ 2>, <valo1 _ 3>,..., <valo1 _
c1>}
//...
Algoritmos e Programao 69
Um exemplo de aplicao:
declare
M[10], i, imax: inteiro
M {12, -9, 33, 8, -23, 17, 6, -5, 31, 2}
imax 1
para i 2 at 10 faa
se (M[i] > M[imax]) ento
imax i
escreva M[imax]
declare
M[10], i, j, t, x: inteiro
M {-12, 9, 30, 18, 13, 7, -6, 5, 31, 1}
//Ordenao por seleo:
para i 1 at 9 faa
t i
para j i+1 at 10 faa
se (M[j] < M[t]) ento
t j
x M[t]
M[t] M[i]
M[i] x
// Impresso:
para i 1 at 10 faa
escreva M[i]
-12 -6 1 5 7 9 13 18 30 31
declare
S[10]: caractere
S {a, , c, a, s, a, }
declare
S[10]: caractere
S a casa
Neste caso no aparece explicitamente o nulo, mas convencionamos
que a inicializao por esta forma efetua automaticamente sua insero.
Exclusivamente para as cadeias de caracteres, os comandos leia e es-
creva funcionam anlogos s suas verses para variveis escalares. Exemplo:
declare
S[100]: caractere
leia S
escreva S
Algoritmos e Programao 73
declare
S[100]: caractere
S ol mundo!
escreva S
declare
S[100]: caractere
i: inteiro
leia S
i 1
enquanto (S[i] ) faa
escreva S[i]
i i + 1
declare
S[100]: caractere
t, i: inteiro
leia S
t 0
enquanto (S[t+1] ) faa
t t+1
para i t, 1, -1 faa
escreva S[i]
declare
<vetor>[]: <tipo base>
Algoritmos e Programao 75
declare
X[]: inteiro
VET[]: inteiro
alocar <vetor>[<comprimento>]
...
limpar <vetor>
declare
X[], n, i: inteiro
leia n
alocar X[n]
para i 1 at n faa
X[i] 2*i-1
limpar X
declare // PARTE IV
Q[], t, n, i, j: inteiro b V
b: lgico para i 1 at t-1 faa
leia n para j i+1 at t faa
// PARTE I se (Q[i] = Q[j]) ento
t 0 b F
j n pare
enquanto (j>0) faa se ( b) ento
t t + 1 pare
j j div 10 // PARTE V
// PARTE II se (b) ento
alocar Q[t] escreva o nmero
// PARTE III pandigital!
j n seno
declare
H[], B[17]: caractere
t, n: inteiro
b: lgico
// PARTE I
B 0123456789ABCDEF
leia n
// PARTE II
t 0
j n
enquanto (j>0) faa
t t + 1
j j div 16
fim
// PARTE III
alocar H[t+1]
H[t+1]
// PARTE IV
j t
enquanto (n>0) faa
H[j] B[ 1 + (n mod 16) ]
n n div 16
j j - 1
// PARTE V
escreva H
limpar H
declare
<varivel>[comprimento _ 1, comprimento _ 2,...,comprimento _ n]:
<tipo>
Segue um exemplo:
declare
X[3,3]: real
i, j: inteiro
para i 1 at 3 faa
para j 1 at 3 faa
leia X[i, j]
No exemplo acima uma matriz quadrada de ordem 3 definida e lida
com o auxlio de dois laos aninhados. O comando leia executado exatamen-
te um total de nove vezes.
Para criar uma matriz dinmica adotaremos a seguinte sinttica: a decla-
rao ser idntica a de um vetor dinmico, entretanto no momento da alocao
sero especificados os comprimentos das dimenses separados por vrgulas.
O uso dessas matrizes idntico ao de uma esttica. Veja o exemplo:
80
Pereira, R. R; Souza, J. T. de; Bezerra, M. J. de
declare
W[], n, i, j: integer
leia n
alocar W[n,n]
para i 1 at n faa
para j 1 at n faa
leia W[i, j]
limpar W
declare
VET[], m, n, i, j: integer
leia m, n
alocar VET[m,n]
para i 1 at m faa
para j 1 at n faa
VET[i,j] i*j
para i 1 at m*n faa
escreva VET[i]
limpar VET
3 2 <ENTER>
1 2 2 4 3 6
Algoritmos e Programao 81
Sntese do captulo
Neste captulo foi apresentada a estrutura de matriz a qual utilizada para
manipulao de variveis com capacidade de armazenar na memria mais de
um valor ao mesmo tempo. Matrizes unidimensionais so comumente deno-
minadas de vetores. Os vetores representam a forma de matriz mais comu-
mente empregada em algoritmos.
Atividades de avaliao
1. Construa algoritmo que receba um vetor de inteiros e imprima como
sada o maior e o menor valor contidos nele.
2. Construa algoritmo que busque num vetor os dois maiores valores contidos.
3. Construa um algoritmo que receba um vetor de comprimento conheci-
do e altere seus valores de forma a ficarem em ordem inversa.
4. Construir algoritmo que carregue em um vetor de comprimento n os primei-
ros n valores primos.
5. Rotao o procedimento de deslocamento dos itens de um vetor
para casas vizinhas. Numa rotao a direita todos os itens migram
para posies logo a frente, exceto o ltimo que vai para a posio
1, ex: se v = {1,2,3,4}, uma rotao a direita modifica v para {4,1,2,3}.
De forma anloga uma rotao a esquerda de v geraria {2,3,4,1}.
Construir algoritmos para os dois processos de rotao.
6. Construa um algoritmo que calcule a mdia dos nmeros menores que
5000 que sejam divisveis por 7 mas no sejam divisveis por 3.
7. Construa um algoritmo que receba uma lista de nmeros inteiros e
rearranje seus elementos de forma a ficarem em ordem crescente
8. Uma cadeia de caracteres dito palndromo se a seqncia dos caracteres
da cadeia de esquerda para direita igual seqncia de caracteres da
direita para esquerda. Exemplos: ARARA, RADAR, AKASAKA, ANA. Faa
um algoritmo que reconhea se uma cadeia de caracteres palndromo.
9. O nmero 585 palndromo nas bases 10 e base 2 (1001001001). Construir
algoritmo que determine a soma de todos os nmeros com esta proprie-
dade que sejam menores que um milho.
82
Pereira, R. R; Souza, J. T. de; Bezerra, M. J. de
http://www.academicearth.org/lectures/array
http://www.academicearth.org/lectures/multi-dimensional-arrays
Referncias
SEBESTA, Robert W. Concepts of Languagues Programming. 8th
edition. University of Colorado. Addison-Wesley 2007. 752p. ISBN-10:
032149362.
Captulo 4
Programao modular
Algoritmos e Programao 85
Objetivos
Apresentar o conceito de programao modular, isto , como dividir
um programa em subprogramas.
1. Modularizao
1.1. O que modularizar?
H dois importantes nveis de abstrao em computao: abstrao de dados
e abstrao de processos. A abstrao de dados explora como diferentes ti-
pos de informaes podem ser representados e ainda quais as restries de
operabilidade entre eles. A abstrao de processos trata da simplificao do
processo de execuo de uma dada aplicao pela diviso deste em partes
menores (sub-processos) que podem ser testadas separadamente.
A modularizao est estreitamente ligada abstrao de processos.
Modularizar significa dividir um programa em subprogramas cujos funciona-
mentos podem ser testados separadamente. Os subprogramas so nada
mais que abstraes com alguma sintaxe adicional (em nvel de cdigo).
<nome _ da _ funo> (<arg _ 1>: <tipo _ 1>, <arg _ 2>: <tipo _ 2>,
..., <arg _ n>: <tipo _ n>)
//declarao de variveis da funo
//instrues da funo
86
Pereira, R. R; Souza, J. T. de; Bezerra, M. J. de
Para que seja executada, uma funo precisa ser chamada. Uma cha-
mada de funo realizada pela invocao de seu nome juntamente com va-
lores para seus parmetros. Para executar uma dada funo secundria, ela
deve ser chamada de dentro da funo principal ou ento de dentro de outra
funo secundria. Cada funo de um algoritmo deve ser chamada pelo me-
nos uma vez em algum lugar daquele algoritmo. Se uma dada funo nunca
chamada ela pode ser removida do projeto. A execuo de uma aplicao
nada mais que a execuo de sua funo principal.
Quando uma aplicao inicia sua execuo diz-se que a funo princi-
pal recebe o controle de fluxo ou simplesmente que recebe o controle. Se a
funo principal chama uma funo secundria ento esta funo receber o
controle do fluxo enquanto estiver executando e o devolver a funo principal
quando sua execuo se encerrar.
De modo geral quando uma funo A, seja ela principal ou no, chama
outra funo B ocorre repassagem provisria do controle de fluxo de A para B
e depois seu retorno para A quando B se encerra. Sistematicamente o controle
migra de funo para funo durante toda execuo. Em algum momento cada
uma das funes do projeto manter o controle. Se uma mesma funo for
chamada vrias vezes ela manter o controle em momentos diferentes. Apenas
uma, entre as vrias funes, se existirem, ter o controle durante a execuo
da aplicao. (Uma aplicao dever conter pelo menos a funo principal).
Algoritmos e Programao 87
principal()
declare
a, b, c: inteiro
leia a, b
c soma(a,b)
escreva c
principal()
declare
k: inteiro
para k 1 at 200 faa
se ( e _ primo(k) ) ento
escreva k
principal ()
print _ primos(100)
func _ 1 ()
declare
x: inteiro
x 100
func _ 2 ()
escreva x // erro: x no foi definido neste escopo
90
Pereira, R. R; Souza, J. T. de; Bezerra, M. J. de
func _ 1 ()
declarar
x: inteiro
y: booleano
// corpo da funo func _ 1()
func _ 2 ()
declarar
x: real
y: booleano
// corpo da funo func _ 2()
declare
x: inteiro
proc ()
escrever x
principal()
x 23
proc()
declare
x: inteiro
proc ()
declare
x: inteiro
x 23
principal()
x 35
proc()
escreva x
principal()
declare
j: inteiro
j 5
inc(j)
escreva j // deve imprimir 6
inc(k: inteiro)
k k + 1
Caso esta funo seja utilizada o valor impresso na sada padro ser 5
e no 6 simplesmente por que quem incremente em uma unidade k e no j.
Como k e j no se relacionam a funo no se comporta como desejado.
Para resolver o problema apresentamos outro modelo de passagem de
argumento conhecido como passagem por referncia. Uma referncia por
definio um apelido de varivel que pode ser manipulada como se fosse
a prpria varivel que ela apelidou. Por exemplo, se r uma referncia da
varivel x ento uma atribuio a r ser de fato uma atribuio para x. Na pas-
sagem por referncia alguns ou todos os argumentos formais de uma funo
so transformados em referncias: assim quando os argumentos reais so
repassados no ocorre cpia alguma e sim a definio de apelidos em outro
escopo! Uma vez de posse de tais referncias a funo pode mudar variveis
fora de seu escopo.
Algoritmos e Programao 93
inc(ref k: inteiro)
k k + 1
principal()
declare
j: inteiro
j 5
inc(j)
escreva j
Nesta nova verso k deixa de ser uma varivel de tipo inteiro e torna-se
uma referncia para valor inteiro. Assim quando j repassado como argu-
mento, ento k torna-se provisoriamente uma referncia para ele. A adio de
uma unidade referencia k na funo inc() afeta de fato a varivel j. O valor
impresso na funo principal ento 6.
ndig(num: inteiro)
declare
s: inteiro
s 0
enquanto (num>0) faa
s s + 1
num num div 10
retorne s
principal()
declare
cnt, Q[], t, n: inteiro
cnt 0
para n 0 at 1000000 faa
alocar Q[ ndig(n) ]
carregar(Q, n)
se ( e _ pandig(Q) ) ento
cnt cnt + 1
limpar Q
escreva cnt
1.6. Recursividade
Recursividade a tcnica que permite a uma funo (ou procedimento) fazer,
no corpo de seu cdigo, uma chamada a si prpria. Para ilustrar a recursivi-
dade apresentamos a seguir duas verses de funes para clculo de fatorial:
uma no-recursiva (iterativa) e outra recursiva.
//verso iterativa
fat(n: inteiro)
declare
res: inteiro
enquanto (n>0) faa
res res * n
n n - 1
retorne res
// verso recursiva
fat(n: inteiro)
se (n<2) ento
retorne 1
seno
retorne n*fat(n-1)
Sntese do captulo
Neste captulo foi apresentado o conceito de modularizao. Este termo
muito utilizado na programao, aliado ao mtodo de dividir para conquistar,
o qual permite dividir um problema em partes menores. Modularizar significa
dividir um programa em subprogramas cujos funcionamentos podem ser tes-
tados separadamente.
As funes, mdulos ou subprogramas, como so conhecidos, podem
aparecer em grande quantidade em um mesmo algoritmo, mas apenas uma
destas funes tem papel de acionador, ou seja, sempre a partir dela se inicia-
r a execuo. a chamada funo principal. Todas as demais funes so
secundrias. Finalizando, abordado o conceito de recursividade: tcnica que
permite a uma funo fazer, no corpo de seu cdigo, uma chamada a si prpria.
100
Pereira, R. R; Souza, J. T. de; Bezerra, M. J. de
Atividades de avaliao
1. Faa uma funo que recebe um nmero inteiro por parmetro e retorna
verdadeiro se ele for par e falso se for mpar.
2. Escreva um procedimento de nome tipo_triangulo que receba 3 parme-
tros representando os lados de um tringulo e imprima o tipo dele (eqil-
tero, issceles ou escaleno).
3. Escreva um algoritmo em pseudocdigo para receber o tamanho dos 3
lados de um tringulo e usar o procedimento tipo_triangulo para exibir o
tipo dele.
4. Escreva um algoritmo para receber 10 nmeros reais e armazen-los em
um vetor. Depois disso, mostre o somatrio dos nmeros, atravs do uso
da funo somatorio, que no recebe parmetro nenhum, acessa o vetor
definido globalmente e retorna o somatrio dos elementos do vetor.
http://www.lsd.ic.unicamp.br/projetos/e-lane/introPascal/aula9.html
http://www.inf.pucrs.br/~pinho/LaproI/Funcoes/AulaDeFuncoes.htm
Referncias
SEBESTA, Robert W. Concepts of Languagues Programming. 8th
edition. University of Colorado. Addison-Wesley 2007. 752p. ISBN-10:
032149362.
Algoritmos e Programao 101
Sobre os autores
Ricardo Reis Pereira: Possui graduao em Engenharia Mecnica pela
Universidade Federal do Cear (2000) e mestrado em Programa de Mestrado
em Engenharia Qumica pela Universidade Federal do Cear (2004).
Atualmente professor assistente do curso Sistemas de Informao do
Campus de Quixad da Universidade Federal do Cear. Ministra as discipli-
nas de fundamentos de programao, clculo diferencial e integral, estruturas
de dados e computao grfica e atua nas reas de algoritmos, computao
grfica e mais recentemente em viso computacional.
Jerffeson Teixeira de Souza: recebeu o ttulo de Ph.D. em Cincia da
Computao pela School of Information Technology and Engineering (SITE) da
University of Ottawa, Canad. professor adjunto da Universidade Estadual
do Cear (UECE) e Pr-reitor de Ps-graduao e Pesquisa da UECE, j ten-
do trabalhado como Diretor de Pesquisa da UECE, Coordenador do Mestrado
Acadmico em Cincia da Computao da UECE (MACC) e Coordenador
Geral do Mestrado Integrado Profissional em Computao Aplicada UECE/
IFCE (MPCOMP). Atualmente Coordenador dos Grupos de Otimizao em
Engenharia de Software da UECE (GOES.UECE) e Padres de Software da
UECE (GPS.UECE) e Coordenador da Especializao em Engenharia de
Software com nfase em Padres de Software da UECE (EES). ainda mem-
bro eleito do Steering Commitee do International Symposium on Search Based
Software Engineering e membro nominado do Hillside Group. Trabalhou ainda
como Co-presidente da Quarta Conferncia Latino-americana em Linguagens
de Padres para Programao (SugarLoafPLoP 2004), como Co-presidente
do Comit de Programa do SugarLoafPLoP 2007, como Presidente do
SugarLoafPLoP 2008 e atualmente Co-presidente do Comit de Programa
do 4th International Symposium on Search Based Software Engineering
(SSBSE2012). um dos precursores da rea de Search Based Software
Engineering no Brasil e um dos principais pesquisadores dessa rea no pas,
tendo sido ainda o idealizador e Coordenador Geral do I Workshop Brasileiro
de Otimizao em Engenharia de Software (WOES), que foi posteriormen-
te nomeado para Workshop Brasileiro Engenharia de Software baseada em
Busca (WESB). Seus interesses de pesquisa so: Otimizao em Engenharia
de Software, Documentao e Aplicao de Padres de Software e Estudo de
Tcnicas e Aplicao de Algoritmos de Minerao de Dados.
Jeandro de Mesquita Bezerra: Possui graduao em Computao pela
Universidade Estadual do Cear (2003) e mestrado em Computao Aplicada
MPComp pela Universidade Estadual do Cear (2007). Atualmente profes-
sor Assistente II da Universidade Federal do Cear (Campus de Quixad).
102
Pereira, R. R; Souza, J. T. de; Bezerra, M. J. de