Você está na página 1de 77

Programao de Computadores I Prof.

Erlon Pinheiro
1/77








Programao de Computadores I Prof. Erlon Pinheiro
2/77
UNIDADE I Introduo Lgica de Programao

O que vamos ver:

Noes de Lgica
Algoritmizando a Lgica
Conceitos e Exemplos de Algoritmos
Noes de Fluxos de Controle
Algoritmos
Exerccios de Fixao



1. Noes de Lgica

O uso corriqueiro da palavra lgica est normalmente relacionado coerncia e
racionalidade. Freqentemente associa-se lgica apenas matemtica, deixando-se de
perceber sua aplicabilidade e relao com as demais cincias.

Lgica a arte de bem pensar, que a cincia das formas do pensamento. Visto
que a forma mais complexa do pensamento o raciocnio, a lgica estuda a correo
do pensamento.

Podemos tambm dizer que a lgica tem em vista a ordem da razo. Isto d entender
que a nossa razo pode funcionar desordenadamente. Por isso a lgica estuda e ensina
a colocar ordem no pensamento. Exemplos:

Todo mamfero um animal.
Todo cavalo um mamfero.
Portanto, todo cavalo um animal.

Esprito Santo um estado do Brasil.
Capixabas so as pessoas nascidas no Esprito Santo
Logo, todos os capixabas so Brasileiros.
Programao de Computadores I Prof. Erlon Pinheiro
3/77
2. EXISTE LGICA NO DIA-A-DIA ?

Sempre que pensamos, a lgica ou a ilgica necessariamente nos acompanha. Quando
falamos ou escrevemos estamos expressando nosso pensamento, logo, precisamos usar
de lgica nessas atividades.

Exemplos:
A gaveta est fechada.
A caneta est dentro da gaveta.
Precisamos primeiro abrir a gaveta para depois pegar a caneta.

Anacleto mais velho que Felisberto.
Felisberto mais velho que Marivaldo.
Portanto, Anacleto mais velho que Marivaldo.

3. MAS E A LGICA DE PROGRAMAO?

Significa o uso correto das leis de pensamento, da ordem da razo e de processos de
raciocnio e simbolizao formais na programao de computadores, objetivando
racionalidade e o desenvolvimento de tcnicas que cooperam para a produo de
solues logicamente vlidas e coerentes, que resolvam com qualidade os problemas
que se deseja programar.

O raciocnio algo abstrato, intangvel. Os seres humanos tm a capacidade de
express-los atravs da palavra falada ou escrita (idioma). Um mesmo raciocnio pode
ser expresso em qualquer um dos inmeros idiomas existentes, mas continuar
representando o mesmo raciocnio, usando apenas uma outra conveno.

Algo similar ocorre com a Lgica de Programao, que pode ser concebida pela mente
treinada e pode ser representada em qualquer uma das inmeras linguagens de
programao existentes. Para escapar dessa torre de Babel (detalhes das diversas
linguagens de programao), e ao mesmo tempo, representar mais fielmente o
raciocnio da Lgica de Programao, utilizamos os Algoritmos.
Programao de Computadores I Prof. Erlon Pinheiro
4/77
4. O QUE UM ALGORITMO?

Um algoritmo pode ser definido como uma seqncia de passos que visam atingir um
objetivo bem definido.

Na medida em que precisamos especificar uma seqncia de passos, precisamos utilizar
ordem, ou seja, pensar com ordem, portanto precisamos utilizar lgica.

Exemplo de Algoritmo: receita de bolo.

5. ALGORITMIZANDO A LGICA

Por que Importante Construir um Algoritmo?

Um algoritmo tem por objetivo representar mais fielmente o raciocnio envolvido na
Lgica de Programao e, dessa forma, permite-nos abstrair de uma srie de detalhes
computacionais, que podem ser acrescentados mais tarde.

Outra importncia da construo dos algoritmos que, uma vez concebida uma soluo
algortmica para um problema, esta pode ser traduzida para qualquer linguagem de
programao. Costumamos denominar esse processo de codificao.

Vamos a um Exemplo?

A troca de uma lmpada.

Algoritmo 1.1
pegar uma escada;
posicionar a escada embaixo da lmpada;
buscar uma lmpada nova;
subir na escada;
retirar a lmpada velha;
colocar a lmpada nova.

Involuntariamente, j seguimos uma determinada seqncia de aes que
representadas nesse algoritmo, fazem com que ela seja seguida naturalmente por
qualquer pessoa, estabelecendo um padro de comportamento, pois qualquer pessoa
agiria da mesma maneira.

A seqenciao uma conveno com o objetivo de reger o fluxo de execuo do
algoritmo, determinando qual a primeira ao a ser executada e qual ao vem a seguir.
Nesse caso, a seqncia linear, de cima para baixo.
Programao de Computadores I Prof. Erlon Pinheiro
5/77
O algoritmo tem um objetivo bem definido: trocar uma lmpada. Porm, e se a lmpada
no estivesse queimada?

A execuo das aes conduziria a uma troca, independentemente de a lmpada estar
ou no queimada, porque no foi prevista essa possibilidade em sua construo. A
soluo seria acrescentar um teste, a fim de verificar se a lmpada est ou no
queimada.

Algoritmo 1.2
pegar uma escada;
posicionar a escada embaixo da lmpada;
buscar uma lmpada nova;
acionar o interruptor;
se a lmpada no acender, ento
subir na escada;
retirar a lmpada velha;
colocar a lmpada nova.
Agora estamos ligando algumas aes condio lmpada no acender, ou seja, se esta
condio for verdadeira (lmpada queimada) efetuaremos a troca da lmpada, seguindo
as prximas aes:
subir na escada;
retirar a lmpada velha;
colocar a lmpada nova.
Se a condio lmpada no acender for falsa (a lmpada est funcionando), as aes
relativas troca da lmpada no sero executadas, e a lmpada (que est em bom
estado) no ser trocada.

O algoritmo est correto, visto que atinge seu objetivo, porm, pode ser melhorado,
uma vez que buscamos uma escada e uma lmpada sem saber se sero necessrias.

Algoritmo 1.3
acionar o interruptor;
se a lmpada no acender, ento
pegar uma escada;
posicionar a escada embaixo da lmpada;
buscar uma lmpada nova;
subir na escada;
retirar a lmpada velha;
colocar a lmpada nova.
Programao de Computadores I Prof. Erlon Pinheiro
6/77
A soluo apresentada est aparentemente adequada, porm, no prev a possibilidade
de a lmpada nova no funcionar e, portanto, no atingir o objetivo nesta situao
especfica. Podemos fazer um refinamento, uma melhoria no algoritmo, de tal modo
que se troque a lmpada diversas vezes, se necessrio, at que funcione.

Algoritmo 1.4
acionar o interruptor;
se a lmpada no acender, ento
pegar uma escada;
posicionar a escada embaixo da lmpada;
buscar uma lmpada nova;
subir na escada;
retirar a lmpada velha;
colocar a lmpada nova.
se a lmpada no acender, ento
retirar a lmpada queimada;
colocar outra lmpada nova;
se a lmpada no acender, ento
retirar a lmpada queimada;
colocar outra lmpada nova;
.
.
.
At quando ???

Notamos que o Algoritmo 1.4 no est terminado, faltou especificar at quando ser
feito o teste da lmpada. As aes cessaro quando conseguirmos colocar uma lmpada
que acenda; caso contrrio, ficaremos testando indefinidamente.
Programao de Computadores I Prof. Erlon Pinheiro
7/77
Podemos, ento, expressar uma repetio de ao sem repetir o texto que representa a
ao, assim como determinar um limite para tal repetio, com o objetivo de garantir
uma condio de parada, ou seja, que seja cessada a atividade de testar a lmpada nova
quando esta j estiver acesa. Uma soluo seria:

Algoritmo 1.5
acionar o interruptor;
se a lmpada no acender, ento
pegar uma escada;
posicionar a escada embaixo da lmpada;
buscar uma lmpada nova;
subir na escada;
retirar a lmpada velha;
colocar a lmpada nova.
enquanto a lmpada no acender, faa
retirar a lmpada queimada;
colocar outra lmpada nova;

A condio lmpada no acender permaneceu, e estabelecemos um fluxo repetitivo que
ser finalizado assim que a condio de parada for falsa, ou seja, assim que a lmpada
acender. Percebemos que o nmero de repeties indefinido, porm, finito at
alcanar o objetivo: trocar a lmpada queimada por uma que funcione.
Programao de Computadores I Prof. Erlon Pinheiro
8/77
At agora estamos efetuando a troca de uma nica lmpada, na verdade, estamos
testando um soquete (acionado por um interruptor), trocando tantas lmpadas quantas
forem necessrias para assegurar que o conjunto funcione. O que faramos se
tivssemos mais soquetes a testar, por exemplo, 10 soquetes ?


Algoritmo 1.6
acionar o interruptor do primeiro soquete;
se a lmpada no acender, ento
pegar uma escada;
posicionar a escada embaixo da lmpada;
buscar uma lmpada nova;
subir na escada;
retirar a lmpada velha;
colocar a lmpada nova.
enquanto a lmpada no acender, faa
retirar a lmpada queimada;
colocar outra lmpada nova;
acionar o interruptor do segundo soquete;
se a lmpada no acender, ento
pegar uma escada;
posicionar a escada embaixo da lmpada;
.
.
acionar o interruptor do terceiro soquete;
se a lmpada no acender, ento
.
.
acionar o interruptor do dcimo soquete;
.
.

Programao de Computadores I Prof. Erlon Pinheiro
9/77
Observamos que o Algoritmo 1.6 apenas um conjunto de 10 repeties do Algoritmo
1.5, uma vez para cada soquete, havendo a repetio de um mesmo conjunto de aes
por um nmero definido de vezes: 10. Como o conjunto de aes tem uma forma
repetida, poderamos alterar o fluxo seqencial de execuo de modo a fazer com que
este voltasse a executar o conjunto de aes relativas a um nico soquete (Algoritmo
1.5) tantas vezes quantas fossem desejadas. Uma soluo para 10 soquetes seria:

Algoritmo 1.7
ir at o interruptor do primeiro soquete.
enquanto a quantidade de soquetes testados for menor ou igual que dez,
faa
acionar o interruptor do soquete;
se a lmpada no acender, ento
pegar uma escada;
posicionar a escada embaixo da lmpada;
buscar uma lmpada nova;
subir na escada;
retirar a lmpada velha;
colocar a lmpada nova.
enquanto a lmpada no acender, faa
retirar a lmpada queimada;
colocar outra lmpada nova;
ir at o interruptor do prximo soquete;

Quando a condio ( quantidade de soquetes testados for menor ou igual a dez ) for
verdadeira, as aes responsveis pela troca ou no de um nico soquete sero
executadas. caso a condio de parada seja falsa, ou seja, todos os dez soquetes j
tiverem sido trocados, nada mais ser executado.

Programao de Computadores I Prof. Erlon Pinheiro
10/77
6. DE QUE MANEIRA REPRESENTAMOS O ALGORITMO?

Convm enfatizar mais uma vez que um algoritmo uma linha de raciocnio, que pode
ser descrito de diversas maneiras, de forma grfica ou textual.

Os algoritmos representados at o momento estavam em forma textual, usando
portugus coloquial.

As formas grficas so mais puras por serem mais fiis ao raciocnio original,
substituindo um grande nmero de palavras por convenes de desenhos. Para fins de
ilustrao mostraremos como ficaria o Algoritmo 1.7 representado graficamente em um
fluxograma tradicional (algoritmo 1.8) e em um Chapin (Algoritmo 1.9).
Algoritmo 1.8

Programao de Computadores I Prof. Erlon Pinheiro
11/77

Algoritmo 1.9


Programao de Computadores I Prof. Erlon Pinheiro
12/77
7. EXERCCIOS DE FIXAO

1 - Um homem precisa atravessar um rio com um barco que possui capacidade de
transportar apenas ele mesmo e mais uma de suas trs cargas, que so: um lobo, um
bode e um mao de alfafas. O que o homem deve fazer para conseguir atravessar o rio
sem perder suas cargas?
informaes:
um barco
um homem
um lobo
um bode
um mao de alfafa
ao:
atravessar o rio sem perder as cargas
resultado:
todas as cargas na outra margem do rio.


2 - Elabore um algoritmo que mova trs discos de uma Torre de Hani, que consiste em
trs hastes (a-b-c), uma das quais serve de suporte para trs discos de tamanhos
diferentes (1-2-3), os menores sobre os maiores. Pode-se mover um disco de cada vez
para qualquer haste, contanto que nunca seja colocado um disco maior sobre um
menor. O objetivo transferir os trs discos para outra haste.


informaes:
3 discos
3 hastes

aes:
movimentar um disco de cada vez de forma que fiquem ordenado

resultado:
discos transferidos e ordenados para outra haste


Programao de Computadores I Prof. Erlon Pinheiro
13/77
3. Trs jesutas e trs canibais precisam atravessar um rio; para tal, dispem de um
barco com capacidade para duas pessoas. Por medidas de segurana no se permite que
em alguma margem a quantidade de jesutas seja inferior de canibais. Qual a
seqncia de passos que permitiria a travessia com segurana?

informaes:

3 jesutas
3 canibais
1 barco com capacidade para 2 pessoas

aes:
atravessar o rio com segurana

resultado:
3 jesutas e 3 canibais na outra margem do rio (B)

Programao de Computadores I Prof. Erlon Pinheiro
14/77
UNIDADE II - Tpicos Preliminares

O que vamos ver:

Tipos de Dados Bsicos
Constantes e Variveis

1. TIPOS DE DADOS BSICOS

Informao a matria-prima que faz com que seja necessria a existncia dos
computadores, pois eles so capazes de manipular e armazenar um grande volume de
dados com alto desempenho, liberando o homem para outras tarefas onde o seu
conhecimento indispensvel.

Aproximando-se da maneira pela qual o computador manipula as informaes, vamos
dividi-las em trs tipos primitivos, que sero os tipos bsicos que usaremos na
construo de algoritmos.

Numrico

Os dados numricos dividem-se em dois grupos: inteiros e reais.

Os nmeros inteiros podem ser positivos ou negativos e NO possuem parte decimal.

Exemplos:
Vejamos algumas proposies declarativas comuns, em que usado o tipo inteiro:

a) Ele tem 15 irmos.
b) A escada possui 8 degraus.
c) Meu vizinho comprou 2 carros novos

Enfatizando o conceito de dado, vale observar, por exemplo, o item: 8 um dado do tipo
inteiro e a informao associar que 8 o nmero de degraus da escada.

Real
Os nmeros reais podem ser positivos ou negativos e possuem parte decimal.

Exemplos:
a) Ela tem 1.73 metro de altura.
b) Meu saldo bancrio de 215.20.
c) No momento estou pesando 82.5 kg.
Observao: Nas linguagens de programao a separao entre a parte inteira e a parte
decimal de um nmero feita pelo ponto (.), e a simples presena do ponto j significa
que um nmero real.

Programao de Computadores I Prof. Erlon Pinheiro
15/77
Literal ou Caractere

So dados formados por caracteres (um ou mais). Esses caracteres podem ser as letras
maisculas, as letras minsculas, os nmeros e os caracteres especiais (&, #, @, ?, +).

Exemplos:
a) Escolha o sexo: M ou F.
b) Constava na prova: Use somente a caneta!;
c) Parque municipal estava repleto de placas: No pise na grama.
d) Nome do vencedor Felisberto Laranjeira.

Observao: Os dados do tipo literal na linguagem C so sempre representados entre
aspas simples quando temos um nico caractere ou aspas duplas quando temos mais de
um caractere.


2. CONSTANTES

Entendemos que um dado constante quando no sofre variao no decorrer do tempo,
ou seja, seu valor constante desde o incio at o fim da execuo do algoritmo, assim
como constante para execues diferentes no tempo. O uso de constantes igual na
matemtica, por exemplo: o uso da constante pi no clculo da rea de um crculo (rea =
* r
2
, onde = 3.14159).


3. VARIVEL

Um dado classificado como varivel quando tem a possibilidade de ser alterado em
algum instante no decorrer do tempo, ou seja, durante a execuo do programa em que
utilizado, o valor do dado sofre alterao ou o dado dependente da execuo em
certo momento ou circunstncia.

Exemplos:
A cotao do dlar, o peso de uma pessoa, o ndice da inflao.

Quando fazemos um programa, este normalmente recebe dados, os quais precisam ser
armazenados no computador para que possam ser utilizados no processamento; esse
armazenamento feito na memria.

Um exemplo para ilustrar a diferena entre valores constantes e variveis seria a
construo de um programa para calcular o valor da rea de uma circunferncia.

Area = r
2

Area 3.14159 * (raio*raio)


Programao de Computadores I Prof. Erlon Pinheiro
16/77
4. DECLARAO DE VARIVEIS

No ambiente computacional, as informaes variveis so guardadas em dispositivos
eletrnicos chamados de memria. Podemos imaginar essa memria como sendo
um armrio repleto de gavetas, no qual as gavetas seriam os locais fsicos responsveis
por armazenar objetos; os objetos (que podem ser substitudos) seriam os dados e as
gavetas, as variveis.

Visto que na memria (armrio) existem inmeras variveis (gavetas), precisamos
diferenci-las, o que feito por meio de identificadores (etiquetas ou rtulos). Cada
varivel (gaveta), no entanto, pode guardar apenas um dado (objeto) de cada vez, sendo
sempre de mesmo tipo primitivo (material).

Portanto, precisamos definir nomes para determinadas gavetas especificando qual o
material dos objetos que l podem ser armazenados; em outras palavras, declarar as
variveis que sero usadas para identificar os dados.

5. FORMAO DE IDENTIFICADORES
Os identificadores so os nomes das variveis utilizadas nos algoritmos.

As regras bsicas para a formao dos identificadores so:

Podem possuir qualquer tamanho. Entretanto, apenas os 32 primeiros caracteres
so utilizados pelo compilador C.
Os caracteres que voc pode utilizar na formao dos identificadores so: os
nmeros, as letras maisculas, as letras minsculas e o caractere sublinhado (_);
Compilador C faz diferena entre letras maisculas e minsculas; portanto, o
identificador NUM exatamente diferente dos identificadores num, Num (alis,
em C todos esses identificadores seriam diferentes);
O primeiro caractere deve ser sempre uma letra;
No so permitidos espaos em branco e caracteres especiais (@, $, +, -, %, !);
No podemos usar as palavras reservadas nos identificadores.

Obs.: Palavras reservadas da linguagem C no podem ser identificadores de variveis:
auto, break, case, char, const, continue, default, do, double, else, enum, extern, float,
for, goto, if, int, long, register, return, short, signed, sizeof, static, struct, switch, typedef,
union, unsigned, void, volatile, while.

Exemplos de identificadores vlidos:
A
a
nota
NOTA
X5
A32
Programao de Computadores I Prof. Erlon Pinheiro
17/77
NOTA1
MATRICULA
nota_1
dia
IDADE

Exemplos de identificadores invlidos:
5b
e@12
x-y
prova 2n
nota(2)
else
int


6. DECLARAO DE VARIVEIS
As declaraes de variveis so obrigatrias para validar os identificadores. Todas as
variveis devem ser includas em uma nica declarao da forma:
tipo lista de variveis;
tipo lista de variveis;

Onde tipo representa o conjunto de valores que podemos atribuir a essas variveis e as
listas de variveis so os identificadores das variveis do mesmo tipo separados por
vrgulas.

7. TIPOS DE VARIVEIS
Exemplos das declaraes de variveis:

real salario, nota_1;
inteiro matricula, contador;
caractere nome;

8. COMENTRIOS

Os comentrios no so interpretados pelo compilador, servem apenas para esclarecer
o programador, so excelentes instrumentos de documentao e devem sempre estar
entre /* ......... */. Ou ainda pode-se usar // para comentar o resto da linha.

Exemplos de comentrios:
inteiro num; // varivel inteira para guardar o n de alunos
real nota_1, nota_2; /* Variveis reais que sero utilizadas para armazenar as duas
notas do aluno. */

Programao de Computadores I Prof. Erlon Pinheiro
18/77
9. Operaes aritmticas:

Os operadores aritmticos a serem utilizados:

+ Adio
- Subtrao
* Multiplicao
/ Diviso inteira e diviso real
% Resto da diviso

Exemplo: Considere X e Y variveis do tipo inteiro e com valores 7 e 3
respectivamente.

X + Y => 10 X / Y => 2
X - Y => 4 Y / X => 0
Y - X => - 4 Y % X => 3
X * Y => 21 X % Y => 1
X / 2.0 = 3.5 Y / 3.0 => 1.0

Exemplo:
X + Y Z => (X + Y) Z
X * Y % Z => (X * Y) % Z

A ordem da precedncia dentro de uma expresso aritmtica pode ser alterada
fazendo-se uso de parnteses. Caso tenha dvidas quanto ordem de precedncia de
uma expresso, utilize sempre parnteses para especificar claramente a ordem da
avaliao desejada.

Exemplo:

A + B * C => A + (B * C)
Para forar a precedncia usamos os parnteses => (A + B) * C
10. Potenciao e Radiciao
Usaremos inicialmente duas funes matemticas predefinidas para calcular a
potenciao e a radiciao.

Operador Funo Significado Exemplo
pot(x,y) Potenciao x elevado a y pot(2,3)==2
3
== 8.0

rad(x) Radiciao Raiz quadrada de x rad(9)==3.0

Prioridades

Na resoluo das expresses aritmticas, as operaes guardam uma hierarquia
entre si.
Programao de Computadores I Prof. Erlon Pinheiro
19/77

Prioridade Operadores
1 parnteses mais internos
2 pot rad
3 * / % (mod em portugol)
4 + -


Em caso de empate (operadores de mesma prioridade), devemos resolver da
esquerda para a direita, conforme a seqncia existente na expresso aritmtica.
Para alterar a prioridade da tabela, utilizamos parnteses mais internos.

Exerccio: Supondo que A, B e C so variveis de tipo inteiro, com valores
iguais a 5, 10 e 8, respectivamente, uma varivel real D, com valor de 1.5,
resolva passo a passo (obedecendo a ordem de prioridade) as expresses
aritmticas abaixo e determine quais so os resultados.
a) 2 * A % 3 C
b) rad( - 2 * C) / 4
c) ((20 / 3) / 3) + pot(2, 8) / 2
d) (30 % 4 * pot(3,3) ) * -1
e) pot( - C, 2 ) + ( D * 10 )/A
f) rad ( pot ( A, B/A) ) + C * D
Respostas: (a) 9 (b) 1.0 (c) 130.0 (d) 54.0 (e)
67.0 (f) - 7.0

11. Sinal de atribuio
O contedo de uma varivel pode ser alterado a qualquer momento. Portanto para
atribuir valores a variveis devemos usar o sinal de (= em C) .
Exemplos:
Portugol
A 2;
B 3;
C A + B;
C
A = 2;
B = 3;
C = A + B;

Exerccio: Encontre os erros dos seguintes comandos de atribuio:

Programao de Computadores I Prof. Erlon Pinheiro
20/77
inteiro A,D;
real B, C;

A 0;
A A + 1;
D B;
C + 1 B + C;
C 3.5;
D 2*C +6*6*2 - 3 * 4;


12. Operaes relacionais (Seguem a ordem de precedncia
posicional):
== Igual
> Maior
< Menor
>= Maior ou igual
<= Menor ou igual
!= Diferente

Exemplo: Considere I1 e I2 variveis do tipo inteiro, R do tipo real com valores 10,
20, 4.5 respectivamente;

I1 > I2 FALSO I1 > R VERDADEIRO
I1 == 10 VERDADEIRO I1 < I2 VERDADEIRO
I2 != 20 FALSO I2 == 20 VERDADEIRO


13. Operadores Lgicos:
no (!) Negao lgica
e (&&) Interseo lgica
ou (||) Unio lgica

Exemplo: Considere as variveis: inteiro a = 3; real: x = 1.5:

Expresso Valor Lgico
((a/2 = = x) && (a>2)) Falso
((a != x) || (a/x < 2)) Verdadeiro
! (a/3 <= x) Falso
((a < 2*x) || ( x < a/2)) Falso

Note que o valo r lgico de uma expresso lgica e (&&) verdadeira somente
se ambas as partes forem verdadeiras. Caso contrrio, o valor lgico ser falso.
Por outro lado, o valor lgico de uma expresso lgica ou (||) falso somente se
ambas as partes forem falsas. Caso contrrio, o valor lgico ser verdadeiro.
Programao de Computadores I Prof. Erlon Pinheiro
21/77
Exerccio: Determine os resultados obtidos na avaliao das expresses
lgicas seguintes, sabendo que A, B, C contm, respectivamente, 2, 7 e 3.5:
a) (B == (A * C) ) && (C == 2)
b) (B > A) || (B == 4)
c) ((B % A) >= C) || ( ! ( A <= C))
d) ( ! (2 == A)) || ( 3 >= C)
e) ((B / A ) == C ) || ((B / A ) != C)

Construo de tabela-verdade
Os operadores lgicos so usados para dar suporte s operaes lgicas bsicas de E
(&&), OU (||) e NO (!), de acordo com a tabela-verdade. A tabela usa V para verdadeiro
e F para falso. E1 e E2 so expresses lgicas quaisquer.
E1 E2 !E1 E1 && E2 E1 || E2
V V F V V
V F F F V
F V V F V
F F V F F
O nmero de linhas de uma tabela verdade sempre 2
n
onde n o nmero de
expresses lgicas presente na sentena. A forma de preenchimento sempre se dar
por colunas e comea preenchendo a primeira coluna com metade V e a outra
metade F, a segunda coluna ser preenchida com a metade da metade e assim por
diante. (como no exemplo anterior)
Exerccio Proposto: Para cada uma das sentenas lgicas construa a respectiva
tabela-verdade:
a) E1 && !(E2 || E2)
b) !( !E1 || !(E2 && ! E3))
c) (E1 && E2) || !E3
d) !(!(!(E1 || !E2))) && !(E3||!E1)
e) !(!(!E1 || !E2)) && !(E3||!E1)
f) !(!(E1 && E2)) && !(!E3 && !E1)
g) (E1 || !E3) && (!E2 && !(E1 || E3))

Programao de Computadores I Prof. Erlon Pinheiro
22/77
14. Comandos de entrada e sada
leia Comando de entrada que permite a leitura de variveis de entrada.
EXEMPLO: leia(MATRICULA);
leia( NOME, NOTA_1, NOTA_2);
escreva Comando de sada que exibe uma informao na tela do monitor.
EXEMPLO: escreva( BOM DIA , NOME);
escreva( VOC PESA , PESO, KG);

15. Bloco do programa principal
O bloco do programa principal geralmente comea com a declarao das
constantes e variveis que o algoritmo utilizar. Em seguida, especifica as aes a
serem executadas sobre os objetos definidos (variveis e/ou constantes). Ele
iniciado pela palavra incio seguida pela seqncia de comandos e finalizada pela
palavra fim seguida de um ponto.
incio
<Bloco de comandos>
fim.

Exerccio: Utilizando o seguinte trecho de algoritmo, explique o que est
acontecendo em cada linha e qual o resultado de cada ao executada.
incio
inteiro X, Y ;
real Z;

Z 1;
escreva(Digite um valor inteiro: );
leia(X);
escreva(X, ELEVADO AO CUBO = , X*X*X);
escreva(Digite outro valor inteiro: );
leia(Y);
escreva(A soma e: , X+Y);
Z Z + 1;
X (Y + X) % 2;
escreva(O valor final da expressao e: , X);
....
fim.

Exerccios de Fixao II

1 - Determine qual o tipo bsico de dados da informao destacado nas sentenas a
seguir:

a) A placa Pare ! tinha 2 furos de bala.
Programao de Computadores I Prof. Erlon Pinheiro
23/77
b) Josefina subiu 5 degraus para pegar uma ma boa.
c) Alberta levou 3.5 horas para chegar ao hospital onde concebeu uma "garota .
d) Astrogilda pintou em sua camisa: Preserve o meio ambiente, e ficou devendo
100.59 ao vendedor de tintas.
e) Felisberto recebeu sua 18
a
. medalha por ter alcanado a marca de 57.3 segundos nos
100 metros rasos.

2 Assinale os identificadores vlidos:
a) if b) U2 c) AH! d) ALUNO e) #55
f) KM/L g) UYT h) ASBRUBAL i) AB*C j) O&O
k) P{O} l) B52 m) Rua n) CEP o) dia_ms

3 Supondo que as variveis Nota_A, Nome_A, NMat sejam utilizadas para armazenar a
nota do aluno, o nome do aluno e o nmero da matrcula, declare-as corretamente,
associando o tipo bsico adequado ao dado que ser armazenado.

4 Encontre os erros da seguinte declarao de variveis:

inteiro endereco n_filhos;
caractere idade, X, C;
real XPTO, C, peso, R$;

5 - Identifique o tipo dos dados:
(a) inteiro;
(b) real;
(c) caractere;

( ) MARIA ( ) 45.0 ( ) 1234 ( ) 0.0
( ) a ( ) * ( ) -234 ( ) 1
( ) -0.342 ( ) 35.23 ( ) 3 ( ) -18.589
( ) ( ) -354.0 ( ) -15.2 ( ) Jos
( ) 0 ( ) 897 ( ) -23

6 - Identifique o tipo dos dados:
(d) inteiro;
(e) real;
(f) caractere.
( ) lote ( ) 45.0 ( ) 1234 ( ) 0.0
( ) a ( ) * ( ) -234 ( ) 1
( ) -0.342 ( ) 35.23 ( ) 3 ( ) -18.589
( ) ( ) -354.0 ( ) -15.2 ( ) Maria
( ) 0 ( ) 897 ( ) -23

7 - Faa a declarao de 2 variveis do tipo inteiro, 3 variveis do tipo real e 2
variveis do tipo caractere.

Programao de Computadores I Prof. Erlon Pinheiro
24/77
8 - Indique qual o resultado das expresses aritmticas abaixo:
Sendo: x = 6.0 y = 2 z = 4.0 a = 8 b = 7.5
c = 7.7 d = 12 p = 4 q = 3 r = 10 s = 7.7
a) x + y z * a
b) d / y
c) d % y
d) y / d
e) ((z / a) + b * a) d
f) 100 * (q / p) + r

9 - De acordo com as informaes abaixo, informe qual o valor das relaes ( V -
Verdadeira ou F - falsa):
a) a 2.0, b 9.0, nome ana , profissao advogado
a + 1 >= b*a ( )
nome != ana ( )
profissao == mdico ( )
b) a 6.0 , b 121.0 , nome pedro, profissao mdico
a + 1 >= b 5 ( )
nome != ana ( )
profissao == mdico ( )
c) x 3 , y 4 , z 16 , nome maria :
(( x +y > z ) && (nome == maria)) ( )
(( x *y > z ) || ( y > = x )) ( )
(!( x - y > z ) && ( z / y + 1 == x )) ( )
((nome == jos) && ( x + y + z < ( y*y ))) ( )

10 - Dadas as declaraes:
inteiro NUM;
real SOMA, X;
caractere SIMBOLO;

Assinale os comandos de atribuio invlidos:
( ) SIMBOLO 5; ( ) SOMA NUM+2*X;
( ) X*X SOMA; ( ) TUDO SOMA;
( ) X X+1; ( ) NUM 5*SOMA+2;
( ) NUM *ABC*;


11 - Marque os identificadores como vlidos ou invlidos (explicando a resposta
quando o identificador for invlido):
(a) identificador vlido;
(b) identificador invlido;
( ) ano
( ) media_salario
( ) ai!
( ) A15B34
Programao de Computadores I Prof. Erlon Pinheiro
25/77
( ) aula
( ) 3/1

12 Faa o rastreamento (tela e memria) do seguinte bloco de comandos:
Incio
real nota1, nota2, media;
escreva(Digite as duas notas: );
leia(nota1,nota2);
media (nota1 + nota2 ) / 2;
escreva(Media = , media);
fim.

13 Encontre os erros no bloco de comandos abaixo:
incio
inteiro X, Y ;
real Z;

Z 1.5;
escreva(Digite um valor inteiro: );
leia(X;
escreva(X, ELEVADO AO CUBO = , X*X*X);
escreva(Digite outro valor inteiro: )
leia(Y);
escreva(A soma e: , X+Y);
Z + 3 Z + 1;
X (Y + X) / 5.0;
escreva(O valor final da expressao e: X);
fim

Programao de Computadores I Prof. Erlon Pinheiro
26/77
Unidade III - ESTRUTURA DE ALGORITMOS EM PORTUGOL

1. Introduo
Usaremos um exemplo simples para compreendermos como a formalizao
em uma linguagem artificial importante.

Exemplo Inicial

Suponha que o algoritmo leia dois nmeros que o usurio do computador digitar no
teclado, some-os e mostre o resultado na tela do computador.
1
a
soluo: (Narrativa informal)
1. Leia do teclado dois valores
2. Some os dois valores
3. Mostre o resultado da soma na tela

2
a
soluo: (Narrativa um pouco mais formal seria)
1. Leia o valor do teclado e armazene na memria A;
2. Leia o valor do teclado e armazene na memria B;
3. Some os valores da memria A e B e coloque o resultado na
memria SOMA;
4. Mostre na tela o valor da memria SOMA.

Nesta soluo vemos o uso de 3 memrias: A, B e SOMA. Aqui o conceito de memria
semelhante ao das memrias existentes nas calculadoras. Elas servem para acumular o
resultado de clculos intermedirios.


Uma soluo ainda mais formal seria:
3
a
soluo: (Portugol que ser utilizado na disciplina)
algoritmo mostra_soma;
incio
inteiro a, b, soma;

escreva(Digite o primeiro nmero: );
leia (a);
escreva(Digite o segundo nmero: );
leia (b);
soma a + b;
escreva(A soma , soma);
fim.
{ Observe a identao }
Aqui as palavras incio e fim foram usadas para delimitar o bloco de comandos.


2. Estrutura de um algoritmo em Portugol

Programao de Computadores I Prof. Erlon Pinheiro
27/77
algoritmo <identificador>;
nicio
const <tipo> <identificador> <dado>;
<tipo> <identificador>;

<comando1>;
...
<comandon>;
fim.

Segue um Algoritmo que l as 4 notas bimestrais de um aluno. Em seguida o Algoritmo
calcula e escreve a mdia obtida.
Resoluo:
algoritmo media_final;
incio
real nota1, nota2, nota3, nota4, media;

escreva (DIGITE SUAS QUATRO NOTAS: );
leia (nota1, nota2, nota3, nota4);
media (nota1 + nota2 + nota3 + nota4) / 4;
escreva ( SUA MDIA : , media);
fim.

algoritmo media_final_v2;
incio
real nota1, nota2, nota3, nota4, soma, media;

escreva (DIGITE SUAS QUATRO NOTAS: );
leia (nota1, nota2, nota3, nota4);
soma nota1 + nota2 + nota3 + nota4;
media soma / 4;
escreva ( SUA MDIA : , media);
fim.

Exerccios Resolvidos:

1) Faa um algoritmo em Portugol que leia os valores inteiros para largura,
comprimento e altura de um paraleleppedo retngulo e calcule o seu volume.

RESOLUO:

algoritmo volume_paralelepipedo;
incio
inteiro largura, comprimento, altura;
escreva(Digite os valores para largura, comprimento e altura: );
Programao de Computadores I Prof. Erlon Pinheiro
28/77
leia(largura, comprimento, altura);
escreva(Volume = , largura*comprimento*altura, cm3):
fim.

Se largura == 10; comprimento = = 3; altura = = 2; o resultado do programa acima
ficaria assim no vdeo:

Digite os valores para largura, comprimento e altura: 10 3 2 <enter>.
Volume = 60 cm3
Verso 2 do algoritmo anterior:
algoritmo volume_paralelepipedo;
incio
inteiro largura, comprimento, altura, volume_p;
escreva(Digite os valores para largura, comprimento e altura: );
leia(largura, comprimento, altura);
volume_p largura*comprimento*altura;
escreva(Volume = , volume_p, cm3);
fim.

2) Faa um Algoritmo que l o raio de uma circunferncia e calcula sua rea.
Resoluo:

algoritmo area_circunferencia;
incio
const real pi = 3.1416;
real raio, area;
//Entrada de dados
escreva(Digite o valor do raio: );
leia (raio);
//Processamento de dados
area pi * (raio*raio); // ou area pi * (pot(raio,2));
// Sada de dados
escreva (Area = , area) ;
fim.
3) Faa um algoritmo em Portugol que leia dois valores inteiros para as variveis A
e B e efetuar as operaes de adio, subtrao, multiplicao e diviso de A por B,
apresentando ao final os resultados obtidos.
Resoluo:
Programao de Computadores I Prof. Erlon Pinheiro
29/77
algoritmo operaes;
inicio
inteiro a, b, soma, sub, mult, divi;
//Entrada de dados
escreva(Digite dois valores inteiros: );
leia(a, b);
//Processamento de dados
soma a+b;
sub a - b;
mult a * b;
divi a/b;
//Sada de dados
escreva(a, + , b, = , soma);
escreva(a, - , b, = , sub);
escreva(a, * , b, = , mult);
escreva(a, / , b, = , divi);
fim.

4) Efetuar a leitura de um nmero inteiro e apresentar o resultado do quadrado deste
nmero.
Resoluo:
algoritmo calcula_quadrado.;
inicio
inteiro num;

//Entrada de dados
escreva(Digite um valor inteiro: );
leia(num);

//Processamento e sada de dados
escreva( num, ao quadrado e , num*num);
Programao de Computadores I Prof. Erlon Pinheiro
30/77
fim.

algoritmo calcula_quadrado_v2;
inicio
inteiro num, quad;

//Entrada de dados
escreva(Digite um valor inteiro: );
leia(num);

//Processamento de dados
quad num*num;

//Sada de dados
escreva( num, ao quadrado e , quad);
fim.

algoritmo calcula_quadrado_v3;
inicio
inteiro num;
real quad;
//Entrada de dados
escreva(Digite um valor inteiro: );
leia(num);

//Processamento de dados
quad pot(num, 2);

//Sada de dados
escreva( num, ao quadrado e , quad);
fim.
Programao de Computadores I Prof. Erlon Pinheiro
31/77

5) Ler uma temperatura em graus Fahrenheit e apresent-la convertida em graus
Clsius. A frmula de converso : C (F 32) * (5 / 9.0), onde F a temperatura em
Fahrenheit e C a temperatura em Clsius.
Resoluo:
algoritmo converte_temperatura;
inicio
real celsius, f;
//Entrada de dados
escreva(Digite a temperatura em Fahrenheit: );
leia(f);
//Processamento de dados
celsius (f 32)*(5/9.0);
//Sada de dados
escreva(A temperatura em Celsius e , celsius);
fim.

6) Calcular e apresentar o volume de uma lata de leo, utilizando a frmula: VOLUME
3.14159 * R * R * ALTURA.
Resoluo:
algoritmo volume_lata_oleo;
inicio
const real PI 3.14159;
real volume, raio, altura;
//Entrada de dados
escreva(Digite o valor do raio e da altura em cm: );
leia(raio, altura);
//Processamento de dados
volume PI * pot(raio,2) * altura;
//sada de dados
escreva(O volume da lata de leo , volume, cm3);
Programao de Computadores I Prof. Erlon Pinheiro
32/77
fim.

Exerccios de Fixao III

1 - Ler dois valores inteiros para as variveis A e B e efetuar as operaes de adio,
subtrao, multiplicao e diviso de A por B, apresentando ao final os resultados
obtidos.

2 - Efetuar a leitura de um nmero inteiro e apresentar o resultado do quadrado deste
nmero.

3 - Ler uma temperatura em graus Fahrenheit e apresent-la convertida em graus
Clsius. A frmula de converso : C (F 32) * (5 / 9.0), onde F a temperatura em
Fahrenheit e C a temperatura em Clsius.

4 - Calcular e apresentar o volume de uma lata de leo, utilizando a frmula: VOLUME
3.14159 * R * R * ALTURA.

5 - Faa um algoritmo que receba dois nmeros inteiros, calcule e imprima:
soma dos dois nmeros;
subtrao do primeiro pelo segundo;
subtrao do segundo pelo primeiro;
multiplicao dos dois nmeros;
diviso real do primeiro pelo segundo;
diviso real do segundo pelo primeiro;
quociente inteiro da diviso do primeiro pelo segundo;
quociente inteiro da diviso do segundo pelo primeiro;
resto da diviso do primeiro pelo segundo;
resto da diviso do segundo pelo primeiro.

6 - Ler dois valores para as variveis A e B, efetuar a troca de valores de forma que a
varivel A passe a possuir o valor da varivel B e que a varivel B passe a possuir o valor
da varivel A. Apresentar os valores trocados.

7 Faa um algoritmo que efetue o clculo do valor de uma prestao em atraso,
utilizando a frmula: PRESTACAO VALOR + (VALOR * (TAXA/100) * TEMPO), onde a
TAXA um valor constante de 2 e o TEMPO dado em dias.
Resoluo:
algoritmo valor_prestacao;
inicio
const real taxa 2.0;
inteiro tempo;
real prestao, valor;

//Entrada de dados
Programao de Computadores I Prof. Erlon Pinheiro
33/77
escreva(Digite o valor da prestao: );
leia(valor);
escreva(Digite o tempo de atraso em dias: );
leia(tempo);
//Processamento de dados
prestao (valor * (taxa/100)*tempo)+valor;
//sada de dados
escreva(O valor final da prestao : , prestao);
fim.

8 - Uma loja de animais precisa de um programa para calcular os custos de criao de
coelhos. O custo calculado com a frmula CUSTO (NR_COELHOS * 0.70) / 18 + 10. O
programa deve ler um valor para a varivel NR_COELHOS e apresentar o valor da
varivel CUSTO.

9 - Faa um algoritmo que receba duas notas de um aluno e seus respectivos pesos,
calcule e imprima a mdia ponderada dessas notas.
Resoluo:
algoritmo media_ponderada;
inicio
real nota1, nota2, media_p;
inteiro peso1, peso2;

//Entrada de dados
escreva(Digite as duas notas: );
leia(nota1, nota2);
escreva(Digite os pesos: );
leia(peso1, peso2);

//Processamento de dados
media_p (nota1*peso1 + nota2*peso2)/(peso1+peso2);

//Sada de dados
escreva(A media ponderada e , media_p);
fim.

Rastreamento

Memria Tela

nota1: 7.0
nota2: 8.0
media_p: 7.6666
peso1: 1
peso2: 2

Digite as duas notas: 7 8 <Enter>
Digite os pesos: 1 2 <Enter>
A media ponderada e 7.6666
Programao de Computadores I Prof. Erlon Pinheiro
34/77


10 - Faa um algoritmo que receba o valor de um depsito e o valor da taxa de juros.
Calcule e imprima o valor do rendimento e o valor total depois do rendimento.
Resoluo:

algoritmo aplicacao_financeira;
inicio
real deposito, taxa, rend, valor_final;

//Entrada de dados
escreva(Digite o valor do deposito: );
leia(deposito);
escreva(Digite o valor da taxa de juros: );
leia(taxa);

//Processamento de dados
rend deposito * (taxa/100);
valor_final deposito + rend;

//Sada de dados
escreva(O valor do rendimento e: , rend);
escreva(O valor final com o rendimento e : , valor_final);
fim.
Faa o rastreamento

11 - Faa um algoritmo que receba um nmero inteiro, calcule e imprima a tabuada
desse nmero.
Resoluo:

algoritmo tabuada;
inicio
inteiro num;

//Entrada de dados
escreva(Digite um numero para a tabuada: );
leia(num);
//Processamento e sada de dados
escreva(A tabuada de multiplicao do numero , num);
escreva(num , * 1 = , num);
escreva(num , * 2 = , 2*num);
escreva(num , * 3 = , 3*num);
escreva(num , * 4 = , 4*num);
escreva(num , * 5 = , 5*num);
escreva(num , * 6 = , 6*num);
escreva(num , * 7 = , 7*num);
Programao de Computadores I Prof. Erlon Pinheiro
35/77
escreva(num , * 8 = , 8*num);
escreva(num , * 9 = , 9*num);
escreva(num , * 10 = , 10*num);
fim.

Rastreamento

Memria Tela

num: 2

Digite um numero para a tabuada: 2 <Enter>
2 * 1 = 2
2 * 2 = 4
2 * 3 = 6
2 * 4 = 8
2 * 5 = 10
2 * 6 = 12
2 * 7 = 14
2 * 8 = 16
2 * 9 = 18
2 * 10 = 20





12 - Faa um algoritmo que receba um nmero real, calcule e imprima o valor referente
ao volume do cubo que tenha este nmero real como lado.

13 - Faa um algoritmo que receba um nmero inteiro, calcule e imprima:
a raiz quadrada desse nmero;
esse nmero elevado ao quadrado.


14 - Faa um algoritmo que receba o valor do salrio de um funcionrio e o valor do
salrio mnimo. Calcule e imprima quantos salrios mnimos ganha esse funcionrio.

15 - Faa um algoritmo que calcule e imprima a rea de um retngulo.

16 - Faa um algoritmo que receba o salrio de um funcionrio, calcule e imprima o
valor do imposto de renda a ser pago, sabendo que o imposto equivale a 5% do salrio.

17 - Faa um algoritmo que receba o salrio de um funcionrio, calcule e imprima o
novo salrio sabendo-se que este sofreu um aumento de 25%.
Resoluo:

algoritmo reajuste_salarial;
inicio
Programao de Computadores I Prof. Erlon Pinheiro
36/77
const real reaj = 25;
real salario, novo_sal;

//Entrada de dados
escreva(Digite o valor do salario: );
leia(salario);
//Processamento de dados
novo_sal salario * (reaj/100) + salario;
//Sada de dados
escreva(O valor do salario reajustado e: , novo_sal);
fim.


18 - Faa um algoritmo que receba o peso de uma pessoa, um valor inteiro, calcule e
imprima:
o peso dessa pessoa em gramas;
se essa pessoa engordar 5%, qual ser seu novo peso em gramas.

19 - Imprima o clculo da seguinte equao sendo lidos os parmetros a, b e c:
X = ((a + (2* b + c) * c) / a *a)

20 - Faa um algoritmo que leia as medidas de um retngulo (base, altura), calcule e
imprima sua rea e seu permetro.

Programao de Computadores I Prof. Erlon Pinheiro
37/77
UNIDADE IV Comandos de Seleo
O que vamos ver:
Seleo Simples
Seleo Composta
Seleo Encadeada
Seleo Mltipla Escolha

Uma estrutura de seleo permite a escolha de um grupo de aes (bloco) a ser
executado quando determinadas condies, representadas por expresses lgicas ou
relacionais, so ou no satisfeitas.

1. Seleo Simples
Quando precisamos testar certa condio antes de executar uma ao, usamos uma
seleo simples, que segue o seguinte modelo:

se (<condio>) ento
Comando; // comando nico

<condio> uma expresso lgica que, quando inspecionada, pode gerar um resultado
falso ou verdadeiro.

Se <condio> for verdadeira, a ao primitiva sob a clusula ento (Comando) ser
executada; caso contrrio (<condio>) for falsa), encerra-se a seleo (fim), neste caso
sem executar nenhum comando.

Atravs do exemplo anterior, observamos que, quando existir apenas uma ao aps a
clusula, ento basta escrev-la; j quando precisamos colocar diversas aes
necessrio usar um bloco, delimitado por incio e fim conforme o seguinte modelo:

se (<condio>) ento
incio
Comando-1;
Comando-2;
...
Comando-n;
fim;

Exemplo:
Programao de Computadores I Prof. Erlon Pinheiro
38/77
algoritmo exemplo1;
inicio
real n1, n2, n3, m;
escreva(DIGITE TRS NOTAS: );
leia(n1, n2, n3);
m (n1 + n2 + n3) / 3;
se ( m >= 7 ) ento
inicio
escreva(APROVADO);
escreva(MDIA = ,m);
fim;
fim.


2. Seleo Composta
Quando tivermos situaes em que duas alternativas dependem de uma mesma
condio, uma da condio ser verdadeira e outra da condio ser falsa, usamos a
estrutura de seleo composta. Supondo que um conjunto de aes dependa da
avaliao verdadeira uma nica ao primitiva dependa da avaliao falsa, usaremos
uma estrutura de seleo semelhante ao seguinte modelo:

se (<condio>) ento
incio
Comando-1;
Comando-2;
....
Comando-n;
fim;
seno
inicio
Comando-z1;
Comando-z2;
fim;

Programao de Computadores I Prof. Erlon Pinheiro
39/77
algoritmo exemplo02;
inicio
inteiro num1, num2;
escreva(Digite dois valores inteiros: );
leia(num1, num2);
se (num1 == num2) ento
escreva(NMEROS IGUAIS);
seno
escreva(NMEROS DIFERENTES);
fim.

Outro exemplo de estrutura condicional composta:
algoritmo exemplo2_1;
inicio
real n1, n2, n3, m;
escreva(DIGITE TRS NOTAS: );
leia(n1, n2, n3);
m (n1 + n2 + n3) / 3;
se (m >= 7) ento
inicio
escreva(APROVADO);
fim;
seno
inicio
escreva( REPROVADO);
fim;
escreva(MDIA = ,m);
fim.




Programao de Computadores I Prof. Erlon Pinheiro
40/77
3. Seleo Encadeada

Quando precisarmos agrupar vrias selees, formaremos uma seleo encadeada.
Normalmente, tal formao ocorre quando uma determinada ao (ou bloco de aes)
deve ser executada de acordo com um conjunto de possibilidades.

se (<condio 1>) ento
se (<condio 2>) ento
incio
Comando-1;
Comando-2;
....
Comando-n;
fim;
seno
se (<condio 3>) ento
incio
Comando-1;
Comando-2;
....
Comando-n;
fim;
seno
se (<condio 4>) ento
se (<condio 5>) ento
Comando v;
seno
Comando-f;



Programao de Computadores I Prof. Erlon Pinheiro
41/77
Exemplo de estruturas condicionais encadeadas:
algoritmo exemploO3;
inicio
real N1, N2, N3, M, FALTA;
escreva(DIGITE TRS NOTAS: );
leia(N1, N2, N3);
M (N1 + N2 + N3) / 3;
se ( M >= 7) ento
inicio
escreva(ALUNO APROVADO);
fim;
seno
se ( M >= 3) ento
inicio
escreva(PROVA DE RECUPERAO.);
FALTA 10 M;
escreva(NOTA PARA TIRAR NO EXAME = , FALTA);
fim;
seno
inicio
escreva( ALUNO REPROVADO);
fim;
escreva( SUA MDIA FOI: , M);
fim.

Programao de Computadores I Prof. Erlon Pinheiro
42/77
Exerccios de Fixao IV

1. Faa um algoritmo para ler trs valores numricos inteiros distintos e determinar o
menor deles.

2. Faa um algoritmo que leia o sexo (m ou M para masculino f ou F para feminino) e a
idade de uma pessoa e determine se a pessoa j atingiu a maioridade, sabendo-se que:
as pessoas do sexo masculino atingem a maioridade aos 18 anos e as pessoas do sexo
feminino atingem a maioridade aos 21 anos. O algoritmo deve escrever o resultado
esperado.
RESOLUO

Rastreamento

Memria Tela
sexo: F
idade: 27
Digite seu sexo (M ou F ): F <Enter>
Digite sua idade: 27 <Enter>
Atingiu a maioridade!
sexo: f
idade: 15
Digite seu sexo (M ou F ): f <Enter>
Digite sua idade: 15 <Enter>
Nao atingiu a maioridade.
sexo: M
idade: 28
Digite seu sexo (M ou F ): M <Enter>
Digite sua idade: 28 <Enter>
Atingiu a maioridade!
sexo: m
idade: 14
Digite seu sexo (M ou F ): m <Enter>
Digite sua idade: 14 <Enter>
Nao atingiu a maioridade.
sexo: $
idade: 2
Digite seu sexo (M ou F ): $ <Enter>
Digite sua idade: 2 <Enter>
Sexo invalido.






3. Suponha que os termos b1, b2 e b3 abaixo sejam expresses Verdadeiras ou Falsas e
que c1, c2, c3, c4 e c5 sejam comandos quaisquer.
Programao de Computadores I Prof. Erlon Pinheiro
43/77
algoritmo ex03;
incio
se (b1) ento
incio
c1;
fim
seno
incio
se (b2) ento
incio
se (b3) ento
incio
c2;
fim
seno
incio
c3;
c4;
fim
fim;
c5;
fim;
fim.

Dado o algoritmo acima, responda:
a) Se b1 for verdadeiro, b2 for verdadeiro e b3 for falso, quais os comandos que sero
executados ?
b) Se b1 for falso, b2 for verdadeiro e b3 for falso, quais os comandos que sero
executados ?
c) Quais os valores de b1, b2, b3 para que somente o comando C5 seja executado ?
d) Se b1 for verdadeiro, b2 for verdadeiro e b3 for verdadeiro, quais os comandos que
sero executados ?
e) Quais os valores de b1, b2 e b3 para que sejam executados os comandos c2 e c5?

4. Faa um algoritmo que leia dois nmeros, some-os e imprima o resultado caso a soma
seja maior que 10.

5. Faa um algoritmo que leia um nmero inteiro e imprima a mensagem Nmero par!
caso ele seja divisvel por 2.


6. Faa um algoritmo que leia 2 nmeros inteiros para as variveis A e B. Caso A seja
maior que B e B seja par, efetue a troca dos valores de forma que a varivel A passe a
conter o valor da varivel B e, a varivel B passe a conter o valor da varivel A.


Programao de Computadores I Prof. Erlon Pinheiro
44/77
7. Faa um algoritmo que leia um nmero inteiro positivo e imprima uma mensagem
dizendo se ele par ou impar.

8. Faa um algoritmo que leia dois valores numricos inteiros e distintos. Apresente a
diferena do maior pelo menor na tela.


9. O que est errado no algoritmo abaixo?
algoritmo erro
inicio
inteiro num1, num2, par;
printf(Digite um valor inteiro: )
leia (num1);
num2 num1 % 2.0; /* resto da diviso ou num2 num1 mod 2.0;*/
se ( num2 == 0 ) ento
inicio
par v;
fim;
seno
inicio
par f;
fim;
fim.


10. Dado o algoritmo abaixo responda qual o valor de Result aps a sua execuo?
algoritmo valor_final;
incio
real num1;
inteiro num2, result;
num1 1.5;
num2 3;
num1 num1 + 1;
se ( (num1+2<= num2) ou ((num1 + num2 > 5) ou (no (num1+pot(num2,2) / num1 + num2>=4 ))) ento
inicio
result 0;
fim;
seno
inicio
result 1;
fim;
fim.

11. Faa um algoritmo que leia dois valores numricos e imprima o maior. Caso os
nmeros sejam iguais imprima a mensagem Nmeros iguais!.

12. Faa um algoritmo que leia trs nmeros distintos e imprima o maior.

Programao de Computadores I Prof. Erlon Pinheiro
45/77
13. Faa um algoritmo que calcule e imprima o desconto do salrio de um funcionrio,
sabendo que:
a. se salrio < R$ 1000, 00, desconto de 5% sobre o salrio;
b. se salrio >= R$ 1000, 00 e <= R$2000,00, desconto de 10% sobre o
salrio;
c. se salrio > R$ 2000, 00, desconto de 15% sobre o salrio;

14. Faa um algoritmo que efetue a leitura de trs valores numricos reais distintos e
apresente os valores lidos em ordem crescente.


15. Faa um algoritmo que leia 2 notas e o nmero de faltas semestrais de um
determinado aluno e calcule a mdia aritmtica entre elas. Imprima a mdia e uma
mensagem informando a situao final do aluno. O aluno estar aprovado caso sua mdia
seja maior ou igual a 7. O aluno ter direito a uma recuperao caso sua mdia seja maior
ou igual a 3, caso contrrio estar reprovado. Mesmo que possua mdia para aprovao ou
recuperao, o aluno estar reprovado caso possua mais de 20 faltas.


16. Dado o algoritmo abaixo responda:
a) Se b1 = VERDADEIRO e b2 = VERDADEIRO, o que ser impresso?
b) Se b1 = FALSO e b2 = VERDADEIRO, o que ser impresso?
c) Se b1 = FALSO e b2 = FALSO, o que ser impresso?
Onde c1, c2 e c3 so mensagens, isto e, cadeias de caracteres.
algoritmo teste;
incio
se ( b1 )ento
incio
escreva (c1);
fim;
seno
incio
se ( b2) ento
incio
escreva (c2);
fim;
seno
incio
escreva (c3);
fim;
fim;
fim.

17. O que ser impresso aps a execuo do algoritmo abaixo se:
a) num = 10 b) num = 0 c) num = - 4

algoritmo resultado;
Programao de Computadores I Prof. Erlon Pinheiro
46/77
incio
/* declarao de variveis */
inteiro num;
leia ( num);
se (num > 0) ento
escreva (numero positivo)
seno
se (num < 0) ento
escreva (numero negativo)
seno
escreva (zero);
fim.

18. Uma empresa decide dar um aumento de 4% aos funcionrios cujo salrio inferior
a 500 reais. Escreva um algoritmo que receba o salrio de um funcionrio e imprima o
valor do salrio reajustado ou uma mensagem caso o funcionrio no tenha direito ao
aumento.


19. Faa um algoritmo que verifique a validade de uma senha fornecida pelo usurio. A
senha correta o nmero: 12345. O algoritmo deve imprimir mensagem de permisso ou
negao de acesso.

20. Faa um algoritmo que receba a idade de uma pessoa e imprima mensagem de
maioridade ou no. Assuma que a maioridade ocorre somente aos 21 anos.

21. Faa um algoritmo que receba a altura e o sexo de uma pessoa, calcule e imprima o
seu peso ideal, utilizando as frmulas abaixo. Assuma M ou F como sendo os valores
vlidos para o sexo de uma pessoa.
para homens: (72.7 * ALTURA) 58
para mulheres: (62.1 * ALTURA) 44.7

Programao de Computadores I Prof. Erlon Pinheiro
47/77
4. Seleo de Mltipla Escolha

Quando um conjunto de valores discretos precisa ser testado e aes diferentes so
associadas a esses valores, estamos diante de uma seleo encadeada homognea do
tipo se seno se. Como esta situao bastante freqente na construo de
algoritmos que dependem de alternativas, utilizaremos uma estrutura especfica para
estes casos, a seleo de mltipla escolha.

O modelo que expressa as possibilidades o seguinte:

escolha(X)
inicio
caso V1 : C1; pare;
caso V2 : C2; pare;
caso V3 : C3; pare;
caso V4 : C4;
fim;

Caso o contudo da varivel seletora X seja igual ao valor Vn, ento, o comando Cn ser
executado; caso contrrio, sero inspecionados os outros casos at ser encontrada uma
igualdade ou terminarem os caso.

Para executramos um comando que possui mais de um valor em que se verifica sua
necessidade, agrupamos todos esses valores em nico caso. E, para executarmos um
comando que se verifica com todos os outros valores, exceto os discriminados caso a
caso, inclumos outra situao: caso contrrio.

escolha(X)
inicio
caso V1 : C1; pare;
caso V2: caso V3 : C2; pare;
caso V4 : C3; pare;
caso V5 : C4; pare;
caso contrrio: C5;
fim;
Programao de Computadores I Prof. Erlon Pinheiro
48/77
Exemplos
1 Construa um programa que leia um valor numrico inteiro e uma opo de operao
( 1 Raiz Quadrada, e 2 Valor ao Quadrado) a qual o nmero deve ser submetido.

algoritmo exemplo_01;
inicio
inteiro num, op;
real resultado;
escreva(Digite o valor inteiro: );
leia(num);
escreva(Escolha uma opo: );
escreva(1: Raiz ou 2: Quadrado: );
leia(op);
escolha(op)
inicio
caso 1: resultado rad(num); pare;
caso 2: resultado pot(num, 2);
fim;
escreva(O resultado , resultado);
fim.

Outra verso:
algoritmo exemplo_01_v2;
inicio
inteiro num, op;
escreva(Digite o valor inteiro: );
leia(num);
escreva(Escolha uma opo: );
escreva(1: Raiz ou 2: Quadrado: );
leia(op);
escolha(op)
inicio
caso 1: escreva( O resultado ,rad(num));
pare;
caso 2: escreva(O resultado ,pot(num, 2));
pare;
caso contrrio: escreva(Opo Invlida!!!!);
fim;
fim.




Importante! A restrio da estrutura escolha que o seletor s pode ser varivel do
tipo inteiro ou um nico caractere.

Programao de Computadores I Prof. Erlon Pinheiro
49/77
2 Construa um algoritmo que leia um caractere, e determine se este uma vogal
maiscula, ou um digito numrico (caractere numrico), ou um operador aritmetico, ou
seno um outro caractere.


algoritmo exemplo_02;
inicio
caractere car;
escreva(Digite um caractere: );
leia(car);
escolha (car)
inicio
caso A: caso E: caso I: caso O: casoU: escreva(Vogal maiscula);
pare;
caso 0: caso 1: caso 2: caso 3: caso 4: caso 5: caso 6:
caso 7: caso 8: caso 9: escreva(Valor numrico);
pare;
caso +: caso -: caso *: caso /: escreva(Operador aritmtico);
pare;
caso contrrio : escreva(Voc digitou outro caractere);
fim;
fim.

Exerccios de Fixao V
0000000
Comando de seleo mltipla
1. Leia uma vogal maiscula e imprima a vogal subseqente.
Resoluo:
algoritmo exerccio1;
inicio
caractere car;
escreva(Digite uma vogal maiscula: );
leia(car);
escolha (car)
inicio
caso A: escreva(Vogal subsequente: E);
pare;
caso E: escreva(Vogal subsequente: I);
pare;
caso I: escreva(Vogal subsequente: O);
pare;
caso O: escreva(Vogal subsequente: U);
pare;
casoU: escreva(Vogal subsequente: A);
pare;
caso contrrio : escreva(Voc digitou outro caractere);
fim;
Programao de Computadores I Prof. Erlon Pinheiro
50/77
fim.

2. Leia um caractere e imprima a mensagem uma vogal!, caso o caractere lido seja
uma vogal. Caso contrrio imprima O caractere lido no uma vogal!.



Resoluo:
algoritmo acha_vogal;
inicio
caractere car;
//Entrada de dados
escreva(Digite um caractere: );
leia( car );
//Processamento e saida de dados
escolha( car )
inicio
caso A: caso a: caso E: caso e: caso O: caso o: caso U: caso u:
caso I: caso i: escreva( O caracter e uma vogal!);
pare;
caso contrario: escreva(O caractere lido no e uma vogal!);
fim;
fim.




3. Leia o ms e o ano (em nmeros) e exiba o nmero de dias do ms digitado.
Obs.: meses com 30 dias: 4, 6, 9, 11
meses com 31 dias: 1, 3, 5, 7, 8, 10, 12
fevereiro possui 28 dias em ano no bissexto e 29 dias em ano bissexto. Um
ano identificado como bissexto quando ANO mod 4 = 0 e se Ano for divisvel
por 100 ele tambm deve ser divisvel por 400.

4. Leia o nmero de um ms e imprima o nome do ms por extenso.

5. Leia uma data (dia, ms e ano) em valores numricos e a imprima por extenso como
mostrado no exemplo abaixo:
Lido: 21 04 1970
Escrito: 21 de abril de 1970

6. No curso de Introduo a Computao, a nota final do estudante calculada a partir de 3
notas atribudas respectivamente a um trabalho de laboratrio, a uma avaliao semestral e
a um exame final. As notas variam de 0 a 10 e a nota final a mdia ponderada das 3 notas
mencionadas. A tabela abaixo fornece os pesos das notas:
trabalho de laboratrio - peso 2
Programao de Computadores I Prof. Erlon Pinheiro
51/77
avaliao semestral - peso 3
exame final - peso 5
Faa um algoritmo que receba as 3 notas, calcule e imprima a mdia final e o
conceito desse estudante. O conceito segue a tabela abaixo:
Mdia Final Conceito
8.0 |___| 10.0 A
7.0 |___ 8.0 B
6.0 |___ 7.0 C
5.0 |___ 6.0 D
< 5.0 E

7. Faa um algoritmo que receba um cdigo de origem (nmero inteiro) e imprima a sua
procedncia. A procedncia obedece tabela abaixo. Caso um cdigo invlido seja digitado
imprima uma mensagem de erro.

Cdigo de Origem Procedncia
1 Sul
2 Norte
3 Leste
4 Oeste
5 ou 6 Nordeste
7,8 ou 9 Sudeste
10 at 20 Centro-Oeste
21 at 30 Nordeste
Resoluo:

algoritmo identifica_regiao;
inicio
inteiro codigo;

//Entrada de dados
escreva( Digite o codigo da regio: );
leia(codigo);
//Processamento e sada de dados
escolha( codigo )
inicio
caso 1: escreva(Procedencia: Regiao Sul);
pare;
caso 2: escreva(Procedencia: Regiao Norte);
pare;
caso 3: escreva(Procedencia: Regiao Leste);
pare;
caso 4: escreva(Procedencia: Regiao Oeste);
pare;
caso 5: caso 6: escreva(Procedencia: Regiao Nordeste);
pare;
caso 7: caso 8: caso 9: escreva(Procedencia: Regiao Sudeste);
Programao de Computadores I Prof. Erlon Pinheiro
52/77
pare;
caso contrrio: se ( (codigo>=10)&&(codigo<=20)) ento
escreva(Procedencia: Regiao Centro-Oeste);
seno
se (( codigo>=21)&&(codigo<=30))
escreva(Procedencia: Regiao Nordeste);
seno
escreva(Codigo invalido);
fim //escolha
fim.//do algoritmo









Cdigo de Origem Procedncia
1 Sul
2 Norte
3 Leste
4 Oeste
5 ou 6 Nordeste
7,8 ou 9 Sudeste
10 at 20 Centro-Oeste
21 at 30 Nordeste














8. Faa um algoritmo que receba o cdigo correspondente ao cargo de um funcionrio e
imprima seu cargo e o percentual de a umento ao qual este funcionrio tem direito seguindo
a tabela abaixo:


Programao de Computadores I Prof. Erlon Pinheiro
53/77
Cdigo Cargo Percentual
1 Escriturrio 50%
2 Secretrio 35%
3 Caixa 20%
4 Gerente 10%
5 Diretor no tem aumento


9. Faa um algoritmo que mostre um menu com as seguintes opes:
1. soma
2. multiplicao
3. finalizar
O algoritmo deve receber a opo desejada, receber os dados necessrios para a operao
de cada opo, realizar a operao e imprimir o resultado. Na opo finalizar nada deve
acontecer.

10. Uma companhia de seguros tem trs categorias de seguros baseadas na idade e
ocupao do segurado. Somente pessoas com pelo menos 18 anos e no mais de 70 anos
podem adquirir aplices de seguros. As classes de ocupaes foram definidas em trs
grupos de risco. A tabela a seguir fornece as categorias em funo da faixa de idade e do
grupo de risco:

Cdigo do Grupo de Risco
Idade
Baixo Mdio Alto
18 a 24 7 8 9
25 a 40 4 5 6
41 a 70 1 2 3

Faa um algoritmo que receba a idade (um nmero inteiro) e o grupo de risco
(representados pelos caracteres: `b`: baixo`; `m`: mdio ou `a`: alto) e determine e
imprima o cdigo do seguro.




UNIDADE V Comandos de Repetio

O que vamos ver:

Programao de Computadores I Prof. Erlon Pinheiro
54/77
Comandos de Repetio com teste no incio
Comandos de Repetio com teste no final
Comandos de Repetio com varivel de controle


Definio: Comandos de Repetio
So comandos caracterizados por permitir que uma seqncia de comandos seja
executada um nmero repetido de vezes. (Lembrem-se do exemplo inicial do
algoritmo da troca da lmpada )

1. Repetio com teste no incio

Consiste de uma estrutura de controle do fluxo de execuo que permite repetir
diversas vezes um mesmo trecho do algoritmo, porm, verificando ANTES de cada
execuo se permitido executar o mesmo trecho.

Forma geral do comando enquanto:
enquanto (<Condio>) faa
inicio
<comando1>;
<comando2>;
...
<comandon>;
fim;

Antes da seqncia de comandos ser executada, a condio avaliada. Caso seja
verdadeira, a seqncia ser repetidamente executada enquanto a condio
permanecer verdadeira.

Note que se a condio for falsa j na primeira avaliao, a seqncia de comandos
no ser executada.

A condio dever se tornar falsa em algum momento, caso contrrio a seqncia
ser executada indefinidamente (Loop infinito).

Exemplo 1: Mostrar os nmeros inteiros de 1 a 10.
algoritmo numeros;
inicio
const inteiro maior = 10;
inteiro i;

i 1;
escreva( Nmeros inteiros de 1 at , maior, : );
enquanto ( i <= maior) faa
incio
Programao de Computadores I Prof. Erlon Pinheiro
55/77
escreva (i, );
i i + 1;
fim;
fim.

A aplicao do comando enquanto se d em problemas onde o nmero de repeties
no conhecido. O exemplo anterior tem apenas exemplo didtico, pois existe outro
comando mais apropriado para este caso.

Exemplo 2: Ler uma seqncia de salrios terminada por um salrio menor que
zero. Para cada salrio, mostrar o novo salrio reajustado e, ao final, a mdia dos
salrios reajustados. O valor do reajuste deve ser lido no incio do algoritmo.
algoritmo mediasalarial;
incio
real salario, reajuste, novo_sal, tot_reaj, media;
inteiro num_sal;
tot_reaj 0;
num_sal 0;
escreva (Entre com o reajuste : );
leia (reajuste);
escreva (Entre com o salrio ou salrio negativo para parar: );
leia (salario);
enquanto ( salario > 0) faa
incio
novo_sal salario + (salario * reajuste) / 100;
tot_reaj tot_reaj + novo_sal;
num_sal num_sal + 1;
escreva (Salrio reajustado: , novo_sal);
escreva (Entre com o salrio ou salrio negativo para parar: );
leia (salario);
fim;
se (num_sal > 0) ento
incio
media tot_reaj / num_sal;
escreva (Mdia dos salrios = , media);
fim;
seno
escreva (No existem dados a serem processados);
fim.
Programao de Computadores I Prof. Erlon Pinheiro
56/77
Exemplo 3: Ler uma seqncia de vogais terminada por ponto e exibir os totais de
vogais e no vogais encontradas.
Resoluo:
algoritmo conta_vogal;
incio
const caractere fim = .;

caractere car;
inteiro cont_a, cont_e, cont_i, cont_o, cont_u, outros;

cont_a 0; cont_e 0; cont_i 0;
cont_o 0; cont_u 0; outros 0;
escreva (Entre com o primeiro caractere ou . para parar: );
leia (car);
enquanto ( car != fim) faa
incio
escolha (car)
inicio
caso a: caso A : cont_a cont_a + 1; pare;
caso e: caso E : cont_e cont_e + 1; pare;
caso i : caso I : cont_i cont_i + 1; pare;
caso o: caso O : cont_o cont_o + 1; pare;
caso u: caso U : cont_u cont_u + 1; pare;
caso contrrio: outros outros +1;
fim;
escreva (Entre com o prximo caractere ou . para parar: );
leia (car);
fim;
escreva (O total de as : , cont_a);
escreva (O total de es : , cont_e);
escreva (O total de is : , cont_i);
escreva (O total de os : , cont_o);
escreva (O total de us : , cont_u);
escreva (O total de outros : , outros);
fim.
Programao de Computadores I Prof. Erlon Pinheiro
57/77
2. Repetio com teste no final

Para realizar uma repetio com teste no final, utilizamos a estrutura faa enquanto,
que permite que o bloco ou ao primitiva seja repetido enquanto uma determinada
condio seja verdadeira. O modelo genrico desse tipo de repetio o seguinte:

faa
incio
<comando1>;
<comando2>;
...
<comandon>;
fim;
enquanto(<Condio>);

Este comando, assim como o comando ENQUANTO, usado quando no conhecido
o nmero de vezes que uma seqncia de comandos dever ser executada. Porm a
seqncia ser executada pelo menos uma vez, visto que a avaliao da condio
feita ao final de cada interao.

A seqncia ser executada repetidamente at que a condio seja falsa. Esta
condio deve ser uma expresso que retorne um valor lgico.

A condio dever se tornar falsa em algum momento, caso contrrio a seqncia
ser executada indefinidamente (Loop infinito).

Exemplo 4: Mostrar os nmeros inteiros de 1 a 10.
algoritmo numeros;
incio
const inteiro maior = 10;
inteiro i;
i 1;
escreva( Os nmeros inteiros de 1 a 10:);
faa
inicio
escreva (i , );
i i + 1;
fim;
enquanto (i <= maior);
fim.

A aplicao do comando faa enquanto se d em problemas onde o nmero de
repeties no conhecido, mas se deseja que a seqncia de comandos seja
executada pelo menos uma vez. O exemplo anterior tem apenas exemplo didtico,
pois existe um outro comando mais apropriado para este caso.

Programao de Computadores I Prof. Erlon Pinheiro
58/77
Exemplo 5: Mostrar os nmeros inteiros de 1 a 10, sendo que para cada nmero
mostrado o algoritmo deve aguardar que sejam pressionadas a tecla C e ENTER para
continuar.

algoritmo numeros;
incio
const inteiro maior = 10;
inteiro i ;
caractere tecla ;
i 1;
escreva( Os nmeros inteiros de 1 a 10:);
faa
inicio
escreva (i);
i i+ 1;
faa
inicio
escreva (tecle [C] para continuar);
leia (tecla);
fim;
enquanto ((tecla != c ) e (tecla != C));
fim;
enquanto (i <= maior);
fim.

3. Repetio com varivel de controle

Nas estruturas de repetio vistas at agora, ocorrem casos em que se torna difcil
determinar o nmero de vezes em que o bloco de comandos ser executado.
Sabemos que ele ser executado enquanto uma condio for satisfeita. A estrutura
para diferente, j que sempre repete a execuo do bloco de comandos um nmero
determinado de vezes, pois ela no prev uma condio e possui limites fixos.
Modelo genrico:
para (< inicializao da var> ; <condio de repetio> ; <incremento da var>)
incio
<comando1>;
<comando2>;
...
<comandon>;
fim;
O comando para utilizado quando se deseja executar uma seqncia de comando
repetidamente, um nmero conhecido e fixo de vezes.

O nmero de vezes controlado pela varivel de controle <var>. Na primeira parte <
inicializao da var> inicializa a varivel de controle quando o comando executado
pela primeira vez. A segunda parte <condio de repetio> testa se a repetio deve
Programao de Computadores I Prof. Erlon Pinheiro
59/77
continuar e a terceira parte incrementa a varivel de controle <var> (que
geralmente de uma unidade).

Nos exemplos abaixo a seqncia ser executada 10 vezes.

Exemplo 5: Mostrar os nmeros inteiros de 1 a 10 e de 10 a 1.
algoritmo numeros;
incio
const inteiro maior = 10;
inteiro i;
escreva( Os nmeros inteiros de 1 a 10:);
para( i 1 ; i<= maior ; i i + 1)
incio
escreva (i, );
fim;
escreva( Os nmeros inteiros de 10 a 1:);
para (i 10 ; i>= 1 ; i i -1)
incio
escreva (i , ); //neste caso, o incio/fim so dispensveis (Apenas um comando)
fim;
fim.

O incremento/decremento da varivel de controle na maioria das vezes igual a 1
ou -1.

Geralmente o tipo da varivel de controle inteiro.

O que aconteceria se maior = 0 ?


Exerccios de Complementares: Comando Enquanto
01. Escreva um algoritmo que receba a idade de um grupo de pessoas, calcule e imprima
a quantidade de pessoas maiores de idade (idade >= 18 anos). Para encerrar a entrada de
dados, deve ser digitado um valor < 0.
Resoluo:
algoritmo conta_maior_idade;
inicio
inteiro idade, cont 0;

escreva(Digite a primeira idade ou idade < 0 para parar: );
leia(idade);

enquanto ( idade >= 0 ) faa
inicio
se ( idade >= 18 ) ento
cont cont + 1;
Programao de Computadores I Prof. Erlon Pinheiro
60/77

escreva(Digite a proxima idade ou idade < 0 para parar: );
leia(idade);
fim;

se ( cont > 0 ) ento
escreva ( Total que atingiu a maioridade: , cont);
seno
escreva( Ningum atingiu a maioridade!);
fim.










02. Escreva um algoritmo que receba a idade de um grupo de pessoas, calcule e imprima
a porcentagem de cada faixa etria em relao ao total de pessoas.

As faixas etrias so:
01 - 15 anos - A
16 - 30 anos - B
31 - 45 anos - C
46 - 60 anos - D
>= 61 anos - E

Para encerrar a entrada de dados, digite uma idade <= 0.

03. Escreva um algoritmo que receba um conjunto de valores inteiros e positivos,calcule
e imprima o maior e o menor valor do conjunto.
Para encerrar a entrada de dados, deve ser digitado o valor zero.
Para valores negativos, deve ser enviada uma mensagem.
Esses valores (zero e negativo) no entraro nos clculos.

04. Faa um algoritmo que apresente um menu de opes (apresentado abaixo) para o
clculo das operaes entre dois nmeros reais lidos previamente:
Programa Calculadora
[1] adio
[2] subtrao
[3] multiplicacao
[4] diviso
[5] sair do programa
Programao de Computadores I Prof. Erlon Pinheiro
61/77
Escolha uma opcao:
Possibilitar ao usurio escolher a operao desejada, mostrar o resultado e voltar ao
menu de opes. O programa s deve permitir a sada se o usurio teclar 5.

05. Faa um algoritmo receba o valor e o cdigo de vrias mercadorias vendidas em um
determinado dia. Os cdigos obedecem a tabela abaixo:

L ou l - limpeza
A ou a - alimentao
H ou h - higiene

Calcule e imprima:
total vendido naquele dia, com todos os cdigos juntos;
total vendido naquele dia em cada um dos cdigos.
Para encerrar a entrada de dados, digite o valor da mercadoria zero.

Exerccios Complementares: Comando faa/enquanto:
01. Faa um algoritmo que receba como entrada, uma lista de nmeros positivos ou
negativos finalizada com o nmero zero e fornea, como sada, a soma dos
nmeros positivos, a soma dos nmeros negativos e a soma das duas parciais.
Resoluo:
algoritmo soma_numeros;
inicio
inteiro num, soma_pos 0, soma_neg 0, soma_total;
//Entrada e processamento de dados
faa
inicio
escreva(Digite um numero inteiro ou 0 para parar: );
leia(num);
se ( num != 0 ) entao
inicio
se ( num > 0 ) entao
soma_ pos soma_pos + num;
senao
soma_neg soma_neg + num;
fim; // fim se/entao
fim; // fim do bloco faa/enquanto
enquanto ( num != 0 );
soma_total soma_pos + soma_neg;
//Sada de dados
escreva(Soma dos positivos: , soma_pos);
escreva(Soma dos negativos: , soma_neg);
escreva(Soma Total: , soma_total);
fim.


Programao de Computadores I Prof. Erlon Pinheiro
62/77

02. Faa um algoritmo que receba a idade e a altura de vrias pessoas, calcule e imprima
a mdia das alturas das pessoas com mais de 50 anos. Para encerrar a entrada de dados,
digite idade <= zero.

03. Construa um algoritmo que leia um conjunto de valores inteiros e positivos, e
determine qual o menor e o maior valor do conjunto. Para valor final de entrada
considerar o valor -1 que no deve ser considerado.

Exerccios Complementares: Comando para:
01. Escreva um algoritmo para calcular N! (fatorial de N), sendo que o valor inteiro de
N fornecido pelo usurio.

Sabe-se que: N! = 1 * 2 * 3 * ... * (N-1) * N;
0! = 1
Resoluo:
algoritmo calcula_fatorial;
inicio
inteiro num, fat 1, i;

//Entrada de Dados com tratamento de erro
faa
inicio
escreva(Digite um numero inteiro >=0: );
leia(num);
se ( num < 0 ) ento
escreva(Numero Invalido!);
fim;
enquanto( num < 0 );
//Processamento de dados
para( i 2; i < = num; i i + 1 )
fat fat * i ;
//Sada de dados
escreva ( num, ! = , fat);
fim.









Programao de Computadores I Prof. Erlon Pinheiro
63/77
02. A converso de graus Farenheit para Centgrados obtida por C = (5/9.0) * (F - 32).
Faa um algoritmo que calcule e escreva uma tabela de graus Centgrados e os graus
Farenheit, que variam de 50 a 65 de 1 em 1.


03. Faa um algoritmo que receba a idade e o estado civil : C - casado, S - solteiro, V -
vivo e D - desquitado, de 10 pessoas. Calcule e imprima:

a quantidade de pessoas casadas;
a mdia das idades das pessoas vivas.

Lembre-se do exerccio 11 de algoritmos em Portugol:

11 - Faa um algoritmo que receba um nmero inteiro, calcule e imprima a
tabuada desse nmero.
Resoluo:

algoritmo tabuada;
inicio
inteiro i, num;
//Entrada de dados
escreva(Digite um numero para a tabuada: );
leia(num);
//Processamento e sada de dados
escreva(A tabuada de multiplicao do numero , num, : );
para ( i 1; i <= 10; i i + 1 )
escreva(num , * , i, = ,i * num);
fim.

Rastreamento

Memria Tela
i: 1, 2, 3, 4, 5, 6, 7,
8, 9, 10, 11
num: 2

Digite um numero para a tabuada: 2 <Enter>
2 * 1 = 2
2 * 2 = 4
2 * 3 = 6
2 * 4 = 8
2 * 5 = 10
2 * 6 = 12
2 * 7 = 14
2 * 8 = 16
Programao de Computadores I Prof. Erlon Pinheiro
64/77
2 * 9 = 18
2 * 10 = 20







Exerccios de Fixao VI

1. Faa um algoritmo que imprima todos os nmeros inteiros no intervalo [0, 100].

2. Faa um algoritmo que leia uma seqncia de N nmeros positivos e calcule e
imprima a mdia aritmtica entre eles. A leitura encerrada quando um nmero
negativo ou nulo for digitado.

3. Faa um algoritmo que leia o peso, em quilogramas, de N bois e calcule e imprima:
o peso mdio do rebanho;
o peso do boi mais gordo; e
o peso do boi mais magro.
Encerre a leitura quando um peso nulo for digitado.

4. Faa um algoritmo que leia 50 dados contendo as medidas de diferentes retngulos
(base, altura), e emita um relatrio contendo o permetro e a rea de cada
retngulo.

5. Escreva um algoritmo que encontre o maior e o segundo maior nmero de uma
srie de nmeros lidos do teclado.
Obs: - Use uma marca (um flag) para a sada do comando de repetio, uma vez que o nmero de
repeties no conhecido.

6. Faa um algoritmo que leia uma seqncia de nmeros inteiros positivos (um por
vez), e verifique se eles so pares ou impares.
Obs: - Use uma marca (um flag) para a sada do comando de repetio, uma vez que o nmero
de repeties no conhecido.

7. Seja S = 2, 3, 5, 8, 13, 21, 34, 55, ... um exemplo de uma srie de Fibonacci.
Perceba que o padro de comportamento desta srie tal que cada nmero a partir
do terceiro a soma dos dois anteriores. Escreva um algoritmo que gere uma srie
de Fibonacci at o n-simo termo, onde n ser um valor lido.
Dica: - leia os dois primeiros termos.
Resoluo:
algoritmo serie_fibonacci;
inicio
Programao de Computadores I Prof. Erlon Pinheiro
65/77
inteiro n, t1 2, t2 3, t3, cont 2;
//Entrada de dados com trat. de erro
faa
inicio
escreva(Entre com o numero de termos ( >=3): );
leia( n );
se ( n < 3 ) ento
escreva(Numero de termos invalido!);
fim;
enquanto( n < 3 );
//Processamento e sada de dados
escreva(Serie de Fibonacci: , t1, , t2);
enquanto( cont < n )
inicio
t3 t1 + t2;
escreva( t3, );
t1 t2;
t2 t3;
cont cont + 1;
fim;
fim.

8. Dada a srie: 2 3 4 9 16 29 54 99... onde cada elemento a partir do quarto a
soma dos trs termos que lhe antecedem. Faa um algoritmo que leia apenas os trs
termos iniciais, que podem ser quaisquer, e, a partir da, obtenha e imprima mais 20
termos da referida srie.

9. Faa um algoritmo que calcule e imprima o valor da soma:
S = 1 + 3 + 5 + 7 + ... + 99
1 2 3 4 50


10. Faa um algoritmo para calcular o valor da equao abaixo. Onde o valor de n ser
lido.

=
=
n
k
k S
1
2
6


11. Faa um algoritmo que leia um conjunto de 30 matrculas dos vendedores de uma
firma comercial, juntamente com os respectivos totais de vendas dirias e verifique
quantos deles esto na faixa compreendida entre R$500.00 e R$1500.00. Imprima
uma listagem contendo todas as matrculas das pessoas situadas no intervalo
especificado, bem como o total delas.

12. Faa um algoritmo que leia uma seqncia de N (o valor de N lido durante a
execuo do algoritmo) conjuntos de dados, cada conjunto contendo a conta do
correntista de uma caderneta de poupana e seu respectivo saldo mdio. Imprima:
Programao de Computadores I Prof. Erlon Pinheiro
66/77
a) o total de clientes bons, clientes que possuem o saldo mdio entre 500 e 1000
reais;
b) o total de clientes razoveis, clientes que possuem o saldo mdio menor 500 reais;
c) o nmero da conta com maior saldo mdio.

13. Faa um algoritmo que leia 80 nmeros reais, imprima o menor e o nmero de vezes
que ele aparece.
Resoluo:
algoritmo acha_e_conta_menor;
inicio
real num, menor;
inteiro vezes , i;

escreva(Digite o primeiro numero real: );
leia( num );
menor num;
vezes 1;

para ( i 2; i<= 80; i i+1)
inicio
escreva(Digite o , i,o numero real: );
leia( num );
se ( num < menor)
inicio
menor num;
vezes 1;
fim
seno
se ( num == menor )
vezes vezes + 1;
fim
escreva(O menor numero foi , menor, e apareceu , vezes, vezes);
fim



14. O sistema de avaliao de uma determinada disciplina obedece aos seguintes
critrios :
durante o ano letivo so dadas trs notas.
a nota final obtida pela mdia aritmtica das notas dadas durante o curso.
considerado aprovado o aluno que obtiver a nota final superior ou igual a 7.0
e que tiver comparecido a um mnimo de 40 aulas.
Faa um algoritmo que:
a) Leia um conjunto de dados contendo a matricula, as trs notas e a freqncia
de 100 alunos.
b) Imprima:
Programao de Computadores I Prof. Erlon Pinheiro
67/77
para cada aluno, o nmero de matricula, a freqncia, a nota final e uma
mensagem informando se este esta aprovado ou reprovado;
a maior e a menor nota da turma;
a nota mdia da turma; e
o total de alunos reprovados.

15. Faa um algoritmo que leia uma seqncia de dados contendo a matrcula e a
medida da altura dos funcionrios de uma empresa e imprima:
altura mdia dos funcionrios;
o total de funcionrios baixos (altura inferior a 1.55 m); e
o total de funcionrios de altura mediana (1.55m <= Altura <= 1.75m).
Obs: - utilize uma marca (um flag) para indicar o final da entrada de dados.


16. Um servio de correspondncia sentimental mantm um fichrio de seus clientes.
Cada ficha contm as seguintes informaes: Matrcula, Sexo (M, m, F ou f), Idade,
Altura (em m), Peso (em quilogramas), Cor dos olhos (1-azul, 2-castanhos, 3-
outros), Cor dos cabelos (1- ruivos, 2- loiros, 3- outros).
Prepare um algoritmo que leia este fichrio e imprima as matrculas de:
Todos os homens loiros de olhos castanhos, altura maior que 1.75 m, pesando
entre 75Kg e 95 Kg.
Todas as mulheres ruivas de olhos azuis, altura entre 1.65 m e 1.75 m, pesando
menos de 60 Kg.

Obs: - utilize uma marca (um flag) para indicar o final da entrada de dados.
Resoluo:
//Usarei a digitao de uma matricula negativa ou nula como flag de parada

Algoritmo correio_sentimental;
inicio
inteiro matricula, idade, cor_olhos, cor_cab;
real altura, peso;
caractere sexo;

faca
inicio
escreva(Digite a matricula ou matricula <= 0 para parar: );
leia(matricula);
se ( matricula > 0 )
inicio
escreva(Sexo (m ou f): );
leia(sexo);
escreva(Idade: );
leia(idade);
escreva(Altura e peso: );
leia(altura,peso);
escreva(Cor dos olhos: );
escreva(1. Azul ou 2. Castanho ou 3. Outros );
Programao de Computadores I Prof. Erlon Pinheiro
68/77
leia(cor_olhos);
escreva(Cor dos cabelos: );
escreva(1. Ruivos ou 2. Loiros ou 3. Outros );
leia(cor_cab);
se ( (sexo == F) ||(sexo==f))
se ( cor_cab == 1 )
se (cor_olhos == 1 )
se ( (altura>=1.65) && ( altura<=1.75))
se ( peso < 60)
escreva(A matricula e , matricula);

se ( (sexo == M) ||(sexo==m))
se ( cor_cab == 2 )
se (cor_olhos == 2 )
se ( altura>1.75)
se ( (peso >= 75) && ( peso <=95))
escreva(A matricula e , matricula);
fim//se matricula
fim
enquanto(matricula>0);
fim











17. Faa um algoritmo ser fornecido ao Detran para provimento das informaes
abaixo descritas, referentes a acidentes em estradas:
percentagem de motoristas no-habilitados;
percentagem de homens no volante; e
percentagem de motoristas inexperientes (menos de 20 anos).
Os dados de entrada contm o ano de nascimento, o sexo e o cdigo de habilitao dos
motoristas, sendo: Cdigo de Habilitao = 1 - motorista habilitado e Cdigo de
Habilitao = 2 - motorista no-habilitado.
Obs: - utilize uma marca (um flag) para indicar o final da entrada de dados.

18. Faa um algoritmo que teste a validade de uma senha digitada no teclado. A
digitao deve ser refeita at que a senha correta seja digitada ou o nmero de
tentativas seja maior que 5. A senha correta o nmero 12345.

Programao de Computadores I Prof. Erlon Pinheiro
69/77
19. Faa um algoritmo que tendo lido uma vogal minscula imprima sua
correspondente maiscula. Repita a leitura quantas vezes for necessrio at que
uma vogal maiscula seja digitada como entrada.

20. Faa um algoritmo que leia um nmero inteiro no intervalo [1, 12] e imprima o
nome do ms correspondente. Garanta que somente nmeros no intervalo [1, 12]
sero aceitos.

21. Faa um algoritmo que imprima a soma de todos os inteiros no intervalo [5, 30].

22. Faa um algoritmo que leia N notas, N lido, calcule e imprima a mdia aritmtica
entre elas.

23. Faa um algoritmo que leia 50 nmeros e imprima o menor e o maior.

24. Dada a srie 2 3 4 9 16 29 54 .... Faa um algoritmo que leia os trs primeiros
termos e em seguida imprima os prximos 20 termos.

25. Faa um algoritmo que leia o preo e o cdigo de 20 mercadorias presentes em uma
cesta bsica. Os cdigos obedecem tabela abaixo:
l ou L : limpeza
a ou A : alimentao
h ou H : higiene
Calcule e imprima:
- o preo total da cesta bsica; e
- para cada cdigo, o preo total das mercadorias presentes na cesta.

26. De posse de um conjunto de dados contendo a altura e o sexo (F, f, m ou M) de 15
pessoas. Faa um algoritmo que calcule e imprima:
a maior e a menor altura do grupo;
a altura mdia das mulheres; e
o nmero de homens.

27. A converso de graus Farenheit para Celsius obtida por C = 5/9*(F-32). Faa um
algoritmo que calcule e escreva uma tabela de equivalncia entre graus Celsius e
graus Farenheit, com os valores variando de 1 em 1 de 50 a 65 graus Farenheit.

28. Uma empresa decidiu fazer um levantamento dos seus 500 funcionrios. Faa um
algoritmo que leia para cada funcionrio a idade, o sexo (F, f, m ou M), experincia
de mais de 3 anos no servio (S, s, n ou N). Calcule e escreva:
o nmero de funcionrios do sexo feminino;
o nmero de funcionrios do sexo masculino;
a idade mdia dos homens com mais de 3 anos de experincia no servio;
a porcentagem dos homens com mais de 45 anos entre o total de homens;
o nmero de mulheres com idade inferior a 35 anos com mais de 3 anos de
experincia; e
Programao de Computadores I Prof. Erlon Pinheiro
70/77
a menor idade entre as mulheres com experincia no servio.

29. Faa um algoritmo que imprima as tabuadas de multiplicao dos nmeros de 1 a
10.


30. Faa um algoritmo que receba 2 notas de 10 alunos. Calcule para cada aluno sua
mdia e imprima uma mensagem de acordo com a tabela abaixo:
Mdia Mensagem
Abaixo de 3 Aluno Reprovado
Entre 3 e 7 Aluno de Recuperao
Maior ou igual a 7 Aluno Aprovado



Programao de Computadores I Prof. Erlon Pinheiro
71/77
UNIDADE VI Estrutura de Dados Composta Homognea e Unidimensional

O que vamos ver:

Vetores
Tipos Estruturados
Variveis Compostas Homogneas
Variveis Compostas Unidimensionais VETORES

1. Vetores
Retornando ao conceito de informaes e tipos de informao, podemos notar que foi
feita uma diviso imaginria, a fim de tornar mais simples a classificao das
informaes. Talvez alguns j tenham notado que a quantidade de tipos de dados
primitivos no suficiente para representar toda e qualquer informao que possa
surgir. Portanto, em muitas situaes, esses recursos so escassos, o que poderia ser
suprido se existissem mais tipos de dados ou, ainda melhor, se esses tipos pudessem ser
construdos, criados, medida que se fizessem necessrios.

2. Tipos Estruturados
So organizaes de dados construdas a partir da composio dos tipos primitivos j
existentes (caractere, inteiro, real). Esses novos tipos podem armazenar um conjunto
de dados conhecidos como variveis compostas. As variveis que armazenam esses
tipos de dados podem ser classificadas em: variveis compostas homogneas e variveis
compostas heterogneas.

3. Variveis Compostas Homogneas

So variveis que armazenam vrios elementos do mesmo tipo primitivo.

Exemplo: alcatia (vrios lobos), conjunto de nmeros inteiros, e outros.

As variveis compostas so estruturas de dados (armazenam um conjunto de dados).
Esses dados podem ser armazenados em dois tipos de variveis: as variveis
unidimensionais (conhecidas como vetores) e as variveis multidimensionais
(conhecidas como matriz).









4. Variveis Compostas Unidimensionais - VETORES
Programao de Computadores I Prof. Erlon Pinheiro
72/77
So variveis que necessitam de apenas um ndice para individualizar um elemento do
conjunto.

Exemplo:
real media[40];
ou usando uma constante:

const inteiro TAM=40; // const int TAM = 40;

real media[TAM]; // float media[TAM];

Estrutura que se forma:

media:
0 1 2 3 4 5 6 ... ... 39
8.0 7.0 5.5 9.5 6.4 9.9 1.0 4.8


Para acessar cada elemento da varivel composta unidimensional (vetor) necessrio
especificar o nome da varivel seguido do nmero do elemento que se deseja acessar
(dever estar entre colchetes). Este nmero tem o nome de ndice. O ndice pode varia
de 0 at n-1 (onde n o nmero que representa a quantidade de variveis simples do
vetor).
Exemplos de utilizao de um vetor:
leia (media[1]); // scanf(%f, &media[1]);
media [2] 8.5; // media[2] = 8.5;
escreva(media[3]);// printf(%.2f\n, media[3]);
.......
Exemplo 1: Dados 5 valores numricos reais elaborar um algoritmo que calcule e exiba a
mdia dos valores dados e quantos desses valores esto acima da mdia.

a) Resoluo sem utilizar vetor:

algoritmo media_turma;
incio
inteiro cont ;
real n1, n2, n3, n4, n5, media;
cont 0;
escreva( Digite o 1 nmero: );
leia (n1);
escreva( Digite o 2 nmero: );
leia (n2);
escreva( Digite o 3 nmero: );
leia (n3);
escreva( Digite o 4 nmero: );
leia (n4);
Programao de Computadores I Prof. Erlon Pinheiro
73/77
escreva( Digite o 5 nmero: );
leia (n5);
media (n1+n2+n3+n4+n5)/5;
escreva(A mdia dos nmeros , media);
se (n1>media) ento
cont cont + 1;
se (n2>media) ento
cont cont + 1;
se (n3>media) ento
cont cont + 1;
se (n4>media) ento
cont cont + 1;
se (n5>media) ento
cont cont + 1;
escreva(Quantidade de nmeros acima da mdia , cont);
fim;

b) Resoluo utilizando varivel composta:

algoritmo media_de_numeros;
incio
const inteiro qn = 5; // Quantidade de nmeros
real media, numeros[qn], soma;
inteiro i, cont;
cont 0; soma 0; // Inicializao das variveis contadora e
// acumuladora

para (i0; i < qn ; i i+1)
incio
escreva(Digite o ,i+1, nmero: );
leia(numeros[i]);
fim;

para (i0; i < qn ; i i+1)
soma soma + numeros[i];

media soma/qn;
escreva( A mdia dos nmeros : , media);

para (i0; i < qn ; i i+1)
inicio
se (numeros[i]>media) ento
cont cont +1;
fim;
escreva( Quantidade de nmeros acima da mdia: , cont);
Programao de Computadores I Prof. Erlon Pinheiro
74/77
fim.

Exemplo 2 Elabore um algoritmo que leia, some e imprima o resultado da soma entre
dois vetores inteiros de 50 posies.
Resoluo:
algoritmo soma_dois_vetores;
incio
const inteiro TAM = 50; // Tamanho do vetor
inteiro vet_a[TAM], vet_b[TAM], vet_r[TAM]; // Declarao dos vetores;
inteiro i; // Declarao da var. inteira a ser utilizada para ndice
// Entrada de dados para os dois vetores:
para (i 0; i<TAM; i i+1)
inicio
escreva(Digite o , i+1 , nmero do vetor a: );
leia(vet_a[i]);
escreva(Digite o , i+1 , nmero do vetor b: );
leia(vet_b[i]);
fim;

// Processamento de dados
para (i 0; i<TAM; i i+1)
vet_r[i] vet_a[i] + vet_b[i];

// Sada de dados
escreva ( Vetor soma: );
para (i 0; i<TAM; i i+1)
escreva(vet_r[i], );
fim.

Exerccios Propostos:
1) Dado um vetor contendo 10 elementos numricos elabore um algoritmo que
verifique se outro valor dado pertence ou no ao vetor, se pertencer exibir quantas
vezes ele aparece no vetor. Caso contrrio, mostrar uma mensagem informando que o
nmero no est no vetor.


2) Considere um vetor de tamanho mximo 100 de nmeros reais. Solicite ao
usurio qual o limite superior vlido que ele deseja e em seguida desenvolva um
algoritmo que leia o vetor at o limite superior escolhido e determine qual o menor
valor existente no vetor. O algoritmo deve ainda subtrair de todos os elementos este
valor. Exibir o vetor resultado.

3) Faa um algoritmo que receba as notas da primeira prova de 10 alunos e
armazene essas notas em um vetor. Receba as notas da Segunda prova de 10 alunos e
armazene essas notas em outro vetor. Calcule e imprima a mdia entre essas duas notas
de cada aluno.

Programao de Computadores I Prof. Erlon Pinheiro
75/77
4) Faa um algoritmo que receba as mdias de 10 alunos e armazene essas mdia
em um vetor. Calcule e imprima:
- a mdia da classe;
- a quantidade de alunos aprovados, isto , com mdia >= 7;
- a quantidade de alunos reprovados, isto , com mdia < 7.

5) Faa um algoritmo que receba a temperatura mdia de cada ms do ano e
armazene essas temperaturas em um vetor; calcule e imprima a maior e a menor
temperatura do ano e em que ms estas temperaturas aconteceram.

Exerccios de Fixao VII

1. Faa um algoritmo que leia um vetor de 40 valores inteiros. Imprima os ndices onde
o nmero 23 aparece.

2. Faa um algoritmo que leia dois vetores A e B de 30 componentes. Gere o vetor C, do
mesmo tipo de A e B, onde cada elemento de C a subtrao do elemento
correspondente de A com B.

3. Faa um algoritmo que tendo lido 2 vetores, A e B, de 20 e 30 elementos,
respectivamente, construa um vetor C composto pela juno dos vetores A e B.
Por exemplo:

const inteiro tam1 = 20, tam2 = 30;
inteiro vet_a[tam1], vet_b[tam2], vet_j[tam1+tam2];

Exemplo:

Vet_a:

0 1
8 7


Vet_b:

0 1 2
17 13 55


Vet_j:

0 1 2 3 4
8 7 17 13 55

Programao de Computadores I Prof. Erlon Pinheiro
76/77


4. Faa um algoritmo que leia um vetor A de 100 componentes. Construa um vetor B, do
mesmo tipo do vetor A, observando a seguinte lei de formao: se o ndice do
componente em B par este deve receber o componente correspondente em A
multiplicado por 2; se o ndice em B impar este recebe o componente correspondente
em A.
Exemplo:
Vet_a:
0 1 2 3 4 5 6 ... ... 99
8 7 5 9 6 9 1 4

Vet_b:
0 1 2 3 4 5 6 ... ... 99
16 7 10 9 12 9 2 4


5. Faa um algoritmo que leia a nota dos 60 alunos da disciplina de programao e
imprima:
A nota mdia da turma
A menor e a maior nota da turma
O total de alunos cuja nota inferior a nota mdia da turma

6. Faa um algoritmo que leia 50 notas e 50 matrculas dos alunos de Programao.
Informe os nmeros de matrcula dos alunos cuja nota inferior nota mdia da
turma.

7. Um armazm trabalha com 100 mercadorias diferentes identificadas pelos nmeros
inteiros de 1 a 100. O dono do armazm utiliza uma tabela para guardar o preo de cada
mercadoria. A tabela tem o formato mostrado abaixo:
1 2 3 4 5 ... 100
5 20 10 8 54 ... 4.5
onde, a posio 1 armazena o preo da mercadoria identificada pelo nmero 1, e
assim por diante.
Faa um algoritmo que tendo lido uma tabela com o formato acima imprima o
nmero das mercadorias cujo preo maior que 5 reais.

8. Faa um algoritmo que tendo lido um vetor VET de 10 nmeros inteiros positivos,
crie um novo vetor VETPAR com os elementos pares do vetor VET. Antes de preencher
o vetor VETPAR com os nmeros pares de VET faa com que todos os componentes de
VETPAR recebam o valor zero.

Exemplo:
0 1 2 3 4 5 6 7 8 9
Vetor VET = 2 9 7 5 10 4 3 1 6 21

Programao de Computadores I Prof. Erlon Pinheiro
77/77
0 1 2 3 4 5 6 7 8 9
Vetor VETPAR = 2 10 4 6 0 0 0 0 0 0

9. Faa um algoritmo que leia dois vetores de 10 elementos do tipo real. Intercale os
elementos destes dois vetores criando um novo vetor de 20 elementos.

Exemplo:
Vetor1
1 2 3 4 5 6 7 8 9 10
2 9 7 5.5 10 4 3 -1 6 21
Vetor2
1 2 3 4 5 6 7 8 9 10
32 -4 12 6 90 -4 5 43 27 82
Vetor criado a partir dos anteriores
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
2 32 9 -4 7 12 5 6 10 90 4 -4 3 5 -1 43 6 27 21 82

10. Faa um algoritmo que leia a nota dos alunos da turma de Programao. Calcule a
mdia da turma e imprima as notas maiores ou iguais a mdia. Considere que a turma
possua no mximo 60 alunos e que existe a possibilidade de no estar completa.

11. Faa um algoritmo que leia 2 vetores, A e B, de 30 elementos e informe o nmero de
vezes que os elementos de A aparecem em B.


12. Uma empresa comercializa uma pea especial para a fbrica da Ferrari. O preo da
pea determinado mensalmente de acordo com uma tabela anual (vetor). Faa um
programa C que receba a quantidade de peas vendidas por MS e armazene essas
quantidades em um vetor. Receba tambm o preo que a pea foi comercializada e
armazene esses preos em outro vetor. Em seguida o programa deve: (a) Calcular e
mostrar o total de peas vendidas e (b) calcular e mostrar o faturamento bruto total da
empresa em um ano (quantidade * preo).