Você está na página 1de 47

INF1025

Sensibilização
Desafio 1: Liberte o prisioneiro

Regras:
- Liberte o prisioneiro;
- Você só libertará o prisioneiro se conseguir colocar 6 litros de água na balança, nem a mais nem a menos que isso!

Liberte o Prisioneiro

2
Desafio 1: Liberte o prisioneiro

Descreva um passo a passo ( um roteiro) para o prisioneiro seguir!!


Ele só reconhece as seguintes ordens:
Encher garrafa ....
Transferir de .... para....
Esvaziar garrafa ....
Colocar garrafa .... na porta
3
Liberte o Prisioneiro: Uma Solução (1/2)
1 - Encher a garrafa de 7 litros
2 - Transferir da garrafa 7 para a garrafa 5 litros até enchê-la.
3 – Esvaziar a garrafa de 5 litros.
4 – Transferir da garrafa de 7 para a garrafa de 5 litros.
5 - Encher a garrafa de 7 litros.
6 – Transferir da garrafa de 7 litros para a garrafa de 5 litros até enchê-la.
7 – Esvaziar a garrafa de 5 litros.
8 - Transferir da garrafa de 7 para a garrafa de 5.
9 - Encher a garrafa de 7 litros.
10– Transferir da garrafa de 7 litros para a garrafa de 5 litros até enchê-la
11- Colocar a garrafa de 7 litros na porta

4
Outra descrição da solução (2/2)
Enquanto a garrafa 7 não tem 6 litros faça
se garrafa 7 com água
transferir da garrafa 7 p/a 5
encher garrafa 7
transferir a água da garrafa 7 para a 5
esvaziar a garrafa 5
Colocar a garrafa de 7 litros na porta

5
Desafio 2
 Considere o seguinte ambiente:
– 1 balança como a do desenho abaixo
– 9 bolas, sendo que uma é mais leve do que as demais
 Objetivo: descobrir qual é a bola mais leve com o menor número possível de pesagens,
no pior caso.

6
Solução do desafio 2(1/4)
 Solução (?)
– 1ª pesagem
» 1ª possibilidade: pesos iguais bola extra é a
mais leve!!!
» 2ª possibilidade: a bola mais leve está no grupo
mais leve  descarta-se a bola extra e o grupo
mais pesado e realiza-se nova pesagem
– 2ª pesagem
» descarta-se o grupo mais pesado e realiza-se
nova pesagem
– 3ª pesagem
» determina-se a bola mais leve!!!!

7
Solução do desafio 2(2/4)
 Solução
– 1ª pesagem
» 1ª possibilidade: pesos iguais  a bola está no
grupo extra  6 bolas são descartadas e
realiza-se nova pesagem
» 2ª possibilidade: pesos diferentes  bola mais
leve está no grupo mais leve  6 bolas são
descartadas e realiza-se nova pesagem

– 2ª pesagem
» determina-se a bola mais leve!!!!

8
Solução do desafio 2(3/4)
1) Divida as bolas em 3 grupos iguais
2) Escolha dois grupos para pesar e reserve o grupo extra
3) Coloque-os cada um em um lado da balança
4) Se os pesos forem iguais, descarte ambos os grupos
Senão, descarte o grupo mais pesado e o grupo extra
5) Divida as bolas do grupo (que sobrou) em 3 grupos
6) Escolha dois grupos para pesar e reserve o grupo extra
7) Coloque-os cada um em um lado da balança
8) Se os pesos forem iguais descarte ambos os grupos
Senão, descarte o grupo mais pesado e o grupo extra
9) A bola que restou é a mais leve

9 9
Solução do desafio 2(4/4)

a) Repita os passos 1 a 4 até que reste apenas uma bola


1) Divida as bolas em 3 grupos iguais
2) Escolha dois grupos para pesar e reserve grupo extra
3) Coloque-os cada um em um lado da balança
4) Se os pesos forem iguais, descarte ambos os grupos
Senão, descarte o grupo mais pesado e o grupo extra
b) A bola que restou é a mais leve

10 10
Outros Exercícios
 http://www.leoakio.com/jogos.html

 Pinguim
 Ponte Escura
 Sapo
Exercício 1
 Escreva um roteiro (receita) que descreva, passo a passo, as etapas necessárias para
trocar uma lâmpada no teto (algoritmo para trocar uma lâmpada no teto).

21
Uma Solução Ex 1(1/4)

● Pegue uma escada;


● Posicione-a embaixo da lâmpada;
● Pegue uma lâmpada nova;
● Suba na escada com a lâmpada nova na mão;
● Desenrosque a lâmpada velha que está bucal;
● Coloque a lâmpada nova no bucal e enrosque-a
nele;
● Desça da escada com a lâmpada velha na mão;
● Jogue a lâmpada velha no lixo;
● Ligue o interruptor;
● Guarde a escada.

22
Uma Solução Ex 1(2/4)

● Pegue uma escada;


● Posicione-a embaixo da lâmpada;
● Pegue uma lâmpada nova;
● Suba na escada com a lâmpada nova na mão;
● Desenrosque a lâmpada velha que está bucal,
segurando-a;
● Coloque a lâmpada nova no bucal e enrosque-a
nele;
● Desça da escada com a lâmpada velha na mão;
● Jogue a lâmpada velha no lixo;
● Ligue o interruptor; Sempre a
● Guarde a escada. lâmpada precisa
ser trocada?

23
Ex1: Lâmpada deve ser trocada? (3/4)

● Ligue o interruptor.
● SE a lâmpada não acender, então:
● Pegue uma escada;
● Posicione-a embaixo da lâmpada;
● Desligue o interruptor
● Pegue uma lâmpada nova;
● Suba na escada com a lâmpada nova na mão;
● Desenrosque a lâmpada velha que está bucal,segurando-a;
● Coloque e enrosque a lâmpada nova no bucal;
● Desça da escada com a lâmpada velha na mão
● Jogue a lâmpada velha no lixo
● Ligue o interruptor.
● Guarde a escada E se a lâmpada nova
não funcionar?

24
Ex1: Lâmpada nova funciona? (4/4)

● Ligue o interruptor.
● SE a lâmpada que está no bucal não acender, então:
● Pegue uma escada;
● Posicione-a embaixo da lâmpada;
● Faça
● Desligue o interruptor
● Busque uma lâmpada nova;
● Suba na escada com a lâmpada nova na mão;
● Desenrosque a lâmpada velha que está bucal, segurando-a;
● Coloque a lâmpada nova no bucal e enrosque-a nele;
● Desça da escada com a lâmpada velha na mão
● Jogue a lâmpada velha no lixo
● Ligue o interruptor.
● ENQUANTO a lâmpada que está no bucal não acender:
● Guarde a escada

25
Exercício 2
 Escreva um algoritmo para fazer um hambúrguer com alface e tomate

26
Uma Solução Ex2

1. Pegar o pão
2. Cortar o pão ao meio e deixá-lo aberto
3. Passar maionese nos dois lados de dentro do pão
4. Pegar e cortar alface e tomate
5. Colocar alface e tomate em um lado do pão
6. Pegar o Hambúrguer
7. Fritar o Hambúrguer
8. Colocar o Hambúrguer no outro lado do pão
9. Fechar o pão

A mesma resposta de um problema pode ser


É a única forma de resolver ? obtida de diversas maneiras podem existir
vários algoritmos para solucionar o mesmo
problema

27
Funciona?
Um robô humano que executa fielmente os algoritmos, pode seguir este modo de usar para
lavar seu pet?

Modo de usar:
1. Molhe o pelo de seu pet
2. Aplique o shampoo.
3. Enxague e repita.

Como o robô humano executa literalmente Um algoritmo deve


este procedimento , jamais terminaria. ser finito

28
NO QUE DÁ????? (1/3)
Execute o algoritmo abaixo:

1. Desenhar um círculo
2. Traçar sobre este círculo, de forma imaginária 2 eixos, x e y, perpendiculares entre si que se cruzam na origem.
(o plano cartesiano ortogonal )
3. Desenhar um JJJ.
4. Posicioná-lo sobre o eixo do X, com a ponta do triângulo encostando no círculo .
5. Desenhar um JJJ .
6. Posicioná-lo sobre o eixo do Y , com a ponta do triângulo encostando no círculo

JJJ
1. Desenhe um retângulo com comprimento equivalente a 2/3 do raio do círculo
2. Desenhe um triângulo, fora do retângulo, com a base encostada no lado menor do retângulo e com altura igual
a 1/3 do raio do círculo

29
NO QUE DÁ????? (2/3)

30
NO QUE DÁ????? (3/3)
 Desenhar um círculo  ( QUAL O RAIO?)
 Traçar sobre este círculo, de forma imaginária 2 eixos, x e y,
perpendiculares entre si que se cruzam na origem. (plano
cartesiano ortogonal )( Qual o sentido?)
 Desenhar um JJJ.  (diferença no comprimento p/hora e
minuto, qual altura?)
valores necessários para alguém desenhar um JJJ :
comprimento: proporção do raio desejado em função Um algoritmo deve ser uma sequência finita,
do uso: h ou min precisa, sem ambiguidade de passos que
altura: proporção fixa em relação ao raio desejado descrevem as etapas para resolver um
 Posicioná-lo sobre o eixo do X, com a ponta do triângulo problema de forma automática e repetitiva!
encostando no círculo .
 Desenhar um JJJ .
 Posicioná-lo sobre o eixo do Y , com a ponta do triângulo
encostando no círculo
JJJ
 Desenhe um retângulo com comprimento equivalente a 2/3 do raio do
círculo e de altura...
 Desenhe um triângulo, fora do retângulo, com a base encostada no
lado menor do retângulo e com altura igual a 1/3 do raio do círculo

31
Linguagem para descrever a solução de um problema (1/2)

 Qualquer humano que conheça a língua portuguesa é capaz de resolver os problemas


anteriores seguindo os passo a passos fornecidos (se estiverem corretos).

 É possível mostrar a um computador como resolver um problema?

32
Linguagem para descrever a solução de um problema (2/2)

 Para que o algoritmo possa ser executado por uma máquina é importante que as instruções
estejam corretas, sem ambiguidades e escritas numa linguagem que ela compreenda.

 Uma linguagem natural (ainda) não é adequada para escrever algoritmos executáveis
por máquinas
o linguagens naturais tem ambiguidade e redundância
o um texto em linguagem natural pode exigir a interpretação de quem o lê

33
Linguagens
 Linguagem humana: composta pelo alfabeto, símbolos e números
 Linguagem de Máquina: linguagem binária, composta por 0 e 1

0 0 0
0 1 1 1
1
 Todo dado coletado pelos computadores, as instruções por ele executadas, bem
como os resultados de um processamento são sempre constituídos de conjuntos
ordenados de zeros e uns.

34
Exercício 3(1/2)

Construir um passo a passo (algoritmo) para instruir uma pessoa a mostrar o peso em KG de um
pacote cujo peso em G é informado

1. Perguntar e anotar o valor do peso em gramas do pacote


2. Dividir o valor anotado por 1000, anotando o resultado

3. Mostrar o valor anotado da divisão

35
Exercício 3(2/2)

Construir um passo a passo (algoritmo) para instruir UM ROBÔ como mostrar o peso em KG
de um pacote cujo peso em G é informado
Deve ser escrito numa linguagem que ele compreenda:
Instruções disponíveis 0 0 0 0 0 0 0 0 0 0 # read: 0
read 0 0 0 0 0 0 0 0 0 0 0 #0
write 1 0 0 0 0 0 0 0 0 1 0 # armazena const: 2
storeconst2 1 1 1 1 1 0 1 0 0 0 # 1000

add 3 0 0 0 0 0 0 0 0 0 1 #1

sub4 0 0 0 0 0 0 0 1 1 0 # divisão: 6
0 0 0 0 0 0 0 0 0 0 #0
mul  5
0 0 0 0 0 0 0 0 0 1 #1
div6
0 0 0 0 0 0 0 1 1 1 #armazena: 7
store 7
0 0 0 0 0 0 0 0 1 0 #2
0 0 0 0 0 0 0 0 0 1 # write: 1
0 0 0 0 0 0 0 0 1 0 #2

"linguagem de máquina", é
projetada para um
computador e não para uma
pessoa
36
Linguagem de Programação
 Uma linguagem de programação facilita a comunicação de instruções para
um computador
 Deve ser formal e precisa
– como notações matemáticas, fórmulas químicas, ...
– porque é necessário descrever, com precisão, as instruções a serem executadas
 Existem diversas LP, e cada uma tem determinadas características que a tornam
adequada
– para a solução de determinados tipos de problemas
– para expressar (escrever) soluções para esses tipos de problemas
Tradução de Programas
 Um algoritmo escrito em uma linguagem de alto nível(programa) deve ser
traduzido para a linguagem de máquina para que possa ser executado por
ela

 Essa tradução é feita por dois tipos de programas:


– compiladores
– interpretadores
Interpretação de Programas
 Um interpretador atua como um "intérprete" entre uma Linguagem de
Programação e a linguagem de máquina
– ele lê um programa escrito em linguagem de alto nível e o “executa”, como se fosse a CPU
A Linguagem Python
 É uma linguagem interpretada de alto nível
– na verdade, Python é geralmente compilada para “bytecode” e depois interpretada

 É uma linguagem de código aberto


– mantida por uma comunidade grande e participativa
– extensa documentação disponível

 Simples mas poderosa, adequada tanto para iniciantes como para


desenvolvedores experientes
Alguns Usos Típicos de Python
 Python é usado em diversos domínios de aplicações
– existem milhares de “bibliotecas” disponíveis para simplificar a construções de
aplicações e sistemas em diferentes áreas

 Alguns exemplos de domínios:


– computação científica/numérica
– desenvolvimento WEB/Internet
– educação
– interfaces gráficas
– apoio a desenvolvimento de software
COMPUTADOR HIPOTÉTICO SIMPLES
Computador

Um computador é uma máquina capaz de sistematicamente coletar, manipular e fornecer


os resultados da manipulação de informações para um ou mais objetivos. É uma
máquina composta de vários circuitos e componentes eletrônicos.

45
Hardware X Software

 Hardware é a parte física, visível do computador, ou seja, o conjunto formado pelos


circuitos eletrônicos e partes eletromecânicas.

 Software consiste em programas, de qualquer tipo e em qualquer linguagem, que são


introduzidos na máquina para fazê-la trabalhar, passo a passo, e produzir algum
resultado. É o que dá vida ao computador.

46
Modelo de um Computador

Bus é o canal que


transfere informação entre
os componentes do
computador

47
Modelo de um Computador

“Cérebro” do
computador
48
Modelo de um Computador

Executa instruções
armazenadas na memória
principal
Modelo de um Computador

Informação é perdida quando o


computador é desligado
Modelo de um Computador

Informação é mantida mesmo


quando o computador é
16/08/2019 51
desligado
Modelo de um Computador

Para executar um programa, ele precisa ser


copiado da memória secundária para a
principal
Modelo de um Computador

Possibilitam o usuário fornecer e


receber informações do computador
CPU
 A CPU tem uma linguagem própria para especificar as instruções que “sabe”
executar
– chamada "linguagem de máquina", projetada para um computador e não para uma pessoa

 A linguagem de máquina é bem mais "primitiva" (baixo nível) que uma


linguagem de programação de alto nível
– as instruções são bem mais simples
– cada instrução é representada por um “código”
Memória
O computador só executa as instruções que estão armazenadas na memória principal.
 A memória é dividida em células(posições) cada uma capaz de armazenar n bits(0/1)
 A cada célula é associado um endereço.
 Só armazena NÚMEROS na forma binária
 Há códigos numéricos para cada possível instrução.

55
Números inteiros na memória
 Números também são armazenados na representação binária
 Cada bit armazena um algarismo do número em binário

7 6 5 4 3 2 1 0
Exemplo: Número +9
 E o sinal?
38
0 0 0 0 1 0 0 1

Um dos bits indica se o número é positivo ou negativo Sinal: 0+


1 -

Número -9 7 6 5 4 3 2 1 0
45
1 0 0 0 1 0 0 1

56
Números reais em ponto fixo na memória
 Parte dos bits para a parte inteira e parte para a decimal

inteira fracionária

7 6 5 4 3 2 1 0

Exemplos:
Número +9.0 Número -9.0
7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0

23
0 1 0 0 1 0 0 0
32
1 1 0 0 1 0 0 0

Faixa muito limitada de valores:

57
Números reais em ponto flutuante

 Representação por notação científica: - 9.0 - 0.9 * 10 1


mantissa expoente

7 6 5 4 3 2 1 0

Sinal

Exemplos 7 6 5 4 3 2 1 0
Número -9.0
8 1 1 0 0 1 0 0 1

 Grande Faixa de valores representáveis:


 Perda de precisão
58