Como um tolo, o C # ensinou. Parte 1


Registro 1


Eu decidi gravar. Principalmente porque eu gosto de gravar. Embora não. Na verdade, eu quero contar uma história. A história de que a programação é interessante. O fato de programar pode ser não apenas uma profissão, mas também um ótimo hobby, como fotografia, xadrez, pintura ou tocar violão. O fato de não ser necessário ter um talento inato, superpotência ou anos de educação especial para obter pequenas mas grandes vitórias em qualquer empresa.

Este é o diário de uma pessoa aprendendo programação por diversão. Não para uma profissão, nem para viver. Eu não moro na Nigéria com um telefone com botão de pressão e não estou em uma situação desesperadora. Acabo de estudar e programar para me divertir nas horas vagas nos assuntos do trabalho e da família. Mostrar em tempo real. Publicado em lotes de 5 entradas.

Por alguma razão, a mentalidade estabelecida (a minha e outras) nos protege de experiências ousadas com algo novo. "Não sei como" soa como uma sentença de morte maldita. Todos os dias vejo isso no trabalho, quando os colegas se deparam com uma tarefa desconhecida. Eu não sei como O fim do programa.

Meu filho de sete anos tem medo de experimentar atividades desconhecidas. Porque ele não sabe como. Mas devemos entender que em seus anos ele não sabe quanto.

Às vezes eu digo a ele: “Amigo, se as pessoas fizessem apenas o que podiam, ainda viveríamos em cavernas, e especificamente você passaria o dia todo choramingando, rastejando e fazendo cocô nas calças, em vez de jogar Angry Birds. Embora não, você rastejaria sem calças, porque ninguém saberia costurar .

Por que eu estou? Para o fato de que eu não sei programar. Mas eu vou aprender. Não porque eu quero me tornar um desenvolvedor - eu já tenho uma profissão. Mas porque eu posso. Embora na verdade eu tenha três razões.

O primeiro é esticar seu cérebro. Estou convencido de que a vida não pode ser construída em torno de nenhuma atividade. É necessário ocupar sua mente com tarefas diferentes. E quanto mais diversificados, melhor para a mente.

A segunda razão é prática. Vou escrever um jogo (brega, sim), com o qual vamos jogar e nos divertir.Já temos uma idéia - na última iteração, tentamos fazer um stick, mas a mecânica acabou sendo muito complicada.

A terceira razão é educacional. Vou tentar mudar a atitude da sociedade em relação à programação. É geralmente aceito que a programação é o destino dos profissionais. Ninguém está programando como hobby. O conceito de “programação amadora” (lembre-se desta palavra) não existe.

Uma parte dos profissionais que estão me lendo agora atacará com comentários que desvalorizarei sua profissão e habilidades adquiridas ao longo dos anos. Não se apresse. Por enquanto, apenas acredite em mim que não é assim, e voltaremos a esse tópico mais tarde.

Resumindo, eu decidi aprender C #. Como minha ideia precisa de um mecanismo, e pelo que entendi, a Unity é a melhor. E a unidade é c #. Este é o primeiro.

A segunda coisa que percebi é que começar com o Unity é muito cedo. Quase todos os materiais educacionais vêm do fato de o leitor já estar familiarizado com o idioma. E tudo o que sei sobre C # é que é correto dizer "Sea Sharp", e não "Tse com uma grade". Então, vamos começar com o próprio idioma.

A terceira coisa que percebi é que o treinamento será completo. Como Sharpe é um novo idioma para mim, você precisa de algo "para manequins", mas não existe.

Há um livro didático “C # para crianças em idade escolar” de Martin Dreyer, mas é absolutamente impossível lê-lo. Primeiro, a familiaridade com a programação começa com o estudo de classes e objetos. Muito complicado e incompreensível. Em segundo lugar, em um parágrafo da essência, existem três páginas de exemplos do mundo real. Demais. Não estou pronto para gastar tanto tempo na história de como uma garota em uma ilha deserta convence um alienígena robô a fazer um elefante apanhar um coco.

Existe outro extremo. Tutoriais do mycsharp.ru e o "Guia completo da linguagem de programação C # 8.0 e da plataforma .NET Core 3" em metanit.com/sharp/tutorial

Existem exemplos de código dos quais você pode reutilizar algo, mas os exemplos são muito abstratos como "Vamos escrever um programa que coloque os objetos a, bec na memória, é tão emocionante!". Mas isso é um pouco melhor do que elefantes e cocos, especialmente porque eu tenho minha própria metodologia de ensino.

Em geral, decidi que poderia lidar com isso e parti para instalar o Visual Studio.

Registro 2


Tudo correu conforme o planejado. No dia seguinte, peguei a tela preta. Eu não entendi o que era, mas parece que o driver de vídeo foi atualizado antes do Windows e acabou sendo incompatível com a versão antiga.

Uma vez eu fui arrumado em tais coisas. Com qualquer problema, simplesmente restaurei a partição do sistema operacional a partir de uma imagem cuidadosamente preparada, mas isso foi há muito tempo. O Windows se tornou mais estável, eu me tornei mais descuidado. E assim

Passei uma semana tentando consertar tudo. Eu tentei todas as receitas. Encontrei uma maneira de iniciar a linha de comando, peguei o antigo Far, transferi os arquivos e, na terceira tentativa, peguei um assembly adequado (eu uso o Windows personalizado) com a atualização problemática já instalada.

Aqui devo dizer algumas palavras sobre minha formação. Não sei programar, mas em geral me considero uma pessoa de computador o suficiente. Cerca de 8 anos de idade, o primeiro PC na minha vida apareceu em nosso lugar. Packard Bell 486. Legal na época. Teve dois programas - Lexicon e Info-contabilista.



Eu joguei Lexicon.

Dos personagens I, / e \ desenhei uma pista de corrida e o cursor era um carro. Tais são os brinquedos pregados no chão. Sem internet, sem amigos com computadores (a princípio). Eu me diverti o máximo que pude.

Além de dois programas, o computador era acompanhado por um MS-DOS completo em uma pilha de disquetes e eu frequentemente fazia experiências com equipes diferentes. Cheguei ao chamado QBASIC.

Havia um pequeno manual no básico, e eu entendi alguma coisa. Ele aprendeu um ou dois comandos e conseguiu escrever programas que exibiam letras na tela. Foi demais.

Além disso, havia aulas de ciência da computação no ensino médio. Turbo Pascal. Nós fomos ensinados a escrever código real. Claro, em cadernos. Mas eu tinha um computador (já algum Pentium) e pude praticar.

Então eu me encontrei com as coisas mais básicas. If-then-else constrói e faz loops. O ponto alto da minha habilidade foi o programa de Roleta. Roleta era um jogo. Você escolhe um número de 0 a 10 e faz uma aposta. Adivinhou - um bônus, sem perda de uma aposta. E assim, até o dinheiro acabar. Fiquei muito orgulhoso.

No entanto, eu era um humanista completo e não comecei a conectar minha vida à ciência da computação. Então, depois das experiências escolares, não pensei em programação por cerca de 19 anos.

Oh! A instalação do Visual Studio parece estar completa. Que bonito. Todo preto. Vamos descobrir o que é o quê.

Registo 3


Na verdade, esta não é minha primeira tentativa de programação. Cerca de um ano atrás, um capricho já me ocorreu, e eu tentei o VBA. Ele foi capaz de dominar a sintaxe de várias equipes e escreveu a mesma roleta da escola. Só que melhor Agora eu tinha uma interface gráfica de campos e botões, além de funções para salvar e carregar o jogo (os dados eram armazenados em tabelas do Excel).

No entanto, eu rapidamente desisti do caso. Na maioria das vezes, pela incapacidade de usar imagens normalmente e talvez também pela preguiça. Não me lembro exatamente. De qualquer forma, consideraremos minha experiência em VBA como uma espécie de aquecimento. Agora é hora de um verdadeiro hardcore.

Passei 4-5 noites em Sharpe. Eu li dois capítulos do livro. O que posso dizer? Não sou de todo inspirado pela abordagem acadêmica baseada em escrever programas inúteis que fazem computação abstrata. Não tenho certeza se posso me orgulhar do aplicativo que considera a área do triângulo.

Então, eu criei meu próprio currículo. Com blackjack e ... bem, quase. Aprendi alguns dos comandos mais importantes: Console.WriteLine para exibir rótulos, Console.Readline para entrada de teclado, operações aritméticas, uma construção condicional if-else, while loop e, é claro, Random para números aleatórios.

Você provavelmente já adivinhou. Mais uma vez eu escrevi roleta console :)



Sensações são uma delícia. Ela trabalha! Você pode perder ou ganhar nele! E este é um programa real - ele possui 68 linhas de código incompreensível, incluindo até 5 métodos chamados.

Foi difícil? Sim Li manuais, cometi erros e quebrei tudo, passei horas procurando defeitos, li novamente manuais, fiquei confuso no código e reescrevi tudo várias vezes, simplificando construções em loops e removendo variáveis ​​desnecessárias.

Mas o resultado valeu a pena. Estou cheio de esperança e seguir em frente.

Registo 4


O primeiro obstáculo. Cheguei ao conceito de classes e objetos. O conceito é completamente incompreensível. Como a idéia seria clara, mas como e por que aplicá-la? Criar aulas para jogador, cassino e roleta? Então venha com objetos neles? E o que eles vão fazer? Muito tempo. Parece pouco natural para alguma coisa e apenas confunde o programa.

Chegou a mim em alguns dias. Andei com meu filho no parquinho e olhei para o mundo ao redor com olhos orientados a objetos.

class  {string Name;}, class  {string Name; int Age;}   = new  ();   = new  (); 

...

E então eu entendi tudo. Meu programa de roleta é muito burro e primitivo. As aulas simplesmente não são necessárias lá. Foi um bom exercício aprender programação procedural, mas nada mais.

Foi necessário elaborar um novo exercício para entender as aulas. E eu inventei. Bem aqui, sentei-me em um banco e me escrevi um quebra-cabeça no telefone. Faça um mini RPG. Haverá um herói com seus próprios parâmetros de força e saúde. A cada turno, ele entra em uma nova caverna e encontra um troll com seus próprios parâmetros. Eles vão lutar rolando um dado, como em Never Interest. E lá você pode encontrar armas e armaduras.

As principais classes se perguntavam:

  • Herói (força, saúde, dinheiro)
  • Item (dano, armadura, durabilidade)
  • Monstro (Força, Saúde)

Deveria ser interessante. Eu posso lidar com isso? Fácil. Vamos lá

Registo 5


Não funcionou facilmente. Eu rapidamente esboçava aulas com campos. Descobri no livro o que é um designer e derrubei os designers de armaduras e armas. Eu fiz a interface, descobrindo como mudar a cor do texto.

Agora eu tenho uma saudação, estatísticas, armas e armaduras do jogador exibidas na minha tela. Há um menu no qual você pode iniciar a próxima jogada ou sair do jogo.



E mesmo isso não foi fácil. Eu sempre encontrei erros. Especial ao portar código para métodos. Algum lixo não existe em nenhum contexto. Outro lixo não está disponível devido ao nível de proteção ...

Eu realmente senti falta de algum tipo de guia para manequins sobre como estruturar o código. Onde colocar o método para gerar o item? Classificar Item? Para o programa da turma? Apenas deixe em código? Você precisa experimentar, capturar e corrigir erros.

Separados dois dias, fui atormentado com um gerador de números aleatórios, que me deu um escudo e uma espada com os mesmos parâmetros. Percebi que as soluções normais ainda não estão disponíveis para minha mente e parei por um segundo entre duas gerações.

Então a euforia terminou e um estupor começou. Consegui gerar dois itens manualmente, nomeando-os Arma1 e Armadura1. Mas precisarei fazer isso após cada movimento, salvá-los no inventário, alterar ... Como crio objetos programaticamente? Como gerar seus nomes e, ainda mais, escolher os parâmetros necessários para alterar seus parâmetros?

VBA foi mais fácil. A Internet está cheia de exemplos de scripts para cada tarefa específica. Encontrar e reutilizar o caminho certo não é um problema. Muitas vezes, eu não entendi nem metade do código escrito, mas funcionou magicamente e, então, tenho que descobrir.

O livro não ajuda. Eles já falam sobre expressões lambda e multithreading, e os exemplos ainda estão no nível de "Encontre a soma de todos os números pares em vários números". Tédio. Uma pesquisa na Internet também não fornece respostas, porque de alguma forma eu não formulo a pergunta dessa maneira.

Eu suspeito que você precisa conectar o banco de dados e gravar objetos lá. Eu tenho que aprender SQL.

Source: https://habr.com/ru/post/pt466641/


All Articles