Este documento apresenta dois problemas de algoritmia e suas soluções. O Problema 1 propõe trocar objetos entre as mãos e sua solução é um algoritmo e programa que troca as bolas azul e laranja entre as mãos. O Problema 2 pede para ler 3 números e mostrar o maior, e sua solução é um algoritmo que lê os números, compara-os e escreve o maior. O documento também discute conceitos como variáveis, memória RAM e tabela ASCII.
3. Problema 1 - regras
• Construir um algoritmo para trocar os objetos entre as duas mãos.
• Regra 1: Em qualquer momento, uma mão só pode segurar um objeto;
• Regra 2: Um objeto tem de estar sempre em contacto com uma mão.
5. Problema 1 - solução - algoritmo
INÍCIO
colocar bolaAzul na mãoA;
colocar bolaLaranja na mãoB;
trocar bola na mãoA para a mãoC;
trocar bola na mãoB para a mãoA;
trocar bola na mãoC para a mãoB;
libertar mãoC;
FIM
6. Um programa...
• ... serve para processar informação!
• para a informação ser processada ela tem que ser armazenada no
computador.
• numa linguagem de programação, são as variáveis que permitem
armazenar informação.
• uma variável simples apenas pode conter um elemento de informação;
• o tipo de informação armazenada numa variável influencia as
operações na qual esta pode ser utilizada;
• o limite do número de variáveis é essencialmente determinado pela
espaço de armazenamento disponível no computador.
• num computador é a RAM e os registos do processador que permitem
armazenar informação para ser processada.
7. Problema 1 - solução - programa
INÍCIO
var a = “Azul”;
var b = “Laranja”;
var c = a;
a = b;
b = c;
FIM
8. Problema 1 - programa - como funciona?
INÍCIO
var a = “Azul”;
var b = “Laranja”;
var c = a;
RAM
a = b;
b = c;
FIM
vamos ver no quadro o funcionamento passo-a-passo!
9. Problema 1 - programa - como funciona?
INÍCIO
a “Laranja”
var a = “Azul”; b “Azul”
c “Azul”
var b = “Laranja”;
var c = a;
a = b;
b = c;
FIM
resultado final em RAM de acordo com a simulação realizada na aula
10. Curiosidade
• um simulador online de execução de código em Python
• http://www.pythontutor.com/visualize.html
11. Variáveis: espaço em memória
• Qual o espaço ocupado por uma variável para armazenar o texto “Azul”?
• Qual o espaço ocupado para armazenar um carácter?
• a resposta está na tabela ASCII (http://www.asciitable.com/)
12. Tabelas ASCII
0..255 = 256 valores
256 = 2 x 2 x 2 x 2 x 2 x 2 x 2 x 2 = 28
2 corresponde à base binária: 0 ou 1 (1 bit)
8 é o número de símbolos
8 bits = 1 Byte por elemento ASCII
13. Variáveis: espaço em memória
• Qual o espaço mínimo ocupado por uma variável para armazenar o texto
“Azul”?
“A” “z” “u” “l”
65 122 119 108 (4 Bytes)
01000001 01111010 01110101 01101100 (32 bits)
14. Problema 2
• Escrever um algoritmo que leia três números inteiros e apresente o maior dos
valores introduzidos.
15. Problema 2 - questões?
• Escrever um algoritmo que leia três números inteiros e apresente o maior dos
valores introduzidos.
• quantas variáveis são necessárias?
• como determinar o maior de 3 números inteiros?
16. Problema 2 - algoritmo
INÍCIO
ler dados de entrada;
determinar o maior valor;
escrever resultado final;
FIM
17. Problema 2 - algoritmo
INÍCIO
ler dados de entrada (num1, num2, num3);
determinar o maior valor (num1, num2, num3, maior);
escrever resultado final (maior);
FIM
18. Problema 2 - algoritmo
INÍCIO
ler (num1);
ler (num2);
ler (num3);
maior = num1;
SE num2 > maior ENTÃO
maior = num2;
FIM SE
SE num3 > maior ENTÃO
maior = num3;
FIM SE
escrever (maior);
FIM
19. Problema 2 - programa
INÍCIO
var num1 = lerValor();
var num2 = lerValor();
var num3 = lerValor();
var maior = num1;
SE num2 > maior ENTÃO
maior = num2;
RAM
FIM SE
SE num3 > maior ENTÃO
maior = num3;
FIM SE
escrever (maior);
FIM
vamos ver no quadro o funcionamento passo-a-passo!
20. Problema 2 - outras soluções?
• Será possível encontrar uma solução que só utilize duas variáveis simples?
• Se sim, apresentar solução no grupo do SAPO Campus;
• Instruções vão ser enviadas muito brevemente pelo moodle!
• Identificar vantagens e desvantagens dessa possível solução.
21. Próxima aula
• Javascript!
• para que serve?
• como ler?
• como armazenar informação?
• como escrever?
• ...