Você está na página 1de 165

Algoritmo e Construo de

Programas.
Professor: Patrick Flix

Bragana-Pa

Introduo
Software:
Corresponde
a
um
conjunto
Programas
que
comandam
funcionamento do hardware.

de
o

Introduo
Programa:
um conjunto de instrues que contm as
operaes necessrias para, a partir de
dados inseridos, obter um resultado que ser
disponibilizado por alguns dispositivo de
sada.
Algoritmo:
Programas so feitos a partir de Algoritmos,
que so seqncias de instrues/comandos
para atingir um objetivo.

Introduo
Linguagem de Programao:
o conjunto de representaes e/ou
regras utilizadas para criar programas.
Existem trs nveis de linguagem:
Linguagem de Mquina;
Linguagem de Baixo Nvel;
Linguagem de Alto Nvel.
Nvel de Linguagem
HOMEM

Alto

Baixo

MQUINA

Introduo
Sistema:
um conjunto de subsistemas ou
mdulos formados por um programa que
executam operaes especficas.

Lgica
Definio: a coerncia de raciocnio, de
idias, ou ainda a sequncia coerente,
regular e necessria de acontecimento de
coisas.
Exemplo:
O nmero 3 menor que o nmero 5.
O nmero 7 maior que o nmero 5.
Logo, o nmero 3 menor que os
nmeros 5 e 7.

Lgica
Porm, s vezes o
raciocnio
funciona
desordenado.
Quantas vezes voc j
escutou a frase: E se
acontecer aquilo? Ou
, mais eu no pensei
nisso.
Por exemplo: Leia as
sequncias
de
instrues ao lado e
veja se voc consegue
sacar o dinheiro do
banco.

1 Sair do banco;
2 aguardar a vez de ser
atendida;
3 Entrar na fila do caixa;
4 Digitar a senha;
5 Informar o valor a ser
retirado;
6 Procurar a fila do caixa;
7 Pegar o comprovante do
saque, o carto eletrnico e
o dinheiro;
8 Entregar o carto
eletrnico ao funcionrio
que atende no caixa.
9 Conferir o valor em
dinheiro.

Lgica
Voc conseguiu retirar o dinheiro? Com
certeza no! Pois embora as instrues
estejam corretas, a sequncia est errada.
Agora faa o exemplo do banco de forma
correta.

Montando uma sequncia Lgica


Organizar placas de trnsito em uma sequncia
lgica.
Problema: Um carro sai da cidade de boa
Viajem e vai para a cidade At-quem-fim,
percorrendo uma cidade de 12 Km. Nesta
estrada, h um trecho em obras no Km 3, uma
curva perigosa no Km 5 e uma escola no Km 7.
Qual a sequncia das placas de indicao
(avisos e quilometragem) da estrada?

Exerccio Proposto
Uma pessoa precisa trocar o pneu furado
de um carro. Quais as aes necessrias
para realizar essa tarefa e em qual
sequncia?
Qual a sequncia para se obter a resposta
da operao matemtica 5 multiplicado
por 6 mais 2, dividido por 3 em uma
calculadora simples?

Criando o primeiro Algoritmo


Problema: Criar
um
algoritmo
para colocar um
carro
em
movimento.
Coloque as aes
em sequncias e
uma em cada
linha.

Soluo:
1 - Deve-se colocar a ao de Incio e fim.
Incio
Entrar no carro
Ajustar o banco e os espelhos
retrovisores
Colocar o cinto de segurana
Pisar na embreagem

Colocar o cmbio em ponto morto


Ligar o carro
Pisar na embreagem
Colocar o carro na primeira marcha
Pisar no acelerador
Soltar o freio de mo
Soltar a embreagem devagar
Fim

Exerccio Proposto
1 Imagine que uma pessoa decida ir de txi a uma reunio de
negcios. Monte um algoritmo com a sequencia de aes para que
ela chegue ao prdio onde vai ocorrer a reunio.
2 Monte um algoritmo com a sequncia de aes para fazer uma
vitamina com um mamo, uma banana, uma ma, um pouco de
leite e acar.
3 Monte um algoritmo com as aes para encontrar o nome de
Joo Ferreira Neto em uma lista telefnica.
4 Monte um algoritmo com as aes para retirar R$ 100,00 de um
caixa automtico de banco.
5 Monte um algoritmo com as aes para fazer uma macarronada
com molho de tomate (em lata)

Constantes e Variveis
Constantes:
Dentro do algoritmo, constantes so os
valores que permanecem os mesmos do
incio ao fim.
Tipos de constantes:
Numricas;
Constantes literais;
Constantes lgicas.

Constantes
Constantes Numricas: So nmeros positivos e
negativos.
Exemplos: 3, -123, 2*102, 0,89, 0,00076
Constantes Literais: Tambm conhecidas como
altanumricas, so conjunto de caracteres(letras,
dgitos ou smbolos especiais: -, %, $, etc). Esses
conjuntos devem ser colocados entre aspas().
Exemplos: IFPA, 10/02/2009 R$ 100,00.
Constantes Lgicas: So valores que representam
para expresses lgicas e so compostas somente
pelos valores Verdadeiro e Falso que devem ser
sublinhados, p/ no serem confundidos com as
Const. Literais.

Identificando as constantes
Identifique de que tipo so as constantes a
seguir:
A) 46593;
B) Clube do Remo;
C) -3456;
D) -007
E) Verdadeiro;
F) Falso;
G) Falso.

Exerccio Proposto
Indique os tipos de constantes que podem ser
utilizados para representar;
A) o nome de um pas;
B) RG;
C) CPF;
D) se uma pessoa ou no maior de idade
(maior de 18 anos);
E) Idade de uma pessoa;
F) Endereo de uma pessoa.

Exerccio Proposto
Diga se so validas as afirmaes a
seguir. Se no forem, explique por qu.
A) Pode-se utilizar constantes numricas
para representar a placa de um
automvel.
B) Constantes alfanumricas s podem
conter letras.
C) So constantes lgicas os valores:
verdadeiro, sim, falso e no.

Variveis
Definio: Corresponde ao nome associado ao
endereo da memria.
Quando quiser guardar algum dado no computador,
bastar criar uma varivel para guard-lo.
O nome de uma varivel deve sempre identificar o que
est sendo armazenado.
Exemplo:
IDADE 26, A varivel indica a idade.
END Mamor 35, A varivel indica o endereo.
CPF 345.465.098-23, indica o cpf de algum.
Cada varivel pode conter apenas um valor, quando
mais de um valor inserido o mais antigo substitudo
pelo valor recente.
O nome de uma varivel chamado de identificador.

Varivel
Regras para criao de um nome para a
varivel.
O nome pode ser formado por um ou mais
caracteres;
Deve estar sempre com letra maiscula;
O primeiro caractere dever ser obrigatoriamente
letra e os caracteres seguintes podem ser letras
e nmeros;
No permitido o uso de smbolos, sinais
grficos e de pontuao:
(/,.-!@#$%^&*()+=~`<>?:;{[}]), exceto o sinal _ .

Variveis
Exemplo de identificadores permitidos:
A,
T2,
IDADE,
NOME,
END2,
ENDERECO, NOME_DO_ALUNO.
Exemplo
de
identificadores
nopermitidos:
6D, 45, F&T$, END(2), A*F, NOME-DOALUNO, 2NUM/1NUM, F-G4,nome.

Declarao de variveis
No incio do programa sempre indique as
variveis que sero utilizadas. Assim, o
computador reserva um espao na
memria para cada uma.
Exemplo:
Inicio
PESSOA : literal
IDADE: numrico
Fim.

Aprenda a declarar varivel


Problema: Declare as variveis para o algoritmo de
cadastramento de alunos,cujos dados so: nome, sexo,
endereo, cidade, estado, CEP, telefone, data de
nascimento, RG, nome do pai, nome da me, grau
escolaridade.
Soluo:
Incio
NOME, SEXO, END, CIDADE, UF,PAI,MAE: literal;
FONE, CEP, RG, DAT_NASC, GRAU_ESC: numerico;
fim

Exerccio Proposto
Verifique se os identificadores a seguir so vlidos. Se
no forem explique.
A) NOME-DO-ALUNO
B) $
C) DINHEIRO
D) DATA/DE/NASC
E) verdadeiro
F) NOME2
G) 2APESSOA
H) MAIOR_DE_IDADE
I) NOME_DE_PESSOA
J) END
K) %JUROS
L) M239083

Exerccio Proposto
Declare as variveis para os algoritmos dos cadastros a
seguir:
A) Passagem areas;
B) Fitas de vdeo de uma locadora;
C) Livros de uma biblioteca;
D) Carros de uma concessionria;
E) CDs de uma coleo de msicas;
F) Cursos de uma academia;
G) Disciplina de uma academia;
H) Clientes de uma loja;
I) Roupas de uma loja.
Cap2,ativ.2,exe2

Comentando Algoritmo
Um algoritmo deve ser entendido de maneira que seja
entendido e executado facilmente. Para que isso ocorra,
so necessrios informaes auxiliares denominadas
Comentrios.
Exemplos:
Inicio
{Exemplo de comentrio}
PESSOA : literal {variveis para armazenar o nome}
IDADE: numerico {variveis para armazenar a idade}
Fim.

Comando Atribuio
Armazena uma constante em uma varivel, isto , atribui um valor
varivel.
Exemplo: inicio
PESSOA: literal
IDADE: numerico
PESSOA Maria { Atribuindo o valor Maria a varivel PESSOA}
IDADE 26
{Atribuindo o valor 26 a varivel IDADE}
fim.
OBS: Quando o computador executar os comandos PESSOA:literal e IDADE:
numerico sero criados dois locais na memria: um para armazenar dados
literais e outro dados numricos e em seguida, sero armazenados os valores
Maria na varivel PESSOA e 26 na varivel IDADE.
Identificador Tipo de Dado Dados Armazenados
PESSOA

literal

Maria

IDADE

numerico

26

Constante e Varivel
As constantes e variveis devem ser
sempre do mesmo tipo, portanto, nunca
utilize o comando atribuio para colocar
uma constate em uma varivel que no
seja compatvel.
Exemplo: NOME 26 (o n 26 no pode
ser atribudo a uma varivel literal).

Expresses
So expresses que utilizam operadores
aritmticos e funes aritmticas envolvendo
constates e variveis constantes.
Operador aritmtico
+
*
/
^

Operaes
Adio
Subtrao
Multiplicao
Diviso
Potenciao

Exemplo de Expresses
Variveis

Comando atribuies
operaes

Procedimentos

A2

Armazena o valor 2 na varivel A.

A
_

B
_

C
_

B A+3

Somar o valor da varivel A (2)


com 3 e armazenar o resultado
na varivel B.

C B-A

Subtrair o valor da varivel B (5)


do valor da varivel A (2) e
armazenar o resultado na
varivel C.

Exemplo:
Tomando como
base o exemplo
anterior faa o
exerccio
ao
lado.

Variveis

A
2

B
5

C
3

Comando atribuies
operaes

B A*C
C B^A
B C/A
A B+A
-

Funes Aritmticas
Funo Aritmtica

Sintaxe

Descrio

Diviso inteira

DIV(x,y)

Faz a diviso inteira do nmero x pelo


nmero y, ou seja, retorna somente a parte
inteira da diviso.

Resto da diviso inteira

RESTO(x,y)

Retorna o resto da diviso inteira do nmero


x pelo nmero y.

Valor absoluto

ABS(x)

Retorna o valor absoluto do nmero x.

Arredondamento

ARREDONDA(x)

Retorna o valor arredondado do nmero x.

Potenciao

ELEV(x,y)

Semelhante ao operador ^, retorna o


resultado do nmero x elevado ao nmero y.

RZQD(x)

Retorna o valor da raiz quadrada do nmero


x.

Raiz quadrada

Exemplo:
Tomando como
base a tabela
anterior, faa o
exerccio
ao
lado.

Variveis
A

Comando atribuies
operaes

A2
B DIV(17,A)
C RESTO(B,A)

C ABS(-4,5)
CARREDONDA(C)
B ELEV(B,A)
C RZQD(C)

Prioridade nas Expresses Aritmticas

Prioridade

Operadores

Potenciao/ Radiciao

Multiplicao / Diviso

Adio/ Subtrao

Uso dos parenteses: So utilizados p/ estabelecer


uma sequncia de clculo diferente das
prioridades. Exemplo: 2+10/2=7, (2+10)/2=6.

Exerccio Proposto
Problema: Sendo X,Y,Z e W variveis
numricas, qual o resultado de cada varivel no
final do algoritmo?
Inicio
X,Y,Z,W: inteiro
X10
Z(X+(RESTO(ELEV(X,2),DIV(X,3))))
YABS(X-((X^2)/(ARREDONDA(5,7))))
WDIV((Z-RQZD(64)),10)
fim

Sendo as variveis do tipo numrico, qual


o resultado de cada varivel no final dos
algoritmos A, B?
Algoritmo A
inicio
A,B,C,D: numerico
D9,5
B(RZQD(ARREDONDA(D)))
CB^(RESTO((D+B-0,5),3))
A(B*C)/2^2
fim

Qual o final da expresso a seguir?


A) RZQD((40*2-30)/5-3)
B) -3^3
C) 27-ELEV(3,4)
D) 70-(50/2)-5*3
E) ARREDONDA(ABS(-70,75))

Transforme as expresses aritmticas


em expresses utilizadas em algoritmos:
(X2+ 30-y)/B
(-b+ b2-4.c)/2
((x2+4)2x)/ x2+1
(2-x)/5 (4x+1)/3x + (x2/3)/ 32x4
(1/3-x)(9-x/3+ x)

Expresses Literais
So expresses c/ constantes literais que tm c/
resultado valores literais. As expresses literais
aceitam somente o operador de concatenao.

Operador literal
+

Operao
Concatenao

Descrio
Junta dois valores
literais em um s

Expresses Literais
Exemplo de expresses
variveis literais A e B.
Variveis
A

Comando atribuio/
operao
B

ARose

literais

c/

as

Procedimentos
Armazenar
o
valor
Rose na varivel A.

BA+meire

Concatenar o valor da
varivel A (Rose) c/ a
constante literal meira
e armazenar o resultado
na varivel B.

Rose

Rosemeire

Funes literais
Funo

Sintaxe

Descrio

Eliminar branco esquerda

LTRIM(a)

Eliminar os espaos em branco do


incio da palavra que for representada
pela letra a (ou palavra a).

Eliminar branco direita

RTRIM(a)

Elimina o espao em branco do final


da palavra a.

Quantidade de caracteres

COMP(a)

Fornece o nmero total de caracteres


que compem a palavra a. Obs.: essa
funo retorna um valor numrico,
portanto, deve ser atribuda a uma
varivel numrica.

Subpalavra esquerda

ESQUERDA(a,x)

Retorna um conjunto de caracteres


compostos
pelos
x,
primeiros
caracteres da palavra a.

Subpalavra direita

DIREITA(a,x)

Retorna um conjunto de caracteres


compostos pelos x, ltimos caracteres
da palavra a.

Subpalavra

SUB(a,x,y)

Retorna um conjunto com y caracteres


a partir da posio x da palavra a. Se
x e y forem incosistentes (invlidos),
retorna o valor numrico 0.

Posio de caracteres

POS(a,b)

Retorna um valor numrico correspondente


primeira apario do conjunto de
caracteres b na palavra a. Se b no existir,
retorna o valor numrico 0. Obs.: essa
funo retorna um valor numrico, portanto,
deve ser atribuda a uma varivel numrica.

Funes literais
Variveis

Comando atribuies/
Funo

Procedimento

AAna_

Armazenar o valor Ana na varivel A.

Ana_

BRTRIM(A)

Armazenar na varivel B o valor da varivel A ( Ana ), sem


os espaos em branco no final.

Ana_

Ana

CCOMP(A)

Armazenar na varivel C a quantidade de caracteres que


compem o valor da varivel A( Ana 3 letras e 1
espao). Equivale a 4.

Ana_

Ana

AB+_Maria

Armazenar na varivel A o valor da concatenao da


varivel B mais a constante Maria.

Ana _Maria

Ana

BESQUERDA(A,3)

Armazenar na varivel B o conjunto dos 3 primeiros


caracteres da varivel A (Ana Maria).

Ana _Maria

Ana

ADIREIRA(B,2)

Armazena na varivel A o conjunto dos 2 ltimos caracteres


da varivel B (na).

na

Ana

ASUB(B,2,1)

Armazena na varivel A, 1 caractere a partir da segunda


posio da varivel B(n).

Ana

CPOS(B,A)

Armazena na varivel C o valor numrico referente


primeira apario da varivel A (n) na varivel B (Ana).
Observe que o caractere n ocupa a segunda posio na
palavra Ana (o valor numrico, portanto, corresponde a 2).

Ana

Exerccio
Sendo X,Y,Z variveis literais e W, T
variveis numricas, qual o valor de cada
varivel no final do algoritmo?
Inicio
X,Y,Z : literal
W,T : numerico
X ABCD
Z LTRIM(X) + EFG
Y SUB(Z,3,4)
W COMP(Z+Y)
T POS(Z,Y)
fim

Exerccio
Sendo as variveis do tipo literal, qual o resultado de
cada varivel no final dos algoritmos A e B.
Algoritmo A.
Inicio
A,B,C,D : literal
D LGICA
B LIVRO
C B + DE + D
L (SUB(SUB(D,1,3),1,1)+O+
(SUB(SUB(D,1,3),3,3)+OS)
Fim
Cap2, Ativ5, exe1, Algo A

Algoritmo B.
Inicio
H,I,J,L : literal
H PROGRAMAO
J ESQUEDA(H,8)
I DIREITA(H,4)+ DE +
(J+R)
L SUB(H,4,5)
fim.
Algo B

Expresses Relacionais

So expresses compostas por outras expresses ou variveis


numricas c/ operadores relacionais. As expresses relacionais
retornam valores lgicos.
Operador
Relacional

Operao

Descrio

Igualdade

Verifica se dois valores so iguais e retorna um valor


lgico.

<>

Diferena

Verifica se dois valores so diferentes e retorna um


valor lgico.

<

Menor que

Verifica se um nmero menor que outro e retorna


um valor lgico.

>

Maior que

Verifica se um nmero maior que outro e retorna um


valor lgico.

<=

Menor ou igual a

Verifica se um nmero menor ou igual a outro e


retorna um valor lgico.

>=

Maior ou Igual a

Verifica se um nmero maior ou igual a outro e


retorna um valor lgico.

Expresses Relacionais
Variveis

Comando
atribuio/ operao

Procedimento

A5

Armazenar o valor 5 na varivel A.

B7

Armazenar o valor 7 na varivel B.

X(A=B)

Armazenar na varivel X o valor lgico da expresso


relacional que compara se o valor da varivel A igual ao
valor da varivel B.

X(A<>B)

Armazenar na varivel X o valor lgico da expresso


relacional que compara se o valor da varivel A diferente
do valor da varivel B.

X(A<B)

Armazenar na varivel X o valor lgico da expresso


relacional que compara se o valor da varivel A menor
que o valor da varivel B.

X(A>B)

Armazenar na varivel X o valor lgico da expresso


relacional que compara se o valor da varivel A maior
que o valor da varivel B.

X(A<=B)

Armazenar na varivel X o valor lgico da expresso


relacional que compara se o valor da varivel A menor
ou igual ao valor da varivel B.

X(A>=B)

Armazenar na varivel X o valor lgico da expresso


relacional que compara se o valor da varivel A maior ou
igual ao valor da varivel B.

Exerccio
Sendo, x,y,z variveis numricas e w, t variveis
lgicas, qual o valor de cada varivel no final do
algoritmo?
Inicio
X,Y,Z : numerico
W,T : logico
X 5
Z (X+4)/3
Y RZQD(X+4)
W(X>=Z)
T(Z<>Y)
fim

Exerccio
Sendo
A,B,C
variveis
numricas e D, E variveis
lgicas, qual o resultado de
cada varivel no final do
algoritmo?
Inicio
A,B,C : numerico
D,E: lgico
A 20
B (40+A)/3
C RZQD (A+80)
D (A>=B)
E (C=B)
Fim.

Sendo A,B,C variveis literais e


D, E variveis lgicas, qual o
resultado de cada varivel no
final do algoritmo?

Inicio
A,B,C : literal
D,E: lgico
A ABACATE
B ABACAXI
C BANANA
D (SUB(A,1,5) = ESQUERDO (B,5))
E(SUB(A,2,2) <> (ESQUERDA(C,2))
D (D=E)
Fim.

Expresses lgicas
So expresses compostos por expresses relacionais com
operadores lgicos. As expresses lgicas retornam valores
lgicos.
Operador
lgico

ou

no

Operao

Descrio

Interseco

Retorna o valor lgico resultante da interseco de


valores lgicos de expresses relacionais.
verdadeiro e verdadeiro = verdadeiro
verdadeiro e falso = falso
falso e falso = falso

Unio

Retorna o valor lgico resultante da unio de valores


lgicos de expresses relacionais.
verdadeiro ou verdadeiro = verdadeiro
verdadeiro ou falso = verdadeiro
falso e falso = falso

Negao

Retorna o valor lgico resultante da contradio do


valor lgico de uma expresso relacionais.
no verdadeiro = falso
no falso = verdadeiro

Prioridade entre operadores e operaes


Prioridade Operadores/Operaes
1
2
3
4
5

Aritmticos e Literais
Relacionais
no
e
ou

OBS: No esquea da prioridade dos parnteses, ou seja, as


operaes entre parnteses devem ser solucionadas primeiro.

Exerccio
Variveis

Comando
atribuies/
Funo

Procedimento

A5

Armazenar o valor 5 na varivel A.

B7

Armazenar o valor 7 na varivel B.

X(A=B)

Armazenar na varivel X o valor lgico da


comparao se o valor da varivel A igual ao valor
da varivel B.

falso

Y(A<>B)

Armazenar na varivel Y o valor lgico da


comparao se o valor da varivel A diferente do
valor da varivel B.

falso

verda YX ou (A>B)
deiro

Armazenar na varivel Y o valor lgico da expresso


relacional resultante da unio dos valores lgicos de
X (falso) e da comparao (A>B), que falso.

falso

falso

XY e (A>B)

Armazenar na varivel X o valor lgico da expresso


relacional resultante da interseco dos valores
lgicos de Y (falso) e da comparao (A<B), que
verdadeiro.

falso

falso

Xno Y

Armazenar na varivel Y o valor lgico da contradio


do valor da varivel Y (falso)

verda
deiro

falso

Exerccio
Sendo, X,Y variveis numricas, Z,W variveis literais e
T,K variveis lgicas, qual o resultado de cada varivel no
final do algoritmo?

inicio
X,Y : numerico
Z,W : literal
T,K : logico
X3 =verdadeiro
YELEV(3,2) = 9
ZABACATE = Verdadeiro
W(SUB(Z,1,5)+XI) = falso
T(X<=Y) e (no(POS(Z,CA) <> POS (W,CA)))
=verdadeiro
Kno T ou (POS(Z,XI) <> 6) = Falso
Fim.

Exerccio
Sendo A,B variveis numricas, C,D variveis literais e E, F
variveis lgicas, qual o resultado de cada varivel no final
do algoritmo?

Inicio
A,B : numerico
C,D : literal
E,F : logico
A45
BRZQD ((A + 55))
CUVA
D(VI+ C)
E(A>=B) e (no(D<>VIUVA))
Fno E ou (POS(C,U)<>2)
Fim.

Exerccio
Sendo A varivel numrica, C varivel literal e E varivel
lgica, qual o resultado de cada varivel no final do
algoritmo?

Inicio
A : numerico
C : literal
E : logico
A100
CMARIA
E(10 = RZQD(A)) e (no(C <> MARIA))
AA+(RZQD(64)/4)*2))
fim

Comandos de Entrada e Sada


Na elaborao do algoritmo incluem-se os
comandos para entrada e sada de dados. Os
dados entram no computador (so lidos) por
meio dos cdigos de barras, teclados, touch
screen, etc e saem dele (so escritos) por meio
de impressora, monitor, som e etc.
O teclado e o monitor so bons exemplos de
dispositivos de entrada e sada de dados:
quando voc pressiona uma letra no teclado, o
computador recebe e interpreta o sinal que
representa a letra e logo aps emite o sinal que
vai mostrar a letra no monitor.

Entrada de dados: comando leia.


Sintaxe do comando leia.
Pseudocodigo:
leia<lista de identificadores>
Exemplo:
Inicio
PESSOA: literal
leia PESSOA
fim.

Obs: Para aplicar o comando


leia,
voc
deve
primeiramente declarar a
varivel.

Sada de dados: comando escrever.


Sintaxe do comando escrever.
Pseudocodigo:
escreva<lista_de_identificadores>
Exemplo:
Inicio
PESSOA: literal
escreva PESSOA
leia PESSOA
fim.
Obs: Para utilizar o comando
escreva, necessrio que a
varivel seja declarada e
que contenha um valor,
seno ocorrer um erro.

No exemplo ao lado, a varivel


declarada PESSOA. Um meio
externo, por exemplo, teclado, vai
permitir a entrada dos dados, ou
seja, vai ler um valor, por exemplo,
Maria, a ser armazenado na varivel.
Esse mesmo valor posteriormente
acessado na varivel PESSOA e
enviado, para o meio externo, por
exemplo, para uma impressora, que
ir imprimi-lo no papel.

Exemplo
Crie um algoritmo para cadastrar e um imprimir os dados de um aluno.

Varivel separada por virgula


Mensagem entre ()

Exerccio

Crie os algoritmos para os itens a seguir, representando-os em


pseudocodigos.
Cadastrar e mostrar os dados de um professor: nome, endereo,
cidade, UF, CEP, telefone, CPF, RG, data de nascimento, grau de
escolaridade, curso que leciona.
Cadastrar e imprimir os dados de uma disciplina escolar: nome,
descrio, frequencia e mdia mnima para aprovao.
Cadastrar e imprimir trs notas e a frequencia de um aluno na
disciplina do item 2.
Ler o nome e as trs notas do aluno do item 3, o nome da disciplina e
o nmero da turma. Imprimir os dados lidos e a mdia aritmtica das
notas (soma das notas dividida por trs).
Ler uma determinada hora, seus minutos e segundos e converter tudo
para segundos. Mostrar no vdeo quantos segundos correspondem
hora lida (1h = 60min e 1min = 60seg).
Em uma loja existem um total mensal de vendas. Fazer a leitura do
nome das lojas e dos totais de vendas em um ano. Imprimir o nome
da loja e os totais de vendas semestrais. Cap2,Atividade 2.

Exerccio
7) Ler o nome de um cliente da fest food e a quantidada de cada item do
menu que ele vai pedir. Imprimir o nome do cliente e o total de compra.

Menu
Hot-dog

R$ 1,00

Hamburguer

R$ 1,30

Cheeseburguer

R$ 1,50

Refri-lata

R$ 1,00

Batata frita

R$ 0,80

Estrutura de Controle Linear e


Condicional (Simples e Composta)
Pelo que foi visto at agora, para fazer um
algoritmo so necessrios vrios comandos
dentro de uma determinada estrutura. Essa
estrutura chamada de estrutura de controle, a
qual permite o controle do fluxo de execuo
dos comandos.
No algoritmo existem quatro estruturas de
controle: Sequencial, Condicional Simples,
Condicional Composta e Repetio.

Estrutura de Controle Sequencial


Podemos dizer que so comandos que so executados
um aps o outro, passo-a-passo (receita de culinria),
ou seja, existe uma sequencia de execuo dos
comandos, tambm conhecida como Estrutura de
Controle Linear.
Inicio
1 passo
x,y,z :
numerico 2 passo
w,t : logico 3 passo
4 passo
x 5
z (x+4)/3 5 passo
6 passo
y
RZQD(x+4) 7 passo
w(x>=z) 8 passo
t(z<>y) 9 passo
fim

Estrutura de Controle Condicional


Para tomar uma deciso necessrio
utilizar
a
Estrutura
de
Controle
Condicional, tambm conhecida como:
Est.Cont.Decisria ou Deciso ou E.C.
Alternativa. Essa estrutura executa vrios
comandos, desde que seja satisfeita uma
condio, ou vrias, representada por
uma expresso lgica.
A Est. Cont. Condicional se classifica em
Simples e Composta.

Estrutura de Controle Condicional Simples.


Para entender tal estrutura leia o exemplo abaixo:
Leia um nmero; se ele for maior que 10, multiplique por 0,1. Para
solucion-lo, com certeza voc tem que fazer a pergunta: o nmero
maior que 10?. Se a resposta for verdadeira, basta multiplicar o nmero
por 0,1. Se for falso, no preciso fazer nada, neste caso.

se NUMERO > 10
ento NUMERONUMERO*0,1
fim-se

A estrutura se/ento/fim-se denomina-se Estrutura Condicional Simples.


Ela determina que, se a condio for satisfeita, ser executado o
comando (ou comandos) que estiver entre as palavras ento e fim-se.

Exemplo
Faa um algoritmo para ler um nmero e verificar se ele
maior que 100. Se for, o algoritmo deve somar 150 a
esse nmero. No final, o algoritmo deve imprimir o
resultado da soma.

inicio
NUMERO : numerico
leia NUMERO
se NUMERO > 100
ento NUMERONUMERO+150
fim-se
Escreva O nmero :, NUMERO
Fim.

Exerccio
Faa um algoritmo para ler dois nmeros e responder se a diviso
do primeiro nmero pelo segundo exata (o resto da diviso deve
ser igual a 0). Se for, o algoritmo deve imprimir a mensagem A
diviso de (nmero 1) por (nmero 2) exata.
inicio
NUM1, NUM2, RESTODIV : numerico
leia NUM1, NUM2
RESTODIV RESTO (NUM1,NUM2)
se RESTODIV = 0
ento escreva A diviso do, NUM1, pelo, NUM2, exata
fim-se
Fim.

Exerccio
1)

Ler dois nmeros e verificar qual menor e qual o maior.

2)

Ler os nomes e os pesos de duas pessoas e imprimir os dados da


pessoa mais gorda.

3)

Ler os anos de nascimento de duas pessoas e calcular suas


idades. Imprimir o nome e a idade de cada uma e indicar qual a
mais nova.

4)

Ler um nmero e verificar se ele par ou mpar. Observao: para


o nmero ser par, o resto de sua diviso por dois deve ser igual a
zero.

5)

Ler dois nmeros e mostrar a diferena entre eles.

6)

Uma empresa d um prmio aos funcionrios que cumprem ou


ultrapassam determinado valor de vendas de produtos. A cada
funcionrio foi estabelecido um valor a ser alcanado. Faa um
algoritmo para ler o valor fixado e o valor de vendas de um
funcionrio, e imprimir a mensagem Ganhou, se o funcionrio
tiver conseguido o prmio, ou No ganhou! se no tiver
conseguido. Cap 3, ativ 1.

Estrutura de Controle Condicional Composta


A estrutura de controle simples, ou estrutura
condicional simples, possibilita a execuo de
comandos somente se a condio for
verdadeira. Se a condio for falsa, no se pode
executar qualquer comando dentro dessa
estrutura. Para isso, existe a estrutura de
controle condicional composta, ou estrutura
condicional composta, formando pela mesma
estrutura da condicional simples, acrescida da
clusula seno aps o ltimo comando da
clusula ento.

Estrutura de Controle Condicional Composta


Veja como fica essa estrutura.

PseudoCdigo:
se <condio>
ento <comandos>
Seno <comandos>
fim-se

Estrutura de Controle Condicional Composta

Veja a seguir um exemplo da estrutura em


questo:
Problema: Faa um algoritmo para ler o
nome de aluno e sua nota final. O
resultado desse algoritmo deve ser uma
mensagem informando se o aluno foi
aprovado ou no. O critrio de aprovao
ter mdia igual ou superior a 6,0.
Represente o algoritmo em pseudocdigo.

Estrutura de Controle Condicional Composta


Soluo:
Incio
NOME: literal
MEDIA: numerico
ler NOME
ler MEDIA
Se MEDIA>=6
Ento escreva O aluno, NOME, est aprovado
Seno escreva O aluno, NOME, est reprovado
fim-se
fim.
Clusula que caracteriza a Estrutura de Controle Condicional Composta

Encadeamento dos comandos se


Nos
problemas
com
vrios
testes/comparaes, portanto, com vrios
comandos se, necessrio encadear os
comandos, inserindo um dentro do outro,
para aplicar e verificar todas as solues
possveis. Veja o exemplo a seguir.

Problema: Faa um algoritmo para ler


duas notas de um aluno. Se a mdia
aritmtica das notas for maior que 6,0,
deve aparecer a mensagem Mdia
superior mdia mnima 6,0; se for igual
a 6,0, Mdia igual mdia mnima 6,0;
se for menor que 6,0, Mdia inferior
mdia mnima 6,0. Represente o
algoritmo em Pseudocdigo.

Soluo:
Inicio
NOTA1, NOTA2, MEDIA : numerico
ler NOTA1, NOTA2
MEDIA(NOTA1+NOTA2)/2
se MEDIA > 6
ento escreva Mdia superior mdia mnima 6,0
seno se MEDIA = 6
ento escreva Mdia igual mdia mnima 6,0
seno escreva Mdia inferior mdia mnima 6
fim-se
fim-se
fim.

Voc pode criar um algoritmo diferente para resolver o


mesmo problema, veja o exemplo:
Soluo:
Inicio
NOTA1, NOTA2, MEDIA : numerico
ler NOTA1, NOTA2
MEDIA(NOTA1+NOTA2)/2
se MEDIA > 6
ento escreva Mdia superior mdia mnima 6,0
fim-se
se MEDIA = 6
ento escreva Mdia igual mdia mnima 6,0
fim-se
se MEDIA < 6
ento escreva Mdia inferior media mnima 6,0
fim-se
fim.
Embora os dois exemplos estejam corretos e tenham resolvidos o
problema, a execuo do primeiro algoritmo ser mais rpida, porque
ele s contm dois testes (MEDIA>6 e MEDIA=6), enquanto o
segundo apresenta trs.

Exerccio

Crie os algoritmos para itens a seguir, representandoos em Pseudocdigo.


1 Sobre um aluno e suas notas:
A) Ler o nome do aluno;
B) Ler trs notas e fazer a mdia aritmtica entre elas.
C) Verificar se o aluno foi aprovado (mdia maior ou igual
a 6,0) e imprimir a mensagem O aluno <nome aluno>
foi aprovado com mdia <o valor da mdia>.
D) Verificar se o aluno foi reprovado (mdia inferior a 6,0)
e imprimir a mensagem O aluno <nome aluno> foi
reprovado com mdia <o valor da mdia>.
E) Colocar as trs notas do aluno em ordem crescente.
Cap3. ativ.2exe1

Exerccio
2 - Ler trs nomes de pessoas e seus pesos. Imprimir os dados
(nome e peso) em ordem decrescente de peso.
3 - Ler o pedido de um cliente de fast food, baseado no menu
abaixo, e imprimir o preo e a opo que ele escolher.
Opo
nica

Promoo

Especificao

Preo (R$)

Big Super Sanduba

2 hamburgueres,
queijo, batata frita
e refri.

5,00

Quase Super Sanduba

1 hamburguer,
batata frita e refri.

3,00

Mirradus Sanduba

1 misto quente e
refri.

1,50

Estrutura de Controle de Repetio


s vezes necessrio repetir a mesma tarefa para
chegar a um resultado final. Por exemplo, para
encher uma caixa, voc coloca dentro dela um
objeto e verifica. Se constatar que a caixa ainda
no est cheia, coloca mais um objeto. A ao se
repetir at voc atingir o objetivo: encher a caixa.
Quando isso acontecer, voc vai parar de colocar
objetos nela.
Para repetir tarefas no algoritmo, evitando escrever
vrias vezes a mesma coisa, voc pode utilizar a
estrutura de controle de repetio, ou estrutura de
repetio.

Estrutura de controle de Repetio


1 Observe: L o nome de
uma pessoa e declare
apenas uma varivel.

Inicio
PESSOA: literal
Leia PESSOA
Escreva PESSOA

fim

2 Observe: Para ler os nomes


de duas pessoas, basta
declarar mais uma varivel.
Inicio
PESSOA1, PESSOA2: literal
leia PESSOA1
leia PESSOA2
escreva PESSOA1
escreva PESSOA2
fim

Observe que o acrscimo de um dado, prova o aumento do tamanho


do algoritmo.

3 Observe: E se fosse lido cinco nomes de pessoas?


Teria de ser declaradas cinco variveis e aplicados cinco
vezes os comandos leia e escreva. Agora veja essa
soluo.
Inicio
PESSOA: literal
NUMERO_PESSOA: numerico
NUMERO_PESSOA0
enquanto NUMERO_PESSOA < 5 faa
Leia PESSOA
Escreva PESSOA
NUMERO_PESSOANUMERO_PESSOA + 1
fim-enquanto
fim

Estrutura de Controle de Repetio: enquanto/faa/fim-enquanto.

Repita / at que
Essa estrutura semelhante estrutura
enquanto/faa/fim-enquanto, diferindo apenas no
local da condio de interrupo, que deve ser no
final em vez de no incio da estrutura. Veja como
fica o exemplo anterior com a aplicao dessa
estrutura.
Inicio
PESSOA: literal
NUMERO_PESSOA: numerico
NUMERO_PESSOA0
repita
leia PESSOA
escreva PESSOA
NUMERO_PESSOANUMERO_PESSOA + 1
at que NUMERO_PESSOA = 5
fim

Para/faa/fim-para
Essa estrutura quase similar estrutura
enquanto/faa/fim-enquanto. A diferena entre as duas
que a varivel contadora (NUMERO_PESSOA0) e a
condio
de
interrupo
(NUMERO_PESSOANUMERO+1) so eliminadas na
estrutura para/faa/fim-para. No exemplo a seguir,
quando a execuo do algoritmo iniciada, o comando
para inicializar a varivel NUMERO_PESSOA com o
valor 1 e executa todos os comandos dentro da
estrutura para/faa/fim-para. Essa estrutura vai
acrescentando o valor 1 e executando novamente os
comandos
at
que
o
valor
da
varivel
NUMERO_PESSOA seja 5.

Exemplo
Inicio
PESSOA: literal
NUMERO_PESSOA: numerico
para NUMERO_PASSOA de 1 at 5 passo 1 faa
leia PESSOA
escreva PESSOA
fim-para
fim
Se quiser o valor de incremento da varivel contadora seja superior
a 1, coloque o valor depois da palavra passo. Veja o exemplo a
seguir.
para NUMERO de 0 at 100 passo 10 faa
Cada vez que se repetirem os comandos do exemplo, o valor 10
ser acrescentado ao valor da varivel NUMERO. Entretanto, se o
valor de incremento for 1, no sero necessrio o parmetro passo
nem o valor 1 depois dele, pois a estrutura para/faa/fim-para ser
executada automaticamente, conforme o exemplo a seguir:

Exerccio
1) Imprimir o total da sequencia: 1, 1/2, 1/3, [...],
1/20.
2) Imprimir os nmeros pares entre 100 e 1 .
3) Simular o jogo de adivinhao: o jogador 1
escolhe um nmero entre 1 e 10; o jogador 2
insere nmeros na tentativa de acertar o
nmero escolhido pelo jogador 1. Quando ele
acertar, o algoritmo deve informar que ele
acertou o nmero x (escolhido pelo jogador 1)
em x tentativas (quantidade de tentativas do
jogador 2).

Marcando o Final de uma Repetio


A tcnica de colocar uma varivel como contadora s
funciona quando se sabe quantas vezes os comandos
devem ser repetidos. Quando essa informao no
existe, utiliza-se a tcnica de marcao ou Flag. Essa
tcnica marca o evento que indica quando o usurio
decide encerrar a repetio.
Inicio
NOME: literal
leia Digite o nome de uma pessoa ou a palavra FIM para encerrar.,NOME
Enquanto (NOME <> FIM) e (NOME <> fim) e (NOME <> Fim) faa

escreva NOME
fim-enquanto
Fim.

O algoritmo acima foi criado para ler os nomes de vrias


pessoas, entretanto, no se sabia quantos nomes seriam
lidos. Para solucionar o problema, utilizou-se uma mensagem
para o usurio digitar os nomes que quisesse ou encerrar a
repetio com a digitao da palavra Fim.
Observe que esse algoritmo no foi utilizada uma varivel
contadora (por exemplo, NUMERO_DE_PESSOA), porque
no havia a quantidade de nomes a serem lidos. Em vez
disso, foi colocado o comando leia antes da estrutura
enquanto/faa/fim-enquanto. Os comandos a serem repetidos
aparecem dentro dessa estrutura. Tambm foram colocadas
trs condies para interrupo da estrutura de repetio
(NOME <>FIM), (NOME <>fim), (NOME <>Fim), que so
algumas das provveis opes de digitao da palavra Fim
que o usurio pode utilizar para encerrar a repetio.

Observao

Se o enunciado do problema no houver a


indicao de uma palavra que sirva de flag, ou
marca, para finalizar a repetio, escolha o
primeiro dado a ser lido, palavra Fim na varivel
NOME). Por exemplo, se o problema for
cadastrar os nomes e as idades de vrias
pessoas, voc NO pode colocar um flag na
varivel idade de varias pessoas, pois ela o
segundo dado a ser lido. Se isso fosse feito,
ocorreria um erro, pois no haveria valor a ser
lido para varivel NOME.

Exerccio
1) Cadastrar e imprimir os dados de vrios
professores
de
um
sistema
de
administrao escolar: nome, endereo,
cidade, UF, CEP, telefone, CPF, RG, data
de nascimento, grau de escolaridade,
curso em que se formou.
2) Cadastrar e imprimir os dados das
disciplinas de uma escola: nome,
descrio do contedo, frequencia e nota
mnimas para aprovao do aluno.

Exerccio
3) Na declarao de imposto de renda devem constar os dados: nome do
contribuinte, CPF, renda anual e nmero de dependentes. Os clculos so
feitos da forma a seguir.
A) Desconto de R$ 110,00 por dependente.
B) Com base na base na renda lquida (renda anual menos descontos)
calculada a alquota de contribuio de acordo com a tabela:

Renda lquida

Alquota(%)

At R$ 900,00

Isento

De R$ 901,00 at R$ 5.000,00

De R$ 5.001at R$ 10.000,00

10

Acima de R$ 10.001,00

15

Faa um algoritmo para calcula os valores dois impostos a serem


pagos por um nmero indeterminado de contribuintes. No se
esquea que, para facilitar seu trabalho, voc deve adotar um flag.

Varivel Acumuladora

utilizada quando necessrio acumular


vrios valores para a execuo de
operao ou obteno de um valor total.
Por exemplo, para calcular a mdia
aritmtica de 50 nmeros, voc deve ir
somando os valores e, no final, dividir a
soma pela quantidade de nmeros; para
calcular o total de uma compra, voc deve
ir somando os valores dos produtos
comprados at obter o total da compra.

Varivel Acumuladora Exemplo


Inicio
NUMERO, SOMA, MEDIA, CONT : numerico
SOMA 0
Para CONT de 1 at 10 faa
leia Digite um nmero, NUMERO
SOMASOMA + NUMERO
fim-para
MEDIA SOMA/CONT
Escreva A mdia aritmtica dos nmeros lidos , MEDIA
fim

O exemplo acima apresenta as variveis contadora (CONT) e


acumuladora (SOMA). A varivel acumuladora vai adicionando
(acumulando) cada valor lido e, no final, usada para calcular a
mdia. Por isso, ela deve iniciar com o valor zero, que no vai
interferir no valor final da mdia.

Exerccio

Exerccio

Vetor
O vetor uma varivel que pode conter vrias
constantes do mesmo tipo.

Esse esquema representa um vetor do tipo numrico,


que pode ser denominado NUMEROS. Ele possui cinco
posies, ou seja, cinco locais possveis para
armazenar constantes numricas.
A praticidade do vetor est em manipular um conjunto
de dados do mesmo tipo sem que seja necessrio
declarar muitas variveis.

Declarando Vetor

Quando um vetor declarado, o


computador reserva uma parte da
memria e a divide em determinada
quantidade de partes (indicada na
declarao) que iro armazenar as
constantes de um mesmo tipo.
O vetor s pode armazenar constantes de
um nico tipo: literal, numrico ou lgico.
O tipo lgico geralmente no muito
utilizado em vetores.

Sintaxe do Vetor
<nome vetor> : vetor <posio inicial>...<posio final> <tipo de
constante que o vetor poder conter>
Exemplo: NOTAS : vetor [1..20] numerico
ESTADO : vetor [1..27] literal
NOME_DE_PESSOA : vetor [1..0] literal
Observao: recomendado que voc utilize o valor 1 como valor
padro do primeiro ndice (primeiro endereo) do vetor. Se quiser
utilizar um ndice diferente de 1, voc deve considerar essa
modificao para poder localizar a posio correta na varivel. Por
exemplo: NOME [0..30]. Neste caso, o vetor tem 31 posies e no
30. Se quisesse acessar a terceira posio do vetor, voc teria de
escrever NOME [2].

Inserindo valores no vetor


Quando o valor declarado, ele apresenta-se assim na
memria:
Para colocar os nmeros nos espaos devem ser feitas as
atribuies a seguir.
NUMERO [1] 345
NUMERO [2] 235
NUMERO [3] 546
NUMERO [4] 45323
NUMERO [5] 234234
Logo aps essas atribuies, o vetor ser preenchido como no incio deste capitulo.

Para acessar os locais do vetor, basta colocar o nome do


vetor seguido da posio entre colchetes. Feito isso, voc
pode utilizar o local como se fosse uma varivel simples.

Montando o Vetor
Ler e armazenar os nomes de 15 Pessoas.
Inicio
PESSOAS: vetor [1..15] literal {declarando vetor PESSOAS}
PESSOA: literal
NUMERO_PESSOA, POS: numerico
NUMERO_PESSOA 0
{NUMERO_PESSOA controla repetio de 1 a 15}
POS 0
{POS indica a posio onde ser colocado o nome lido}
Enquanto NUMERO_PESSOA < 15 faa
leia PESSOA
POS POS + 1
PESSOAS [POS] PESSOA {atribuindo o nome lido posio 1 do vetor}
NUMERO_PESSOA NUMERO_PESSOA + 1
fim-enquanto
Fim.

Montando o Vetor
Montando o vetor do exemplo anterior, mas
utilizando a estrutura para/faa/fim-para.
Inicio
PESSOA: vetor [1..15] literal
POS: numerico
para POS de 1 at 15 faa
leia PESSOA [POS]
fim-para
Fim.

Exerccio
1)

Ler 100 nmeros de matrculas de alunos e armazenar em um vetor.


Esses nmeros so distintos, ou seja, no existem nmeros de matrculas
iguais.

2)

Ler 200 nmeros e imprimir na ordem inversa da leitura, ou seja, o ltimo


nmero lido deve ser o primeiro impresso.

3)

Ler um vetor de 50 nmeros e montar outro vetor com os valores do


primeiro multiplicado por 3.

4)

Ler 50 nomes de professores e seus respectivos tempos de profisso.


Armazenar esses valores em dois vetores: PROFESSOR e TEMPO
PROFISSO.

Um armazm contm 400 produtos e para cada tipo de produto existe um


cdigo. Faa um algoritmo para ler o cdigo do produto e a quantidade
em estoque. Depois, monte dois vetores para armazenar respectivamente
os cdigos das mercadorias e a quantidade dos produtos.
Cap5, atividade 1.
5)

Transferindo valores de variveis


Antes de aprender a ordenar vetor, devemos
relembrar que quando a representao a seguir
for mostrada XY, quer dizer que o valor de Y
sobrescrever o valor de X. Se for feito o oposto
YX acontecer da mesma forma, s que o
valor de X que sobrescrever o de Y. Esse
problema ser resolvido com a criao de uma
outra varivel.
AUXX
XY
YAUX

Ordenando Vetores
Imagine um vetor c/ 5 elementos. Como
coloc-los em ordem crescente? Existem
vrias formas, mas utilizaremos o mtodo
Bolha ou Burble Sort.
Para criar esse algoritmo, voc deve
primeiro resolver a parte lgica e depois
escrev-la por meio dos comandos.
Utilize um vetor de cinco posies, que
pode ser denominado VET.
VET

Exemplo
Inicio

Inicio

VET : vetor [1..5] numerico

VET : vetor [1..5] numerico

NUMLIDO, POS, ULTIMO, AUX : numerico

POS, ULTIMO, AUX : numerico

para POS de 1 at 5 faa

para POS de 1 at 5 faa

leia Digite os 5 nmeros:, NUMLIDO

leia Digite os 5 nmeros:, VET[POS]

VET[POS] NUMLIDO

fim-para

fim-para

POS 1

POS 1

ULTIMO 5

ULTIMO 5

AUX 0

AUX 0

enquanto ULTIMO <> 2 faa

enquanto ULTIMO <> 2 faa

enquanto POS <> (ULTIMO - 1) faa

enquanto POS <> (ULTIMO - 1) faa

se VET [POS] > VET[POS+1] ento

se VET [POS] > VET[POS+1] ento

AUX VET[POS]

AUX VET[POS]

VET[POS] VET[POS+1]

VET[POS] VET[POS+1]

VET[POS+1] AUX

VET[POS+1] AUX

seno

fim-se

POS POS+1

POS POS+1

fim-se

fim-enquuanto

fim-enquuanto

POS 1
ULTIMO ULTIMO 1

POS 1

fim-enquanto

ULTIMO ULTIMO 1
fim-enquanto

Fim.

Fim.

Exerccio
1) Colocar em ordem crescente 100 nmeros de matrculas em um vetor.
2) Ler um vetor de 50 nmeros e montar outro com os valores do primeiro
multiplicados por sete, em ordem decrescente. Imprimir os dois vetores.
3. Ler os vetores A e B, com 100 nmeros cada. Criar o vetor C, colocando em cada
posio dele o resultado da soma dos valores das posies correspondentes em
A e B. Criar o vetor D, colocando nele o resultado da multiplicao de A por B.
Imprimir os valores armazenados no vetor C em ordem decrescente e os
armazenados em D em ordem crescente.
4. Considerar dois vetores: PROFESSOR, contendo 100 nomes de professores de
uma faculdade, e TEMPOPROFISSAO, contendo o tempo de atuao de cada
um. Para cada nome do vetor PROFESSOR h, na mesma posio do vetor
TEMPOPROFISSAO, o respectivo valor do tempo de atuao. Imprimir os nomes
dos professores contidos nesse vetor seguindo a ordem decrescente do tempo de
profisso.
5. Ler um vetor contendo 100 cdigos relativos s mercadorias de um armazm e
outro relativo s quantidades de mercadorias. Imprimir os cdigos e as
quantidades dos produtos seguindo a ordem crescente das quantidades.
Cap5 ativ2

Pesquisando em Vetores
Depois que voc ordena os vetores, como
foi mostrado na aula anterior, fica bem
menos trabalhoso.
Existem vrios mtodos de pesquisa em
vetor: para maioria, pr-requisito o
ordenamento do vetor, em ordem
crescente e decrescente.
Vamos conhecer os mtodos de pesquisa
em vetor denominados de Sequencial e
Binrio.

Pesquisa Sequencial
O mtodo de pesquisa sequencial o mais
simples: um valor lido e, em seguida,
pesquisado em um vetor at que seja
encontrado ou que o vetor termine.
Esse mtodo o mais lento de pesquisa, pois,
se no localizar o valor pesquisado, percorre
todo o vetor e no somente uma parte dele,
como nos outros mtodos. O desempenho
desse mtodo pode melhorar se ele for aplicado
em um vetor ordenado; mesmo assim, ainda
inferior aos outros mtodos.

Questo anterior em Pseudocdigo.

Exerccio
1) Ler um vetor contendo 100 nmeros, que
correspondem a matriculas de alunos. Ler
cinco nmeros e imprimir uma mensagem
informando se eles esto ou no presentes no
vetor.
2) Ler uma frase de no mximo 20 caracteres e,
armazenar cada caractere em uma posio de
um vetor. Imprimir a quantidade de vezes que
aparecem as letras A maisculas e minsculas
e a quantidade de espaos que existem na
frase.

Pesquisa Binria
Esse mtodo mais rpido que o
sequencial, pois pesquisa um nmero
menor de dados. A cada teste,
pesquisada somente a parte do vetor que
contm valores que satisfaam a
condio da pesquisa (ser o valor maior
ou menor que o nmero lido). Para que
essa
pesquisa
seja
feita,

imprescindvel que o vetor esteja


ordenado.

Pesquisa Binria - Pseudocodigo

Matriz
Corresponde a uma estrutura que apresenta o recurso de se
colocar vrias constantes em uma s varivel semelhante ao
vetor.
Observe que a matriz possui linhas e colunas.
Coluna

Matriz 6x4
1

Linha

2
3
4
5
6
1

Declarando Matriz
Quando uma matriz declarada, o computador reserva uma parte da
memria para ela, como acontece com outras variveis. No caso da
matriz, essa parte dividida em determinada quantidade de colunas e
linhas (indicada na declarao) e identificada por um par de nmeros
(um referente linhas e outro coluna).
A matriz s pode armazenar constantes de um nico tipo.
Sintaxe da Matriz:
<nome da matriz> : matriz [N inicial de linha .. N final de linha,N inicial de
colunas .. N final de linha] <tipo de constante>

Exemplo:
NOTAS_DE_ALUNOS : matriz [1..4,1..200] numerico
MAT : matriz [1..10,1..30] literal
Obs: recomendado que voc utilize o valor 1 como
padro de ndice (primeiro endereo) das linhas e colunas
da matriz.

Inserindo valores na matriz


Para acessar as posies da matriz, basta indicar a linha e a
coluna desejadas.

MAT uma matriz 6x4, ou seja, de seis linhas e 4 colunas. Para


declarar essa matriz, utilize o comando a seguir:
MAT : matriz [1..6,1..4] numerico
Para armazenar a constante numrica 100 na terceira linha da
segunda coluna, utilize o comando a seguir:
MAT [3,2] 100
Ou seja, basta colocar o nome da matriz e, a seguir, entre colchetes,
o nmero da linha e o nmero da coluna separados por vrgula.

Montando Matriz
Monte um algoritmo para ler e armazenar os nomes de duas
pessoas juntamente com os primeiros nomes de seus pais.
Neste algoritmo ser usada uma matriz com 2 linhas por 3
colunas: uma linha para cada nome (no se esquea que so
duas); uma coluna para o nome da pessoa, uma para o nome do
pai e outra para o nome da me.
Nome Pessoa

Nome Pai

Nome Me

Pessoa 1

Pessoa 2

2
1

Montando Matriz
inicio
PESSOA : matriz [1..2, 1..3] literal
LINHA, COLUNA : numerico
para LINHA de 1 at 2 faa
para COLUNA de 1 at 3 faa
se COLUNA = 1 ento
leia Digite o 1 nome de uma Pessoa:,

PESSOA[LINHA, COLUNA]

seno se COLUNA = 2 ento


leia Digite o 1 nome do Pai:, PESSOA[ LINHA, COLUNA]
seno
leia Digite o 1 nome do Me:,
fim-se
fim-se
fim-para
fim-para
fim.

PESSOA[ LINHA, COLUNA]

Exerccio
1.
2.

3.

Montar uma matriz nas dimenses 4 x 5 e imprimir a


soma das linhas e colunas.
Monte uma matriz para quando o usurio informar um
nmero correspondente a um ms, o algoritmo
imprima o nome do ms indicado em portugus, a
abreviatura e o nome do ms em ingls. Por exemplo,
o usurio digita o nmero 4 e o algoritmo ativado
para imprimir: 4 Abril, Abr, April.
Ler os nmeros de matrculas, as mdias finais e as
porcentagens de freqncia de 100 alunos; armazene
esses dados em uma matriz e, na ltima linha,
coloque o nmero de alunos lidos, a mdia das
mdias finais e das porcentagens de freqncia.

Registro
Na declarao das variveis o computador reserva uma
rea da memria para a acomodar a mesma.
No entanto, o armazenamento das variveis pode
ocorrer de forma independente, ou seja, cada varivel
pode ser armazenada em local diferente.
Logo, isso torna o desempenho do programa um pouco
mais lento.
Vale lembrar que esse problema no notado em
programas pequenos, j que a leitura do mesmo ocorre
em alguns segundos.
J em programas que manipulam uma grande
quantidade de dados, trabalham com um numero grande
de variveis interessante utilizar a tcnica do Registro.

Registro
Para
solucionar
o
problema
do
desempenho
dos
programas
que
manipulam uma grande quantidade de
variveis. Podemos utilizar o recurso da
varivel heterognea, isto , que permite
armazenar vrios tipos diferentes de
constantes, denominadas de Registro.
Observe como fica a declarao das
variveis por meio do Registro Ficha:

Declarando as variveis do Registro


FICHA: registro
NOME, ESTADOCIVIL, NOMECONJ,
ENDERECO, BAIRRO, CIDADE, UF, EMAIL : literal
IDADE, DATANASC, NUMERO, CEP : numerico
FONE : vetor [1..3] numerico
fim-registro
Na declarao de um registro, uma parte da memria
reservada e nesse espao so inseridas as variveis que
so declaradas entre comandos registros e fim-registro.
Por tanto elas passam a ocupar o mesmo espao,
tornando o desempenho do programa mais rpido.

Referenciar um campo dentro de um registro


No exemplo abaixo, as varveis NOME e CEP,
que agora so campos do registro FICHA,
devem ser referenciadas depois do nome do
seu respectivo registro.
FICHA.NOME ou FICHA.CEP
FICHA: registro
NOME, ESTADOCIVIL, NOMECONJ,
ENDERECO, BAIRRO, CIDADE, UF, EMAIL : literal
IDADE, DATANASC, NUMERO, CEP : numerico
FONE : vetor [1..3] numerico
fim-registro

Lendo e guardando valores em um registro


Para finalizar o cadastro o usurio dever digitar
FIM no campo NOME, e o cadastro das fichas
estaro encerrados. Nesse caso voc deve
primeiro ler o campo NOME para saber se deve
continuar o cadastro ou no.
FICHA: registro
NOME, ESTADOCIVIL, NOMECONJ,
ENDERECO, BAIRRO, CIDADE, UF, EMAIL : literal
IDADE, DATANASC, NUMERO, CEP : numerico
FONE : vetor [1..3] numerico
fim-registro
leia Digite o nome da pessoa ou FIM para encerra o cadastro,
FICHA.NOME

Comando Enquanto
Se o usurio no digitar a palavra FIM logo no campo NOME,
repita a leitura dos campos para outras fichas at encontrar
essa palavra. Utilize o comando enquanto.

FICHA: registro
NOME, ESTADOCIVIL, NOMECONJ,
ENDERECO, BAIRRO, CIDADE, UF, EMAIL : literal
IDADE, DATANASC, NUMERO, CEP : numerico
FONE : vetor [1..3] numerico
fim-registro
leia Digite o nome da pessoa ou FIM para encerra o cadastro,
FICHA.NOME
enquanto (FICHA.NOME <> FIM) faa

Leia os outros campos do registro. Antes de encerrar o


comando enquanto a leitura do NOME necessria,
porque a primeira leitura foi fora da estrutura de
repetio (enquanto).
FICHA: registro
NOME, ESTADOCIVIL, NOMECONJ,
ENDERECO, BAIRRO, CIDADE, UF, EMAIL : literal
IDADE, DATANASC, NUMERO, CEP : numerico
FONE : vetor [1..3] numerico
fim-registro
leia Digite o nome da pessoa ou FIM para encerra o cadastro, FICHA.NOME
enquanto (FICHA.NOME <> FIM) faa
leia Digite a idade da pessoa:, FICHA.IDADE
leia Digite a data de nascimento da pessoa:, FICHA.DATANAS
leia Digite o estado
FICHA.ESTADOCIVIL

civil

da

pessoa

(casado,

solteiro,

vivo):,

Comando Se
Para no perguntar o nome do cnjuge a uma pessoa solteira, utilize o
comando se, que vai verificar se a pessoa solteira ou no.
FICHA: registro
NOME, ESTADOCIVIL, NOMECONJ,
ENDERECO, BAIRRO, CIDADE, UF, EMAIL : literal
IDADE, DATANASC, NUMERO, CEP : numerico
FONE : vetor [1..3] numerico
fim-registro
leia Digite o nome da pessoa ou FIM para encerra o cadastro, FICHA.NOME
enquanto (FICHA.NOME <> FIM) faa
leia Digite a idade da pessoa:, FICHA.IDADE
leia Digite a data de nascimento da pessoa:, FICHA.DATANAS
leia Digite o estado
FICHA.ESTADOCIVIL

civil

da

pessoa

(casado,

solteiro,

se (FICHA.ESTADOCIVIL <> SOLTEIRO) ento


leia Digite o nome do cnjuge da pessoa: , FICHA.NOMECONJ
fim-se

vivo):,

Exerccio
1 - Cadastrar e imprimir os dados pessoais de vrios professores de um sistema
de administrao escolar, utilizando registros. Os dados pessoais so: nome,
endereo, cidade, UF, CEP, telefone, CPF, RG, data de nascimento, grau de
escolaridade, curso em que se formou.
2. Cadastrar e imprimir os dados gerais das disciplinas de um sistema de
administrao escolar: nome da disciplina, descrio do contedo, freqncia
e nota mnima para aprovao.
3. Cadastrar e imprimir os dados dos veculos de uma concessionria: placa, tipo
de combustvel, fabricante, nmero do chassis, cor, tipo, modelo, ano de
fabricao, ano do modelo e categoria.
4. Cadastrar e imprimir os dados das fitas de vdeo de uma locadora: cdigo do
filme, nome, tipo de filme, durao, produtor, ator principal, diretor e ano de
produo.
5. Cadastrar os dados dos livros de uma biblioteca: cdigo do livro, ttulo,
subttulo, autor, ano de edio, nmero da edio e editora. Imprimir um
relatrio desses dados.
Cap7 , atividade 1.

Criando novos tipos de variveis

Algumas vezes os tipos bsicos de variveis


que conheceu at aqui (numrico, literal e
lgico) no so suficientes para resolver um
algoritmo. Ento, voc deve criar outro tipo
varivel; para isso, deve utilizar o comando tipo.
A praticidade do comando tipo est na
possibilidade de voc criar novas variveis em
vez de declarar a mesma estrutura vrias
vezes.

Exemplo do comando tipo.


Imagine se no mesmo algoritmo houvesse dois tipos de registros
que tivessem a mesma estrutura de endereo nos seus campos. A
declarao das variveis seria a mesma para os dois campos de
endereamento das estruturas.(SEM O COMANDO TIPO)
FICHACAND: registro
NOMECAND, ESTADOCIVIL, ENDERECO, RUA,BAIRRO, CIDADE, UF : literal
IDADE, DATANASC, NUMERO, CEP, GRAUESC, NUMINSCRICAO: numerico
FONE : vetor [1..3] numerico
fim-registro
FICHAFUNC: registro
NOMEFUNC, ESTADOCIVIL, NOMECONJ, ENDERECO, RUA, BAIRRO, CIDADE, UF : literal

IDADE, DATANASC, NUMERO, CEP, NUMDEP: numerico


FONE : vetor [1..3] numerico
fim-registro

Exemplo do comando tipo.


tipo ENDERECO = registro
RUA, BAIRRO, CIDADE, UF : literal
NUMERO, CEP : numerico
fim-registro
FICHACAND: registro
NOMECAND, ESTADOCIVIL : literal
IDADE, DATANASC, GRAUESC, NUMINSCRICAO: numerico
FONE : vetor [1..3] numerico
ENDERECOCAND : ENDERECO
fim-registro
FICHAFUNC: registro
NOME, ESTADOCIVIL, NOMECONJ : literal
IDADE, DATANASC, NUMDEP: numerico
FONE : vetor [1..3] numerico
ENDERECOFUNC : ENDERECO
fim-registro

Armazenando no Registro
Armazenamento de uma varivel ocorre atravs do
nome do registro seguido do campo da nova
varivel. Veja os exemplos a seguir.
FICHAF.FONE [2] 32336367
Registro

Campo

Armazena o nome da Rua do Ouvidor no campo


RUA da estrutura ENDERFICHA do registro
FICHAF.
FICHA.ENDERFICHA.RUA Rua do Ouvidor

Exemplo
FICHAF.ENDERFICHA.RUA Rua do Ouvidor

Criando um conjunto de Registro


Declare o vetor FICHAS, de 100 posies, onde cada uma ter um
registro FICHA.

Agora um exemplo de acesso utilizando esse algoritmo:


Acessar o campo NOME:
FICHAS [99].NOME
Acessar o terceiro telefone do dcimo registro:
FICHAS[10].FONES[3]

Cadastrar os dados pessoais de 50 professores: nome, endereo, cidade, UF,


CEP, telefone, CPF, RG, data de nascimento, grau de escolaridade, curso em
que se formou. Ler dez nomes e mostrar RG e CPF de cada pessoa.

incio
| tipo FICHA = registro
|
| NOME, ENDRECO, CIDADE, UF, RG,
|
| CURSO, GRAUESC : literal
|
| CEP, FONE, CPF, DATANASCIMENTO : numrico
|
fim-registro
| PROFESSORES : vetor [1..50] FICHA
| NOMECONSUL : literal
| CONT,POS : numrico
| para POS de 1 at 50 faa
| | leia "Digite o nome do professor:", PROFESSORES[POS].NOME
| | leia "Digite o endereo do professor:", PROFESSORES[POS].ENDERECO
| | leia "Digite a cidade onde reside o professor:", PROFESSORES[POS].CIDADE
| | leia "Digite a Unidade Federativa (Estado):", PROFESSORES[POS].UF
| | leia "Digite o CEP:", PROFESSORES[POS].CEP
| | leia "Digite o nmero do telefone(somente os nmeros) do professor:", PROFESSORES[POS].FONE
| | leia "Digite o Cadastro de Pessoas Fsicas (C.P.F.) do professor:", PROFESSORES[POS].CPF
| | leia "Digite o Registro Geral (R.G.) do professor:", PROFESSORES[POS].RG
| | leia "Digite a data de nascimento(somente os nmeros):", PROFESSORES[POS].DATANASCIMENTO
| | leia "Digite o grau de escolaridade do professor(Mestre, Doutor,...):", PROFESSORES[POS].GRAUESC
| | leia "Digite o nome do curso em que o professor se formou:", PROFESSORES[POS].CURSO
| fim-para

para CONT de 1 at 10 faa


| | leia "Digite o nome a ser consultado:", NOMECONSUL
| | POS1
| | enquanto NOMECONSUL < > PROFESSORES[POS].NOME ou POS < >51
| | | POS POS + 1
| | fim-enquanto
| | se NOMECONSUL = PROFESSORES[POS].NOME
| | | ento escreva "Nome:", PROFESSORES[POS].NOME
| | |
escreva "CPF:", PROFESSORES[POS].CPF
| | |
escreva "RG:", PROFESSORES[POS].RG
| | | seno escreva "Nome no consta no cadastro !"
| | fim-se
| fim-para
fim

Exerccio
1)

2)

Cadastrar os dados gerais de 300 disciplinas que os


professores lecionam: nome, contedo, freqncia e
nota mnimas para aprovao. Ler cinco nomes de
disciplinas e mostrar freqncia e mdia mnimas para
aprovao em cada uma.
Montar o cadastro dos dados de 500 veculos de uma
empresa transportadora: placa, tipo de combustvel,
fabricante, nmero do chassis, cor, tipo, modelo, ano
de fabricao, ano do modelo, nmero de lugares,
capacidade de peso suportado, tipo de transporte
(turismo, ba ou carroceria aberta) e capacidade
mxima de passageiros. Exibir a placa, tipo de
combustvel, nmero de lugares, capacidade de peso
suportado, tipo de transporte e capacidade mxima de
passageiros de dez veculos solicitados por um
usurio por meio das placas.