Sie sind auf Seite 1von 94

Conceitos Fundamentais de

Algoritmos
e Programao para iniciantes
joa@deinfo.ufrpe.br

REFERNCIA: Material dos Profs. Reinaldo Gomes


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

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
Quanto tempo?!?
neve
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

Acessrios
OK?

No
Fecha
porta-malas

Sim

Pega tringulo

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

Algoritmo: CONCEITO
O que um ALGORITMO?
OBS.: No existe um algoritmo para
construir algoritmos
a criao de um algoritmo um exerccio de criatividade
(conhecimento) e experincia (tcnica e prtica)

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

MASLO
W

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
Dispositivo
de Entrada

Processamento

UCP
Memria

Sada
Dispositivo
de Sada

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

Processamento

UCP

Sada
Dispositivo
de Sada

Memria
6,8

(6 + 8) / 2

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

Processamento

UCP

Sada
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

Linguagem
Assembly
(Mnemnica)

0010 0001 1110 LOAD R1, val1

Alto Nvel

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

Exemplos de aplicao da lgica


O quarto est fechado e que meu livro est no quarto. Ento,
preciso primeiro abrir o quarto para pegar o livro
Rosa me de Ana, Paula filha de Rosa, Jlia filha de Ana.
Ento, Jlia neta de Rosa e sobrinha de Paula
Todo mamfero animal e todo cavalo mamfero. Ento, todo
cavalo animal
Todo mamfero bebe leite e o homem bebe leite. Ento, todo
homem mamfero e animal (mas no um cavalo)

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 ?)

Noes de Lgica

Operaes Lgicas: so usadas para formar novas proposies a


partir de proposies existentes.
Considerando p e q duas proposies genricas, pode-se
aplicar as seguintes operaes lgicas bsicas sobre elas

Definindo a prioridade:
Usar parnteses Ex:((p v q)^(~q)) ou
Obedecer (~) > (^) > (v)

Noes de Lgica
Exemplos de aplicao das operaes lgica
Considere:
p = 7 primo = (V)
q = 4 impar = (F)
Ento:
4 NO impar = ~q = (~F) = (V)
7 NO primo = ~p = (~V) = (F)
7 primo E 4 NO impar = p ^ ~q = (V ^ (~F)) = (V ^ V) =
(V)
7 primo E 4 impar = p ^ q = (V ^ F) = (F)
4 impar E 7 primo = q ^ p = (F ^ V) = (F)
4 impar E 7 NO primo = q ^ ~p = (F ^ (~V)) = (F ^ F) =
(F)

Noes de Lgica

Exemplos de aplicao das operaes lgica (Cont.)


Considere:
p = 7 primo = (V)
q = 4 impar = (F)
Ento:
7 primo OU 4 NO impar = p v ~q = (V v (~F)) = (V v V)
= (V)
7 primo OU 4 impar = p v q = (V v F) = (V)
4 impar OU 7 primo = q v p = (F v V) = (V)
4 impar OU 7 NO primo = q v ~p = (F v (~V)) = (F v
F ) = (F)

Noes de Lgica
Exemplos de aplicao das operaes lgica
Resumindo:
p
V
V
F
F

q
V
F
V
F

~p
F
F
V
V

p^q
V
F
F
F

pvq
V
V
V
F

Ou seja:
No (~) troca o valor lgico. Se F passa a ser V e vice-versa
E (^) s tem valor V quando as duas proposies forem V, basta
uma proposio ser F para o resultado ser F
OU (v) s tem valor F quando as duas proposies forem F, basta
uma proposio ser V para o resultado ser V

Atividade 2

Considerando p = V e q = F, resolva as seguintes expresses


lgicas
~p
~q
p^q
pvq
(~p) ^ q
(~p) v q
p ^ (~q)
p v (~q)
(~p) ^ (~q)
(~p) v (~q)

RESPOSTAS - Atividade 2

Considerando p = V e q = F, resolva as seguintes expresses


lgicas
~p = F
~q = V
p^q=F
pvq=V
(~p) ^ q = F
(~p) v q = F
p ^ (~q) = V
p v (~q) = V
(~p) ^ (~q) = F
(~p) v (~q) = V

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
B^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
1. Introduzir o carto;
2. Teclar o nmero desejado;
3. Conversar;
4. Desligar;
5. Retirar o carto;
3. Seno
1. ir para o prximo telefone;
Fim.

Este algoritmo usa uma


estrutura de deciso
Se-ento/Seno

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;
3. Conversar;
Este algoritmo usa uma
4. Desligar;
estrutura de repetio
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 = B^2 - 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

#! /usr/bin/perl -w

my $file = $ARGV[0];

open NEW, $file;

my $numero_g=0;
my $numero_c=0;
my $numero_total=0;

my $um=0;

while (<NEW>) {
if (/\>/) {
#
if ($um == 2) {
#
last;
#
}
#
$um++;
next;
}

print $_;

chomp;

for ($i=0; $i<length($_); $i++) {


$numero_total++;
if (uc(substr($_,$i,1)) eq "C" ) {
$numero_c++;
}
if (uc(substr($_,$i,1)) eq "G") {
$numero_g++;
}
}
}

print "Total de Gs : $numero_g \n";


print "Total de Cs : $numero_c \n";
print "Total de bases : $numero_total \n";

print "Total de GCs (%) : " . (($numero_g + $numero_c) / $numero_total) * 100;

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

Outros exerccios...
1) leia um nmero inteiro e mostre uma mensagem indicando se
este nmero par ou mpar, e se positivo ou negativo
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
3) leia 4 notas, calcule a mdia dessas e escreva: Reprovado
(mdia < 5), Recuperao (mdia >= 5 e < 7) e Aprovado
(mdia >= 7)

mais exerccios...
4)

leia a idade de um nadador e exiba sua categoria segundo as


regras: A(5 at 7); B(8 at 10); C(11 at 13); D(14 at 18) e E(
Idade > 18)

5) leia dois nmeros inteiros, uma operao matemtica


(+,-,*,/) e faa o calculo destes nmeros segundo a operao
lida
6) leia o nome e a idade de trs pessoas e informe o nome da
pessoa mais velha e o nome da pessoa mais nova. Considere
que no existem idades iguais

ainda mais exerccios...


7) leia os nmeros inteiros A e B e informe se A mltiplo, divisor
ou nada de B
8) leia trs nmeros e mostre-os em ordem crescente
9) leia uma milhar e informe se esse nmero palndromo.
Exemplos de nmeros palndromos: 9889, 7337 e 2002
10) leia um nmero inteiro entre 20 e 59 e mostre seu extenso.
Exiba um erro se o nmero estiver fora do intervalo

AMBIENTES/LINGUAGENS DE
PROGRAMAO
LA

PASCAL

declare

Var

Incio

Begin

Fim

End

Caracter

Char

Inteiro

Integer

Real

Real

Lgico

Boolean

Leia

Read

Escreva

Write

AMBIENTES/LINGUAGENS DE
PROGRAMAO
LA

declare
Incio

Fim

Caracter

Char

Inteiro

Int

Real

Double

Lgico

Boolean

Leia

Scanf

Escreva

Printf

Prximos passos?
Praticar a leitura e entendimento de
Algoritmos de sua rea de aplicao
Aprender uma Linguagem de
Programao para Computadores
Programao!

Das könnte Ihnen auch gefallen