You are on page 1of 54

Algoritmos e Lógica de Programação

Docente

Prof. Esp. Ramilton Costa Gomes Júnior

Especialista em Criptografia e Segurança em Redes, Universidade Federal Fluminense – UFF, 2009


Especialista em Sistemas Distribuídos, Universidade Federal da Bahia – UFBA, 2003
Especialista em Adminitração em Redes Linux, Universidade Federal de Lavras - UFLA, 2010
Bacharel em Ciência da Computação, Universidade de Alfenas – UNIFENAS, 2000

ramilton_costa@hotmail.com
São Mateus, Fevereiro de 2011
ÍNDICE

Índice.............................................................................................................................. 02
Figuras............................................................................................................................ 04
Tabelas........................................................................................................................... 05
Prefácio........................................................................................................................... 06
Capítulo 1 – Introdução ................................................................................................. 07
1.1 – Lógica .............................................................................................................. 07
1.2 – Seqüência Lógica ............................................................................................ 07
1.3 – Instruções ........................................................................................................ 07
1.4 – Algoritmo......................................................................................................... 07
1.5 – Entrada, Processamento e Saída....................................................................... 08
1.6 – Tipos de Algoritmos......................................................................................... 09
1.7 – Pseudocódigo................................................................................................... 11
Capítulo 2 – Constantes, Variáveis e Tipos de dados.................................................... 15
2.1 – Tipos de Variáveis ........................................................................................... 15
2.2 – Identificadores.................................................................................................. 15
2.3 – Constantes........................................................................................................ 16
2.4 – Dados Numéricos Inteiros................................................................................ 16
2.5 – Dados Numéricos Reais................................................................................... 16
2.6 – Dados Literais.................................................................................................. 17
2.7 - Dados Lógicos ................................................................................................. 17
2.8 – Bibliotecas de funções ..................................................................................... 17
2.8.1 – Funções Pré-Definidas......................................................................... 17
Capítulo 3 – Operadores................................................................................................. 20
3.1 – Operadores Aritméticos.................................................................................... 20
3.1.1 Hierarquia das Operações Aritméticas ................................................... 20
3.2 – Operadores Relacionais.................................................................................... 20
3.3 – Operadores Lógicos ......................................................................................... 21
3.4 – Expressões Aritméticas ................................................................................... 22
3.5 – Sinais de Atribuições ....................................................................................... 23
3.6 – Sinais de Igualdade........................................................................................... 23
3.7 – Ponto e Virgula................................................................................................. 23
3.8 – Comandos de I/O(Input/Output) – Entrada e saída.......................................... 24
3.9 – Aspas Simples ‘’............................................................................................... 24
3.10 – Comentários................................................................................................... 24
Capítulo 4 – Estrutura de Decisão e Repetição ............................................................. 27
4.1 – Comando de Decisão........................................................................................ 27
4.1.1 Múltipla Escolha..................................................................................... 27
4.2 – Estrutura de Repetição .................................................................................... 28
Capítulo 5 – Funções e Procedimentos.......................................................................... 32
5.1 – Procedimentos.................................................................................................. 32
5.2 – Funções ............................................................................................................ 33
5.3 – Chamada de Procedimentos e Funções............................................................ 34

UNISAM – Campus Paulo Pereira Gomes – São Mateus. PAG 2


5.4 – Passagem de Parâmetros.................................................................................. 34
5.4.1 – Por Valor.............................................................................................. 34
5.4.2 – Por Referencia...................................................................................... 34
Capítulo 6 – Variáveis Compostas Homogêneas – Vetores e Matrizes......................... 37
6.1 – Vetor................................................................................................................. 37
6.2 – Uso do Comando de Repetição para(for) com Vetores.................................... 38
6.3 – Exemplo de Como Usar Vetor em Código Pseudocódigo............................... 39
6.4 – Matrizes............................................................................................................ 40
Capítulo 7 – Estrutura de Dados Heterogêneos............................................................. 44
7.1 – Registro............................................................................................................ 44
7.2 – Campo.............................................................................................................. 44
Capítulo 8 – Arquivos.................................................................................................... 47
8.1 – Introdução......................................................................................................... 47
8.2 – Arquivo............................................................................................................. 47
8.3 – Abertura de um Arquivo.................................................................................. 49
8.4 – Fechamento de um Arquivo............................................................................. 50
8.5 – Comando de I/O(Input/Output) – Entrada e saída........................................... 50
8.6 – Exemplo de Algoritmo com Arquivo Seqüencial............................................ 50
8.7 – Exemplo de Algoritmo com Arquivo Direto.................................................... 51
Bibliografia..................................................................................................................... 54

UNISAM – Campus Paulo Pereira Gomes – São Mateus. PAG 3


FIGURAS

Figura 1 – Exemplo de uso da Função em um Programa.............................................. 34


Figura 2 – Exemplo de Utilizar Procedimento com Passagens de Parâmetros.............. 35
Figura 3 – Exemplo de um Array na Memória.............................................................. 37
Figura 4 – Exemplo de Atribuição de Variáveis em um Vetor...................................... 37
Figura 5 – Exemplo para Zerar Todas as Posições do Vetor......................................... 38
Figura 6 – Exemplo para Zerar Todas as Posições do Vetor Utilizando o Comando
para(for).........................................................................................................................
. 38
Figura 7 – Algoritmo de Ordenação de Seleção............................................................ 40
Figura 8 – Exemplo da Representação de Dados em uma Matriz................................. 41
Figura 9 – Exemplo de Algoritmo de Arquivo Seqüencial............................................ 51
Figura 10 – Exemplo de Algoritmo de Arquivo Direto................................................. 52

UNISAM – Campus Paulo Pereira Gomes – São Mateus. PAG 4


TABELAS

Tabela 2 – Tabela de Funções Pré-Definidas................................................................. 18


Tabela 3 – Tabela de Operadores Aritméticos............................................................... 20
Tabela 4 – Tabela de Hierarquia dos Operadores Aritméticos...................................... 20
Tabela 5 – Tabela de Operadores Relacionais............................................................... 21
Tabela 6 – Tabela de Operadores Lógicos..................................................................... 21
Tabela 7 – Tabela de Todos os Resultados Possíveis Criados Pelos Três Operadores
Lógicos........................................................................................................................... 22

UNISAM – Campus Paulo Pereira Gomes – São Mateus. PAG 5


PREFÁCIO

Prezado leitor,

Este material é destinado aos alunos dos Cursos de Engenharia Civil, Engenharia
de Produção Mecânica e Análise e Desenvolvimento de Sistemas da UNISAM e também
a todos os profissionais da área interessados em aprender ou aperfeiçoar seus
conhecimentos em Algoritmo e lógica de computadores.

Neste material são apresentados os conceitos básicos, estruturas, e técnicas de


algoritmo e lógica, que servirão como base para o estudo dos principais conceitos,
fundamentos e técnicas de programação para qualquer linguagem de computadores.

É muito importante, para o estudo de algoritmo e lógica de computadores, que se


faça uma leitura minuciosa dos textos que fundamentam a atividade de algoritmo e
lógica. Uma boa fundamentação teórica facilita a compreensão do algoritmo e da lógica
de programação e conduz a um bom aprendizado e, posteriormente, domínio da arte do
desenvolvimento de software.

Este material apresenta aspectos teóricos e programas-exemplo que auxiliam a


compreensão das técnicas de algoritmo e lógica. Tabelas e figuras são também utilizadas
na formação deste material didático. Em meio aos textos, são apresentados alguns ícones
que devem ser observados com atenção. Tais ícones objetivam alerta o leitor para pontos
de maior relevância do conteúdo deste material, bem como apresentar dicas e auxiliar o
processo de aprendizagem.

Espero que este material didático seja útil e colabore para a sua formação
profissional.

O autor.

UNISAM – Campus Paulo Pereira Gomes – São Mateus. PAG 6


Capítulo 1 - Introdução

1.1 Lógica

A lógica de programação é necessária para as pessoas que desejam trabalhar com


desenvolvimento de sistemas e programas, ela nos permite definir uma seqüência lógica
para o desenvolvimento.

1.2 Seqüência lógica

Estes pensamentos podem ser descritos como uma seqüência de instruções, que
devem ser seguidas para cumprir uma determinada tarefa.

1.3 Instruções

Na linguagem comum, entende-se por instruções, um conjunto de regras ou


normas definidas ou normas para realização ou emprego de algo.

1.4 Algoritmo

É uma seqüência de passos que visa atingir um objetivo bem definido.


(Forbellone,1999);

Algoritmo é a descrição de uma seqüência de passos que deve ser seguida para a
realização de uma tarefa. (Ascencio,1999);

Algoritmo é uma seqüência finita de instruções ou operações cuja execução, tem


tempo finito, resolver um problema computacional qualquer que seja a sua instancia.
(Selvetti,1999) ;

Algoritmo são regras formais para a obtenção de um resultado ou solução de um


problema, englobando formulas de expressões aritméticas. (Manzano,1997);

Exemplos de algoritmos usados no dia-a-dia

1. Somar três números

• Receber os três números


• Somar os três números
• Mostrar o resultado obtido da soma dos três números

2. Fazer um sanduíche

• Pegar o pão

UNISAM – Campus Paulo Pereira Gomes – São Mateus. PAG 7


• Cortar o pão ao meio
• Pegar a maionese
• Passar a maionese no pão
• Pegar e cortar o alface e tomate
• Colocar o alface e tomate no pão
• Pegar o hambúrguer
• Fritar o hambúrguer
• Colocar no pão o hambúrguer

Um algoritmo deve possuir as seguintes características:

• Ter início e fim;


• Ser escrito em termos de ações ou comandos bem definidos;
• Deve ser fácil de interpretar e codificar, ou seja, ele deve ser o intermediário entre
a linguagem falada e a linguagem de programação;
• Ter uma seqüência lógica.

1.5 Entrada, processamento e saída

O computador é uma ferramenta que permite a realização do processamento


automático de dados.

Defini-se por processamento de dados, qualquer atividade que utilizando


informações, efetua transformações para obter novas informações como resultados.

Dados de Processamento Dados de saída


Entrada (Transformação) (Resultado)

Para criar um algoritmo é necessário dividir o problema proposto em três fases


fundamentais: primeiro a entrada, segundo o processamento e por ultimo a saída.

Entrada: São os dados necessários para a resolução do problema proposto;


Processamento: São os processamentos utilizados para chegar ao resultado final;
Saída: São os dados processados apresentando o resultado para o problema proposto.

Exemplo:

Considere o seguinte problema: São fornecidas as notas do 1 e 2 Bimestre de um


aluno, calcule a media final do semestre de uma determinada disciplina. Mostre a média
calculada e se o aluno foi aprovado ou reprovado.
Em que, media = (p1 + 2* p2)/3

UNISAM – Campus Paulo Pereira Gomes – São Mateus. PAG 8


O aluno é aprovado quando a média é maior ou igual a 6,0, caso contrário é
reprovado.

Para montar o algoritmo proposto, deve-se questionar fazendo a seguinte pergunta:


• Quais são os dados de entrada?

R: as notas do primeiro e segundo bimestre: P1, P2


• Qual será o processamento a ser utilizado?

R: efetuar o cálculo (p1 + 2* p2)/3 e comparar a 6.0


• Quais são os dados de saída?

R: A media calculada e o resultado “Aprovado” ou “Reprovado”

Para construção de um algoritmo são necessários os passos descritos a seguir:

1) Ler atentamente o enunciado, destacando os pontos mais importantes;


2) Definir os dados de entrada, ou seja, quais dados serão fornecidos;
3) Definir o processamento, ou seja, quais cálculos serão efetuados e quais as
restrições para esses cálculos. O processamento é responsável pela transformação
dos dados de entrada em dados de saídas;
4) Definir os dados de saídas, ou seja, quais dados serão gerados depois do
processamento;
5) Construir o algoritmo utilizando um dos tipos descritos;
6) Testar o algoritmo utilizando as informações.

1.6 Tipos de algoritmos

Existem basicamente três tipos de algoritmos: a primeira é a descrição narrativa, a


segunda é através do fluxograma e por ultimo é o pseudocódigo ou portugol.
Símbolos do Fluxograma:
- Início e Fim.

- Indica um cálculo ou atribuição.

- Representa dados de Entrada.

- Representa dados de Saída.

UNISAM – Campus Paulo Pereira Gomes – São Mateus. PAG 9


- Representa tomada de decisão.

- Representa a direção do fluxo do algoritmo.

Exemplo:

Faça um algoritmo para mostrar o resultado da multiplicação de dois números.

Forma Narrativa

- Receba dois números que serão multiplicados;


- Multiplique os números;
- Mostrar o resultado obtido da multiplicação.

Forma em fluxograma

Início

N1,N2

M = N1*N2

Fim

UNISAM – Campus Paulo Pereira Gomes – São Mateus. PAG 10


Forma em pseudocódigo

Algoritmo
Declare N1,N2, M numérico
inicio
Escreva “Digite os dois números”
Leia (N1,N2)
M  N1* N2
Escreva “Multiplicação é;”, M
Fim_Algoritmo

1.7 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, ou
seja, quando formos programar em uma linguagem, por exemplo, Delphi. Por isso os
algoritmos são independentes das linguagens de programação. Ao contrário de uma
linguagem de programação não existe um formalismo rígido de como deve ser escrito o
algoritmo.

A forma geral de representação do pseudocódigo é descrito abaixo:

Algoritmo<nome do algoritmo>
Declare<declaração de variáveis> : <tipo da variável>
Subalgoritmos<funções ou procedimentos>
inicio
<corpo do algoritmo>
Fim_algoritmo

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
distingui-los dos demais.
<declaração_de_variáveis> é o local 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 procedimentos e funções.
Início e Fim_Algoritmo são respectivamente as palavras que delimitam o início e o
término do conjunto de instruções do corpo do algoritmo.

UNISAM – Campus Paulo Pereira Gomes – São Mateus. PAG 11


Exemplo,

Algoritmo Calculo_Media
Declare N1, N2, MEDIA: numérico;
Início
Leia (N1, N2);
MEDIA  (N1 + N2) / 2
Se MEDIA >= 7 então
Escreva “Aprovado”
Senão
Escreva “Reprovado”;
Fim_se
Fim_Algoritmo

UNISAM – Campus Paulo Pereira Gomes – São Mateus. PAG 12


UNISAM

Curso: Data:___/___/____
Professor: Ramilton Costa Gomes Júnior
Aluno(a):

Lista 1
1) Faça a seqüência lógica dos itens abaixo:

A) Trocar a lâmpada
B) Ir para a faculdade
C) Sacar dinheiro no banco 24 horas
D) Fazer uma ligação telefônica através de um telefone fixo.

2) Identifique nos algoritmos abaixo quais são os dados de entrada, processamento e


saída.

A) Faça um algoritmo para mostrar o resultado da divisão de dois números;

B) Faça um algoritmo para calcular a média aritmética entre 4 notas de um aluno,


que mostre a situação desse aluno que pode ser aprovado ou reprovado.
OBS: a média tem que ser maior ou igual a 7 para ser aprovado, caso contrario ele será
reprovado.

C) Faça um algoritmo para calcular o novo salário de um funcionário. Sabe-se que os


funcionários que possuem salário atual ate 500,00 reais, terão um aumento de
20%, os demais terão um aumento de 10%.

D) Faça um algoritmo para calcular o estoque médio de uma peça, sendo que estoque
médio = (quantidade mínima + máxima)/2.

E) Leia o nome, a idade, números de filhos de um funcionário. Calcule e escreva o


seu novo salário com o acréscimo de 15%.

F) Calcule e escreva z = 2x – 3y.

G) Leia o nome, o numero de matrícula e as 4 notas bimestrais de um aluno. Se a sua


media for maior ou igual a 6,0, escreva o nome, a media e a palavra aprovado;
caso contrario o seu nome e a palavra reprovado.

H) Leia o código, o nome, o salário e o numero de filhos de um funcionário. calcule e


escreva: a) o salário família a receber, sabendo-se que para cada filho o valor é de

UNISAM – Campus Paulo Pereira Gomes – São Mateus. PAG 13


20 reais. b) o acréscimo obtido por X% do seu salário se este for menor que dois
salários mínimos e o número de filhos maior que dois. c) o salário total a receber.

I) Calcule e escreva y = x2 – 1
x+2
J) Faça um algoritmo para somar dois números e multiplicar o resultado pelo primeiro
número.

3) Descreva os seguintes algoritmos abaixo em Pseudocódigo.

A) Ler a temperatura em graus Fahrenheit e apresentá-la convertida em graus


Celsius.? A fórmula de conversão é C  (F – 32) * (5 / 9). Sendo F a temperatura
Fahrenheit e C a temperatura em Celsius.

B) Efetuar o cálculo e a apresentação do valor de uma prestação em atraso, utilizando


a fórmula: Prestação  Valor + ( Valor * ( Taxa / 100 ) * Tempo).

C) Calcular o volume de uma caixa retangular por meio da fórmula:


VOLUME  COMPRIMENTO * LARGURA * ALTURA

D) Efetuar a leitura de um número e apresentar o resultado do quadrado desse


número.

UNISAM – Campus Paulo Pereira Gomes – São Mateus. PAG 14


Capítulo 2 – Constantes, variáveis e tipos de dados

Uma variável é um espaço na memória que tem como finalidade armazenarem


dados temporariamente. As variáveis são declaradas por um nome e o seu tipo, esse tipo
podem ser numérico, string e um valor lógico.

Exemplo:
A B C=A+B

2 5 7

De acordo com a figura acima A e B são Variáveis de Entrada e C é uma Variável


de Saída.

2.1 Tipos de Variáveis

As variáveis e as constantes podem ser basicamente de quatro tipos: Numéricas,


caracteres, Alfanuméricas ou 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.
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.

2.2 Identificadores

São nomes dados a variáveis, constantes e programas.

Algumas regras devem ser obedecidas para a construção de identificadores:

• Não deve ter nome de palavras reversadas;


• Deve ter na primeira letra um caracter ou _(underscore);

UNISAM – Campus Paulo Pereira Gomes – São Mateus. PAG 15


• Ter nos demais caracteres, letras, números ou _(underscore);
• Ter no máximo 127 caracteres;
• Não possui espaço em branco;
• A escolha de letras maiúsculas ou minúsculas é indiferente.

Exemplo:

_23ad
Nome
N34r

Os identificadores podem ser de vários tipos de dados, conforme a tabela abaixo:


INTEIRO Admite somente números inteiros. Geralmente é utilizado para representar
uma contagem (quantidade).
REAL Admite números reais (com ou sem casas decimais). Geralmente é utilizado
para representar uma medição.

CARACTERE Admite caracteres alfanuméricos. Os números quando declarados como


caracteres tornam se representativos e perdem a atribuição de valor.
LÓGICO Admite somente valores lógicos(verdadeiro/falso).
Tabela 1. Tabela de tipos de dados.

2.3 Constantes

São variáveis que não se modifica durante a execução do programa.

Ex: PI ← 3.1416

2.4 Dados Numéricos Inteiros


Os números inteiros são aqueles que não possuem componentes decimais ou
fracionários, podendo ser positivos ou negativos.

Exemplos:
24 - número inteiro positivo
0 - número inteiro
-12 - número inteiro negativo

2.5 Dados Numéricos Reais

Os dados de tipo real são aqueles que podem possuir componentes decimais ou
fracionários, e podem também ser positivos ou negativos.

Exemplos:

UNISAM – Campus Paulo Pereira Gomes – São Mateus. PAG 16


24.01 - número real positivo com duas casas decimais
144. - número real positivo com zero casas decimais
-13.3 - número real negativo com uma casa decimal
0.0 - número real com uma casa decimal
0. - número real com zero casas decimais

Obs: há uma diferença entre “0”, que é um dado do tipo inteiro “0.” (ou
“0.0”) que é um dado do tipo real. Portanto, a simples existência do ponto decimal serve
para diferenciar um dado numérico do tipo inteiro de um do tipo real.

2.6 Dados Literal


O tipo de dados literal é constituído por uma seqüência de caracteres contendo
letras, dígitos e/ou símbolos especiais. Este tipo de dados é também muitas vezes
chamado de alfanumérico.

Normalmente os dados literais são representados entre Aspas.

Exemplos:

“qual”
“qUaL”
“1234”

2.7 Dados lógicos

Os dados lógicos possuem somente dois valores verdadeiro(V) ou falso(F), Zero


ou Um.

Exemplo

V
F

2.8 Bibliotecas de funções

Armazenam um conjunto de funções que podem ser usadas pelos programas.

2.8.1 Funções pré-definidas

A tabela abaixo mostra alguns tipos de funções pré-definidas para a utilização da


construção de um algoritmo.

UNISAM – Campus Paulo Pereira Gomes – São Mateus. PAG 17


ABS( ) Valor absoluto
SQRT( ) Raiz quadrada
SQR( ) Eleva ao quadrado
TRUNC( ) Valor truncado
ROUND( ) Valor arredondado
LOG( ) Logaritmo
SIN( ) Seno
COS( ) Coseno
TAN( ) Tangente
MOD Resto da divisão entre 2 números inteiros
DIV O valor inteiro que resulta da divisão entre dois números inteiros.
Tabela 2. Tabela de funções Pré-definidas.

As funções acima são as mais comuns e importantes para nosso desenvolvimento


lógico, entretanto, todas as linguagens possuem suas funções próprias. As funções podem
ser aritméticas, temporais, de texto e etc.

UNISAM – Campus Paulo Pereira Gomes – São Mateus. PAG 18


UNISAM

Curso: Data:___/___/____
Professor: Ramilton Costa Gomes Júnior
Aluno(a):

Lista 2
1. Assinale com C os identificadores corretos e com I os incorretos. Explique o que está
errado nos identificadores incorretos.
( ) valor ( ) _b248 ( ) nota*do*aluno ( ) a1b2c3
()3x4 ( ) Maria ( ) km/h ( ) xyz
( ) nome empresa ( ) sala_215 ( ) “nota” ( ) ah!

2. Supondo que as variáveis NB, NA, NMAT e SX sejam utilizadas para armazenar a
nota do aluno, o nome do aluno, o número da matrícula e o sexo, declare-as corretamente,
associando o tipo adequado ao dado que será armazenado.

3. Define com suas próprias palavras as funções abaixo:

a) COS
b) TAN
c) MOD
d) DIV
e) SQRT

4. Defina o que é uma variável e de exemplo.

5. Defina o que é uma constante e de exemplo.

6. Classifique os dados especificados abaixo de acordo com seu tipo, assinalando com I
os dados do tipo inteiro, com R os reais, com L os literais, com B os lógicos (booleanos),
e com N aqueles para os quais não é possível definir a priori um tipo de dado.

( ) 0.21 ()1 ()V ( ) “0.” ( ) 1%


( ) “José” ( ) 0,35 ( ) .F. ( ) -0.001 ( ) .T.
( ) +3257 ( ) “a” ( ) “+3257” ( ) +3257. ( ) “-0.0”
( ) “.F.” ()±3 ( ) .V. ( ) .V ( ) “abc”
()F ()C ( ) Maria ( ) +36

UNISAM – Campus Paulo Pereira Gomes – São Mateus. PAG 19


Capítulo 3 – Operadores

Os operadores são meios pelo qual incrementamos, decrementamos, comparamos


e avaliamos dados dentro do computador. Temos três tipos de operadores:
• Operadores Aritméticos;
• Operadores Relacionais;
• Operadores Lógicos.

3.1 Operadores Aritméticos

Os operadores aritméticos são os utilizados para obter resultados numéricos.


Além da adição, subtração, multiplicação e divisão, podem utilizar também o operador
para exponenciação.

Os símbolos para os operadores aritméticos são:

Operação Simbolo
Adição +
Subtração -
Multiplicação *
Divisão /
Exponenciação **
Tabela 3. Tabela de Operadores Aritméticos

3.1.1 Hierarquia das Operações Aritméticas

Os operadores aritméticos possuem uma hierarquia que deve ser obedecida.


Conforme a tabela abaixo.

Ordem Procedência
1 ( ) Parênteses
2 Exponenciação
3 Multiplicação, divisão (o que aparecer primeiro)
4 Adição, Subtração (o que aparecer primeiro)
Tabela 4. Tabela de hierarquia dos operadores aritméticos.

3.2 Operadores Relacionais

Os operadores relacionais são utilizados para comparar String de caracteres e


números. Os valores a serem comparados podem ser caracteres ou variáveis. Estes
operadores sempre retornam valores lógicos (verdadeiro ou falso/ True ou False).

Para estabelecer prioridades no que diz respeito a qual operação executar primeiro, utilize
os parênteses.

UNISAM – Campus Paulo Pereira Gomes – São Mateus. PAG 20


Os operadores relacionais são:

Descrição Símbolo
Igual a =
Diferente de <>
Maior que >
Menor que <
Maior ou igual a >=
Menor ou igual a <=
Tabela 5. Tabela de Operadores Relacionais

Exemplo:

Tendo duas variáveis A = 5 e B = 3


Os resultados das expressões seriam:

Expressão Resultado
A=B Falso
A <> B Verdadeiro
A>B Verdadeiro
A<B Falso
A >= B Verdadeiro
A <= B Falso

3.3 Operadores Lógicos

Os operadores lógicos servem para combinar resultados de expressões, tendo


como retorno o resultado final como verdadeiro ou falso.

Os operadores lógicos são:

Operadores
E AND
OU OR
NÃO NOT

Tabela 6. Tabela de Operadores lógicos.

E / AND Uma expressão AND (E) é verdadeira se todas as condições forem


verdadeiras.

OR/OU Uma expressão OR (OU) é verdadeira se pelo menos uma condição


for verdadeira.

UNISAM – Campus Paulo Pereira Gomes – São Mateus. PAG 21


NOT Um expressão NOT (NÃO) inverte o valor da expressão ou condição,
se verdadeira inverte para falsa e vice-versa.

A tabela abaixo mostra todos os valores possíveis criados pelos três operadores
lógicos (AND, OR e NOT)

1 Valor Operador 2 Valor Resultado


V AND V V
V AND F F
F AND V F
F AND F F
V OR V V
V OR F V
F OR V V
F OR F F
V NOT F
F NOT V
Tabela 7. Tabela de todos os resultados possíveis criado pelos três operadores
lógicos.

Exemplos:

Suponha que temos três variáveis A = 5, B = 8 e C =1


Os resultados das expressões seriam:

Expressões Resultado
A=B AND B>C Falso
A <> B OR B<C Verdadeiro
A>B NOT Verdadeiro
A<B AND B>C Verdadeiro
A >= B OR B=C Falso
A <=B NOT Falso

3.4 Expressões aritméticas.

Para a construção de Algoritmos todas as expressões aritméticas devem ser


linearizadas, ou seja, colocadas em linhas.

É importante também ressalvar o uso dos operadores correspondentes da


aritmética tradicional para a computacional.

UNISAM – Campus Paulo Pereira Gomes – São Mateus. PAG 22


Exemplo:

[ 2
3 ]
 5−3  1= (2/3+(5-3))+1=

Tradicional Computacional

3.5 Sinal de atribuição

Uma Variável nunca é eternamente igual a um valor, seu conteúdo pode ser
alterado a qualquer momento. Portanto para atribuir valores a variáveis devemos usar o
sinal de
“<--”.

Exemplos:

A <-- 2;
B <-- 3;
C <-- A + B;

3.6 Sinal de igualdade

As constantes são eternamente iguais a determinados valores, portanto usamos o


sinal de “=”.

Exemplos:

PI = 3.1416;
Empresa = ‘UNISAM.’
V = Verdadeiro

3.7 Ponto e vírgula

O sinal de ponto e vírgula “;” indica a existência de um próximo comando (passa


para o próximo). Na estrutura ÍNICIO e no comando que antecede a estrutura FIM não se
usa “;”.

UNISAM – Campus Paulo Pereira Gomes – São Mateus. PAG 23


3.8 Comandos de I/O (Input/Output)- Entrada e Saída
Leia: Comando de entrada que permite a leitura de Variáveis de Entrada.
Escreva: Comando de saída que exibe uma informação na tela do monitor.
Imprimir: Comando de saída que envia uma informação para a impressora.

3.9 Aspas Simples ‘’

Quando queremos exibir uma mensagem para a tela ou impressora a mensagem


deve estar contida entre aspas simples, caso contrário, o computador irá identificar a
mensagem como Variável Indefinida.

Exemplos:

ESCREVA(‘ DIGITE SEU NOME ’);


IMPRIMA (‘AREA OBTIDA =’, AREA);

3.10 Comentários

Podemos inserir em um Algoritmo comentários para aumentar a compreensão do


mesmo, para isso bastam que o texto fique entre Chaves “{}”.

Exemplo:

LEIA (RAIO); {atribui a variável RAIO o valor que o usuário digitar}

UNISAM – Campus Paulo Pereira Gomes – São Mateus. PAG 24


UNISAM

Curso: Data:___/___/____
Professor: Ramilton Costa Gomes Júnior
Aluno(a):

Lista 3
1) Tendo as variáveis SALARIO, IR e SALLIQ, e considerando os valores
abaixo. Informe se as expressões são verdadeiras ou falsas.

Salário IR SalLig Expressão V ou F


100,00 0,00 100,00 (SALLIQ >= 100,00)
200,00 10,00 190,00 (SALLIQ < 190,00)
300,00 15,00 285,00 SALLIQ = SALARIO - IR

2) Sabendo que A=3, B=7 e C=4, informe se as expressões abaixo são verdadeiras ou
falsas.

a) (A+C) > B ( )
b) B >= (A + 2) ( )
c) C = (B –A) ( )
d) (B + A) <= C ( )
e) (C+A) > B ( )

3) Sabendo que A=5, B=4 e C=3 e D=6, informe se as expressões abaixo são verdadeiras
ou falsas.

a) (A > C) AND (C <= D) ( )


b) (A+B) > 10 OR (A+B) = (C+D) ( )
c) (A>=C) AND (D >= C) ( )

4) Dada à declaração de variáveis:


Declare A, B, C : inteiro
X, Y, Z : real
NOME, RUA : literal
L1, L2 : lógico

Classifique as expressões seguintes de acordo com o tipo de dado do resultado de sua


avaliação, em I (inteiro), R (real), L (literal), B (lógico) ou N (quando não for possível
defini-lo):

()A+B+C ()A+B+Z ( ) NOME + RUA ()AB

UNISAM – Campus Paulo Pereira Gomes – São Mateus. PAG 25


()AY ( ) NOME RUA ( ) L1 .OU. L2 ( ) RUA <> NOME
()A+B/C ()A+X/Z ()A+Z/A ( ) A B = L1
( ) (A = B) ()X+Y/Z ()X=Z/A ( ) L1 ** L2
( ) A + B / L2 ( ) X < L1 / RUA

5) Para as mesmas variáveis declaradas no exercício 4, às quais são dados os valores


seguintes:

A=1 B=2 C=3 X = 2.0 Y = 10.0 Z = -1.0 L1 = .V.


NOME = “PEDRO” RUA = “PEDRINHO” L2 = .F.

Determine o resultado da avaliação das expressões abaixo:


A + C / B ____________________________________________________________
A + B + C ____________________________________________________________
C / B / A _____________________________________________________________
-X ** B _______________________________________________________________
- (X ** B) _____________________________________________________________
(-X) ** B ______________________________________________________________
NOME + RUA _________________________________________________________
NOME = RUA _________________________________________________________
L1 .OU. L2 ____________________________________________________________
(L1 .E.(.NÃO. L2)) ______________________________________________________
(L2 .E. (.NÃO. L1)) ______________________________________________________
(L1 .E. (.NÃO. L2)) .OU. (L2 .E. (.NÃO. L1)) _________________________________
X Y .E. C = B ___________________________________________________________
(C - 3 * A) (X + 2 * Z) ____________________________________________________

6) Escreva em linguagem algorítmica as expressões aritméticas.

a) x + y - 2x2 + y
2

b) x - √ x + 2x + y
y+z 2–y

7) Escreva em linguagem matemática as expressões aritméticas.

a) (x-2*y)/x^(1/3) + tan(x^3) – tan (x)^3


b) x/(y+z/(x-t/2)) – log(x^(1/5))^2/3
c) (a + b) / (c + d) – raiz(x + 1) + ABS(x/(y-z))

8) Dados A = 25, B = 60, C = 15, D = 5, E = 0. Avalie a expressão abaixo:


a) ( Quociente (B, 15) = D) E ( A > B)
b) (Resto (A , D) > 0) OU (B <=C) E (EXP(E) = 1)
c) (Raiz (A) – B) > C) E (B/C =4)

UNISAM – Campus Paulo Pereira Gomes – São Mateus. PAG 26


Capítulo 4 – Estrutura de decisão e repetição

4.1 Comando de decisão

Os comandos de decisão fazem parte das técnicas de programação que conduzem


à estrutura do programa que não seja seqüencial. Os comandos de decisão podem ser
classificados como simples e composto, conforme o exemplo abaixo:

Exemplo de decisão simples

SE <<CONDIÇÃO>>

ENTÃO <<COMANDO1>>

Onde <<CONDIÇÃO>> É uma expressão lógica, se o seu resultado for verdadeiro é


executado o <<COMANDO 1>>

Outro exemplo:

Se MEDIA >= 5.0


ENTAO aluno aprovado;

Exemplo de decisão composta

SE <<CONDIÇÃO>>

ENTÃO <<COMANDO1>>

SENÃO <<COMANDO2>>

Onde <<CONDIÇÃO>> É uma expressão lógica, se o seu resultado for verdadeiro é


executado o <<COMANDO1>>, caso contrario quem será executado é o
<<COMANDO2>>.

Outro exemplo:

Se MEDIA >= 5.0


ENTAO aluno aprovado
SENAO aluno reprovado;

4.1.1 Múltipla escolha

UNISAM – Campus Paulo Pereira Gomes – São Mateus. PAG 27


Múltipla escolha é uma estrutura condicional que consegue tratar mais de duas
decisões ao mesmo tempo isso a torna bem vantajosa quando comparada ao ninho de se
´s.

CASO <<VARIÁVEL>> EM
RESPOSTA 1: COMANDO1;
RESPOSTA 2: COMANDO2;
.
.
.
RESPOSTA N: COMANDON;
FIM;

Os dados que podem ser substituídos no lugar de RESPOSTA 1, RESPOSTA 2,


REPOSTA N, só podem ser números inteiros ou caracteres.

Exemplo:

caso idade de
0..11: imprima('Criança');
12..17: imprima('Adolescente');
18..59: imprima('Adulto');
60..150: imprima('Idoso');
fim;

4.2 Estrutura de repetição

Utilizamos os comandos de repetição quando desejamos que um determinado


conjunto de instruções ou comandos sejam executados um número definido ou indefinido
de vezes, ou enquanto um determinado estado de coisas prevalecer ou até que seja
alcançado.

Obs: na estrutura de repetição, assim como na estrutura de condição, envolve


sempre uma expressão de condição.

Forma Geral 1:

PARA <<VARIAVEL DE TIPO INTEIRO>>:=<<VALOR INICIAL>> ATE


<<VALOR FINAL>> FAÇA
<<COMANDO1>>;

Forma Geral 2:

PARA <<VARIAVEL DE TIPO INTEIRO>>:=<<VALOR INICIAL>> ATE


<<VALOR FINAL>> FAÇA

UNISAM – Campus Paulo Pereira Gomes – São Mateus. PAG 28


ÍNICIO
<<COMANDO1>>;
<<COMANDON>>
FIM;

A repetição por padrão determina o passo do valor inicial até o valor final como
sendo 1. Determinadas linguagens possuem passo –1 ou permitem que o programador
defina o passo.

Forma Geral 3:

ENQUANTO <<CONDIÇÃO>> FACA


<<COMANDO1>>;

Forma Geral 4:

ENQUANTO <<CONDIÇÃO>> FACA


ÍNICIO
<<COMANDO1>>;
<<COMANDON>>
FIM;

Forma Geral 5:

Assim como a estrutura ENQUANTO É usada para repetir N vezes uma ou mais
instruções. Sua validação é feita no final fazendo com que a repetição seja executada pelo
menos uma vez.

REPITA
<<COMANDO1>>;
<<COMANDON>>
ATE <<CONDIÇÃO>>

UNISAM – Campus Paulo Pereira Gomes – São Mateus. PAG 29


UNISAM

Curso: Data:___/___/____
Professor: Ramilton Costa Gomes Júnior
Aluno(a):

Lista 4
1) Faça um algoritmo que determine o maior entre N números. A condição de parada é a
entrada de um valor 0, ou seja, o algoritmo deve ficar calculando o maior até que a
entrada seja igual a 0 (ZERO).

2) Uma rainha requisitou os serviços de um monge e disse-lhe que pagaria qualquer


preço. O monge, necessitando de alimentos , indagou à rainha sobre o pagamento, se
poderia ser feito com grãos de trigo dispostos em um tabuleiro de xadrez, de tal forma
que o primeiro quadro deveria conter apenas um grão e os quadros subseqüentes , o dobro
do quadro anterior. A rainha achou o trabalho barato e pediu que o serviço fosse
executado, sem se dar conta de que seria impossível efetuar o pagamento. Faça um
algoritmo para calcular o número de grãos que o monge esperava receber.

3) Faça um algoritmo que conte de 1 a 100 e a cada múltiplo de 10 emita uma mensagem:
“Múltiplo de 10”.

4) Segue um algoritmo que calcule a soma dos salários dos funcionários de uma empresa.
O programa termina quando o usuário digitar um salário menor que 0.

5)Dados três valores X, Y, Z, verifiquem se eles podem ser os comprimentos dos lados de
um triângulo e se forem escrever uma mensagem informando se é se é um triângulo
eqüilátero, isósceles ou escaleno.

Obs:
O comprimento de um lado do triângulo é sempre menor do que a soma dos outros dois.
Eqüilátero Todos lados iguais
Isósceles Dois lados iguais
Escaleno Todos os lados diferentes

6) Recebendo quatro médias bimestrais, calcule a media do ano (ponderada), sabendo que
o 1º bimestre tem peso 1, o 2º bimestre tem peso 2, o 3º bimestre tem peso 3 e o 4º
bimestre tem peso 4. Sabendo que para aprovação o aluno precisa ter uma média anual
maior ou igual a 7, escreva uma mensagem indicando se o aluno foi aprovado ou
reprovado.

Observação:

UNISAM – Campus Paulo Pereira Gomes – São Mateus. PAG 30


Média anual = (1º bimestre * 1+ 2º bimestre * 2 + 3º bimestre * 3 + 4º bimestre * 4) /
(1+2+3+4)

7) Dados dois números A e B escreva os em ordem crescente

8) Foi feita uma pesquisa entre os habitantes de uma cidade para isso, foram lidos, década
habitantes: nome, sexo, idade, estado civil (s = solteiro, c = casado, d = desquitado).
Determine e escreva. A) O número de mulheres solteiras que tem mais de quarenta anos.
B) os números de homens desquitados. C) número de pessoas pesquisadas. O processo de
pesquisa será encerrado quando se digita espaço em branco no lugar do nome.

9) Foi feita uma pesquisa entre 5000 alunos da UNISAM para isso, foram lidos, idade, o
sexo, e o código do curso. Calcule e escreva. A) o números de homens B) a média da
idade das mulheres. C) o número de homens cuja idade é maior que 20 anos e cursão o
curso de código “”ADS”.

10) leia o nome e o salário de 200 funcionários. Escreva os nome dos funcionários que
ganham mais de 2 salários mínimos.

UNISAM – Campus Paulo Pereira Gomes – São Mateus. PAG 31


Capítulo 5 – Funções e Procedimentos

Quando os programas tornam-se maiores e mais complexos, a escrita do mesmo


numa única estrutura de comandos não é mais aconselhável – o ideal é a estruturação do
mesmo em partes (procedimentos ou funções).

Temos algumas vantagens em se programar utilizando procedimentos, veja


algumas delas:

1. Diferentes partes do algoritmo podem ser independentes de forma que possam ser
escritas e testadas separadamente;
2. Trechos do algoritmo podem ser escritos de forma a serem re-utilizados em
diferentes partes do algoritmo;
3. Algoritmos complexos podem ser elaborados a partir de unidades menores já
prontas e testados;
4. Garante maior legibilidade.

5.1 Procedimento

• Conjunto de comandos aos quais foi dado um nome específico.


• Neste caso, separa-se um bloco de comandos com o intuito de realizar alguma
operação.

Exemplo:

PROCEDIMENTO <Nome> (lista de parâmetros)


<declarações locais a este procedimento>
INICIO
<corpo do procedimento: seqüência de comandos>
FIM.

Onde <Nome> é o nome dado ao procedimento, ex: calcular_media. E lista de parâmetro


é onde definimos algumas variáveis que pode ser utilizada pelo procedimentos para
receber algum valor em tempo de execução.
<declarações locais a este procedimento> é onde nos declaramos as variáveis que serão
utilizadas por este procedimento. Temos que tomar cuidado na hora da utilização de
variáveis em um procedimento. Uma vez que a declaração da variável feita dentro do
procedimento, só poderá ser utilizada dentro deste procedimento, não podendo ser mais
utilizada fora do seu escopo.
<corpo do procedimento: seqüência de comandos> é onde digitamos o nosso código que
vai ser executado.
Inicio e Fim delimita o inicio e o fim do escopo do procedimento.

UNISAM – Campus Paulo Pereira Gomes – São Mateus. PAG 32


Exemplo prático: considere um procedimento que calcula a potencia cúbica de um
numero, recebido como parâmetro e nos da como resultado do cálculo um valor inteiro.

PROCEDIMENTO Calcula_Potencia_Cubica (valor:INTEIRO);


declare resultado: inteiro;
INICIO
resultado := valor * valor * valor;
FIM.

5.2 Função

• Se este procedimento representa um valor que pode ser usado em expressões,


então é uma função.
• Neste caso, separa-se um bloco de comandos com o intuito de calcular e retornar
um valor.

Exemplo:

FUNCAO <Nome> (lista de parâmetros): <tipo de dado do valor retornado>


<declarações locais a esta função>
INICIO
<corpo da função: seqüência de comandos>
FIM.

<Nome> é o nome dado a função, ex: calcular_media. E lista de parâmetro é onde


definimos algumas variáveis que pode ser utilizada pela função para receber algum valor
em tempo de execução.
<tipo de dado do valor retornado> é utilizado para retornar um valor da função, podendo
ser um valor lógico, numérico ou string. No exemplo acima podemos notar que em vez
de começar com a palavra reservada procedimento, começa com o o tipo de valor
retornado.
<declarações locais a esta função> é onde nos declaramos as variáveis que serão
utilizadas pela função. Também como nos procedimentos, temos que tomar cuidado na
hora da utilização de variáveis. Uma vez que a declaração da variável feita dentro da
função, só poderá ser utilizada dentro da mesma, não podendo ser mais utilizada fora do
seu escopo.
<corpo da função: seqüência de comandos> é onde digitamos o nosso código que vai
ser executado.
Inicio e Fim delimita o inicio e o fim do escopo da função.

Exemplo prático: considere o mesmo exemplo citado em procedimentos, mais agora


vamos descreve-lo em forma de uma função.

FUNCAO Calcula_Potencia_Cubica (valor:INTEIRO): INTEIRO;


declare resultado: inteiro;
INICIO

UNISAM – Campus Paulo Pereira Gomes – São Mateus. PAG 33


resultado:= valor*valor*valor;
RETORNA;
FIM.

5.3 Chamada de procedimentos e função

As funções e procedimentos precisam ser chamados pelo algoritmo principal para


serem executados. E o número de parâmetros e seu respectivo tipo devem ser respeitados.

Funções devem ser chamadas dentro de Expressões, como:

– Variável ← Função(Parâmetros)
– Variável ← Função(Parâmetros) + Z

Procedimentos são chamados como instruções isoladas, como:

– Procedimento(Parâmetros)

Vamos agora demonstrar como se utiliza uma função dentro de um programa.


Conforme a figura abaixo:
PROGRAMA Exemplo_Uso_Funcao;
Declare numero:INTEIRO;

FUNCAO Potencia (valor:INTEIRO): INTEIRO;


Declare resultado:INTEIRO;
INICIO
resultado:= valor*valor*valor;
RETORNA;
FIM.
INICIO
LEIA (numero);
ESCREVA (Potencia(numero));
FIM.

Figura 1. Exemplo de uso da função em um programa.

5.4 Passagem de parâmetros

5.4.1 Por Valor

É passado um valor que é utilizado no procedimento. O procedimento (ou função)


recebe o conteúdo da variável e este conteúdo não pode ser alterado.

5.4.2 Por Referência

UNISAM – Campus Paulo Pereira Gomes – São Mateus. PAG 34


É passado um endereço de memória (referência a uma posição de memória). Toda
alteração de valor nas variáveis que representam os parâmetros reflete nas variáveis de
chamada (a posição de memória passada como parâmetro pode ser acessada pelo
procedimento).

Exemplo:
PROGRAMA Exemplo_Passagem_Parâmetros;
declare x,y,z : INTEIRO;

PROCEDIMENTO Soma (a, b:INTEIRO; declare total:INTEIRO);


INICIO
total:= a+b;
FIM.
INICIO
x := 2; y:=3; z:=4;
Soma (x,y,z);
ESCREVER (´A soma e: ´, z);
FIM.

Figura 2. Exemplo de utilizar procedimento com passagens de parâmetros.

UNISAM – Campus Paulo Pereira Gomes – São Mateus. PAG 35


UNISAM

Curso: Data:___/___/____
Professor: Ramilton Costa Gomes Júnior
Aluno(a):

Lista 5
1) Escrever um algoritmo (utilizando subalgoritmos) que lê um número não determinado
de conjuntos de 3 valores a, b e c, não negativos, um conjunto de cada vez e, para cada
conjunto lido calcule a média aritmética.

2) Escrever um algoritmo que lê 3 valores, todos inteiros e positivos, e calcule o fatorial


do menor valor entre eles.

3) Escrever um subalgoritmo de nome Troca que recebe como parâmetros x,y,z e p (onde
x,y,z são valores reais e p é um inteiro). Se p=1, então trocar entre sí os valores x e y, se
p=2 trocar os valores x e z, se p=3 trocar os valores y e z.

4) Escrever um subalgoritmo que calcule um fatorial de 5 e para um n qualquer.

5) Escrever um subalgoritmo que calcule o n-ésimo termo da série de Fibonacci.

6) Escrever um subalgoritmo que calcule a media aritmética de um aluno.

UNISAM – Campus Paulo Pereira Gomes – São Mateus. PAG 36


Capítulo 6 – Variáveis Compostas Homogêneas – Vetores e Matrizes

6.1 Vetor

A palavra reservada vetor, que vem do termo inglês array é um agregado de


variáveis do mesmo tipo (homogêneas). Conforme a figura abaixo, que mostra a
representação gráfica de um vetor de 4 inteiros chamado de conjuntos:
1 2 3 4

24 67 5 94
conjuntos = 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
24 3 24 3 24 3 24 3

Figura 3. Exemplo de um array na memória.

Cada “casa” , ou “elemento”, do vetor é uma variável independente. Na figura


acima, cada elemento contem um valor inteiro, e as posições foram ordenadas de 1 até 4.
Os elementos de um vetor são identificados pelo nome do vetor associado ao número de
ordem da sua posição relativa no vetor: conjuntos[1], conjuntos [2], conjuntos [3],
conjuntos [4].

Dessa forma podemos notar que a variável conjuntos[2] tem o valor 67. Podemos
alterar esse valor exatamente como fazemos com qualquer variável, conforme a figura
abaixo:
Conjuntos[2] ← 100;
leia(conjuntos[2]);

Figura 4. Exemplo de atribuição de variáveis em um vetor.

Para declarar um vetor em forma de pseudocodigo, é usada a forma abaixo:


Declare
conjuntos: vetor[1..4] of numerico;

A forma geral é:
declare <identificador do vetor>: vetor [<intervalo das posições>] of <tipo dos valores do
vetor>

Cada variável do conjunto é representada por: <identificador do vetor>[<expressão cujo


valor é a posição da variável> ] onde a expressão deve ser do tipo declarado.

Por exemplo, a variável na posição 3 do vetor pode ser representada por:


conjuntos[3] conjuntos[10-7] conjuntos[5*5-2*11] conjuntos[x-4], supondo
que x tenha o valor 7.

UNISAM – Campus Paulo Pereira Gomes – São Mateus. PAG 37


6.2 Uso do comando de repetição para(for) com vetores

A manipulação de vetores é grandemente utilizado pelo uso dos comandos de


repetição, especialmente o para(for). Por exemplo, para zerar (colocar o valor 0) todas
as posições do vetor conjuntos definido acima, seria necessário escrever 4 comandos,
conforme a figura abaixo:
conjuntos[1] ← 0;
conjuntos[2] ← 0;
conjuntos[3] ← 0;
conjuntos[4] ← 0;

Figura 5. Exemplo para zerar todas as posições do vetor.

A mesma operação pode ser feita com apenas um comando de repetição


para(for), usando uma variável de controle para representar as posições do vetor,
conforme a figura abaixo:
para i ← 1 to 6 faça
conjuntos[i] ← 0;

Figura 6. Exemplo para zerar todas as posições do vetor utilizando o comando


Para(for).

É fácil imaginar o que isso representa de simplificação para a manipulação de


vetores grandes.

O que se pode e o que não se pode fazer com vetores:

OBS: essas regras não se aplicam ao tipo alfanumerico que é um caso


especial de vetor de caracteres com regras própria, e que será visto mais adiante.

Não é possível:

a) Não se pode ler todo um vetor diretamente com um comando leia. Não se pode
escrever: leia(conjuntos); É necessário ler casa a casa, diretamente, ou com um laço de
repetição como para(for) na figura acima.
b) Não se pode escrever todos os elementos de um vetor com um único comando
escreva. Não é permitido escrever: escreva(conjuntos). Também nesse caso cada
elemento deve ser tratado como uma variável independente, por exemplo:
para i ← 1 to 4 do escreva(conjuntos[i]:3);
c) Não é possível copiar os valores dos elementos de um vetor para outro com um único
comando de atribuição. Ou seja, dados dois vetores v e w, ambos do mesmo tamanho

UNISAM – Campus Paulo Pereira Gomes – São Mateus. PAG 38


e do mesmo tipo, não é permitido fazer: w ← v; . Também aqui é necessário trabalhar
elemento a elemento, e o comando para(for) mais uma vez é indicado:
para i ← 1 to 6 do w[i] ← v[i];
c) Não existe comandos ou funções que dão o tamanho (número de elementos) de um
vetor.
d) Não é permitido tentar acessar uma posição fora do intervalo de posições definido para
o vetor. A tentativa causará um erro em tempo de execução e o programa abortará. No
caso do vetor conjuntos acima, por exemplo, não é permitido escrever: conjuntos[8]
← 20, leia(conjuntos[8]) ou escreva (conjuntos[8]) porque a faixa de valores das
posições vai de 1 a 4 apenas.

O que é permitido:

a) A faixa de valores das posições não precisa começar em 1. Qualquer intervalo de


valores pode ser usado na definição de um vetor. Por exemplo, podemos definir um
vetor assim:
declare v:array[15..20] of numerico;
Nesse caso o vetor v terá apenas os elementos: v[15], v[16], v[17], v[18], v[19] e
v[20]
b) As posições não precisam ser necessariamente números inteiros. Podem ser qualquer
tipo ordinal, ou seja, que possa ser definido por uma seqüência ordenada de valores.
Por exemplo, os caracteres formam uma seqüência ordenada na tabela de caracteres, e
podem portanto serem marcadores de posição em um vetor. Podemos definir um vetor
assim:
declare letras: array['a'..'z'] of integer;
Nesse caso os elementos do vetor são: letras['a'], letras['b'], …..,
letras['z']
Um uso possível para esse vetor poderia ser que cada posição poderia guardar a
quantidade de vezes que a letra dessa posição aparece em uma determinada frase.

6.3 Exemplo de como usar vetor em código pseudocódigo

Ordenação de números: Fazer um programa para ler n valores inteiros quaisquer,


n <50, onde o valor de n deve ser previamente fornecido pelo usuário.

Em seguida, o programa deve escrever na tela os valores em ordem numérica


crescente. A solução utiliza um algoritmo de ordenação .

O algoritmo abaixo é conhecido como ordenação por seleção. Os números são


colocados em um vetor definido com 50 posições. Inicialmente, procura-se a posição no
vetor (posMenor) onde está o menor número. Se essa posição for diferente da posição 1,
então troca-se os valores das casas 1 e posMenor. Isso garante que o menor elemento
agora está na posição 1. A seguir, repete-se o processo a partir da posição 2. Ou seja,
procura-se a posição do menor elemento da posição 2 em diante, que será posMenor. Se o
valor de posMenor for diferente de 2, troca-se os valores das casas 2 e posMenor. O
processo é repetido a partir da posição 3, depois 4, etc, até n-1. Nesse ponto o vetor estará

UNISAM – Campus Paulo Pereira Gomes – São Mateus. PAG 39


com os valores ordenados. Basta então escrever na tela os valores das posições 1 a n e
teremos os números em ordem crescente, conforme a figura abaixo.

programa ordena_selecao;
const nmax=50;
declare
v: vetor[1..nmax] of numerico;
i,j,n,posMenor,temp: numerico;
inicio
escreva('Digite um inteiro menor ou igual a ' ,nmax, ' : ');
leia(n);
escreva('Digite ',n,' inteiros separados por espacos');
para i ← 1 ate n faça
leia(v[i]);
para i ← 1 ate n-1 faça
posMenor ← i;
para j ← i+1 ate n faça
se v[j] < v[posMenor] entao
posMenor ← j;
se i <> posMenor entao
temp ← v[i];
v[i] ← v[posMenor];
v[posMenor] ← temp;
fim_se
fim_se
fim_para
escreva
para i ← 1 ate n faça
escreva(v[i]:4);
fim_Algoritmo.
Figura 7. Algoritmo de Ordenação de seleção.

6.4 MATRIZES

Os elementos de um vetor guardam uma relação de posicionamento entre si


apenas em uma dimensão. Essas variáveis estão dispostas como que em uma linha, e cada
elemento é identificado pela sua posição relativa na linha:

UNISAM – Campus Paulo Pereira Gomes – São Mateus. PAG 40


2 3 1 3 7
0 0 7 5
1 2 3 4 5 (posições na linha)

Quando há mais de uma dimensão, damos o nome de matriz a esse arranjo de


variáveis. O caso mais comum é a matriz de 2 dimensões. Os elementos ficam dispostos
em um plano, composto por várias linhas do mesmo tamanho, conforme a figura abaixo:

colunas à
1 40 34 50 27
Linhas
2 25 4 18 80
↓ 3 0 3 65 11
1 2 3 4

Figura 8. Exemplo da representação de dados em uma matriz.

Na matriz acima, existem 3 linhas, cada linha com 4 colunas, ou 3x4 (três por
quatro). Essa matriz pode ser declarada assim:

Declare mat: vetor[1..3, 1..4] of numerico;

Após o nome da matriz, são colocados entre colchetes os intervalos em que ficam
os números das linhas, e os números das colunas, nessa ordem. Note que também aqui os
elementos da matriz devem ser todos do mesmo tipo.

Cada elemento da matriz é identificado pela notação: mat[i,j], onde i é o número


da linha, e j o número da coluna, onde se encontra o elemento. Na figura acima, temos
então que mat[1,1] tem o valor 40.

O comando para(for) é muito usado para processar os valores de matrizes.

Exemplos:

a) Para zerar todos os elementos de uma matriz m, com 3 linhas e 4 colunas, declarada
abaixo:
declare
m: vetor[1..3, 1..4] of numerico;

UNISAM – Campus Paulo Pereira Gomes – São Mateus. PAG 41


basta fazer:
para i ← 1 ate 3 faça
para j ← 1 ate 4 faça
m[i,j] ← 0;

OBS é usual usar-se a variável i para representar as linhas de uma matriz, a


variável j para representar as colunas.

b) Para ler do teclado valores para preencher a matriz acima (12 valores):
para i ← 1 ate 3 faça
para j ← 1 ate 4 do faça(m[i,j] );

OBS O usuário poderá digitar todos os 12 números em uma só linha


(separados por espaços), ou um número por linha, ou, melhor, 4 números por linha, de
forma a visualizar melhor a matriz.

UNISAM – Campus Paulo Pereira Gomes – São Mateus. PAG 42


UNISAM

Curso: Data:___/___/____
Professor: Ramilton Costa Gomes Júnior
Aluno(a):

Lista 6
1) Elaborar um algoritmo que lê um conjunto de 30 valores e os coloca em 2 vetores
conforme estes valores forem pares ou ímpares. O tamanho do vetor é de 5 posições. Se
algum vetor estiver cheio, escrevê-lo. Terminada a leitura escrever o conteúdo dos dois
vetores. Cada vetor pode ser preenchido tantas vezes quantas for necessário.

2) Faça um algoritmo que leia um vetor N[20]. A seguir, encontre o menor elemento do
vetor N e a sua posição dentro do vetor, mostrando: “O menor elemento de N é”, M, “e
sua posição dentro do vetor é:”,P.

3) Escreva um algoritmo que leia dois vetores de 10 posições e faça a multiplicação dos
elementos de mesmo índice, colocando o resultado em um terceiro vetor. Mostre o vetor
resultante.

4) Faça um algoritmo que leia um vetor K[30]. Troque a seguir, todos os elementos de
ordem ímpar do vetor com os elementos de ordem par imediatamente posteriores.

5) Faça um algoritmo que leia um vetor S[20] e uma variável A. A seguir, mostre o
produto da variável A pelo vetor.

6) Faça um algoritmo que leia dois vetores: F[20] e G[20]. Calcule e mostre, a seguir, o
produto dos valores de F por G.

7) Escreva um algoritmo que leia e mostre um vetor de 20 números. A seguir, conte


quantos valores pares existem no vetor.

8) Elaborar um algoritmo que lê duas matrizes M(4,6) e N(4,6) e cria uma matriz que
seja:
a) o produto de M por N;
b) a soma de M com N;
c) a diferença de M com N;
Escrever as matrizes calculadas.

9) Elaborar um algoritmo que lê uma matriz M(6,6) e um valor A e multiplica a


matriz M pelo valor A e coloca os valores da matriz multiplicados por A em um vetor
de V(36) e escreve no final o vetor V.

UNISAM – Campus Paulo Pereira Gomes – São Mateus. PAG 43


Capítulo 7 – Estrutura de Dados Heterogêneos

Existem quatro tipos de dados simples, chamados tipos básicos, que o computador
manipula, que já conhecemos e utilizamos (são eles: os reais, os inteiros, os literais e os
lógicos). Com eles podemos definir novos tipos que possibilitam agrupar um conjunto de
dados homogêneos (mesmo tipo) sob um único nome ( a exemplo dos vetores e
matrizes), ou de tipos heterogêneos (tipos diferentes). A esse novo tipo de dados
heterogêneos damos o nome de registros.

Registros são conjuntos de dados logicamente relacionados, mas de tipos


diferentes.

As matrizes são tipos de variáveis que agrupam dados similares, enquanto que os
registros agrupam, geralmente, dados diferentes. Aos itens de dados de um registro dá-se
o nome de “membros” ou “componentes”, enquanto que aos itens de uma matriz (ou
vetor) dá-se o nome de elementos”.

7.1 Registros

Registros correspondem a conjuntos de posições de memória conhecidos por um


mesmo nome e individualizados por identificadores associados a cada conjunto de
posições.

Sintaxe para criação de um registro:

Registro = <nome_do_registro>

<componentes_do_registro>

Fim_registro

O <nome_do_registro> é um nome escolhido pelo programador e será considerado como


um novo tipo de dados, como os tipos básicos.
<componentes_do_registro> é o local onde o programador definirá as variáveis desse
novo tipo, se valendo de outros tipos já definidos.

A definição de um registro deve figurar no cabeçalho do algoritmo (ou


subalgoritmo) antes da declaração das variáveis relativas a ele. Um registro pode ser
definido em função de outros registros já definidos.

7.2 Campo

Campo é cada dado que compõe um registro, que terá em particular um


determinado tipo. Assim, no exemplo anterior nome é um campo que por sua vez terá um

UNISAM – Campus Paulo Pereira Gomes – São Mateus. PAG 44


tipo (caracter), e todos os demais: campo endereço do tipo caracter; campo cpf do tipo
numero, campo cargo que poderá ser do tipo numero ou caracter, dependendo da sua
aplicação, salário que será do tipo número.

Para definir o tipo de um campo use a seguinte regra: se um dia você imaginar
que o campo poderá ser usado para cálculo, por mais remota que seja a possibilidade, este
será do tipo numero. Nos demais casos caracter ou lógica.

Para declararmos uma variável do tipo registro, primeiramente definimos os


campos que irão compor o registro, bem como os tipos que os campos terão. Para o
registro, o qual tínhamos os campos: nome, endereço, cpf, cargo e salário, teremos a
seguinte declaração do registro:

Algoritmo FormaGeral
Tipo
Registro_Empresa = Registro
nome - Caracter
endereço - Caracter
cpf - Número
cargo - Caracter
salário - Número
Declare
Empresa - Registro_Empresa
Inicio
comandos ...
Fim_Algoritmo

Ao término desta declaração de registro teremos a variável empresa (registro), que


compõe-se de vários dados (campos).

Uma ficha cadastral, tipo a que preenchemos em bancos, supermercados, lojas


etc., é o melhor modelo para compararmos com um registro e o que acontece na memória
do computador:

Nome:_____________________________________

Idade:_____ Sexo: Masc. Fem.


Salário:___________________________________

Observe que as variáveis que irão assumir valores desse tipo (registro) estão sendo
declaradas como Dados: x, y .

A referência ao conteúdo de um dado componente do registro será indicada por:

UNISAM – Campus Paulo Pereira Gomes – São Mateus. PAG 45


<variável_registro>.<variável_componente>

Exemplo: x.nome ← “Paulo César do Nascimento”


x.idade ← 32
x.sexo ← .V.
x.salario ←2500.00
y.nome ← “Maria Clara Machado”
y.idade ← 25
y.sexo ← .F.
y.salario ← 3500.00

Exemplo: Registro com registro.

Registro = Ender
Literal[40]: rua
Inteiro: num
Literal[10]: cep
Fim_registro
Registro = Funcionario
Literal[40]: nome
Ender: endereco
Literal[20]: cidade, estado
Real: salario
Fim_registro
Funcioario: x

Nesse caso a referência ao conteúdo de um componente do registro Funcionário


será indicado, por exemplo, como:

x.nome ← “Carla Pontes de Lima”


x.endereco.rua ← “Bumba Meu Boi”
x.endereco.num ← 3125
x.endereco.cep ← “72341-530”
x.cidade ← “Patos”
x.estado ← “PB”
x.salario ← 2458.75

UNISAM – Campus Paulo Pereira Gomes – São Mateus. PAG 46


Capítulo 8 – Arquivos

8.1 Introdução

Na maioria das vezes, desejaremos desenvolver um algoritmo de forma que os dados


manipulados sejam armazenados por um período longo de tempo, e não somente durante
o tempo de execução do algoritmo. Como a memória principal do computador é volátil,
ou seja, ao ser desligado o computador, todos os dados da memória são perdidos,
necessitamos de uma memória auxiliar que seja permanente, como por exemplo, um
disquete ou o disco rígido (HD).

8.2 Arquivo

Arquivo é um conjunto de registros armazenados em um dispositivo de memória auxiliar


(secundária). Por sua vez, um registro consiste de um conjunto de unidades de
informação logicamente relacionadas – os campos. Assim, podemos definir que um
registro corresponde a um conjunto de campos de tipos heterogêneos. Veja que neste
momento estamos tratando de registros físicos, ao contrário, do que vimos no item
anterior, que são os registros lógicos.

As operações básicas que podem ser feitas em um arquivo através de um


algoritmo são:
- obtenção de um registro (Leitura);
- inserção de um novo registro (Gravação);
- modificação de um registro (Alteração);
- exclusão de um registro (Exclusão).

Os arquivos podem ser organizados de duas formas, quanto à sua criação ou


acesso. São elas:
- Seqüencial, onde os registros são obtidos ou inseridos no arquivo um após o
outro;
- Direta, onde o acesso ao registro é feito em ordem aleatória.

UNISAM – Campus Paulo Pereira Gomes – São Mateus. PAG 47


A estrutura de dados do tipo registro representa um conjunto de informações,
relacionadas a um determinado "objeto". Se reunirmos esse conjunto de registros(fichas)
em uma gaveta, podemos denominar essa gaveta de arquivo.

O acesso a um arquivo dentro do algoritmo é feito através da leitura e escrita de registros.


No algoritmo, o arquivo deve ser declarado e aberto, antes que tal acesso possa ser feito.
No final do algoritmo, ou quando houver necessidade, o arquivo deve ser fechado. A
estrutura chamada arquivo permite algumas operações básicas que podem ser
visualizadas através de uma analogia com um armário, contendo algumas gavetas. Iremos
assumir que cada uma das gavetas é um arquivo, nesse caso:

• Declarar um arquivo - rotular uma gaveta como nome do novo arquivo


• Abrir arquivo- abrir a gaveta. Só podemos manipular os registros(fichas) se o
arquivo(gaveta) estiver aberto. Portanto a primeira operação sobre um arquivo é
"abrir o arquivo".
• Fechar o arquivo - fechar a gaveta. Após o término da manipulação dos Registros,
devemos sempre fechar o arquivo(gaveta). Portanto, a última operação sobre um
arquivo é "fechar o arquivo".
• Escrever um registro - coloca uma nova ficha na gaveta
• Eliminar um registro - excluir uma ficha na gaveta
• Ler um registro- retirar uma ficha para consulta

A sintaxe da declaração de arquivos é :

Arquivo: <nome_arquivo><organização><nome_registro>

Onde:
<nome_arquivo> é o nome que será usado para referenciar o arquivo;
<organização> indica o tipo de organização do arquivo que pode ser Seqüencial
ou Direta;
<nome_registro> é o nome do registro que será usado para se ter acesso ao
arquivo.

Exemplo:
Registro = Ender
Literal[30]: nome, rua
Inteiro: numero
Fim_registro
Arquivo: Agenda Sequencial Ender
Ender: end1, end2

UNISAM – Campus Paulo Pereira Gomes – São Mateus. PAG 48


Neste exemplo foi declarado um arquivo de nome Agenda, composto de registros
que contém nome, rua e número. Esquematicamente pode se ter o seguinte:

Arquivo agenda:

NOME RUA NÚMERO


Bruno Oliveira Quintino Bocaiúva 1
Rondinei da Silva Caminho 2 100
Maria Terezinha Treze de Maio 56
. . .
. . .
. . .
João da silva Quinze de Novembro 6

Sintaxe para abertura/fechamento de arquivos:

Abra (<nome_arquivo>, Leitura)


Abra (<nome_arquivo>, Escrita)
Abra (<nome_arquivo>, Leitura/Escrita)
Feche (<nome_arquivo>)

8.3 Abertura de um Arquivo

A declaração do arquivo é a definição, para o algoritmo, do modelo e dos nomes que


estarão associados à estrutura de dados, isto é, ao arquivo.

A sintaxe da declaração de arquivos é :

abrir nome_ arq1, nome_arq2, ... , nome_arqn tipo_utilização;

onde:
• tipo_utilização – especifica se o arquivo será usado somente para leitura,
somente para escrita ou ambos, simultaneamente.

Exemplo:

abrir (Agenda leitura);


abrir (Agenda escrita);
abrir (Agenda);

UNISAM – Campus Paulo Pereira Gomes – São Mateus. PAG 49


abrir (Agenda, ContasPagar);

8.4 Fechamento do Arquivo


Para se desfazer a associação entre o modelo e o arquivo físico, usa-se o comando de
fechamento de arquivos, cuja sintaxe está a seguir:

fechar nome_ arq1, nome_arq2, ... , nome_arqn;

Exemplo:
Fechar (Alunos);
Fechar(Agenda);

8.5 Comandos de I/O (Input/Output) – Entrada e Saída

ler ( nome_arquivo , nome_registro );


escrever ( nome_arquivo , nome_registro );

Exemplo:

Ler (Alunos , Dados_Aluno);


Escrever(Alunos, Dados_Alunos);

8.6 Exemplo de Algoritmo Com Arquivo Seqüencial

Supondo que existe um arquivo de nome Pessoal com registros com campos:
nome, sexo e salário, fazer um algoritmo que leia este arquivo e crie um outro arquivo de
nome Homens composto de registros com nome, sexo e salário só dos homens do arquivo
Pessoal, conforme a figura abaixo:
Algoritmo Cópia_homens
Registro = Dados
Literal[30]: nome
Literal[2]: sexo
Real: salario
Fim_registro
Arquivo: Pessoal Sequencial Dados
Arquivo: Homens Sequencial Dados
Dados: var1
Início
Abra( Pessoal, Leitura)
Abra (Homens, Escrita)

UNISAM – Campus Paulo Pereira Gomes – São Mateus. PAG 50


Leia (Pessoal, var1)
Enquanto(var1.nome <> “Fim de Arquivo”)faça
Se (var1.sexo = “M”) então
Escreva (Homens, var1)
Fim_se
Leia(Pessoal, var1)
Fim_enquanto
Feche (Pessoal)
Feche (Homens)
Fim_Algoritmo

Figura 9. Exemplo de Algoritmo de arquivo seqüencial.

8.7 Exemplo de Algoritmo Com Arquivo Direito

Vejamos o algoritmo que o professor do exemplo acima utiliza para armazenar os


dados de seus alunos, Conforme a Figura Abaixo:

Algoritmo Alunos
Registro = Ficha
Literal[30]: nome
Inteiro: mat
Real: n1, n2, n3, med
Fim_registro
Arquivo: Cadastro Direta Ficha
Ficha: alun
Início
Abra (Cadastro, Escrita)
Repita
Escreva(“Digite o nome do aluno e sua matrícula:”);
Leia (alun.nome, alun.mat);
Se ( alun.mat > 0) então
Escreva(“Digite as três notas:”);
Leia (alun.n1, alun.n2, alun.n3);
alun.med ←( 4*alun.n1+5*alun.n2+6*alun.n3)/15;
Posicione (Cadastro, alun.mat);
Escreva (Cadastro, alun);
Fim_se
Até (alun.mat <= 0)

UNISAM – Campus Paulo Pereira Gomes – São Mateus. PAG 51


Feche (Cadastro);
Abra (Cadatro, Leitura);
Escreva (“Digite uma matrícula válida:”);
Leia (alun.mat);
Posicione (Cadastro, alun.mat);
Leia (Cadastro, alun)
Escreva(alun.nome, “possui média igual a “, alun.med);
Feche (Cadastro);
Fim_Algoritmo
Figura 10. Exemplo de Algoritmo de arquivo Direto.

UNISAM – Campus Paulo Pereira Gomes – São Mateus. PAG 52


Faculdade Pitágoras
Curso Bacharelado em Ciência da Computação

Curso: Algoritmos Data:___/___/____


Professor: Ramilton Costa Gomes Júnior
Aluno(a):

Lista 7
1) Declarar um arquivo com organização seqüencial para registros com o seguinte
formato:

NÚMERO DA NOME SALDO DATA DA


CONTA DOCLIENTE ÚLTIMA
OPERAÇÃO

2) Escrever o comando de abertura para o arquivo declarado no exercício 1,de modo


a permitir a atualização do registro, isto é, a leitura, modificação dos campos e
escrita do registro no mesmo arquivo.

3) Escrever um algoritmo para criar um arquivo seqüencial, com dados de uma


AGENDA, sendo que os dados serão lidos a partir de um teclado. O registro de
entrada do arquivo possui os seguintes campos:

NOME TELEF LOGR NÚME CIDAD ESTAD


ONE ADOU RO E O
RO

4) Faça um algoritmo para gerar um arquivo, composto de registros com


nome, sexo e salário.

5) A revendedora Autocar dispõe de um arquivo com os seguintes dados de


todos os seus automóveis: marca, modelo, ano de fabricação e preço. Faça
um algoritmo para ler estes dados e imprimir na tela do computador a lista
desses itens num dado ano ou numa dada marca.

UNISAM – Campus Paulo Pereira Gomes – São Mateus. PAG 53


BIBLIOGRAFIA

ÀSCENCIO, FERNANDA GOMES., Lógica de Programação. São Paulo,


Markron Books, 1999

CORMEN, THOMAS H,. Algoritmos: Teoria e Prática. Tradução da segunda


edição[americana]. Rio de Janeiro: Campus, 2002.

FARRER, H. et al., Algoritmos Estruturados, Editora Guanabara, 1989.

TERADA, R.;SETZER, V. Introdução à Computação e à Construção de


Algoritmos, São Paulo, Makron Books, 1992.

Site Web http://www.dcc.fua.br/~rosiane

Site Web http://www.inf.pucrs.br/~egidio/algo1/

Site Web http://fit.fa.ccat.br/~fpereira

Site Web http://www.renatodacosta.cjb.net

Site Web http:// www.inf.ufg.br/~deller/ApostilaAlg1.pdf

Site Web http://twiki.dcc.ufba.br/bin/view/MAT146/TodoMaterial

Site Web http://omi.mct.gov.mz/material/algoritm.doc

Site Web http://www.inf.uri.com.br/neilor/Apostila-de-Algoritmos-I.pdf

Site Web http://web.eep.br/~diego/sites/downs/Apostilas/Logica


%20Programacao/logica.doc

UNISAM – Campus Paulo Pereira Gomes – São Mateus. PAG 54

You might also like