Você está na página 1de 47

CURSO LÓGICA DE

PROGRAMAÇÃO
Versão 1.0 – 08/2008 – Todos direitos reservados

CURSO DE LÓGICA DE PROGRAMAÇÃO

1) Introdução a Lógica de Programação

A Lógica de programação é necessária a todas as pessoas que ingressam ou pretendem ingressar na área
da Tecnologia da Informação, sendo como programador, analista de sistemas ou suporte. A lógica é
utilizada por nós o tempo todo sem que nós percebamos, podemos citar como exemplo o simples fato
de tomarmos um banho ou trocar um pneu de um carro nos faz realizar uma seqüência lógica de atos que
nos remetem a resolução do problema. Todas as mais simples tarefas que imaginarmos podem ser
seqüenciadas logicamente.

Algoritmos

Um algoritmo é uma seqüência finita de instruções definidas que nos remetem a execução de uma tarefa.
Pode-se dizer também que são regras formais para a obtenção de um resultado ou da solução de um
problema. Em processamento de dados, é muito comum relacionar a palavra algoritmo com diagrama de
blocos, já que essas instruções estão contidas dentro da simbologia dos diagramas.

O Princípio básico da construção dos algoritmos baseia-se na seguinte regra:

ENTRADA PROCESSAMENTO SAÍDA

A seguir temos uma seqüência lógica de um algoritmo para tomarmos um banho

- Entrar no banheiro
- Tirar a roupa
- Abrir o registro da água
- Se molhar
- Se ensaboar
- Se enxaguar
- Fechar o registro da água
- Se enxugar
- Sair do banheiro

1
CURSO LÓGICA DE
PROGRAMAÇÃO
Versão 1.0 – 08/2008 – Todos direitos reservados

Diagrama de Bloco

O diagrama de bloco é uma forma de representação gráfica de todo o fluxo de informação que corre dentro
dos programas. Sua simbologia visa facilitar a visualização e a compreensão dos programas, alem de servir
como apoio para a codificação do mesmo em qualquer linguagem.

Seus principais símbolos são:

TERMINAL – Símbolo utilizado para indicar o início e o fim dos programas;

TECLADO – São informações imputadas pelo usuário do programa;

PROCESSAMENTO – Utilizado para determinar que neste ponto haverá processamento de

informações como cálculos matemáticos, atribuições, etc...

DISPLAY – Para informações exibidas em dispositivos visuais, vídeo ou monitor;


REPETIÇÃO – Estrutura de repetição do tipo PARA;

DECISÃO – Indica um desvio no processamento através de uma decisão a ser tomada;

FLUXO DE DADOS – Indica a direção do fluxo de dados;

CONECTOR – Utilizado quando precisamos particionar o diagrama ou para determinar


ponto de junção de fluxo;

CONECTOR – Utilizado para determinar que o diagrama mudou de página.

2
CURSO LÓGICA DE
PROGRAMAÇÃO
Versão 1.0 – 08/2008 – Todos direitos reservados

Pseudocódigo

Os algoritmos são descritos em uma linguagem chamada pseudocódigo. Este nome é uma alusão à
posterior implementação em uma linguagem de programação. Os algoritmos são independentes das
linguagens de programação que exigem um formalismo rígido, sendo assim, o pseudocódigo é mais
maleável, fácil de se interpretar e torna-se a base para a escrita em qualquer linguagem de programação,
ou seja, o pseudocódigo é o intermediário entre a linguagem falada e a linguagem de programação.

Exemplo:

Vamos criar o Diagrama de Blocos e o Pseudocódigo para o seguinte problema:

- Receber e mostrar em tela o seu nome.

DIAGRAMA DE BLOCOS PSEUDOCÓDIGO

Inicio Programa Escreva_Nome;

Var:
NOME: string;
NOME
Inicio

Leia NOME
NOME Escreva NOME

Fim

FIM

Como já foi dito anteriormente, com base no diagrama de blocos e no pseudocódigo podemos codifica-
los em qualquer linguagem de programação. Segue algumas codificações para o exemplo acima:

3
CURSO LÓGICA DE
PROGRAMAÇÃO
Versão 1.0 – 08/2008 – Todos direitos reservados

Pascal C

Program Escreva_Nome; Void main (void) {

Var: Char Nome;

Nome: string; Scanf (Nome);

Begin Printf (Nome);

Readln (“Nome”); }
Writeln (“Nome”);

End.

Fortran ADVPL

Program Escreva_Nome User function Escreva_Nome( )

Character Nome*40
cNome:= “Manoel”
Read (* , 40 ) Nome
Msginfo (cNome)
Write (* , 40 ) Nome
Return
End

2) Tipos de Dados

Os tipos de dados nada mais são do que informações que passamos ao computador para que ele possa
processá-las. São 3 os tipos de dados: Numéricos (Inteiros e Reais), Caracteres e Lógicos.

Inteiros

São dados do tipo inteiro, todo numero inteiro positivo ou negativo que não possua parte fracionária.
Exemplo: 65, 45, -8, 0, -785.

4
CURSO LÓGICA DE
PROGRAMAÇÃO
Versão 1.0 – 08/2008 – Todos direitos reservados

Reais

São dados do tipo real, todo numero positivo ou negativo que pode ou não ter a parte fracionária.
Exemplo: 87, -89.5, 78.8, 145.

Caracteres

São dados do tipo Caractere, todo informação que contiver letras, números e símbolos especiais. Exemplo:
“Maria”, “Rua Leonardo da Vinci, 12”, “saci@logica.com.br”.

O tipo de dado Caractere é também conhecido como String, Literal, Alfanumérico e Cadeia.

Lógicos

São dados do tipo lógico, todo valor que podemos determinar se o valor é verdadeiro ou falso, true ou
false, 0 ou 1.

O tipo de dado Lógico também é conhecido como Tipo Booleano.

3) Variáveis

São consideradas variáveis toda informação que é sujeita a variação, ou seja, toda a informação que tem
valor incerto, inconstante, instável, etc.

Quando declaramos uma variável devemos informar ao computador qual é o tipo de dado que vamos
trabalhar, para que o mesmo reserve um espaço em memória específico para aquele o tipo de dado em
questão.

A declaração de variáveis segue as seguintes regras:

 Os nomes das variáveis podem ser atribuídos com um ou mais caracteres;


 Os nomes das variáveis não poderão conter espaços em branco;
 Não poderá ser nome de variável nenhum instrução ou palavra reservada da linguagem a qual estamos
desenvolvendo;
 Na declaração dos nomes das variáveis poderão ser utilizados apenas letras e números, mas em
hipótese alguma o nome da variável poderá ser iniciado com um numero.

Exemplo de nomes válidos para variáveis:

NOME, NOME_PAI, TEL1, TEL2, X, Y

5
CURSO LÓGICA DE
PROGRAMAÇÃO
Versão 1.0 – 08/2008 – Todos direitos reservados

Escopo das variáveis

Além de informarmos ao computador qual o tipo de dado que vamos trabalhar podemos informar a ele
qual o escopo desta variável, ou seja, qual o grau de atuação que esta variável vai ter dentro dos nossos
programas.

São eles:

 Local  A variável declarada com escopo Local só será valida para o programa que fez a sua
declaração.
 Privada  Tem validade no programa que a declarou e nos que são chamados por ele.
 Pública  Sua atuação é global, ou seja, qualquer programa ou função pode acessar o valor
desta variável e a qualquer momento.

4) Constantes

São consideradas constantes toda informação que tem valor fixo, ou seja, informações que hipótese
alguma terão seu valor alterado.

Exemplo: PI = 3.14159

5) Operadores

Os operadores são utilizados quando há a necessidade de realizamos operações que nos auxiliam no
processamento das informações , os operadores podem ser dos tipos:

Aritméticos

Os operadores aritméticos poderão ser utilizados quando necessitarmos elaborar cálculos ou sentenças
matemáticas. Estes operadores são classificados em duas categorias:

 unários: Quando atuam na inversão ou manutenção dos sinais negativos ou positivos das variáveis do
tipo real e inteiro;

 binários: Quando atuam em operações que efetuam cálculos.

6
CURSO LÓGICA DE
PROGRAMAÇÃO
Versão 1.0 – 08/2008 – Todos direitos reservados

Os operadores aritméticos são:

Prioridade
Operador Operação Tipo Tipo de Retorno
Matemática
+ Manutenção de sinal Unário 1 Positivo
- Inversão de sinal Unário 1 Negativo
↑ Exponenciação Binário 2 Inteiro ou Real
/ Divisão Binário 3 Real
div Divisão Binário 4 Inteiro
Mod Divisão Binário 4 Inteiro
* Multiplicação Binário 3 Inteiro ou Real
+ Adição Binário 4 Inteiro ou Real
- Subtração Binário 4 Inteiro ou Real

Relacionais

Os operadores relacionais são utilizados para relacionar variáveis ou expressões, resultando num valor
lógico (Verdadeiro ou Falso), sendo eles:

Operador Significado
= Igual a
< Menor que
> Maior que
<= Menor ou igual a
>= Maior ou igual a
<> Diferente de
* Multiplicação
+ Adição
- Subtração

Lógicos

Os operadores lógicos atuam sobre expressões retornando sempre valores Falso ou Verdadeiro.

Operador REGRA
.E. Será verdadeiro quando as expressões relacionadas forem verdadeiras
.OU. Será verdadeiro quando pelo menos uma das expressões relacionadas for verdadeira.
.NÃO. Inverte o estado inicial da expressão

Tabela Verdade para o Operador .E.


7
CURSO LÓGICA DE
PROGRAMAÇÃO
Versão 1.0 – 08/2008 – Todos direitos reservados

A B A .E. B
V V V
V F F
F V F
F F F

Expressão lógica: 5 * 5 >= 20 .E. 2 – 1 < 1

Resultado: V .E. F  F

Tabela Verdade para o Operador .OU.

A B A .OU. B
V V V
V F V
F V V
F F F

Expressão lógica: 2 <> 20 .OU. 10 < (20 * 0.10)

Resultado: V .OU. F  V

Tabela Verdade para o Operador .NAO.

A .NAO. A
V F
F V

Expressão lógica: .NAO. ( 7 * 2 >= 15)

Resultado: .NAO. (F)  V

EXERCÍCIOS

8
CURSO LÓGICA DE
PROGRAMAÇÃO
Versão 1.0 – 08/2008 – Todos direitos reservados

1) Assinale I para os dados do tipo Inteiro, R para os dados do tipo Real, C para os Caractere e L para
os de tipo Lógico.

( )1
( ) “1”
( ) -5389
( ) “0”
( ) “-123”
( ) .false.
( ) 5478
( ) “inteiro”
( ) 100
( ) .V.
( ) 4.89
( ) “.F.”
( ) “-87”
( ) 5.78
( ) .Verdadeiro.
( ) “Real”
( ) 8.00001
( ) - ( 78 + 8.5)
( ) 70 – (45 / 2)
( )

2) Dadas as Expressões Lógicas, determine o valor lógico de cada uma delas:

( ) 5>2

9
CURSO LÓGICA DE
PROGRAMAÇÃO
Versão 1.0 – 08/2008 – Todos direitos reservados

( ) 2 + 3 * 5 = 25
( ) ( 3 / 3 ) * 5 + 4 >= 8
( ) 2 + 5 = 7 .E. 8 – 5 > 2
( ) 45 / 5 = 7 .OU. 8 – 5 > 2
( ) .NAO. (78 -70 = 8 .E. 5 * 5 - 5 = 0)
( ) 5 mod 2 = 1 .E. 8 div 3 = 2
( ) O sol é verde e a lua redonda
( ) O careca não tem cabelo ou o mamute é um réptil
( ) É falso que a Terra não é um Planeta

3) Desenvolva os diagramas de bloco e português estruturado para os seguintes programas:

a) Ler a temperatura em graus Celsius e apresenta-la convertida em graus Fahrenheit. A


fórmula para esta transformação é: F  ( 9 * C + 160) / 5.

b) Calcular e apresentar o volume de uma lata de óleo, utilizando a seguinte formula: VOLUME 
3.14159 * RAIO ↑ 2 * ALTURA

c)Elaborar um programa que calcule o volume de um caixa retangular, utilizando-se da formula: VOLUME
 COMPRIMENTO * LARGURA * ALTURA.

d) Efetuar e apresentar o cálculo da quantidade de kilometros por litro que um carro 1.0 faz com um
tanque de combustível., sabemos apenas que o tanque de combustível deste carro cabe 65 litros.

e) Ler dois números inteiros e apresentar o quadrado da diferença do primeiro pelo segundo.

f) O Sr. Manoel, dono da padaria da esquina contratou vosso serviço para desenvolver um programa
que mostre a ele o valor que ele deverá vender os produtos de sua padaria. Ele nos informou que o cálculo
do valor de venda dos produtos segue a seguinte regra: Todo produto será vendido com acréscimo de 75%
no seu valor de compra. Desenvolva um programa que mostre ao Sr, Manoel qual será o valor de venda de
cada um de seus produtos.

g)Ler dois valores para as variáveis A e B e efetuar a troca de valores entre elas, de modo que a variável A
passe a possuir o valor da variável B e que a Variável B passe a possuir o valor da variável A.

10
CURSO LÓGICA DE
PROGRAMAÇÃO
Versão 1.0 – 08/2008 – Todos direitos reservados

6) Desvios Condicionais

Os Desvios Condicionais ou Estruturas de Decisão fazem parte das técnicas de programação que conduzem
a estruturas dos programas para situações onde tenha que se tomar uma decisão e através desta desviar o
fluxo do processamento. As principais estruturas de decisão são:

Desvio Condicional Simples

O desvio condicional simples é representado pela instrução se...então...fim_se, sua finalidade é tomar uma
decisão quando uma condição for satisfatória.

Exemplo 1 :

Escreva o Diagrama de Bloco e o Pseudocódigo para um programa que leia um numero qualquer e
apresente o seu dobro caso este número seja maior que ou igual a 10.

Diagrama de Bloco:

inicio

num

n num s
>=10

num  num * 2

num

fim

11
CURSO LÓGICA DE
PROGRAMAÇÃO
Versão 1.0 – 08/2008 – Todos direitos reservados

Português Estruturado:

Programa dobro;

Var:
num: inteiro;

Inicio
Leia num;

Se num >= 10 então


num  num * 2
fim_se

Escreva num;
Fim

Exemplo 2 : Escreva o Diagrama de Bloco e o Pseudocódigo para um programa que leia a idade de uma
pessoa e mostre a frase “MENOR” quando a idade for menor que 18 anos.

inicio

idade

n idade s
< 18

“MENOR”

fim

12
CURSO LÓGICA DE
PROGRAMAÇÃO
Versão 1.0 – 08/2008 – Todos direitos reservados

Português Estruturado:

Programa idade;

Var:
idade: inteiro;

Inicio
Leia idade;

Se idade < 18 então


Escreva “MENOR”
fim_se

Fim

Desvio Condicional Composto

O desvio condicional composto é representado pela instrução se...então...senão...fim_se, sua finalidade é


tomar uma decisão quando uma condição for satisfatória e outra quando não satisfatória.

Sintaxe:
Se < condição > então
< Instruções para condição verdadeira >
Fim_se

Exemplo 2 :

Escreva o Diagrama de Bloco e o Pseudocódigo para um programa que leia um numero qualquer e
apresente a frase “ NUM É MENOR OU IGUAL A 10” quando o numero for menor ou igual a 10, caso
contrário mostrar a frase “NUM É MAIOR QUE 10”.

Diagrama de Bloco:

inicio

13
CURSO LÓGICA DE
PROGRAMAÇÃO
Versão 1.0 – 08/2008 – Todos direitos reservados

num

n num s
<= 10

Num, “É MAIOR QUE 10” num , “ É MENOR OU IGUAL A 10”

fim
Português Estruturado:

Programa idade2

Var:
num: inteiro

Inicio
Leia num
Se num <= 10 então
Escreva num, “é menor ou igual a 10”
Senão
Escreva num, “é menor ou igual a 10”
fim_se
Escreva num;
Fim

Exemplo 2 : Escreva o Diagrama de Bloco e o Pseudocódigo para um programa que efetue a leitura de dois
valores para as variáveis A e B e realize a sua soma. Se o resultado a soma for menor que 10, adcione 5 do
resultado e se o resultado for maior ou igual a 10, subtraia 7 do seu resultado.
]

Diagrama de Bloco:
inicio

14
CURSO LÓGICA DE
PROGRAMAÇÃO
Versão 1.0 – 08/2008 – Todos direitos reservados

A, B

RA+B

n s
R < 10

RN  R – 7 RN  R + 5

RN

fim

Português Estruturado:
Programa maior_menor;
Var:
R, RN, A, B: inteiro;

Inicio
Leia A, B;
RA+B

Se R < 10 então
RN  R + 5
Senão
RN  R – 7
fim_se
Escreva RN
Fim
Desvio Condicional Encadeado
Existem casos em que é necessário estabelecer verificação de condições sucessivas, em que uma
determinada ação poderá ser executada se um conjunto anterior de instruções ou condições for
satisfatório. Sendo a ação executada, ela poderá ainda estabelecer novas condições. Isso significa que

15
CURSO LÓGICA DE
PROGRAMAÇÃO
Versão 1.0 – 08/2008 – Todos direitos reservados

poderemos utilizar uma condição dentro da outra , podendo ser estabelecidas vários níveis de condições
que necessitarmos. Este tipo de estrutura pode ser chamado de aninhamento ou encadeamento.
Exemplo 1 :
Escreva o Diagrama de Bloco e o Pseudocódigo para um programa que de um aumento salarial ao pessoal
da empresa ZTA com as seguintes regras:

Se salário for < 500,00, reajuste de 15%.


Se salário for >= 500,00 e <= 1000,00, reajuste de 10%

Se salário > 1000,00, reajuste de 5%

Diagrama de Bloco:
inicio

salário

n salario s
< 500

n s SN  salário * 1.15
salário
<= 1000

SN  salário * 1.05 SN  salário * 1.10

SN

fim

Português Estruturado:

Programa SALARIO;

16
CURSO LÓGICA DE
PROGRAMAÇÃO
Versão 1.0 – 08/2008 – Todos direitos reservados

Var:
salário, SN: Real;

Inicio
Leia salário;
Se salário < 500 então
SN  salário * 1.15
Senão
Se salário <= 1000 então
SN  salário *1.10
Senão
SN  salário * 1,15
Fim_se
Fim_se

Escreva SN
Fim
EXERCÍCIOS

1) Desenvolva os diagramas de bloco e português estruturado para os seguintes programas:

a) Ler dois valores numéricos inteiros e apresentar o resultado da diferença do maior pelo menos

b) Ler quatro valores referente a quatro notas escolares de um aluno e mostrar uma mensagem
dizendo se o aluno foi “aprovado”, se a média entre as quatro notas for maior ou igual a 7.0, ou
“reprovado” caso a média seja menor que 7.0. Apresentar a média e a condição em que o aluno
se encontra.

c) Ler quatro valores referente a quatro notas escolares de um aluno e mostrar uma mensagem
dizendo se o aluno foi “aprovado”, se a média entre as quatro notas for maior ou igual a 7.0,
“reforço” caso a média seja < 7,0 e maior ou igual a 4.0 e “reprovado” quando média menor que
4.0. Apresentar a média e a condição em que o aluno se encontra.

d) Efetuar a leitura de três valores (variáveis A,B e C) e apresentá-los em ordem crescente.

e) Efetuar a leitura de quatro números inteiros e mostrar quais são divisíveis por 2 e por 3.

f) Efetuar a leitura de um numero e mostrar se o mesmo é par ou impar.

17
CURSO LÓGICA DE
PROGRAMAÇÃO
Versão 1.0 – 08/2008 – Todos direitos reservados

7) Estruturas de Repetição

As estruturas de repetição são utilizadas quando necessitamos que um determinado trecho de um


programa se repita quantas vezes quanto necessário. As Estruturas de Repetição também são
chamados de: laços de repetição, malhas de repetição ou looping.
Supondo que um programa deve efetuar a leitura de um valor e apresente a multiplicação deste
valor por 2 , repetindo esta seqüência por 5 vezes. Com o conhecimento adquirido até o momento
nós teríamos:

Português Estruturado

Programa repetição;
Var:
X : Real;
Inicio
Leia X;
Escreva X * 2;
Leia X;
Escreva X * 2;
Leia X;
Escreva X * 2;
Leia X;
Escreva X * 2;
Leia X;
Escreva X * 2;
Fim.

Para estes casos específicos existem comandos apropriados para efetuar a repetição de
determinados trechos o quanto de vezes que se faça necessário. A principal vantagem deste recurso
é redução do tamanho do programa e também a sua amplitude, onde poderemos efetuar um
numero indeterminado de repetições sem alterar o tamanho e nem o código dos programas.
Iremos fazer a representação do caso acima utilizando as três Estruturas de Repetição conhecidas:
ENQUANTO, REPITA e PARA.
18
CURSO LÓGICA DE
PROGRAMAÇÃO
Versão 1.0 – 08/2008 – Todos direitos reservados

Enquanto ... Fim_emquanto

Caracteriza-se por realizar o teste lógico antes da inicialização do looping.

Sintaxe:

Enquanto < condição > faça


< instruções >
Fim_enquanto

Resumo: Enquanto condição for satisfatória faça.

Diagrama de Blocos

n
< condição >

< instruções >

19
CURSO LÓGICA DE
PROGRAMAÇÃO
Versão 1.0 – 08/2008 – Todos direitos reservados

Exemplo:
Diagrama de Bloco:
inicio

N1

n
N <= 5

X*2

NN+1

fim

Português Estruturado

Programa ENQUANTO;

Var:
N, X: Real;

Inicio
N  1;

Enquanto N <= 5 Faça

Leia X;
Escreva X * 2;
N  N + 1;

Fim_enquanto
Fim.

20
CURSO LÓGICA DE
PROGRAMAÇÃO
Versão 1.0 – 08/2008 – Todos direitos reservados

Repita ... Até_que

Caracteriza-se por realizar o teste lógico no final do looping.

Sintaxe:

Repita
< instruções >
Até_que < condição >

Resumo: Repita até que condição seja satisfatória..

Diagrama de Bloco:

< instrução >

n
< condição >

Exemplo:

21
CURSO LÓGICA DE
PROGRAMAÇÃO
Versão 1.0 – 08/2008 – Todos direitos reservados

Diagrama de Bloco:
inicio

N1

X*2

NN+1

n
N>5

fim

Português Estruturado

Programa REPITA;

Var:
N, X: Real;

Inicio
N  1;

Repita

Leia X;
Escreva X * 2;
N  N + 1;

Até_que N > 5
Fim.

22
CURSO LÓGICA DE
PROGRAMAÇÃO
Versão 1.0 – 08/2008 – Todos direitos reservados

Para ... de ... até ... passo ... faça

Caracteriza-se por realizar o teste lógico com a definição do inicio, fim e o passo.

Sintaxe:

Para < variável > de < inicio > até < fim > passo < incremento > faça
< instruções >
Fim_para

Diagrama de Blocos

n
Var  inicio , fim, incremento

s
< instruções >

Exemplo:

23
CURSO LÓGICA DE
PROGRAMAÇÃO
Versão 1.0 – 08/2008 – Todos direitos reservados

Diagrama de Bloco:
inicio

n
N1,5,1

X*2

Fim

24
CURSO LÓGICA DE
PROGRAMAÇÃO
Versão 1.0 – 08/2008 – Todos direitos reservados

Português Estruturado

Programa PARA;

Var:
N, X: Real;

Inicio
Para N de 1 até 5 passo 1 faça

Leia X;
Escreva X * 2;

Fim_para
Fim.

25
CURSO LÓGICA DE
PROGRAMAÇÃO
Versão 1.0 – 08/2008 – Todos direitos reservados

EXERCÍCIOS

1- Desenvolva os diagramas de blocos e a codificação em português estruturado para os itens a seguir


utilizando as três estruturas de repetição.

a) Apresentar o quadrado dos números pares de 10 a 50.

b) Apresentar a tabuada de um numero qualquer fornecido pelo usuário considerando a seguinte


formatação:

2X1=2
2X2=4
...
2 X 9 = 18
2 X 10 = 20

c) Apresentar a soma obtida dos 100 primeiros números inteiros.

d) Elaborar um programa que efetue a leitura de 20 valores numéricos inteiros e no final apresente o
somatório destes valores.

e) Elaborar um programa que efetue a leitura de 20 valores numéricos e apresente no final o maior e o
menor valor dos valores informados.

f) Elaborar um programa que simule uma caixa registradora de um mercado. O programa deverá ler os
valores dos produtos até que seja digitado o valor 0 (zero). Ao final o programa devera mostrar o total da
compra efetuada pelo cliente do mercado.

g) Elaborar um programa que apresente os valores de conversão de graus Celsius em Fahrenheit, de 10 em


10 graus, iniciando a contagem em 0 graus Celsius e finalizando em 100 graus Celsius. O programa deverá
apresentar o valor das duas temperaturas. A fórmula de conversão é: F  ( 9 * C + 160 ) / 5.

26
CURSO LÓGICA DE
PROGRAMAÇÃO
Versão 1.0 – 08/2008 – Todos direitos reservados

8) Matrizes/Vetores

Neste capítulo iremos estudar um tipo de variável que pode armazenar vários valores ao mesmo tempo. A
utilização deste tipo de variável pode receber vários nomes, como: Variáveis Indexadas, Variáveis
Compostas, Tabela de Memória, Arranjos, Vetores, Matrizes ou Array.

Vetores Unidimensionais

Os Vetores Unidimensionais consiste em uma única variável que pode ser dimensionada com um
determinado tamanho e controlada através de um índice inteiro e positivo que determinara o
posicionamento dos dados que a ela serão atribuídos.

Um exemplo bem ilustrativo para simplificar este tipo de variável é a composição de um trem.

Um trem é composto de uma locomotiva e n vagões, onde :

Variável  Trem (Locomotiva)


Dimensões  Vagão 1
 Vagão 2
 Vagão 3
...
 Vagão N

Neste tipo de estrutura podemos dizer que o vagão1 de nossa locomotiva vai ser carregado com Feijão, que
o vagão2 vai ser carregado com Arroz, o Vagão3 com Soja e o VagãoN com Café.

Como podemos notar nesta estrutura temos uma única variável onde em cada dimensionamento ou índice
pode-se atribuir um valor qualquer.

Voltando a estrutura de programação o exemplo do Trem pode ser ilustrado da seguinte forma:

27
CURSO LÓGICA DE
PROGRAMAÇÃO
Versão 1.0 – 08/2008 – Todos direitos reservados

Exemplo de atribuição de dados a um Vetor:

Diagrama de Bloco:
inicio

n
N  1 , 10 , 1

TREM[N] 2 * N

n
N  1 , 10 , 1

Escreva TREM[N]

Fim

28
CURSO LÓGICA DE
PROGRAMAÇÃO
Versão 1.0 – 08/2008 – Todos direitos reservados

Português Estruturado

Programa Vetor_trem;

Var:

N: Inteiro;
TREM: Conjunto [1..10]

Inicio
Para N de 1 até 10 passo 1 faça

TREM[N] 2* N;

Fim_para

Para N de 1 até 10 passo 1 faça

Escreva TREM[N];

Fim_para
Fim.

EXERCÍCIOS

29
CURSO LÓGICA DE
PROGRAMAÇÃO
Versão 1.0 – 08/2008 – Todos direitos reservados

1) Desenvolver um programa que efetue a leitura de 10 elementos de um Vetor A de inteiros. Construir um


vetor B de mesmo tipo, observando a seguinte lei de formação: Se o valor do índice for par, o valor deverá
ser multiplicado por 5, sendo ímpar deverá ser somado por 5. Ao final mostrar os conteúdos dos dois
vetores.

2) Desenvolver um programa que efetue a leitura de 5 elementos de um vetor A de inteiros. No final,


apresente o total da soma de todos os elementos que sejam ímpares.

3) Ler dois vetores A e B de inteiros com 20 elementos cada. Construir um vetor C, onde cada elemento de C
é a subtração do elemento correspondente de A com B.

4) Ler 15 elementos de um vetor A. Construir o vetor B do mesmo tipo de A, observando a seguinte lei de
formação: “Todo elemento de B deverá ser o quadrado do elemento de A correspondente”.

5) Ler um vetor A de inteiros com 15 elementos. Construir um vetor B de mesmo tipo, sendo que cada
elemento do vetor B seja o fatorial do elemento correspondente do vetor A .

6) Ler 20 elementos de um vetor A de inteiros e construir um vetor B de mesma dimensão com os mesmos
elementos de A, sendo que estes deverão estar invertidos. Ou seja, o primeiro elemento de A passa a ser o
último elemento de B. O segundo elemento de A passa a ser o penúltimo de B e assim por diante.

30
CURSO LÓGICA DE
PROGRAMAÇÃO
Versão 1.0 – 08/2008 – Todos direitos reservados

Vetores Bidimensionais

Vetores Bidimensionais fazem menção a um vetor onde as informações são determinadas por linhas e
colunas. As informações nos vetores bidimensionais também são tratadas individualmente, mas com a
necessidade de dois índices para fazer o posicionamento correto, um para a linha e outro para coluna.
Veja a seguir um exemplo de utilização de Vetores Bidimensionais:

Suponhamos que em uma sala de aula tenha 10 alunos e que precisamos guardar 4 notas referente ao
aproveitamento anual de cada um deles para que no final do ano tenhamos a sua média e saber se os
mesmos obtiveram média satisfatória para passar de ano.

Para resolver o problema proposto acima devemos criar uma variável de memória do tipo Matriz 10x4
como mostra a figura a seguir:
Nota 1 Nota 2 Nota 3 Nota 4
Aluno 1        
Aluno 2        
Aluno 3        
Aluno 4        
Aluno 5        
Aluno 6        
Aluno 7        
Aluno 8        
Aluno 9        
Aluno 10        

10 linhas para representar cada aluno e 4 colunas para representar as notas que cada um pode ter.

31
CURSO LÓGICA DE
PROGRAMAÇÃO
Versão 1.0 – 08/2008 – Todos direitos reservados

Diagrama de Bloco:
Inicio

n
X  1 , 10 , 1

s
n
Y1,4,1

NOTA[X][Y]

Fim

Português Estruturado

Programa MATRIZ;

Var:
X, Y : Inteiro;
NOTA: Conjunto [1..10, 1..4]

Inicio
Para X de 1 até 10 passo 1 faça
Para Y de 1 até 4 passo 1 faça

Leia NOTA[N][Y];

Fim_para
Fim_para
Fim.

32
CURSO LÓGICA DE
PROGRAMAÇÃO
Versão 1.0 – 08/2008 – Todos direitos reservados

EXERCICIO

1) Leia uma matriz A (4x4) de inteiros. Leia um inteiro B. Imprima quantas vezes o inteiro B aparece
em A

2) Crie e imprima uma matriz A tal que seus elementos sejam a soma de seus índices.

3) Ler duas matrizes A e B de inteiros, cada uma com 5 linhas e 3 colunas. Construir uma matriz C de
mesma dimensão, onde C é formada pela soma dos elementos da matriz A com os elementos da
matriz B.

4) Faça um algorítmo que:


- leia uma matriz M 5 x 5 de inteiros
- Calcule e imprima a matriz S, tal que:
- Os elementos da diagonal principal de S serão idênticos aos respectivos em M
- Os elementos acima da diagonal principal serão o dobro dos respectivos em M
- Os elementos abaixo da diagonal principal serão a metade dos respectivos em M
- Calcule e imprima o vetor V cujos elementos contém a soma dos elementos de cada linha da
matriz S.

5) Faça um algorítmo que Crie a matriz A (4x4), tal que:


- Os elementos da diagonal principal de A serão iguais a 0
- Os elementos acima da diagonal principal serão iguais a 2.i.j
- Os elementos abaixo da diagonal principal serão iguais a (i+j)/2
- Calcule e imprima a matriz B tal que os elementos de cada linha sejam iguais aos elementos
de cada coluna da matriz A
- Calcule e imprima o vetor V cujos elementos contém a soma dos elementos de cada linha da
matriz B.

Métodos de Pesquisa

Quando trabalhamos com matrizes podemos ter grandes massas de dados e uma enorme dificuldade em
localizar determinadas informações de forma rápida. Para solucionar este tipo de situação apresentaremos
dois métodos de pesquisa que poderão nos auxiliar na pesquisa de dados em uma matriz.

 Seqüencial

33
CURSO LÓGICA DE
PROGRAMAÇÃO
Versão 1.0 – 08/2008 – Todos direitos reservados

O método de pesquisa seqüencial consiste em efetuar a busca da informação a partir do primeiro índice,
percorrendo a matriz/vetor até o seu final . Este tipo de pesquisa é mais lento, porem eficiente quando os
dados da matriz estiverem desordenados.

 Binária

O método de Pesquisa Binária é superiormente mais rápido que o método Seqüencial , porem exige que a
matriz esteja ordenada , pois este método de pesquisa consiste em dividir a matriz ao meio por diversas
vezes até que encontre o informação procurada.

O método de pesquisa divide a matriz em duas partes e procura saber se a informação esta contida na
parte inferior ou superior a posição atualmente selecionada. Se a informação procurada estiver na parte
inferior, a parte superior é descartada na próxima tentativa de busca, que divide a metade que sobrou mais
uma vez, até que o dado procurado seja encontrado.

Exemplo:

Suponhamos que estamos fazendo a pesquisa na matriz unidimensional abaixo pelo nome “Laura”

Índice Nomes
1 Adriana
2 Carlos
3 Fabiano
4 Gabriel
5 João
6 José
7 Laura
8 Maria
9 Osvaldo
10 Paulo

Com o método binário, pegamos a quantidade de registros da matriz e dividimos por dois. No nosso caso
dividiremos 10 por 2.

Após a divisão teremos:


34
CURSO LÓGICA DE
PROGRAMAÇÃO
Versão 1.0 – 08/2008 – Todos direitos reservados

Índice Nomes Índice Nomes


1 Adriana 6 José
2 Carlos 7 Laura
3 Fabiano 8 Maria
4 Gabriel 9 Osvaldo
5 João 10 Paulo

Depois que a matriz estiver dividida deverá ser verificado se a informação esta na primeira ou segunda
metade. Após a constatação da metade onde se encontra o dado procurado a outra metade é descartada
e dividi-se a metade que sobrou novamente.

Índice Nomes Índice Nomes


6 José 8 Maria
7 Laura 9 Osvaldo
10 Paulo

Novamente é verificado em qual das metades esta o dado procurado, descartada a metade que não se
enquadra na pesquisa e dividida a metade que sobrou.

Índice Nomes Índice Nomes


6 José 7 Laura

Até que seja encontrada em uma das metades a informação que desejamos.

EXERCÍCIO

Considerando a necessidade de trabalharmos com uma matriz com 10 nomes pede-se que seja
desenvolvido algoritmo e português estrutura para:

1) Ler para dentro de uma matriz unidimensional 10 nomes diferentes.


2) Permitir que um usuário pesquise os nomes digitados até que ele queira sair do programa.
3) O Programa deverá informar se o nome procurado encontra-se ou não dentro Matriz.
4) Perguntar se o usuário deseja fazer nova pesquisa, se “sim” continua se “não” finaliza o
programa.

Desenvolver este mesmo algoritmo para o método de Pesquisa Binária e também para o Método de
Pesquisa Seqüencial.

35
CURSO LÓGICA DE
PROGRAMAÇÃO
Versão 1.0 – 08/2008 – Todos direitos reservados

9) Registros

Até o presente momento este material apresentou Estruturas Homogenias, ou seja, que trabalham com um
único tipo de dado, neste capítulo será apresentada as Estruturas Heterogenias, que são aquelas que
podem trabalhar com diversos tipos de dados ao mesmo tempo e que mais se assemelham com os dados
obtidos através de consultas a tabelas de dados inseridas em Banco de Dados.

Para declararmos um registro em português estruturado deve-se utilizar a seguinte sintaxe:

Tipo
<Identificador> = Registro
<Lista de Campos e Seus Tipos>
Fim-Registro

Var
<Variáveis> : <identificador>

Tomando como exemplo a necessidade de obtermos a necessidade de criar um registro determinado


ALUNO cujo cadastro deve conter os seguintes campos: NOME, NOTA1, NOTA2, NOTA3, NOTA4.

Segue exemplo:

Tipo

CAD_ALUNO = Registro

NOME : Caracter
NOTA1: Real
NOTA2: Real
NOTA3: Real
NOTA4: Real

Fim-Registro
Var

ALUNO : CAD_ALUNO

Observe que é especificado um registro chamado CAD_ALUNO, um conjunto de dados heterogêneo, e logo
este registro é atribuído a uma variável como sendo um tipo de dado.

Note como ficaria o Exemplo completo da estrutura de uma registro:

36
CURSO LÓGICA DE
PROGRAMAÇÃO
Versão 1.0 – 08/2008 – Todos direitos reservados

Diagrama de Bloco:
Inicio

ALUNO.NOME
s

n
Y1,4,1

ALUNO.NOTA[Y]

Fim

Português Estruturado:

Programa Notas

Tipo

CAD_ALUNO = Registro

NOME : Caracter
NOTA : Conjunto[1..4]

Fim-Registro
Var

ALUNO : CAD_ALUNO
Y : Inteiro

Inicio
Leia ALUNO.NOME

Para Y de 1 Até 4 Passo 1 Faça


Leia ALUNO.NOTA[Y]
Fim_Para

Fim

37
CURSO LÓGICA DE
PROGRAMAÇÃO
Versão 1.0 – 08/2008 – Todos direitos reservados

O que vimos acima é uma estrutura simples de utilização de registros, agora veremos uma estrutura um
pouco mais complexa, pois utilizamos conjuntos de registros.

Imagine a mesma situação acima, só que para uma sala com 30 alunos. A solução é trabalhar com um
conjunto (array) do tipo Registro.

Segue exemplo:

Diagrama de Bloco:
Inicio

X  1 , 30 , 1

ALUNO.NOME[X]

n
Y1,4,1
s

ALUNO[X].NOTA[Y]

Fim

Português Estruturado:

Programa Notas
Tipo
CAD_ALUNO = Registro
NOME : Caracter
NOTA : Conjunto[1..4]
Fim-Registro
Var
ALUNO : Conjunto [1..8] de CAD_ALUNO
X, Y : Inteiro

38
CURSO LÓGICA DE
PROGRAMAÇÃO
Versão 1.0 – 08/2008 – Todos direitos reservados

Inicio

Para X de 1 Até 30 Passo 1 Faça

Leia ALUNO[X].NOME

Para Y de 1 Até 4 Passo 1 Faça

Leia ALUNO[X].NOME[Y]
Fim_Para

Fim_para

Fim

EXERCÍCIO

Considerando a necessidade de desenvolver uma agenda que contenha nomes, endereços e telefones de
10 pessoas, defina a estrutura de registro apropriada, o diagrama de blocos e a codificação de um
programa que execute as seguintes etapas:

a) Cadastrar 10 registros

c) Classificar os Registros em Ordem Crescente por ordem de nomes.

d) Apresentar todos os registros.

39
CURSO LÓGICA DE
PROGRAMAÇÃO
Versão 1.0 – 08/2008 – Todos direitos reservados

10) Sub-Rotinas

Neste capítulo falaremos sobre sub-rotinas ou programação modular, este tipo de estrutura permite dividir
um problema grande ou algoritmos complexos em algoritmos menores, este tipo de divisão que
chamamos de sub-rotinas. Ao trabalhar com sub-rotinas podemos deparar com a necessidade de dividir
uma sub-rotina em tantas outras quanto se faça necessário para diminuir e simplificar a resolução de um
determinado problema.

Cada Estrutura de Sub-Rotina terá o sua codificação realizada como se fosse um programa qualquer, com
inicio, instruções e fim, assim como a declaração de suas próprias variáveis, se assim o escopo permitir, ou
seja, será idêntico a tudo o que vimos até agora.

Para ilustrarmos bem a idéia de Sub-Rotinas iremos apresentar agora um exemplo de uma calculadora, um
exemplo bem didático para caracterizar esta situação.

1 – Adição
2 – Subtração
3 – Multiplicação
4 – Divisão
5 - Sair

Sub-Rotina 1 Sub-Rotina2 Sub-Rotina3 Sub-Rotina 4


Adição Subtração Multiplicação Divisão

A estrutura mostrada acima mostra claramente a modularização que deveremos utilizar em nossa
codificação. Primeiramente temos uma Rotina ou Função principal com um menu de operações, onde ao
ser escolhida uma delas deverá ser chamadas uma das 4 Sub-Rotinas que estão a um nível abaixo.

A seguir mostraremos como fica o Diagrama de Blocos e o Português Estruturado para a resolução do
exemplo da Calculadora proposto acima.

40
CURSO LÓGICA DE
PROGRAMAÇÃO
Versão 1.0 – 08/2008 – Todos direitos reservados

Diagrama de Bloco:
inicio

Opção  0

Opção <> 5

Opção

Opção = 1

ADIÇÃO

Opção = 2

SUBTR

Opção = 3

MULTIPL

Opção = 4

41
CURSO LÓGICA DE
PROGRAMAÇÃO
Versão 1.0 – 08/2008 – Todos direitos reservados

DIVISÃO

fim

Sub-Rotina ADIÇÃO

ADIÇÃO

A, B

R A+ B

Retorna

Sub-Rotina SUBTRAÇÃO
42
CURSO LÓGICA DE
PROGRAMAÇÃO
Versão 1.0 – 08/2008 – Todos direitos reservados

SUBTR

A, B

R A- B

Retorna

Sub-Rotina MULTIPLICAÇÃO

43
CURSO LÓGICA DE
PROGRAMAÇÃO
Versão 1.0 – 08/2008 – Todos direitos reservados

MULTIPL

A, B

R A* B

Retorna

Sub-Rotina DIVISÃO

DIVISÃO

A, B

R A/ B

Retorna

Português Estruturado
44
CURSO LÓGICA DE
PROGRAMAÇÃO
Versão 1.0 – 08/2008 – Todos direitos reservados

Programa Calculadora

Var
Opção : Inteiro

Função ADIÇÃO
Var
R, A, B : Real

Inicio
Leia A, B
RA+B
Escreva R
Fim

Função SUBTR
Var
R, A, B : Real

Inicio
Leia A, B
RA-B
Escreva R
Fim

Função MULTIPL
Var
R, A, B : Real

Inicio
Leia A, B
RA*B
Escreva R
Fim

Função DIVISÃO
Var
R, A, B : Real
45
CURSO LÓGICA DE
PROGRAMAÇÃO
Versão 1.0 – 08/2008 – Todos direitos reservados

Inicio
Leia A, B
RA/B
Escreva R
Fim

Inicio
Opção  0

Enquanto Opção <> 5 Faça

Escreva “ 1 - Adição “
Escreva “ 2 - Subtração “
Escreva “ 3 - Multiplicação “
Escreva “ 4 - Divisão “
Escreva “ 5 - Sair “

Leia Opção

Se Opção = 1 Então
ADICAO
Fim_se

Se Opção = 2 Então
SUBTR
Fim_se

Se Opção = 3 Então
MULTIPL
Fim_se

Se Opção = 4 Então
DIVISAO
Fim_se

Fim_Enquanto
Fim

EXERCÍCIO

Considerando a necessidade de desenvolver uma agenda que contenha nomes, endereços e telefones de
10 pessoas, defina a estrutura de registro apropriada, o diagrama de blocos e a codificação de um
programa que por meio de um menu de opções, execute as seguintes etapas:
46
CURSO LÓGICA DE
PROGRAMAÇÃO
Versão 1.0 – 08/2008 – Todos direitos reservados

a) Cadastrar 10 registros

b) Pesquisar um dos 10 registros de cada vez pelo campo nome (usar método de Pesquisa Seqüencial).

c) Classificar os Registros em Ordem Crescente por ordem de nomes.

d) Apresentar todos os registros.

47

Você também pode gostar