Lab 1: Crescimento Populacional
Você pode colaborar com um ou dois colegas de classe neste laboratório, embora seja esperado que todos os alunos em qualquer grupo contribuam igualmente para o trabalho.
Determine quanto tempo leva para uma população atingir um tamanho específico.
$ ./population
Start size: 100
End size: 200
Years: 9
Contexto
Suponha que temos uma população de lhamas de tamanho n
.
A cada ano, n / 3
novas lhamas nascem e n / 4
lhamas morrem.
Por exemplo, se começarmos com n = 1200
lhamas, no
primeiro ano 1200 / 3 = 400
novas lhamas nasceriam e
1200 / 4 = 300
lhamas morreriam. No final desse ano,
teríamos 1200 + 400 - 300 = 1300
lhamas.
Para outro exemplo, se começarmos com n = 1000
lhamas,
no final do ano, teremos 1000 / 3 = 333.33
novas lhamas.
No entanto, não podemos ter uma porção decimal de uma lhama, então vamos truncar o decimal para obter 333
novas lhamas nascidas. 1000 / 4 = 250
lhamas morrerão, então terminaremos com um
total de 1000 + 333 - 250 = 1083
lhamas no final do ano.
Começando
Lembre-se de que o Visual Studio Code (também conhecido como VS Code) é um popular "ambiente de desenvolvimento integrado" (IDE) por meio do qual você pode escrever código. Para que você não precise baixar, instalar e configurar sua própria cópia do VS Code, usaremos uma versão baseada em nuvem que já possui tudo o que você precisa pré-instalado.
- Acesse o code.cs50.io usando sua conta do GitHub e siga as instruções na tela para configurar sua própria "área de trabalho" ("codespace") para o Visual Studio Code. Depois que sua área de trabalho carregar, você deverá ver que, por padrão, o VS Code é dividido em três regiões. Na parte superior do VS Code está o "editor de texto", onde você escreverá todos os seus programas. Na parte inferior está uma "janela de terminal", uma interface de linha de comando (CLI) que permite explorar os arquivos e diretórios (também conhecidos como pastas) de sua área de trabalho, compilar código e executar programas. E na esquerda está o "explorador de arquivos", uma interface gráfica do usuário (GUI) por meio da qual você também pode explorar os arquivos e diretórios de sua área de trabalho.
- Depois que sua área de trabalho carregar, feche quaisquer guias de Boas-vindas que possam ter sido abertos por padrão.
- Acesse o submit.cs50.io usando sua conta do GitHub e
clique em Autorizar cs50 para ativar o
check50
. - Execute
update50
na janela do terminal de sua área de trabalho para garantir que ela esteja atualizada e, se solicitado, clique em Rebuild now.
Depois de concluído, comece clicando dentro da janela do terminal e execute cd
por si só. Você deverá encontrar que seu "prompt" se
assemelha ao abaixo.
$
Clique dentro daquela janela do terminal e, em seguida, digite
mkdir population
seguido de Enter para criar um diretório chamado population
no seu ambiente de código. Tome cuidado para não
ignorar o espaço entre mkdir
e population
ou qualquer outro caractere!
Daqui em diante, executar (ou seja, rodar) um comando significa digitá-lo em uma janela de terminal e, em seguida, pressionar Enter. Os comandos diferenciam maiúsculas de minúsculas, então tenha certeza de não digitar em maiúsculo quando quer dizer minúsculo ou vice-versa.
Agora execute
cd population
para entrar (ou seja, abrir) nesse diretório. O seu prompt deve se parecer com o abaixo.
population/ $
Clique dentro da janela do terminal e, em seguida, digite
wget https://cdn.cs50.net/2022/fall/labs/1/population.c
Em seguida, pressione Enter para baixar um arquivo modelo chamado population.c
no seu codespace. Certifique-se de não ignorar
o espaço entre o wget
e a URL a seguir, ou qualquer
outro caractere, de fato! Se tudo ocorreu conforme o esperado, você deve executar
ls
e ver um arquivo chamado population.c
. A execução de
code population.c
deve abrir o arquivo onde você
digitará seu código para este laboratório. Se isso não acontecer, volte atrás em seus passos e veja se pode
determinar onde errou!
Detalhes de implementação
Complete a implementação de population.c
, de forma que
ela calcule o número de anos necessários para a população crescer do tamanho inicial até o tamanho final.
- Seu programa deve primeiro solicitar ao usuário o tamanho inicial da população.
- Se o usuário inserir um número menor que 9 (o tamanho mínimo permitido da população), o usuário deve ser solicitado novamente a inserir um tamanho inicial da população até que ele insira um número maior ou igual a 9. (Se começarmos com menos de 9 lhamas, a população de lhamas logo se tornará estagnada!)
- Seu programa deve então solicitar ao usuário o tamanho final da população.
- Se o usuário inserir um número menor que o tamanho inicial da população, o usuário deve ser solicitado novamente a inserir um tamanho final da população até que ele insira um número maior ou igual ao tamanho inicial da população. (Afinal, queremos que a população de lhamas cresça!)
- Seu programa deve então calcular o número (inteiro) de anos necessários para que a população atinja pelo menos o tamanho do valor final.
- Finalmente, seu programa deve imprimir o número de anos necessários para que a população de
lhamas atinja esse tamanho final, imprimindo no terminal
Years: n
, onden
é o número de anos.
Dicas
-
Se você deseja repetidamente solicitar ao usuário o valor de uma variável até que alguma condição seja atendida, pode usar um loop
do ... while
. Por exemplo, lembre-se do seguinte código da aula, que solicita ao usuário repetidamente até que ele insira um número inteiro positivo.int n; do { n = get_int("Integer positivo: "); } while (n < 1);
Como você pode adaptar este código para garantir um tamanho inicial de pelo menos 9 e um tamanho final de pelo menos o tamanho inicial?
- Para declarar uma nova variável, certifique-se de especificar o tipo de dados, um nome para a
variável e (opcionalmente) qual deve ser seu valor inicial.
- Por exemplo, você pode querer criar uma variável para acompanhar quantos anos se passaram.
-
Para calcular quantos anos levará para a população atingir o tamanho final, pode ser útil usar outro loop! Dentro do loop, provavelmente você desejará atualizar o tamanho da população de acordo com a fórmula apresentada em "Contexto" e atualizar o número de anos que se passaram.
-
Para imprimir um inteiro
n
no terminal, lembre-se de que você pode usar uma linha de código comoprintf("O número é %i\n", n);
para especificar que a variável
n
deve ser preenchida no espaço reservado por%i
.
Como Testar Seu Código
Seu programa deve se comportar conforme os exemplos abaixo.
$ ./população
Start size: 1200
End size: 1300
Years: 1
$ ./população
Start size: -5
Start size: 3
Start size: 9
End size: 5
End size: 18
Years: 8
$ ./população
Start size: 20
End size: 1
End size: 10
End size: 100
Years: 20
$ ./população
Start size: 100
End size: 1000000
Years: 115
Execute o abaixo para avaliar a correção do seu código usando check50
. Mas certifique-se de compilar e testar o código você mesmo também!
check50 cs50/labs/2023/x/population
Execute o abaixo para avaliar o estilo do seu código usando style50
.
style50 population.c
Como Enviar
No seu terminal, execute o abaixo para enviar seu trabalho.
submit50 cs50/labs/2023/x/population