Escolar Documentos
Profissional Documentos
Cultura Documentos
PROGRAMAÇÃO
Versão 1.0 – 08/2008 – Todos direitos reservados
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.
- 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.
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:
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
Readln (“Nome”); }
Writeln (“Nome”);
End.
Fortran ADVPL
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.
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.
5
CURSO LÓGICA DE
PROGRAMAÇÃO
Versão 1.0 – 08/2008 – Todos direitos reservados
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;
6
CURSO LÓGICA DE
PROGRAMAÇÃO
Versão 1.0 – 08/2008 – Todos direitos reservados
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
A B A .E. B
V V V
V F F
F V F
F F F
Resultado: V .E. F F
A B A .OU. B
V V V
V F V
F V V
F F F
Resultado: V .OU. F V
A .NAO. A
V F
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)
( )
( ) 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
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:
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;
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;
Fim
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
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
RA+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;
RA+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:
Diagrama de Bloco:
inicio
salário
n salario s
< 500
n s SN salário * 1.15
salário
<= 1000
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
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.
e) Efetuar a leitura de quatro números inteiros e mostrar quais são divisíveis por 2 e por 3.
17
CURSO LÓGICA DE
PROGRAMAÇÃO
Versão 1.0 – 08/2008 – Todos direitos reservados
7) Estruturas de Repetição
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
Sintaxe:
Diagrama de Blocos
n
< condição >
19
CURSO LÓGICA DE
PROGRAMAÇÃO
Versão 1.0 – 08/2008 – Todos direitos reservados
Exemplo:
Diagrama de Bloco:
inicio
N1
n
N <= 5
X*2
NN+1
fim
Português Estruturado
Programa ENQUANTO;
Var:
N, X: Real;
Inicio
N 1;
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
Sintaxe:
Repita
< instruções >
Até_que < condição >
Diagrama de Bloco:
n
< condição >
Exemplo:
21
CURSO LÓGICA DE
PROGRAMAÇÃO
Versão 1.0 – 08/2008 – Todos direitos reservados
Diagrama de Bloco:
inicio
N1
X*2
NN+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
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
N1,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
2X1=2
2X2=4
...
2 X 9 = 18
2 X 10 = 20
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.
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.
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
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
Escreva TREM[N];
Fim_para
Fim.
EXERCÍCIOS
29
CURSO LÓGICA DE
PROGRAMAÇÃO
Versão 1.0 – 08/2008 – Todos direitos reservados
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
Y1,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.
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.
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.
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.
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:
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.
Tipo
<Identificador> = Registro
<Lista de Campos e Seus Tipos>
Fim-Registro
Var
<Variáveis> : <identificador>
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.
36
CURSO LÓGICA DE
PROGRAMAÇÃO
Versão 1.0 – 08/2008 – Todos direitos reservados
Diagrama de Bloco:
Inicio
ALUNO.NOME
s
n
Y1,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
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
Y1,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
Leia ALUNO[X].NOME
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
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
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
RA+B
Escreva R
Fim
Função SUBTR
Var
R, A, B : Real
Inicio
Leia A, B
RA-B
Escreva R
Fim
Função MULTIPL
Var
R, A, B : Real
Inicio
Leia A, B
RA*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
RA/B
Escreva R
Fim
Inicio
Opção 0
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).
47