Você está na página 1de 103

MAMI – Aula Remota 3:

MRU
Melo Jr - SMD/UFC - 2020
MRU, as 3 Letrinhas...
Você ainda lembra o que é o
MRU?
Apesar dessas três letrinhas
causarem comoção nas aulas de
Física, elas, na verdade, trabalham
um conceito muito simples...
Modelo Natural
Relembrando: modelo natural é
simplesmente a descrição do
acontecimento/ fenômeno para uma
melhor compreensão do mesmo.
E, antes de começar, é fundamental
entender o que significa MRU:
Movimento Retilíneo Uniforme.
Para tanto, responda às seguintes
três questões simples:
1. O que é movimento?
2. O que é retilíneo?
3. O que é uniforme?
Apesar de as perguntas serem
simples, note que responder às
mesmas não é necessariamente
elementar...
Só continue se você pelo menos tentar responder às três questões levantadas.
Considerando o contexto
específico do MRU, vamos a
possíveis respostas:
1. Movimento:
Reposicionamento de um
determinado corpo (algo ou alguém).
2. Retilíneo:
Que ocorre em linha reta.
3. Uniforme:
Que se dá sempre da mesma
forma.
Agora que chegamos às três
respostas, fica um pouco mais
fácil entender o que é o MRU:
“MRU é o reposicionamento de um
corpo que ocorre em linha reta e se
dá sempre da mesma maneira.”
Apesar da descrição anterior,
provavelmente ainda deve haver uma
dúvida em referente a esse “da
mesma maneira”.
Nesse caso, para compreender o
MRU devidamente, é essencial
considerar o TEMPO.
Sendo assim,
“MRU é o reposicionamento de um
corpo que ocorre em linha reta e se
dá sempre da mesma maneira em
relação ao tempo.”
Pronto! A partir daqui podemos
continuar com um exemplo:
Digamos que você foi, a pé, do
portão de sua casa à padaria da
esquina para comprar leite.
Como você se deslocou, ocorreu
um movimento.
Se fizermos de conta que o caminho
entre o portão da sua casa e a
padaria era uma linha reta, então o
deslocamento realizado foi um
movimento retilíneo.
E se você tem um controle corporal
perfeito e conseguiu manter uma
velocidade realmente constante
durante todo o trajeto, então ocorreu
um movimento retilíneo uniforme.
Aliás, o conceito de velocidade
constante é exatamente a ideia
anterior de “mesma maneira em
relação ao tempo”...
Assim, se você levou um minuto para
ir da sua casa à padaria, se tudo
correr bem e tudo estiver do mesmo
modo, precisará de exatamente mais
um minuto para voltar.
E, seguindo o exemplo, se for e voltar
da padaria cinco vezes, quanto você
tempo precisará no total?
Se sua resposta for 10 minutos,
avance ao próximo slide; senão,
acesse nosso fórum urgentemente.
Parabéns!
Você sabe o que é um MRU!
Modelo Matemático
Relembrando: modelo matemático é o
emprego de algum artifício matemático
(geralmente uma equação/fórmula) para
a modelagem de um aspecto específico
do acontecimento/fenômeno.
Pare de tremer* e vamos ao
trabalho:
Só porque leu “Matemática” no slide anterior, não quer dizer que é difícil.
Aliás, muito pelo contrário...
O segredo para definir um modelo
matemático passa, necessariamente, por
estabelecer variáveis considerando o
modelo natural original.
Sendo assim, fica fácil:
Variáveis do MRU:
d: deslocamento realizado
v: velocidade constante desenvolvida
t: tempo decorrido
É a partir das três variáveis
anteriores que surge a famosa
fórmula: d = v . t
Tente compreender o que essa fórmula significa.
Para entender melhor, vamos –
claro! – a exemplos:
No caso da padaria, digamos que
a distância entre o portão da sua
casa e a padaria seja de 50 m.
Então, para uma ida de sua casa à
padaria: d = 50 m e t = 1 min*.
Qual seria a velocidade?
*esse tempo já foi estabelecido anteriormente, lembra?
Usando a fórmula:
d=v.t
50 m = v . 1 min
v = 50 m / min*
Eu sei, m/min é uma unidade um tanto estranha para velocidade – é mais comum
ou km/h ou m/s –, mas ela é totalmente válida, sim!
Curiosidade: para você, 50 m/min
seria rápido ou lento?
Agora tente calcular a velocidade
média para o caso de “for e voltar
da padaria cinco vezes”...
Qual a velocidade média que
você obteve?
Se tudo correu bem, a resposta é...
os mesmíssimos 50 m/min,
afinal é um MRU!
Pare e pense um pouco porque
isso aconteceu: as velocidades
médias calculadas foram iguais.
Se você compreendeu que, na
verdade, a velocidade constante é a
base do MRU, então tudo bem...
... e o modelo matemático (a
fórmula, no caso) simplesmente
comprovou o modelo natural,
conforme o esperado.
Novamente, se tudo correu bem até
aqui, continue. Senão, acesse nosso
fórum para esclarecimentos.
Modelo Computacional
Relembrando: modelo computacional é a
passagem do modelo matemático para
uso direto no computador, podendo-se
manipular mais facilmente as variáveis
então estabelecidas e realizar operações
mais complexas e interessantes.
Antes de tudo, é necessário estabelecer o
objetivo da aplicação a ser criada.
Em nosso exemplo, o objetivo da
aplicação será calcular o deslocamento
realizado, a uma velocidade média pré-
estabelecida, de acordo com um
determinado tempo decorrido.
Lembre-se desse objetivo da aplicação.
Depois, é necessário compatibilizar o
modelo matemático com o
computacional.
Então, a primeira coisa a fazer é mapear
as variáveis a serem utilizadas e definir
seus respectivos tipos:
Modelo Matemático Modelo Computacional
d (número) deslocamento (inteiro)
v (número) velocidade (inteiro)
t (número) tempo (inteiro)
Feito isso, deve-se estabelecer qual será a
variável de controle, aquela que o
programa controlará para calcular as
demais.
A variável de controle pode ser qualquer
uma (deslocamento, velocidade ou
tempo); mas, pelo menos por enquanto,
escolheremos tempo, seguindo o objetivo
de nossa aplicação a ser desenvolvida.
Ainda lembra qual é esse objetivo?
Agora, considerando o objetivo da aplicação,
a variável de controle (tempo) e as demais
variáveis (deslocamento e velocidade), e
seguindo o raciocínio já desenvolvido com o
modelo matemático, é bem fácil criar uma
primeira versão de código:
Note que os modelos natural, matemático e computacional formam uma sequência
lógica, onde um é necessariamente embasado no outro.
void setup() {
int velocidade = 50;
int tempo = 0;
int deslocamento = velocidade * tempo;
println(deslocamento);
}
Após executar o código anterior, pense sobre:

1. O que ele representa?


2. Porque o resultado apresentado no console é 0?
3. O que significa esse resultado?
Antes de continuar, tenha certeza
que você tentou responder às três
perguntas anteriores.
De forma bem resumida, esse é o
código que simula sua ida de casa à
padaria, a uma velocidade de 50
m/min, no tempo 0 min.
E o resultado é 0 m, significando que
em 0 min você sequer saiu do portão
de sua casa, ainda, mesmo estando a
50 m/min.
Agora, faça um simples ajuste no
código:
void setup() {
int velocidade = 50;
int tempo = 1;
int deslocamento = velocidade * tempo;
println(deslocamento);
}
Tente responder às mesmas três
perguntas.
Note como, apesar do “resultado frio
do console” :), a alteração no valor
de uma simples variável (tempo de 0
para 1) tem um impacto conceitual
importante.
Nesse caso, seguindo nosso exemplo,
você já teria chegado à padaria.
Perceba como o uso de um exemplo é essencial para compreender a interação
entre os três modelos (natural, matemático e computacional).
E, ainda seguindo nosso exemplo,
caso o valor da variável tempo
assumisse o valor 2, qual o valor
apresentado no console e qual a
possível ocorrência representada?
Resposta: seria possível ter ido de
casa à padaria e, então, ter voltado
para casa.
Observação: perceba que, nesse caso, a distância percorrida seria nula, apesar do
deslocamento realizado ser de 100 m, no total. É por isso que seu professor da
escola dizia tanto que distância e deslocamento são conceitos diferentes,
particularmente no MRU.
Logicamente, cada valor assumido
pela variável tempo representa uma
ocorrência diferente, considerando
os modelos natural, matemático e
computacional.
Agora, algo que é essencial, que
talvez você ainda nem tenha
percebido, é que é necessário definir
muito bem as unidades de medida
de cada variável representada.
Conforme já discutido na aula
passada, é muito importante o
estabelecimento de uma escala.
No nosso exemplo, as unidades de
medida consideradas são:
Variável Unidade de Medida
deslocamento (inteiro) m
velocidade (inteiro) m/min
tempo (inteiro) min
Por falar nisso, para você, 50 m/min
é muito ou pouco?
Você consegue transformar essa velocidade para as unidades clássicas km/h e m/s?
Dividindo para Conquistar
Agora que você já compreendeu o
MRU e os três modelos envolvidos, é
hora de refinar o modelo
computacional para desenvolver
aplicações mais interessantes.
Caso você não tenha compreendido, retorne aos slides anteriores. E, se você já fez
isso e não adiantou, acesse o fórum ou mesmo a conferência direta com o professor.
Observe o código a seguir, onde foi
empregado o dividir para conquistar
(apresentado na aula passada), e
compare-o com a versão anterior:
void setup() {
println(MRU(50, 0));
}

int MRU(int velocidade, int tempo) {


int deslocamento;
deslocamento = velocidade * tempo;
return(deslocamento);
}
Note que nessa versão do código, foi
criada uma função, chamada MRU.
Apesar de um tanto maior, a
transformação de parte do código original
em uma função, além de ser uma boa
prática de programação, permite uma
maior organização e um futuro reuso.
Experimente simular outras situações
e tente compreender as respectivas
ocorrências sob a ótica de cada um
dos três modelos.
Agora, aproveitemos a criação da
função MRU e façamos mais uma
evolução no código, buscando criar um
simulador numérico de tempo real*:
Se você esqueceu o que é o conceito de tempo real, consulte o material de nossa
aula anterior.
void draw() {
dAtual = MRU(vAtual, tAtual);
int tAtual = 0; println(tAtual, dAtual);
int vAtual = 50; tAtual++;
int dAtual; }

void setup() { int MRU(int v, int t) {


frameRate(1); int d;
} d = v * t;
return(d);
}
Note que os nomes das variáveis
foram alterados, deixando-os
menores, porém contextualizados –
essa também é uma boa prática de
programação.
Considerando o conceito de
simulador de tempo real, você
consegue explicar o que essa versão
do código faz e como ela se relaciona
com os três modelos?
Experimente mudar os valores das
variáveis e tente explicar os
respectivos valores que aparecem no
console.
E que tal utilizar um cronômetro (de
relógio, celular, etc.) em paralelo à
execução deste código, para
acompanhar o tempo real?
Agora vamos a uma última evolução
do código por hoje:
void draw() {
dAtual = MRU(vAtual, tAtual);
int tAtual = 0;
println(tAtual, dAtual);
int vAtual = 10;
ellipse(dAtual, 300, 10, 10);
int dAtual;
tAtual++;
}
void setup() {
frameRate(1);
int MRU(int v, int t) {
size(600, 600);
int d;
background(255);
d = v * t;
}
return(d);
}
E agora, sabe explicar o que houve?
Essa é uma versão gráfica do
simulador de MRU em tempo real!
A versão anterior era puramente numérica, ou seja, toda a informação era
mostrada na forma de números. Essa última já é gráfica; porém, mesmo assim, os
números são importantes e devem ser mantidos no console para uma avaliação
mais apurada de ocorrências.
Mais uma vez, experimente alterar o
valor das variáveis para tentar
compreender as respectivas
ocorrências.
Para auxiliar suas observações, inclua
o procedimento mostraMundo nesse
código.
O procedimento mostraMundo foi definido ao final da aula passada e, conforme
dito, comporá a base de uma biblioteca fundamental em momentos como esse, de
ajustes de uma aplicação.
E, por fim, modifique o que for necessário
no código para que ele possa representar
também ocorrências com velocidades
negativas.
Dica: a origem da movimentação não poderá ser mais na extremidade esquerda da
tela. Que tal usar o centro da mesma?
Tarefa
Analise o seguinte código e compare-o
com o anterior:
Eu sei que disse que aquele era o último código da aula; mas esse próximo é da
tarefa, então não conta.
void draw() {
background(255);
dAtual = MRU(vAtual, tAtual);
float tAtual = 0; println("Tempo: " + tAtual);
float vAtual = 10; println("Deslocamento: " + dAtual);
float dAtual; println();
ellipse(dAtual, 300, 10, 10);
float intervalo = 1.0/60; tAtual = tAtual + intervalo;
}
void setup() {
size(600, 600); float MRU(float v, float t) {
} float d;
d = v * t;
return(d);
}
Então, utilizando nosso fórum, discuta as
mudanças realizadas e os prováveis
porquês* das mesmas.
*Lembre-se: os porquês são o real objetivo de MAMI.
Por fim, crie um documento que descreva
as conclusões a que você chegou em
relação a estas alterações e poste-o em
nossa respectiva tarefa no SIGAA.
MAMI
SMD/UFC - 2020