Cómo mejorar mis habilidades de programación desde cero por mi cuenta

No te rindas, persiste, las recompensas serán mayores al final.

Día 0) Antes de hacer nada, comprenda qué es la programación: Automatizar cualquier problema que requiera precisión y repetitividad.

Día 1) Aprenda sobre paradigmas de programación

Paradigma 1) Programación procesal / modular / funcional: incluye dividir un problema en subproblemas repetidamente hasta que no sea lo suficientemente sencillo como para hacerlo.

Paradigma 2) Programación Orientada a Objetos:

Aprenda qué es la programación orientada a objetos, ya que es el núcleo de cualquier lenguaje orientado a objetos como C ++, Java o C #.

Aprender acerca:

a) Abstracción de datos : Abstracción (ingeniería de software) – Wikipedia

  • La abstracción de datos en palabras simples está ocultando todas las complejidades innecesarias de la vista del usuario final. En lenguajes de procedimiento como C, debe conocer todos los detalles esenciales y el funcionamiento interno como punteros, administración de memoria, etc.
  • El consejo para visualizarlo es : vea la centralita en su hogar, todo lo que tiene que saber es qué conmutador enciende la bombilla o el ventilador, ya que no se espera que conozca la implementación y los circuitos detrás de ella.

b) Encapsulación : Encapsulación (programación de computadoras) – Wikipedia

  • La encapsulación en palabras simples es la agrupación de elementos que tienen una funcionalidad similar.
  • Considere que la entidad Persona tiene atributos específicos como Nombre, Edad, Género, Dirección, Teléfono, SSN, etc. Todos estos son atributos similares, ¿verdad? que todos se unen bajo este término general llamado Persona. Por lo tanto, tenemos clases, estructura y otros tipos de datos abstractos en C ++ para implementar ese tipo de cosas.

c) Polimorfismo : polimorfismo (informática) – Wikipedia

  • El polimorfismo está utilizando funcionalidades de nombres similares, que se pueden usar para lograr tareas específicas. En C ++ se logra de 2 maneras: polimorfismo estático (sobrecarga de funciones, sobrecarga de constructores, sobrecarga de operadores, plantillas (métodos genéricos)).
  • Mira, piensa, cuando digo: “Estoy disparando a un oficial de policía, él puede arrestarme porque pensó que estaba disparando un arma. En líneas similares, si le digo lo mismo a un director de cine, él podría pensar que estoy grabando una película “. Hay múltiples interpretaciones de la misma frase: “Estoy disparando”. Esa es la idea central detrás del polimorfismo.

d) Herencia : Herencia (programación orientada a objetos) – Wikipedia

  • La herencia es el proceso de tomar prestadas todas las características de su padre, para que no perdamos un tiempo precioso codificando toda la lógica padre redundante una y otra vez, aumentando así la reutilización del código.
  • Piense en la entidad del vehículo, si un vehículo puede clasificarse en el número de ruedas que tiene, como 2, 4 o multieje, los 4 ruedas pueden heredar esta entidad abstracta llamada vehículo, que tiene características fijas como: Bocina , Espejos, motor, ruedas, chasis, etc. De este modo, se reduce la escritura de la lógica del código redundante una y otra vez, lo que ahorra tiempo y la capacidad de reutilizar el código una y otra vez varias veces, lo que simplifica el proceso de depuración.

Día 2 – 20) Comience a aprender un buen lenguaje de procedimiento como C, aprenda todas las construcciones básicas, sintaxis, matrices, cadenas, operaciones de bits, cosas por el estilo.

.

.

Día 21–46) Aprenda C ++ en la siguiente ruta.

Día 1)

  • Aprender sobre los tipos de datos primitivos: void, char, int, float, double, bool, auto specifier.
  • Aprender sobre operadores: operadores aritméticos, lógicos, condicionales, bit a bit y ternarios.
  • Aprenda sobre el mapa de memoria C ++. Cómo se divide en 4 partes: Código, Pila, Montón, Variables.

Día 2) Aprenda sobre tipos de datos más complejos como: matrices, cadenas, estructuras, uniones, uniones anónimas, enumeraciones.

Día 3) Aprenda qué hacen los punteros, cómo usar los punteros, cómo diferenciar los punteros, la aritmética de punteros, los punteros vacíos, los punteros a punteros.

Día 4) Aprenda cómo funcionan las funciones en C ++, cuáles son los parámetros formales y reales, aprenda qué es la llamada por valor , qué es la llamada por referencia , cómo se diferencian entre sí, dónde debemos llamar por valor y llamar por llamada por referencia.

Día 5) Aprenda sobre las funciones en línea o se llaman Macros en C. Aprenda sobre las funciones recursivas. Aprenda a identificar las condiciones básicas de una recursión y a escribir condiciones generales para la recursividad. Aprenda qué es la recursión de la cabeza y la recursividad de la cola .

Día 6) Aprenda qué es la sobrecarga de funciones (polimorfismo estático) cómo reduce en gran medida el código. Aprenda sobre las funciones de amigo en C ++ .

Día 7) Aprenda sobre la asignación dinámica de memoria, utilizando las palabras clave nuevas y eliminadas en C ++.

Día 8) Implementar el concepto de encapsulación y abstracción de datos aprendiendo el concepto de una Clase y un Objeto.

  • Básicamente, la clase es un contenedor de cookies, y el objeto es una cookie. Por lo tanto, la clase por sí sola no tiene valor a menos y hasta que haga una cookie (instanciarla).
  • O piense en la clase como un plano para las casas y un objeto como una casa. Si tenemos la impresión azul, podemos tener varias casas.
  • Juega creando tu propia clase y llamando a sus objetos en main ().

Día 9) Aprenda qué son constructores, destructores, constructores parametrizados o sobrecarga de constructores. Aprenda lo que es el constructor de copia. Aprenda lo que es copia superficial y copia profunda . Aprende las diferencias entre la copia profunda y la superficial de 2 objetos. Aprenda qué es un Destructor y cómo se llaman los destructores.

Día 10) Aprenda sobre miembros estáticos y funciones de miembros estáticos. Aprenda sobre el operador de resolución de alcance :: y el uso de la palabra clave ” this” . Aprenda sobre la declaración adelantada de una clase. Aprenda a pasar objetos de clase como parámetros de función.

Día 11) Implementación del concepto de herencia en C ++. Aprenda sobre terminologías de herencia como la clase base y la clase secundaria. Aprenda sobre herencia única, herencia multinivel / jerárquica, herencia múltiple.

Día 12) Aprenda sobre los especificadores de acceso en una clase (pública, protegida y privada ), sus atributos, si cambian cuando se heredan o no, y cosas relacionadas con eso.

Día 13) Aprenda sobre la clase base protegida. Aprenda a implementar la herencia múltiple y la ambigüedad asociada con la clase heredada múltiple que se llama el PROBLEMA DE DIAMANTE en C ++ .

Día 14) Aprenda cómo puede pasar parámetros a constructores de clase base con un ejemplo de programación.

Día 15) Aprenda sobre los espacios de nombres . Conocer el concepto de que el espacio de nombres es un marcador de posición para mantener múltiples clases. Los espacios de nombres son como el nombre completo de las clases. Aprenda sobre la directiva de uso . Aprenda por qué escribimos usando el espacio de nombres estándar;

Día 16) Polimorfismo de tiempo de ejecución: aprenda sobre funciones virtuales, anulación de métodos usando la palabra clave de anulación en C ++, clases abstractas y funciones virtuales puras.

Día 17) Para saber qué es exactamente la unión temprana y tardía . Conocer el uso de la palabra clave final en C ++.

Día 18) Para conocer el concepto de manejo de excepciones en C ++ usando las declaraciones try, catch. Para saber qué son las plantillas en C ++.

Día 19) Conocer la biblioteca de plantillas estándar (STL) que C ++ te proporciona. Obtenga una idea de qué es la metaprogramación de plantilla .

Día 20) Aprenda sobre std :: vectors en C ++ y descubra que son matrices dinámicas. Aprenda sobre las funciones miembro de la clase de vectores como push (), add (), etc.

Día 21) Conozca la biblioteca std :: string que C ++ le proporciona y algunas funciones importantes para los miembros. Como subcadena (), Longitud (), etc.

Día 22) Aprenda qué son las funciones anónimas / expresiones lambda en C ++.

Día 23) Aprenda cómo puede usar directamente los algoritmos STL de C ++ como los algoritmos de clasificación, #include , #include , #include , etc.

Día 24) Aprenda sobre los mapas en C ++, que es como la Estructura de datos de la tabla hash, y las muchas maneras en que son poderosos.

Día 25) Aprenda sobre subprocesos, subprocesos simples y subprocesos múltiples utilizando C ++, que se implementa utilizando el archivo de encabezado “pthread.h”

.

.

Día 47-100)

Día 1) Comience a aprender C #, aprenda qué es C #, por qué la razón detrás de la construcción de C #, qué es Microsoft .NET Class Framework.

Descargue Microsoft Visual Studio Community Edition 2015, que es una imagen ISO, con una versión sin conexión de 3 a 4 GB.

  • Después de descargar simplemente instale Visual Studio Community Edition montándolo a través del Explorador de Windows.
  • Una ventaja adicional es que no tiene que instalar el compilador de Visual C ++ explícitamente y volver a calibrar la ruta, ya que el instalador se encarga de eso. Felicitaciones a Microsoft por hacer eso 🙂
  • Después de la instalación, solo inicie sesión a través de su cuenta de Microsoft, de lo contrario, le molestará con la ventana emergente de la oferta de prueba de 30 días.

Gracias por descargar Visual Studio

Día 2) Escriba su primer programa C #, imprima hello world en Microsoft Visual Studio 2015 Community Edition, compile Hit en el modo de depuración y presione control + f5 en el teclado para ejecutar eso

utilizando el sistema;
Programa de espacio de nombres MyFirstC #
{
Programa de clase
{
vacío estático Main ()
{
Console.WriteLine (“HOLA MUNDO”);
Console.ReadLine ();
}
}
}

Día 3) Conozca los tipos de datos en C #, bool, char, int, long, double, float, decimal y var specifier.

Día 4) Aprenda sobre las operaciones matemáticas proporcionadas por .NET Framework,

Math.Abs ​​(), Math.Ceiling (), Math.Floor (), Math.Max ​​(int, int), Math.Min (int, int), Math.Pow (int, int), Math.Round () , Math.Sqrt ()

Día 5) Conozca las operaciones de números aleatorios: rand.Next();

Día 6) Aprenda sobre construcciones de selección como: if, else if, switch. Aprenda sobre construcciones de bucle como: while, do-while, for, foreach.

Día 7) Aprenda sobre saltos incondicionales y declaraciones de saltos condicionales como continuar, romper y etiquetas en C #.

Día 8) Tome la entrada del teclado usando el método Console.ReadLine() y juegue un poco convirtiendo esa entrada en un entero usando el método Convert.ToInt32(Console.ReadLine());

Día 9) Estudie la System.String class , sepa que los System.String class objects son inmutables (no modificables).

Aprenda los diversos métodos estáticos y no estáticos como:

String.IsNullOrEmpty (), String.IsNullOrWhiteSpace (), string.Length, string.Equals, string.Replace (), string.Remove (), string.Format (), etc.

Día 10) Aprenda sobre las matrices en C #, sepa que son 3 tipos de ellas, matriz 1-D, matriz 2-D, matriz dentada.

Día 11) Aprenda sobre la clase DateTime y la clase TimeSpan para saber cómo usar las marcas de tiempo en un programa.

Día 12) Abstracción y encapsulación en C #:

Aprenda qué es una clase, objeto, método en C #.

  • La clase es un contenedor de métodos relacionados.
  • El objeto es solo una copia impresa de la clase.
  • Escondemos todas las complejidades innecesarias mediante el uso de campos, propiedades y métodos en una clase.
  • Aprenda que los espacios de nombres son como los apellidos de una clase, lo que le permite diferenciarlos.
  • Usamos la directiva using para importar un espacio de nombres.
  • Las propiedades en C # son como atributos que se pueden usar para verificar el valor antes de asignarlo, los campos también son los mismos, pero no podemos verificar los valores.
  • Aprenda que las enumeraciones son un conjunto de constantes enteras a distancia.
  • Aprenda cuál es la diferencia entre copia superficial y copia profunda, cómo el MemberWiseClone() method crea copias superficiales.
  • Aprenda qué son los tipos de valor y los tipos de referencia en C #, qué es el proceso de boxeo y unboxing en C #.
  • Aprenda las diferentes técnicas de paso de parámetros: palabra clave param, palabra clave ref, palabra clave out.

Día 13) Aprenda qué es la herencia en C #.

  • Tipos de herencia: individual, multinivel, jerárquica.
  • Sepa que la herencia múltiple no es compatible con C #. Aprenda interfaces para saber más sobre cómo se admite la herencia múltiple en C #.
  • Aprenda que todas las clases son subclases de la clase System.Object.
  • Aprenda sobre las clases abstractas, override palabras clave y métodos.
  • Aprenda sobre contención y delegación.
  • Aprenda el encadenamiento del constructor usando this .
  • Aprenda a inicializar constructores de clase base utilizando la palabra clave base.
  • Aprenda qué es “is” y “as” palabras clave.

Día 14) Aprenda sobre el manejo de excepciones:

  • Aprenda sobre construcciones para realizar el manejo de excepciones en C # como: try, catch, throw and finally.
  • Aprenda qué es la clase SystemException y la clase ApplicationException.
  • Aprenda a lanzar excepciones personalizadas.
  • Aprenda a leer los seguimientos de pila producidos por el manejo de excepciones.

Día 15) Polimorfismo:

  • Aprenda sobre la sobrecarga de métodos,
  • Aprenda a crear e iterar a través de colecciones ( ArrayList, List, Dictionary, Hash Table, Stacks and queues ) utilizando el foreach loop .
  • Día 16) Conozca algunas interfaces importantes: IEnumerable, IEnumerator, Finalizers and IDispose interface.

Día 17) Aprenda sobre expresiones Lambda / métodos anónimos.

Día 18) Aprenda sobre indexadores y delegados.

Día 19) Aprenda sobre las consultas LINQ.

.

.

.

.

No te rindas, elige una computadora portátil y comienza a codificar, Kudos 🙂