
Muitas pessoas estão familiarizadas com o Scratch, um ambiente de programação infantil em que o aprendizado geralmente se resume à criação de projetos criativos segundo o princípio “do simples ao complexo”. Ao mesmo tempo, a “abordagem clássica” para aprender programação (variáveis → ramificações → loops → funções → estruturas → objetos →…) no Scratch é difícil.
Porém, mudar a sequência de aprendizagem dos conceitos (vamos chamá-los de conceitos) de programação estruturada, orientada a objetos e eventos, escondendo-os atrás de sprites coloridos e animações interativas, não significa que os conceitos não devam ser enfatizados. Principalmente se o objetivo não for tanto o desenvolvimento de habilidades criativas, mas sim o aprendizado de programação. Tentei refletir essa ideia em meu .
A primeira coisa que um scratcher iniciante encontra são os sprites. Embora não exista programação orientada a objetos no Scratch, sprites podem ser considerados objetos. Nesta fase, o aluno vê que um programa pode ter muitos objetos cujo comportamento é controlado por scripts externos a eles. Sprites recebem comandos ou transmitem informações sobre seu estado sob demanda, ou seja, a programação se resume ao gerenciamento de objetos.
A segunda coisa que atinge imediatamente um jovem programador no Scratch é o conceito de multithreading. Cada sprite pode ter vários scripts rodando simultaneamente. Vários sprites também podem executar seus programas simultaneamente. Além disso, é mais difícil organizar a execução sequencial.


Já na primeira lição não podemos deixar de conhecer os ciclos. Caso contrário, o gato não fugirá realmente. Nesta fase, o conhecimento deve ser deixado intuitivo e superficial. Nós o limitamos aos loops "repetir sempre" e "repetir... vezes", que são mais fáceis de entender. O loop condicional é estudado em uma lição especificamente dedicada aos loops. Esta lição pressupõe conhecimento de expressões e variáveis booleanas.
Como o Scratch é um ambiente orientado a eventos, os blocos de instruções condicionais são mais fáceis de aprender antes das variáveis. A condição pode ser certos eventos.

Na minha opinião esta sequência é melhor, pois a cada aula introduzimos um mínimo de conceitos. E não abstratos, mas vemos imediatamente seus benefícios práticos.
Se você estudar primeiro as variáveis, então seu propósito e benefícios serão difíceis de demonstrar, uma vez que o operador condicional, a entrada de dados e a geração de números aleatórios não foram estudados antes.
No Scratch, sem contar listas, o programador encontra três tipos de dados: números, strings e booleanos. Nesse caso, o tipo está vinculado ao valor, não à variável. Não há necessidade de converter strings em números e vice-versa. Strings não são citadas.
Um bloco que retorna um valor booleano e possui um formato angular característico pode ser inserido em campos arredondados. O inverso não é verdadeiro: onde uma expressão booleana é assumida, uma variável regular não pode ser inserida.

Scratch é implementado para que nenhum erro crítico ocorra durante a execução. Aparentemente é por isso que, se você tentar usar uma string em uma operação aritmética, ela será substituída por zero (veja a primeira imagem).
O programador deve saber que as capacidades das linguagens de programação são ampliadas por bibliotecas. Trabalhando no Scratch, o aluno pode conectar acréscimos que levam ao surgimento de novos comandos no ambiente.

As funções no Scratch são implementadas na seção “Outros Blocos”, onde por um lado você cria seu próprio bloco que pode ser inserido em outros scripts. Por outro lado, devemos coletar a funcionalidade deste bloco, ou seja, o que ele fará.

Não há valor de retorno da função scratch.
Assim, aprender conceitos de programação em um ambiente orientado a eventos deixa sua marca. Essencialmente, primeiro estudamos conceitos mais complexos e abstratos e somente à medida que nos aprofundamos no processo é que passamos para os elementos da programação estruturada. Se isso é um ponto positivo ou negativo para um primeiro contato é um ponto discutível.
Fonte: habr.com
