LA SALLE
Curso Técnico em Informática
Método de Programação
Prof. Esp. Valter N. Silva
e-mail: [email protected]
Tel: (0XX) (51) 9991-5369
1
Algoritmo


Produzir um programa para um computador é
definir, detalhadamente, os passos lógicos
que o computador precisa seguir para
executar uma determinada tarefa.
Só é possível informar ao computador o que
fazer se tivermos uma idéia clara de como
pretendemos que ele faça o que desejamos.
2
Algoritmo

Está aí dificuldade de programação: mostrar
que um dado problema pode ser resolvido
por um conjunto seqüencial de instruções.
Neste sentido, primeiro raciocinamos sobre o
assunto, tentando definir com clareza os
passos necessários para a solução
imaginada e, por fim codificamos em uma
linguagem que o computador possa
entender.
3
Dentre
as
formas
de
representação
de
algoritmos mais conhecidas sobressaltam:
Descrição
Narrativa;
Fluxograma
Convencional;
Pseudocódigo,
conhecida como Linguagem
estruturada ou Portugol.
4
Descrição Narrativa:
Receita de bolo:
Misture os ingredientes
Unte a forma com manteiga
Despeje a mistura na forma
Se houver coco ralado então
despeje sobre a mistura
Leve a forma ao forno
Enquanto não corar
Deixe a forma no forno
Retire do forno
Deixe esfriar
5
Fluxograma Convencional
Início
Ler N1, N2
Média
(N1+N2)/2
“Reprovado”
Média > 7
.S.
“Aprovado”
.N.
Fim
6
Pseudocódigo ou Linguagem Estruturada
Algoritmo Média
Var N1, N2, Média : real
Início
Leia N1, N2
Média  (N1 + N2) / 2
Se Média < 7 Então
Escreva “Reprovado”
Senão
Escreva “Aprovado” Fim_se
Fim.
7
Dados Numéricos
O conjunto dos números naturais é representado por N
e é dado por:
N = {1,2,3,4,...)
Conjunto dos números inteiros.
Z = { ...,-3,-2,-1,0,1,2,3,...}
Conjunto de números reais.
PI = 3,14159
8
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.
Exemplo de números inteiros:
28 – número inteiro positivo
0 – número inteiro
-12 – número inteiro negativo
9
Dados Numéricos Reais
Os dados de tipo real são aqueles que podem possui
componentes decimais ou fracionários, e podem
também ser positivos ou negativos.
Exemplo de dados do tipo real:
24.01 – número real positivo com duas casas decimais
144. - número real positivo com zero casas decimais
-13.3 - numero real negativo com uma casa decimal
0.0 - número real com uma casa decimal
0.
- número real com zero casas decimais
10
Dados Literais (caracter)
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,
(0..9 – A ..Z, a .. Z) carateres especiais ( #, /, %, *, ?, ~, !, @ ...)
cadeia (ou cordão) de caracteres, ou ainda, do inglês , STRING.
Obs.: Os dados literais são representados nos algoritmos pela
coleção de caracteres , delimitada em seu início e término com o
caracteres aspas ( “ ).
Exemplos:
“QUANDO ?”
- Literal de comprimento 8
“”
- Literal de comprimento 1
“1-2+7=“
- Literal de comprimento 6
11
Dados Lógicos
O tipo de dados lógico é usado para representar dois
únicos valores lógicos possíveis: verdadeiro e falso. É
comum encontrar referências como tipos de valores
lógicos como sim/não, 1,0, true/false. (dois estados)
Exemplo:
.V. - valor lógico verdadeiro
.F. - valor lógico falso
12
Algoritmos Seqüenciais.


Consiste de comandos de atribuição de
entrada e saída encadeados em uma
seqüência.
1 Escrever um algoritmo que leia 3 notas
de um aluno e calcule a média aritmética. Ao
final escreva a média.
13
Algoritmo de notas
Programa Notas
Variáveis
MA, N1, N2, N3: real
Início
Ler (N1, N2,N3)
MA : = (N1+N2+N3) / 3
Escrever “Média Aritmética: “ , MA
Fim do Algoritmo.
14
Exemplo
2  Faça um Algoritmo que calcule as
raízes de uma equação de 2º grau, a
partir dos coeficientes A,B,C fornecidos
pelo usuário.
15
Algoritmo
Programa calculo;
Variáveis
A,B, C, X1, X2 : real;
Início
Ler (A, B,C)
X1 : = (-B+SQRT(B*B-4*A*C) / 2 * A
X2 : = (-B-SQRT(B*B-4+A+C)/2*A
Escrever “As Raízes: “ ,X1,X2
Fim
16
Atenção
Para que um computador possa
desempenhar uma tarefa é necessário que esta
seja detalhada passo a passo numa forma
compreensível pela máquina, utilizando aqui
que se chama de programa. Neste sentido, um
programa de computador nada mais é que um
algoritmo escrito numa forma compreensível
pelo computador.
17
Para se ter um algoritmo
é necessário preciso:
a)
b)
c)
d)
e)
Que se tenha um número finito de passos
Que cada passo esteja precisamente definido;
Que existam entradas ou valores iniciais;
Que existam uma ou mais saídas;
Que exista uma condição de fim.
18
Elementos de um algoritmo
a)
b)
c)
d)
Seqüência;
Seleção;
Repetição condicional;
Repetição contada;
19
Tipos Primitivos de Dados
A elaboração de qualquer algoritmo seria
impossível se desconsiderasse as estruturas
de dados envolvidos, pois todo o trabalho do
computador está baseado na manipulação
das informações contidas na sua memória.
20
Declaração de variáveis
Var
<nome da variável> : <Tipo primitivo de dados>
Ou
<lista de variáveis> : <Tipo primitivo de dados>
Sintaxe:
var
idade : inteiro
salario, inflacao : real
endereco : caracter
verdade : logico
21
Tipos de informações
As informações tratadas em um algoritmo
podem ser classificadas em dois tipos:
Constantes  Informações que não sofrem
alterações com o decorrer da execução do
algoritmo.
Instrução de atribuição muito
utilizado nos algoritmos como
() e na programação em
pascal (:=)
Sintaxe:
const
nome := “Angela”
mensagem := “Bom noite !”
UF : = “RS”
22
Variáveis: Informações que tem a possibilidade
de serem alteradas em algum instante no
decorrer da execução do algoritmo ( programa).
Sintaxe:
var
nome : caracter;
salario : real;
idade : inteiro;
23
Comando de atribuição
Comando de
atribuição
<variável> := <expressão>
24
Estrutura de um algoritmo
Algoritmo < nome do algoritmo >
Var
< declaração de variáveis >
Const
< declaração de constante >
Inicio
escrever
ler
Comandos
testar
calcular
Fim.
25
Comando de entrada e saída
Entrada: ler < lista de variáveis>
Saída: escrever < lista de variáveis>
Exemplo:
Ler A, B, C
calcular
Escrever “A media do aluno é: “, media
26
Algoritmos Condicional.
1  Faça um algoritmo que receba 3 números reais diferentes e informe qual é
o maior .
Algoritmo nros;
Var A, B, C : inteiro;
Ler A, B e C
Se A é Maior que B
Então
Se A é Maior que C
Escrever “A é o maior”
Senão
Escrever “C é o maior”
Fim Se
Senão
Então
Se B é maior que C
Escrever “B” é o maior”
Senão
Escrever “C é o maior”
Fim Se
Fim Se
27
Fim do Algoritmo.
2  Leia número, nome e salário atual de um funcionário.
Calcule o novo salário com um reajuste de 10 %. Escreva o
número, nome e salário novo ao final da leitura do registro.
Algoritmo Salário
Var
nro : inteiro
nome : Literal[30]
salário : real
inicio
ler nro, nome, salário
salário := (salário * 1.10)
escrever (número, nome, salário)
fim.
28
3 - Leia o ano de nascimento de uma pessoa e calcule sua idade. Caso
seja maior ou igual à 21 anos exiba a seguinte mensagem: “Maior de
idade” caso contrário “Menor de idade”.
Algoritmo idade
Var
Ano_nasc: inteiro;
Ano_atual: inteiro;
Idade: inteiro;
Inicio
Ler ano_atual
Ler ano_nasc
Idade := (ano_atual – ano_nasc)
Escrever idade
Se idade >= 21 Então
Escrever “Maior de idade”
Senão
Escrever “Menor de idade”
Fim.
29
Fluxograma
Exemplo: Ler salário de funcionários da empresa XYZ e
conceder reajuste salarial conforme os cargos. Aos
Técnicos o reajuste será de 50 %, os Gerentes 30 % e aos
demais 10 %.
30
Algoritmo
Programa reaj_salario;
Var Salario, sal_reaj : real;
Prof : literal[20];
Início;
Leia salário, prof;
Escolha
Caso prof = “Técnico”
Sal_reaj
1.5 * salário
Caso prof = “Gerente”
Sal_reaj
1.3 * salário
Senão
Sal_reaj
1.1 * salário
Fim escolha
Escrever “ Salario Reajuste = “ ; Sal_reaj;
Fim.
31
Fluxograma seguido de algoritmo
Algoritmo
Início
Program reaj_salario;
Ler Salário
var Salario, Sal_reaj : real;
Prof..
Prof : literal[20];
Prof =
Início;
V
“Técnico”.
Sal_Reaj.
1.5 * Salário
Leia salário, prof;
Escolha
Prof =
“Gerente”.
F
V
Caso prof = “Técnico”
Sal_Reaj.
Sal_reaj
1.3 * Salário
Caso prof = “Gerente”
Sal_reaj.
1.1 * Salário
“Salário
Reajustado”,
Sal_reaj
Sal_reaj
1.3 * salário;
Senão
Sal_reaj
1.1 * salário;
Fim escolha
Escrever
Fim
1.5 * salário;
“Salário
Reajustado”,
Sal_reaj;
Fim.
32
Fluxograma seguido de algoritmo
Início
Algoritmo Média
Ler N1, N2
Média
(N1+N2)/2
Média > 7
.S.
“Aprovado”
.N. “Reprovado”
Var N1, N2, Média : real
Início
Leia N1, N2
Média  (N1 + N2) / 2
Se Média < 7 Então
Escreva “Reprovado”
Senão
Escreva “Aprovado”
Fim_se
Fim.
Fim
33
Exercícios
1)Desenvolver um algoritmo que leia a altura, largura e profundidade após
calcule o perímetro.
Programa área;
Variavel
A,L,P : integer;
Início
Escrever(‘Altura:’);
ler(A);
Escrever(‘Largura:’);
ler(L);
Escrever(‘Profundidade:’);
ler(P);
escrever(‘Resposta: ‘,A*L*P,’cm3);
fim.
34
1) Ler 10 nº e mostre a quantidade de nº negativos e positivos.
Programa ler_num;
variavel
X,N,POS,NEG : inteiro;
início
limpar tela;
escrever(´Informe 10 numeros´);
X:= 1;
enquanto (X< 11) faça
início
ler(N);
se (N < 0 ) então
neg := neg +1
senão
pos := pos + 1;
fim.
X:=X +1;
escrever(´Numeros positivos: ´, POS);
escrever(´Numeros negativos:´, NEG);
fim
Fim.
35
2) Digite um número que não seja negativo, caso ocorra de um ser
negativo escreva-o na tela e envie esta mensagem  Este número eh
negativo, quando o número for positivo você enviará duas mensagens:
 Você digitou certo
 Este número não é negativo
programa nro_correto;
variável
numero : real;
início
escrever(´Digite um numero não negativo´);
ler(numero);
se numero < 0 então
início
escrever(´Voce digitou : ´, numero);
escrever(´Este numero eh negativo´);
fim
senão
início
escrever(´Voce digitou certo: ´, numero);
escrever(´Este valor não eh negativo´);
fim;
36
fim.
Atenção !!!
- repete o bloco de comandos até que a condição seja
verdadeira;
- não é necessário incluir inicio e fim para especificar o bloco
de comandos pertencentes ao comando repetir;
- como a condição é testada somente no final do comando,
o bloco de comandos do repetir é executado pelo menos
uma vez.
37
Algoritmo
1 – Conhecer dois valores (variáveis A e B);
2 - Efetuar a soma dos valores A e B e implicar o valor da soma em X;
3 – Verificar se X e maior ou igual 10, caso sim mostre X+5, senão mostre
X-7.
Programa ADICIONA_NUMEROS;
Var
X, A, B : integer;
Inicio
escrever(‘Informe um valor para a variável A: ‘); ler(A);
escrever(‘Informe um valor para a variável B: ‘); ler(B);
X := A + B;
escrever(‘O resultado equivalente a: ‘);
se (X >= 10) então
então(X + 5)
senão
então(X – 7);
fim.
38
Operadores Aritméticos
As quatro operações básicas:
+  adição
-
subtração
*
multiplicação
/
divisão
39
Operadores Relacionais e
Lógicos
< menor que
> maior que
<= menor ou igual que
>= maior ou igual que
= igual a
<> diferente de
e; ou; não negação
40
Operadores Lógicos
Existem ocasiões onde é necessário
trabalhar com o relacionamento de duas ou
mais condições ao mesmo tempo na mesma
instrução se...então, efetuando desta forma
testes múltiplos. Para estes casos é necessário
trabalhar com a utilização dos operadores
lógicos, também conhecidos como operadores
boleanos.
41
Os operadores relacionais são três: e, ou e
não. Em alguns casos, o uso de operadores
lógicos evita a utilização de muitas instruções
se...senão encadeadas.
42
PONTO E VÍRGULA:
O ponto e vírgula no Algoritmo (Turbo Pascal) indica o fim do
comando e sua presença é obrigatória.
INÍCIO E FIM DE PROGRAMA:
Todos os programas em Algoritmo (Turbo Pascal) devem começar e
terminar desse modo:
programa Exemplo;
.
.
início
.
.
fim.
O "programa" indica o início do programa;
"Exemplo" é um nome qualquer dado ao programa;
“início" indica o início e ‘fim" o fim do processamento.
43
Operador Lógico: E
O operador do tipo E é utilizado quando dois
ou mais relacionamentos lógicos de uma
determinada condição necessitam ser verdadeiros.
Abaixo é apresentada a tabela verdade para este
tipo de operador:
Condição 1
Falsa
Falsa
Verdadeira
Verdadeira
Condição 2
Falsa
Verdadeira
Falsa
Verdadeira
Resultado
Falso
Falso
Falso
Verdadeiro
44
O operador E faz com que somente seja executada
uma determinada operação se todas as condições
mencionadas forem simultaneamente verdadeiras,
gerando assim um resultado lógico verdadeiro.
Exemplo:
programa TESTA_LOGICA_E;
var numero : inteiro;
início
escrever('Informe um número: ');
ler(numero);
se (numero >= 20) e (numero <= 90) então
escrever('O número está na faixa de 20 a 90')
senão
escrever('O número está fora da faixa de 20 a 90');
fim.
45
Operador Lógico: OU
O operador o tipo ou
dos relacionamentos
relacionamento) de
verdadeiro. Abaixo é
este tipo de operador:
Condição 1
Falsa
Verdadeira
Falsa
Verdadeira
é utilizado quando pelo menos um
lógicos (quando houver mais de um
uma condição necessita ser
apresentada a tabela verdade para
Condição 2
Falsa
Falsa
Verdadeira
Verdadeira
Resultado
Falso
Verdadeiro
Verdadeiro
Verdadeiro
46
Exemplo:
programa TESTA_LOGICA_OR;
var
sexo : literal;
início
escrever('Entre com o seu sexo: '); ler(sexo);
escrever;
se sexo = 'masculino' ou sexo = 'feminino' então
escrever('O seu sexo ‚ válido')
senão
escrever('O seu sexo ‚ inválido');
fim.
47
Operador Lógico: NÃO
O operador do tipo não é utilizado quando se necessita
estabelecer que uma determinada condição deve não ser
verdadeira ou deve não ser falsa. O operador não se
caracteriza por inverter o estado lógico de uma condição.
Abaixo é apresentada a tabela verdade para este tipo de
operador:
Condição 1
Verdadeira
Falso
Resultado
Falso
Verdadeiro
48
O operador não faz com que seja executada uma determinada
operação, invertendo o resultado lógico da condição. Veja o exemplo
a seguir:
programa TESTA_NÃO_LOGICA;
var
A, B, C, X : inteiro;
início;
escrever('Entre um valor para a variável A: '); ler(A);
escrever('Entre um valor para a variável B: '); ler(B);
escrever('Entre um valor para a variável X: '); ler(X);
se não (X > 5) então
C := (A + B) * X
senão
C := (A - B) * X;
escrever('O resultado da variável C corresponde a: ', C);
fim.
49
Os Loopings
Existem situações onde é necessário repetir um
determinado trecho de um programa um número de
vezes. Isto pode ser conseguido de duas formas: a
primeira, onde será escrito o mesmo trecho tantas
vezes quanto necessário, um tanto trabalhoso, e a
Segunda forma onde poderá ser utilizado o conceito de
looping. Os loopings são conhecidos também por:
laços ou malhas. A principal vantagem em se utilizar o
conceito de looping é que passa a ter um tamanho
menor.
50
Estrutura Enquanto...faça
Enquanto <(condição)> faça
início
<instruções para condição
verdadeira>
fim;
51
Algoritmo
1 – Criar uma variável para servir como contador com valor inicial 1;
2 – Enquanto o valor do contador for menor ou igual a 5, processar os
passos 3, 4 e 5;
3 – Ler os valores;
4 – Efetuar o cálculo, implicando o resultado em R;
5 – Apresentar o valor calculado contido na variável R;
6 – Acrescentar o contador com mais 1;
7 – Quando contador for maior que 5 encerrar o processamento.
52
Programa LOOPING_1A;
Var
A, B, R, I : inteiro;
início
I := 1;
enquanto ( I<= 5) faça
início
escrever(‘Entre um valor para A: ‘);
ler(A);
escrever(‘Entre um valor para B: ‘);
ler(B);
R := A + B;
escrever(‘O resultado corresponde a: ‘, R);
fim;
fim.
53
looping
Um programa que vai executar a rotina
varias vezes, mas este não sabe quantas vezes ao
certo deverá executar o trecho de programa. Neste
caso, não seria conveniente manter um contador
para controlar o looping, seria melhor que o
programa fizesse ao usuário uma pergunta,
solicitando se o mesmo deseja ou não continuar
executando programa.
54
Algoritmo
1- Criar uma variável para ser utilizada como resposta;
2- Enquanto a resposta for sim, executar os passos 3, 4 e 5;
3- Ler os valores;
4- Efetuar o cálculo, aplicando o resultado em R;
5- Apresentar o valor calculado contido na variável R;
6- Quanto a resposta for diferente de sim, encerrar o processamento.
55
Programa LOOPING_1B;
var
A, B, R : inteiro;
RESP : literal;
início
RESP := ‘SIM’;
enquanto (RESP = ‘SIM’) or (RESP = ‘S’) faça
início
escrever(‘Entre um valor para A: ‘);
ler(A);
escrever(‘Entre um valor para B: ‘);
ler(B);
R := A + B;
escrever(‘O resultado corresponde a: ‘, R);
escrever(‘Deseja continuar ? ‘);
ler(RESP);
fim;
fim.
56
Repita..Até
O comando repita controla repetições de trecho de programas tal
como o para. Mas há duas diferenças fundamentais que são estas:
Comando: repita  controla a condição de repetição após sua
execução. Ele é sempre executado pelo menos uma vez.
1.O número de vezes que as linhas de programas situadas dentro
do repita...até não precisa estar predefinido. Os próprios
comandos situados no repita...até podem determinar a saída ou
não do laço de repetição.
2.A verificação da suficiência ou não da condição de repetição é
feita no fim do laço.
57
1) O programa abaixo só terminará se for digitado um
número menor que zero.
Programa teste1;
var
valor : real;
início
valor  0;
repita
escrever(‘Digite um número:’ );
ler(valor);
Quando o número(valor) digitado for
até valor < 0;
menor que zero (número negativo), o
programa terminará o laço.
fim.
58
2)O programa a seguir imprime números de zero a
100.
Programa Teste2;
var
I : real;
início
I  0;
repita
escrever( I );
I  I + 1;
até I > 100;
fim.
59
3) Este algoritmo deverá ler 150 valores e calcular a soma deles,
utilizando o comando Repita..até.
Programa teste3.
Var
soma, x, valor : inteiro;
Início
Escrever (‘Digite 150 valores inteiro: ‘);
Soma:= 0;
X  1;
Repita
Ler(valor);
Soma  (Soma + Valor);
X  (X + 1);
Até X > 150;
Escrever (‘Soma Final dos Valores: ‘, Soma);
End.
60
4) Desenvolva um algoritmo que acesse números maiores que
zeros, quando for digitado um número igual a zeros ou menor
o programa deverá encerrar.
Programa maior_que_zero;
Variável
Num : inteiro;
início
Repetir
Escreva(‘Digite um Valor:’);
Ler (num)
Se num > 0 então
Escreva(‘Raíz Quadrada: ’, Num, ‘eh’, SQRT(num):2:2);
Até num =< 0;
fim.
61
Para..Faça
Atenção !!

A
variável
contadora
é
controlada
automaticamente pelo comando PARA. Não
devemos alterar o valor desta variável
durante a execução do PARA.

O próprio comando PARA testa a variável
contadora e encerra a sua execução quando
esta variável tiver o valor > que o valor final
definido;
62
Para..Faça
1) Esta estrutura de repetição é utilizada quando se sabe o
número de vezes em que um trecho de programa deve ser
repetido.
Exemplo:
Programa teste;
Var
cont : inteiro;
Início
para cont := 1 até 4 faça
inicio
comando1;
comando2;
fim;
Fim.
63
2) Este algoritmo deverá ler 150 valores e calcular a soma
deles, utilizando o comando Para..Faça.
Programa teste4;
Var
soma, X, valor : interiro;
Início
Escrever(‘Digite 150 valores inteiros: ‘);
soma  0;
Para X  1 até 150 faça
início
ler(valor);
soma  soma + valor;
fim;
Escrever (‘Soma final dos valores: ‘, soma);
Fim.
64
3) Ler 10 nº e mostre a quantidade de nº negativos e positivos.
Programa ler_num;
variável
CONT,N,POS,NEG : inteiro;
início
escrever(´Informe 10 números: ´);
cont  0;
para cont  1 até 10 faça
início
ler(N);
se (N < 0 ) então
neg := neg +1
senão
pos := pos + 1;
fimse
fim
escrever(´Números positivos..: ´, POS);
escrever(´Números negativos.: ´, NEG);
Fim.
65
4) Ler 05 notas a cada nota lida o algoritmo deverá exibir caso a
NOTA ser igual ou superior a 7 a seguinte mensagem: ‘ Você está na
Média’) caso contrário a mensagem deverá ser: ‘ Você está abaixo da
Média’).
Programa Medias;
variável
CONT,NOTA : inteiro;
início
escrever(´Ler notas: ´);
para CONT  1 até 5 faça
início
ler(Nota);
se (N >=7 ) então
escrever(‘Você está na média’)
senão
escrever(‘Você está abaixo da Média’);
fim;
Fim.
66
Download

Algoritmo