#N canvas 128 47 1030 809 12;
#X obj 10 9 cnv 15 400 40 empty empty Int-Float: 20 12 0 24 -262144
-66577 0;
#X obj 628 301 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144
-1 -1;
#X floatatom 628 365 5 0 0 0 - - -;
#X obj 36 299 + 5;
#X text 22 133 Primeiro \, se você escrever um número no pd \, seja
em mensagens \, e até mesmo em objetos \, e esse número terminar com
um ponto \, ou ponto seguido de zero \, o Pd ignora o ponto e o zero
\, deixando o número em sua forma inteira.;
#X text 22 209 Você pode achar que não \, ao ver isso em um comentário
ou em uma mensagem após conseguir escrever. Mas é só uma "ilusão de
ótica" \, se você duplicar a mensagem \, ou reabrir o patch \, vai
ver que a verdade é outra.;
#X text 81 299 O Pd obriga o número a ficar assim \, na sua forma inteira
;
#X floatatom 657 299 5 0 0 0 - - -;
#X obj 628 329 expr $f1 * (4 / 3);
#X floatatom 647 716 5 0 0 0 - - -;
#X floatatom 647 651 5 0 0 0 - - -;
#X obj 647 681 expr ($f1 * 4) / 3;
#X floatatom 637 540 5 0 0 0 - - -;
#X floatatom 637 473 5 0 0 0 - - -;
#X obj 637 503 expr $f1 * 4 / 3;
#X text 33 348 Acontece que no [expr] \, se temos um número assim \,
inteiro \, ele é considerado como um inteiro \, e não como um float.
A consequência que temos é essa \, na conta abaixo \, o resultado de
5 / 3 também é um inteiro \, clique no bang.;
#X obj 82 423 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1
-1;
#X floatatom 82 472 8 0 0 0 - - -;
#X text 155 474 igual a um \, em vez de 1.66667;
#X text 21 57 O Pd trabalha somente com floats \, já o [expr] entende
e separa "ints" de "floats". Isso pode gerar um certo conflito. Preisamos
entender como o Pd lida com números para compreender um certo probleminha.
;
#X text 117 320 mas ainda o considera como um "float";
#X obj 82 442 expr 5 / 3;
#X text 170 443 números inteiros;
#X text 83 500 resutado inteiro;
#X text 35 540 Em compensação \, se escrevermos o número seguido de
um ponto \, ou ponto e zero \, o [expr] entende que é um float. Só
que o Pd não deixa a gente fazer isso. O truque \, então \, é escrever
uma expressãp matemátcia sem espaços \, do tipo 5.0/3 \, ou ainda 5./3.
Assim \, o Pd vai entender que esse treco é um símbolo \, e não um
número \, daí ele não vai interfirir e converter.;
#X obj 65 708 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1
-1;
#X floatatom 65 757 8 0 0 0 - - -;
#X obj 65 727 expr 5.0/3;
#X text 264 727 Assim funciona;
#X text 499 45 Agora \, isso não é de fato um grande problema ou questão
que devemos nos atentar diversas vezes \, uma vez que usamos muito
o [expr] com variáveis. E a variável "$f1" indica que é um "float".
;
#X floatatom 662 203 8 0 0 0 - - -;
#X obj 662 173 expr $f1 / 3;
#X msg 662 137 5;
#X floatatom 616 137 5 0 0 0 - - -;
#X text 30 655 Basta que um número na expressão seja float. Então \,
ambos os casos abaixo funcionam igualmente \;;
#X obj 172 708 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144
-1 -1;
#X floatatom 172 757 8 0 0 0 - - -;
#X obj 172 727 expr 5/3.0;
#X text 511 240 Mas \, se você for usar parênteses \, tome cuidado
\, veja que abaixo (4 / 3) é igual a um \, e não 1.33333!;
#X text 507 402 Esse foi um exemplo meio bobo \, porque não precisamos
de parênteses \, ele não faz diferença. Sendo que assim abaixo funciona.
Mas \, enfim \, o objetivo aqui é a didática...;
#X text 513 588 E \, assim sendo \, entenda também que aqui abaixo
também funciona \, já que o que sai dos parênteses é um float.;
#X connect 1 0 8 0;
#X connect 7 0 8 0;
#X connect 8 0 2 0;
#X connect 10 0 11 0;
#X connect 11 0 9 0;
#X connect 13 0 14 0;
#X connect 14 0 12 0;
#X connect 16 0 21 0;
#X connect 21 0 17 0;
#X connect 25 0 27 0;
#X connect 27 0 26 0;
#X connect 31 0 30 0;
#X connect 32 0 31 0;
#X connect 33 0 31 0;
#X connect 35 0 37 0;
#X connect 37 0 36 0;
