3  Genética Mendeliana e Molecular

O MUNDO TE CHAMA

A genética está presente em situações muito concretas da vida cotidiana. Ela explica por que certas características aparecem em algumas pessoas, e não em outras. Também explica como doenças hereditárias podem atravessar gerações, ou o que permite identificar paternidade, rastrear ancestralidade ou prever riscos biológicos. O avanço das últimas décadas no uso de ferramentas para investigar o DNA (ácido desoxirribonucleico) tem permitido ir além da simples observação de padrões de herança, possibilitando intervenções e modificações diretamente no material genético.

Durante muito tempo, a herança biológica foi observada apenas pelos seus efeitos visíveis. Plantas, animais e seres humanos exibiam traços que pareciam reaparecer segundo certas regularidades. A partir dessas observações, surgiram os primeiros modelos explicativos, especialmente os de Gregor Mendel, um frade agostiniano e biólogo, que mostrou que a transmissão de características não era aleatória. Mais tarde, a genética ganhou uma base molecular. Os genes passaram a ser entendidos como trechos de DNA (ácido desoxiribonucleico), capazes de armazenar informação, sofrer alterações e orientar a produção de proteínas.

Hoje, esse campo se ampliou ainda mais. A genética já não trata apenas da transmissão de características, mas também da estrutura do DNA, da expressão gênica, das mutações e das biotecnologias que permitem copiar, detectar e editar genes. Assim, o estudo da genética começou com ervilhas e proporções simples, passou pela lógica molecular da vida e alcançou técnicas como PCR, clonagem e edição gênica (CRISPR).

Dessa forma, a genética pode ser entendida em três planos que se complementam. O primeiro é o plano mendeliano, em que observamos padrões de herança a partir de características. O segundo é o plano molecular, em que investigamos a base física da informação genética. E o terceiro é o plano biotecnológico, em que o conhecimento acumulado passou a permitir intervenção prática sobre o material genético.

A proposta desse capítulo é percorrer esses planos de forma integrada. Em vez de estudar separadamente herança, DNA e biotecnologia, você está convidado a enxergar esses temas como partes de uma mesma história científica: a passagem do fenótipo observável ao código molecular, e desse à intervenção tecnológica.

Depois de explorar, você consegue:

- compreender como características biológicas podem ser transmitidas entre gerações, relacionando genótipo, fenótipo e probabilidade de ocorrência;
- interpretar cruzamentos genéticos simples e duplos, reconhecendo padrões mendelianos e suas variações em diferentes contextos;
- explicar, em nível conceitual, como a informação genética está organizada no DNA e como ela é expressa na forma de proteínas;
- relacionar alterações na sequência de DNA, mutações, com possíveis efeitos sobre estruturas e funções biológicas;
- reconhecer que a herança genética é um processo probabilístico, sujeito a variações amostrais e influências múltiplas;
- analisar, de forma crítica, como técnicas de biotecnologia permitem identificar, modificar ou interromper sequências gênicas;
- conectar os níveis de organização da genética — do fenótipo observável ao DNA — compreendendo-os como partes de um mesmo sistema integrado;
- explorar situações-problema reais, como doenças genéticas, testes de paternidade e edição gênica, articulando conceitos científicos e implicações sociais;
- utilizar e interpretar simulações interativas voltadas à genética e biologia molecular.
Figura 3.1: Como a informação hereditária é transmitida e expressa nos seres vivos.

MEXA ANTES DE ENTENDER

Antes de qualquer definição formal para a lógica de cruzamentos genéticos e proporções emergentes, experimente o aplicativo de JSPlotly abaixo.

Figura 3.2: A genética mendeliana não é determinística, mas uma ponte entre biologia e probabilidade. Clique com o botão direito neste LINK e abra o JSPlotly personalizado em nova aba, seguido do botão add.

Nesse script de JSPlotly você pode alterar o genótipo dos pais (“AA”, “Aa”, aa”) e o número de descendentes (n) e observar a distribuição de fenótipos emergentes, a variação estatística, bem como a diferença entre probabilidade teórica e simulação.

Agite antes de usar

Esse script simula um cruzamento mendeliano simples entre dois indivíduos (monohíbrido).

O exemplo usado é:

\[ Aa \times Aa \tag{3.1}\]

A cada simulação, o código sorteia alelos dos pais e gera descendentes possíveis. No final, o gráfico mostra a frequência dos fenótipos (dominante, recessivo). Na genética mendeliana, cada indivíduo possui dois alelos para uma característica. No exemplo, Aa, o alelo A (maiúsculo) é dominante e o alelo a (minúsculo) é recessivo.

Dessa forma:

  • AA \(\rightarrow\) fenótipo dominante;
  • Aa \(\rightarrow\) fenótipo dominante;
  • aa \(\rightarrow\) fenótipo recessivo;

Para “se divertir” com o código, comece primeiro alterando os genótipos dos pais.

let pai = "Aa";
let mae = "Aa";

Experimente variações, como AA ou aa para pai ou mãe, por exemplo. E modifique também o número de descendentes simulados no trecho abaixo (ex: 20 ou 1000):

let n = 100;

O cruzamento no código é dado pela probabilidade dos genótipos gerados. Assim, para Aa X Aa, por exemplo, a proporção de genótipos é dada no código por:

\[ Aa \times Aa \tag{3.2}\]

Dessa forma, a proporção esperada de genótipos é:

\[ 1AA : 2Aa : 1aa \tag{3.3}\]

Já a proporção fenotípica esperada é:

\[ 3 \text{ dominantes} : 1 \text{ recessivo} \tag{3.4}\]

Mas como o script usa sorteios aleatórios, os resultados podem variar. Quanto maior o valor de n, mais o resultado tende a se aproximar da proporção esperada.

Alguns cenários mostram-se interessantes para exploração do script da Figura 3.2, tais como:

  1. Dois heterozigotos. Experimente pai = “Aa”; mae = “Aa”. E verifique se o gráfico aproxima-se da proporção 3:1 (dominante:recessivo).

  2. Dominante puro com recessivo puro. Teste pai = “AA”; mae = “aa”. E veja que todos os descendentes apresentam fenótipo dominante.

  3. Heterozigoto com recessivo. Faça pai = “Aa”; mae = “aa”. Observe que a proporção esperada é 1:1.

  4. Efeito do tamanho da amostra. Compare n para 20 e para 1000 descendentes. E veja que, com poucos descendentes, o acaso pesa mais. Já com muitos descendentes, a proporção mendeliana aparece com mais clareza.

Em termos técnicos, o script permite comparar cruzamentos entre homozigotos e heterozigotos, observar diferenças entre genótipo e fenótipo, relacionar probabilidades esperadas e resultados observados, e mesmo expandir esses conceitos de monoibridismo para diibridismo.

Além disso, também mostra que a genética mendeliana combina regras de herança com probabilidade, aleatoriedade, e padrões estatísticos. Assim, o cruzamento genético pode ser visto como uma simulação probabilística, onde cada descendente nasce de um sorteio de alelos. Em outras palavras, Mendel observava proporções, mais do que indivíduos isolados.


FAZENDO APARECER

3.1 Genética mendeliana: probabilidade ao invés de determinismo

Na lógica dos padrões de herança da genética clássica, a ideia é que determinadas características são influenciadas por fatores herdáveis, hoje chamados genes. Cada gene pode apresentar diferentes versões, os alelos. Em organismos diploides, cada indivíduo recebe um alelo de cada progenitor, formando assim seu genótipo. O fenótipo corresponde à manifestação observável dessa combinação, em interação com o ambiente.

A Primeira Lei de Mendel mostra que os alelos de um mesmo gene se separam durante a formação dos gametas. Isso explica por que cruzamentos simples entre indivíduos heterozigotos produzem proporções genotípicas e fenotípicas características. Já a Segunda Lei de Mendel amplia esse raciocínio ao considerar a segregação independente de pares de genes diferentes, permitindo compreender cruzamentos diíbridos e combinações mais complexas.

Embora estejam nos primórdios históricos da experimentação genética e com relevância significativa nos dias atuais, essas leis não esgotam a herança biológica. Há casos de dominância incompleta, codominância, alelos múltiplos e herança ligada ao sexo, entre outros. Ainda assim, o modelo mendeliano permanece como porta de entrada conceitual, pois ensina a pensar a herança como combinação de unidades discretas.

3.2 Genética molecular: o que são genes, afinal?

A genética molecular aprofunda essa discussão ao identificar a base material da herança: o DNA, molécula que armazena informação em sua sequência de nucleotídeos. Genes são regiões do DNA capazes de participar da síntese de produtos funcionais, geralmente proteínas ou moléculas de RNA (ácido ribonucleico).

A replicação permite que o DNA seja copiado antes da divisão celular. A transcrição converte trechos de DNA em RNA, enquanto a tradução utiliza essa informação para organizar aminoácidos em proteínas. Esse é o chamado Dogma Central da Biologia Molecular. Desse modo, a herança deixa de ser apenas um padrão estatístico observado em descendentes e passa a ser compreendida como fluxo de informação molecular.

Essa passagem da genética mendeliana para a molecular é decisiva. Aquilo que Mendel inferiu indiretamente por meio de fenótipos foi, mais tarde, conectado a genes, cromossomos, DNA e mecanismos celulares. A herança biológica ganhou então uma base explicativa mais técnica.

Para ilustrar essa passagem, utilize os próximos app de JSPlotly que seguem. O da Figura 3.3, por exemplo, busca abordar a genética mendeliana um pouco mais avançada, na passagem do monoibridismo (uma característica herdada) para o diibridismo(duas características).

Figura 3.3: A genética mendeliana como ferramenta de probabilidade. Embora haja incerteza sobre o resultado de um indivíduo, o padrão de muitos descendentes pode ser previsto. Clique neste LINK para carregar o app.

Agite antes de usar

O script simula um cruzamento envolvendo dois genes ao mesmo tempo. Você pode alterar os genótipos para pai, mãe, e n. Exemplos para os dois primeiros são “AaBb”, “AABB”, “Aabb”, “aaBb”, e “aabb”. O gráfico resultante compara a proporção observada na simulação com a proporção esperada pelas regras mendelianas. Isso permite mostrar que a heranca segue uma lógica probabilística, embora a amostra real possa oscilar, especialmente quando o valor de n é pequeno.

No diibridismo, duas características são analisadas simultaneamente. Cada indivíduo possui dois pares de alelos, AaBb. Isso representa:

  • gene A: A ou a;
  • gene B: B ou b.

Um indivíduo AaBb pode formar gametas como AB, Ab, aB, ou ab. Assim, no início do código, altere:

let pai = "AaBb";
let mae = "AaBb";
let n = 400;

Experimente “AABB”, “aabb”, “AaBb” ou “aabb”, bem como o tamanho n da amostra (50, 1000), e observe o resultado para um cruzamento clássico. Exemplificando, se o cruzamento for:

\[ AaBb \times AaBb \tag{3.5}\]

Então a proporção fenotípica esperada é 9:3:3:1. Ou seja:

9A_B_ : 3A_bb : 3aaB_ : 1aabb

O script calcula os dois conjuntos de valores, observado e calculado, como segue. O resultado dos sorteios simulados é dado por:

const filhos = cruzarDiibrido(pai, mae, n);

Já o resultado teórico obtido a partir de todas as combinações possíveis de gametas, é dado por:

const espPct = proporcaoEsperada(pai, mae);

Diversos são os cenários passíveis de visualização com auxílio do JSPlotly da Figura 3.3 para ajudar-lhe a compreender melhor essas regras de cruzamento diíbrido. Ilustrando:

  1. Cruzamento clássico. Use pai = “AaBb” e *mae = “AaBb”. Observe se a proporção observada se aproxima de 9:3:3:1.

  2. Duplo homozigoto dominante com duplo recessivo. Faça pai = “AABB” e mae = “aabb”. Dessa forma, espera-se que todos os descendentes serão AaBb.

  3. Cruzamento-teste (Testcross). Use pai = “AaBb” e mae = “aabb”. Observe a distribuição entre as quatro classes fenotípicas. Esse reste cruzado (testcross) foi introduzido por Mendel para determinar o genótipo de um indivíduo com fenótipo dominante (desconhecido), cruzando-o com um homozigoto recessivo.

  4. Tamanho da amostra. Compara n = 40 com n = 4000. Quanto maior o número de descendentes simulados, mais estável fica a proporção observada.

Em síntese, acompanhamos uma característica apenas no monoibridismo, enquanto que no diibridismo, acompanhamos duas. O cruzamento diíbrido mostra como a herança mendeliana pode gerar padrões complexos também a partir de regras simples.


VOLTA PRO MUNDO

A genética integrada ajuda a interpretar uma enorme variedade de situações reais. Questões familiares sobre herança de traços, testes de paternidade, doenças hereditárias e compatibilidade sanguínea aderem-se com praticidade à genética mendeliana. Já diagnósticos moleculares, identificação de mutações e compreensão de mecanismos celulares, por sua vez, dependem da genética molecular. E para essa, vacinas de RNA, testes baseados em DNA, transgênicos e terapias gênicas mostram o alcance biotecnológico desse campo.

Perceba que a genética organiza modos distintos de se pensar o corpo, a herança, a diversidade biológica e o próprio futuro das intervenções biomédicas, um exemplo fértil no qual a ciência traduz observações em modelos, modelos em mecanismos e mecanismos em tecnologias.

3.3 Mutações e variabilidade

Se os genes são sequências de DNA, alterações nessas sequências podem modificar a informação biológica. Essas alterações são chamadas mutações. Algumas não produzem efeitos perceptíveis, outras modificam proteínas, alteram funções celulares ou contribuem para doenças genéticas. Em certos contextos, também, podem gerar variabilidade útil à evolução.

As mutações ajudam a conectar o nível molecular ao nível fenotípico. Uma troca de uma base nitrogenada, por exemplo, pode alterar um códon (trinca de bases), modificar um aminoácido e influenciar a estrutura final de uma proteína. Assim, uma pequena alteração microscópica pode produzir grandes efeitos biológicos.

3.4 Biotecnologia: compreender para intervir

Quando a genética passou a ser entendida em nível molecular, surgiram também ferramentas para manipular o DNA. A biotecnologia genética passou então a incluir estratégias como PCR, DNA recombinante, produção de organismos transgênicos, clonagem e edição gênica.

Explicando, PCR (Reação em Cadeia da Polimerase) é uma técnica de biologia molecular que amplifica exponencialmente sequências específicas de DNA, facilitando análises e diagnósticos. A tecnologia do DNA recombinante tornou possível inserir genes em outros organismos. A clonagem mostrou que materiais genéticos podem ser copiados em contextos específicos. Mais recentemente, sistemas de edição como CRISPR (Clustered Regularly Interspaced Short Palindromic Repeats), ampliaram enormemente a capacidade de modificar sequências gênicas de forma direcionada, utlizando uma “tesoura molecular” (sistema Cas9) para cortar, inserir ou corrigir sequências específicas de DNA de forma rápida e precisa.

Essas técnicas trazem aplicações promissoras em saúde, agricultura, pesquisa e indústria, mas também levantam questões éticas importantes, já que intervir no DNA deixou de ser uma “possibilidade” técnica para ser uma decisão social.


E SE…

Dos apps apresentados acima, é possível abstrair um sem-número de reflexões sobre a genética mendeliana. Considerando o JSPlotly da Figura 3.2, por exemplo:

  • E se os dois pais forem homozigotos dominantes ?
  • E se um dos pais for recessivo puro ?
  • E se aumentarmos muito o número de descendentes simulados ?
  • E se o resultado observado for diferente da proporção esperada ?
  • E se quisermos contar também os genótipos, e não apenas os fenótipos ?
  • E se uma característica não seguir exatamente o padrão dominante-recessivo ?

Para o script da Figura 3.3, por sua vez, também é possível perguntar:

  • E se os dois pais forem duplo heterozigotos ?
  • E se um dos pais for duplo recessivo ?
  • E se aumentarmos muito o número de descendentes simulados ?
  • E se a proporção observada não for exatamente igual à esperada ?
  • E se os genes não fossem independentes ?
  • E se quisermos comparar genótipo e fenótipo no mesmo gráfico ?

Assim, perceba que nem toda herança segue o modelo mais simples apresentado por Mendel. Em alguns casos, os heterozigotos apresentam fenótipos intermediários, enquanto em outros, dois alelos se manifestam simultaneamente. Essas situações mostram que os modelos básicos são ponto de partida, mas não o ponto final.

E se a ciência puder corrigir genes defeituosos ? A edição gênica abre possibilidades de amplo espectro, como corrigir mutações associadas a doenças. Ao mesmo tempo, essa capacidade exige um debate ético: quais usos são justificáveis ? Quais limites devem existir ? Como a Inteligência Artificial entra nesse jogo ? Quem decide ?

E se a herança genética não determinar tudo ? Mesmo quando a herança genética influencia fortemente um fenótipo, o ambiente continua importante. A genética não deve ser vista como destino absoluto, mas como parte de uma rede de interações biológicas e ambientais.

E se uma única mutação alterar uma proteína essencial ? Uma pequena alteração em uma sequência de DNA pode não produzir efeito aparente, mas também pode comprometer a função de uma proteína importante. Esse tipo de raciocínio ajuda a conectar biologia molecular, fisiologia e saúde.

Para essa última indagação, que tal explorar mais um JSPlotly ?!

Figura 3.4: Pequenas mudanças no DNA podem alterar completamente o resultado biológico. Clique no LINK para carregar o app.

Agite antes de usar

Esse script mostra o fluxo básico da informação genética (DNA \(\rightarrow\) RNA \(\rightarrow\) proteína), e permite observar como uma pequena alteração no DNA pode mudar o resultado final da tradução. Agora o foco está na ponte entre Mendel, genética molecular, e mutação. E em como uma mutação pode causar uma doença.

No script é possível alterar a base (A, T, C, G) e a posição da mutação (posMut). Isso permite observar a mudança no DNA, o reflexo no RNA, e o impacto na proteína. A sequência inicial de DNA é dividida em códons:

let dna = "ATG GAA TTT CGA".split(" ");

Cada códon possui três bases. Na transcrição, o DNA é convertido em RNA pela troca:

\[ T \rightarrow U \]

Ou seja, timina (T) do DNA é transcrita como uracila (U) no RNA. Depois, cada códon de RNA é traduzido em um aminoácido. O aplicativo começa sem mutações. Clique em add e veja que ele apresenta três linhas: uma para o DNA, outra para o RNA transcrito, e outra para a proteína traduzida.

Agora, comece alterando a posição da mutação e da nova base. Por exemplo:

let posMut = 1;
let novaBase = "T";

Se a mutação gerar um códon conhecido na tabela, aparecerá um aminoácido. Se o códon não estiver na tabela simplificada, aparecerá uma interrogação “?” na linha do aminoácido correspondente.

A transcrição acontece aqui:

codon.replace(/T/g, "U")

Já a tradução usa uma tabela simplificada:

const tabela = {
  "AUG": "Met",
  "GAA": "Glu",
  "UUU": "Phe",
  "CGA": "Arg"
};

E a mutação altera a primeira base de um códon escolhido:

codon[0] = base;

Perceba então que uma mutação pequena no DNA pode ou não alterar a proteína.

Como para os demais apps desse livro, procure montar cenários para se apropriar dos conceitos envolvidos. Ilustrando:

  • E se a mutação não alterar o aminoácido ?
  • E se a mutação gerar um códon desconhecido pela tabela ?
  • E se a mutação ocorrer no primeiro códon ?
  • E se ampliarmos a tabela genética ?

E para te auxiliar a responder essa última questão “E se…”, bem como ilustrar uma aplicação biotecnológica, que tal um último JSPlotly ?!

Figura 3.5: Edição gênica: o caminho reverso que vai do fenótipo ao genótipo, e desse à intervenção. Clique neste LINK para carregar o app.

A ideia desse script é mostrar uma sequência original, uma sequência mutada e o resultado de uma intervenção do tipo CRISPR.

Agite antes de usar

Esse script permite mostrar que a biotecnologia atua sobre sequências concretas de DNA e com impacto potencial sobre uma proteina. Você pode alterar o dnaOriginal, o dnaMutado, o alvo, o modo, e o novoCodon.

Os 3 modos possiveis são:

  • “corrigir” - restaura o codon mutado ao estado original;
  • “nocautear” - insere um codon STOP e interrompe a tradução. Aqui mora a ideia de terapia gênica corretiva (knockout).
  • “substituir” - troca o codon por outro definido em novoCodon.

Observe que é possível simular uma interrupção precoce da tradução ou uma relação com perda de funcão. Além disso, pode-se simular também uma substituição dirigida, com troca planejada de codons. Para isso use “GAA” ou “TAA” na linha de let modo = “substituir”. Essas ações ilustram a diferenca entre restaurar, alterar e desligar um gene.

Outra ação possível no script envolve mudar o alvo. Para isso, modifique a linha “let alvo = 0” para 3. Isso mostra que a posição da alteração importa, e que mutações em pontos diferentes podem ter consequências distintas.


MESMO PADRÃO, OUTROS MUNDOS

Os JSPlotly trazidos nesse capítulo pretendem ilustrar a genética em múltiplas faces. Enquanto o JSPlotly da Figura 3.2 busca a percepção de regularidades simples, o da Figura 3.3 direciona-se para perguntar onde está essa informacao, ao passo que o da Figura 3.4 amplia a discussão para dois genes e probabilidade, e o da Figura 3.5 mostra que hoje a genética pode ser editada.

Assim, percebe-se que a genética pode ser estudada com um racional explicativo. Primeiro, reconhecem-se padrões de herança em fenótipos observáveis. Depois, identifica-se que esses padrões dependem de genes localizados no DNA. Em seguida, entende-se que a informação genética pode ser expressa, alterada e até manipulada tecnologicamente. As técnicas de DNA recombinante levam hoje a novas fronteiras de aplicação, como CRISPR em embriões humanos, células artificiais e biologia sintética, design de proteínas por inteligência artificial, edição genética in vivo e edição epigenética (ambiente e estilo de vida afetando genes sem alterar o DNA), entre muitas outras.

Ao integrar genética mendeliana, molecular e biotecnologia, esse capítulo mostra que os padrões observados nos organismos se conectam a mecanismos moleculares que, por sua vez, contribuem para tecnologias capazes de transformar pesquisa, medicina e sociedade.


POR DENTRO DA FERRAMENTA

O capítulo utiliza duas propostas para o estudo interativo de genética, a mendeliana, que permite observar cruzamentos, proporções e padrões de herança de modo visual e manipulável, e a molecular, mostrando como alterações no DNA podem repercutir em produtos celulares, e como certas técnicas exploram essa lógica em aplicações reais.

Para ilustrar um pouco mais do conteúdo da “caixa-preta” do script de JSPlotly da Figura 3.2, segue uma explicação rápida para algumas funções.

A função abaixo transforma o genótipo em gametas possíveis:

function gametas(genotipo) {
  return genotipo.split("");
}

Assim:

"Aa"

vira:

["A", "a"]

Depois, o script sorteia um alelo do pai e um alelo da mãe:

const a1 = gp[Math.floor(Math.random() * gp.length)];
const a2 = gm[Math.floor(Math.random() * gm.length)];

O genótipo do filho é formado por:

const filho = [a1, a2].sort().join("");

A função abaixo define o fenótipo:

function fenotipo(gen) {
  return gen.includes("A") ? "Dominante" : "Recessivo";
}

Ou seja, se existir pelo menos um alelo dominante A o fenótipo será dominante. Assim, pode-se “transcrever” uma lógica de código para o script da Figura 3.2 como:

genótipos dos pais
      
gametas possíveis
      
sorteio de alelos
      
genótipo dos filhos
      
fenótipo
      
gráfico de frequências

3.5 Pseudocódigo e outro JSPlotly

Aqui vamos quebrar um pouco a estrutura da seção, e apresentar um trecho de um pseudocódigo para o 2o. script de JSPlotly (Figura 3.3), para ilustrar como algoritmos um pouco mais elaborados podem ser traduzidos em “linguagem humana”. No código, a função abaixo separa o genótipo em dois pares de genes:

function separarGenotipo(g) {
  return [
    g.slice(0, 2),
    g.slice(2, 4)
  ];
}

Assim:

"AaBb"

vira:

["Aa", "Bb"]

Depois, o script gera todas as combinações possíveis de gametas:

function gametasDiibrido(g) {
  ...
}

Para:

AaBb

os gametas possíveis são:

AB, Ab, aB, ab

A cada descendente, o script sorteia um gameta de cada progenitor:

const a = gp1[Math.floor(Math.random() * gp1.length)];
const b = gp2[Math.floor(Math.random() * gp2.length)];

Depois, combina os gametas para formar o genótipo do filho. O gráfico compara essa previsão com os resultados sorteados pela simulação. Com poucos descendentes, a proporção observada pode variar bastante. Com muitos descendentes, ela tende a se aproximar da proporção esperada.

Uma proposta de pseudocódigo para esse script é:

 INÍCIO

// 1. Definir genótipos dos pais
definir pai
definir mae
definir n (número de descendentes)

// 2. Separar genes em pares (A e B)
função separarGenotipo(genotipo):
    retornar [geneA, geneB]

// 3. Gerar gametas possíveis
função gerarGametas(genotipo):
    separar em dois pares (geneA, geneB)
    para cada alelo de geneA:
        para cada alelo de geneB:
            combinar alelos → formar gameta
    retornar lista de gametas

// 4. Combinar gametas para formar descendente
função combinarGametas(gameta_pai, gameta_mae):
    formar par para gene A
    formar par para gene B
    organizar (dominante antes de recessivo)
    retornar genótipo completo

// 5. Determinar fenótipo
função fenotipo(genotipo):
    verificar presença de alelo dominante em A
    verificar presença de alelo dominante em B

    se A dominante e B dominante → "A_B_"
    se A dominante e B recessivo → "A_bb"
    se A recessivo e B dominante → "aaB_"
    se ambos recessivos → "aabb"

    retornar classe fenotípica

// 6. Simular descendentes (parte probabilística)
gerar lista de gametas do pai
gerar lista de gametas da mãe

criar contador de fenótipos

PARA i de 1 até n:

    sortear gameta do pai
    sortear gameta da mãe

    combinar → formar descendente
    identificar fenótipo
    incrementar contador correspondente

FIM PARA

// 7. Calcular proporção observada
converter contagem em porcentagem

// 8. Calcular proporção esperada (todas as combinações)
PARA cada gameta do pai:
    PARA cada gameta da mãe:
        combinar gametas
        determinar fenótipo
        contar ocorrência

    FIM
FIM

converter contagem em porcentagem

// 9. Construir gráfico
plotar:
    barras → proporção observada
    barras → proporção esperada

FIM