Aula 54 - 01
Organizar Listas -
Curso Alura - Ordenando Listas: Brincando com dados estatísticos.
Hoje vamos conversar sobre algo que fazemos o tempo todo, mas talvez a gente nem perceba: organizar listas.
Parem para pensar: quantas listas a gente encontra no nosso dia a dia? A lista de contatos no celular, a lista de compras, a lista de filmes ou séries para assistir. Elas estão por toda parte!
E vocês já repararam que a maioria delas está organizada de um jeito que facilita a nossa vida? Por exemplo, a lista de contatos do celular está em ordem alfabética. Se você precisa encontrar o contato do João, você já sabe que é só ir direto para a letra "J", certo? Isso nos ajuda a achar o que precisamos rapidinho.
A organização é superimportante, seja para arrumar nosso quarto ou para ajudar a gente a não se perder em um projeto de programação. Talvez você já tenha precisado pegar o caderno de alguém mais organizado que você para tirar uma foto, né? Ou, quem sabe, você é a pessoa organizada que empresta o caderno!
Organizando na prática
Para entender como a organização funciona de verdade, vamos fazer uma atividade bem legal.
Eu quero que vocês peguem um papel e uma caneta e escrevam o nome de cinco coisas que vocês mais gostam. Pode ser qualquer coisa, como chocolate, filmes, praia, cachorro ou dormir.
Agora, o nosso desafio é: vamos colocar essas cinco coisas em
Ordem alfabética.
Não pensem só em organizar. Pensem em como vocês fariam isso. Qual item você pegaria primeiro? Qual é a sua lógica para ordenar?
Depois que todo mundo terminar, nós vamos compartilhar nossas estratégias. Mesmo que todos cheguem à mesma ordem alfabética, vocês vão ver que cada um pensou de um jeito diferente para organizar. E é aí que está a grande sacada! Isso mostra que existem vários jeitos, ou "métodos", de organizar uma lista.
Entender esse "passo a passo" é o mais importante, porque, no futuro, quando formos programar um computador para fazer essas listas, vamos precisar ensiná-lo a pensar como a gente. Ele não vai saber sozinho! A gente precisa dar as instruções certinhas, e a melhor forma de fazer isso é entendendo o nosso próprio processo de organização.
Na aula de hoje, a gente vai entender como funciona a organização de dados de um jeito superprático, usando um método chamado Insertion Sort. Para isso, vamos fazer uma atividade com a colaboração de todo mundo.
Como vai ser a nossa dinâmica?
A gente vai fazer um jogo bem simples, aqui mesmo na sala de aula. Cada um de vocês vai pegar um pedaço de papel e escrever um número qualquer entre 0 e 99. Guardem o papel e não deixem ninguém ver o número que vocês escolheram, combinado?
Depois, o professor ou a professora vai chamar um de vocês para vir aqui na frente. Vamos supor que a primeira pessoa chamada tenha o número 40. Essa pessoa vai ficar parada no canto esquerdo da lousa, porque ela é o primeiro item da nossa "lista".
Aí, a gente vai chamar a próxima pessoa. Vamos imaginar que ela tenha o número 15. A tarefa dela é comparar o número dela com o de quem já está na frente. Ela vai perguntar: "O 40 é maior que o 15?". Como a resposta é "sim", a pessoa que tem o 40 vai se mover para a direita para dar espaço, e quem tem o 15 vai ocupar o lugar dela, bem na frente.
E se a gente chamar mais alguém, com o número 30? Essa pessoa vai fazer a mesma coisa: vai começar a perguntar, de um por um, para quem já está na fila. Ela vai perguntar para quem tem o 15: "O 15 é maior que o 30?". A resposta é "não", então ela segue para o próximo. Para o 40, ela pergunta: "O 40 é maior que o 30?". A resposta agora é "sim"! O que acontece? A pessoa com o número 40 se move para a direita para abrir espaço, e quem tem o 30 entra na lista, ficando entre o 15 e o 40.
O que aprendemos com isso?
A ideia é que, a cada novo colega que entra na fila, ele vai comparando o seu número com os de quem já está lá, sempre começando pelo menor número, até encontrar a sua posição certa. Se o número dele for maior que o do colega, ele continua a busca; se for menor, ele encontra o lugar e todos os outros se movem para a direita.
Essa atividade mostra exatamente como funciona o método de ordenação Insertion Sort: ele vai inserindo cada novo item na posição correta, comparando-o com os elementos que já estão ordenados, um por um.
Na próxima aula, a gente vai usar esse conhecimento para aplicar a lógica do Insertion Sort na programação. Mas, por enquanto, a gente já pode ver como um método de organização que parece complexo, na verdade, é bem simples e lógico na prática!
Nesta aula, vamos aprender a organizar dados e ensinar o computador a fazer isso de uma forma muito legal! Na nossa última aula, falamos sobre o Insertion Sort, um método para ordenar uma lista de itens. Hoje, vamos colocar a mão na massa e usar esse método para criar uma lista de números no StartLab.
Nosso primeiro passo é criar a lista. Para isso, vamos até a seção Variáveis, no lado esquerdo da tela, e clicamos em "Criar uma Lista". Uma janelinha chamada "Nova Lista" vai aparecer.
Vocês vão dar um nome para a nossa lista. Vamos chamá-la de "números". Certifiquem-se de que a opção "Para todos os atores" está selecionada e, depois, é só clicar em OK.
Pronto! Agora vocês vão notar que, na lista de blocos, surgiram novos blocos na cor laranja. Isso significa que a nossa lista foi criada com sucesso. No palco, no canto superior esquerdo da tela, vocês também verão que a lista "números" aparece, mas por enquanto ela está vazia.
Existem duas maneiras de adicionar números à nossa lista:
A primeira é a mais simples: clicando no ícone +, que fica no rodapé da lista no palco. Vocês podem digitar os números que quiserem.
A segunda forma é usando os blocos de código. Vocês podem arrastar o bloco de evento
"quando a bandeira for clicada" para a área de código. Depois, adicionem o bloco "apague todos os itens de números" para que a lista sempre comece do zero ao rodar o programa.
Para fazer o computador nos perguntar os números, usaremos um bloco de sensor. Vão até a seção
Sensores e arrastem o bloco "pergunte 'Qual é o seu número?' e espere" para o código.
E agora, como guardamos o número que o usuário digitar? Vamos voltar para a seção
Variáveis e pegar o bloco "adicione 'coisa' a 'números'". Mas, em vez de adicionar a palavra "coisa", queremos adicionar a resposta do usuário, certo? Então, na seção
Sensores, peguem o bloco "resposta" e encaixem-no no lugar da palavra "coisa".
Assim, sempre que o programa rodar, ele vai perguntar um número, e esse número será adicionado à lista. Mas e se quisermos adicionar vários números? Se clicarmos na bandeirinha verde novamente, a lista será apagada. Para resolver isso, usaremos um
laço de repetição.
Na seção Controle, encontrem o bloco "repita 10 vezes" e encaixem os blocos de "pergunte" e "adicione" dentro dele. Assim, o programa vai perguntar e adicionar 10 números de uma vez, sem apagar a lista a cada clique!
Depois de adicionar os números, a lista ainda não estará ordenada. É aí que entra a parte mais legal! Vamos criar um bloco personalizado, que funciona como uma função, para fazer a mágica da ordenação.
Vão em "Meus Blocos" e cliquem em "Criar um bloco". Chamem esse novo bloco de
"ordena lista" e adicionem uma entrada com o nome "valor".
Agora, para o computador entender como ordenar, ele precisa comparar os números. Usaremos um
bloco de operador para isso. Se o primeiro item da nossa lista for maior que o número que estamos adicionando, o computador deve colocar o novo número na primeira posição. Para criar essa lógica, usaremos um bloco de
"se...então" da seção Controle.
Dentro do "se...então", colocaremos nosso operador de comparação. Depois, dentro do "então", usaremos o bloco
"insira 'coisa' na posição 1 de 'números'". No lugar da palavra "coisa", vocês vão colocar o bloco de entrada que criamos, o "valor".
Para finalizar, vamos fazer um teste!
Adicionem alguns números e vejam como a lista se organiza automaticamente. Por exemplo, se a lista tem 10 e 20, e vocês adicionam o 5, ele vai para a primeira posição!
Agora é com vocês! Testem, experimentem e vejam como a programação nos ajuda a organizar dados de forma inteligente.
Insertion sort - Quizz