Você está na página 1de 72

IFBA

CAMPUS
EUNPOLIS

CURSO TCNICO
DE INFORMTICA
APOSTILA DE ALGORITMOS
Construir algoritmos o objetivo fundamental de toda a
programao, esta apostila ensina atravs de um processo
lgico como resolver problemas computacionais atravs da
construo de Algoritmos usando o Portugus Estruturado.

Prof. Regilan Meira


www.regilan.com

IFBA - Campus Eunpolis - Curso Tcnico Integrado em Informtica - Algoritmos

SUMRIO
PARTE 1: CONCEITOS INICIAIS ............................................................................................. 3
PARTE 2: ESTRUTURAS DE DECISO .................................................................................. 15
PARTE 3: ESTRUTURAS DE REPETIO .............................................................................. 34
PARTE 4: ESTRUTURA DE DADOS HOMOGNEAS: MATRIZES........................................... 49
PARTE 5: SUB-ROTINAS (PROCEDIMENTOS E FUNES) .................................................. 63

Pgina

IFBA - Campus Eunpolis - Curso Tcnico Integrado em Informtica - Algoritmos

LGICA DE
PROGRAMAO

PARTE 1:
Conceitos
Iniciais

NESTE CAPTULO, SERO APRESENTADOS OS


RELACIONADOS LGICA DE PROGRAMAO TAIS COMO:

CONCEITOS

INICIAIS

SEQUNCIA LGICA
ALGORITMO
INSTRUES BSICAS
VARIVEIS E TIPOS DE DADOS
OPERADORES ARITMTICOS

Pgina

IFBA - Campus Eunpolis - Curso Tcnico Integrado em Informtica - Algoritmos

1.1.

CONCEITOS INICIAIS

A lgica de programao necessria para pessoas que desejam trabalhar com


desenvolvimento de sistemas e programas, ela permite definir a seqncia lgica para
o desenvolvimento. Estes pensamentos podem ser descritos como uma seqncia de
instrues, que devem ser seguidas para se cumprir uma determinada tarefa.
Na linguagem comum, entende-se por instrues um conjunto de regras ou
normas definidas para a realizao ou emprego de algo. Em informtica, porm,
instruo a informao que indica a um computador uma ao a executar. Uma
ordem isolada no permite realizar o processo completo, para isso necessrio um
conjunto de instrues colocadas em ordem seqencial lgica.
Dessa maneira, uma instruo tomada em separado no tem muito sentido;
para obtermos o resultado, precisamos colocar em prtica o conjunto de todas as
instrues, na ordem correta. A partir da, surge o conceito de Algoritmo. Um
algoritmo formalmente uma seqncia finita de passos que levam a execuo de
uma tarefa. Podemos pensar em algoritmo como uma receita, uma seqncia de
instrues que do cabo de uma meta especfica.

1.2.

ALGORITMOS

Os algoritmos so descritos em uma linguagem chamada pseudocdigo. Este


nome uma aluso posterior implementao em uma linguagem de programao,
ou seja, quando formos programar em uma linguagem, por exemplo, Visual Basic,
estaremos gerando cdigo em Visual Basic.
Sendo assim os algoritmos so independentes das linguagens de programao.
Ao contrrio de uma linguagem de programao no existe um formalismo rgido de
como deve ser escrito o algoritmo.
Um algoritmo deve ser fcil de se interpretar e fcil de codificar. Ou seja, ele
deve ser o intermedirio entre a linguagem falada e a linguagem de programao.
Entretanto ao montar um algoritmo, precisamos primeiro dividir o problema
apresentado em trs fases fundamentais:
 Entrada: So os dados de entrada do algoritmo
 Processamento: So os procedimentos utilizados para chegar ao
resultado final

Pgina

IFBA - Campus Eunpolis - Curso Tcnico Integrado em Informtica - Algoritmos

 Sada: So os dados j processados


Imagine o seguinte problema: Calcular a mdia final dos alunos de uma escola.
Os alunos realizaro quatro provas: P1, P2, P3 e P4, onde a mdia final dada pela
formula abaixo:
P1 + P2 + P3 + P4
4
Para montar o algoritmo proposto acima, devemos fazer trs perguntas chaves:
a) Quais so os dados de entrada?
R: Os dados de entrada so P1, P2, P3 e P4
b) Qual ser o processamento a ser utilizado?
R: O procedimento ser somar todos os dados de entrada e dividi-los por 4
(quatro)
c) Quais sero os dados de sada?
R: O dado de sada ser a mdia final

IDENTIFICAR OS ELEMENTOS QUE FORMAM UM ALGORITMO O PONTO CHAVE


PARA A RESOLUO DE UM PROBLEMA!

1.3.

TIPOS DE DADOS

Um computador nada mais do que uma ferramenta utilizada para solucionar


problemas que envolvam a manipulao de informaes, as quais se classificam,
grosso modo, em dois tipos bsicos: dados e instrues. Os dados so representados
por elementos advindos do mundo externo, os quais representam as informaes que
os seres humanos manipulam.
Os dados devem ser abstrados para serem processados em um computador.
Podemos dizer que os dados so as ENTRADAS de um algoritmo. Os dados podem
ser categorizados em trs tipos:
 Numricos: valores inteiros e no reais;

Pgina

IFBA - Campus Eunpolis - Curso Tcnico Integrado em Informtica - Algoritmos

 Caracteres: valores alfabticos ou alfanumricos os quais no sero


utilizados em operaes de clculo matemtico
 Lgicos: representados por valores dos tipos falsos ou verdadeiros

Os inteiros so dados numricos positivos e negativos pertencentes ao


conjunto de nmeros inteiros, excluindo qualquer valor numrico fracionrio. Como
exemplos desse tipo de dado tm-se os valores: 35, 0, 234, -90, -10, entre outros. A
representao do dado inteiro feita em portugus estruturado pelo comando inteiro.
Os dados reais so os numricos positivos e negativos pertencentes ao
conjunto de nmeros reais, incluindo todos os valores fracionrios e tambm os
valores inteiros. Como exemplo desse tipo de dado tem-se os valores: 35, 0, -90.90,
3.2987 etc. A representao do dado real feita em portugus estruturado pelo
comando real.
Os tipos caracteres so seqncias de valores delimitadas por aspas (),
formadas por letras (de A at Z), nmeros (de 0 at 9) e smbolos (por exemplo, todos
os smbolos imprimveis existentes num teclado). O tipo de dado caractere conhecido
tambm como alfanumrico, string, literal ou cadeia de caracteres. Como exemplo
tem-se os valores: PROGRAMAO, Rua Paulino Mendes, 010.589.987-90,
8843-7895. A representao do dado caractere feita em portugus estruturado
pelo comando caractere.
Por ltimo, ainda existem o tipo de dado lgico que so os dados com valores
que sugerem uma nica opo entre duas possibilidades existentes, normalmente
representados pelos valores falso ou verdadeiro. O tipo de dado lgico tambm
conhecido pela nomenclatura booleano. A representao do dado lgico feita em
portugus estruturado pelo comando lgico.

1.4.

VARIVEIS

Todo dado a ser armazenado na memria de um computador deve ser


previamente identificado, ou seja, primeiro necessrio saber o seu tipo para depois
fazer o seu armazenamento adequado. Armazenado o dado, ele pode ser utilizado e
manipulado a qualquer momento.

Pgina

IFBA - Campus Eunpolis - Curso Tcnico Integrado em Informtica - Algoritmos

Imagine a memria de um computador como um grande arquivo com vrias


gavetas, e em cada gaveta possvel guardar um nico valor por vez. Como em um
arquivo, as gavetas devem ser identificadas como uma etiqueta contendo um nome.
Do ponto de vista computacional pode-se definir de forma bem simplista que
uma varivel a representao de uma regio de memria utilizada para armazenar
um determinado valor por um espao de tempo. O tempo de armazenamento de um
valor est relacionado ao tempo de durao da execuo de um programa.
O nome de uma varivel utilizado para sua identificao e representao
dentro de um programa de computador e faz-se necessrio estabelecer algumas regras
de definio e uso de variveis:
 Os nomes de identificao de uma varivel podem utilizar um ou mais
caracteres, limitando-se a restries da prpria linguagem formal de
programao em uso. No caso do portugus estruturado essa restrio
no existe.
 O primeiro caractere de identificao do nome de uma varivel no
pode ser numrico. O primeiro caractere de identificao do nome de
uma varivel deve ser sempre alfabtico, os demais podem ser
alfanumricos.
 Na definio de um nome composto de uma varivel no podem existir
espaos em branco entre os nomes. Caso deseje separar nomes
compostos, deve ser utilizado o caractere de separao _ underline.
 Jamais uma varivel pode ser definida com o mesmo nome de uma
palavra que represente os comandos de uma linguagem de
programao de computadores, ou seja, com palavras reservadas de
uma linguagem.
 No pode ser utilizado como nome de varivel algum que j tenha sido
usado para identificar o nome de um programa

So nomes vlidos de variveis: NOMEUSUARIO, NOME_USURIO, FONE1,


DELTA, _NOME1, etc. No entanto definies como: NOME USUARIO, 1TELEFONE,
FONE$, entre outras sero consideradas invlidas.
As palavras: INTEIRO, REAL, CARACTERE, LGICO, entre outras palavras
reservadas so invlidas para a definio de nomes de variveis por j estarem
definidas como comandos de identificao de cdigo em portugus estruturado.
Ainda existe um tipo de varivel que denominada de Constante. Como sabemos
constante tudo que fixo, estvel, imutvel, inalterado, contnuo, invarivel, etc. Do

Pgina

IFBA - Campus Eunpolis - Curso Tcnico Integrado em Informtica - Algoritmos

ponto de vista computacional, que semelhante ao matemtico ou cientfico, uma


constante uma grandeza numrica usada normalmente numa expresso aritmtica
ou matemtica, que define um valor de equilbrio que se mantm inalterado,
independentemente das variveis envolvidas na operao a ser realizada.
Como exemplo prtico de uma constante, tem-se a constante matemtica pi ,
que equivale ao valor aproximado de 3.14159265.
Todo algoritmo se inicia com o uso da palavra reservada algoritmo que indica o
nome do algoritmo a ser desenvolvido. Exemplo:
algoritmo "Somar dois numeros"
algoritmo "Calcular IMC"
algoritmo "Pesquisa de Candidatos"

Aps a identificao do algoritmo, tem-se o bloco de variveis que


representado pelo comando var. Todas as variveis utilizados em um problema dever
ser declaradas nessa estrutura. Exemplo:
var
nome: caractere
idade, peso: caractere

Depois do bloco var, existe o bloco onde todas as instrues do problema so


resolvidas. Esse bloco delimitado por Inicio e Fim que so representados pelos
comandos inicio e fimalgoritmo
Como vimos para criar uma varivel em um algoritmo, devemos declar-las no
bloco var e identific-las por meio de um nome e um tipo de dado. Veja exemplo
completo de um algoritmo com declarao de variveis:
algoritmo "Exemplo de Variveis"
var
nome: caractere
idade, peso: inteiro
altura: real
ehdiabetico: logico
inicio
// Seo de Comandos
fimalgoritmo

Nessa parte do
algoritmo dever
existir apenas a

Pgina

IFBA - Campus Eunpolis - Curso Tcnico Integrado em Informtica - Algoritmos

1.5.

OPERADORES ARITMTICOS

Os operadores aritmticos so as ferramentas responsveis pelo


estabelecimento das operaes matemticas a serem realizadas em um computador.
Tanto variveis como constantes so utilizadas na elaborao dos clculos
matemticos.
So sete os principais operadores aritmticos presentes no portugus
estruturado:
OPERADOR

OPERAO

+
*
/
\
^
MOD

ADIO
SUBTRAO
MULTIPLICAO
DIVISO
DIVISO INTEIRA
EXPONNCIAO
RESTO DA DIVISO

bastante comum trabalharmos com expresses aritmticas ou frmulas


matemticas, uma vez que a maior parte do trabalho computacional est relacionada e
envolve a utilizao de clculos. Essas expresses so definidas pelo relacionamento
entre as variveis e constantes numricas com a utilizao dos operadores aritmticos.
Considere a frmula: AREA = * RAIO para o clculo da rea de uma
circunferncia, em que esto presentes as variveis AREA e RAIO, a constante (pi =
3.14159), os operadores aritmticos de multiplicao e exponenciao.
As expresses aritmticas em computao so escritas de uma forma um pouco
diferente da forma conhecida em matemtica. Por exemplo, expresso:
X = {43 . [55 : (30 + 2) ] }
A expresso acima seria escrita na forma computacional como:
X (43 * (55 / (30 + 2)))
Observe que as chaves e os colchetes so abolidos, utilizando-se em seu lugar
apenas os parnteses. tambm substitudo o sinal de ( = ) pelo sinal de ( ). O sinal

Pgina

IFBA - Campus Eunpolis - Curso Tcnico Integrado em Informtica - Algoritmos

( ) utilizado para indicar que o valor de uma expresso aritmtica ou frmula


matemtica est sendo armazenado em uma varivel.
Vamos a outro exemplo. Observe a frmula abaixo que utilizada para calcular
a rea de um tringulo:
A=b.H
2
A frmula para clculo da rea de um tringulo
computacionalmente definida como: AREA (BASE * ALTURA) / 2

poderia

ser

AREA, BASE e ALTURA so variveis declaradas dentro de um programa.

1.6.

INSTRUES BSICAS

As instrues a serem implementadas em um computador para a execuo de


um determinado programa so representadas por um conjunto de palavras-chave ou
comandos que formam a estrutura da linguagem de programao.
Para o estudo de lgica de programao adotaremos uma estrutura de
linguagem de programao denominada portugol ou portugus estruturado.
Para criar um programa que seja executvel dentro de um computador,
preciso ter em mente trs pontos de trabalho: a entrada de dados, o seu
processamento e a sada deles.
O processo de execuo de um programa ocorre segundo o exposto, aps a
entrada de dados com a instruo leia e a sua sada com a instruo escreva.
Uma entrada e uma sada podem acontecer dentro de um computador de
diversas formas. Por exemplo, uma entrada pode ser feita via teclado, leitores ticos,
etc. Uma sada pode ser feita em vdeo, impressora, disco, etc.
Para ler um valor do usurio, dever ser feito conforme o exemplo abaixo:
leia(nome)
leia(idade)

Ao executar a instruo acima, o prompt de comando exibir uma linha para


que o usurio escreva um valor na tela. Depois que o usurio informar esse valor e

Pgina

10

IFBA - Campus Eunpolis - Curso Tcnico Integrado em Informtica - Algoritmos

digitar a tecla ENTER, o valor informado ser gravado na varivel e poder ser
utilizado em qualquer momento do programa
Para exibir alguma informao na tela, usamos o comando escreva. Veja o
exemplo abaixo:
escreva(Digite um Valor)
escreval (O RESULTADO DA OPERAO :)
Ao utilizar o comando escreva, o contedo que estiver entre aspas duplas ser
exibido no prompt de comando. Quando utilizamos o comando escreval, significa que
o texto ser exibido na tela e ser pulado uma linha para a prxima execuo de um
comando.
OBSERVAO IMPORTANTE: TODOS OS COMANDOS DE LEITURA E ESCRITA
DE DADOS DEVERO EST LOCALIZADOS NO BLOCO QUE LIMITA O INICIO E FIM DE
UM ALGORITMO.
Considere o seguinte exemplo: Deve ser criado um programa que faa a leitura
de dois valores numricos. Realize a operao de soma entre os dois valores e
apresente o resultado obtido.
A ordem de execuo do algoritmo acima seria:
1. Ler dois valores, no caso as variveis A e B
2. Efetuar a soma das variveis A e B, cujo resultado ser representado
pela varivel X
3. Apresentar o valor da varivel X aps a operao de soma dos dois
valores fornecidos
Para comear a escrever o cdigo em Portugus Estruturado para o problema,
devemos relacionar quais so as variveis e os tipos de dados dessas variveis. Veja
como fica em Portugol:
algoritmo SOMAR_NUMEROS
var
x: inteiro
a: inteiro
b: inteiro

Pgina

11

IFBA - Campus Eunpolis - Curso Tcnico Integrado em Informtica - Algoritmos

Aps relacionar todas as variveis que sero utilizadas no programa com a


instruo var, passa-se para a fase de montagem do problema, que se localiza entre as
as instrues incio e fim.
inicio
leia (a)
leia (b)
x <- a + b
escreva (x)
fimalgoritmo

1.7.

EXEMPLOS
a) Desenvolver a lgica para um programa que calcule a rea de uma
circunferncia, e apresente a medida da rea calculada.
algoritmo "AREA_CIRCULO"
var
a: real
r: real
inicio
leia (r)
a <- 3.14159 * r ^ 2
escreva (a)
fimalgoritmo

b) Construir um programa que calcule o salrio lquido de um professor. Para


elaborar o programa, voc deve possuir alguns dados, tais como: valor da
hora aula, nmero de horas trabalhadas no ms e percentual de desconto
do INSS. Em primeiro lugar deve-se estabelecer o seu salrio bruto para
fazer o desconto e ter o valor do salrio lquido.

algoritmo "SALARIO_PROFESSOR"
var
HT: inteiro
VH, PD, TD, SB, SL: real
inicio

Pgina

12

IFBA - Campus Eunpolis - Curso Tcnico Integrado em Informtica - Algoritmos

leia (HT)
leia (VH)
leia (PD)
SB <- HT * VH
TD <- (PD/100) * SB
SL <- SB - TD
escreva (SB)
escreva (SL)
fimalgoritmo

1.8.

EXERCCIOS

QUESTO 01. Classifique os dados abaixo com I para Inteiro, R para Real, C para
Caractere e L para Lgico.
Exemplo:
( R ) -1,87
( ) 1000
( ) -475
( )0
( ) 009
( ) IF
BAHIA

(
(
(
(
(

) 0.898
) -100
) #9CJSH
) 45685
) Verdadeiro

(
(
(
(
(

) Falso
)92,32
)-10
) Cinco
)-283

QUESTO 02. Assinale com um X os nomes vlidos para uma varivel:

( ) NOME_USUARIO
( ) SEXO-USUARIO
( ) _1NOME

( ) SALARIOEMR$
( ) NOME USUARIO
( ) _TELEFONE

( ) ENDEREO
( ) 21BRASIL
( ) TELEFONE&RESIDENCIAL

QUESTO 03. Calcule o valor de cada expresso abaixo.


a) (20 - 15)/2
d) 2*(5\20) + 30/(15*2)

b) 20 15\2 * 3 + 9
e) 35 mod 6 + 2 ^ 5

c) 2*5/20 + 30/15*2
f) 35 \8 + 6 2 * 10 / 3

QUESTO 04. Desenvolva a codificao em portugus estruturado para os seguintes


programas:

Pgina

13

IFBA - Campus Eunpolis - Curso Tcnico Integrado em Informtica - Algoritmos

a) Ler uma temperatura em graus Celsius e apresent-la convertida em graus


Fahrenheit. A frmula de converso : F (9*C + 160) / 5, sendo F a
temperatura em Fahrenheit e C a temperatura em Celsius.
b) Calcular e apresentar o valor do volume de uma lata de leo, utilizando a
frmula: VOLUME 3.14159 * R ^ 2 * ALTURA.
c) Construir um programa que calcule e apresente em metros por segundo o
valor da velocidade de um projtil que percorre uma determinada distncia
em quilmetros a um determinado espao de tempo em minutos. Utilize a
frmula: VELOCIDADE (DISTNCIA * 1000) / (TEMPO * 60).
d) Elaborar um programa de computador que calcule e apresente o valor do
volume de uma esfera. Utilize a frmula: VOLUME (4 / 3) * 3.14159 *
(RAIO ^ 3).
e) Elaborar um programa que leia dois valores desconhecidos representados
pelas variveis A e B. Calcular e apresentar os resultados das quatro
operaes aritmticas bsicas.
f) Ler o valor correspondente ao salrio mensal (varivel SM) de um
trabalhador e tambm o valor do percentual de reajuste (varivel PR) a ser
atribudo. Armazenar e apresentar o valor do novo salrio (varivel NS).

Pgina

14

IFBA - Campus Eunpolis - Curso Tcnico Integrado em Informtica - Algoritmos

LGICA DE
PROGRAMAO

PARTE 2:
Estruturas de
Deciso

NESTE CAPTULO, ESTUDAREMOS A ESTRUTURA DE CONTROLE PARA


TOMADA DE DECISES. SERO ABORDADOS OS SEGUINTES ASSUNTOS:

DESVIO CONDICIONAL SIMPLES, COMPOSTO E ENCADEADO


OPERADORES RELACIONAIS
OPERADORES LGICOS
COMANDO DE SELEO MLTIPLA

Pgina

15

IFBA - Campus Eunpolis - Curso Tcnico Integrado em Informtica - Algoritmos

2.1.

ESTRUTURAS DE DECISO

At o momento estudamos como trabalhar com entradas, processamentos e


sadas com a utilizao de variveis, constantes e operadores aritmticos. Apesar de j
conseguir solucionar problemas e transform-los em programas, esses recursos so
limitados.
Imagine um programa que em determinado momento precisa tratar um dado
para realizar um processamento mais adequado. Exemplo: Verificar se um aluno
atingiu uma determinada mdia. Nesse caso, torna-se necessrio utilizar os recursos
de tomada de deciso.

2.2.

DESVIO SIMPLES
A tomada de deciso simples utiliza a instruo:

se (condio a ser testada) entao


//trecho de cdigo a ser executado caso a condio
testada seja verdadeira
fimse

Nesta instruo, se a condio estabelecida for verdadeira, sero executadas


todas as instrues definidas entre se...entao e fimse e depois sero executadas todas
as instrues existentes aps fimse. Se a condio for falsa, sero executadas as
instrues que estiverem definidas aps a instruo fimse.
Como exemplo, vamos considerar o seguinte problema: Ler dois valores
numricos, efetuar a adio e apresentar o seu resultado caso o valor somado seja
maior que 10. Os passos para a execuo deste problema seriam:
1. Ler dois valores (A e B)
2. Efetuar a soma dos valores A e B e armazenar o resultado da soma.
3. Exibir o resultado da soma caso seja maior que 10
No portugus estruturado representamos os passos acima atravs do seguinte
algoritmo abaixo:

Pgina

16

IFBA - Campus Eunpolis - Curso Tcnico Integrado em Informtica - Algoritmos

algoritmo "Somar Numeros"


var
valor1, valor2, resultado_soma: inteiro
inicio
escreva ("Digite o valor do numero 1: ")
leia (valor1)
escreva ("Digite o valor do numero 2: ")
leia (valor2)
resultado_soma <- valor1 + valor2
se (resultado_soma > 10) entao
escreva (" O resultado

: ", resultado_soma)

fimse
fimalgoritmo
No algoritmo acima, aps a definio dos nomes e tipos de variveis (bloco
var), solicitada a leitura dos valores para as variveis valor1 e valor2 atravs do
comando leia. Depois esses valores so implicados na varivel resultado soma, a qual
possui o resultado da adio dos dois valores. Em seguida, questiona-se no programa
uma condio que permitir imprimir o resultado da soma caso ela seja maior que 10,
e no sendo, o programa encerrado sem apresentar a referida soma, uma vez que a
condio falsa.
2.3.

OPERADORES RELACIONAIS

Ao usar uma instruo de tomada de deciso, necessrio definir para ela uma
condio, que o estabelecimento de uma relao lgica entre dois elementos,
podendo ser: varivel X varivel ou varivel X constante. No exemplo anterior a relao
lgica estabelecida foi se o valor armazenado na varivel resultado_soma maior que
10 (resultado_soma > 10).
Para que uma relao lgica seja definida, passa a ser necessrio usar de um
dos operadores relacionais existentes, os quais se encontram definidos na tabela a
seguir:
So seis os operadores lgicos presentes no portugus estruturado:

Pgina

17

IFBA - Campus Eunpolis - Curso Tcnico Integrado em Informtica - Algoritmos

OPERADOR

SIGNIFICADO

=
>
<

IGUAL
MAIOR QUE
MENOR QUE

>=
<=
<>

MAIOR OU IGUAL A
MENOR OU IGUAL A
DIFERENTE DE

Exemplos: A > B , valorA <> valorB, delta <= 0, X = -20


2.4.

DESVIO CONDICIONAL COMPOSTO


No desvio condicional composto utilizamos a instruo:

se (condio a ser testada) entao


//trecho de cdigo a ser executado caso a condio
testada seja verdadeira
senao
//trecho de cdigo a ser executado caso a condio
seja falsa
fimse
Nesta instruo, se a condio estabelecida for verdadeira, sero executadas
todas as instrues definidas entre se...entao. Se a condio estabelecida for falsa,
sero executadas todas as instrues que estiverem definidas entre senao e fimse.
Somente aps a execuo de uma das possibilidades anteriores que o programa
executar as instrues existentes aps fimse.
Como exemplo da utilizao desta estrutura condicional, considere o seguinte
problema:
Ler dois valores numricos e efetuar a adio. Caso o valor somado seja maior
ou igual a 10, deve ser apresentado somando a ele 5, caso o valor somado no seja
maior ou igual a 10, deve ser apresentado subtrado dele 7
No portugus estruturado representamos os passos acima atravs do seguinte
algoritmo abaixo:

Pgina

18

IFBA - Campus Eunpolis - Curso Tcnico Integrado em Informtica - Algoritmos

algoritmo "Somar Numeros"


var
A, B, R, T: inteiro
inicio
escreva ("Digite o valor de A: ")
leia (A)
escreva ("Digite o valor de B: ")
leia (B)
R <- A + B
se (R > 10) entao
T <- R + 5
senao
T <- R 7
escreva (" O resultado da operao : ", T)
fimse
fimalgoritmo
No algoritmo acima aps a definio das variveis, solicitada a leitura dos
valores para as variveis A e B (leia(A) e leia(B)), em seguida a adio desses dois
valores armazenada na varivel R (R <- A + B). Em seguida o programa testa uma
condio que permitir imprimir o resultado da soma adicionando 5, caso ela seja
maior ou igual a 10; e no sendo, o programa apresenta o resultado subtraindo 7.
Vamos a outro exemplo:
Construa um algoritmo que leia o preo de um produto (P) e apresente a
mensagem: Em promoo, caso o preo seja maior ou igual a R$ 50,00. Caso
contrrio, deve apresentar a mensagem: Preo Normal.
algoritmo "PROMOO"
var
preco :real
inicio
escreva(DIGITE O PREO DO PRODUTO)
leia(preco)

Pgina

19

IFBA - Campus Eunpolis - Curso Tcnico Integrado em Informtica - Algoritmos

se (preco >= 50) entao


escreva(PROMOO)
senao
escreva(PREO NORMAL)
fimse
fimalgoritmo
Para encerrar mais um exemplo: Num determinado Estado, para
transferncias de veculos, o DETRAN cobra uma taxa de 1% para carros fabricados
antes de 1990 e uma taxa de 1.5% para os fabricados de 1990 em diante, taxa esta
incidindo sobre o valor de tabela do carro. O algoritmo abaixo l o ano e o preo do
carro e a seguir calcula e imprime imposto a ser pago.
algoritmo "Detran"
var
valorCarro,impostoPagar: real
anoCarro: inteiro
inicio
escreva ("INFORME O ANO DO VECULO: ")
leia (anoCarro)
escreva ("INFORME O PRECO DO VECULO EM R$: ")
leia (valorCarro)
se (anoCarro < 1990) entao
impostoPagar <- valorCarro * 0.01
senao
impostoPagar <- valorCarro * 0.015
fimse
escreval ("O VALOR DE IMPOSTO A PAGAR DE R$: ",
impostoPagar)
fimalgoritmo
2.5.

DESVIO CONDICIONAL ANINHADO

Existem casos em que necessrio estabelecer algumas verificaes lgicas de


condies definidas sucessivamente. A partir do momento em que uma determinada
ao executada, ela pode tambm levar a outras condies, de forma que no haja

Pgina

20

IFBA - Campus Eunpolis - Curso Tcnico Integrado em Informtica - Algoritmos

limites. Dessa forma existe a possibilidade de usar uma condio dentro de outra
condio, o que leva a uma estrutura de deciso encadeada ou aninhada.
Podemos representar um desvio condicional aninhado no portugus
estruturado da seguinte forma:

se (condio 1 a ser testada) entao


//trecho de cdigo a ser executado caso a condio
testada seja verdadeira
senao
//trecho de cdigo a ser executado caso a condio
seja falsa
se (condio 2 a ser testada) entao
//trecho de cdigo a ser executado caso
condio 2 testada seja verdadeira
senao
//trecho de cdigo a ser executado caso a condio
seja falsa
fimse

fimse
Observe que dentro da estrutura seno da primeira condio, existe uma outra
estrutura se. Uma observao neste ponto que o programador dever encerrar as
estruturas de condio uma de cada vez, neste caso primeiro colocamos o fimse da
segunda condio e por ltimo o fimse da primeira condio.
Considere o seguinte problema: Elaborar um programa que efetue o clculo
do reajuste de salrio de um funcionrio. Considere que o funcionrio deve receber
um reajuste de 15% caso seu salrio seja menor que 500. Se o salrio for maior ou
igual a 500, mas menor ou igual a 1000, seu reajuste ser de 10%; caso seja ainda
maior que 1000, o reajuste ser de 5%.
No portugus estruturado representamos os passos acima atravs do seguinte
algoritmo abaixo:
algoritmo "Reajusta Salario"
var
salario,novo_salario: real

Pgina

21

IFBA - Campus Eunpolis - Curso Tcnico Integrado em Informtica - Algoritmos

inicio
escreva ("Digite o salario atual do empregado: ")
leia (salario)
se (salario < 500) entao
novo_salario <- salario * 1.15
senao
se (salario <= 1000) entao
novo_salario <- salario * 1.10
senao
novo_salario <- salario * 1.05
fimse
fimse
escreva ("O empregado teve o salario reajustado para:
", novo_salario)
fimalgoritmo

Agora outro exemplo:


Escreva um algoritmo que funcione como uma mquina de calcular operando
da seguinte maneira:
a) primeiro deve pedir os dois operandos;
b) logo a seguir deve pedir o tipo de operao (+, -, * ou /)
c) aps a escolha do operador, deve apresentar o resultado indicando que
tipo de operao foi executado.
Ex: a + b = 6;
d) se o operador no for um dos especificados, mensagem deve informar o
fato.
algoritmo "Calculadora"
var
op1,op2: real
operacao: caractere
inicio
escreva ("INFORME O OPERANDO 01: ")
leia (op1)

Pgina

22

IFBA - Campus Eunpolis - Curso Tcnico Integrado em Informtica - Algoritmos

escreva ("INFORME O OPERANDO 02: ")


leia (op2)
escrevaL ("DIGITE: ")
escrevaL (" + :PARA FAZER UMA OPERAO DE ADIO.")
escrevaL (" - :PARA FAZER UMA OPERAO DE SUBTRAO")
escrevaL
("
*
:PARA
FAZER
UMA
OPERAO
DE
MULTIPLICAO")
escrevaL (" / :PARA FAZER UMA OPERAO DE DIVISO")
escreva ("OPERANDO: ")
leia (operacao)
se (operacao = "+") entao
escreva("A ADIO DO OPERANDO 1 + OPERANDO 2 = ",
op1 + op2)
senao
se (operacao = "-") entao
escreva("A SUBTRAO DO OPERANDO 1 - OPERANDO
2 = ", op1 - op2)
senao
se (operacao = "*") entao
escreva("A MULTIPLICAO DO OPERANDO 1 *
OPERANDO 2 = ", op1 * op2)
senao
escreva("A DIVISO DO OPERANDO 1 /
OPERANDO 2 = ", op1 / op2)
fimse
fimse
fimse
fimalgoritmo

2.6.

OPERADORES LGICOS

Em algum momento pode haver a necessidade de trabalhar com mais de uma


condio dentro de uma nica deciso, e fazer alguns testes lgicos mltiplos. Quando
houver a necessidade de utilizar mais de uma condio para uma mesma tomada de
deciso deve ser utilizado um recurso denominado operador lgico.

Pgina

23

IFBA - Campus Eunpolis - Curso Tcnico Integrado em Informtica - Algoritmos

Os operadores lgicos mais comuns so: e (conjuno), ou (disjuno) e o no


(negao)
2.6.1. OPERADOR E
O operador lgico de conjuno e utilizado quando duas ou mais condies
de uma determinada deciso necessitam ser verdadeiras para obter-se resultado
lgico verdadeiro; caso contrrio, o resultado do valor lgico retornado ser falso. Se a
primeira condio possui valor lgico falso, a segunda condio no precisa ser
avaliada.
Dessa forma o resultado lgico verdadeiro quando todas as condies
envolvidas na deciso so verdadeiras.
No portugus estruturado, este operador representado da seguinte forma:

se (condio1 a ser testada) e (condio2 a ser


testada) entao
//trecho de cdigo a ser executado caso a condio1 e
a condio2 sejam verdadeira
senao
//trecho de cdigo a ser executado caso uma ou todas
as condies sejam falsas
fimse
OBSERVAO: Para que o resultado lgico seja verdadeiro, todas as condies
tm que ser verdadeiras.
Considere o seguinte problema: A Justia Eleitoral de um municpio
desenvolveu um programa para cadastramento de eleitores. Esse programa possui
uma rotina para verificar se um eleitor obrigado a votar ou no. Consideremos que
todos os eleitores so alfabetizados e o programa foi desenvolvido para a eleio de
2008. O programa solicita do eleitor o ano de seu nascimento e informa se ele est
obrigado ou no a participar das eleies.
No problema acima, o algoritmo dever calcular a idade do eleitor e verificar se
sua idade est entre 18 e 70 anos.

Pgina

24

IFBA - Campus Eunpolis - Curso Tcnico Integrado em Informtica - Algoritmos

Com a utilizao do operador e, o exemplo mostra que somente ser


apresentado que o eleitor obrigado a participar das eleies caso sua idade seja
maior ou igual a dezoito e menor ou igual a 70 anos.
Veja como fica agora a representao acima no portugus estruturado.
algoritmo "VERIFICA ELEITOR
var
ano_nascimento, idade: inteiro
inicio
escreva ("Informe o ano de nascimento do eleitor: ")
leia (ano_nascimento)
idade <- 2008 - ano_nascimento
se (idade >= 18) e (idade <= 70) entao
escreva
("Eleitor
obrigado
a
participar
das
eleies")
senao
escreva ("O eleitor no obrigado a participar das
eleies")
fimse
fimalgoritmo
2.6.2. OPERADOR OU
O operador lgico de disjuno ou utilizado quando pelo menos uma de
duas ou mais condies de uma determinada deciso necessita ser verdadeiro para
obter-se um resultado lgico verdadeiro, caso contrrio o valor do resultado lgico
retornado ser falso.
Dessa forma se a primeira condio possuir valor lgico verdadeiro a segunda
condio no precisa ser avaliada. Sendo assim o resultado lgico verdadeiro quando
pelo menos uma das condies envolvidas na deciso verdadeira.
No portugus estruturado, este operador representado da seguinte forma:

se (condio1 a ser testada) ou (condio2 a ser


testada) entao
//trecho de cdigo a ser executado caso a condio1 ou
a condio2 sejam verdadeira
senao

Pgina

25

IFBA - Campus Eunpolis - Curso Tcnico Integrado em Informtica - Algoritmos

//trecho de cdigo
condies sejam falsas
fimse

ser

executado

caso

todas

as

OBSERVAO: Para que o resultado lgico seja verdadeiro, apenas uma das
condies tem que ser verdadeiras.
Considere o seguinte exemplo: Em um programa de computador feito um
teste para verificar se o usurio informou o seu estado civil de forma correta no
sistema. O sistema apenas aceita os seguintes valores: solteiro e casado.
Com a utilizao do operador lgico ou, o algoritmo verifica se um dos
valores acima foi digitado. Caso um dos valores seja verdadeiro o sistema emite uma
mensagem: Estado civil vlido; caso os dois valores sejam falsos mostrado uma
mensagem informando que o estado civil invlido.
Veja como fica a representao do problema acima no portugus estruturado.

algoritmo "VERIFICA ESTADO CIVIL"


var
estado_civil: caractere
inicio
escreva ("Informe o estado civil: ")
leia (estado_civil)
se (estado_civil = "Solteiro") ou
"Casado") entao
escreva ("Estado civil vlido")
senao
escreva ("Estado civil invlido")
fimse

(estado_civil

Pgina

26

fimalgoritmo

2.6.3. OPERADOR NAO

IFBA - Campus Eunpolis - Curso Tcnico Integrado em Informtica - Algoritmos

Por ltimo temos o operador lgico nao. Este operador faz com que seja
executada uma determinada ao de uma deciso invertendo o seu resultado lgico.
Se a condio for verdadeira e possuir a sua frente o operador nao, esta ser
automaticamente considerada falsa, o inverso ocorrer para uma condio falsa que
possua a sua frente o operador nao, que ser automaticamente considerada
verdadeira.
Resumindo, o operador nao faz com que seja executada uma determinada
operao, invertendo o resultado lgico da condio.
No portugus estruturado, este operador representado da seguinte forma:

se nao (condio 1 a ser testada) entao


// instrues executadas se a condio no for
verdadeiras
senao
//trecho de cdigo a ser executado se a condio for
verdareira
fimse
OBSERVAO: se nao diferente de senao
O exemplo a seguir mostra a utilizao do operador no, que somente ser
efetuado o clculo de C <- (A+B) * X, se o valor da varivel X no for maior que 5.
Qualquer valor de 5 para baixo ser efetuado o clculo C <- (A + B) * X.

algoritmo "TESTE LGICO NO"


var
A,B,C,X : inteiro
inicio
leia (A, B, X)
se nao (x > 5) entao
C <- (A+B) * X
senao
C <- (A-B) * X
fimse
escreva (C)

Pgina

27

IFBA - Campus Eunpolis - Curso Tcnico Integrado em Informtica - Algoritmos

2.6.4. PRIORIDADE DOS OPERADORES LGICOS


Os operadores lgicos possibilitam o uso de mais de uma condio para a
tomada de uma nica deciso. Para usar adequadamente os operadores lgicos,
necessrio levar em conta sua ordem de prioridade. Veja na tabela abaixo a ordem
padro de prioridade.

OPERADOR

OPERAO

PRIORIDADE

No
E
Ou

Negao
Conjuno
Disjuno

1
2
3

Por exemplo, a expresso lgica:


(A = B) e no (A > 5), deve ser avaliada a partir de no (A > 5) e somente
depois de saber seu resultado que pode ser realizada avaliao do restante da
expresso lgica.
J a expresso (A = 1) ou (A >=4) e (A <=9) ser resolvida primeiro a parte da
expresso submetida ao operador e para depois ser resolvida a parte da expresso
submetida ao operador ou. Caso exista a necessidade de primeiro ser executada a
avaliao lgica da expresso ou, neste caso a avaliao lgica deve ser definida
entre parnteses como sendo: ((A = 1) ou (A >=4)) e (A <=9)
Para testar o aprendizado, considere o exemplo a seguir:
Sabendo que A=5, B=4 e C=3 e D=6, informe se as expresses abaixo so
verdadeiras ou falsas.
a) (A > C) e (C <= D) ( )
b) (A+B) > 10 ou (A + B ) = (C + D) ( )
c) (A >= C) e (D >= C) ( )

Respostas:
a)V
b)V

Pgina

28

IFBA - Campus Eunpolis - Curso Tcnico Integrado em Informtica - Algoritmos

c)F

2.7.

COMANDOS DE SELEO MLTIPLA

Em algumas situaes ao chegarmos a uma determinada instruo de um


algoritmo devemos selecionar um dentre alguns trechos a seguir, tendo como base
para esta escolha um conjunto de valores.
Exemplo: Testar o valor do estado civil de um determinado usurio
(Solteiro,Casado,Divorciado,Vivo), Testar o tipo sanguneo (A,B,O,AB), entre outros
exemplos.
Para lidar com casos deste tipo foi criado o comando de seleo mltipla, que
substitui as instrues de se...senao aninhandos.
Em um determinado algoritmo necessrio escrever um cdigo para testar o
tipo sanguneo informado pelo usurio. Poderamos resolver esse problema utilizando
uma estrutura de tomada de deciso de forma aninhada, conforme o exemplo abaixo:
se tipoSanguineo = A entao
senao
se tipoSanguineo = B entao
senao
se tipoSanguineo = AB entao
senao
fimse
fimse
fimse
Como resolver esse problema utilizando Comandos de Seleo Mltipla? Este
comando consiste de uma expresso (o seletor) e uma lista de comandos. Ou seja,
caso o valor de uma varivel for igual ao que uma lista de alternativas testa, ento o
comando desta varivel ser executado.
Depois da execuo o controle vai para o prximo comando aps o CASO. Se
no existir nenhum rtulo que satisfaa essa condio, o efeito do comando fica
indefinido.

Pgina

29

IFBA - Campus Eunpolis - Curso Tcnico Integrado em Informtica - Algoritmos

O comando de seleo mltipla possui a seguinte representao no portugus


estruturado:
escolha (varivel)
caso valor11, valor12, ..., valor1n
//seqncia-de-comandos-1
caso valor21, valor22, ..., valor2m
//seqncia-de-comandos-2
...
outrocaso
//seqncia-de-comandos-extra
fimescolha

O valor de expresso calculado e comparado seqencialmente com cada uma


das opes valor1, valor2, etc.
Se uma das opes for igual ao valor da expresso, a execuo continua a partir
dos comandos associados a esse valor.
Se nenhuma das opes for igual ao valor da expresso, a opo outrocaso
ser selecionada e a execuo ir continuar a partir dos comandos associados
mesma.
Veja agora como ficaria o exemplo do Tipo Sanguneo:
escolha tipoSanguineo
caso "A"
escreva ("A")
caso "B"
escreva ("B")
caso "AB"
escreva ("C")
caso "O"
escreva ("O")
outrocaso
escreva ("Tipo sanguneo invlido")
fimescolha
2.8.

EXERCCIOS

Pgina

30

IFBA - Campus Eunpolis - Curso Tcnico Integrado em Informtica - Algoritmos

QUESTO 01. Um usurio deseja um algoritmo onde possa escolher que tipo de mdia
deseja calcular a partir de 3 notas. Faa um algoritmo que leia as notas, a opo
escolhida pelo usurio e calcule a mdia.
As opes podem ser:
1 - aritmtica
2 - ponderada (3, 3,4)
QUESTO 02. Faa um algoritmo que leia um n inteiro e mostre uma mensagem
indicando se este nmero par ou mpar, e se positivo ou negativo.
QUESTO 03. A prefeitura de Eunpolis abriu uma linha de crdito para seus
servidores. O valor mximo da prestao no poder ultrapassar 30% do salrio bruto.
Atravs do salrio bruto e do valor da prestao, informar se o emprstimo pode ou
no ser concedido.
QUESTO 04. Escreva um programa em que calcule o valor a ser pago por produtos de
uma loja, considerando o preo final da compra e a escolha da condio de
pagamento. Os cdigos da tabela abaixo devem ser seguidos para ler qual a condio
de pagamento escolhida e a efetuao do clculo.

QUESTO 05. Escreva um algoritmo que leia as idades de 2 homens e de 2 mulheres


(considere que as idades dos homens sero sempre diferentes entre si, bem como as
das mulheres). Calcule e escreva a soma das idades do homem mais velho com a
mulher mais nova, e o produto das idades do homem mais novo com a mulher mais
velha.
QUESTO 06. Ler os valores de quatro notas escolares de um aluno. Calcular a mdia
aritmtica e apresentar a mensagem Aprovada se a mdia obtida for maior ou igual
a 7; caso contrrio, o programa deve solicitar a nota do exame de recuperao e
calcular uma nova mdia aritmtica entre a nota de exame de recuperao e a
primeira mdia aritmtica. Se o valor da nota da nova mdia for maior ou igual a sete,

Pgina

31

IFBA - Campus Eunpolis - Curso Tcnico Integrado em Informtica - Algoritmos

apresentar a mensagem Aprovada na Recuperao, caso contrrio apresentar a


mensagem Reprovado. Informar junto com a mensagem o valor da mdia obtida.

QUESTO 07. Uma fruteira est vendendo frutas com a seguinte tabela de preos:

Se o cliente comprar mais de 8 Kg em frutas ou o valor total da compra ultrapassar R$


25,00, receber ainda um desconto de 10% sobre este total. Escreva um programa
para ler a quantidade (em Kg) de morangos e a quantidade (em Kg) de maas
adquiridas e escreva o valor a ser pago pelo cliente.
QUESTO 08. Determine o resultado das expresses lgicas (V ou F). Considere para as
respostas os seguintes valores: X =1, A = 3, B = 5, C = 8, D = 7
a)
b)
c)
d)
e)
f)
g)

no (X > 3) ( )
(X < 1) e no (B > D) ( )
no (X >3) ou (C < 7) ( )
(A > B) ou (C > B) ( )
(A > B) ou no (C > B) ( )
no (D > 3) ou no (B < 7) ( )
(D < 0) ou (C > 5) ( )

QUESTO 09. Ler trs valores para os lados de um tringulo, considerando lados
como: A, B e C. Verificar se os lados formam um triangulo e se for verdadeiro, deve ser
indicado qual tipo de tringulo foi formado: issceles, escaleno ou eqiltero.
Obs.: um tringulo uma forma geomtrica composta de trs lados e o valor de cada
lado deve ser menor que a soma dos valores dos outros dois lados.

QUESTO 10. Desenvolver um programa que leia um valor numrico inteiro e


apresente-o caso seja divisvel por 4 e 5. No sendo divisvel por 4 e 5, o programa
deve apresentar a mensagem: No divisvel por 4 e 5.
Obs.: Para resolver esse problema necessria a utilizao do operador aritmtico
mod que permite obter o resto da diviso de um valor por outro.

Pgina

32

IFBA - Campus Eunpolis - Curso Tcnico Integrado em Informtica - Algoritmos

QUESTO 11. A OMS Organizao Mundial de Sade adotou o seguinte critrio de


classificao para verificar se o peso das pessoas est dentro dos valores permitidos
(normais) ou no.

Para obter estes valores da classificao a operao que se deve realizar peso
dividido pela altura ao quadrado. O valor obtido desta operao deve ser aplicado
tabela apresentada acima. Apresentar a situao de cada pessoa que est sendo
consultada.

QUESTO 12. Calcular o valor do salrio e, o desconto de Imposto de Renda, com base
na tabela abaixo.

Apresentar o salrio bruto, o salrio liquido o valor de desconto de IR de cada


funcionrio e, o total de reteno na fonte realizado por esta empresa.

QUESTO 13. Leia ms e ano do teclado e mostre o nmero de dias correspondente


ao ms lido.
QUESTO 14. Criar um programa para ler um nmero de 1 a 7 e informar o dia da
semana correspondente, sendo domingo o dia de nmero 1. Se o nmero no
corresponder a um dia da semana, mostrada uma mensagem de erro.

Pgina

33

IFBA - Campus Eunpolis - Curso Tcnico Integrado em Informtica - Algoritmos

LGICA DE
PROGRAMAO

PARTE 3:
Estruturas de
Repetio

NESTE CAPTULO, ESTUDAREMOS UMA ESTRUTURA DE CONTROLE


CONHECIDA COMO LOOPS OU MALHA DE REPETIO. A ESTRUTURA DE REPETIO
ESTUDADA SER:

REPETIO COM TESTE LGICO NO INCIO E NO FINAL DO LAO


REPETIO DA VARIVEL DE CONTROLE

Pgina

34

IFBA - Campus Eunpolis - Curso Tcnico Integrado em Informtica - Algoritmos

3.1.

ESTRUTURAS DE REPETIO

Existem ocasies em que necessrio repetir um trecho do programa um


determinado nmero de vezes. Neste caso, pode ser criado um lao que faa o
processamento de um determinado trecho tantas vezes quantas forem necessrias. Os
laos tambm so chamados loopings ou malhas de repetio.
Imagine um programa que executa um determinado trecho de instrues por
cinco vezes. Com o conhecimento adquirido at o momento, repetiramos o trecho o
nmero de vezes necessrio.
leia (x)
resultado <- x * 3
escreva (resultado)
leia (x)
resultado <- x * 3
escreva (resultado)

1x
2x

leia (x)
resultado <- x * 3
escreva (resultado)

3x

leia (x)
resultado <- x * 3
escreva (resultado)

4x

leia (x)
resultado <- x * 3
escreva (resultado)

5x

Observe que no exemplo acima, um mesmo trecho de cdigo repetido por 5


vezes. Imagine a situao caso seja necessrio fazer a leitura e processamento de 1000
valores para o exemplo. Teramos que repetir esse trecho de cdigo 1000 vezes?
Para estes casos existem comandos apropriados para repetir determinados
trechos de programas o nmero de vezes que for necessrio. Dessa forma possvel
determinar repeties com nmero variados de vezes, dependendo da forma de lao a
ser utilizada.

Pgina

35

IFBA - Campus Eunpolis - Curso Tcnico Integrado em Informtica - Algoritmos

3.2.

REPETIO COM TESTE LGICO NO INCIO DO LAO

Nessa estrutura feito um teste lgico no incio de um lao, verificando se


permitido executar o trecho de instrues subordinado a esse lao. Essa estrutura
denominada de enquanto.
No portugus estruturado essa estrutura representada da seguinte forma:
enquanto (<condio>) faca
< instrues para condio >
fimenquanto

A estrutura enquanto...faca...fimenquanto tem o seu funcionamento


controlado por deciso. Sendo assim, pode executar um determinado conjunto de
instrues enquanto a condio for verdadeira. No momento em que a condio for
falsa, o processamento da rotina desviado para fora do lao. Se a condio for falsa
logo de incio, as instrues contidas no lao so ignoradas.
Considere que em um determinado programa de computador, sero lidos por
cinco vezes do usurio um determinado valor. Aps o usurio informar um nmero, o
computador dever mostrar o produto por 5 desse nmero. Esse processo poderia ser
definido conforme a seqncia de passos abaixo:
1. Criar uma varivel para servir como contador com valor inicial 1.
2. Enquanto o valor do contador for menor ou igual a 5, processar os
passos 3,4 e 5.
3. Ler um valor para a varivel X
4. Efetuar a multiplicao do valor de X por 5, colocando o resultado em R.
5. Apresentar o valor calculado que est na varivel E.
6. Acrescentar 1 varivel do tipo contador, definida no passo 1
7. Quando contador for maior que 5, encerrar o processamento do lao
Observe que na seqncia de passos acima estamos utilizando uma varivel
como uma espcie de contador, de forma que possa contar quantas vezes o lao
dever se repetir, neste caso 5 vezes.

Pgina

36

IFBA - Campus Eunpolis - Curso Tcnico Integrado em Informtica - Algoritmos

Veja como ficaria a implementao desse algoritmo no Portugus Estruturado:


algoritmo "Exemplo Enquanto...Faca"
var
contador,valor: inteiro
inicio
contador <-1
enquanto contador<=5 faca
escreva("Valor: ")
leia (valor)
escreval ("Multiplicado por 5 = ", valor * 5)
contador <- contador + 1
fimenquanto
fimalgoritmo

Na situao acima, a varivel contador assume valor inicial 1 (contador<-1).


Todo o cdigo a ser repetido controlado pela estrutura: enquanto contador <=5
faca. Dentro da estrutura de repetio escrevemos o cdigo que ser repetido. Antes
de finalizar o cdigo a ser repetido necessrio alterar o valor da varivel contador,
que neste caso tem seu valor acrescido em 1 (contador <- contador + 1). Isso
necessrio para que o valor da varivel contador assuma um novo valor cada vez que
entrar no lao de repetio, de forma que ao final a varivel contador possua valor 5 e
o lao de repetio seja finalizado.
Para ilustrar de forma um pouco diferente, imagine que o problema anterior
dever ser executado enquanto o usurio queira. Em vez de possuir dentro da rotina
um contador de vezes, possvel ter uma instruo pedindo que o usurio informe se
deseja continuar ou no a repetio.
Esse processo poderia ser definido conforme a seqncia de passos abaixo:
1.
2.
3.
4.
5.
6.

Criar uma varivel para ser utilizada como resposta


Enquanto a resposta for sim, executar os passos 3,4 e 5
Ler um valor para a varivel X
Efetuar a multiplicao do valor de X por 3, colocando o resultado em R
Apresentar o valor calculado que est na varivel R
Quanto a resposta for diferente de sim, apresentar o processamento.

Pgina

37

IFBA - Campus Eunpolis - Curso Tcnico Integrado em Informtica - Algoritmos

Veja como ficaria a implementao desse algoritmo no Portugus Estruturado:


algoritmo "Exemplo Enquanto...Faca"
var
valor: inteiro
resp :caractere
inicio
resp <- "S"
enquanto resp = "S" faca
escreva("Valor: ")
leia (valor)
escreval("Multiplicado por 3 = ", valor * 3)
escreva ("Deseja Continuar? S - para Sim / N para no: ")
leia (resp)
fimenquanto
fimalgoritmo
Na situao acima, a varivel resp assume valor inicial S (resp<-S). Todo o
cdigo a ser repetido controlado pela estrutura: enquanto resp = "S" faca. Dentro da
estrutura de repetio escrevemos o cdigo que ser repetido. Antes de finalizar o
cdigo a ser repetido necessrio perguntar ao usurio se ele deseja ou no continuar
a repetir o cdigo. Isso necessrio para que o valor da varivel resp assuma um novo
valor cada vez que entrar no lao de repetio, de forma que o lao de repetio seja
encerrada quando o valor da varivel resp receber um valor diferente de S.
3.3.

REPETIO COM TESTE LGICO NO FIM DO LAO

Nesta estrutura realizado um teste lgico no fim de um lao. Ela parecida


com a estrutura enquanto. Essa estrutura denominada de repita, a qual conseguida
com a utilizao do conjunto de instrues repita ... ate
Representao em portugus estruturado:
repita
< instrues para condio >
ate (<condio>)
A estrutura repita...ate tem seu funcionamento controlado por deciso, porm
executa um conjunto de instrues pelo menos uma vez antes de verificar a validade

Pgina

38

IFBA - Campus Eunpolis - Curso Tcnico Integrado em Informtica - Algoritmos

da condio estabelecida. Desta forma repita tem seu funcionamento em sentido


contrrio a enquanto, pois sempre processa em conjunto de instrues no mnimo
uma vez at que a condio seja verdadeira. Se a condio for falsa, o lao continua. Se
a condio for verdadeira, o lao ser encerrado
Para ilustrar a utilizao de repita, ser usado o mesmo exemplo anterior:
Pedir a leitura de um valor para a varivel Valor, multiplicar esse valor por 3 e mostrar
o resultado para o usurio. Continuar essa seqncia at que o usurio responda que
no deseja continuar a inserir novos valores. Com a utilizao do comando repita, a
varivel RESP no precisa ser inicializada com nenhum valor, uma vez que no mnimo
sero sempre executadas as instrues constantes no lao, para somente no final ser
verificada a condio, no caso RESP = N.
Veja como ficaria a implementao desse algoritmo no Portugus Estruturado:
algoritmo "Exemplo Com Repita...Ate"
var
valor: inteiro
resp :caractere
inicio
repita
escreva("Valor: ")
leia (valor)
escreval("Multiplicado por 3 = ", valor * 3)
escreva ("Deseja Continuar? S - para Sim / N para no: ")
leia (resp)
ate Resp = "N"
fimalgoritmo
3.4.

REPETIO COM VARIVEL DE CONTROLE

Anteriormente foram vistas duas formas de elaborar laos. Uma utilizando


enquanto e a outra usando repita. Foi visto tambm como elaborar programas que
usaram um lao um determinado nmero de vezes com a utilizao de um contador
(por meio de uma varivel de controle)
Existe uma possibilidade de facilitar o uso de laos sem usar as duas estruturas
anteriores, por meio de estrutura de laos conhecida como para, sendo conseguida
com a utilizao do conjunto de instrues para ... de ... ate ... passo ... faca ... fimpara

Pgina

39

IFBA - Campus Eunpolis - Curso Tcnico Integrado em Informtica - Algoritmos

Essa estrutura tem o seu funcionamento controlado por uma varivel


denominada contador que inicia e termina com um determinado valor informado pelo
programador.
Representao em portugus estruturado
para <varivel> de <inicio> ate <fim> passo <incremento> faca
< instrues>
fimpara

Para exemplificar vamos considerar o problema trabalhado nos exemplos


anteriores: Pedir a leitura de um valor para a varivel X, multiplicar esse valor por 3,
coloc-lo na varivel de resposta R e apresentar o valor obtido, repetindo esta
seqncia por cinco vezes.
No decorrer do estudo sobre laos ou malhas de repetio foram apresentados
trs estruturas de controle baseadas nos laos: enquanto,repita e para, cada qual com
sua caracterstica de processamento. Dentro desse aspecto, deve-se notar que as
estruturas mais versteis so enquanto e repita, pois podem ser substituda uma pela
outra alm de poderem substituir a estrutura para. preciso considerar que nem toda
estrutura enquanto ou repita pode ser substituda por uma estrutura para. Isso ocorre
quando em uma estrutura utilizam-se condies que no envolvam o uso de variveis
de controle como contador.
3.5.

ESTRUTURAS DE CONTROLE DE REPETIO ANINHADAS

Durante o estudo das estruturas de deciso foi discutido o fato de ocorrer o


encadeamento das estruturas de deciso.
Exemplo:
se sexo = Masculino entao
se idade < 18 entao
//instrues
senao
se idade >=18 e idade <=25 entao
//instrues
senao
//instrues
fimse
fimse

Pgina

40

IFBA - Campus Eunpolis - Curso Tcnico Integrado em Informtica - Algoritmos

Esse fato pode tambm ocorrer com as estruturas de lao. E nesse ponto pode
ocorrer o encadeamento de um tipo de estrutura de lao com outro tipo de estrutura
de lao.
Essas ocorrncias vo depender do problema a ser selecionado. Dessa forma
podemos ter uma estrutura repita...ate dento de uma estrutura enquanto...faca, ou
uma estrutura para...faca dentro de uma estrutura enquanto...faca, etc.
Alguns exemplos dessas estruturas encadeadas so:
1. enquanto ... faca
enquanto (condio1) faca
//instrues
enquanto (condio2) faca
//instrues
fimenquanto
fimenquanto
enquanto (condio1) faca
//instrues
repita
//instrues
ate (condio 2)
fimenquanto
enquanto (condio1) faca
//instrues
para <var> de <inicio> ate <fim> passo <incr> faca
//instrues
fimpara
fimenquanto
2. repita ... ate
repita
//instrues
repita
//instrues
ate (condio 2)

Pgina

41

IFBA - Campus Eunpolis - Curso Tcnico Integrado em Informtica - Algoritmos

ate (condio 1)
repita
//instrues
enquanto (condio 2) faca
//instrues
fimenquanto
ate (condio 1)

repita
//instrues
para <var> de <inicio> ate <fim> passo <incr> faca
//instrues
fimpara
ate (condio1)

3. para ... de ... ate ... faca


para <var1> de <inicio> ate <fim> passo <incr> faca
//instrues
para <var2> de <inicio> ate <fim> passo <incr> faca
//instrues
fimpara
fimpara
para <var1> de <inicio> ate <fim> passo <incr> faca
//instrues
enquanto (condio 1) faca
//instrues
fimenquanto
fimpara
para <var1> de <inicio> ate <fim> passo <incr> faca
//instrues
repita
//instrues
ate (condio 1)
fimpara

Pgina

42

IFBA - Campus Eunpolis - Curso Tcnico Integrado em Informtica - Algoritmos

3.6.

EXERCCIOS DE APRENDIZAGEM

Exemplo 01. Escrever um programa que apresente o total da soma dos cem primeiros
nmeros inteiros (1+2+3+4+5...+100)
Para resolver o problema acima, teramos que obter cada um dos nmeros de 1 a 100
e som-los medida que cada nmero for encontrado. Para isso escreveremos uma
estrutura de repetio usando uma varivel contador que assumir cada um desses
valores, e para cada valor encontrado iremos armazen-lo na varivel soma. A varivel
soma responsvel por acumular a soma dos valores encontrados.
OBS: No problema a varivel contador incrementada de 1 em 1(contador <contador + 1) para encontrar os nmeros de 1 a 100.
Veja a resoluo deste problema:
algoritmo "soma"
var
contador,soma:inteiro
inicio
contador <-1
soma <- 0
enquanto contador <= 100 faca
soma <- soma + contador
contador <- contador + 1
fimenquanto
escreva("SOMA DOS 100 PRIMEIROS NUMEROS: ",soma)
fimalgoritmo

Exemplo 02. Faa um algoritmo para ler uma quantidade de nmeros. Depois de ler
todos os nmeros o algoritmo deve apresentar na tela o maior dos nmeros lidos e a
mdia dos nmeros lidos.

Para resolver o problema acima, teramos que obter vrios nmeros e som-los
medida que cada nmero for informado pelo usurio. Para isso escreveremos uma
estrutura de repetio usando uma varivel resposta que confirmar ou no se o

Pgina

43

IFBA - Campus Eunpolis - Curso Tcnico Integrado em Informtica - Algoritmos

usurio continuar inserindo novos valores. Utilizaremos tambm uma varivel para
guardar a soma dos valores informados e uma varivel maior, que tem a funo de
verificar se um nmero informado maior que o atual valor da varivel maior. Caso
verdadeiro, substituiremos o valor. Ao final, quando o usurio decidir no inserir mais
dados, o algoritmo exibir os resultados.
Veja a resoluo deste problema:
algoritmo "soma"
var
soma,numero,maior,contador:inteiro
resposta:caractere
inicio
soma <- 0
maior <- 0
contador <- 0
repita
escreva("INFORME UM NMERO: ")
leia(numero)
se numero > maior entao
maior <- numero
fimse
soma <- soma + numero
contador <- contador + 1
escreva("DESEJA CONTINUAR A INSERIR NOVOS VALORES: ")
leia(resposta)
ate resposta = "n"
escreval("MAIOR NMERO: ", maior)
escreval("MDIA: ", soma/contador)
fimalgoritmo

Exemplo 03. Desenvolver um algoritmo que leia a altura e o sexo (M ou F) de 15


pessoas. Este programa dever calcular e mostrar:

Pgina

44

IFBA - Campus Eunpolis - Curso Tcnico Integrado em Informtica - Algoritmos

A menor altura do grupo;


A mdia de altura das mulheres;
O nmero de homens;
O sexo da pessoa mais alta.

Para resolver o problema acima, teremos que criar uma estrutura de repetio para
solicitar cada um dos dados(altura e sexo). A cada entrada de dados o algoritmo
calcular os resultados: menor altura, mdia, nmero de homens e sexo da pessoa
mais alta. Ao final da leitura dos 15 dados, o algoritmo apresentar os resultados.
OBS: Apesar do exemplo abaixo ter sido desenvolvido com a estrutura repita ... ate,
comum os programadores utilizarem a estrutura para ... de ... ate nessas situaes.

algoritmo "Questo 05"


var
contador,total_homens,qtd_m: inteiro
sexo,sexo_mais_alto,resposta: caractere
altura,menor_altura,soma_altura_mulheres,maior_altura: real
inicio
menor_altura <- 3
maior_altura <- 0
repita
escreva("ALTURA: ")
leia(altura)
escreva("SEXO: ")
leia(sexo)
se altura < menor_altura entao
menor_altura <- altura
fimse
se sexo = "F" entao
soma_altura_mulheres
altura

<-

soma_altura_mulheres

Pgina

45

IFBA - Campus Eunpolis - Curso Tcnico Integrado em Informtica - Algoritmos

qtd_m <- qtd_m + 1


senao
total_homens <- total_homens + 1
fimse
se altura > maior_altura entao
sexo_mais_alto <- sexo
fimse
escreva ("DESEJA CONTINUAR A INSERIR DADOS?")
leia (resposta)
ate resposta = "N"
escreval
escreval
/ qtd_m)
escreval
escreval

("MENOR ALTURA: ",menor_altura)


("MDIA ALTURA DAS MULHRES: ",soma_altura_mulheres
("NMERO DE HOMENS: ",total_homens)
("SEXO PESSOA MAIS ALTA: ", sexo_mais_alto)

fimalgoritmo
3.7.

EXERCCIOS

QUESTO 01. Apresentar a tabuada (multiplicao de 1 a 9) de um nmero qualquer


informado pelo usurio, a qual deve ser impressa no seguinte formato:

2X1=2
2X2=4
2X3=6
....

QUESTO 02. Elaborar um programa que apresente os valores de converso de graus


Celsius em Fahrenheit,de 10 em 10, iniciando a contagem em 10 graus e finalizando
em 100 graus Celsius. O programa deve apresentar os valores das duas temperaturas.
Frmula de converso: F (9*C + 160) / 5.
QUESTO 03. Elaborar um programa que efetue o clculo da fatorial do nmero 5.
Fatorial o produto dos nmeros naturais desde 1 at o inteiro n.

Pgina

46

IFBA - Campus Eunpolis - Curso Tcnico Integrado em Informtica - Algoritmos

QUESTO 04. Com base no exemplo anterior, elaborar um programa que efetue o
clculo da fatorial de um nmero qualquer informado pelo usurio.
QUESTO 05. Elaborar um programa que apresente no final o somatrio dos valores
pares existentes em uma faixa de valores informado pelo usurio. Exemplo: de 1 at
500
QUESTO 06. Escreva um algoritmo utilizando a estrutura para...ate que l um valor n
inteiro e positivo e que calcula a seguinte soma:
S = 1 + 1/3 + 1/5 + 1/7 + ... + 1/n
O algoritmo deve escrever cada termo gerado e o valor final de S.
QUESTO 07. Faa um algoritmo que mostre os 20 primeiros termos de uma srie e
calcule o somatrio destes termos.
Os primeiros termos da srie so: 1, -1/2, 1/3, -1/4, 1/5 etc
QUESTO 08. Faa um algoritmo que receba 10 idades, pesos e alturas, calcule e
mostre:

A mdia das idades das 10 pessoas;


A quantidade de pessoas com peso superior a 90 quilos e altura inferior
a 1.50;
A porcentagem de pessoas com idade entre 10 e 30 anos entre as
pessoas que medem mais de 1.90.
A maior e menor idade

QUESTO 09. Em um cinema, certo dia, cada espectador respondeu a um


questionrio, que perguntava a sua idade (ID) e a opinio em relao ao filme (OP),
seguindo os seguintes critrios ao lado. Construa um programa que, lendo esses
dados, calcule e apresente:
Mdia de idade das pessoas que responderam a pesquisa
Total e Porcentagem de cada uma das respostas
OBSERVAO: Considere que participaram da pesquisa 20 pessoas
QUESTO 10. A prefeitura de uma cidade deseja fazer uma pesquisa entre seus
habitantes. Faa um programa para coletar dados sobre o salrio e nmero de filhos
de cada habitante e aps as leituras, escrever:
Mdia de salrio da populao

Pgina

47

IFBA - Campus Eunpolis - Curso Tcnico Integrado em Informtica - Algoritmos

Mdia do nmero de filhos


Menor salrio dos habitantes
Maior salrio dos habitantes

OBS: Solicitar 5 entrada de dados

Pgina

48

IFBA - Campus Eunpolis - Curso Tcnico Integrado em Informtica - Algoritmos

LGICA DE
PROGRAMAO

PARTE 4:
Estrutura de
Dados
Homogneas:
Matrizes

NESTE CAPTULO, SER APRESENTADA A ESTRUTURA DE DADOS ARRAYS


(UMA DIMENSO E DUAS DIMENSES)

Pgina

49

IFBA - Campus Eunpolis - Curso Tcnico Integrado em Informtica - Algoritmos

4.1.

ESTRUTURA DE DADOS HOMEGNEAS

A utilizao de estrutura de dados homognea uma tcnica de programao


que permite trabalhar com o agrupamento de vrios dados de um mesmo tipo dentro
de uma mesma varivel. Essa estrutura recebe diversos nomes como: conjuntos,
arranjos, vetores, matrizes, arrays (ingls)
4.2.

ESTRUTURA DE DADOS HOMOGNEAS DE UMA DIMENSO

Esse tipo de estrutura tambm recebe o nome de matriz unidimensional,


vetores ou arrays em ingls. Sua utilizao mais comum est vinculada criao de
tabelas. Caracteriza-se por ser definida uma nica varivel dimensionada com um
determinado tamanho.
A dimenso de uma matriz formada por constantes inteiras e positivas. Os
nomes dados s matrizes seguem as mesmas regras de nomes utilizados para indicar
variveis simples.
Para ter uma idia de como utilizar matrizes em uma determinada situao,
considere o seguinte problema: Calcular e apresentar a mdia geral de uma turma
de oito alunos. A mdia a ser obtida deve ser a mdia geral de cada aluno obtida
durante o ano letivo. Desta forma ser necessrio somar todas as mdias e dividi-las
por oito. Agora basta escrever um programa para fazer o clculo das 8 mdias de cada
aluno, que pode ser representada por oito variveis na qual cada varivel armazena a
mdia do aluno.
Exemplo
var
md1,md2,md3,md4,md5,md6,md7,md8:real
Veja o programa completo para calcular a mdia do aluno a partir de 8 notas
sem utilizar vetores:

algoritmo Media Final


var
md1,md2,md3,md4,md5,md6,md7,md8:real
inicio
leia (md1,md2,md3,md4,md5,md6,md7,md8)
soma <-md1 + md2 + md3 + md4 + md5 + md6 +md7 +md8

Pgina

50

IFBA - Campus Eunpolis - Curso Tcnico Integrado em Informtica - Algoritmos

media <- soma / 8


escreva (media)
Para receber a mdia foram utilizadas oito variveis. Com a tcnica de vetores
poderia ter sido utilizada apenas uma varivel com a capacidade de armazenar oito
valores. Dessa forma teramos um vetor representado pelo seu nome e seu tamanho.
Neste caso poderamos criar um vetor da seguinte forma:
media: vetor [1..8] de real
Sendo assim para representarmos uma informao em um vetor, devemos nos
referir ao ndice, ou seja, o endereo em que o elemento (contedo) est armazenado.
Exemplo:
media[1]
media[2]
media[3]
...
media[8]
Para fazer referncia a uma posio particular ou elemento no array,
especificamos o nome do array e o nmero da posio do elemento no array.
O primeiro elemento em um array o elemento um1. Dessa forma, o primeiro
elemento do array referenciado como: exemploArray[1], o segundo elemento
representando como exemploArray[2] e assim sucessivamente.
Os arrays ocupam espao na memria, dessa forma o programador dever
especificar o tipo de cada elemento e o nmero de elementos exigidos pelo array.
Pode-se reservar memria para vrios arrays com uma nica declarao

Em linguagens de programao, como por exemplo C# o primeiro elemento de um

Array o elemento 0 (zero) e o ltimo elemento TAMANHO DO ARRAY - 1.

Pgina

51

IFBA - Campus Eunpolis - Curso Tcnico Integrado em Informtica - Algoritmos

4.2.1 DEFINIO E ATRIBUIO


Como podemos observar, um vetor definido no mesmo local que uma
varivel comum, ou seja, dentro do bloco de variveis var. Em seguida utilizaremos
a instruo vetor que indica que a utilizao de um tipo de dado homogneo.
Depois definimos a dimenso que ser a indicao dos valores inicial e final do
tamanho do vetor e por ltimo o tipo de dados que o vetor ir utilizar.
Exemplos:
nome: vetor[1..10] de caractere
salario: vetor[1..15] de real
idade: vetor[1..60] de inteiro

4.2.2 LEITURA E ESCRITA DE DADOS


A leitura de um vetor processada passo a passo, um elemento por vez. A
instruo de leitura feita da mesma forma que uma varivel comum, atravs do
comando leia seguida da varivel mais o ndice.
Exemplo:
leia (idade[1])
leia (salario[2])
leia (nome[4])
O processo de escrita de dados de um vetor semelhante ao processo de
leitura de seus elementos. Utilizamos a instruo escreva seguida da indicao da
varivel e seu ndice.
Exemplo:
escreva( idade[3])
escreva (salario[6])
escreva (nome[7])

Pgina

52

IFBA - Campus Eunpolis - Curso Tcnico Integrado em Informtica - Algoritmos

Podemos ainda utilizar uma estrutura de repetio para ler e escrever todos os
elementos de uma matriz. Veja como ficaria a leitura dos dados
para i de 1 ate 8 faca
leia (media[i])
soma <-soma + media[i]
fimpara
Agora veja como ficaria para escrever todos os dados na tela:
para i de 1 ate 8 faca
escreva(media[i])
fimpara

No exemplo anterior a leitura processada uma por vez. Desta forma o vetor
controlado pelo nmero do ndice que faz com que cada entrada acontea em uma
posio diferente da outra. Ao fina da leitura, dizemos que a matriz est preenchida.
Se houver a necessidade de calcular um nmero maior de valores, basta
dimensionar a matriz e mudar o valor final da instruo para para o valor desejado.
OBS: Tenha cuidado para no confundir o ndice com o elemento. O ndice o
endereo, enquanto o elemento o contedo armazenado em um determinado
endereo.
4.2.3 EXEMPLOS RESOLVIDOS DE MATRIZES UNIDIMENSIONAIS
EXEMPLO 01. Ler 8 elementos de um vetor A. Construir um vetor B de mesma
dimenso com os elementos do vetor A multiplicados por 3. Dessa forma o elemento
B[1] deve ser implicado pelo elemento A[1] * 3, o elemento B[2] deve ser implicado
pelo elemento A[2] * 3. No final voc dever apresentar a matriz B.
algoritmo "EXEMPLO 01"
var
a:vetor[1..8] de inteiro
b:vetor[1..8] de inteiro
posicao: inteiro
inicio

Pgina

53

IFBA - Campus Eunpolis - Curso Tcnico Integrado em Informtica - Algoritmos

para posicao de 1 ate 8 faca


escreva("DIGITE O ", posicao, " VALOR: ")
leia(a[posicao])
b[posicao] <- a[posicao] * 3
fimpara
para posicao de 1 ate 8 faca
escreval(a[posicao], " * 3 = ", b[posicao])
fimpara
fimalgoritmo

EXEMPLO 02. Ler dois vetores A e B com 20 elementos. Construir um vetor C,


sendo que cada elemento de C a subtrao de um elemento do vetor A com um
elemento correspondente do vetor B, ou seja, a operao C[1] <-A[1] B[1].
Ao final apresentar os elementos do vetor C.

algoritmo "semnome"
var
a:vetor[1..5] de inteiro
b:vetor[1..5] de inteiro
c:vetor[1..5] de inteiro
j: inteiro
inicio
para j de 1 ate 5 faca
escreva("a[",j,"] = ")
leia(a[j])
escreva("b[",j,"] = ")
leia(b[j])
c[j] <- a[j] - b[j]
fimpara
escreval("O VETOR C FORMADO : ")
para j de 1 ate 5 faca
escreval("c[",j,"] = ",c[j])

Pgina

54

IFBA - Campus Eunpolis - Curso Tcnico Integrado em Informtica - Algoritmos

fimpara
fimalgoritmo

4.3.

ESTRUTURA DE DADOS HOMOGNEAS MULTIDIMENSIONAIS

Em determinados problemas so utilizados estruturas de vetores com mais de


uma dimenso. O mais comum a matriz de duas dimenses por se relacionar com a
utilizao de tabelas. Matrizes com mais de duas dimenses so utilizadas com menos
freqncia.
Uma matriz de duas dimenses est sempre fazendo meno a linhas e colunas
e representada
resentada por seu nome e seu tamanho (dimenso)
dimenso) entre colchetes. Considere
o exemplo de uma matriz chamada TABELA, com um tamanho de oito linhas (de 1 a 8)
e 5 colunas(de 1 a 5), ou seja, uma matriz de 8 por 5(8 x 5). Isso significa que podem
ser armazenados
ados em TABELA at 40 elementos.
MATRIZ TABELA:

4.3.1 DEFINIO E ATRIBUIO


Uma matriz de duas dimenses atribuda pela instruo vetor A sintaxe :
nome: vetor [linha,colunas] de tipo de dado
Exemplos:
4.3.2 LEITURA E ESCRITA DE DADOS

Pgina

55

IFBA - Campus Eunpolis - Curso Tcnico Integrado em Informtica - Algoritmos

tabela: vetor[1..5,1..3] de inteiro


medias: vetor[1..10,1..4] de real

Para fazer referncia a uma posio particular ou elemento no array,


especificamos o nome do array e o nmero da posio do elemento no array. A leitura
de uma matriz de duas dimenses processada passo a passo, um elemento por vez,
sendo utilizada a instruo leia seguida da varivel mais os seus ndices.
Exemplo:
leia(tabela[1,3])
Na instruo acima, ser armazenado na linha 1 e coluna 3 um valor informado.
O processo de escrita bastante parecido com o processo de leitura de seus
elementos. Supondo que aps a leitura dos dados, houvesse a necessidade de
apresentar os dados lidos. Para apresentar um dado devemos especificar os seus
ndices (linha e coluna)
Exemplo:
escreva(tabela[2,2])
No exemplo acima ser mostrado na tela o valor do elemento que est na linha
2 e coluna 2.
Um importante aspecto a ser considerado que na manipulao de uma matriz
do tipo vetor utilizada uma nica instruo de lao (para, enquanto ou repita). No
caso de matrizes com mais dimenses, deve ser utilizado o nmero de laos relativos
ao tamanho de sua dimenso. Desta forma uma matriz de duas dimenses deve ser
controlada com dois laos, de trs dimenses por 3 laos e assim por diante.
Considere que eu uma turma existam 10 alunos e para cada aluno dever ser
armazenado as mdias referentes s quatro unidades. Sendo assim, para resolver esse
problema poderamos utilizar uma matriz de dimenso 10 x 4 (10 linhas representando
os 10 alunos e 4 coluna representando cada uma das notas.

Pgina

56

IFBA - Campus Eunpolis - Curso Tcnico Integrado em Informtica - Algoritmos

Para realizar a leitura dos dados, ser necessrio realizar um mecanismo para
ler as 4 mdias de cada aluno. Para isso usaremos duas estruturas de repetio
conforme exemplo abaixo:

para i de 1 ate 10 faca


para j de 1 ate 4 faca
leia(notas[i,j])
fimpara
fimpara

Para a escrita dos dados, tambm dever ser utilizado o mesmo mecanismo
apresentado nos slides anterior. Veja exemplo:

para i de 1 ate 10 faca


para j de 1 ate 4 faca
escreva(notas[i,j])
fimpara
fimpara
4.3.3 EXEMPLOS RESOLVIDOS DE MATRIZES MULTIDIMENSIONAIS
EXEMPLO 01. Ler dois vetores A e B, cada um com uma dimenso para 5 elementos.
Construir em seguida uma matriz C de duas dimenses, de forma que a primeira
coluna da matriz C deve ser formada pelos elementos da matriz A multiplicados por 2 e
a segunda coluna deve ser formada pelos elementos da matriz B subtrados de 5.
Apresentar ao final a matriz C.
algoritmo "EXEMPLO 01"
var
s:vetor[1..2,1..5] de inteiro
i,j,total_pares: inteiro
inicio
escreval("LENDO OS VALORES DO VETOR...")
para i de 1 ate 5 faca

Pgina

57

IFBA - Campus Eunpolis - Curso Tcnico Integrado em Informtica - Algoritmos

escreva("a[",i,",",j,"] = ")
leia(a[i])
fimpara
//preenchendo a primeira e segunda linha da matriz C
para j de 1 ate 5 faca
c[1,j] <- a[j] * 2
c[2,j] <- b[j] - 5
fimpara
escreval("ESCREVENDO OS NOVOS VALORES DA MATRIZ ...")
para i de 1 ate 2 faca
para j de 1 ate 5 faca
escreval("c[",i,",",j,"] = ", c[i,j])
fimpara
fimpara

fimalgoritmo
EXEMPLO 02. Escreva um algoritmo que l uma matriz M(5,5) e calcula as somas:
a)
b)
c)
d)
e)

da linha 4 de M
da coluna 2 de M
da diagonal principal
da diagonal secundria
de todos os elementos da matriz M

Escrever essas somas e a matriz.


algoritmo "EXEMPLO 02"
var
a:vetor[1..4,1..4] de inteiro
i,j,soma_diagonal_principal,soma_diagonal_secundaria,soma_l
inha_4,soma_coluna_2,soma_elementos: inteiro
inicio

Pgina

58

IFBA - Campus Eunpolis - Curso Tcnico Integrado em Informtica - Algoritmos

escreval("LENDO OS VALORES DA MATRIZ...")


para i de 1 ate 4 faca
para j de 1 ate 4 faca
escreva("a[",i,",",j,"] = ")
leia(a[i,j])
fimpara
fimpara
//soma_diagonal_principal
para i de 1 ate 4 faca
soma_diagonal_principal
a[i,i]
fimpara

<-

soma_diagonal_principal

j <- 4
//soma_diagonal_secundaria
para i de 1 ate 4 faca
soma_diagonal_secundaria <- soma_diagonal_secundaria +
a[i,j]
j <- j -1
fimpara
//soma_linha_4
para i de 1 ate 4 faca
soma_linha_4 <- soma_linha_4 + a[4,i]
fimpara
//soma_coluna_2
para i de 1 ate 4 faca
soma_coluna_2 <- soma_coluna_2 + a[i,2]
fimpara
para i de 1 ate 4 faca
para j de 1 ate 4 faca
soma_elementos <- soma_elementos + a[i,j]
fimpara
fimpara

escreval("A
SOMA
",soma_linha_4)

DOS

ELEMENTOS

DA

LINHA

Pgina

59

IFBA - Campus Eunpolis - Curso Tcnico Integrado em Informtica - Algoritmos

escreval("A
SOMA
DOS
ELEMENTOS
DA
COLUNA
2

=
",soma_coluna_2)
escreval("A SOMA DOS ELEMENTOS DA DIAGONAL PRINCIPAL DA
MATRIZ = ",soma_diagonal_principal)
escreval("A SOMA DOS ELEMENTOS DA DIAGONAL SECUNDRIA DA
MATRIZ = ",soma_diagonal_secundaria)
escreval("A
SOMA
DOS
ELEMENTOS
DA
MATRIZ

=
",soma_elementos)
fimalgoritmo
4.4.

EXERCCIOS

QUESTO 01. Escreva um algoritmo que leia dois vetores de 10 posies e faa a
multiplicao dos elementos de mesmo ndice, colocando o resultado em um terceiro
vetor. Mostre o vetor resultante.
QUESTO 02. Faa um algoritmo que leia um vetor S[20] e uma varivel A. A seguir,
mostre o produto da varivel A pelo vetor.
QUESTO 03. Escreva um algoritmo que leia e mostre um vetor de 20 nmeros. A
seguir, conte quantos valores pares existem no vetor.
QUESTO 04. Faa um programa que leia dois vetores: F[20] e G[20]. Calcule e
mostre, a seguir, o produto dos valores de F por G.
QUESTO 05. Faa um programa que leia um vetor K[30]. Troque a seguir, todos os
elementos de ordem mpar do vetor com os elementos de ordem par imediatamente
posteriores.
QUESTO 06. Escreva um programa que leia um vetor de 20 posies e mostre- o. Em
seguida, troque o primeiro elemento com o ltimo, o segundo com o penltimo, o
terceiro com o antepenltimo, e assim sucessivamente. Mostre o novo vetor depois da
troca.
QUESTO 07. Dados dois vetores, um contendo a quantidade e o outro o preo de 20
produtos, elabore um algoritmo que calcule e exiba o faturamento que igual a
quantidade x preo. Calcule e exiba tambm o faturamento total que o somatrio de
todos os faturamentos, a mdia dos faturamentos e quantos faturamentos esto
abaixo da mdia.

Pgina

60

IFBA - Campus Eunpolis - Curso Tcnico Integrado em Informtica - Algoritmos

QUESTO 08. Ler uma matriz A de duas dimenses com 3 linhas e 4 colunas. Construir
um vetor B de uma dimenso que seja formado pela soma de cada linha da matriz A.
Ao final apresentar o somatrio dos elementos da matriz B.
QUESTO 09. Escreva um algoritmo que l uma matriz M(5,5) e calcula as somas:
a) da linha 4 de M
b) da coluna 2 de M
c) da diagonal principal
d) da diagonal secundria
e) de todos os elementos da matriz M
Escrever essas somas e a matriz.
QUESTO 10. Desenvolver um programa de agenda que cadastre o nome, endereo,
CEP, bairro e telefone de 10 pessoas. Aps a leitura dos dados, o programa dever
permitir que seja consultado os dados da agendar a partir de um nome.
Exemplo: Se o usurio digitar REGILAN, caso REGILAN exista na agenda dever
apresentar o endereo, CEP, bairro e telefone do mesmo
QUESTO 11. O Museu de Carros Antigos da Bahia est conduzindo um levantamento
dos carros antigos do estado. Para cada carro so fornecidas as seguintes informaes:
o fabricante (um cdigo inteiro de zero a trinta), o ano do carro (de 1900 a 1950) e as
condies do carro (inteiros de 1 a 4 para ruim, regular, boa e excelente,
respectivamente). Ao todo o museu de carros antigos da Bahia tem em seu acervo
2000 carros.
Faa um algoritmo que:
a) Leia um conjunto de dados e depois fornea as seguintes estatsticas:
b) Os nmeros de carros feitos antes de 1910 cujas condies so
classificadas como boas ou excelentes;
c) Fabricante mais popular, escolhido a partir do nmero registrado de
todos os fabricantes;
d) Identificar o fabricante cujos carros parecem estar nas melhores
condies mdias

Pgina

61

IFBA - Campus Eunpolis - Curso Tcnico Integrado em Informtica - Algoritmos

QUESTO 12. Os Obesos Annimos esto conduzindo um estudo da efetividade de


seus programas de reduo de peso. Cinqenta membros foram selecionados ao acaso
para o estudo.
Nos ltimos doze meses, um registro de peso foi feito para cada elemento no incio do
ms. Pede-se um algoritmo para analisar estas informaes, determinando:
a) A variao mdia de peso de todos os elementos no perodo de 12 meses;
b) O nmero de elementos cuja variao total de peso excedeu a mdia;
c) O nmero de casos durante o ano no qual um elemento perdeu mais do que a
variao mdia durante um nico ms.

Pgina

62

IFBA - Campus Eunpolis - Curso Tcnico Integrado em Informtica - Algoritmos

LGICA DE
PROGRAMAO

PARTE 5: Subrotinas
(Procedimentos
e Funes)

NESTE CAPTULO, SERO APRESENTADOS


RELACIONADOS IMPLEMENTAO DE SUB-ROTINIS:

OS

CONCEITOS

INICIAIS

PROCEDIMENTOS
FUNES

Pgina

63

IFBA - Campus Eunpolis - Curso Tcnico Integrado em Informtica - Algoritmos

5.1.

SUB-ROTINAS

No geral, problemas complexos exigem algoritmos complexos.


complexos. Mas sempre
possvel dividir um problema em partes menores. Cada parte menor tem um algoritmo
mais simples, e esse trecho que se chama sub-rotina.
sub
Uma sub-rotina
rotina na verdade
um programa, e sendo um programa pode efetuar diversas operaes computacionais
computac
(entrada, processamento e sada).
As sub-rotinas
rotinas so utilizadas na diviso de algoritmos complexos, permitindo a
modularizao de um determinado problema. Ao se trabalhar com essa tcnica, pode
ser necessrio dividir uma sub-rotina
sub
em outras tantas quantas forem necessrias,
buscando uma soluo mais simples e uma parte do problema maior.
O processo de dividir sub-rotinas
sub rotinas em outras denominado Mtodo de
Refinamento Sucessivo
Programa
Principal

Rotina 1

Rotina 1.1

Rotina 2

Rotina 1.2

Rotina 2.1

Figura 1 - Mtodo de refinamento sucessivo

Existem
xistem dois tipos de rotinas. Entre esses dois tipos existem algumas
diferenas, mas o conceito o mesmo para ambas.Para cada uma das sub-rotinas
sub
ser
usada uma nova instruo que identifique em portugus estruturado uma sub-rotina,
sub
sendo: procedimento e funo.
funo
5.2.

PROCEDIMENTOS

Um procedimento um bloco de programa contendo incio e fim e


identificado por um nome. Quando uma sub-rotina
sub rotina chamada por um programa, ela
executada e ao seu trmino o controle de processamento retorna automaticamente
para a primeira linha de instruo aps a linha que fez a chamada da sub-rotina.
sub
Veja como representado um procedimento no Portugus Estruturado:
Estruturado

Pgina

64

IFBA - Campus Eunpolis - Curso Tcnico Integrado em Informtica - Algoritmos

procedimento <nome do procedimento>


var
//variveis
inicio
//instrues
fimprocedimento
OBSERVAO: O NOME DO PROCEDIMENTO OBEDECE AS MESMAS REGRAS
DE NOMENCLATURA DAS VARIVEIS.
Exemplo: Criar um programa calculadora que apresente um menu de selees
no programa principal. Esse menu deve dar ao usurio a possibilidade de escolher uma
entre quatro operaes aritmticas.
aritmticas. Escolhida a opo desejada, deve ser solicitada a
entrada de dois nmeros, e processada a operao, deve ser exibido o resultado.
Para o problema acima, podemos dividi-lo
dividi em cinco rotinas:

Programa
Principal

Adio

Subtrao

Multiplicao

Diviso

Figura 2 - Exemplo sub-rotina

Tendo idia da estrutura geral do programa, ser escrito em separado cada um


dos algoritmos com seus detalhes de operao. Primeiro ser escrito as sub-rotinas
sub
responsveis por cada operao e posteriormente o programa principal.
OBS: A ordem da escrita das sub-rotinas
rotinas no interfere no resultado final do
algoritmo

Rotina Principal: Apresenta um menu com 5 opes


Rotina adio: Sub-rotina
Sub rotina responsvel por somar dois nmeros
Rotina subtrao: Sub-rotina
Sub rotina responsvel por subtrair dois nmeros
Rotina multiplicao:
multipli
Sub-rotina
rotina responsvel por multiplicar dois
nmeros

Pgina

65

IFBA - Campus Eunpolis - Curso Tcnico Integrado em Informtica - Algoritmos

Rotina diviso: Sub-rotina responsvel por dividir dois nmeros

Veja agora a implementao completa do exemplo:


procedimento adicao()
var
a,b: real
inicio
escreva ("Informe o primeiro valor: ")
leia (a)
escreva ("Informe o segundo valor: ")
leia (b)
escreval ("O resultado da adio : ", a + b)
fimprocedimento
procedimento subtracao()
var
a,b: real
inicio
escreva ("Informe o primeiro valor: ")
leia (a)
escreva ("Informe o segundo valor: ")
leia (b)
escreval ("O resultado da subtrao : ", a - b)
fimprocedimento
procedimento multiplicacao()
var
a,b: real
inicio
escreva ("Informe o primeiro valor: ")
leia (a)
escreva ("Informe o segundo valor: ")
leia (b)

Pgina

66

IFBA - Campus Eunpolis - Curso Tcnico Integrado em Informtica - Algoritmos

escreval ("O resultado da multiplicao : ", a * b)


fimprocedimento
procedimento divisao()
var
a,b: real
inicio
escreva ("Informe o primeiro valor: ")
leia (a)
escreva ("Informe o segundo valor: ")
leia (b)
escreval ("O resultado da diviso : ", a / b)
fimprocedimento

algoritmo "CALCULADORA"
var
opcao: inteiro
inicio
repita
escreval ("MENU DE OPES: ")
escreval ("Digite 1 para adio")
escreval ("Digite 2 para subtrao")
escreval ("Digite 3 para multiplicao")
escreval ("Digite 4 para diviso")
escreval ("Digite 5 para sair")
escreva ("OPCO: ")
leia (opcao)
escolha opcao
caso 1
adicao()
caso 2
subtracao()
caso 3

Pgina

67

IFBA - Campus Eunpolis - Curso Tcnico Integrado em Informtica - Algoritmos

multiplicacao()
caso 4
divisao()
outrocaso
escreval ("Digite um
opes!")
fimescolha

valor

disponivel

no

menu

de

ate (opcao = 5)
fimalgoritmo

OBSERVAO IMPORTANTE: Em portugus estruturado mencionam-se em primeiro


lugar as sub-rotinas e por ltimo o programa principal. Sendo assim, durante a
escrita do cdigo, primeiro o programador escreve todas as rotinas que sero usadas
no programa principal.
No programa apresentado foram utilizadas variveis dentro do programa
principal e dentro das sub-rotinas

Varivel opcao: programa principal


Variveis a e b: sub-rotinas

So dois os tipos de variveis utilizadas em um programa: as variveis Globais


e Locais. Uma varivel considerada Global quando declarada no incio do algoritmo
principal de um programa, podendo ser utilizada por qualquer sub-rotina subordinada
ao algoritmo principal. Nesse caso, a varivel opcao definida na rotina principal
considerada uma varivel GLOBAL
Uma varivel considerada local quando declarada dentro de uma sub-rotina
e somente valida dentro da sub-rotina onde foi declarada. Portanto as variveis a e b
somente esto visveis nas suas sub-rotinas.
5.3.

PARMETROS

Os parmetros so utilizados como um ponto de comunicao entre uma subrotina e o programa principal. Atravs da passagem de parmetros, podemos passar o
valor de uma varivel que est no programa principal para a sub-rotina, ou passar o
valor de uma varivel que est em uma sub-rotina para outra sub-rotina. Os

Pgina

68

IFBA - Campus Eunpolis - Curso Tcnico Integrado em Informtica - Algoritmos

parmetros so declarados por meio de variveis juntamente com a identificao do


nome da sub-rotina.
Veja como feita a declarao de parmetros no portugus estruturado:
procedimento nome(parametro: tipo de dado)
var
//variveis
inicio
//instrues
fimprocedimento
Veja o exemplo de uma sub-rotina com a utilizao de parmetros:
procedimento somar (a,b: inteiro)
var
resultado: inteiro
inicio
resultado <- a + b
escreva (O resultado da adio para os valores informados
: ,resultado)
fimprocedimento
Com o procedimento pronto, hora de cham-la na rotina principal. Veja como
fica:
algoritmo uso de rotina
var
valor1,valor2: inteiro
inicio
leia (valor1)
leia (valor2)
somar (valor1,valor2)
leia (valor1)
leia (valor2)
somar(valor1,valor2)
fimalgoritmo

Pgina

69

IFBA - Campus Eunpolis - Curso Tcnico Integrado em Informtica - Algoritmos

5.4.

FUNES

Uma funo tambm um bloco de programa, como so os procedimentos,


contendo incio e fim e identificada por um nome, pelo qual tambm ser referenciada
em qualquer parte do programa principal.
Uma funo muito parecida com um procedimento, a sua diferena est no
fato de uma funo retornar um determinado valor, no prprio nome da funo.
Quando se diz valor, devem ser levados em considerao os valores numricos, lgicos
e caracteres.
Veja como representado uma funo no Portugus Estruturado
funcao <nome da funcao>(parametros) : <tipo de retorno>
var
//variveis
inicio
//instrues
fimfuncao
OBSERVAES: O nome da funo obedece s mesmas regras de nomenclatura das
variveis. O tipo de retorno se refere ao tipo de dado retornado, que pode ser
caractere, numrico, lgico
O nome da funo obedece s mesmas regras de nomenclatura das variveis.
Por outro lado, os <parmetros> uma seqncia de: <parmetros>: <tipo-de-dado>
Por sua vez, a seqncia de parmetros uma seqncia de nomes de
parmetros (tambm obedecem mesma regra de nomenclatura de variveis)
separados por vrgulas.
O valor retornado pela funo ser do tipo especificado na sua declarao (logo
aps os dois pontos). Em alguma parte da funo (de modo geral, no seu final), este
valor deve ser retornado atravs do comando retorne.
De modo anlogo ao programa principal, a seo de declarao interna comea
com a palavra-chave var, e continua com a seguinte sintaxe: <lista-de-variveis>:
<tipo-de-dado>

Pgina

70

IFBA - Campus Eunpolis - Curso Tcnico Integrado em Informtica - Algoritmos

Para exemplificar vamos construir uma funo sem parmetros que soma dois
valores. Ela tambm utiliza uma varivel local aux para armazenar provisoriamente o
resultado deste clculo, antes de atribu-lo varivel global res:

funcao soma: inteiro


var
aux: inteiro
inicio
// n, m e res so variveis globais
aux <- n + m
retorne aux
fimfuncao
No programa principal deve haver os seguintes comandos:
n <- 4
m <- -9
res <- soma
escreva(res)
Agora iremos realizar a mesma tarefa, s que utilizando passagem de
parmetros para a funo:
funcao soma (x,y: inteiro): inteiro
inicio
retorne x + y
fimfuncao
No programa principal deve haver os seguintes comandos:
n <- 4
m <- -9
res <- soma(n,m)
escreva(res)

Pgina

71

IFBA - Campus Eunpolis - Curso Tcnico Integrado em Informtica - Algoritmos

5.5.

EXERCCIOS

QUESTO 01. Criar um procedimento que calcule uma prestao em atraso. Para
tanto, utilize a frmula PREST = VALOR + (VALOR * (TAXA/100) * TEMPO). Apresentar o
valor da prestao.
QUESTO 02. Elaborar um programa que por meio de uma sub-rotina de
procedimento apresente o valor da converso em real (R$) de um valor lido em dlar.
Deve ser solicitado por meio do programa principal o valor da cotao do dlar e a
quantidade de dlar disponvel.
QUESTO 03. Faa um procedimento que recebe a idade de um nadador por
parmetro e retorna, tambm por parmetro, a categoria desse nadador de acordo
com a classificao abaixo:
a) 5 a 7 anos: Infantil A
b) 8 a 10 anos: Infantil B
c) 11-13 anos Juvenil A
d) 14-17 anos Juvenil B
e) Maiores de 18 anos (inclusive) Adultos

QUESTO 04. Desenvolva um programa que crie uma funo para calcular e
apresentar o valor de uma potncia de um nmero qualquer. Ou seja, ao informar
para a funo o nmero e sua potncia, deve ser apresentado o seu resultado. Por
exemplo, se for mencionado no programa principal a funo Potencia(2,3), deve ser
apresentado o valor 8.
QUESTO 05. Um determinado estabelecimento far uma venda com descontos nos
produtos A e B. Se forem comprados apenas os produtos A ou apenas os produtos B, o
desconto ser de 10%. Caso sejam comprados os produtos A e B, o desconto ser de
15%. O custo da unidade e a quantidade de cada produto dever ser informado ao
programa. Elaborar um programa que por meio de uma funo calcule e apresente o
valor da despesa do fregus na compra dos produtos.

Pgina

72

Você também pode gostar