Como un tonto, C # enseñó. Parte 1


Registro 1


Decidí grabar. Principalmente porque me gusta grabar. Aunque no. En realidad, quiero contar una historia. La historia de que la programación es interesante. El hecho de que la programación puede ser no solo una profesión, sino también un gran pasatiempo, como la fotografía, el ajedrez, la pintura o tocar la guitarra. Que no es necesario tener talento innato, superpotencia o años de educación especial para lograr pequeñas pero grandes victorias en cualquier negocio.

Este es un diario de una persona que aprende programación por diversión. No para una profesión, no para ganarse la vida. No vivo en Nigeria con un teléfono de botón y no estoy en una situación desesperada. Solo estudio y programo entretenimientos en mi tiempo libre en el trabajo y los asuntos familiares. Mostrar en tiempo real. Publicado en lotes de 5 entradas.

Por alguna razón, la mentalidad establecida (la mía y otras) nos protege de los experimentos audaces con algo nuevo. "No sé cómo" suena como una condenada sentencia de muerte. Todos los días veo esto en el trabajo, cuando los colegas se enfrentan a una tarea desconocida. No se como. El final del programa.

Mi hijo de siete años tiene miedo de intentar actividades desconocidas. Porque no sabe cómo. Pero debemos entender que en sus años no sabe cuánto.

A veces le digo: "Amigo, si la gente hiciera solo lo que puede, aún viviríamos en cuevas, y específicamente pasarías todo el día mugeando, gateando y haciendo popó en pantalones, en lugar de jugar a Angry Birds". Aunque no, gatearías sin pantalones, porque nadie sabría cómo coser " .

¿Por qué soy yo? Al hecho de que no sé programar. Pero voy a aprender No porque quiera convertirme en desarrollador, ya tengo una profesión. Pero porque puedo. Aunque en realidad tengo tres razones.

El primero es estirar el cerebro. Estoy convencido de que la vida no se puede construir alrededor de una sola actividad. Es necesario ocupar tu mente con diferentes tareas. Y cuanto más diversos son, mejor para la mente.

La segunda razón es práctica. Voy a escribir un juego (cursi, sí), con el que jugaremos y nos divertiremos. Ya tenemos una idea: en la última iteración intentamos hacer un palo, pero la mecánica resultó ser demasiado complicada.

La tercera razón es educativa. Intentaré cambiar la actitud de la sociedad hacia la programación. En general, se acepta que la programación es el destino de los profesionales. Nadie está programando como un hobby. El concepto de "programación de aficionados" (recuerde esta palabra) no existe en absoluto.

Una parte de los profesionales que me leen ahora atacará con comentarios de que devaluaré su profesión y habilidades adquiridas a lo largo de los años. No te apresures. Por ahora, solo créanme que esto no es así, y volveremos a este tema más adelante.

En resumen, decidí aprender C #. Porque mi idea necesita un motor y, según tengo entendido, Unity es el mejor. Y la unidad es C #. Este es el primero.

Lo segundo que me di cuenta es que comenzar con Unity es demasiado pronto. Casi todos los materiales educativos provienen del hecho de que el lector ya está familiarizado con el idioma. Y todo lo que sé sobre C # es que es correcto decir "Sea Sharp", y no "Tse with a grid". Entonces, comencemos con el lenguaje en sí.

La tercera cosa que me di cuenta es que la capacitación será exhaustiva. Como Sharpe es un idioma nuevo para mí, necesitas algo "para tontos", pero no hay ninguno.

Hay un libro de texto "C # para escolares" de Martin Dreyer, pero es absolutamente imposible leerlo. Primero, la familiaridad con la programación comienza con el estudio de clases y objetos. Demasiado complicado e incomprensible. En segundo lugar, en un párrafo de esencia hay tres páginas de ejemplos del mundo real. Demasiados No estoy listo para pasar tanto tiempo en una historia sobre una niña en una isla desierta que convence a un robot alienígena para que haga que un elefante recoja un coco.

Hay otro extremo. Tutoriales de mycsharp.ru y la "Guía completa del lenguaje de programación C # 8.0 y la plataforma .NET Core 3" en metanit.com/sharp/tutorial

Hay ejemplos de código de los que puede reutilizar algo, pero los ejemplos son demasiado abstractos como "Escribamos un programa que ponga los objetos a, byc en la memoria, ¡es muy emocionante!". Pero esto es un poco mejor que los elefantes y los cocos, especialmente porque tengo mi propia metodología de enseñanza.

En general, decidí que podía manejarlo y partí para instalar Visual Studio.

Registro 2


Todo salió según lo planeado. Al día siguiente, capté la pantalla negra. No entendí qué era, pero parece que el controlador de video se actualizó antes que Windows y resultó ser incompatible con la versión anterior.

Una vez fui aseado en esas cosas. Con cualquier problema, simplemente restauré la partición del sistema operativo a partir de una imagen cuidadosamente preparada, pero fue hace mucho tiempo. Windows se ha vuelto más estable, me he vuelto más descuidado. Y asi.

Pasé una semana tratando de arreglar todo. Probé todas las recetas. Encontré una forma de ejecutar la línea de comando, obtuve el antiguo Far, transfirí los archivos, en el tercer intento tomé un ensamblaje adecuado (uso Windows personalizado) con la actualización problemática ya instalada.

Aquí debo decir algunas palabras sobre mis antecedentes. No sé programar, pero en general me considero bastante informático. Alrededor de 8 años, la primera PC en mi vida apareció en nuestro lugar. Packard Bell 486. Genial en ese momento. Tenía dos programas: Lexicon e Info-contador.



Jugué Lexicon.

De los personajes I, / y \ Dibujé una pista de carreras, y el cursor era un automóvil. Tales son los juguetes clavados al piso. Sin internet, sin amigos con computadoras (al principio). Me divertí lo más que pude.

Además de dos programas, la computadora estaba acompañada por un MS-DOS completo en una pila de disquetes y a menudo experimentaba con diferentes equipos. Llegué a la llamada QBASIC.

Había un pequeño manual en básico, y entendí algo. Aprendió uno o dos comandos y pudo escribir programas que mostraban cualquier letra en la pantalla. Fue asombroso.

Además, hubo clases de informática en la escuela secundaria. Turbo Pascal. Nos enseñaron a escribir código real. Por supuesto, en cuadernos. Pero tenía una computadora (ya algo Pentium) y podía practicar.

Entonces me encontré con las cosas más básicas. If-then-else construye y bucles. El pico de mi habilidad fue el programa de Ruleta. La ruleta era un juego. Eliges un número del 0 al 10 y haces una apuesta. Adivinado - un bono, no - pérdida de una apuesta. Y así, hasta que se acabe el dinero. Estaba muy orgulloso

Sin embargo, era un completo humanista y no comencé a conectar mi vida con la informática. Entonces, después de los experimentos escolares, no pensé en programar durante unos 19 años.

Oh! La instalación de Visual Studio parece estar completa. Que linda. Todo negro. Averigüemos qué es qué.

Registro 3


En realidad, este no es mi primer intento de programación. Hace aproximadamente un año, un capricho ya vino sobre mí y probé VBA. Pudo dominar la sintaxis de varios equipos y escribió la misma ruleta que tenía en la escuela. Solo mejor. Ahora tenía una interfaz gráfica de campos y botones, así como funciones para guardar y cargar el juego (los datos se almacenaban en tablas de Excel).

Sin embargo, rápidamente abandoné el caso. En su mayor parte, por la incapacidad de usar imágenes normalmente, y tal vez también por la pereza. No me acuerdo exactamente. En cualquier caso, consideraremos mi experiencia VBA como una especie de calentamiento. Ahora es el momento de un verdadero hardcore.

Pasé 4-5 noches en Sharpe. Leí dos capítulos del libro de texto. Que puedo decir No estoy inspirado en absoluto por el enfoque académico basado en escribir programas sin sentido que hacen computación abstracta. No estoy seguro de poder estar orgulloso de la aplicación que considera el área del triángulo.

Entonces se me ocurrió mi propio plan de estudios. Con blackjack y ... bueno, casi. Aprendí algunos de los comandos más importantes: Console.WriteLine para mostrar etiquetas, Console.Readline para entrada de teclado, operaciones aritméticas, la construcción condicional if-else, while loop y, por supuesto, Random para números aleatorios.

Probablemente ya lo hayas adivinado. Nuevamente escribí la ruleta de la consola :)



Las sensaciones son una delicia. Ella trabaja! ¡Puedes perder o ganar en él! Y este es un programa real: tiene 68 líneas de código incomprensible, que incluye hasta 5 métodos llamados.

¿Fue dificil? Si Leí manuales, cometí errores y rompí todo, pasé horas buscando defectos, volví a leer manuales, me confundí con el código y reescribí todo varias veces, simplificando construcciones en bucles y eliminando variables innecesarias.

Pero el resultado valió la pena. Estoy lleno de esperanza y sigo adelante.

Registro 4


El primer obstáculo. Llegué al concepto de clases y objetos. El concepto es completamente incomprensible. ¿Cómo sería clara la idea, pero cómo y por qué aplicarla? ¿Crear clases para jugador, casino y ruleta? ¿Entonces se te ocurren objetos? ¿Y qué harán ellos? Demasiado largo Parece antinatural a algo y solo confunde el programa.

Se me ocurrió en unos días. Caminé con mi hijo en el patio de recreo y miré el mundo alrededor con ojos orientados a objetos.

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

...

Y luego entendí todo. Mi programa de ruleta es demasiado tonto y primitivo. Las clases simplemente no son necesarias allí. Fue un buen ejercicio para aprender programación de procedimientos, pero nada más.

Era necesario idear un nuevo ejercicio para comprender las clases. Y se me ocurrió. Justo aquí me senté en un banco y escribí un rompecabezas en el teléfono. Haz un mini juego de rol. Habrá un héroe con sus propios parámetros de fuerza y ​​salud. Cada turno entrará en una nueva cueva y se encontrará con un troll allí con sus propios parámetros. Lucharán tirando un dado, como en Never Interest. Y allí puedes encontrar armas y armaduras.

Las clases principales se preguntaron por sí mismas:

  • Héroe (fuerza, salud, dinero)
  • Objeto (daño, armadura, durabilidad)
  • Monstruo (Fuerza, Salud)

Debería ser interesante. ¿Puedo manejarlo? Fácil Vamos

Registro 5


No funcionó fácilmente. Rápidamente dibujé clases con campos. Descubrí en el libro de texto qué es un diseñador y repasé a los diseñadores de armaduras y armas. Hice la interfaz, descubriendo cómo cambiar el color del texto.

Ahora tengo un saludo, estadísticas de jugadores, armas y armaduras en mi pantalla. Hay un menú desde el que puedes comenzar el próximo movimiento o salir del juego.



E incluso eso no fue fácil. Constantemente me encontré con errores. Especial al portar código a métodos. Alguna basura no existe en ningún contexto. Otra basura no está disponible debido al nivel de protección ...

Realmente me perdí algún tipo de guía para tontos sobre cómo estructurar el código. ¿Dónde poner el método para generar el artículo? ¿Al artículo de clase? ¿Al programa de clase? ¿Solo dejarlo en el código? Tienes que experimentar, atrapar y corregir errores.

Separados dos días me atormentaron con un generador de números aleatorios, que me dio un escudo y una espada con los mismos parámetros. Me di cuenta de que las soluciones normales aún no están disponibles para mi mente y me detuve por un segundo entre dos generaciones.

Entonces la euforia terminó y comenzó un estupor. Logré generar dos elementos manualmente, nombrándolos Arma1 y Armadura1. Pero tendré que hacer esto después de cada movimiento, guardarlos en el inventario, cambiar ... ¿Cómo creo objetos mediante programación? ¿Cómo generar sus nombres y, además, seleccionar los necesarios para cambiar sus parámetros?

VBA fue más fácil. Internet está lleno de ejemplos de guiones para cada tarea en particular. Encontrar y reutilizar el correcto no es un problema. Muy a menudo no entendí la mitad del código escrito, pero funcionó mágicamente, y luego tengo que resolverlo.

El libro de texto no ayuda. Ya hablan sobre expresiones lambda y subprocesos múltiples, y los ejemplos todavía están en el nivel de "Encuentra la suma de todos los números pares en un número de números". Aburrimiento Una búsqueda en Internet tampoco da respuestas, porque de alguna manera no formulo la pregunta de esa manera.

Sospecho que necesita conectar la base de datos y escribir objetos allí. Tengo que aprender SQL.

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


All Articles