Eu aprendi C ++ no ensino médio como a primeira linguagem de programação, embora fosse mais parecida com "C +", agora que você mencionou; usamos cout
para escrever texto no console e nos arquivos, mas também algumas funções C ( getch()
era a minha favorita).
Eu acho que a maneira mais eficaz (e possivelmente divertida) de ensinar o básico é usar um currículo orientado a objetivos: comece mostrando como produzir coisas, depois insira o teclado, depois E / S simples de arquivos, etc. Progresso para um texto simples jogo baseado (ou o equivalente em robótica). Então, quando perguntarem: "Como faço para X?", Você pode dividir X em termos de exemplos que eles já viram, por exemplo: "Primeiro, você precisará obter a entrada do usuário, como fizemos em Z, depois ..."(obviamente, não é tão fácil na prática, desde X provavelmente será algo que eles precisam conhecimento adicional, a fim de fazer, por exemplo, 'gráficos 3D', mas você ainda poderia explicar como ele iria trabalhar em um alto nível maneira).
Os exemplos que você mostra a eles começam como magia colada em caixa-preta, cujos mistérios são desvendados à medida que as peças do quebra-cabeça de programação são lentamente descobertas. Por exemplo, seus alunos aprenderão o básico de if
s rapidamente, mas provavelmente não perceberão que uma expressão booleana não se limita exclusivamente ao uso dentro if
da condição de uma (levando ao if (blah) return true; else return false;
código clássico ).
As sutilezas de escolher uma matriz ou vetor como contêiner parecerão irrelevantes para os alunos a princípio. Um vetor / array será simplesmente uma maneira de ter muitas variáveis como uma variável, acessíveis através de um índice. Atenha-se a um onde você puder. Ponteiros não serão compreendidos até mais tarde também. Isso não quer dizer que você não deva explicar as coisas; apenas que você não pode explicar tudo de uma vez, e as coisas que você explica não serão completamente absorvidas. Os seres humanos aprendem organicamente, não linearmente. Eu estava usando cout
há alguns anos antes de entender corretamente o que era sobrecarga de operador!
Ah, e não tenha medo de repetição. "É como o programa Hello World que fizemos - lembra como escrevemos texto para o console?" (não ...) "Vamos passar por isso novamente apenas para ter certeza." ... E faça perguntas! Mantenha os alunos envolvidos com exemplos divertidos e muita interação.
C ++ é uma linguagem complexa e, não importa o que você faça, uma quantidade significativa dessa complexidade (e da arte da programação em geral) será perdida para seus alunos. Tudo o que você mostrar a eles será novo para eles; a maior parte não vai afundar em um nível profundo de entendimento (pelo menos, não imediatamente). Como a memória funciona, como os componentes de um PC interagem, o que são a pilha e o heap, ponteiros, classes e até loops e cadeias if-else não serão entendidos adequadamente pela maioria. Tudo bem! Eles não precisam ser entendidos para serem usados - uma quantidade incrível de programas legais pode ser escrita com funções super feias de 1000 linhas, com redundantes aninhados em quintuplo if
e 43 variáveis denominadas coisas como x_2r
. O importante é que os alunos estejam constantemente aprendendo e melhorando. As caixas pretas ficam bem desde que se tornem transparentes (ou pelo menos cinza translúcido) a longo prazo. No final do curso, eles podem não saber o que são os padrões de design, mas devem poder olhar para os programas que escreveram nas primeiras semanas e se estremecer com o código. Eles devem entender com um nível significativo de detalhes como o primeiro programa que eles escreveram realmente funciona (enquanto que quando o escreviam, eles não tinham idéia). Mas eles não sabem tudo - ainda .