Download as pdf or txt
Download as pdf or txt
You are on page 1of 48

Seguindo Instruções

Departamento de Ciência da Computação


Linguagens de Programação
Algoritmos

Introdução à Ciência da Computação

Prof. Edison Ishikawa


Objetivo

Departamento de Ciência da Computação


• Entender as limitações de uma linguagem
de programação
• Fazer algoritmos

DIREITA 30º …
EM FRENTE 5 ...
Qual a diferença

Departamento de Ciência da Computação


entre instruir uma
pessoa e um
computador?
Imagine a seguinte instrução:

Departamento de Ciência da Computação


Departamento de Ciência da Computação
Acertaram a resposta?

Departamento de Ciência da Computação


A quais
conclusões vocês
chegaram?
Conclusão 1

Departamento de Ciência da Computação


• Computadores funcionam
seguindo lista de instruções
• Eles fazem exatamente
(literalmente) o que as instruções
dizem
• Mesmo que estas instruções não
façam o menor sentido!
Conclusão 2

Departamento de Ciência da Computação


•Para dizer a um computador
o que fazer, tudo o que você
precisa fazer é dar
instruções corretas
•Mas será que isto é fácil?
Siga as instruções:

Departamento de Ciência da Computação


• Pegue uma folha de papel
• Desenhe um ponto no centro da página
• Começando da ponta superior esquerda da
página, trace uma linha reta passando pelo
ponto até a ponta inferior direita
• Começando da ponta inferior esquerda da
página, trace uma linha reta passando pelo
ponto até a ponta superior direita
• Escreva seu nome no triângulo no centro do
lado esquerdo da página
O resultado foi este?

Departamento de Ciência da Computação


Parabéns, vocês

Departamento de Ciência da Computação


conseguiram executar
um algoritmo
sequencial !

Agora é a vez de
vocês fazerem um!
Agora veja esta figura.

Departamento de Ciência da Computação


• Escreva instruções
para alguém
executar o desenho
ao lado sem ver o
desenho.
• Instruções
• Em uma folha de
papel
•...
Conseguiu?

Departamento de Ciência da Computação


• Suas instruções
permitem que o
desenho seja
executado:
• Com precisão?
• Com rapidez?
Foi muito fácil?

Departamento de Ciência da Computação


Tente este agora . . .
De que se trata tudo isso?

Departamento de Ciência da Computação


• Computadores operam seguindo
instruções, chamado de programa, o qual
foi escrito para cumprir determinada
tarefa
• Programas são escritos em linguagens
especialmente projetadas com um
conjunto limitado de instruções para
dizer aos computadores o que fazer
• Certas linguagens são mais adequadas para
alguns propósitos que outras
De que se trata tudo isso?

Departamento de Ciência da Computação


• Programadores devem ser capazes de
especificar exatamente o que desejam
que um computador faça
• Diferentemente dos seres-humanos,
um computador realizará as instruções
literalmente, ainda que elas sejam
totalmente ridículas
Entenderam?

Departamento de Ciência da Computação


"Em duas ocasiões [os membros do
Parlamento] me perguntaram:
'Diga, Sr Babbage, se eu entrar na máquina
números errados ela conseguirá sair as
respostas corretas?
'Eu não sou capaz de entender
a confusão mental capaz de gerar este tipo
de pergunta.’ "
Charles Babbage
Agora que todos
entenderam o problema...

Departamento de Ciência da Computação


• Vamos aprender um pouco mais
sobre
Departamento de Ciência da Computação
“É um processo
sistemático para
a resolução de
um problema.”
( Swarcfiter & Markenzon 2010)
Algoritmo

Departamento de Ciência da Computação


“Um algoritmo computa uma
saída, o resultado do problema,
a partir de uma entrada, as
informações inicialmente
conhecidas e que permitem
encontrar a solução do
problema.”
( Swarcfiter & Markenzon 2010)
Propriedade dos algoritmos

Departamento de Ciência da Computação


• Cada passo deve corresponder
a uma instrução que possa ser
realizada
• A ordem dos passos deve ser
precisamente determinada
• O algoritmo deve ter um fim
Representação de algoritmos

Departamento de Ciência da Computação


• Duas abordagens principais
• Gráfica
• FLUXOGRAMA
• Fácil visualização do fluxo de execução das
instruções do algoritmo
• Textual
• PSEUDO-CÓDIGO
• Linguagem estruturada, intermediária entre a
linguagem natural e as linguagens de
programação
• Mais fácil do ser humano entender do que um
programa escrito em linguagem de programação
Algoritmos

Departamento de Ciência da Computação


•Estrutura de Fluxos
•Sequencial
•Condicional
•Repetição
Exemplo 1 – Faça um algoritmo
para trocar lâmpada queimada

Departamento de Ciência da Computação


Fluxogramas

Departamento de Ciência da Computação


Estrutura de fluxo sequencial

Departamento de Ciência da Computação


Algoritmo para trocar lâmpada queimada

Início

Trocar lâmpada Será que consigo quebrar esta tarefa


em subtarefas menores?

Fim
Estrutura de fluxo sequencial
Algoritmo para trocar lâmpada queimada

Departamento de Ciência da Computação


Início

Para evitar acidentes (choque elétrico)


Desligar interruptor Segurança em primeiro lugar!

Subir escada A ordem importa! Desligar o interruptor


Antes de subir a escada!
Retirar lâmpada
queimada

Colocar lâmpada
nova

descer escada

Ih! A lâmpada não acendeu!


Ligar interruptor
O algoritmo tá errado?

Fim
Estrutura de fluxo sequencial
Algoritmo para trocar lâmpada queimada

Departamento de Ciência da Computação


Início

Desligar interruptor

Subir escada

Retirar lâmpada
queimada

Colocar lâmpada
nova Não! Depois de todo este trabalho a
lâmpada nova está queimada!!!
descer escada
O que podemos fazer ?

Ligar interruptor Testar a lâmpada antes de trocar!

Fim
Estrutura de fluxo sequencial
Algoritmo para trocar lâmpada queimada

Departamento de Ciência da Computação


Mas como a gente faz isso?
Testar a lâmpada
E se eu testar e estiver queimada?
Estrutura de fluxo condicional

Departamento de Ciência da Computação


Algoritmo para trocar lâmpada queimada
Início

NÃO Lâmpada SIM


acende?

Comprar outra
lâmpada

Fim
Estrutura de fluxo condicional

Departamento de Ciência da Computação


Algoritmo para trocar lâmpada queimada
Início

NÃO Lâmpada SIM


acende?

Comprar outra
lâmpada

Fim

Mas por este caminho não troquei a lâmpada? O que posso fazer?
Estrutura de fluxo repetição

Departamento de Ciência da Computação


Algoritmo para trocar lâmpada queimada

Tenho várias lâmpadas. Vou testando até achar uma que acenda.

REPETIÇÂO
Estrutura de fluxo repetição
Algoritmo para trocar lâmpada queimada

Departamento de Ciência da Computação


Início

Lâmpada SIM
acende?

NÃO
Descarto
lâmpada
queimada

Pego lâmpada
da caixa

Fim
Estrutura de fluxo repetição

Departamento de Ciência da Computação


E se tivermos que trocar todas as lâmpadas da sala?
Como fica o algoritmo?
Pseudo-Código
Aluno de ICC com insônia

Departamento de Ciência da Computação


Estrutura de Fluxo Sequencial
Algoritmo para trocar pneu furado

Departamento de Ciência da Computação


Início
Trocar o pneu
Fim

Mae eu não sei trocar o pneu? O que devo fazer?

Dica: detalhar mais como se troca um pneu do carro.


Estrutura de Fluxo Sequencial
Algoritmo para trocar pneu furado

Departamento de Ciência da Computação


Início
Afrouxar o parafuso
Levantar o carro com o macaco
Terminar de desparafusar
Trocar pneu furado
Parafusar parafuso
Baixar o carro
Apertar parafuso
Fim

E se o estepe estiver vazio? O que devo fazer?


Estrutura de Fluxo Sequencial
Algoritmo para trocar pneu furado

Departamento de Ciência da Computação


Início
Afrouxar o parafuso
Levantar o carro com o macaco
Terminar de desparafusar Bloco de comando
Trocar pneu furado em sequência
Parafusar parafuso
Baixar o carro
Apertar parafuso
Fim

E se o estepe estiver vazio? O que devo fazer?


Verificar o estepe antes de trocar o pneu.
Estrutura de Fluxo Condicional
Algoritmo para trocar pneu furado

Departamento de Ciência da Computação


Início
se estepe vazio então
levar no borracheiro
senão
Afrouxar o parafuso
Levantar o carro com o macaco
Terminar de desparafusar
Trocar pneu furado
Parafusar parafuso
Baixar o carro
Apertar parafuso
fim se
Fim
Estrutura de Fluxo Repetição
Algoritmo para trocar pneu furado

Departamento de Ciência da Computação


Início
se estepe vazio então
levar no borracheiro
senão
Afrouxar o parafuso
Levantar o carro com o macaco
Terminar de desparafusar
Trocar pneu furado
Parafusar parafuso
Baixar o carro
Apertar parafuso
fim se
Fim

Mas não são 3 parafusos/porcas?


Início
Estrutura de Fluxo Repetição se estepe vazio então
levar no borracheiro
senão

Departamento de Ciência da Computação


Afrouxar o parafuso 1 Ainda bem que são só 3 parafusos...
Afrouxar o parafuso 2 E se fosse 8 parafusos?
Afrouxar o parafuso 3 Repetimos 8 vezes cada linha...?
Levantar o carro com o macaco
Desparafusar o parafuso 1
Desparafusar o parafuso 2 Repetir 8x?
Desparafusar o parafuso 3
Trocar pneu furado
Parafusar parafuso 1
Parafusar parafuso 2 Repetir 8x?
Parafusar parafuso 3
Baixar o carro
Apertar parafuso 1
Apertar parafuso 2 Repetir 8x?
Apertar parafuso 3
fim se
Fim
Início
Estrutura de Fluxo Repetição se estepe vazio então:
levar no borracheiro
senão:

Departamento de Ciência da Computação


enquanto houver parafuso para afrouxar:
Afrouxar o parafuso
fim enquanto
Levantar o carro com o macaco
enquanto houver parafuso para desparafusar:
Desparafusar o parafuso
fim enquanto
Trocar pneu furado
enquanto houver parafuso para parafusar:
Parafusar parafuso
fim enquanto
Baixar o carro
enquanto houver parafuso para apertar:
Apertar parafuso
fim enquanto
fim se
Fim
Desenvolvimento de algoritmos

Departamento de Ciência da Computação


Técnica top-down

1. Começar com uma declaração


genérica sobre a solução do
problema (trocar pneu)
2. Detalhar cada comando até o
algoritmo final
Exercício 1

Departamento de Ciência da Computação


• Faça um algoritmo para escovar bem os dentes
Exercício 2

Departamento de Ciência da Computação


• Era uma vez um fazendeiro que foi ao mercado e
comprou um lobo, um carneiro e uma alface. No
caminho para casa, o fazendeiro chegou à margem de
um rio e arrendou um barco. Mas, na travessia do rio por
barco, o agricultor poderia levar apenas a si mesmo e
uma única de suas compras - o lobo, o carneiro, ou a
alface.
• Se fossem deixados sozinhos em uma mesma margem,
o lobo comeria o carneiro e o carneiro comeria a alface.
• Faça um algoritmo para o fazendeiro atravessar a si
mesmo e as suas compras para a margem oposta do rio,
deixando cada compra intacta
Exercício 3

Departamento de Ciência da Computação


• Dado uma balança de pratos e um conjunto de maçãs,
faça um algoritmo para determinar qual a maça mais
pesada.
Bibliografia

Departamento de Ciência da Computação


• How to Think Like a Computer Scientist: Learning
with Python 3 – Documentation - Release 3rd Edition
• Peter Wentworth, Jeffrey Elkner,Allen B. Downey and
Chris Meyers
• Apr 26, 2017
• Slides da Profª Carla Castaño
http://csunplugged.org/
Referências

Departamento de Ciência da Computação

You might also like