7  Radioatividade e energia nuclear

O MUNDO TE CHAMA

Nem toda energia aparece como calor ou movimento. Algumas das transformações mais intensas do universo acontecem nas escalas invisíveis de dentro do átomo. A radioatividade mostra que a matéria não é completamente estável. Dentro dos átomos existe energia nuclear capaz de curar, medir, datar, e gerar eletricidade, mas também matar, exigindo responsabilidade ética, ambiental e social. Certos núcleos se transformam espontaneamente, emitindo partículas e energia. E essas transformações permitem datar fósseis e rochas, diagnosticar e tratar doenças, gerar energia elétrica, esterilizar materiais e estudar estruturas invisíveis.

Por outro lado, a radioatividade também levanta questões ambientais, sociais e mesmo da sobrevivência da humanidade, como a gestão de resíduos radioativos e segurança, o impacto ambiental, decisões sociais e políticas, geração alternativa de energia, enriquecimento de isótopos para fins pacíficos e restrição ao emprego de ogivas e armas nucleares.

O capítulo pretende fornecer uma visão panorâmica no tema de energia nuclear e impactos no mundo real, conectando ciência, tecnologia e sociedade, e apresentando alguns dos conceitos no tema. Ilustrando, a meia-vida radioativa, os tipos de radiação, fissão nuclear e energia liberada, e a discussão de riscos, benefícios e impactos da energia nuclear.

Figura 7.1: O núcleo do átomo transforma matéria, energia e decisões humanas.

Ao final, você será capaz de:

- explicar o que torna um núcleo radioativo;
- diferenciar radiações alfa, beta e gama;
- interpretar curvas de decaimento e meia-vida;
- relacionar fissão nuclear com produção de energia;
- comparar benefícios e riscos da energia nuclear;
- discutir impactos ambientais, sociais e tecnológicos da radioatividade;
- investigar modelos computacionais para visualização interativa do tema;

MEXA ANTES DE ENTENDER

Acesse o JSPlotly da Figura 7.2 abaixo para entender um pouco como uma amostra radioativa diminui ao longo do tempo.

Figura 7.2: Meia-vida: a cada intervalo de tempo resta metade da quantidade anterior. Clique com o botão direito neste LINK e abra o app em nova aba.

Agite antes de usar

O gráfico compara diferentes valores de meia-vida, mostrando que alguns materiais decaem rapidamente, enquanto outros permanecem ativos por muito mais tempo. Execute o script e observe as curvas para as meia-vidas.

Compare qual curva cai mais rápido.

const meiasVidas = [2, 5, 10, 20];

Depois altere como abaixo. Observe que a forma do decaimento continua a mesma, mas a escala muda.

const quantidadeInicial = 200;
const tempoMaximo = 80;

Verifique que a radioatividade não desaparece toda de uma vez. O decaimento radioativo é probabilístico. Não sabemos exatamente quando um núcleo específico vai decair mas, quando observamos muitos núcleos juntos, aparece um padrão regular. Um tutorial para uso do app segue abaixo.

  1. Rode o script;
  2. Observe as quatro curvas;
  3. Veja qual delas cruza primeiro a linha da metade;
  4. Compare meia-vida curta e meia-vida longa;
  5. Aumente tempoMaximo;
  6. Observe o comportamento de longo prazo;
  7. Altere quantidadeInicial;
  8. Veja que o padrão relativo permanece;
  9. Modifique a lista meiasVidas;
  10. Compare novos materiais simulados.

Observe que o que muda mais é o tempo necessário para a amostra decair, e não sua quantidade inicial, o que evidencia uma das aplicações mais práticas do cálculo de meia-vida: a datação de fósseis e artefatos antigos. Que tal explorar alguns cenários ?

  1. Decaimento rápido. Por que materiais com meia-vida curta desaparecem rapidamente ?
const meiasVidas = [1, 2, 3, 4];
  1. Decaimento lento. Por que materiais com meia-vida longa permanecem ativos por muito tempo?
const meiasVidas = [10, 20, 40, 80];
  1. Tempo maior. A quantidade chega exatamente a zero ou apenas se aproxima dele ?
const tempoMaximo = 100;
  1. Quantidade inicial maior. A meia-vida muda quando começamos com mais material ?
const quantidadeInicial = 1000;
  1. Comparação extrema. Como curvas muito diferentes ajudam a entender risco, persistência e armazenamento ?
const meiasVidas = [1, 5, 50, 100];

As curvas mostram decaimento exponencial. No início, a queda pode parecer rápida. Depois, a quantidade continua diminuindo, mas cada nova metade é calculada sobre o que ainda resta. Por isso, a curva se aproxima de zero gradualmente. Ou seja, meia-vida é o tempo que leva para restar metade de um material.

Por dentro do script

O script usa uma função para calcular o decaimento:

function calculaDecaimento(N0, T12, tempo) {
  return N0 * Math.pow(0.5, tempo / T12);
}

Onde N0 é a quantidade inicial, T12 é a meia-vida, e tempo é o período transcorrido. Depois, o script calcula várias curvas:

const meiasVidas = [2, 5, 10, 20];

Cada curva mostra uma amostra com meia-vida diferente. A linha tracejada marca metade da quantidade inicial, e ajuda a visualizar quando cada curva atinge sua primeira meia-vida.

quantidadeInicial / 2

FAZENDO APARECER

A equação de decaimento radioativo mostra quanto de uma substância radioativa ainda resta depois de certo tempo:

\[ N(t) = N_0 \cdot \left(\frac{1}{2}\right)^{t/T_{1/2}} \tag{7.1}\]

Na Equação 7.1, \(N(t)\) representa a quantidade de material radioativo que resta no tempo \(t\), \(N_0\) a quantidade inicial da substância radioativa, e \(T_{1/2}\) a meia-vida.

Assim, a quantidade restante pode ser entendida como a quantidade inicial multiplicada por metade elevada ao número de meias-vidas transcorridas. Chato, não ? Então, quem sabe um “corta pela metade, corta pela metade, corta pela metade,…”, e assim por diante. Na prática, um padrão que permite prever quanto material radioativo ainda resta depois de certo tempo.

A radiação é conhecida por apresentar riscos à saúde em função de seu poder de penetração nos tecidos, chegando inclusive aos ossos. Existem alguns tipos de radiação, cada um interagindo com a matéria de forma diferente, em com diferentes níveis de impacto sobre a matéria. O JSPlotly a seguir apresenta uma forma mais descontraída para esse estudo.

Figura 7.3: Uma radiação mais penetrante não significa necessariamente mais perigosa. Clique com o botão direito neste LINK e abra em nova aba.

O script compara três tipos de radiação: alfa (\(\alpha\)), beta (\(\beta\)) e gama (\(\gamma\)). Você pode observar, simultaneamente, o poder de penetração, a capacidade de ionização, massa relativa, carga elétrica e tipo de blindagem.

Agite antes de usar

Execute o script. As barras mostram penetração e ionização, enquanto os pontos mostram massa e carga. Observe qual radiação penetra mais, qual ioniza mais, e qual tem maior massa. Passe o mouse sobre as barras para ver a blindagem. E compare os tipos de radiação. Por exemplo, alfa vs beta, beta vs gama, e alfa vs gama.

Apesar de transparecer que um tipo seja mais “forte” e mais perigoso do que outro, no mundo real não funciona assim. O risco depende de alguns fatores, como a penetração (até onde chega), a ionização (quanto dano local causa), e o contexto (externo ou interno ao corpo), além do tempo e da quantidade de exposição.

Por exemplo, a alfa possui baixa penetração mas alta ionização, enquanto que a gama possui alta penetração mas menor ionização local. Isso quebra o mito de que quanto mais penetrante a radiação, mais perigosa ela se apresenta. Vai abaixo um modo de uso do script.

  1. Rode o script;
  2. Observe as barras de penetração;
  3. Compare com as de ionização;
  4. Observe os pontos de massa;
  5. Veja a carga elétrica;
  6. Passe o mouse para ver a blindagem;
  7. Compare os três tipos;
  8. Relacione massa e penetração;
  9. Relacione ionização e dano potencial;
  10. Interprete o conjunto como um sistema.

Reflita qual tipo de radiação causa mais dano em diferentes situações. E siga os cenários abaixo para se apropriar do tema e “brilhar no escuro”.

  1. Comparação direta. Observe o gráfico completo. Qual radiação penetra mais ? qual ioniza mais ?

  2. Radiação alfa. Foque em “Alfa”. Por que ela é facilmente bloqueada, mas ainda perigosa ?

  3. Radiação beta. Foque em “Beta”. Por que ela representa um intermediário entre alfa e gama ?

  4. Radiação gama. Agora foque em “Gama”. Por que ela exige materiais densos para blindagem, como chumbo ?

  5. Blindagem. Observe os textos: * papel, alumínio, e chumbo. Por que materiais diferentes são necessários para cada tipo ?

  6. Interpretação integrada. Compare tudo. Qual radiação é mais perigosa fora do corpo ? e dentro do corpo ?

Comparando os tipos de radiação, podemos resumir como:

  1. Alfa: alta massa, alta ionização, baixa penetração.
  2. Beta: massa pequena, penetração média, ionização intermediária.
  3. Gama: sem massa, alta penetração, menor ionização local.

Concluindo, o tipo de interação importa mais do que sua “força” isolada.

Por dentro do script

O script organiza os dados em uma lista:

const radiacoes = [...]

Cada tipo possui propriedades de massa, carga, penetração, ionização e blindagem. Depois separa os dados para o gráfico:

const penetracao = radiacoes.map(r => r.penetracao);
const ionizacao = radiacoes.map(r => r.ionizacao);

No gráfico as barras mostram penetração e ionização e os pontos massa e carga, reunindo várias dimensões em uma única visualização.


VOLTA PRO MUNDO

O átomo possui duas regiões, o núcleo e a eletrosfera. O núcleo é a região central, extremamente compacta e densa, e que concentra praticamente toda a massa atômica. Nele ficam os prótons (com carga elétrica positiva) e os nêutrons (partículas sem carga que ajudam a estabilizar o núcleo). Ao redor desse centro, em um vasto espaço quase totalmente vazio, fica a eletrosfera, onde os elétrons (partículas de carga negativa e massa desprezível) “giram” em alta velocidade, atraídos pela carga positiva do núcleo.

Diversas reações que ocorrem nos átomos podem liberar energia, como a fusão nuclear, que ocorre quando dois núcleos atômicos leves se unem para formar um único núcleo mais pesado, o que libera uma quantidade colossal de energia. E também a `fissão nuclear´, que envolve a divisão de um átomo pesado, também liberando grande quantidade de energia.

Agora que você já aprendeu “na prática” um pouco sobre a meia-vida, o decaimento radioativo e os tipos de radiação, que tal simular um fenômeno do mundo real, a fissão nuclear, base para a produção de energia elétrica em usinas nucleares ? E melhor ainda…com uma animação !

Figura 7.4: A fissão nuclear transforma massa em energia e pode gerar reações em cadeia. Clique com o botão direito neste LINK e abra o app em nova aba.

A fissão nuclear libera energia quando o núcleo se rompe. Mais detalhadamente, pela divisão de um núcleo atômico pesado e instável (como o Urânio-235) em dois ou mais núcleos menores, liberando uma enorme quantidade de energia, nêutrons e radiação.

Agite antes de usar

O script da Figura 7.4 mostra uma fissão nuclear animada. Nela você pode acompanhar um nêutron incidente, o núcleo de U-235, a quebra em fragmentos menores, a emissão de novos nêutrons e a liberação de energia em ondas.

Execute o script e clique em Play. Observe o nêutron se aproximando, o núcleo instável, a ruptura e a explosão de energia. Depois altere o valor de energia liberada, e observe como o efeito visual muda (ex: 100, 200, 400).

const energiaLiberada = 50;

Pense: o que muda mais, a forma da reação ou a intensidade da energia ?

Quando o núcleo se divide, parte da massa é convertida em energia, novos nêutrons são liberados, e esses nêutrons podem atingir outros núcleos. Isso leva a um fenômeno de reação em cadeia, na qual uma única fissão pode gerar várias outras. Vai agora um modo de usar para o aplicativo.

  1. Rode o script;
  2. Clique em Play;
  3. Observe o nêutron incidente;
  4. Veja o núcleo antes da fissão;
  5. Observe o momento da ruptura;
  6. Veja os fragmentos se afastando;
  7. Observe os novos nêutrons;
  8. Veja as ondas de energia;
  9. Pause em diferentes momentos;
  10. Altere a energia liberada;
  11. Compare os efeitos.

Perceba que mudanças iniciaipodem gerar grandes efeitos. Seguem também alguns cenários para você experimentar.

  1. Baixa energia. Por que o efeito parece mais “contido” ?
const energiaLiberada = 20;
  1. Energia intermediária. Agora mude a energiaLiberada para 100. Quando o processo começa a parecer mais intenso ?

  2. Alta energia. Suba então para 800. O que muda na propagação da energia ?

  3. Número de frames. O que você percebe melhor com animação mais lenta ?

const numeroFrames = 80;
  1. Interpretação física. Observe os três nêutrons liberados. Quantas novas fissões eles poderiam iniciar ?

A fissão nuclear ocorre em etapas. O nêutron atinge o núcleo (colisão), o núcleo se deforma (instabilidade), ocorrendo a divisão em fragmentos (fragmentação), com a liberação de novos nêutrons (emissão) e a propagação de ondas (energia). Repare que a energia nuclear não é uma explosão “mágica” que surge de átomo fechado, mas o resultado de reorganização da matéria.

Por dentro do script

O script começa definindo a energia:

const energiaLiberada = 20;

Essa energia controla o efeito visual:

const fatorEnergia = Math.sqrt(energiaLiberada / 200);

Depois, a animação é construída frame a frame:

for (let i = 0; i < numeroFrames; i++)

A simulação tem duas fases. A primeira é a aproximação, quando o nêutron se aproxima do núcleo.

neutronX = -6 + ...

E a segunda fase é a fissão, quando o núcleo se divide em Ba (bário), Kr (criptônio) e novos nêutrons.

const p = (fase - 0.35) / 0.65;

E a energia aparece como ondas, e que representam a energia liberada no processo.

ondaEnergia(p, ...)
E SE…

Como de praxe neste livro, um pouco de reflexão, ora ligada aos scripts de JSPlotly, ora não. Dividindo a seção por cada script visto:

Script no.1

  • E se você pudesse observar uma amostra radioativa desde o início — veria ela desaparecer de forma contínua ou em pequenos eventos invisíveis ?
  • E se cada núcleo tivesse um “relógio próprio” imprevisível — como explicar o comportamento coletivo tão regular ?
  • E se a meia-vida fosse diferente — quanto tempo levaria para um material deixar de ser perigoso ?
  • E se uma pequena diferença na meia-vida mudasse completamente o destino de um ambiente contaminado ?

Script no.2

  • E se você pudesse reduzir seu corpo ao tamanho de um núcleo — como pareceria a colisão de um nêutron ?
  • E se a fissão nuclear fosse visível a olho nu — você a veria como uma explosão… ou como uma reorganização da matéria ?
  • E se cada nêutron liberado atingisse outro núcleo — quantas gerações de reações aconteceriam ?
  • E se essa cadeia fosse controlada — o que mudaria em relação a uma reação descontrolada ?
  • E se toda a energia de uma cidade viesse de reações como essa ?

Script no.3

  • E se a radiação fosse invisível, mas seus efeitos acumulados fossem inevitáveis — como medir o risco ?
  • E se a radiação mais penetrante não fosse a mais perigosa — o que realmente define perigo ?
  • E se o mesmo tipo de radiação pudesse curar (na medicina) e também causar danos ?
  • E se o perigo dependesse mais da forma de interação do que da intensidade ?

Script no.4

Hahaaa !!! Isso mesmo. Questões certinhas e devaneios sobre um script de JSPlotly que você nem viu ainda ! Mas já vai se preparando, pois ele está na próxima seção do capítulo.

  • E se você tivesse que decidir como produzir energia para uma cidade inteira ?
  • E se escolher uma fonte significasse abrir mão de outra ?
  • E se uma fonte fosse limpa, mas intermitente (irregular na oferta) ?
  • E se outra fosse estável, mas gerasse resíduos ?
  • E se a melhor decisão não fosse técnica, mas ética ?

Script no. 5

Hahaaa !!! Esse não existe… pegadinha ! Mas é pra você experimentar uma bilocação cerebral…parte dentro da caixa craniana, parte lá longe !

  • E se mudássemos os critérios — e não a tecnologia — o resultado da escolha mudaria ?
  • E se o “melhor” sistema energético dependesse da sociedade que o utiliza ?
  • E se o futuro energético fosse uma combinação, e não uma única solução ?
  • E se toda a energia nuclear viesse, no fundo, da reorganização de partículas invisíveis ?
  • E se massa e energia fossem apenas duas faces da mesma coisa ?
  • E se o que chamamos de “matéria estável” fosse apenas um equilíbrio temporário ?
  • E se estivéssemos olhando para um pedaço de urânio…ou para a história energética da humanidade ?
  • E se a energia que alimenta cidades fosse a mesma que pode destruir cidades ?
  • E se o problema não fosse a física…as como escolhemos usá-la ?
  • E se, em outra estrela, reações nucleares ocorressem continuamente em escalas gigantescas ?
  • E se o Sol fosse apenas um reator nuclear natural ?
  • E se a energia que chega até nós tivesse começado em processos como esses ?
  • E se tudo isso — decaimento, radiação, fissão, energia — fosse parte de um mesmo padrão ?
  • E se entender esse padrão fosse o primeiro passo para tomar decisões melhores ?
  • E se aprender física nuclear não fosse apenas entender o átomo…mas entender responsabilidade ?
  • E se o conhecimento não fosse só poder…mas também escolha ?
  • E se agora, depois de tudo isso…você começasse a olhar para energia de outro jeito ?
MESMO PADRÃO, OUTROS MUNDOS

A radioatividade permeia nosso cotidiano o tempo todo, mesmo que não a percebamos. A pesquisa de matrizes energéticas, a medicina nuclear, a Arqueologia, as Ciências Naturais e outros tantos vértices da pesquisa e indústria desses tempos estão, de uma forma ou outra, envolvidos com radioatividade. Na medicina nuclear, com uso de radioisótopos em exames de imagem, rastreamento de processos fisiológicos e tratamentos específicos. Na datação por carbono, permitindo estimar a idade de materiais orgânicos, rochas e objetos arqueológicos por determinação da meia-vida. Na inspeção indústrial, sendo utilizada para se verificar soldas, medir espessuras, esterilizar materiais e acompanhar processos.

A radioatividade também está presente na pesquisa de exploração espacial, pela maior exposição no vácuo a um fluxo constante de partículas ionizantes de alta energia, como a radiação solar, raios cósmicos e cinturões de radiação em redor dos planetas. Também está presente no meio ambiente, uma vez que rejeitos radioativos exigem isolamento, monitoramento e planejamento. E, como um todo, também na Sociedade, despertando debates intensos sobre o desenvolvimento e uso da energia nuclear, porque envolve ciência, risco, confiança pública, política energética e memória histórica.

Em relação a esse último papel pertinente à decisões políticas e uso consciente de alternativas energéticas, segue um último JSPlotly (Figura 7.5). O aplicativo agora compara fontes de energia por critérios ponderados. Será que dá pra escolher uma fonte que agregue benefícios e exclua riscos ?

Figura 7.5: Escolher fonte de energia envolve decisão pública, ambiental e tecnológica. Clique com o botão direito neste LINK e abra em nova aba.

O script compara diferentes fontes de energia: nuclear, carvão, gás, solar, eólica e hidrelétrica. A comparação considera vários critérios ao mesmo tempo, como produção de energia, confiabilidade, emissão de CO\(_2\), área ocupada, resíduos e risco percebido. Assim, decidir sobre energia exige comparar benefícios, riscos e impactos.

Agite antes de usar

O gráfico de barras resume o índice integrado, enquanto que o gráfico radar mostra o perfil de cada fonte. Uma fonte com radar equilibrado tende a apresentar bom desempenho em vários critérios. Mas uma fonte com radar irregular pode ser muito forte em alguns aspectos e fraca em outros.

Execute o script e observe o gráfico de barras. Depois use o menu suspenso para selecionar uma fonte:

Nuclear
Carvão
Gás
Solar
Eólica
Hidrelétrica

Observe o gráfico radar à direita e depois clique em:

Mostrar critérios

Compare quais critérios favorecem ou desfavorecem cada fonte, e verifique se existe uma fonte de energia perfeita.

A seguir, um pequeno tutorial para uso do app.

  1. Rode o script;
  2. Observe o índice integrado de cada fonte;
  3. Veja qual fonte aparece melhor no ranking inicial;
  4. Use o menu suspenso à direita;
  5. Compare o perfil radar de cada fonte;
  6. Clique em Mostrar critérios;
  7. Observe quais critérios puxam cada fonte para cima ou para baixo;
  8. Compare nuclear com carvão;
  9. Compare nuclear com solar e eólica;
  10. Compare hidrelétrica com as demais;
  11. Reflita sobre o peso dos critérios;
  12. Pergunte o que mudaria se outro critério fosse mais importante. O script mostra que cada fonte possui vantagens e limitações. Uma fonte pode ter alta produção, mas gerar mais resíduos. Outra pode emitir pouco CO\(_2\), mas depender do clima. Outra ainda pode ser confiável, mas exigir grande área ou apresentar riscos específicos. Por isso, decisões energéticas não são técnicas apenas, mas envolvem farta discussão entre setores da sociedade, ambiente, economia e políticas públicas.

Segue também alguns cenários para exploração.

  1. Prioridade para baixo CO\(_2\). Quais fontes se destacam quando reduzir emissões é o principal objetivo ?

  2. Prioridade para confiabilidade. Quais fontes parecem mais adequadas quando a energia precisa estar disponível continuamente ?

  3. Prioridade para baixo risco percebido. Por que uma fonte tecnicamente eficiente pode enfrentar resistência social ?

  4. Comparação nuclear X carvão. Como duas fontes de alta produção podem ter impactos ambientais muito diferentes ?

  5. Comparação nuclear X solar/eólica. Como baixa emissão de CO\(_2\) pode aparecer em fontes com perfis técnicos bem diferentes ?

  6. Alterando pesos. No código, modifique:

const pesoCO2 = 2.5;
const pesoRisco = 2.0;
const pesoConfiabilidade = 0.5;

O ranking muda quando a sociedade decide valorizar outros critérios ?

Energia nuclear costuma gerar muita eletricidade com baixa emissão direta de CO\(_2\), mas exige cuidado com rejeitos, segurança e percepção pública. Fontes fósseis podem ser confiáveis, mas emitem mais gases associados ao aquecimento global. Energias solar e eólica emitem pouco CO\(_2\), mas dependem de condições ambientais e sistemas de armazenamento. Por sua vez, hidrelétricas podem produzir muito, mas ocupam grandes áreas e alteram ecossistemas. Por isso, o futuro energético não depende de uma resposta simples.

Decisão energética é uma comparação de compromissos. Questões como impacto, risco, custo, confiabilidade e consequências precisam ser levadas em conta para escolha de uma fonte energética, mesmo que isso não leva àquela que gera mais energia.

Por dentro do script

O script começa definindo as fontes comparadas:

const fontes = ["Nuclear", "Carvao", "Gas", "Solar", "Eolica", "Hidreletrica"];

Depois atribui notas “didáticas” de 0 a 10 para cada critério. Aqui são estimativas, mas o barato é que você pode editá-las a seu critério, também.

const energia = [9, 8, 7, 5, 6, 8];
const confiabilidade = [9, 8, 7, 3, 4, 7];
const baixoCO2 = [9, 1, 4, 9, 9, 8];

Em seguida, o script define pesos:

const pesoEnergia = 1.2;
const pesoCO2 = 1.4;

Esses pesos indicam quais critérios importam mais na decisão. O índice integrado é calculado pela média ponderada:

return (
  energia[i] * pesoEnergia +
  confiabilidade[i] * pesoConfiabilidade +
  baixoCO2[i] * pesoCO2 +
  baixaArea[i] * pesoArea +
  baixoResiduo[i] * pesoResiduo +
  baixoRisco[i] * pesoRisco
) / somaPesos;

Por fim, o painel mostra as barras com o índice integrado, as curvas dos critérios, e o radar da fonte selecionada.


POR DENTRO DA FERRAMENTA

Nessa seção, damos sequência a um aprendizado panorâmico em JavaScript, voltado ou não à edição de objetos com JSPlotly, como realizado no capítulo anterior. Nesse sentido, segue um pouco sobre a estrutura de JS para aritmética e arrays (vetores).

E agora um truque bem bacana !!! Você poderá treinar a linguagem JavaScript utilizando um JSPlotly específico para isso !. Esse JSPlotly personalizado está disponível na Figura 9.22 que segue. Abra-o num navegador e deixe-o quietinho lá. *Quando quiser rodar algum trecho desses treinamentos, basta copiar, colar o trecho no campo "ÁREA PARA DIGITAR COMANDOS", e rodá-lo*. Muito legal, não ?!

Figura 7.6: JSPlotly personalizado para treinamento da linguagem JavaScript JSPlotly_treinoJS.html. Basta clicar com o botão direito do mouse para abri-lo em outra janela do navegador. Deixe-o quietinho lá. Quando quiser executar algum trecho de código ao longo desse treinamento, basta copiar, colar no campo “ÁREA PARA DIGITAR COMANDOS”, e rodar no JSPlotly personalizado.

Aritmética

Diversas operações matemáticas são possíveis, quer pelo JS puro, quer pela instalação de bibliotecas específicas, tais como Plotly.js utilizada no JSPlotly, mathjs ou numjs. Segue abaixo uma lista de operações aritméticas realizadas com a linguagem:

  1. + : adição de números ou concatenação de texto (strings);
  2. - : subtração;
  3. * : multiplicação;
  4. / : divisão;
  5. % : módulo;
  6. ++ : incremento de valor;
  7. -- : decremento;
  8. ** : exponenciação.

Obs: o operador de módulo *%* divide o primeiro operando pelo segundo operando e retorna o resto.

Os exemplos a seguir ilustram o uso desses operadores aritméticos, bem como de algumas constantes matemáticas. Para testá-los, cole no JSPlotly customizado para treinamento de JS, como informado acima. Você pode experimentá-los separadamente ou em bloco.

let resultado = 0;

resultado = 5 + 3;                 print("5 + 3 = ", resultado);          // 8
resultado = 10 - 4;                print("10 - 4 = ", resultado);          // 6
resultado = 6 * 7;                 print("6 * 7 = ", resultado);           // 42
resultado = 20 / 5;                print("20 / 5 = ", resultado);          // 4
resultado = 17 % 3;                print("17 % 3 = ", resultado);          // 2
resultado = 2 ** 3;                print("2 ** 3 = ", resultado);          // 8
let contador = 5; contador++;      print("contador++ = ", contador);       // 6
let decrementar = 8; decrementar--;print("decrementar-- = ", decrementar); // 7
let soma = 10; soma += 5;          print("soma += 5 = ", soma);            // 15
let diferenca = 20; diferenca -= 7;print("diferença -= 7 = ", diferenca);   // 13
let produto = 3; produto *= 4;     print("produto *= 4 = ", produto);       // 12
let quociente = 24; quociente /= 3;print("quociente /= 3 = ", quociente);   // 8
resultado = Math.sqrt(25);         print("sqrt(25) = ", resultado);         // 5
resultado = Math.abs(-15);         print("abs(-15) = ", resultado);         // 15
resultado = Math.floor(7.8);       print("floor(7.8) = ", resultado);       // 7
resultado = Math.ceil(7.2);        print("ceil(7.2) = ", resultado);        // 8
resultado = Math.round(9.4);       print("round(9.4) = ", resultado);       // 9
resultado = Math.max(42, 27);      print("max(42,27) = ", resultado);       // 42
resultado = Math.min(42, 27);      print("min(42,27) = ", resultado);       // 27
resultado = Math.sin(Math.PI/2);   print("sin(π/2) = ", resultado); 

Arrays

Um array em JavaScript representa uma estrutura de dados para armazenamento de elementos ordenados. Esses elementos podem envolver qualquer tipo de dado, como números, strings (termos), objetos, etc. Na prática, um array pode ser criado, acessado, filtrado, ou mapeado. Seguem exemplos:

Criação

const numeros = [1, 2, 3, 4, 5];
const cores = ['vermelho', 'verde', 'azul'];

Acesso

print(numeros[0]);
print(cores[2]);

Ou seja, para você acessar o array numeros, por exemplo, basta colar e rodar o seguinte trecho no JSPlotly de treinamento:

const numeros = [1, 2, 3, 4, 5];
const cores = ['vermelho', 'verde', 'azul'];

print(numeros[0]);

Mapeamento (map)

const numeros = [1, 2, 3, 4, 5];
const quadrados = numeros.map(numero => numero * numero);
print(quadrados);

Uma palavrinha sobre métodos

Observe que, diferente do que já foi explicitado, agora aparece um comando múltiplo, como “numeros.map”. Existe uma infinidade de comandos com esta sintaxe em JS. Ele representa a função que será aplicada a cada elemento do array numeros pelo método map. Além disso, surge a sintaxe “=>” ou sintaxe de arrow function (função de seta), uma forma concisa de atribuir um mapeamento.

Em JavaScript, objetos são tratados como no mundo real, ou seja, possuem atributos e comportamentos. Atributos descrevem as características que um objeto possui, e os comportamentos as ações que podem realizar. A notação em JS para referenciar as propriedades de um objeto pode ser, alternativamente:

objeto.propriedade

...ou...

objeto[propriedade]
  Voltando ao exemplo acima e esmiuçando-o um pouquinho mais, o método map() (numeros.map) é chamado no array numeros (um Array.prototype). O *protótipo* permite transmitir propriedades e métodos para um objeto JS. No caso, o método map() itera sobre cada elemento do array original (refinamento por ações sucessivas para aproximar um resultado desejado), aplica uma função a cada um deles e retorna um novo array com os resultados. Assim, numero => numero numero* é a função de seta. E nesse caso, numero é o parâmetro de entrada da função, um atalho para o elemento atual do array sendo processado pelo map. Em adição, “=>” representa o separador entre o(s) parâmetro(s) e o corpo da função. Finalmente, “numero * numero” é a expressão que é executada, com o resultado sendo retornado pela função. Seguem outros exemplos para arrays e mapeamento:
 const x = [0, 1, 2, 3, 4];
 const y = x.map(valor => Math.pow(2, valor))
 print(y);
const Vmax = 100;
const Km = 10;
const S_values = Array.from({length: 10}, (_, i) => i * 5);

const V_values = S_values.map(S => (Vmax * S) / (Km + S));

print("Valores de S:", S_values);
print("Valores de V:", V_values);

JavaScript, uma linguagem orientada a objetos

  Ainda que o esforço para traduzir os comandos acima possa auxliar como funciona a linguagem, é por óbvio esperar uma certa confusão de termos. Sendo assim, vamos subindo de nível ….!
  Como diz o título acima, JS é uma linguagem orientada a objetos. Isso significa que o código é organizado em torno de objetos, que combinam dados (propriedades) e comportamentos (métodos) para modelar entidades do mundo real (não, não são fantasmas!). Isso permite um código mais modular, reutilizável e fácil de gerenciar, ao organizar a lógica em “partes” menores e mais compreensíveis (pensamento computacional).

Objetos, propriedades, e métodos

  Um objeto é uma estrutura que agrupa dados e comportamentos. Os dados ficam guardados em propriedades, e os comportamentos são implementados por métodos (funções dentro do objeto). Assim, propriedades constituem pares nome–valor armazenados dentro de um objeto, podendo variar como números, textos, arrays, e outros objetos. Já os métodos são funções associadas a um objeto, e que descrevem ações que ele pode executar.
  Objetos em JS “podem ser comparados a objetos da vida real”, e guardam informações relacionadas entre si. Por exemplo, o objeto “ponto” abaixo representa um ponto no plano:
const ponto = { x: 2, y: 5 };  // objeto com duas propriedades

Assim, as propriedades são as características do objeto:


print(ponto.x);  // mostra 2
print(ponto.y);  // mostra 5
  Assim, um objeto pode ser encarado como um “pacote” contendo nome, conteúdo e ferramentas próprias. Virtualmente, tudo em JavaScript — arrays, funções, strings, números — é, de alguma forma, um objeto com suas propriedades e métodos. Segue um exemplo:


const carro = {
  marca: "Toyota",        // propriedade (dado)
  ano: 2022,              // propriedade
  ligar: function() {     // método (ação)
    console.log("O carro está ligado!");
  }
};

carro.ligar();            // chama o método
console.log(carro.marca); // acessa a propriedade

Reforçando (não custa nada…), um objeto JavaScript envolve uma coleção de propriedades, onde cada propriedade é definida por um par chave-valor, permitindo uma representação ordenada de elementos. Objetos podem conter diferentes tipos de dados como valores, números, strings, booleanos (falso/verdadeiro), arrays, outras funções e até mesmo outros objetos. Objetos criados são facilmente acessados por seus atributos. Seguem exemplos para testes.

Criação

const pessoa = {
    nome: 'João',
    idade: 30,
    cidade: 'São Paulo'
};

Acesso

print(pessoa.nome);
print(pessoa['idade']);

Atributos

pessoa.profissao = 'Engenheiro';
print(pessoa);

Para um exemplo fechado de objetos:

let pessoa = {
  nome: "João",
  idade: 30,
  profissao: "Desenvolvedor",
  hobbies: ["leitura", "música", "jogos"],
  endereco: {
    rua: "Rua Principal, 123",
    cidade: "São Paulo",
  },
  saudacao: function () {
    print("Olá, meu nome é " + this.nome);
  },
};

print(pessoa.nome); // Saída: "João"
print(pessoa.hobbies[0]); // Saída: "leitura"
pessoa.saudacao(); // Saída: "Olá, meu nome é João"

E por aí vai !! No próximo capítulo esse seção irá explorar um pouco sobre variáveis e funções em JavaScript.