Introducao A Programação
Introducao A Programação
Introducao A Programação
Docente
[email protected]
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
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.
Espero que este material didático seja útil e colabore para a sua formação
profissional.
O autor.
1.1 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
1.4 Algoritmo
Algoritmo é a descrição de uma seqüência de passos que deve ser seguida para a
realização de uma tarefa. (Ascencio,1999);
2. Fazer um sanduíche
• Pegar o pão
Exemplo:
Exemplo:
Forma Narrativa
Forma em fluxograma
Início
N1,N2
M = N1*N2
Fim
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
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 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
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.
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.
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.
Exemplo:
A B C=A+B
2 5 7
2.2 Identificadores
Exemplo:
_23ad
Nome
N34r
2.3 Constantes
Ex: PI ← 3.1416
Exemplos:
24 - número inteiro positivo
0 - número inteiro
-12 - número inteiro negativo
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:
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.
Exemplos:
“qual”
“qUaL”
“1234”
Exemplo
V
F
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.
a) COS
b) TAN
c) MOD
d) DIV
e) SQRT
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.
Operação Simbolo
Adição +
Subtração -
Multiplicação *
Divisão /
Exponenciação **
Tabela 3. Tabela de Operadores Aritméticos
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.
Para estabelecer prioridades no que diz respeito a qual operação executar primeiro, utilize
os parênteses.
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:
Expressão Resultado
A=B Falso
A <> B Verdadeiro
A>B Verdadeiro
A<B Falso
A >= B Verdadeiro
A <= B Falso
Operadores
E AND
OU OR
NÃO NOT
A tabela abaixo mostra todos os valores possíveis criados pelos três operadores
lógicos (AND, OR e NOT)
Exemplos:
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
[ 2
3 ]
5−3 1= (2/3+(5-3))+1=
Tradicional Computacional
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;
Exemplos:
PI = 3.1416;
Empresa = ‘UNISAM.’
V = Verdadeiro
Exemplos:
3.10 Comentários
Exemplo:
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.
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) x + y - 2x2 + y
2
b) x - √ x + 2x + y
y+z 2–y
SE <<CONDIÇÃO>>
ENTÃO <<COMANDO1>>
Outro exemplo:
SE <<CONDIÇÃO>>
ENTÃO <<COMANDO1>>
SENÃO <<COMANDO2>>
Outro exemplo:
CASO <<VARIÁVEL>> EM
RESPOSTA 1: COMANDO1;
RESPOSTA 2: COMANDO2;
.
.
.
RESPOSTA N: COMANDON;
FIM;
Exemplo:
caso idade de
0..11: imprima('Criança');
12..17: imprima('Adolescente');
18..59: imprima('Adulto');
60..150: imprima('Idoso');
fim;
Forma Geral 1:
Forma Geral 2:
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:
Forma Geral 4:
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>>
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).
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:
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.
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
Exemplo:
5.2 Função
Exemplo:
– Variável ← Função(Parâmetros)
– Variável ← Função(Parâmetros) + Z
– Procedimento(Parâmetros)
Exemplo:
PROGRAMA Exemplo_Passagem_Parâmetros;
declare x,y,z : INTEIRO;
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.
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.
6.1 Vetor
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
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]);
A forma geral é:
declare <identificador do vetor>: vetor [<intervalo das posições>] of <tipo dos valores do
vetor>
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
O que é permitido:
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
colunas à
1 40 34 50 27
Linhas
2 25 4 18 80
↓ 3 0 3 65 11
1 2 3 4
Na matriz acima, existem 3 linhas, cada linha com 4 colunas, ou 3x4 (três por
quatro). Essa matriz pode ser declarada assim:
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.
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;
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] );
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.
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.
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.
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
Registro = <nome_do_registro>
<componentes_do_registro>
Fim_registro
7.2 Campo
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.
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
Nome:_____________________________________
Observe que as variáveis que irão assumir valores desse tipo (registro) estão sendo
declaradas como Dados: x, y .
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
8.1 Introdução
8.2 Arquivo
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
Arquivo agenda:
onde:
• tipo_utilização – especifica se o arquivo será usado somente para leitura,
somente para escrita ou ambos, simultaneamente.
Exemplo:
Exemplo:
Fechar (Alunos);
Fechar(Agenda);
Exemplo:
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)
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)
Lista 7
1) Declarar um arquivo com organização seqüencial para registros com o seguinte
formato: