Você está na página 1de 184

Lógica de Programação

Charles Emerson Machado – charles.machado@prof.sc.senac.br

08/06/2011 1
Desde os primórdios, o homem vem tentando resolver seus problemas com maior
rapidez e o menor esforço possíveis, procurando automatizar as tarefas rotineiras. Isso
possibilitou o aparecimento de instrumentos como a roda, roldana, alavanca, carro e até
o computador.

No entanto as tarefas que devem ser realizadas pelo computador, de forma automática,
têm de ser anteriormente pensadas e colocadas em uma seqüência de ações para,
posteriormente, serem inseridas na máquina.

A essa seqüência de ações denomina-se Programa e à fase de formular soluções


que gerem programas denomina-se Lógica de Programação.

Programar é basicamente Construir Algoritmos.

A meta principal de qualquer programador é resolver problemas por meio de soluções


lógicas para obter resultados eficientes (corretos) e eficazes (com qualidade). Porém, se
as soluções não forem bem planejadas (passo a passo), com certeza essa meta não
será atingida. Antes de iniciar o estudo de Lógica de Programação, conheça alguns
conceitos básicos:

08/06/2011 2
SOFTWARE

Software é o conjunto dos programas que comandam o funcionamento do


Hardware. Programas são feitos a partir de algoritmos (objeto de estudo
deste curso), sequências de instruções/comandos para se atingir um objetivo.
Depois de pronto, o algoritmo é convertido para uma linguagem de
programação. O produto dessa conversão é um programa.

08/06/2011 3
LÓGICA

As pessoas utilizam a lógica no cotidiano sem perceber; chegam mesmo a citá-la, sem
entender direito o seu significado.

Segundo o dicionário Aurélio, a lógica é a “coerência de raciocínio, de idéias”, ou ainda a


“seqüência coerente, regular e necessária de acontecimentos, de coisas”.

Você pode perceber isso, nos exemplos a seguir:

O número 3 é menor que o número 5.


O número 7 é maior que o número 5.
Logo, o número 3 é menor que os números 5 e 7.
Quando chove, não é preciso regar as plantas do jardim.
Hoje choveu.
Logo, hoje não é preciso regar as plantas do jardim.
O Brasil fica na América do Sul.
A América do sul fica no continente americano.
Logo, os brasileiros são americanos.

08/06/2011 4
Às vezes o raciocínio funciona desordenadamente. Quantas vezes você já ouviu as
frases: “E se acontecer aquilo?”, ou “É, mas eu não tinha pensado nisso!”

Neste exemplo, estão descritas ações de quem vai a um banco; entretanto, veja se seria
possível retirar o dinheiro obedecendo à seqüência descrita.

1 Sair do banco.
2 Aguardar a vez de ser atendido.
3 Entrar na fila do caixa.
4 Digitar a senha.
5 Entrar no banco
6 Informar o valor a ser retirado.
7 Procurar a fila do caixa.
8 Pegar o comprovante de saque, o cartão eletrônico e o dinheiro.
9 Entregar o cartão eletrônico ao funcionário que atende no caixa.
10 Conferir o valor em dinheiro.

08/06/2011 5
Você conseguiria retirar o dinheiro? Com certeza não, pois, embora as ações estejam
corretas, a seqüência está errada.
A primeira ação é sair do banco.

Como se pode retirar dinheiro de um banco estando fora dele? Agora observe as
mesmas ações na seqüência correta.

1 Entrar no banco.
2 Procurar a fila do caixa.
3 Entrar na fila do caixa.
4 Aguardar a vez de ser atendido.
5 Entregar o cartão eletrônico ao funcionário que atende no caixa.
6 Informar o valor a ser retirado.
7 Digitar a senha.
8 Pegar o comprovante de saque, o cartão eletrônico e o dinheiro.
9 Conferir o valor em dinheiro.
10 Sair do banco
Utiliza-se a lógica para ordenar e corrigir pensamentos ou ações voltados
para a solução de problemas.

08/06/2011 6
LÓGICA DE PROGRAMAÇÃO

Falar em Lógica de Programação significa apenas contextualizar a lógica


na programação de computadores, buscando a melhor sequência de ações para
solucionar determinado problema.

Na programação de computadores, o nome dessa sequência de ações é


Algoritmo, que é, de maneira bem simples, a sequência de passos ou ações
para atingir um objetivo.

Já ação é um fato que, a partir de um estado inicial, após um período de


tempo finito, produz um estado final previsível e definido. Por exemplo, abrir uma
porta é uma ação.

08/06/2011 7
No exemplo acima você pode observar que, ao objeto (porta), no estado
inicial (porta fechada), é aplicada a ação (abrir) por um tempo determinado
(segundos), levando ao estado final (porta aberta), previsível e definido (pois é
esperado que, quando se abre algo, principalmente qualquer porta, no final, ela
esteja aberta).

08/06/2011 8
OBJETIVO

O objetivo deste curso é proporcionar a apropriação de conhecimentos


capazes de reconhecer, utilizar e saber a finalidade e o funcionamento das
técnicas, ferramentas e elementos utilizados na construção de algoritmos para
que possamos ordenar, desenvolver e aprimorar o raciocínio lógico aplicado
na solução de problemas do cotidiano.

08/06/2011 9
ALGORITMOS

O QUE É UM ALGORITMO?

Um Algoritmo é uma seqüência finita de instruções bem claras, bem


definidas e bem detalhadas que, quando colocadas em uma ordem lógica, nos
levam a solução de um problema.

Os Algoritmos independem da linguagem de programação a ser utilizada. O


objetivo da construção de Algoritmos é que eles possam ser adaptados a
qualquer linguagem de programação.

Não existe apenas um Algoritmo para a solução de um problema.


Um Algoritmo pode ser numérico ou não.

Um Algoritmo pode ter tantas entradas e saídas de dados, quantas forem


necessárias, pode até não ter entradas, mas obrigatoriamente deverá ter pelo
menos uma saída de dados que é o resultado do processamento.

08/06/2011 10
Entretanto ao montar um algoritmo, precisamos primeiro dividir o problema
apresentado em três fases fundamentais.

08/06/2011 11
Onde temos:

ENTRADA: São os dados de entrada do algoritmo


PROCESSAMENTO: São os procedimentos utilizados para chegar ao
resultado final
SAÍDA: São os dados já processados

Analogia com o homem

08/06/2011 12
08/06/2011 13
FORMAS DE REPRESENTAÇÃO DE UM ALGORITMO

Temos 3 (três) formas de representar um algoritmo:

• PSEUDOCÓDIGO (OU PORTUGUÊS ESTRUTURADO, OU PORTUGOL).


• FLUXOGRAMA
• DIAGRAMA DE CHAPIN

PSEUDOCÓDIGO: As estruturas lógicas são escritas numa linguagem próxima


ao português, na seqüência em que são executadas.

FLUXOGRAMA: Nesta forma de representação as estruturas lógicas são


expressas através de figuras geométricas, interligadas por setas que indicam o
caminho a ser seguido.

08/06/2011 14
DIAGRAMA DE CHAPIN: As estruturas lógicas são representadas por figuras
retangulares, colocadas uma após a outra, de cima para baixo.

08/06/2011 15
VANTAGENS E DESVANTAGENS

PSEUDOCÓDIGO:

• Fácil de compreender.
• Fácil de ler e converter para programação.
• Melhor para representar programas maiores.
• É estruturado.

FLUXOGRAMA:

• Fácil de compreender.
• Bom para construir e visualizar pequenos programas.
• Difícil de desenhar quando o programa fica muito grande.
• Não é estruturado.

DIAGRAMA DE CHAPIN:

• Fácil de compreender, ler e converter para a programação.


• É estruturado.
• Bom para visualizar pequenos programas.
• Difícil de desenhar quando o programa fica muito grande.
08/06/2011 16
Português Estruturado

O Português Estruturado, é uma forma especial de linguagem bem mais restrita que a Língua
Portuguesa e com significados bem definidos para todos os termos utilizados nas instruções
(comandos).

Essa linguagem também é conhecida como Portugol (junção de Português com Algol,
Pseudocódigo ou Pseudolinguagem). O Português Estruturado na verdade é uma
simplificação extrema da língua portuguesa, limitada a pouquíssimas palavras e estruturas
que têm significado pré-definido, pois deve-se seguir um padrão. Emprega uma linguagem
intermediária entre a linguagem natural e uma linguagem de programação, para descrever os
algoritmos.

08/06/2011 17
A sintaxe do Português Estruturado não precisa ser seguida tão rigorosamente
quanto a sintaxe de uma linguagem de programação, já que o algoritmo não
será executado como um programa.

Embora o Português Estruturado seja uma linguagem bastante simplificada,


ela possui todos os elementos básicos e uma estrutura semelhante à de uma
linguagem de programação de computadores.

Portanto, resolver problemas com português estruturado pode ser uma tarefa
tão complexa quanto a de escrever um programa em uma linguagem de
programação qualquer só não tão rígida quanto a sua sintaxe, ou seja, o
algoritmo não deixa de funcionar porque esquecemos de colocar um ';' (ponto-
evírgula) por exemplo, já um programa não funcionaria.

08/06/2011 18
Regras para construção do Algoritmo

Para escrever um algoritmo precisamos descrever a seqüência de instruções, de


maneira simples e objetiva. Para isso utilizaremos algumas técnicas:

· Usar somente um verbo por frase


· Imaginar que você está desenvolvendo um algoritmo para pessoas que não
trabalham com informática
· Usar frases curtas e simples
· Ser objetivo
· Procurar usar palavras que não tenham sentido dúbio

08/06/2011 19
Portugol - “Chupar uma bala”.

• Pegar a bala
• Retirar o papel
• Chupar a bala
• Jogar o papel no lixo

08/06/2011 20
FLUXOGRAMA

O que é um Fluxograma?

O fluxograma é uma forma padronizada e eficaz para representar os passos


lógicos de um determinado processamento.
Com o diagrama podemos definir uma seqüência de símbolos, com
significado bem definido, portanto, sua principal função é a de facilitar a
visualização dos passos de um processamento.

08/06/2011 21
Simbologia

Existem diversos símbolos em um diagrama de bloco. No decorrer do curso


apresentaremos os mais utilizados.

Veja no quadro abaixo alguns dos símbolos que iremos utilizar:

08/06/2011 22
08/06/2011 23
Dentro do símbolo sempre terá algo
escrito, pois somente os símbolos não
nos dizem nada.

08/06/2011 24
Algoritmo - Calcular a média final

Receba a nota da prova1


Receba a nota de prova2
Receba a nota de prova3
Receba a nota da prova4
Some todas as notas e divida o resultado por 4
Mostre o resultado da divisão

08/06/2011 25
Lógica de Programação
Charles Emerson Machado – charles.machado@prof.sc.senac.br

11/06/2011 26
Um algoritmo é uma das soluções e não “a solução” de um problema.

Um problema pode ser resolvido por mais de um algoritmo.

As características de um algoritmo são:

• Finitude: um algoritmo deve sempre terminar após um número finito de


passos, ou seja, deve ter fim.
• Definição: cada passo de um algoritmo deve ser precisamente definido,
sem dar margem à dupla interpretação (não ambíguo).
• Entradas: capacidade de receber dados do mundo exterior.
• Saídas: poder gerar informações sobre o resultado para o mundo
exterior.
• Eficácia: os passos de um algoritmo devem conduzir à solução do
problema proposto.

11/06/2011 27
Exercícios:

11/06/2011 28
4) Qual o estranho?

(AOGIBA – BIAXACA – CELANAMI – RENOUCA – JANARAL)

11/06/2011 29
11/06/2011 30
11/06/2011 31
11/06/2011 32
ELEMENTOS USADOS NOS ALGORITMOS
1 CONSTANTES:
1.1 Numérico;
1.2 Data;
1.3 Lógica;
1.4 Caracter (texto, literal, string)
2 VARIÁVEIS:
2.1 Numérico;
2.2 Data;
2.3 Lógica;
2.4 Caracter (texto, literal, string)
3 EXPRESSÕES:
3.1 Operandos;
3.2 Operadores;
4 COMANDO DE ATRIBUIÇÃO:
5 ESTRUTURAS:
5.1 Seqüencial;
5.2 Seleção;
5.2.1 Simples;
5.2.2 Composta;
5.2.3 Múltipla;
5.3 Repetição;
5.3.1 Contador fixo;
5.3.2 Flag;
5.3.2.1 De resposta;
5.3.2.2 Predeterminado;
11/06/2011 33
CONSTANTES

CONSTANTES: são valores utilizados no processamento, mas que não


sofrerão alterações durante o mesmo. Exemplos: nomes, datas de nascimento,
números de funcionários, nomes de cidades, etc.
As constantes podem ser dos seguintes tipos:
NUMÉRICO: Quando começam por um número, um sinal ou um parêntese,
todos os demais caracteres são apenas números, com apenas uma exceção, que
é o separador decimal (dependendo da linguagem, pode ser o ponto ou a vírgula).
Exemplos: 123, 34,75, (567), -512, etc.
DATA: Quando tiver um formato conhecido de data. Os mais comuns são:
dd/mm/aa, dd/mmm/aa, dd/mm/aaaa, dd/mmm/aaaa, dd/mm, dd/mmm, mm/aa,
mmm/aa, mm/aaaa, mmm/aaaa.
LÓGICA: (Booleanas). São os valores que correspondem às quatro letras ou
palavras lógicas correspondentes: T (True), F (False), Y (Yes), N (No).
CARACTER: (Texto, Literal ou String). São reconhecidas pela exclusão, ou
seja, tudo que não for reconhecido como numérico, data ou lógico, é do tipo
caracter.

11/06/2011 34
VARIÁVEIS

VARIÁVEIS: Não são valores. Variáveis são endereços de memória (Ram) que
armazenam temporariamente valores. Esses endereços recebem um rótulo, que é o nome
da variável, e um conteúdo. Cada vez que mencionamos o nome da variável, é manipulado
o seu conteúdo.

Observação: Podemos imaginar uma variável como sendo uma gaveta em um


armário (endereço de memória Ram), onde guardamos alguma coisa (conteúdo), prego, por
exemplo. Para identificar esta gaveta colocamos uma etiqueta (rótulo), com o nome de
prego (nome da variável). Quando queremos pregos temos que abrir a gaveta que tem o
rótulo prego e pegar o seu conteúdo.

Os nomes das variáveis devem sempre começar por uma letra, não devem ter espaços em
branco e nem caracteres especiais, no máximo o símbolo sublinhado. Exemplos: Nome_cli,
Num_func, Datanasc, etc.

As variáveis são declaradas no início do algoritmo. Dependendo do valor a ser


armazenado, as variáveis poderão ser dos tipos: Numérico, Data, Lógico ou Caracter
(texto, literal ou string).

11/06/2011 35
Os valores armazenados nas variáveis permanecem até que:

• O computador seja desligado (normal ou por falta de energia), visto que são armazenados
na memória Ram;
• Por término do programa ou rotina onde foram criadas;
• Seja atribuído um novo valor para a mesma variável.

Observação: Só podemos armazenar um valor de cada vez em uma variável. Ao atribuirmos


um novo valor que deve ser do mesmo tipo, o valor anterior será sumariamente eliminado.

Exemplo: Se escrevermos A=5, o valor cinco será o conteúdo da variável A.


Se mais adiante escrevermos A=20, o valor vinte passa a ser o novo conteúdo da
variável A, e o valor anterior, cinco, será eliminado.

Escopo: (abrangência), as variáveis, dependendo da linguagem, podem ser


Públicas (Public) ou Globais (Global) e Privadas (Private) ou Locais (Locals).

Observação: As variáveis Públicas ou Globais são vistas por todos os módulos do programa,
e as Locais ou Privadas somente nas rotinas onde são criadas.

11/06/2011 36
EXPRESSÕES

Expressão: é qualquer instrução de manipulação de dados.

As expressões podem ser:

ARITMÉTICAS: Nesse tipo de expressão só podemos utilizar operadores,


constantes e variáveis do tipo numérico, e o resultado será sempre um valor
numérico. Exemplo 3+2, A*B.

RELACIONAIS: Nesse tipo de expressão realizamos uma comparação entre


dois ou mais operandos do mesmo tipo, utilizando operadores relacionais e o
resultado será sempre um valor lógico (verdadeiro ou falso). Exemplo: 10>5, A<B.

LÓGICAS: É a união de duas ou mais expressões relacionais utilizando


operadores lógicos, e o resultado também será sempre um valor lógico
(verdadeiro ou falso). Exemplo: A>B E 10>5, Cidade = “Canoas” OU Cidade =
“Porto Alegre”.

11/06/2011 37
OPERANDOS E OPERADORES

OPERANDOS

São os elementos que serão manipulados.

Como operandos podemos utilizar:

CONSTANTES: Exemplo: 15+25, 345/5, 12,35*20;


VARIÁVEIS: Exemplo: A-B, X/Y, HT*SH;
FUNÇÕES DA LINGUAGEM: Exemplo: PI()*Cos(x)+Raiz(256,2)

Observações: Linguagens aplicativas mais específicas como as Planilhas


Eletrônicas e os Gerenciadores de Bancos de Dados podem
utilizar como operandos as referências a células (Exemplo:
A3*B5) ou os campos do Banco de dados (Exemplo:
Horas_Trab*Sal_Hora).

11/06/2011 38
OPERADORES

São símbolos ou palavras que indicam o tipo de manipulação e também determinam de que
tipo é a expressão.

Os operadores se dividem em três grupos:

ARITMÉTICOS:
• Adição: +
• Subtração: -
• Multiplicação: *
• Divisão: /
• Exponenciação: ^

Observação: Os operadores aritméticos mantêm a mesma prioridade matemática, ou seja:


em primeiro lugar são executadas as raízes e exponenciações, logo a seguir, as
multiplicações e divisões, e, por último, as somas e subtrações. Em caso de empate de
prioridades, o cálculo é efetuado sempre da esquerda para a direita. Para alterar a
prioridade dos operadores, usamos parênteses.

11/06/2011 39
RELACIONAIS
• Igualdade: =
• Maior do que: >
• Menor do que: <
• Maior ou igual a: >=
• Menor ou igual a: <=
• Diferente: <>

Observações: Entre os operadores relacionais não existem


prioridades, sempre são executados da esquerda para a direita, à
medida que forem aparecendo.

LÓGICOS (Booleanos)
• NAO
•E
• OU

11/06/2011 40
Observação: Nos operadores lógicos o E tem prioridade sobre o OU.

Os operadores lógicos igualmente chamados de Booleanos utilizam a álgebra de


Boole, ou álgebra Booleana, também denominada Tabela Verdade.
O operador NAO é um inversor de resultados, isto é, se o resultado da
expressão for verdadeiro transforma em falso e vice-versa.

Exemplo: 50>30, resultado verdadeiro. NAO (50>30), resultado falso.

Usando o operador E, o resultado final só será verdadeiro se o resultado de


todas as condições forem verdadeiras, qualquer outra hipótese, o resultado será
falso.

Usando o operador OU, o resultado final só será falso se o resultado de


todas as condições forem falsas; qualquer outra hipótese, o resultado será
verdadeiro.

11/06/2011 41
Veja o exemplo da tabela verdade abaixo:

Comando de atribuição

O comando de atribuição serve para colocar um valor (conteúdo) dentro de


uma variável.

O comando de atribuição, dependendo da linguagem, pode ser:


= ← := Exemplo: A = 15 ou A ←15 ou A := 15
Em qualquer dos casos estamos colocando o valor 15 como conteúdo da
variável A.
Neste curso utilizaremos como comando de atribuição o sinal de =.

11/06/2011 42
ESTRUTURAS DE CONTROLE

As estruturas de controle servem para direcionar o fluxo do processamento.


As estruturas de controle podem ser:

ESTRUTURA SEQÜENCIAL

A estrutura seqüencial, como diz o próprio nome, é uma seqüência de


instruções que se sucedem uma após a outra sem desvios ou interrupções. Este
tipo de estrutura não possui palavras chaves, é composta somente por linhas de
comandos sucessivas e está sempre limitada pelo início e fim do algoritmo ou
pelo inicio e fim de uma outra estrutura.

Exemplo: Ler o nome e duas notas de um aluno, calcular a média e mostrar


o nome do aluno, as duas notas e a média calculada.

11/06/2011 43
VARIAVEIS
NUMERICO N1, N2, M
CARACTER NOME
INICIO
N1 = 0
N2 = 0
M=0
LER NOME
LER N1
LER N2
M = (N1+N2)/2
ESCREVER NOME, N1, N2,M
FIM

ESTRUTURA DE SELEÇÃO
Devemos utilizar uma estrutura de seleção. Sempre que para executar alguma ação
dependa do resultado de uma condição, isto é, no que temos que fazer existe uma
condicionante.
Observação: Conforme o que devemos fazer, de acordo com o resultado da condição, a
estrutura de seleção pode ser de três tipos diferentes: Seleção Simples, Seleção
Composta ou Seleção Múltipla.
08/06/2011 44
ESTRUTURA DE SELEÇÃO SIMPLES

Na estrutura de Seleção Simples, somente teremos uma ação se o


resultado da condição for Verdadeiro, caso o resultado seja falso não
há ação a ser executada.
As palavras chaves de uma estrutura de Seleção Simples são:

08/06/2011 45
Exemplo: Ler o nome e duas notas de um aluno, calcular a média e
mostrar
o nome do aluno, as duas notas, a média calculada e as palavras Aluno
Reprovado, caso a média seja menor do que sete.

VARIAVEIS
NUMERICO N1, N2, M
CARACTER NOME
INICIO
N1 = 0
N2 = 0
M=0
LER NOME
LER N1
LER N2
M = (N1+N2)/2
ESCREVER NOME, N1, N2, M
SE M < 7 ENTAO
ESCREVER “ALUNO REPROVADO”
FIM_SE
FIM

11/06/2011 46
ESTRUTURA DE SELEÇÃO COMPOSTA

Na estrutura de Seleção Composta, será executado um comando ou


um grupo de comandos, caso o resultado da condição seja Verdadeiro e
outro comando ou outro grupo de comandos diferentes, se o resultado
da condição for Falso.

As palavras-chave de uma estrutura de Seleção Composta são:

11/06/2011 47
Observação: Se o resultado da condição for Verdadeiro será executado tudo que estiver
entre as palavras ENTAO e SENAO, sendo ignorado o que tudo que estiver após a palavra
SENAO, porem se o resultado da condição for Falso, será desprezado tudo que estiver entre
as palavras ENTAO e SENAO, sendo executado apenas o que estiver entre as palavras
SENAO e FIM_SE.

Exemplo: Ler o nome e duas notas de um aluno, calcular a média e mostrar o nome do
aluno, as duas notas, a média calculada e as palavras Aluno Reprovado, caso a média seja
menor do que sete e Aluno Aprovado em caso contrário.

11/06/2011 48
VARIAVEIS
NUMERICO N1, N2, M
CARACTER NOME
INICIO
N1 = 0
N2 = 0
M=0
LER NOME
LER N1
LER N2
M = (N1+N2)/2
ESCREVER NOME, N1, N2,M
SE M < 7 ENTAO
ESCREVER “ALUNO REPROVADO”
SENAO
ESCREVER “ALUNO APROVADO”
FIM_SE
FIM

08/06/2011 49
ESTRUTURA DE SELEÇÃO MÚLTIPLA

A Estrutura de Seleção Múltipla é utilizada quando devemos fazer


vários testes em uma mesma variável ou testar o valor de uma variável
dependendo do teste do valor de outra variável.

Observação: A estrutura de Seleção Múltipla pode ser construída com


Estruturas de Seleção Composta encadeadas (aninhadas), ou
pela estrutura Faca Caso.

Utilizando Estruturas de Seleção Composta encadeada, para fazer a


Seleção Múltipla podemos fazer o encadeamento das seguintes
formas:

Encadeamento, somente se o resultado da primeira condição for


verdadeiro.

11/06/2011 50
08/06/2011 51
Encadeamento somente se o resultado da primeira condição for falso.

08/06/2011 52
Um encadeamento se o resultado da primeira condição seja verdadeiro,
e outro encadeamento, caso o resultado da primeira condição seja falso.

11/06/2011 53
SELEÇÃO MÚLTIPLA COM ESTRUTURA DE FACA CASO:

As palavras-chave da estrutura Faca Caso são:

11/06/2011 54
Observação: Para a solução do próximo exemplo, usaremos uma solução com
estrutura de Seleção Composta encadeada e outra solução utilizando a estrutura Faca
Caso.

Exemplo: Ler o estado civil de uma pessoa como valor numérico, sendo que 1
corresponde a Solteiro, 2 a Casado e 3 para Outros. Testar estes valores levando-se em
conta que o usuário pode digitar errado e escrever o estado civil em caracteres.

11/06/2011 55
SOLUÇÃO UTILIZANDO ESTRUTURA DE SELEÇÃO COMPOSTA ENCADEADA:

VARIAVEIS
NUMERICO EC
INICIO
EC = 0
ESCREVER “Digite o estado civil (1 – solteiro, 2 – casado, 3 – outros)”
LER EC
SE EC = 1 ENTAO
ESCREVER “Solteiro”
SENAO
SE EC = 2 ENTAO
ESCREVER “Casado”
SENAO
SE EC = 3 ENTAO
ESCREVER “Outros”
SENAO
ESCREVER “Valor inválido”
FIM_SE
FIM_SE
FIM_SE

08/06/2011 56
SOLUÇÃO UTILIZANDO ESTRUTURA DE FACA CASO:

VARIAVEIS
NUMERICO EC
INICIO
EC = 0
ESCREVER “Digite o estado civil (1 – solteiro, 2 – casado, 3 – outros)”
LER EC
FACA CASO
CASO EC = 1:
ESCREVER “Solteiro”
CASO EC = 2:
ESCREVER “Casado”
CASO EC = 3:
ESCREVER “Outros”
OUTRO_CASO:
ESCREVER “Valor inválido”
FIM_CASO

11/06/2011 57
ESTRUTURA DE REPETIÇÃO

Uma Estrutura de Repetição deve ser usada sempre que uma rotina tenha que
ser executada mais do que uma vez durante o mesmo processamento.
As repetições podem ser feitas por Contador Fixo, ou seja, a rotina vai ser
repetida sempre um número fixo de vezes. Por Flag de Resposta, onde a cada
volta do laço perguntamos ao usuário se ele quer continuar ou não, se a resposta
for sim à rotina, segue repetindo; e se for não, a rotina termina. Ainda podemos
fazer a repetição por Flag Predeterminado, isto é, determinamos que quando o
usuário pressionar um determinado conjunto de teclas ou um determinado valor
para conteúdo de uma variável, a rotina termina.
Para construir a estrutura de repetição, podemos utilizar dois tipos de
estruturas: a estrutura FACA ENQUANTO ou a estrutura PARA PROXIMO,
sendo que a estrutura FACA ENQUANTO serve tanto para repetições por
Contador Fixo como para, repetições por Flag. A estrutura de PARA PROXIMO
só serve para repetições por Contador Fixo.

11/06/2011 58
ESTRUTURA FACA ENQUANTO

As palavras-chave da estrutura FACA ENQUANTO são:

11/06/2011 59
Nesse tipo de construção a rotina só entra na estrutura caso a condição
seja verdadeira, senão a estrutura é ignorada. Entrando na estrutura, o
programa executa tudo que estiver contido entre as palavras Faca
Enquanto e Fim_Enquanto. Quando é encontrada a palavra
Fim_Enquanto, a rotina retorna ao início da estrutura e testa novamente
a condição, enquanto a condição for verdadeira continua repetindo.

Para que possamos entender melhor o funcionamento desta estrutura, vamos


observar os exemplos a seguir:

11/06/2011 60
A seguir outro tipo de construção para repetições com a estrutura PARA
PROXIMO.

08/06/2011 61
ESTRUTURA PARA PROXIMO

As palavras chave da estrutura PARA PROXIMO são:

Neste tipo de construção a rotina sempre entra na estrutura a primeira vez,


visto que no inicio da estrutura temos uma atribuição: VAR = VI (valor inicial),
repete tudo que estiver dentro da estrutura até encontrar a palavra PROXIMO.
Quando encontra a palavra PROXIMO, pega o valor do passo, soma na
variável de controle e faz um teste com o valor final (VF), enquanto o valor da
variável de controle não for maior do que o valor final (VF), continua
repetindo.

11/06/2011 62
Observação: O PASSO é opcional, quando não colocado assume por
padrão o valor 1 (um).

Este tipo de Estrutura é mais utilizado para trabalhar com Vetores e


Matrizes, como veremos na última parte da apostila.

Vamos observar o exemplo a seguir para melhor entender o


funcionamento da estrutura PARA PROXIMO.

08/06/2011 63
EXEMPLO DE REPETIÇÃO POR CONTADOR FIXO

Desafio: Ler o nome do aluno e duas notas para uma turma de 15 alunos,
calcular a média e mostrar o nome as duas notas e a média de cada aluno.
SOLUÇÃO UTILIZANDO A ESTRUTURA FACA ENQUANTO

VARIAVEIS
NUMERICO N1, N2, M, C
CARACTER NOME
INICIO
N1 = 0
N2 = 0
M=0
C=0
ESCREVER “DIGITE O NOME, N1, N2”
FACA ENQUANTO C < 15
LER NOME
LER N1
LER N2
M = (N1+N2)/2
ESCREVER NOME, N1, N2, M.
C=C+1
FIM_ENQUANTO
FIM

11/06/2011 64
SOLUÇÃO UTILIZANDO A ESTRUTURA PARA PROXIMO

VARIAVEIS
NUMERICO N1, N2, M, C
CARACTER NOME
INICIO
N1 = 0
N2 = 0
M=0
C=0
ESCREVER “DIGITE O NOME, N1, N2”
PARA C = 1 ATE 15
LER NOME
LER N1
LER N2
M = (N1+N2)/2
ESCREVER NOME, N1, N2,M
PROXIMO
FIM

11/06/2011 65
EXEMPLO DE REPETIÇÃO POR FLAG DE RESPOSTA

Desafio: Ler o nome e duas notas para os diversos alunos, calcular a


média e mostrar o nome, as duas notas e a média de cada aluno. Após
processar cada aluno, perguntar ao usuário se deseja continuar.
Enquanto o usuário responder sim (S), o programa continua; se a
resposta for não (N), o programa termina.

Observação: Para repetições usando como controle o Flag, só


poderemos utilizar a estrutura
FACA ENQUANTO.

11/06/2011 66
Solução:

VARIAVEIS
NUMERICO N1, N2, M
CARACTER NOME, CF
INICIO
N1 = 0
N2 = 0
M=0
CF = “S”
ESCREVER “DIGITE O NOME, N1, N2”
FACA ENQUANTO CF = “S”
LER NOME
LER N1
LER N2
M = (N1+N2)/2
ESCREVER NOME, N1, N2,M
ESCREVER “DESEJA CONTINUAR (S/N)?”
LER CF
FIM_ENQUANTO
FIM

08/06/2011 67
EXEMPLO DE REPETIÇÃO POR FLAG PREDETERMINADO

Problema: Ler o nome e duas notas para uma turma de alunos,


calcular a média e mostrar o nome, as duas notas e a média de cada
aluno. O programa irá terminar quando o usuário digitar a palavra “FIM”,
como conteúdo da variável Nome, em vez de um nome válido.

Observação: Predeterminamos que quando o usuário digitar a palavra


FIM no lugar do nome de um aluno, o programa irá terminar.

11/06/2011 68
Solução:

VARIAVEIS
NUMERICO N1, N2, M
CARACTER NOME
INICIO
N1 = 0
N2 = 0
M=0
ESCREVER “DIGITE O NOME (FIM PARA
SAIR), N1, N2”
NOME = “ “
FACA ENQUANTO NOME <> “FIM”
LER NOME
SE NOME <> “FIM”
LER N1
LER N2
M = (N1+N2)/2
ESCREVER NOME, N1, N2,M
FIM_SE
FIM_ENQUANTO
FIM
08/06/2011 69
Até aqui analisamos quais são as palavras-chave e como se representam os
algoritmos em Pseudocódigo. Veremos a seguir como fazer a representação
das estruturas de controle através de Fluxograma e Diagrama de Chapin.

08/06/2011 70
11/06/2011 71
11/06/2011 72
11/06/2011 73
11/06/2011 74
11/06/2011 75
Lógica de Programação
Charles Emerson Machado – charles.machado@prof.sc.senac.br

11/06/2011 76
FLUXOGRAMA

É uma representação gráfica de algoritmos onde formas geométricas


diferentes implicam ações (instruções, comandos) distintos. Tal propriedade
facilita o entendimento das idéias contidas nos algoritmos.

Nota-se que os fluxogramas convencionais preocupam-se com detalhes


de nível físico da implementação do algoritmo. Por exemplo, figuras
geométricas diferentes são adotadas para representar operações de
saída de dados realizadas em dispositivos distintos, como uma unidade
de armazenamento de dados ou um monitor de vídeo. A figura 2.1 mostra
as principais formas geométricas usadas em fluxogramas.

11/06/2011 77
De modo geral, o fluxograma se resume a um único símbolo inicial, por
onde a execução do algoritmo começa, e um ou mais símbolos finais,
que são pontos onde a execução do algoritmo se encerra. Partindo do
símbolo inicial, há sempre um único caminho orientado a ser seguido,
representando a existência de uma única seqüência de execução das
instruções. Isto pode ser melhor visualizado pelo fato de que, apesar de
vários caminhos poderem convergir para uma mesma figura do
diagrama, há sempre um único caminho saindo desta. Exceções a esta
regra são os símbolos finais, dos quais não há nenhum fluxo saindo, e
os símbolos de decisão, de onde pode haver mais de um caminho de
saída (normalmente dois caminhos), representando uma bifurcação no
fluxo.

11/06/2011 78
Um diagrama de blocos é uma forma de fluxograma usada e desenvolvida
por profissionais da programação, tendo como objetivo descrever o método
e a seqüência do processo dos planos num computador. Pode ser
desenvolvido em qualquer nível de detalhe que seja necessário. Quando se
desenvolve um diagrama para o programa principal, por exemplo, seu nível
de detalhamento pode chegar até as instruções. Esta ferramenta usa
diversos símbolos geométricos, os quais, estabelecerão as seqüências de
operações a serem efetuadas em um processamento computacional. Após a
elaboração do diagrama de bloco, é realizada a codificação do programa. A
figura 2.1 mostra o exemplo de um diagrama de blocos ou fluxogramas.

11/06/2011 79
11/06/2011 80
11/06/2011 81
A figura 2.2 a seguir mostra a representação do algoritmo de cálculo da média
de um aluno sob a forma de um fluxograma.

11/06/2011 82
11/06/2011 83
Pseudocódigo

Esta forma de representação de algoritmos, também conhecida como


português estruturado ou portugol, é bastante rica em detalhes e, por
assemelhar-se bastante à forma em que os programas são escritos,
encontra muita aceitação, sendo portanto a forma de representação de
algoritmos que será adotada nesta disciplina.

Na verdade, esta representação é suficientemente geral para permitir que a


tradução de um algoritmo nela representado para uma linguagem de
programação específica seja praticamente direta.

11/06/2011 84
Representação de Um Algoritmo na Forma de Pseudocódigo

A representação de um algoritmo na forma de pseudocódigo é a seguinte:

Algoritmo <nome_do_algoritmo>

<declaração_de_variáveis>

<subalgoritmos>

Início

<corpo_do_algoritmo>

Fim.

11/06/2011 85
onde:
Algoritmo é uma palavra que indica o início da definição de um algoritmo
em forma de pseudocódigo.

<nome_do_algoritmo> é um nome simbólico dado ao algoritmo com a


finalidade de distinguí-lo dos demais.

<declaração_de_variáveis> consiste em uma porção opcional onde


são declaradas as variáveis globais usadas no algoritmo principal e,
eventualmente, nos subalgoritmos.

<subalgoritmos> consiste de uma porção opcional do pseudocódigo


onde são definidos os subalgoritmos.

Início e Fim são respectivamente as palavras que delimitam o início e o


término do conjunto de instruções do corpo do algoritmo.

11/06/2011 86
Como exemplo, a seguir é mostrado a representação do algoritmo de cálculo
da média de um aluno na forma de um pseudocódigo.

11/06/2011 87
Algoritmo Média

Var N1, N2, Média

Início

Leia N1, N2

Média := (N1+N2)/2

Se Então

Média >= 7 Escreva “Aprovado”

Senão

Escreva “Reprovado”

Fim.

11/06/2011 88
1-Faça um algoritmo que receba dois números e ao final mostre a soma,
subtração, multiplicação e a divisão dos números lidos.

2-Faça um algoritmo que receba dois números e exiba o resultado da sua soma.

3- Escrever um algoritmo para determinar o consumo médio de um automóvel


sendo fornecida a distância total percorrida pelo automóvel e o total de
combustível gasto.

4- Escrever um algoritmo que leia o nome de um vendedor, o seu salário fixo e o


total de vendas efetuadas por ele no mês (em dinheiro).
Sabendo que este vendedor ganha 15% de comissão sobre suas vendas
efetuadas, informar o seu nome, o salário fixo e salário no final do mês

11/06/2011 89
Lógica de Programação
Charles Emerson Machado – charles.machado@prof.sc.senac.br

11/06/2011 90
O que é um algoritmo?

É um conjunto determinístico de instruções que cumprem alguma tarefa, na


qual partindo de um estado inicial chegam a um determinado estado final.

11/06/2011 91
Histórico

O nome algoritmo vem do nome do


matemático persa Abu Abdullah Muhammad
bin Musa al-Khwarizmi (780 – 850).

Entre outras coisas ele desenvolveu uma


solução sistemática para funções lineares e
quadráticas.

A palavra 'algarismo' também é derivada de


seu nome, devido a seu trabalho relacionado
a notação posicional do sistema de
numeração decimal.

11/06/2011 92
Histórico

No século XVIII na Europa, a tradução do nome de alKhwarizmi deu origem à


palavra algoritmo.

O primeiro caso de um algoritmo escrito para um computador foi um programa


de Ada Byron para a máquina analítica de Charles Babbage.

No século XX, as pesquisas de Alan Turing e Alonzo Church formalizaram o


que é um algoritmo. A partir disto foi possível definir quais tipo de problemas
um algoritmo pode resolver.

11/06/2011 93
Estruturas de Controle

Algoritmos são formas de codificar procedimentos estereotipados.

Para descrever procedimentos estes têm de ser codificados de uma forma


legível e organizada.

Para organização de descrições de algoritmos usamos 3 estruturas de


controle:
O bloco ou seqüência de comandos: descreve uma seqüência de ações
que devem ser executadas uma após a outra.

A estrutura condicional: usada para descrever uma situação onde temos


de decidir entre duas formas de agir em função de uma situação que
poderá ocorrer.

A estrutura de repetição: usada para descrever uma situação onde temos


de repetir um determinado número de vezes alguma ação até que uma
situação seja atingida.

Originadas do Teorema da Programação Estruturada.


11/06/2011 94
Teorema da Programação Estruturada

O teorema da programação estruturada ( Corrado Böhm and Giuseppe Jacopini,


1966) é resultado da teoria das linguagens de programação. Ela define que cada
rotina computável pode ser implementada em uma linguagem que combine os
sub-programas em apenas três maneiras específicas:

1. Executar um subprograma, depois outro sub-programa (seqüência)


2. Executar um ou dois subprogramas de acordo com o valor de uma
variável booleana (condição)
3. Executar um subprograma até que uma variável boolean seja
verdadeira (iteração)

11/06/2011 95
Função : Ler dois valores para as variáveis A e B, e efetuar as trocas dos
valores de forma que a variável A passe a possuir o valor da variável B e a
variável B passe a possuir o valor da variável A.
Apresentar os valores trocados.

algoritmo “troca_valor"

<nome_do_algoritmo> é um nome simbólico dado ao


algoritmo com a finalidade de distinguí-lo dos demais.

11/06/2011 96
<declaração_de_variáveis> consiste
em uma porção opcional onde são
declaradas as variáveis globais usadas
Var no algoritmo principal e, eventualmente,
nos subalgoritmos.

a, b, troca: inteiro

Variáveis

Variável é a representação simbólica dos elementos de um certo conjunto.


Cada variável corresponde a uma posição de memória, cujo conteúdo pode
se alterado ao longo do tempo durante a execução de um programa. Embora
uma variável possa assumir diferentes valores, ela só pode armazenar um
valor a cada instante

11/06/2011 97
11/06/2011 98
Tipos de Variáveis
As variáveis e as constantes podem ser basicamente de quatro tipos:

Numéricas;
Caracteres;
Alfanuméricas;
lógicas.

Numéricas

Específicas para armazenamento de números, que posteriormente poderão ser


utilizados para cálculos. Podem ser ainda classificadas como Inteiras ou Reais.
As variáveis do tipo inteiro são para armazenamento de números inteiros e as
Reais são para o armazenamento de números que possuam casas decimais.

Caracteres

Específicas para armazenamento de conjunto de caracteres que não


contenham números (literais). Ex: nomes.
11/06/2011 99
Alfanuméricas

Específicas para dados que contenham letras e/ou números. Pode em


determinados momentos conter somente dados numéricos ou somente literais.
Se usado somente para armazenamento de números, não poderá ser utilizada
para operações matemáticas.

Lógicas
Armazenam somente dados lógicos que podem ser Verdadeiro ou Falso.

Declaração de Variáveis

As variáveis só podem armazenar valores de um mesmo tipo, de maneira que


também são classificadas como sendo numéricas, lógicas e literais.

11/06/2011 100
11/06/2011 101
inicio
// Seção de Comandos
escreva("Digite o valor(numérico) da variável A: ")
leia(a) – Armazenando o conteúdo da variável
escreva("Digite o valor(numérico) da variável B: ")
leia(b) – Armazenando o conteúdo da variável

Troca = A
A =B Processo sendo executado.
B =troca

limpatela
escreval("===========================")
escreval("O novo valor de A é: ",a) Saída em
escreval("O novo valor de B é: ",b) TELA ou
escreval("===========================") IMPRESSORA

fim

11/06/2011 102
ÍNICIO

Digite o valor(numérico) da variável A


leia(A)

Digite o valor(numérico) da variável B


leia(B)

troca <- a
a <- b
b <- troca

“O novo valor de A é:”,a


“O novo valor de B é:” ,b

FIM

11/06/2011 103
Constantes

Constante é um determinado valor fixo que não se modifica ao longo do


tempo, durante a execução de um programa. Conforme o seu tipo, a
constante é classificada como sendo numérica, lógica e literal.

11/06/2011 104
1

11/06/2011 105
2

11/06/2011 106
3

11/06/2011 107
4

11/06/2011 108
11/06/2011 109
Lógica de Programação
Charles Emerson Machado – charles.machado@prof.sc.senac.br

11/06/2011 110
VETORES E MATRIZES

O QUE SÃO VETORES E MATRIZES

Vetores e Matrizes, que nas linguagens de programação são chamados de


Array, são variáveis indexadas, isto e, em uma mesma variável podemos
armazenar diversos valores, e esses valores são identificados pelo nome da
variável e por um número ou mais números, dependendo de quantas dimensões
tem a matriz. Esse número ou esses números são os índices da matriz, pois
indicam a posição do valor (elemento) dentro da Matriz ou do Vetor.
Vamos fazer uma analogia para entendermos melhor esse conceito. Como
vimos anteriormente, uma variável normal é um endereço de memória onde
podemos guardar um valor de cada vez. Como se fosse uma gaveta onde
podemos guardar apenas um objeto; se quisermos colocar outro objeto, temos
que retirar o anterior.

08/06/2011 111
VETORES E MATRIZES

Agora vamos supor que nessa gaveta fizemos cinco divisões, então podemos
guardar cinco objetos na mesma gaveta, isso é o que podemos comparar como
sendo um Vetor.
A Matriz pode-se comparar como sendo um armário com, por exemplo,
três gavetas. Neste caso eu posso guardar três objetos, um em cada gaveta,
porém, se em cada gaveta são feitas três divisões, podemos nesse armário
guardar não apenas três objetos, mas, sim, nove objetos.

08/06/2011 112
EXEMPLO DE VETOR
Matriz numérico V[5]

08/06/2011 113
Para referenciar o valor 18, temos que indicar V[3], isto é, o valor 18 é o
terceiro elemento do Vetor V, ou que o valor 18 encontra-se na terceira
posição do vetor.

EXEMPLO DE MATRIZ

Matriz numérico M[3,3]

08/06/2011 114
Para referenciar o valor 76, temos que indicar M[2,3], isto é, o elemento da
matriz que armazena o valor 76 está na linha 2, coluna 3.
A indicação do índice ou índices é feita sempre entre colchetes “[ ]”, ou em
algumas outras linguagens ente parênteses “( )”.
Como o Vetor é uma matriz que possui dimensão única, temos apenas um
índice, que indica a posição que o elemento ocupa dentro do Vetor. Por
exemplo:

V[3]. O número 3 entre os colchetes indica da Posição do Elemento (local


onde o valor está armazenado).

08/06/2011 115
ALGORITMOS PARA MANIPULAR VETORES E MATRIZES

Para construir algoritmos que manipulam Vetores e Matrizes, utilizamos a


estrutura Para - Proximo, que é a mais adequada para esse tipo de
construção.
Algumas linguagens admitem o comando de leitura direta para armazenar um
valor em um elemento do Vetor ou da Matriz; outras só aceitam o
armazenamento por atribuição. Para ser genérico nos exemplos, usaremos a
atribuição que todas as linguagens suportam.

Exemplo de Vetor: Algoritmo para ler e escrever um Vetor de nome V com


cinco posições (elementos).

08/06/2011 116
08/06/2011 117
Exemplo de Matriz: Algoritmo para ler e escrever uma Matriz de
nome M com nove posições (elementos), com três linhas e três colunas.

08/06/2011 118
Podemos dentro da estrutura Para – Proximo, trabalhando com Vetores e
Matrizes, fazer os mesmos tipos de processamentos que fazemos dentro
da estrutura Faca – Enquanto, com a vantagem de que os valores
permanecem armazenados na Memória, até que o processamento termine.

08/06/2011 119
Classificar em ordem crescente um vetor A com dez elementos (dez
posições)

08/06/2011 120
ESTRUTURAS DE DADOS HOMOGÊNEAS

As estruturas de dados homogêneas permitem agrupar diversas informações


dentro de uma mesma variável. Este agrupamento ocorrerá obedecendo
sempre ao mesmo tipo de dado, e é por esta razão que estas estruturas são
chamadas homogêneas.

A utilização deste tipo de estrutura de dados recebe diversos nomes, como:


variáveis indexadas, variáveis compostas, variáveis subscritas, arranjos,
vetores, matrizes, tabelas em memória ou arrays. Os nomes mais usados e
que utilizaremos para estruturas homogêneas são: matrizes (genérico) e
vetores (matriz de uma linha e várias colunas).

08/06/2011 121
Matrizes de Uma Dimensão ou Vetores

Este tipo de estrutura em particular é também denominado por profissionais da


área como matrizes unidimensionais. Sua utilização mais comum está
vinculada à criação de tabelas. Caracteriza-se por ser definida uma única
variável vinculada dimensionada com um determinado tamanho. A dimensão de
uma matriz é constituída por constantes inteiras e positivas. Os nomes dados
às matrizes seguem as mesmas regras de nomes utilizados para indicar as
variáveis simples.

A sintaxe do comando de definição de vetores é a seguinte:

Var <nome_da_variável> : MATRIZ [ <coluna_inicial> .. <coluna_final> ] DE


<tipo_de_dado>

Ex.: VAR M :MATRIZ [1 .. 10] DE INTEIRO

08/06/2011 122
Operações Básicas com Matrizes do Tipo Vetor

Do mesmo modo que acontece com variáveis simples, também é possível operar
com variáveis indexadas (matrizes). Contudo não é possível operar diretamente
com o conjunto completo, mas com cada um de seus componentes isoladamente.
O acesso individual a cada componente de um vetor é realizado pela especificação
de sua posição na mesma por meio do seu índice.

No exemplo anterior foi definida uma variável M capaz de armazenar 10 número


inteiros. Para acessar um elemento deste vetor deve-se fornecer o nome do
mesmo e o índice do componente desejado do vetor (um número de 1 a 10,
neste caso).

08/06/2011 123
Por exemplo, M[1] indica o primeiro elemento do vetor, M[2] indica o
segundo elemento do vetor e M[10] indica o último elemento do vetor.

Portanto, não é possível operar diretamente sobre vetores como um todo, mas
apenas sobre seus componentes, um por vez. Por exemplo, para somar dois
vetores é necessário somar cada um de seus componentes dois a dois. Da
mesma forma as operações de atribuição, leitura e escrita de vetores devem ser
feitas elemento a elemento.

08/06/2011 124
Atribuição de Uma Matriz do Tipo Vetor

No capítulo sobre as instruções primitivas, o comando de atribuição foi definido


como:

<nome_da_variável> := <expressão>

No caso de vetores (variáveis indexadas), além do nome da variável deve-se


necessariamente fornecer também o índice do componente do vetor onde será
armazenado o resultado da avaliação da expressão.

Ex.: M[1] := 15 M[2] := 150 M[5] := 10 M[10] := 35

08/06/2011 125
Leitura de Dados de Uma Matriz do Tipo Vetor

A leitura de um vetor é feita passo a passo, um de seus componentes por vez,


usando a mesma sintaxe da instrução primitiva da entrada de dados, onde
além do nome da variável, deve ser explicitada a posição do componente lido:

LEIA <nome_da_variável> [ <índice> ]

08/06/2011 126
Uma observação importante a ser feita é a utilização da construção Para a fim
de efetuar a operação de leitura repetidas vezes, em cada uma delas lendo um
determinado componente do vetor. De fato esta construção é muito comum
quando se opera com vetores, devido à necessidade de se realizar uma mesma
operação com os diversos componentes dos mesmos. Na verdade, são raras as
situações que se deseja operar isoladamente com um único componente do
vetor.
O algoritmo a seguir exemplifica a operação de leitura de um vetor:
Algoritmo exemplo_leitura_de_vetor
Var
numeros : matriz[1..10] de inteiro
i : inteiro
Início
Para i de 1 até 10 faça
Início
Leia numeros[i]
Fim
Fim.

08/06/2011 127
Escrita de Dados de Uma Matriz do Tipo Vetor

A escrita de um vetor obedece à mesma sintaxe da instrução primitiva de saída


de dados e também vale lembrar que, além do nome do vetor, deve-se também
especificar por meio do índice o componente a ser escrito:

ESCREVA <nome_da_variável> [ <índice> ]

08/06/2011 128
O algoritmo a seguir exemplifica a operação de leitura e escrita de um vetor,
utilizando a construção Para:

Algoritmo exemplo_escrita_de_vetor
Var
numeros : matriz[1..10] de inteiro
i : inteiro
Início
Para i de 1 até 10 faça
Início
Leia numeros[i]
Fim
Para i de 1 até 10 faça
Início
Escreva numeros[i]
Fim
Fim.

08/06/2011 129
Um exemplo mais interessante é mostrado a seguir, onde um vetor de
dez números é lido e guardado no vetor numeros. Paralelamente, a
soma destes números é calculada e mantida na variável soma, que
posteriormente é escrita.
Algoritmo exemplo_escrita_de_vetor_com_soma
Var
numeros : matriz[1..10] de inteiro
i : inteiro
soma : inteiro
Início
soma := 0
Para i de 1 até 10 faça
Início
Leia numeros[i]
soma := soma + numeros[i]
Fim
Para ide 1 até 10 faça
Início
Escreva numeros[i]
Fim
Escrever “Soma = ”, soma
08/06/2011Fim. 130
Exemplos de Aplicação de Vetores

O espectro de aplicação de vetores em algoritmos é muito extenso, mas


normalmente os vetores são usados em duas tarefas muito importantes no
processamento de dados: pesquisa e classificação.
A pesquisa consiste na verificação da existência de um valor dentro de um vetor.
Trocando em miúdos, pesquisar um vetor consiste em procurar dentre seus
componentes um determinado valor.

A classificação de um vetor consiste em arranjar seus componentes numa


determinada ordem, segundo um critério específico. Por exemplo, este critério
pode ser a ordem alfabética de um vetor de dados caracter, ou então a ordem
crescente ou decrescente para um vetor de dados numéricos. Há vários
métodos de classificação, mas o mais conhecido é o método da bolha de
classificação (Bubble Sort).

08/06/2011 131
Lógica de Programação

REVISÃO
Charles Emerson Machado – charles.machado@prof.sc.senac.br

11/06/2011 132
Segundo o dicionário Aurélio, a lógica é a “coerência de raciocínio, de
idéias”, ou ainda a “seqüência coerente, regular e necessária de
acontecimentos, de coisas”.

11/06/2011 133
PROGRAMAÇÃO ESTRUTURADA

Na programação estruturada a arquitetura e do tipo Top to Down. Isto é, de


cima para baixo. Efetua a execução do Código do início até o fim.
Na programação modular o programa é feito por módulos (rotinas), sendo
que o conjunto desses formam o programa num todo.

Este tipo de programação é que vai formar o Código a ser escrito para cada
Evento verificado.
Os conhecimentos de Programação Estruturada e Modular, que será o objeto
deste curso servem para elaborarmos os algoritmos e escrevermos os códigos
nos procedimentos e funções a serem implementados, e executados quando for
disparado um evento na Programação Orientada ao Objeto/Evento.

11/06/2011 134
ETAPAS PARA A SOLUÇÃO DE PROBLEMAS.

1 Planejamento Geral (O Que deve ser feito).


2 Planejamento Detalhado (Como deve ser feito?)
3 Revisão (Teste de mesa). Verificar se Como decidimos fazer, tem
como resultado o Que deve ser feito.
4 Codificação.
5 Compilação ou Interpretação.
6 Teste do Programa.
7 Documentação.

11/06/2011 135
Ao elaborar um programa, devemos em primeiro lugar deixar bem claro, o
Que precisa ser feito e, logo após, definirmos as maneiras possíveis de se chegar
ao resultado desejado (Como?).

Não existe uma única solução para um problema, dentre as soluções


encontradas devemos escolher a que mais satisfaça ao conceito E. R. E. S., ou
seja:

11/06/2011 136
E – Eficácia, o programa deve fazer o que deve ser feito. Não confundir
com eficiência que significa fazer bem feito. Um programa pode ser bem feito, mas
não oferecer a solução para o problema proposto.
R – Rapidez, dentre as várias soluções encontradas para o mesmo problema,
devemos escolher a que seja mais rápida em termos de execução.
E – Economia. Também devemos escolher a solução mais econômica em
termos de utilização de memória principal e memória de armazenamento.
S – Segurança. O programa deve prever e tratar possíveis erros do usuário.
Exemplo: se pedirmos para digitar o Sexo (M/F), o programa não deve deixar que
o usuário digite qualquer outra letra que não sejam o M ou o F.

Para elaborar a solução de um problema usamos os Algoritmos.

11/06/2011 137
Método para construir um algoritmo

Utilizando os conceitos já desenvolvidos, esquematizaremos um método para


construir um algoritmo logicamente correto:

08/06/2011 138
1. Ler atentamente o enunciado
Deve-se reler o enunciado de um exercício quantas vezes for necessário, até
compreendê-lo completamente.
A maior parte da resolução de um exercício consiste na compreensão completa
do enunciado.

2. Retirar a relação das entradas de dados do enunciado


Através do enunciado, descobrimos quais são os dados que devem ser
fornecidos ao programa, via teclado, a partir dos quais são desenvolvidos os
cálculos. Obs. Pode haver algum algoritmo que não necessite da entrada de
dados (pouco comum).

08/06/2011 139
3. Retirar do enunciado, a relação das saídas das informações
Através do enunciado podemos descobrir quais são as informações que devem
ser mostradas para compor o resultado final, objetivo do algoritmo.

4. Determinar o que deve ser feito para transformar as entradas nas saídas
especificadas
Nessa fase é que teremos a construção do Algoritmo propriamente dito. Devemos
determinar qual sequência de passos ou ações é capaz de transformar um
conjunto de dados nas informações de resultado. Para isso, utilizamos os fatores
descritos anteriormente, tais como legibilidade, portabilidade, método cartesiano e
planejamento reverso, e finalmente podemos construir o algoritmo.

08/06/2011 140
VANTAGENS E DESVANTAGENS
PSEUDOCÓDIGO:

• Fácil de compreender.
• Fácil de ler e converter para programação.
• Melhor para representar programas maiores.
• É estruturado.

11/06/2011 141
FLUXOGRAMA:

• Fácil de compreender.
• Bom para construir e visualizar pequenos programas.
• Difícil de desenhar quando o programa fica muito grande.
• Não é estruturado.

DIAGRAMA DE CHAPIN:

• Fácil de compreender, ler e converter para a programação.


• É estruturado.
• Bom para visualizar pequenos programas.
• Difícil de desenhar quando o programa fica muito grande.

11/06/2011 142
ALGORITMO NATURAL COMPARADO COM ALGORITMO ESTRUTURADO

Desafio: ler dez valores numéricos, mostrar os valores lidos e no final


mostrar a soma dos números digitados.

11/06/2011 143
11/06/2011 144
Na construção de algoritmos, utilizamos diversos elementos. Entre eles
podemos citar valores informados ao programa (pelo teclado ou lidos de um
disco), comandos para armazenar valores, expressões, estruturas, e etc.

11/06/2011 145
O uso de Variáveis:

Tem-se como definição de variável tudo aquilo que é sujeito a variações. Variáveis
são espaços de memória que são alocados para armazenar informações. Por que
precisa-se de variáveis?

R: Para armazenar valores que serão utilizados posteriormente. Ex.: em um cálculo


complexo, resultados intermediários podem ser armazenados e posteriormente
processados para se obter o resultado final.

Imagine que a memória de um computador é um grande armário com diversas


gavetas, onde cada gaveta pode conter somente um valor (numérico, caractere ou
lógico). Deve-se concordar que é necessário identificar cada gaveta para sua
utilização posterior, através de um nome.

08/06/2011 146
Nomenclatura e declaração das variáveis:

O nome de uma variável faz referência ao endereço de memória onde essa


variável se encontra. Existem algumas regras para a utilização das variáveis:

• Nome de variável pode ter 1 ou mais caracteres


• O primeiro caractere de uma variável sempre deve ser uma letra
• Nenhuma variável pode ter espaço em branco em seu nome
• Nenhum nome de variável pode ser uma palavra reservada a uma instrução da
linguagem usada
• Poderão ser utilizados somente letras, números e sublinhado (embora algumas
linguagens aceitem o
cedilha e acentuação).
• Procure sempre utilizar variáveis que tenham sentido (Mnemônicos). Ex:
alt_homens ao invés de x.

08/06/2011 147
A declaração de uma variável também depende da linguagem. A variável X será
declarada do tipo inteiro e a
variável Y do tipo real. Observe a definição em cada linguagem:

08/06/2011 148
Atribuição de variáveis:

O comando de atribuição (=, := ou ¬) permite fornecer um valor a uma certa


variável, onde o tipo de informação deve ser compatível com o tipo de variável
utilizada, ou seja, somente poderemos atribuir “Pedro” a uma variável do tipo
caractere.

Exemplos:

A <- “mesa”
b := 2 + 5 - XB
c = -5.4 - b

08/06/2011 149
Quando uma variável é declarada (criada) qual o seu valor inicial?

R: Não se pode saber o valor inicial de uma variável, pois na memória existem
várias informações armazenadas, muitas delas estão sendo utilizadas pelo
computador, mas podem existir espaços em que foram armazenadas
informações anteriormente mas que não estão mais em uso. Esses espaços,
mesmo com informação estão disponíveis para novas variáveis. Uma variável
pode ser criada em um desses espaços, e seu valor será um "lixo" qualquer da
memória. Mas uma variável pode ser criada em um espaço vazio da memória,
nesse caso seu valor será nulo. Para resolver esse problema do valor inicial da
variável, algumas linguagens inicializam suas variáveis com 0 (zero) ou nulo.

08/06/2011 150
CONSTANTES
CONSTANTES: são valores utilizados no processamento, mas que não
sofrerão alterações durante o mesmo. Exemplos: nomes, datas de nascimento,
números de funcionários, nomes de cidades, etc.
As constantes podem ser dos seguintes tipos:
NUMÉRICO: Quando começam por um número, um sinal ou um parêntese,
todos os demais caracteres são apenas números, com apenas uma exceção, que
é o separador decimal (dependendo da linguagem, pode ser o ponto ou a vírgula).
Exemplos: 123, 34,75, (567), -512, etc.
DATA: Quando tiver um formato conhecido de data. Os mais comuns são:
dd/mm/aa, dd/mmm/aa, dd/mm/aaaa, dd/mmm/aaaa, dd/mm, dd/mmm, mm/aa,
mmm/aa, mm/aaaa, mmm/aaaa.
LÓGICA: (Booleanas). São os valores que correspondem às quatro letras ou
palavras lógicas correspondentes: T (True), F (False), Y (Yes), N (No).
CARACTER: (Texto, Literal ou String). São reconhecidas pela exclusão, ou
seja, tudo que não for reconhecido como numérico, data ou lógico, é do tipo
caracter.

11/06/2011 151
EXPRESSÕES
Expressão: é qualquer instrução de manipulação de dados.
As expressões podem ser:
ARITMÉTICAS: Nesse tipo de expressão só podemos utilizar operadores,
constantes e variáveis do tipo numérico, e o resultado será sempre um valor
numérico. Exemplo 3+2, A*B.
RELACIONAIS: Nesse tipo de expressão realizamos uma comparação entre
dois ou mais operandos do mesmo tipo, utilizando operadores relacionais e o
resultado será sempre um valor lógico (verdadeiro ou falso). Exemplo: 10>5, A<B.
LÓGICAS: É a união de duas ou mais expressões relacionais utilizando
operadores lógicos, e o resultado também será sempre um valor lógico
(verdadeiro ou falso). Exemplo: A>B E 10>5, Cidade = “Canoas” OU Cidade =
“Porto Alegre”.

11/06/2011 152
RELACIONAIS

• Igualdade: =
• Maior do que: >
• Menor do que: <
• Maior ou igual a: >=
• Menor ou igual a: <=
• Diferente: <>

Observações: Entre os operadores relacionais não existem prioridades,


sempre são executados da esquerda para a direita, à medida que forem
aparecendo.

11/06/2011 153
LÓGICOS (Booleanos)

• NAO
•E
• OU

Observação: Nos operadores lógicos o E tem prioridade sobre o OU.

Os operadores lógicos igualmente chamados de Booleanos utilizam a álgebra


de Boole, ou álgebra Booleana, também denominada Tabela Verdade.

11/06/2011 154
O operador NAO é um inversor de resultados, isto é, se o resultado da
expressão for verdadeiro transforma em falso e vice-versa.

Exemplo: 50>30, resultado verdadeiro. NAO (50>30), resultado falso.

Usando o operador E, o resultado final só será verdadeiro se o resultado de


todas as condições forem verdadeiras, qualquer outra hipótese, o resultado será
falso.

Usando o operador OU, o resultado final só será falso se o resultado de


todas as condições forem falsas; qualquer outra hipótese, o resultado será
verdadeiro.

11/06/2011 155
Operadores Lógicos
Pode ser que se necessite, em um determinado momento, trabalhar com o
relacionamento de duas ou mais condições, ao mesmo tempo na mesma
instrução se, efetuando assim testes múltiplos. Nesses casos se torna
necessário trabalhar com operadores lógicos ou boleanos. Os operadores
lógicos são três: e, ou, não .

08/06/2011 156
Operador Lógico: e

Também chamado de conjunção. Nesse caso, todas as expressões condicionais


componentes de uma conjunção devem ser verdadeiras para que a expressão
resultante tenha valor .verdadeiro. Abaixo é apresentada a tabela de decisão
para o operador e:

08/06/2011 157
Operador Lógico: ou

Também chamado de disjunção. Nesse caso quando qualquer uma das


expressões componentes da disjunção for verdadeira, a expressão resultante
terá valor .verdadeiro. Abaixo é apresentada a tabela de decisão para o operador
ou:

08/06/2011 158
Operador Lógico: não

Também chamado de negação. Nesse caso, a negação apenas inverte o valor


verdade da expressão. Se x for falso, não x é verdade. Abaixo é apresentada
a tabela de decisão para o operador não

08/06/2011 159
Instruções básicas ou Comandos básicos

As instruções ou comandos básicos são o conjunto de palavras-chave de uma


determinada linguagem de programação. Variam de linguagem para linguagem
mas possuem o mesmo significado, assim como as palavras na língua falada
(português, inglês, etc.). Esses comandos, colocadas de forma estratégica,
formarão os blocos de programas e, como são palavras reservadas, não devem
ser utilizadas como nomes de variáveis.
Daqui para frente você terá contato com os comandos básicos em português
estruturado que serão utilizados nos algoritmos, tais como: início, fim, var,
variáveis, programa, faça enquanto, se... então, senão, ler, escrever, repita,
numérico, caractere, lógico, etc.

08/06/2011 160
Comandos de Entrada e Saída de dados:

Assim como o ato de respirar envolve a entrada de ar, processamento pelo


organismo e saída de ar, todo programa executado em um computador (salvo
algumas excessões) consiste de três etapas ou pontos de trabalho: a entrada de
dados, o seu processamento e a saída dos mesmos.

A entrada de dados será feita através da instrução ler


ler <variável>
Exemplo:
ler A
A saída de dados será feita através da instrução escrever
escrever <variável>
Exemplo:
escrever A
escrever “Valor de A:”, A , “A Soma de B com C é :”, B+C
escrever “Você pesa ”, X , “ quilos e tem ”, idade, “anos.”

11/06/2011 161
Aqui colocamos em prática os conceitos aprendidos anteriormente, nos fatores
levados em consideração na construção de um algoritmo. Sempre que estamos
diante de um problema, este deve ser primeiro resolvido por nós, para que
depois seja resolvido pelo computador. Isto é, ele deve ser muito bem
compreendido para que depois se busque a solução no computador.
O computador deve ser utilizado para agilizar os processos que executados
mecanicamente seriam muito lentos.
Um exemplo bem simples: Numa turma com 50 alunos, o professor deve
calcular a média de cada aluno baseado em 3 provas, sendo que a primeira tem
peso 1, a segunda peso 2 e a terceira peso três. Para cada aluno o professor
deve fazer o seguinte cálculo: (nota 1 + nota 2 * 2 + nota 3 * 3 ) / 6.
Este processo seria muito lento, e com a utilização do computador e um
pequeno algoritmo (programa), seria necessário somente digitar os valores de
entrada para aparecer na tela a média.

11/06/2011 162
Blocos

Um bloco pode ser definido como um conjunto de ações de função bem definida.
No nosso caso, o algoritmo será visto como um bloco. Seus delimitadores serão
as palavras início e fim (veja o exemplo.).

Exemplo de um programa em português estruturado:

11/06/2011 163
11/06/2011 164
Lógica de Programação

REVISÃO
Charles Emerson Machado – charles.machado@prof.sc.senac.br

11/06/2011 165
Algoritmos com Seleção – Estruturas de Controle

Já vimos entrada, processamento e saída, que compõem os algoritmos puramente


seqüenciais, bem como a utilização de variáveis, constantes e operadores
aritméticos. Porém, esses recursos são muito limitados dentro da programação, e
haverá momentos em que um valor deverá ser tratado para que possa ser
efetuado um processamento mais adequado.

Através das estruturas básicas de controle do fluxo de execução – seqüenciação,


seleção, repetição – e da combinação delas, poderemos criar algoritmos para
solucionar qualquer problema.

Imagine a seguinte situação: queremos um programa que mostre a média de um


aluno. Até aí muito simples, mas além de calcular a média, queremos
simplesmente que o programa apresente uma mensagem dizendo se o aluno está
Aprovado, no caso da sua nota ter sido maior do que 5.

08/06/2011 166
Desvio condicional simples

Para solucionar este problema, será necessário trabalhar uma nova instrução não
vista até agora: se... então e fim_se. Essa instrução tem por finalidade
representar a tomada de uma decisão. Sendo a condição Verdadeira, serão
executadas todas as instruções entre se... então e fim_se. No caso da condição
ser falsa, o programa segue o fluxo normal após o comando fim_se, não
executando as linhas de programa que ficam entre se... então e fim_se.

...
se (<condição>) entao
<comandos para condição verdadeira somente>
fim_se
...
comandos

08/06/2011 167
Fluxograma ou diagrama de blocos

O Fluxograma mostra, através de desenhos e setas, a ordem em que


os comandos do programa devem ser realizados pelo computador.
Compare o funcionamento de um algoritmo seqüencial e um algoritmo
de seleção, através dos fluxogramas de cada um deles:

08/06/2011 168
Operadores relacionais
Nos testes condicionais dos algoritmos, são utilizados os seguintes
operadores: >, <, =, >=, <= e <>.
Desvio condicional composto
Exemplo: considerando o caso anterior onde um algoritmo deve calcular a média
de um aluno e mostrar uma mensagem dizendo se esse aluno está aprovado (no
caso da nota ter sido igual ou superior a Cinco), uma cláusula senão deve ser
incluída no algoritmo no caso do aluno ser reprovado (nota inferior a cinco.

comandos
...
se (<condição>) entao
<comandos para condição verdadeira>
senao
<comandos para condição falsa>
fim_se
...
comandos

08/06/2011 169
Desvio condicional encadeado (ou aninhado)

Existem casos em que é necessário se estabelecerem verificações de


condições sucessivas. Quando uma ação é executada, ela poderá ainda
estabelecer novas condições, isso significa condições dentro de
condições. Esse tipo de estrutura poderá ter diversos níveis de condição,
sendo chamados de aninhamentos ou encadeamentos.
O segundo encadeamento pode ser tanto para uma condição verdadeira
quanto uma condição falsa.
comandos
...
se (<condição1>) entao
<comandos para condição1 verdadeira>
senão
se (<condição2>) entao
<comandos para condição2 verdadeira, porém condição1 Falsa>
senão
<condição1 e condição2 falsas>
fim_se
fim_se
...
comandos
08/06/2011 170
Considere o problema a seguir, onde se estabelecem 3 condições para
se calcular o reajuste de salário de um funcionário:

- Para salário < do que 500, o reajuste será de 15%


- Para salário >= 500 mas <= 1000, o reajuste será de 10%
- Para salário > 1000, o reajuste será de 5%

08/06/2011 171
Algoritmos com Repetição – Laços de Repetição

Em vários momentos, na programação, se torna necessário repetir um trecho de


um programa um determinado número de vezes. Nesse caso, pode ser criado
um laço de repetição que efetue o processamento de um determinado trecho,
tantas vezes quantas forem necesssárias. Os laços de repetição também são
conhecidos por loopings.

Supondo que se queira executar um determinado trecho de um programa três


vezes (3x). Por exemplo, suponha que um programa deva ler dois valores e
mostrar a média entre esses valores. Certamente a melhor técnica não seria
repetir simplesmente um mesmo trecho três vezes, como é mostrado abaixo:

08/06/2011 172
variaveis
numerico media,n1,n2
inicio
Ler n1
Ler n2
media := (n1+n2)/2
escrever “Média:”, media
Ler n1
Ler n2
media := (n1+n2)/2
escrever “Média:”, media
Ler n1
Ler n2
media := (n1+n2)/2
escrever “Média:”, media
fim

08/06/2011 173
Para esse e outros casos similares, existem comandos apropriados para efetuar
a repetição de determinados trechos de programa tantas vezes quantas forem
necessárias. A principal vantagem é que o programa passa a ter um tamanho
muito menor, podendo ser ampliada a amplitude de processamento como for
necessária.

Existem 2 tipos de repetições:

– definidas e garantidas, ou seja, um mesmo trecho de programa será


executado um número pré-determinado de vezes e;
– indefinida e sem garantia, ou seja, um trecho de programa poderá ser
executado indefinidamente, não havendo garantia do término da execução do
algoritmo.

08/06/2011 174
Repetição utilizando estrutura Para / Próximo

A estrutura do Para/Próximo é garantida, e sua sintaxe em português


estruturado é apresentada no seguinte formato:

para <var> de <início> ate <fim> passo <incremento>


<comandos>
Próximo

08/06/2011 175
Veja o exemplo anterior, aplicando-se nele o laço de repetição Para /
Próximo.

variaveis
numerico media,n1,n2,i
inicio
para i de 1 ate 3 passo 1 // (nesse caso passo 1 é opcional)
Ler n1
Ler n2
media := (n1+n2)/2
escrever “Média:”, media
proximo
fim

O algoritmo, que tinha que 17 linhas, passou a ter 10 linhas, com a mesma
funcionalidade e ainda com a vantagem de se ampliar o número de repetições
de 3 para 300, com a maior facilidade.

08/06/2011 176
Repetição utilizando estrutura Faça Enquanto / Fim_enquanto

Embora também possa ser utilizada quando se tem um número pré-


determinado de repetições a executar, como no exemplo acima, essa
estrutura é mais indicada quando é necessário repetir um determinado
trecho de programa indefinidamente. Para ilustrar, suponha que um
determinado valor deva ser lido indefinidamente, até que seja digitado
zero (condição de parada). Nesse caso devemos usar a estrutura Faça
enquanto:
variaveis
numerico val
inicio
val:= 1
faça enquanto val <> 0
escrever “Valor:”
ler val
...
<comandos1>
fim_enquanto (pode ser usado também fim_faça)
<comandos2>
fim

08/06/2011 177
Nesse caso, quando for digitado 0 (zero) para val, o fluxo do programa segue
até chegar no comando fim_enquanto. Ao retornar na linha faça enquanto,
é verificado que o valor não é diferente de zero e o controle do programa
passa para a linha comandos2. A partir daí o fluxo do programa segue
normalmente.

Veja abaixo como ficaria a utilização do laço faça enquanto para o exercício
das 4 repetições:
variaveis
numerico media,n1,n2,i
inicio
i:= 1
faça enquanto i <= 3
Ler n1
Ler n2
media := (n1+n2)/2
escrever “Média:”, media
i:= i+1
fim_enquanto
08/06/2011 fim 178
Contador

É uma variável de controle, inteira, que serve para controlar quantas vezes um
determinado trecho de programa foi executado.

Acumulador

É uma variável de controle, inteira, que serve para acumular valores.

08/06/2011 179
Lógica de Programação
Charles Emerson Machado – charles.machado@prof.sc.senac.br

08/06/2011 180
Tipos de dados Homogêneos – VETORES e MATRIZES

Os tipos homogêneos são conjuntos do mesmo tipo básico. A utilização desse tipo de
estrutura de dados recebe diversos nomes, tais como: variáveis indexadas, compostas,
arranjos, tabelas em memória, arrays (do inglês) vetores e matrizes. Para simplificar
utilizaremos somente os nomes vetores e matrizes. Os vetores são uma lista de
elementos do mesmo tipo. Quando os vetores possuem mais de uma dimensão se
tornam matrizes.
Todas as variáveis e constantes ocupam um espaço em memória. Este espaço ocupado é
um espaço linear, ou seja, se temos a seguinte declaração :
variaveis
numerico a,b
provavelmente (dependendo do compilador da linguagem utilizada) estas variáveis
ocuparão espaços subsequentes em memória. Baseado na necessidade de utilização de
tipos como vetores e utilizando esta linearidade do armazenamento em memória fica fácil
para as linguagens de programação implementarem estes tipos.

08/06/2011 181
Vetores:

Quando possuímos uma ordem e um índice de acesso aos elementos


de um conjunto então temos caracterizado um vetor. Para definirmos
um vetor a sintaxe utilizada será a seguinte :

matriz identificador[índice] exemplo: Matriz numerico X[3]

08/06/2011 182
Matrizes:

A matriz mais comum é a de duas dimensões (linha e coluna), por se


relacionar diretamente com a utilização de tabelas. Trabalharemos somente
com matrizes de 2 dimensões, por serem mais comuns, mas podem ser
necessárias, em algum momento, matrizes de 3 ou mais dimensões.
Uma matriz de 2 dimensões estará sempre fazendo menção a linhas e
colunas e será representada por seu nome e tamanho. Dessa forma, uma
matriz Tabela[8,5] indica que tem 8 linhas e 5 colunas.

08/06/2011 183
08/06/2011 184

Você também pode gostar