Baixe o app para aproveitar ainda mais
Prévia do material em texto
Atributos eficientes Aula 10 Habilidades trabalhadas nesta aula: (EF07MA04) Resolver e elaborar problemas que envolvam operações com números inteiros. (EF07MA13) Compreender a ideia de variável, representada por letra ou símbolo, para expressar relação entre duas grandezas, diferenciando-a da ideia de incógnita. (EF07CO01) Criar soluções de problemas para os quais seja adequado o uso de registros e matrizes unidi- mensionais para descrever suas informações e automatizá-las usando uma linguagem de programação. (EF07CO02) Analisar programas para detectar e remover erros, ampliando a confiança na sua correção. (EF07CO05) Criar algoritmos fazendo uso da decomposição e do reúso no processo de solução de forma colaborativa e cooperativa e automatizá-los usando uma linguagem de programação. Listas: criando o seu jogo de cartas com listas e padrões Unidade 2 Reconhecer padrões. Criar blocos personalizados. Utilizar bloco personalizado para adicionar características às cartas. O que vamos aprender? ACOMPANHE O VÍDEO DA AULA https://cursos.alura.com.br/course/scratch-criando-jogo-cartas-listas-padroes/task/134377 3 Reconhecendo padrões Anteriormente, terminamos de ajustar a dinâmica de bônus para nossa carta e para a carta do oponente adicionando o acessório de trás. Além disso, inserimos outros acessórios na parte da frente de ambas as cartas. Nesta aula, atualizaremos os valores dos atributos em relação a esses acessórios da frente. Para fazer isso, criaremos blocos personalizados a partir da observação de padrões em códigos que já utilizamos, e usaremos esses blocos para adicionar novas características às cartas. Professor, para iniciar a aula, sugere-se relembrar com os estudan- tes o que foi realizado no projeto até o momento. Além disso, é inte- ressante que eles compreendam a importância da identificação de padrões para criar blocos personalizados. Esses blocos são funções que permitem definir um conjunto de comandos, e isso permite que nosso código fique mais organizado. 4 Nossas cartas já possuem dois tipos de acessórios: os que aparecem atrás das personagens criadas e os que aparecem na frente delas. Porém, os acessórios da frente ainda não influenciam nos valores dos atributos. Nesta aula, ajustaremos isso utilizando padrões já vistos. Começaremos selecionando o Palco, localizado no canto inferior direito da tela: . Vamos analisar o seguinte script na Área de Código: Professor, olha para o script, pergunte aos estudantes quais blocos realizam as mudanças dos valores dos atributos da nossa carta. É esperado que eles indiquem os blocos laranjas que adicionam valores às variáveis minha inteligência, minha velocidade e minha força, com base nas fantasias do ator acessórios atrás. 5 Repare que, quando iniciamos a rodada, existem três blocos que adicionam valores às variáveis dos atributos da nossa carta: Precisaremos utilizar esse mesmo padrão de conjunto de blocos para indicar as fantasias do ator acessórios frente e produzir alterações nos atributos das cartas. Sendo assim, adicionaremos, da seção Variáveis, o bloco ao script. Em seguida, selecionaremos a opão minha inteligência no menu suspenso desse bloco, como mostra a imagem ao lado. 6 Feito isso, iremos na seção Operadores e arrastaremos o operador de multiplicação, , para a lacuna do bloco que estamos configurando, preenchendo a primeira lacuna desse operador com o número 3. Seu bloco ficará como mostrado a seguir: Para preencher a segunda lacuna do operador, iremos na seção Sensores e arrastaremos o bloco , selecionando a opção acessórios frente no segundo menu suspenso desse bloco. Em seguida, na primeira lacuna do bloco, selecionaremos a opção nº da fantasia, como mostra a imagem a seguir: 7 Assim, teremos configurado o seguinte conjunto de blocos para mudar a variável minha inteligência com base nas fantasias do ator acessórios frente. Podemos reparar que esse bloco é igual ao bloco criado anteriormente, porém, o bloco sensor informa a fantasia do ator acessórios frente, e não do ator acessórios atrás. Tendo identificado esse padrão, podemos criar uma função para não precisarmos refazer todos esses blocos repetidas vezes. No Scratch, as funções são feitas na seção Meus Blocos. Assim, para criar uma nova função, na seção Meus Blocos, clicaremos em . Na caixa que se abrir, nomearemos esse bloco como meus acessórios: Assim como as funções em matemática, as funções na programação são nomeadas, definidas e possuem um retorno ao serem utilizadas. As funções em programação servem para “encapsular” um código que poderá ser utilizado em qualquer momento do programa. Elas também ajudam a deixar nosso código mais organizado e podem ser usadas sem precisar ser modificadas. Usando nossa situação como exemplo, iremos criar uma função e defini-la com base no padrão identificado para mudar o valor das variáveis dos atributos. Desse modo, um único bloco no script irá executar as mu- danças nos atributos com base no acessório de trás e outro bloco irá mudar os três atributos com base na fantasia do acessório da frente. 8 Essa função terá como objetivo adicionar valores às variáveis minha inteligência, minha força e minha velocidade. Para fazer isso, ela deverá ter como parâmetro uma entrada que possa diferenciar, por exemplo, o acessório da frente e o de trás. Então, clicaremos em Adicionar uma entrada numérica ou texto e nomearemos esse parâmetro como número da fantasia. Feito isso, clicaremos no botão OK. 9 Repare que, na Área de Código, o bloco surgirá. Ele será utilizado para definir a função meus acessórios. Organize sua área de códigos e deixe esse bloco próximo ao script que recebe o comando de iniciar a rodada. Em seguida, arrastaremos os quatro últimos blocos de adicione desse script para baixo do bloco que acabamos de criar. O script da sua função ficará assim: 10 Feito isso, deletaremos o último bloco que criamos nesta aula, afinal, esse bloco possui o mesmo padrão que o primeiro e, portanto, não é mais necessário. Em seguida, substituiremos os sensores pelo parâmetro número da fantasia. Portanto, exclua os blocos de sensores (azuis). Para que a entrada número da fantasia assuma os valores do sensor e informe o número da fantasia dos atores acessórios frente e acessórios atrás, clicaremos em , presente no bloco da função que acabamos de criar, e arrastaremos quatro vezes esse parâmetro para dentro das quatro lacunas nas quais antes estavam os blocos de sensores que acabamos de excluir. Professor, acompanhe o processo de exclusão dos blocos juntamente com os estudantes, verificando se eles compreendem, de fato, porque essas exclusões estão sendo feitas. Espera-se que os estudantes percebam que, pelo fato de termos criado uma função, estamos refatorando o código de maneira a deixá-lo otimizado, o que é considerado uma boa prática de programação. 11 Seu script deve ficar da seguinte maneira: Agora, precisamos pensar em quando iremos utilizar essa função, ou seja, quando iremos chamar essa função tendo como parâmetro a fantasia do ator acessórios atrás. Professor, solicite sugestões dos estudantes sobre em qual script deverá ser chamada essa função. Espera-se que eles respondam que essa função deverá ser chamada na sequência do script que é executado quando inicia a rodada. Além disso, é importante que eles compreendam que, quando essa função for chamada, serão executado todos os comandos rosa que definem a função meus acessórios. 12 Para isso, arrastaremos o bloco , da seção Meus Blocos, para o final do script que recebe o início da rodada. A lacuna em branco será justamente o valor de número da fantasia que utilizamos quando definimos a função. Após isso, da seção Sensores, arrastaremos o sensor para a área de código, colocando-o próximo ao próximo ao bloco . Em seguida, selecionaremos a opção acessórios atrás no segundo menu suspenso desse bloco, como mostra a imagem a seguir: 13 Feitoisso, clicaremos no primeiro menu suspenso do mesmo bloco e selecionaremos a opção no da fantasia Por fim, arrastaremos o bloco sensor devidamente configurado para dentro da lacuna do bloco meus acessórios. Assim, quando chamarmos a função meus acessórios, todos os blocos rosas (número da fantasia) assumirão os valores da fantasia do ator acessórios atrás e adicionarão pontos aos atributos da nossa carta. 14 Em seguida, precisaremos chamar novamente uma outra função, porém, ela deverá ter como parâmetro o número da fantasia do ator acessórios frente. Para isso, iremos na seção Meus Blocos e arrastaremos mais uma vez o bloco , colocando-o ao final do script, como mostra a imagem a seguir: Novamente, da seção Sensores, arrastaremos o sensor para a Área de Código e o configuraremos para que ele chame as fantasias do ator acessórios frente. Feito isso, arrastaremos o sensor para a lacuna do bloco meus acessórios que acabamos de adicionar. Feito isso, o conjunto de blocos ficará da seguinte forma: 15 Teremos, então, os dois blocos que chamam a função meus acessórios e o script que define essa função da seguinte maneira: Ao testar nosso programa clicando na bandeira verde acima do palco, podemos perceber que as fantasias que estão na frente da personagem também somam valores aos atributos da nossa carta. Porém, quando escolhemos algum atributo, o acessório da frente da carta do oponente não agrega nenhum valor ainda. É importante que os estudantes percebam que, quando o bloco meus acessórios for executado, ele executará tam- bém os três blocos que adicionam valores para as variáveis minha inteligência, minha força e minha velocidade. Além disso, todos os blocos número da fantasia assumirão os valores do sensor vinculado ao ator acessórios atrás. Por sua vez, quando o bloco da função meus acessórios for executado, ele também irá executar os três blocos que adicionam valores para as variáveis minha inteligência, minha força e minha velocidade. Porém, todos os blocos rosas número da fantasia assumirão os valores do sensor vinculado ao ator acessórios frente. 16 Em seguida, precisamos identificar o padrão que utilizamos para que os acessórios somassem valores na carta do oponente. Repare que, no script que recebe a informação de criar clones, temos os blocos que adicionam valores às variáveis inteligência oponente, força oponente e velocidade oponente: Precisaremos, então, criar um novo bloco. Para isso, iremos na seção Meus Blocos e clicaremos em . Nosso objetivo é criar o mesmo sistema de pontuação que fizemos com a nossa carta para a carta do oponente. Portanto, essa função substituirá os blocos que adicionam valores às variáveis de atributo do oponente, tendo como parâmetro as variáveis que criamos para armazenar a informação do clone criado para a carta do oponente. Nomearemos esse bloco como acessórios do oponente e adicionaremos a ele uma entrada chamada número de fantasia. O bloco criado ficará assim: 17 Observe que, na Área de Códigos, surgiu o bloco . Deixe esse bloco próximo ao script que recebe a mensagem para criar clones para que possamos configurar os scripts. Agora, quando os clones forem criados, teremos uma função acessórios do oponente. Em seguida, precisamos identificar quais códigos utilizaremos para definir essa função. Professor, pergunte aos estudantes quais blocos definirão a função acessório do oponente. Espera-se que eles respondam que, para definir essa função, deverão ser utilizados os três blocos adicione do script que recebe a mensagem para criar os clones. Verifique se todos eles compreenderam essa lógica. 18 Para definir a função criada, precisaremos dos seguintes blocos, que estão no script que começa com : Vamos separar esses três blocos do seu script original e, em seguida, vamos conectá-los ao bloco da função acessórios oponente, como mostra a imagem a seguir: 19 Em seguida, da seção Meus Blocos, arrastaremos o bloco para o lugar em que estavam os três blocos de adicione, que acabamos de tirar do script que começa com . Diferentemente do que acontece com as informações da nossa carta, para termos a informação da fantasia dos clones não utilizamos sensores, mas sim as variáveis para armazenar essas informações. Por isso, utilizaremos a variável no bloco de função que acabamos de adicionar, arrastando a variável em questão para a lacuna do bloco de função, que ficara como mostra a imagem: Professor, caso os estudantes se deparem com algum bug e não consigam localizar o bloco acessórios do opoente, oriente-os a clicar em algum ator do nosso programa e, em seguida, clicar novamente no Palco; fazendo isso, os blocos da seção Meus Blocos devem estar atualizados. 20 Para que a entrada número da fantasia assuma os valores da variável oponente fantasia atrás, que informa o número da fantasia dos clones do ator acessórios atrás, clicaremos em , no bloco de função, e arrastaremos essa entrada para a segunda lacuna do operador de multiplicação, como vemos a seguir: Em seguida, substituiremos todas as outras variáveis desse script pelo bloco . Começaremos deletando essas variáveis arrastando-as para o lado esquerdo, como mostra a imagem: 21 Feitas as substituições, teremos o seguinte script: Agora, precisamos criar um novo bloco para os acessórios da frente. Para isso, iremos na seção Meus Blocos e arrastaremos mais uma vez o bloco , colocando-o no script que começa com . Então, teremos o seguinte: 22 Feito isso, pegaremos a variável , na seção Variáveis, e a arrastaremos para a lacuna do bloco que acabamos de adicionar. Por último, não podemos esquecer de conectar o restante do código que havíamos separado para conseguirmos configurar nossa função, como mostra a imagem a seguir. 23 Feito isso, observe a diferença entre as duas funções: Perceba que a única diferença entre elas é que, em vez de alterar as variáveis dos atributos da minha carta, a função acessórios do oponente muda as variáveis dos atributos da carta do oponente. Ao clicar na bandeira verde acima do palco para testar nosso programa, podemos perceber que estão sendo somados valores de acordo com os acessórios da frente e de trás, tanto na nossa carta como na carta do oponente. Desafio 24 Nesta aula, utilizamos blocos personalizados para não precisarmos ficarmos criando códigos repetidos que possuem os mesmos padrões. Sendo assim, criamos dois blocos personalizados para fazer funções que alterem os valores dos atributos da nossa carta e da carta do oponente. Essas funções recebem valores dos números das fantasias, tanto dos atores acessórios frente e acessórios trás, como também das variáveis que armazenam o valor das fantasias de seus clones. Diante disso, seu desafio será identificar um padrão na criação dos clones dos atores cabeça, corpo e pé, e criar um bloco com uma função que execute esse padrão em todos os atores. CLIQUE AQUI PARA AVALIAR ESTE MATERIAL É esperado que os estudantes identifiquem padrões já utilizados e criem novos blocos personalizados. Ao realizar essa atividade, eles podem desenvolver a capacidade de identificar padrões e criar funções para deixar seus códigos mais organizados. Também é esperado que eles per- cebam que esses três atores, quando começam como um clone, vão para a carta do oponente, mudam a variável que dará um número aleatório, mudam a fantasia para o valor dessa variável, esperam o valor da variável “tempo” em segundos e apagam os clones. Então, ao criar um bloco personalizado, não há necessidade de adicionar uma entrada para valores, porém, esse bloco deve ser definido com todos os cindo blocos do script que começa com “quando eu começar como um clone”. Em seguida, é preciso substituir esses blocos pelo bloco personalizado criado. https://docs.google.com/forms/d/e/1FAIpQLSdj6D4ophEVDczMqZKzLL0_9vCK5C2UoSKSxaMr-1os8-B8-A/viewform
Compartilhar