Você está na página 1de 36

Algoritmos

Introduo Computao 1
Francisco Vieira de Souza
O que software?
Termo associado aos programas de computador.
Viso muito restritiva.
Software compreende:
Programa
Documentao
Do sistema
De usurio
Introduo Computao 2
O que software?
Produtos Genricos
Produzidos por uma organizao de desenvolvimento e
vendidos no mercado
Pacotes de software
Produtos sob encomenda (ou personalizados)
Encomendados por um cliente particular e desenvolvidos
por uma empresa de software
Sistemas de controle de dispositivos eletrnicos
Introduo Computao 3
Atributos de um bom software
Alm dos servios que eles fornecem existem outros
atributos associados
No esto diretamente associados ao que o software faz
Estes Atributos:
Refletem seu comportamento quando em funcionamento,
A estrutura e
Organizao do programa fonte e tambm
A Documentao associada.
Introduo Computao 4
Atributos de um bom software
Dependendo da aplicao do sistema, o conjunto de
atributos pode mudar.
Exemplos
Um sistema bancrio deve ser seguro;
Um jogo interativo deve tem uma resposta rpida;
Um sistema de controle telefonia precisa ser confivel.
Introduo Computao 5
Objetivo da Engenharia de
Programas
Confeccionar programas com qualidade.
Programa com qualidade:
Produz resultados teis e confiveis na oportunidade certa.
fcil de usar, fcil de corrigir caso ocorra alguma falha.
Fcil de modificar quando houver uma alterao de
requisitos e passvel de evoluo.
Opera com economia de recursos, foi desenvolvido no
prazo estipulado e a um custo aceitvel.
Introduo Computao 6
A importncia do Software
Durante as 3 primeiras dcadas da era do computador, o
principal desafio era desenvolver um HARDWARE de
baixo custo e alto desempenho.
O hoje o desafio melhorar a qualidade (e reduzir os
custos) das solues baseadas em SOFTWARE!
Introduo Computao 7
Linguagens de Programao
A comunicao com o computador feita atravs de um
conjunto de regras, caracterizando as Linguagens de
Programao!
Exemplos: Python, C, Delphi, Java, Scala, Haskell,
Miranda, Ada, Smalltalk, Eiffel, Prolog, C++, C#, Ruby,
Perl, etc.
Programas. So seqncias finitas de comandos que tm
o objetivo de resolver um problema, apresentar uma
figura, calcular valores, tomar ou auxiliar decises.
Introduo Computao 8
Lgica de Programao
Para se programar em uma linguagem necessrio
possuir Lgica de Programao.
Lgica de Programao consiste em compreender
claramente os diversos passos e funes que so
realizados na execuo de um programa.
Introduo Computao 9
Programa
Introduo Computao 10
Algoritmo
Algoritmo uma seqncia limitada de instrues
organizadas de forma lgica e estruturada , expressas em
linguagem natural (Portugus estruturado), que tem por
finalidade resolver um problema ou descrever uma tarefa.
Introduo Computao 11
Exemplo Escovar os Dentes
Algoritmo Escovar_os_dentes
Incio_do_algoritmo
Colocar creme dental na escova
Escovar os dentes
Enxaguar a boca com gua
Enxugar a boca
Fim_do_algoritmo.
Introduo Computao 12
Blocos e comandos bsicos
So conjuntos de comandos com uma funo bem
definida. Eles servem tambm para definir os limites
onde as variveis declaradas em seu interior so
conhecidas.
Introduo Computao
13
Incio
<declaraes>
<comandos>
Fim
PORTUGOL
CHAPIN
FLUXOGRAMA
Incio
Fim
.
.
.
Introduo Computao 14
Sequncia simples
C
1
;
C
2
;
C
3
;
.
.
.
.
.
C
n
;
PORTUGOL
CHAPIN
FLUXOGRAMA
C
1
C
2
C
3
C
3
C
n
.
.
.
C
2
C
1
C
n
Algoritmo
Introduo Computao 15
PORTUGOL
CHAPIN
FLUXOGRAMA
inteiro : a, b, c, delta;
real : s, x1, x2;
a 1;
b 6;
c 1;
delta b
2
- 4ac;
s raiz(delta);
x1 (-b + s)/2a;
x2 (-b s)/2a;
Exemplo: Encontrar as razes da equao ax
2
+ bx + c = 0,
para a = 1, b = 6 e c = 1
a 1;
b 6;
c 1;
delta b
2
- 4ac;
s raiz(delta);
x1 (-b + s)/2a;
x2 (-b s)/2a;
c 1;
b 6;
a 1;
delta b
2
- 4ac;
s raiz(delta);
x1 (-b + s)/2a;
x2 (-b s)/2a;
Introduo Computao 16
Seleo simples
PORTUGOL
CHAPIN
FLUXOGRAMA
se <condio>
ento
C
1
;
C
2
;
.
.
.
C
n
;
fim se
<condio>
V
F
C
1
C
2
C
n
.
.
.
F
V
C
1
C
2
C
n
Portugol
Declarao de variveis
Introduo Computao 17
inteiro
real
caractere
lgico
: Nome_de_varivel ;
,
inteiro : VALOR, QUANTIDADE;
real : PI;
caractere : NOME;
lgico : TEM;
Algoritmo
Introduo Computao 18
PORTUGOL
CHAPIN
a 1;
b 6;
c 1;
delta b
2
- 4ac;
delta 0
s raiz(delta);
x1 (-b + s)/2a;
x2 (-b s)/2a;
inteiro : a, b, c, delta;
real : s, x1, x2;
a 1;
b 6;
c 1;
delta b
2
- 4ac;
se delta 0
ento
s raiz(delta);
x1 (-b + s)/2a;
x2 (-b s)/2a;
fim se
Exemplo: Encontrar as razes reais da equao ax
2
+ bx + c = 0
para a = 1, b = 6 e c = 1
f
v
Fluxograma
Componentes mais utilizados
Introduo Computao 19
Terminador
Comando
Entrada de Dados
Exibir
Deciso
Conector
Algoritmo
Introduo Computao 20
PORTUGOL
FLUXOGRAMA
c 1;
b 6;
a 1;
delta b
2
- 4ac;
Exemplo: Encontrar as razes reais da equao ax
2
+ bx + c = 0
x1 (-b + s)/2a;
x2 (-b s)/2a;
delta 0
v
f
s raiz(delta);
inteiro : a, b, c, delta;
real : s, x1, x2;
a 1;
b 6;
c 1;
delta b
2
- 4ac;
se delta 0
ento
s raiz(delta);
x1 (-b + s)/2a;
x2 (-b s)/2a;
fim se
Introduo Computao 21
Seleo dupla
PORTUGOL CHAPIN
FLUXOGRAMA
se <condio>
ento
C
1
;
C
2
;
.
.
C
n
;
seno
C
1
;
C
2
;
.
.
C
m
;
fim se
f
v
f
v
C
1
C
1
C
2
C
2
C
m
C
n
C
m
C
n
C
1
C
2
C
1
C
2
C
3
<condio>
Introduo Computao 22
Algoritmo
inteiro : a, b, c, delta;
real : s, x1, x2, pr, pi;
a 1;
b 6;
c 1;
delta b
2
- 4ac;
se delta 0
ento
s raiz(delta);
x1 (-b + s)/2a;
x2 (-b s)/2a;
seno
s raiz(-delta);
pr -b/2a;
pi s/2a;
fim se
Exemplo: Encontrar as razes de uma equao ax
2
+ bx + c = 0
PORTUGOL CHAPIN
s raiz(delta)
x1 (-b + s)/2a
x2 (-b s)/2a
f v
delta 0
a 1
b 6
c 1
delta b
2
- 4ac
s raiz(-delta)
pr -b/2a
pi s/2a
Introduo Computao 23
Algoritmo
inteiro : a, b, c, delta;
real : s, x1, x2, pr, pi;
a 1;
b 6;
c 1;
delta b
2
- 4ac;
se delta 0
ento
s raiz(delta);
x1 (-b + s)/2a;
x2 (-b s)/2a;
seno
s raiz(-delta);
pr -b/2a;
pi s/2a;
fim se
c 1;
b 6;
a 1;
delta b
2
- 4ac;
x1 (-b + s)/2a;
x2 (-b s)/2a;
delta 0
v
f
s raiz(delta); s raiz(-delta);
pr -b/2a;
pi s/2a;
Exemplo: Encontrar as razes de uma equao ax
2
+ bx + c = 0
PORTUGOL
FLUXOGRAMA
Introduo Computao 24
Repetio
PORTUGOL
CHAPIN FLUXOGRAMA
enquanto <condio> faa
C
1
;
C
2
;
.
.
.
C
n
;
fim enquanto;
<condio>
<condio>
C
1 C
1
C
2
C
n
C
2
C
n
Introduo Computao 25
Algoritmo
incio
inteiro : A, B, I, C;
A1;
B 1;
I 1;
enquanto I < 18 faa
C A + B;
A B;
B C;
I I + 1;
fim enquanto;
fim
A 1
B 1
I < 18
C A + B
A B
B C
I I + 1
I 1
PORTUGOL
CHAPIN
Introduo Computao
26
Algoritmo
incio
inteiro : A, B, I, C;
A1;
B 1;
I 1;
enquanto I < 18 faa
C A + B;
A B;
B C;
I I + 1;
fim enquanto;
fim
PORTUGOL
A 1
B 1
C A + B
A B
B C
I I + 1
I 1
incio
fim
I < 18
FLUXOGRAMA
Algoritmo
Introduo Computao 27
leia (
varivel
) ;
,
Entrada/Sada
imprima (
varivel
) ;
,
expresso
caractere
leia(v
1
, v
2
, v
3
,... ,v
n
)
leia
v
1
, v
2
, v
3
,... ,v
n
Introduo Computao 28
Algoritmo
leia(v
1
, v
2
, v
3
,... ,v
n
)
imprima(v
1
, l
1
, c
1
)
imprima
v
1
, l
1
, c
1
imprima(v
1
, l
1
, c
1
)
PORTUGOL
FLUXOGRAMA
CHAPIN
Regras prticas para a construo de bons
algoritmos
1. Procure incorporar comentrios pelo menos para descrever o
significado das variveis utilizadas. Os comentrios podem
ocorrer em qualquer parte do algoritmo, encerrados entre chaves {
e }. Ex.: {declarao de variveis}, {clculo da mdia}.
2. Escolha nomes de variveis que sejam significativos, isto , que d
alguma informao a ser armazenada.
Ex.: NOTA, NOME, CPF, MATRCULA.
1. Grife todas as palavras-chave (escritas em letras minsculas) do
algoritmo, destacando as estruturas de controle.
2. Procure alinhar os comandos de acordo com o nvel a que
pertencem.
Introduo Computao 29
Algoritmo
Algoritmo
Introduo Computao 30
incio
inteiro : VALOR, SOMA;
SOMA 0;
leia (VALOR);
enquanto VALOR -1 faa
SOMA SOMA + VALOR;
leia (VALOR);
fim enquanto;
imprima (O VALOR DA SOMA : , SOMA);
fim
Exemplo: Dado um conjunto de valores inteiros e
positivos, determinar qual o menor valor do conjunto. Um
valor igual a -1 indica o fim da entrada dos dados.
incio
inteiro : MENOR, {contm a cada instante o menor valor lido}
VALOR; {recebe o valor lido}
leia (VALOR);
MENOR VALOR;
enquanto VALOR -1 faa
se VALOR < MENOR
ento MENOR VALOR;
fim se;
leia (VALOR);
fim enquanto;
imprima (O MENOR VALOR , MENOR);
fim
Introduo Computao 31
Algoritmo
Exemplo: Achar o maior e o menor valor de uma srie de nmeros
positivos. Existe pelo menos um valor vlido e um valor zero termina
a srie de entrada.
incio
inteiro : MAIOR, {conter o maior valor}
MENOR, {conter o menor valor}
VALOR; {recebe o valor lido}
leia (VALOR);
MAIOR VALOR;
MENOR VALOR;
enquanto VALOR 0 faa {admitindo que o ltimo valor seja 0}
se VALOR > MAIOR
ento MAIOR VALOR;
seno se VALOR < MENOR
ento
MENOR VALOR;
fim se;;
fim se ;
leia (VALOR);
fim enquanto;
imprima (O MAIOR VALOR , MAIOR, E O MENOR VALOR , MENOR);
fim
32
Algoritmo
Introduo Computao 33
Algoritmo
Exemplo: Dados trs valores, A, B e C, verificar se eles
podem ser as medidas de um tringulo e qual o tipo.
incio
real : A, B, C; {valores a serem verificados}
leia (A, B, C);
se A < B + C e B < A + C e C < A + B
ento
se A = B e B = C
ento imprima (TRIANGULO EQUILATERO;
seno se A = B ou A = C ou C = B
ento imprima (TRIANGULO ISOSCELES);
seno imprima (TRIANGULO ESCALENO);
fim se;;
fim se ;
seno imprima (OS VALORES DADOS NO REPRESENTAM UM TRIANGULO);
fim se
fim
F
V
Introduo Computao 34
Incio
Leia(PAI)
FILHO 1
S 0
FILHO PAI
GEN PAI FILHO + 1
S S + FILHO / GEN
FILHO FILHO + 1
O CASAL NO TEM FILHOS
Fim
Algoritmo
Exerccio 1: Escreva um algoritmo para gerar e
imprimir os n termos da srie de Fibonacci.
Exerccio 2: Escreva um algoritmo para calcular
S = 1/N + 2/(N-1) + 3/(N-2) + ... + (N-1)/2 + N
Exerccio 3: Dada uma lista de alunos
juntamente com suas 3 notas parciais, mostre uma
relao destes mesmos alunos com suas
respectivas notas parciais e mdias, informando a
atual situao deles, ou seja, se j est reprovado,
se vai fazer uma avaliao final ou se j est
aprovado por mdia.
Introduo Computao 35
Algoritmos
Exerccio 4: Escreva um algoritmo que calcule o
fatorial de um dado nmero n a ser lido pelo
teclado.
Exerccio 5: Escreva um algoritmo para calcular
a mdia aritmtica e o desvio padro de uma
srie de nmeros reais dados.
Exerccio 6: Dada uma lista de nmeros inteiros,
construa um algoritmo que ordene esta srie em
forma crescente.
Introduo Computao 36
Algoritmo