Sei sulla pagina 1di 81

Conceitos Fundamentais de

Algoritmos

REFERNCIA: Material dos Profs. Reinaldo Gomes


(UFRPE) e Robson Fidalgo (UFPE)
www.xiscanoe.org

Algoritmo
o pensamento descrito como uma sequncia
de passos que visam atingir um objetivo
Algoritmos no dia-a-dia: Receita de bolo,
orientao para se chegar em algum endereo
Qual sua importncia na programao?
Representar o raciocnio, independentemente de
detalhes computacionais, que podem ser
acrescentados mais tarde
Focalizar primeiro na resoluo algortmica do
problema, possibilitando depois codific-la em
qualquer linguagem

Algoritmo Textual Informal


Modo de preparo:

Quo cremoso?!?

Bata a margarina, as gemas e o acar at ficar


Quanto tempo?!?
cremoso
Junte o leite, o coco e a farinha e continue
batendo
De uma vez s?!?
Acrescente o fermento e, por ltimo, as claras em
neve
Quanto tempo?!?
Unte uma forma com manteiga e leve ao forno
para assar

Algoritmo Textual Informal


Refinado
Modo de preparo:
Bata a margarina, as gemas e o acar por 15
minutos
Junte o leite, o coco e a farinha e continue
batendo por mais 15 minutos
Acrescente 20 g de fermento e, por ltimo, as
claras em neve
Unte uma forma com manteiga e leve ao forno
para assar por 30 minutos

Algoritmo Grfico-Textual Informal


Montagem de um Aeromodelo
Material

Cola especial para plsticos


Estilete
Lixas finas
Durex ou fita crepe
Pregador de roupas, elsticos

Algoritmo Grfico-Textual
Informal
Identificao das peas

Algoritmo Grfico-Textual
Informal
Instrues
Leia e entenda as instrues antes de comear a
montagem
Lave as peas com gua e detergente. Na lavagem
sero removidos desmoldantes e sujeiras, que
dificultam a colagem e a pintura. Faa isto dentro de
uma bacia, para evitar perder peas pequenas, que
porventura se soltem
Encontre as peas que devem ser usadas na
primeira parte da montagem (figura do slide anterior)
Lixe as peas com cuidado eliminando as rebarbas
...

Algoritmo Textual Informal 2


Troca de pneu
Abra o porta-mala e verifique se todos
acessrios esto l. Em caso negativo,
feche o porta-malas e pea carona a
algum. Em caso positivo, retire o
tringulo, posicione-o a cerca de 30 m do
carro, e, depois, retire o estepe e o macaco.
Levante o carro...

Algoritmo Grfico Informal


Troca de pneu

Algoritmo Grfico Semi-formal


Troca de pneu (Fluxograma)

Abre porta-malas

Sim
Acessrios
OK?

No
Fecha
porta-malas

Pega tringulo

Algoritmo Grfico Semi-formal


Troca de uma lmpada (Fluxograma)
incio
ir para o primeiro soquete

posicionar escada
no
acendeu?

soquetes
restantes < 10

buscar lmpada nova


V
acionar o interruptor

retirar a lmpada queimada

subir na escada

colocar lmpada nova

V
acionar o interruptor

no
acendeu?

retirar a lmpada queimada


ir ao prximo soquete
colocar lmpada nova

V
pegar uma escada

acionar o interruptor

fim

Algoritmo Textual Formal


Troca de pneu
abre(porta_malas)
Se acessorio_ok = FALSO
Ento
fecha(porta_malas)
espera_carona()
Seno
pega_triangulo()

...

Algoritmo: Problemas Complexos


Problema da Torre de Hani
Seja a seguinte situao:
deve-se mover todos os discos do primeiro eixo para o
terceiro mantendo-se a ordem original
em cada movimento, pode-se mover apenas um disco
um disco nunca poder ser sobreposto por outro maior

Algoritmo: Problemas Complexos


Passo 1:
mova disco menor para terceiro eixo

Algoritmo: Problemas Complexos


Passo 2:
mova disco mdio para segundo eixo

Algoritmo: Problemas Complexos


Passo 3:
mova disco menor para segundo eixo

Algoritmo: Problemas Complexos


Passo 4:
mova disco maior para terceiro eixo

Algoritmo: Problemas Complexos


Passo 5:
mova disco menor para primeiro eixo

Algoritmo: Problemas Complexos


Passo 6:
mova disco mdio para terceiro eixo

Algoritmo: Problemas Complexos


Passo 7:
mova disco menor para terceiro eixo

Algoritmo: Problemas Complexos


Seqncia de passos completa:
Passo 1: mova disco menor para terceiro eixo
Passo 2: mova disco mdio para segundo eixo
Passo 3: mova disco menor para segundo eixo
Passo 4: mova disco maior para terceiro eixo

Passo 5: mova disco menor para primeiro eixo


Passo 6: mova disco mdio para terceiro eixo
Passo 7: mova disco menor para terceiro eixo

O que Programao? =
ABSTRAO!

A realidade complexa
e rica em detalhes!

Abstrao

Realidade
O que voc abstrai dessa realidade?

Abstrao

O que abstrao?

Abstrao
Abstrao
=
Operao mental que
observa a realidade e
captura apenas os
aspectos relevantes
para um contexto

A tarefa de programar
sistemas computacionais
envolve o exerccio
constante da abstrao da
realidade e sua codificao
em uma linguagem de
programao

Abstrao

Realidade

Abstrao
+
Programao

Sistema de Locadora de Veculo

Sistema Computacional

O que um
Sistema Computacional?

Sistema Computacional

Sistema
Computacional
Software

Hardware

Peopleware

Programao de Sistema
Computacional
A programao de um sistema computacional
pode ser resumida em 3 passos bsicos
Entrada

Processamento

Sada

Dispositivo
de Entrada

UCP

Dispositivo
de Sada

Memria

Programao de Sistema
Computacional
Exemplo 1 Exibir a mdia de dois nmeros
Entrada

Processamento

Sada

Dispositivo
de Entrada

UCP

Dispositivo
de Sada

Memria
6,8

(6 + 8) / 2

Programao de Sistema
Computacional
Exemplo 2 Exibir se o aluno est aprovado ou reprovado
Entrada

Processamento

Sada

Dispositivo
de Entrada

UCP

Dispositivo
de Sada

Memria
Ana, 5, 3

Se (5+3)/2>=7
aprovado
Seno
reprovado

Ana, reprovado

Programao de Sistema Computacional


Tipos de Linguagens de Programao
1 - Totalmente codificadas em binrio (0s e 1s)
2 - Usa instrues simblicas para representar os 0s e 1s
3 - Voltadas para facilitar o raciocnio humano
Baixo Nvel

Linguagem
de
Mquina

Alto Nvel

Linguagem
Assembly
(Mnemnica)

0010 0001 1110 LOAD R1, val1

Linguagem
de
Alto N vel
val2 = val1+val2

0010 0010 1111 LOAD R2, val2


0001 0001 0010 ADD R1, R2
0011 0001 1111 STORE R1, val2
(1)

(2)

(3)

Noes de Lgica
Lgica: Cincia que estuda as formas do pensamento
Sempre que pensamos a lgica nos acompanha
Um beb sabe que precisa chorar para receber ateno
Um casal com 3 filhos notou que um vaso estava quebrado,
enquanto 2 das crianas estavam na escola. Quem o culpado?
A gaveta est fechada. A caneta est dentro da gaveta.
Precisamos primeiro abrir a gaveta para depois pegar a caneta.

O pensamento (e a lgica) pode ser expresso atravs da


palavra falada ou da palavra escrita
Um mesmo pensamento pode ser expresso em inmeros
idiomas, tanto oralmente quanto por escrito
Vamos estudar uma forma nica de representao

Atividade 1 (10min)
Resolva os seguintes problemas de lgica
P1 Uma lesma deve subir um poste de 10m de
altura. De dia sobe 2m e noite desce 1m. Em
quantos dias atingir o topo do poste?
P2 - Trs gatos comem trs ratos em trs minutos.
Cem gatos comem cem ratos em quantos minutos?
P3 - O pai do padre filho do meu pai. O que eu sou
do Padre?
P4 - Se um bezerro pesa 75 kg mais meio bezerro,
quanto pesa um bezerro inteiro?

Atividade 1 (10min)
Resolva os seguintes problemas de lgica
P5 Qual o prximo nmero da seqncia
7,8,10,13,17,?
P6 Um pai de 80kg e suas 2 filhas (40kg cada),
precisam sair de uma ilha com um barco. Porm a
capacidade do barco de 80kg. Como faro para sair
da ilha?
P7 Usando uma jangada, um campons precisa
atravessar uma cabra, um leo e um fardo de capim
para a outra margem do rio. A jangada s tem lugar
para ele e mais outra coisa. O que ele deve fazer
para atravessar o rio com seus pertences intactos?

RESPOSTAS - Atividade 1
Respostas
R1 - 9(nove) dias. No nono dia a lesma sobe 2(dois) metros,
atinge o topo e evidentemente no desce 1 metro
R2 3 (trs) minutos
R3 Tio
R4 150 (cento e cinqenta) kg
R5 22
R6 Vo as duas filhas. Uma delas volta. O pai sai. A outra filha
volta. As duas filhas saem juntas.
R7 - Primeiro leve a cabra, volte e pegue o capim; deixe o capim
e leve a cabra de volta; deixe a cabra e leve o leo, depois s
voltar e pegar a cabra.

Noes de Lgica
Em Lgica um conceito importante
o de Proposio

Voc sabe o que uma


PROPOSIO?

Noes de Lgica
Proposio: um enunciado verbal, ao qual deve ser atribudo,
sem ambigidade, um valor lgico verdadeiro (V) ou falso (F).
Exemplos de proposies:
Robson Fidalgo Professor (V)
3 + 5 = 10 (F)
5 < 8 (V)
Contra-exemplos de Proposies:
Onde voc vai ?
3+5
Os estudantes jogam vlei. (quais ?)

Lgica de Programao &


Algoritmo

O que
Programao
de computadores?
INSTRUES

Instrues Delimitadoras
Servem para especificar o incio e o fim do
algoritmo.
incio
...
fim

Declarao de Variveis

Utilizado para especificar os nomes e os


respectivos tipos das variveis
necessrias no algoritmo
declare <variveis>: <tipo>;
onde:
<variveis> - lista de nomes de variveis
separados por vrgula
<tipo> - inteiro, real, caracter, string, lgico

Declarao de Variveis
Exemplos:
declare a,b,c: real;
declare nome: string;
declare sexo: caracter;
declare pratica_esporte: lgico;

Bloco de Comentrio
Serve para explicar um determinado
trecho do algoritmo, para torna-lo mais
claro, facilitando seu entendimento por
outras pessoas ou posteriormente.
{ <comentrio> }
Exemplo:
{ Isto um exemplo de comentrio }

Instruo de Entrada
Usada para ler dados de entrada do
algoritmo.
leia(<variveis>);
onde:
<variveis> - contero os dados lidos.

Instruo de Entrada
Exemplos:
leia(a,b,c);
leia(nome);
leia(sexo);
leia(pratica_esporte);

Instruo de Sada
Usada para mostrar os resultados do
processamento dos dados de entrada.
escreva(<resultados>);

onde:
<resultados> - geralmente o contedo de uma
ou mais variveis com a resposta do
problema.

Instruo de Sada
Exemplos:
escreva(O valor de D : , D);
escreva(nome, sexo);
escreva(Pratica esporte.);

Instruo de Atribuio
Utilizado para atribuir um determinado
valor a uma varivel.
<varivel>
<expresso>;
onde:
<varivel> - nome de uma varivel
<expresso> - um valor do mesmo tipo da
varivel ou uma expresso lgica ou
aritmtica.

Instruo de Atribuio
Exemplos
D
2-4*A*C;
nome
Paulo;
Pratica_Esporte
Sexo
M;

TRUE;

Estruturas de Controle
Baseado na lgica estruturada, Bohn e
Jacopini provaram que apenas trs
estruturas so suficientes para explicar a
soluo de qualquer problema, inclusive
tornando-os estruturados e mais legveis.

Estruturas de Controle
So elas:
Estrutura Seqencial: os comandos ou
instrues vo sendo executados na ordem
em que aparecem no algoritmo.

Estruturas de Controle
Estrutura de Repetio: comandos so
executados repetidas vezes at que uma
condio de parada seja satisfeita

Estruturas de Controle
Estrutura de Seleo: Conforme o
resultado de uma expresso lgica,
determinados comandos so executados
e outros no, caracterizando assim uma
seleo de comandos
TRUE

FALSE

Instrues de Seleo
Tipo simples:
se <sentena> ento
<comandos>;
fim-se
OBS.:
<comandos> sero executados apenas se
<sentena> resultar em TRUE.

Instrues de Seleo
Exemplo:
se A>0 ento
B
A + 1;
A
0;
fim-se

Instrues de Seleo
Tipo composto:
se <sentena> ento
<comandos1>;
seno
<comandos2>;
fim-se
OBS.:
<comandos1> sero executados apenas se
<sentena> resultar em TRUE. Em caso contrrio,
<comandos2> sero executados.

Instrues de Seleo
Exemplo:
se A>B ento
B
A + 1;
A
0;
seno
A
0;
B
A + 1;
fim-se

Instrues de Repetio
Enquanto / Fim-Enquanto
enquanto <sentena> faa
<comandos>;
fim-enquanto;
OBS.:
<comandos> sero executados enquanto
<sentena> resultar em TRUE.

Instrues de Repetio
Exemplo:
enquanto A>0 faa
leia(B);
escreva(B);
A
A - 1;
fim-enquanto;

Instrues de Repetio
Repita / At
repita
<comandos>;
at <sentena>;
OBS.:
<comandos> sero executados at que
<sentena> resulte em TRUE.

Instrues de Repetio
Exemplo:
repita
leia(B);
escreva(B);
A
A - 1;
at A<1;

Instrues de Repetio
Para / At / Fim-Para
para <varivel>
<inicial> at <final> faa
<comandos>;
fim-para;
OBS.:
<varivel> - contador do tipo inteiro
<inicial> - valor inicial da varivel
<final> - valor final da varivel

Instrues de Repetio
Exemplo:
{ Comandos para escrever 10 vezes uma frase
na tela do computador }
para i
1 at 10 faa
escreva(ltimo tipo de repetio);
fim-para;

Estrutura de um Algoritmo
Um algoritmo em Portugol tem a seguinte
estrutura:
incio
<declarao de variveis>
<inicializao de variveis>
<corpo lgico do algoritmo>
fim

Lgica de Programao & Algoritmo


Estruturas bsicas de um algoritmo:
Seqncia Incio/Fim
Define uma estrutura onde as instrues sero
executadas na ordem que aparecem.
Seleo Se-Ento/Seno

Define uma estrutura condicional que dada a sua


avaliao (V ou F) determina qual caminho do
algoritmo ser executado
Repetio Repita, Enquanto ou Para
Define uma estrutura de iterao condicional (V ou
F) ou contada (pr-definida) de instrues

Lgica de Programao &


Algoritmo

Algoritmo para ligar de um telefone pblico - Seqncia


Incio

1. Tirar o fone do gancho;


2. Ouvir o sinal de linha;
3. Introduzir o carto;
4. Teclar o nmero desejado;
5. Conversar;

6. Desligar;
7. Retirar o carto;
Fim.

Este algoritmo s usa uma


estrutura de seqncia
Incio/Fim

Lgica de Programao & Algoritmo


Algoritmo para ligar de um telefone
pblico Seleo
E se o telefone pblico estiver com defeito?
Incio
1. Tirar o fone do gancho;
2. Se ouvir o sinal de linha, ento
Este algoritmo usa uma
1. Introduzir o carto;
estrutura de deciso
2. Teclar o nmero desejado;
Se-ento/Seno
3. Conversar;
4. Desligar;
5. Retirar o carto;
3. Seno
1. ir para o prximo telefone;
Fim.

Lgica de Programao & Algoritmo

Algoritmo para ligar de um telefone pblico Repetio


E se o prximo telefone pblico tambm estiver com defeito?
Incio
1. Repita
1. Tirar o fone do gancho;
2. Se ouvir o sinal de linha ento
1. Introduzir o carto;
2. Teclar o nmero desejado;
Este algoritmo usa uma
3. Conversar;
estrutura de repetio
4. Desligar;
5. Retirar o carto;
Repita/At
3. Seno
1. ir para o prximo telefone;
2. At ouvir o sinal de linha
Fim.

Lgica de Programao & Algoritmo

Algoritmo para ligar de um telefone pblico Repetio

E se o telefone chamado estiver com defeito?

E se o telefone chamado estiver ocupado?

E se acabarem os crditos do carto telefnico?

E se ...?

Um algoritmo
SEMPRE sofre melhorias sucessivas.
(Tcnica de refinamentos sucessivos)

Fluxogramas - Exemplo 1
Achar o valor da expresso: D = B2 - 4AC.
Incio

Ler A, B, C

D = B2 - 4*A*C

Escrever D

Fim

Fluxogramas:
Exemplo 2
Achar o maior de
dois nmeros A e
B.

Incio

Ler A, B

Comparar
A com B

A=B
Escrever:
A e B iguais

A>B
Escrever:
A maior

Fim

A<B
Escrever:
B maior

Portugus Estruturado - Exemplo 1


Achar o valor da expresso: D = B2 - 4AC.

Ler os valores de A, B e C
Calcular a expresso D = B2 - 4AC
Mostrar o resultado desse clculo

Portugus Estruturado - Exemplo 2


Achar o maior de dois nmeros A e B.

Ler dois nmeros A e B


Comparar A com B
Mostrar o resultado dessa comparao

Pseudocdigo - Exemplo 1
Achar o valor da expresso: D = B2 - 4AC.
Incio
Declare A,B,C,D; { Declarao de variveis }
Leia(A,B,C);
D
B^2 - 4*A*C; { Operao de atribuio }
Escreva(D);
Fim.

Pseudocdigo - Exemplo 2
Achar o maior de dois nmeros A e B.
Incio
Declare A,B; { Declarao de variveis }
Leia(A,B);
Se A = B Ento Escreva(A e B iguais);
Seno Se A>B Ento Escreva(A maior);
Seno Escreva(B maior);
Fim-Se
Fim-Se
Fim.

Atividade 3
Reescreva corretamente o algoritmo
abaixo

Algoritmo aprovao
Incio
1. Obter as 2 notas do aluno;
2. Repita
1. Se Mdia do aluno >=7, ento
1. Repita
1. Informar que o aluno est REPROVADO;
2. At Mdia < 7
2. Seno Mdia >= 7
1. Informar que o aluno est APROVADO;
3. At ltimo aluno;
Fim.

RESPOSTA - Atividade 3

Algoritmo aprovao
Incio
1. Repita
1. Obter as 2 notas do aluno;

2. Se Mdia do aluno >=7, ento


1. Informar que o aluno est APROVADO
3. Seno

1. Informar que o aluno est REPROVADO;


2. At ltimo aluno
Fim

UM EXERCCIO
Construa um algoritmo para escolher as
duas maiores laranjas de um balaio

Pegue o balaio cheio de laranjas e


um balaio vazio. Compare duas a
duas e qual for a menor coloque no
balaio vazio Ao final a maior laranja
estar na sua mo. Repita o
processo at que reste apenas duas
laranjas.

Outros exerccios...
1) leia um nmero inteiro e mostre uma mensagem indicando se
este nmero par ou mpar, e se positivo ou negativo
Var num: inteiro
inicio
escreval("Digite o nmero")
leia(num) //Lendo a varivel

//verificando o resto da diviso por 2, se = 0 par seno impar


se (num % 2) = 0 entao
escreva("O nmero par")
senao
escreva("O nmero impar")
fim-se
//verificando se maior ou = 0
// vou considerar aqui zero como numero positivo
se (num >= 0) entao
escreva("O nmero positivo")
senao
escreva("O nmero negativo")
fims-e
fim-algoritmo

Outros exerccios...
2) leia quatro nmeros inteiros e encontre a mdia aritmtica
simples entre as que correspondem a nmeros pares. Lembrese que no pode haver diviso por zero
a1<-a mod 2
b1<-b mod 2
c1<-c mod 2
d1<-d mod 2
contador<-0
soma<-0
se (a1)=0 entao
contador<-contador+1
soma<-soma+(a)
fimse
se (b1)=0 entao
contador<-contador+1
soma<-soma+(b)
fimse

se (c1)=0 entao
contador<-contador+1
soma<-soma+(c)
fimse
se (d1)=0 entao
contador<-contador+1
soma<-soma+(d)
fimse
se contador<>0 entao
mp<-soma/contador
escreva("Mdia dos Pares:",mp)
senao
escreva("No Existe nmeros Pares")
fimse

Outros exerccios...
3) leia 4 notas, calcule a mdia dessas e escreva: Reprovado
(mdia < 5), Recuperao (mdia >= 5 e < 7) e Aprovado
(mdia >= 7)
inicio
escreva ("escreva a primeira nota: ")
leia (nota1)
escreva ("escreva a segunda nota: ")
leia (nota2)
escreva ("escreva a terceira nota: ")
leia (nota3)
soma<-(nota1+nota2+nota3)/3

Se (soma >= 7) Entao


Escreval("Voc est aprovado")
Fim-Se
Se (soma > 5) e (soma < 7) Entao
Escreval("Voc est em recuperao")
FimSe
Se (soma <= 5) Entao
Escreval("Voc est reprovado")
Fim-Se

Potrebbero piacerti anche