Tutoriales de programación - página 3

 

Constructores de programación orientada a objetos: tipos de constructores que necesita saber (desde los conceptos básicos hasta el dominio)



Constructores de programación orientada a objetos: tipos de constructores que necesita saber (desde los conceptos básicos hasta el dominio)

En este video, discutiremos diferentes tipos de constructores, su propósito y por qué son esenciales en la programación. Proporcionaré ejemplos y explicaré el funcionamiento de fondo de los constructores. Pero antes de sumergirnos, quiero recomendar una herramienta que he estado usando durante años llamada PBS Studio. Es un poderoso analizador de código estático que ayuda a rastrear errores y mejorar la calidad del código. Se integra fácilmente con varios IDE y admite lenguajes como C, C++, C# y Java. Puede encontrar el enlace de descarga e incluso descubrir formas de obtenerlo gratis si es estudiante. Ahora, volvamos al video.

Para comenzar, creemos una clase llamada "Usuario" con miembros públicos: "nombre", "apellido", "edad" y "correo electrónico". Actualmente, asignamos manualmente valores a estas propiedades para cada usuario que creamos. Sin embargo, este enfoque se vuelve poco práctico a medida que crece el número de usuarios.

En su lugar, exploraremos una mejor solución usando Constructores. Los constructores se utilizan para construir objetos y automatizan el proceso de inicialización de las propiedades de los objetos. Comenzaremos explicando el funcionamiento de fondo de los constructores a través de ejemplos.

Para fines de demostración, eliminemos el segundo usuario e imprimamos la información del primer usuario. Al ejecutar el programa, notará que la salida muestra valores vacíos para el nombre, el apellido y el correo electrónico, y un número grande o pequeño para la edad. Exploraremos por qué sucede esto y la ausencia de errores.

El motivo de este comportamiento es el Constructor predeterminado proporcionado por C++. Inicializa propiedades con valores predeterminados, como el gran número que vemos para la edad. Sin embargo, cuando creamos una variable simple, como "prueba", sin inicializarla, encontramos un error porque los tipos simples no tienen constructores predeterminados.

Ahora, examinemos las características de los Constructores. Primero, los constructores tienen el mismo nombre que la clase y no tienen tipo de retorno. En segundo lugar, deben colocarse en la sección pública de la clase. En tercer lugar, los constructores predeterminados no tienen parámetros. Cuarto, C++ genera automáticamente un Constructor predeterminado si no crea uno. Quinto, los constructores parametrizados reciben parámetros para inicializar las propiedades del objeto. Finalmente, un Constructor predeterminado se invoca automáticamente cuando se crea un objeto de esa clase.

Implementemos nuestro propio constructor predeterminado asignando valores predeterminados a las propiedades. Con este cambio, cada vez que creamos un usuario, se invocará nuestro Constructor predeterminado. Ahora, cuando imprimamos la información del usuario, veremos los valores predeterminados que le asignamos.

Continuando, exploremos el segundo tipo de Constructor, el Constructor parametrizado. A diferencia del Constructor predeterminado, el Constructor parametrizado acepta valores específicos como parámetros y los usa para crear instancias de propiedades de objetos. Proporcionaré un ejemplo de un Constructor parametrizado que toma parámetros para firstName, lastName y age.

Con estos parámetros, podemos asignar los valores proporcionados a las propiedades correspondientes. Esto nos permite crear usuarios con información específica directamente durante la creación del objeto.

Eso cubre los conceptos básicos de los constructores y su uso. Estén atentos para más ejemplos e ideas en futuros videos.

OOP Constructors - Types of Constructors You Need to Know (Basics to Mastery)
OOP Constructors - Types of Constructors You Need to Know (Basics to Mastery)
  • 2023.03.21
  • www.youtube.com
📚 Learn how to solve problems and build projects with these Free E-Books ⬇️C++ Lambdas e-book - free download here: https://bit.ly/freeCppE-BookEntire Objec...
 

Funciones y clases de Friend en C++ (Programación para principiantes)



Funciones y clases de Friend en C++ (Programación para principiantes)

En este video, me emociona enseñarles acerca de las funciones de amigos y las clases de amigos en C++. Este concepto de amistad en la programación es similar a la amistad en la vida real. Al igual que sus amigos tienen acceso a áreas privadas de su vida que otros no tienen, las funciones de amigos y las clases de amigos en la programación orientada a objetos tienen acceso a miembros privados y protegidos de una clase.

En este video, aprenderá cómo y cuándo usar las funciones de amigos y las clases de amigos. Para demostrarlo, usaremos Visual Studio Community y también les presentaré una excelente extensión llamada Visual Assist. Puede encontrar el enlace de descarga en la descripción a continuación. Visual Assist es un asistente de codificación inteligente que utilizan muchos desarrolladores profesionales, especialmente para proyectos grandes o desarrollo de juegos con motores como Unreal Engine. Mejora la finalización del código, ofrece sugerencias inteligentes para la refactorización, proporciona fragmentos de código y mejora la navegación y la búsqueda dentro de su proyecto.

Ahora, profundicemos en el tema de las funciones de amigos. Para explicar este concepto, creemos un problema y resolvámoslo usando funciones amigas. Crearemos una clase llamada "EquilateralTriangle" para representar un triángulo con los tres lados de la misma longitud. La clase tendrá variables privadas para la longitud del lado, la circunferencia y el área. También agregaremos un método de establecimiento público para establecer la longitud del lado y calcular la circunferencia y el área dentro de ese método.

Sin embargo, si intentamos acceder a los miembros privados fuera de la clase, encontraremos errores. Una solución es hacer públicos los miembros privados o crear captadores públicos, pero eso los expone a todos. En su lugar, podemos usar funciones de amigos para otorgar acceso de forma selectiva. Crearemos una función global llamada "PrintResults" que imprimirá la circunferencia y el área del triángulo. Al declarar esta función como amiga de la clase EquilateralTriangle, obtiene acceso a los miembros privados.

Pero recuerde, elija las funciones de su amigo con cuidado y evite el uso excesivo para mantener la encapsulación. Además, en C++, también puedes tener clases amigas. Si movemos la función "PrintResults" dentro de una clase llamada "Homework" y la convertimos en una función miembro pública, podemos declarar "Homework" como una clase amiga de "EquilateralTriangle". De esta manera, la clase "Tarea" puede acceder a los miembros privados y protegidos de "EquilateralTriangle".

Es importante tener en cuenta que la amistad en la programación no es mutua ni heredada. Utilice las funciones y las clases de amigos con criterio, y recuerde que la herencia y la sobrecarga de operadores también implican casos de uso comunes para las funciones de amigos. Mire mi video sobre la sobrecarga del operador (vinculado en la descripción) para obtener más información y un ejercicio de tarea relacionado.

Espero que este video le resulte útil para comprender y utilizar funciones y clases de amigos en sus proyectos de programación. ¡Estén atentos para obtener más contenido interesante y no olviden consultar la extensión Visual Assist para Visual Studio!

Friend functions and classes in C++ (Programming for beginners)
Friend functions and classes in C++ (Programming for beginners)
  • 2021.12.21
  • www.youtube.com
📚 Learn how to solve problems and build projects with these Free E-Books ⬇️C++ Lambdas e-book - free download here: https://bit.ly/freeCppE-BookEntire Objec...
 

Destructores en Programación: Demostración Práctica



Destructores en Programación: Demostración Práctica

En este video, te enseñaré sobre los destructores en la programación. Aprenderá qué son los destructores, cómo usarlos y cuándo usarlos. Asegúrate de ver el video completo porque tengo una sorpresa especial para ti al final. Antes de sumergirnos en los destructores, es importante comprender los constructores. Si no está familiarizado con los constructores, mire mi video anterior vinculado aquí y en la descripción.

Los destructores son funciones especiales que se invocan cuando se destruye un objeto. Realizan las tareas de limpieza necesarias, como la liberación de recursos como la memoria o los archivos retenidos por el objeto. No liberar estos recursos puede degradar el rendimiento, la estabilidad y provocar fugas de memoria.

Antes de comenzar a hablar sobre los destructores, quiero presentarles una herramienta que me encanta usar llamada PBS Studio. Es un analizador de código estático que me ayuda a escribir mejor código sin errores. Analiza su código en busca de posibles problemas y errores, lo que le ahorra tiempo y dinero al detectar errores antes de que entren en producción. Es fácil de integrar con los IDE populares y admite varios lenguajes de programación. Puede descargarlo desde el enlace en la descripción y probarlo gratis. Si eres estudiante, consulta su sitio web para ver opciones gratuitas.

Ahora, profundicemos en los destructores. Un destructor es una función especial con un nombre idéntico al de la clase, precedido por una tilde (~). No tiene un tipo de devolución, no recibe ningún parámetro y debe colocarse en la sección pública de su clase. Solo puede haber un destructor por clase.

Para ilustrar los destructores, creemos una clase llamada "Libro" con dos propiedades: "título" y "autor". También crearemos un constructor y un destructor. Recuerde, el destructor debe desasignar cualquier recurso que tenga el objeto.

Dentro del constructor, asignaremos los parámetros pasados a las propiedades correspondientes. Dentro del destructor, mostraremos un mensaje que indica que el destructor fue invocado para un libro específico.

Ahora, vamos a crear algunos objetos de libro para ver cuándo se invocan el constructor y el destructor. Depuraremos el programa y observaremos el orden de invocación.

Si su clase no involucra punteros, el compilador manejará la desasignación de memoria automáticamente. Sin embargo, si está trabajando con punteros, debe desasignar manualmente la memoria en el destructor para evitar pérdidas de memoria. Recuerde usar "delete[] arrayName" para las matrices y establezca los punteros en nullptr después de la desasignación.

Espero que este video te haya ayudado a comprender los destructores y su importancia en la gestión de recursos. En mi próximo video, exploraremos los constructores de copias, así que estad atentos.

Destructors in Programming: Practical Demonstration
Destructors in Programming: Practical Demonstration
  • 2023.03.29
  • www.youtube.com
📚 Learn how to solve problems and build projects with these Free E-Books ⬇️C++ Lambdas e-book - free download here: https://bit.ly/freeCppE-BookEntire Objec...
 

C++ Copiar constructores (tutorial para principiantes + ejemplos prácticos)



C++ Copiar constructores (tutorial para principiantes + ejemplos prácticos)

Hola a todos, bienvenidos a mi canal. En este video, te enseñaré sobre los constructores de copias, que es un tema importante pero confuso para los principiantes. Antes de ver este video, asegúrese de ver mi video anterior sobre diferentes tipos de constructores, incluidos los constructores predeterminados y parametrizados (enlace en la descripción). Además, mira mi video sobre punteros y matrices dinámicas (enlace en la descripción), ya que te ayudará a comprender mejor este tema.

En este video, explicaré todo lo que necesita saber sobre los constructores de copias. Los principiantes a menudo entienden el concepto detrás de los constructores de copias, pero tienen dificultades para comprender cuándo y cómo usarlos, así como los posibles errores y fallas que pueden ocurrir. Cubriré todos estos aspectos paso a paso.

Comencemos examinando el código de mi video anterior. Creé una clase llamada "Libro" con propiedades como título, autor y un puntero llamado "tarifas". El puntero de "tasas" representa una matriz dinámica donde los usuarios pueden ingresar calificaciones para el libro. También hay un "contador de tasas" para realizar un seguimiento del tamaño de la matriz. Si no está familiarizado con los punteros y las matrices dinámicas, le recomiendo ver mi video sobre este tema (enlace en la descripción).

Implementé un constructor parametrizado para la clase Libro, que toma el título y el autor como parámetros y crea un objeto de libro basado en esos valores. También he incluido un destructor, que es importante para liberar la memoria asignada por el constructor. Es crucial usar un analizador de código como PVS-Studio para detectar errores ocultos y debilidades en su código. Personalmente, recomiendo usar PVS-Studio, ya que es efectivo para encontrar errores y brindar sugerencias para solucionarlos. Puedes descargarlo gratis usando el enlace en la descripción.

Ahora, centrémonos en el tema de los constructores de copias. El propósito de un constructor de copias es crear un nuevo objeto basado en un objeto existente. Le permite hacer una copia de un objeto y usarlo para crear uno nuevo. De forma predeterminada, C++ proporciona un constructor de copias predeterminado. Sin embargo, cuando se trabaja con punteros, es necesario crear un constructor de copia personalizado para evitar errores.

Sin un constructor de copia personalizado, el uso de punteros puede generar excepciones y errores. Consideremos el siguiente escenario: quiero crear "Book3" basado en los datos de "Book1". Quiero copiar todas las propiedades de "Book1" para crear "Book3". Aquí es donde entra en juego el constructor de copias.

Para crear un constructor de copia, siga estas reglas:

  1. Debe declararse en la sección pública de la clase.
  2. No tiene un tipo de retorno (ni siquiera nulo).
  3. Su nombre debe coincidir con el nombre de la clase.
  4. Toma un parámetro del mismo tipo de clase, que representa el objeto original.

Vamos a crear el constructor de copia. En el constructor de copias, recibiremos el objeto original como una referencia constante (const Book& original). Esto evita cualquier modificación al objeto original dentro del constructor de copias.

Ahora, abordemos un error común que cometen los principiantes al crear un constructor de copias. El error radica en copiar el puntero directamente en lugar de asignar nueva memoria y copiar el contenido. Si copiamos el puntero, tanto el original como la copia apuntarán a la misma ubicación de memoria. Como resultado, cuando se invoca el destructor, intentará liberar la memoria dos veces, lo que provocará errores.

Para solucionar este problema, debemos asignar nueva memoria para la copia y copiar el contenido del puntero original. En lugar de asignar directamente el puntero, crearemos una nueva matriz dinámica y copiaremos los elementos. Esto asegura que el original y la copia tengan ubicaciones de memoria separadas.

Siguiendo estas pautas, podemos crear un constructor de copia correcto que evite errores relacionados con la memoria.

Espero que esta explicación aclare el concepto de constructores de copias y su importancia.

C++ Copy constructors (beginner-friendly tutorial + practical examples)
C++ Copy constructors (beginner-friendly tutorial + practical examples)
  • 2023.04.19
  • www.youtube.com
This is an OOP tutorial where I'll teach you about copy constructors in C++. After watching this video, you'll learn what is the purpose of copy constructors...
 

¡Codifique usted mismo! Tetris - Programación desde cero (C++ rápido y sencillo)



¡Codifique usted mismo! Tetris - Programación desde cero (C++ rápido y sencillo)

¡Hola! Hoy vamos a embarcarnos en el emocionante viaje de crear nuestra propia versión de Tetris. Antes de profundizar en la codificación, déjame darte un adelanto de lo que construiremos.

Como puede ver, tenemos una forma clásica de Tetris en la pantalla. Podremos rotar estas formas, gracias al poder de la codificación. El juego incluye detección de colisiones, lo que garantiza que las piezas interactúen correctamente entre sí. Si conseguimos completar una línea colocando estratégicamente las piezas aleatorias, esta desaparecerá y nuestra puntuación aumentará en consecuencia. Sin embargo, si no tenemos cuidado y la pila de piezas llega a la parte superior, se acabó el juego.

Ahora, quizás se pregunte por qué nos enfocamos en el motor del juego en lugar de los gráficos. Si bien la estética es importante y puede atraer a los jugadores, la verdadera esencia de un juego radica en su motor, la parte responsable de implementar el juego, la lógica, las reglas, los desafíos y más. Los motores de gráficos siempre se pueden agregar más tarde, e incluso puedes traer a un artista para embellecer tu juego. Pero para comprender verdaderamente el desarrollo de juegos, debe comprender los fundamentos de la creación de un motor de juego.

Para comenzar, necesitamos algunos recursos del juego. En Tetris, estos activos son las diferentes formas llamadas "bloques de tetromino". Guardaremos estas formas como cadenas, lo que nos facilitará visualizarlas. Hay siete formas comunes que se usan en Tetris, y las representaremos usando caracteres como puntos (.) para espacios vacíos y X mayúscula para la forma en sí. Al organizar estos caracteres, creamos cadenas que representan visualmente las formas.

Ahora, en lugar de usar arreglos multidimensionales para representar las formas 2D, emplearemos un arreglo unidimensional y manipularemos los índices usando cálculos matemáticos simples. Este enfoque nos permite manejar las rotaciones y los reflejos de las formas de manera más eficiente. Usaremos fórmulas para determinar los índices apropiados para cada rotación. Por ejemplo, al multiplicar la coordenada X por 4, podemos obtener el índice deseado para una rotación de 90 grados. Esta técnica nos evitará crear activos separados para cada variación de forma posible.

Aparte de los bloques de tetrominó, también necesitamos un campo de juego. Definiremos las dimensiones del campo usando variables para ancho y alto. En este caso, usaremos un tamaño de campo de 12 celdas de ancho y 18 celdas de alto. Para representar los elementos del campo de juego, usaremos una matriz de caracteres sin firmar. A cada celda se le asignará un valor para indicar su contenido, como un espacio vacío, parte de una forma o los muros delimitadores.

Para visualizar nuestro juego, utilizaremos el símbolo del sistema como un búfer de pantalla. Al crear una matriz con las dimensiones de la ventana del símbolo del sistema, podemos dibujar los elementos de nuestro juego en ella. Usaremos personajes específicos para representar diferentes elementos del juego, como las formas, los espacios vacíos y los muros delimitadores. Luego, mostraremos el contenido de la matriz en la pantalla del símbolo del sistema.

Ahora, hablemos del bucle del juego. Los bucles de juego son componentes vitales de cualquier motor de juego, ya que controlan la secuencia de los elementos del juego. En el caso de Tetris, nuestro bucle de juego manejará el tiempo, la entrada del usuario, la lógica del juego y la representación de salida.

El tiempo es crucial para garantizar un juego consistente en diferentes sistemas. Queremos que el juego se ejecute al mismo ritmo, independientemente de la velocidad de la computadora. Usaremos mecanismos de tiempo para controlar la velocidad a la que caen las formas y las actualizaciones del juego.

A continuación, abordaremos la entrada del usuario. Dado que estamos creando una versión simple de línea de comandos de Tetris, no confiaremos en la entrada basada en eventos. En cambio, manejaremos la entrada básica del usuario, como las teclas de flecha u otras teclas designadas.

En este código, implementaremos el manejo de entrada de teclado para un juego, enfocándonos específicamente en cuatro teclas: la flecha izquierda, la flecha derecha, la flecha hacia abajo y la tecla "Z" para rotar la pieza del juego.

Para obtener el estado actual de las teclas presionadas por el usuario, utilizaremos la función "obtener estado de tecla asíncrona". Al iterar a través de una matriz que representa el estado de las teclas, podemos determinar si cada tecla está presionada actualmente o no. Esta función devuelve un valor booleano: verdadero si se presiona la tecla y falso si no se presiona. Para verificar el estado de una tecla específica, usamos una expresión de cadena constante que representa los códigos de tecla virtual para cada tecla.

Al verificar el estado de estas cuatro teclas, podemos crear una matriz que contenga valores verdaderos o falsos que indiquen si cada tecla está presionada o no. Esto simplifica el proceso y nos da una matriz que representa el estado actual de las claves.

Consideremos la tecla izquierda como ejemplo. Cuando el usuario presiona la tecla izquierda, debemos verificar si la pieza del juego puede caber a la izquierda de su posición actual. Para hacer esto, utilizamos una función llamada "encaja la pieza", que considera la pieza actual, su rotación y la posición X actual. Restando 1 de la posición X actual, podemos determinar si la pieza encaja a la izquierda. Si encaja, actualizamos la posición X actual en consecuencia.

De manera similar, para la tecla derecha, realizamos una verificación similar para ver si la pieza puede encajar a la derecha de su posición actual. Si es posible, actualizamos la posición X actual en consecuencia.

Cuando el usuario presiona la tecla de abajo, necesitamos manejar el movimiento vertical de la pieza. Como la posición superior izquierda del campo de juego siempre es (0, 0), simplemente podemos incrementar la posición Y para mover la pieza hacia abajo. Realizamos comprobaciones para asegurarnos de que mover la pieza hacia la izquierda, hacia la derecha o hacia abajo la mantiene dentro de los límites del campo de juego.

Para optimizar el código, podemos reemplazar las declaraciones if anidadas con operadores lógicos AND. Esto simplifica el código y mejora su concisión. Además, utilizamos declaraciones condicionales para sumar o restar 1 de la posición X actual en función del resultado de la condición, lo que agiliza aún más el código. La misma optimización se aplica al manejar la rotación de la pieza cuando el usuario presiona la tecla "Z".

En Tetris, el juego obliga periódicamente a la pieza a moverse hacia abajo cada pocas décimas de segundo, simulando la gravedad. Logramos esto utilizando el contador de ticks del juego. Inicialmente, la pieza cae lentamente, pero a medida que avanza el juego, disminuimos el tiempo entre la caída de cada pieza, lo que hace que el juego sea más rápido y desafiante. Al acumular los ticks del juego y compararlos con la velocidad actual, determinamos cuándo forzar la pieza hacia abajo. Esto da como resultado que la pieza caiga a intervalos regulares, creando el efecto de la gravedad en el juego.

Para bloquear la pieza actual en el campo de juego, actualizamos la matriz de campo con los valores de la matriz de tetromino. Esto se hace iterando a través de cada elemento de la matriz de tetromino y actualizando la posición correspondiente en la matriz de campo. Si un elemento en la matriz de tetromino es una "X", incrementamos el valor correspondiente en la matriz de campo en 1. Esto marca esa posición como ocupada por la pieza actual.

Cuando se forma una línea en el campo de juego, queremos indicarlo visualmente al jugador. Reemplazamos la línea con un marcador especial o realizamos cualquier otro efecto visual para indicar la finalización de la línea.

Después de indicar visualmente la línea completa, debemos manejar la limpieza de la línea y actualizar el campo de juego en consecuencia. Recorremos cada fila del campo de juego comenzando desde abajo y verificamos si la fila está llena. Si se llena una fila, la borramos estableciendo todos sus elementos en 0. Luego, movemos todas las filas por encima de ella una posición hacia abajo para llenar la fila borrada. Este proceso se repite hasta que se hayan borrado todas las filas llenas.

Para realizar un seguimiento de la puntuación del jugador, la incrementamos cada vez que se borra una línea. La puntuación puede basarse en la cantidad de líneas completadas o puede tener un sistema de puntuación más complejo según el diseño del juego.

Para manejar las condiciones del fin del juego, debemos verificar si la pieza actual puede caber en su posición inicial en la parte superior del campo de juego. Si no cabe, el juego termina y detenemos el bucle del juego o activamos las acciones de fin del juego necesarias.

Por último, para manejar el ciclo del juego, utilizamos un temporizador o un mecanismo similar que activa una función de actualización a intervalos regulares. Esta función maneja la actualización del estado del juego, incluida la verificación de la entrada del usuario, el movimiento hacia abajo de la pieza y la realización de las acciones necesarias según el estado actual del juego.

En resumen, este código implementa el manejo de entrada de teclado para un juego, centrándose específicamente en teclas como las teclas de flecha y la tecla "Z". Verifica el estado de estas teclas, maneja el movimiento de la pieza del juego en consecuencia, implementa la gravedad y el bloqueo de la pieza, borra las líneas completadas, actualiza el campo de juego, rastrea la puntuación del jugador y verifica las condiciones del fin del juego. El bucle del juego garantiza que el estado del juego se actualice a intervalos regulares, creando una experiencia de juego dinámica e interactiva.

Code-It-Yourself! Tetris - Programming from Scratch (Quick and Simple C++)
Code-It-Yourself! Tetris - Programming from Scratch (Quick and Simple C++)
  • 2017.04.03
  • www.youtube.com
I mentioned in an earlier video that programming a Tetris clone is a good way to get going with programming as it makes you think about algorithms. Putting m...
 

CURSO COMPLETO DE C++ Para Principiantes (Aprende C++ en 10 horas)


CURSO COMPLETO DE C++ Para Principiantes (Aprende C++ en 10 horas)

Este es un curso completo de programación en C++. Consiste en muchas conferencias cuyo objetivo es llevarte desde el nivel principiante hasta el nivel avanzado de programación. Recomiendo ver el video completo porque las conferencias posteriores requieren conocimientos de las anteriores.

Contenido:
00:00:00
– Objetivos del curso
00:01:31 – Haz esto antes de empezar el curso
00:02:41
– Introducción a C++ (¿Qué es C++? ¿Qué tipo de aplicaciones puedes crear con C++? ¿Por qué se creó C++?)
00:06:39 – ¿Qué es código fuente, código objeto, compilador, algoritmo?
00:08:42
- Visual Studio 2019: creación de un primer proyecto (configuración)
00:11:32 - Explicación de los conceptos básicos de Visual Studio 2019 y primer programa "Hello World"
00:29:51
- Introducción a las variables
00:44:36 – Reglas para nombrar variables
00:52:15
– Tipos de datos en C++ y cómo usar el operador sizeof
01:01:58
- Desbordamiento de tipo de datos
01:05:00 – ¿Qué es la tabla ASCII?
01:09:50
- Programa simple y divertido para cifrar palabras en ASCII
01:18:12 - Sentencia if/else (Crea un programa que verifique números pares/impares + explicación del diagrama de flujo)
01:35:52 - Instrucción if/else anidada (Crea un programa que determine el tipo de un triángulo + diagrama de flujo)
01:55:50 - Operadores en C++ (operadores aritméticos, relacionales, lógicos, de asignación)
02:21:02 - Intercambio de valores de dos variables con o sin una tercera variable
02:29:20 - Crear aplicación de calculadora de IMC + diagrama de flujo
02:49:55 - Operador ternario (condicional) (crear una aplicación de juego de adivinanzas)
03:01:00 - Declaración de cambio/caso, parte 1 (aplicación Build Calculator)
03:26:36 - Declaración de cambio/caso, parte 2 (Programa de compilación que verifica la cantidad de días en un mes)
03:39:35
- Ciclo while parte 1 + ejemplo de ciclo infinito
03:53:39 - Ciclo while parte 2 (Crea un programa para contar los dígitos de un número)
04:12:39
- Ciclo while parte 3 (Crea un programa para invertir los dígitos de un número)
04:25:25
- Bucle Do while (Programa para validación de PIN)
04:39:09 – ¿Cuál es la diferencia entre el bucle Mientras y el bucle Do Mientras?
04:40:34 - Bucle For (Crea un programa para calcular el factorial de un número)
04:58:12 – Bucles anidados (anidado do while loop y for loop)
05:11:08 – Bucle for anidado (aplicación de creación de tablas de multiplicación)
05:21:45 – Programa para dibujar forma de rectángulo
05:33:05 – Programa para dibujar triángulos y formas de triángulos invertidos/invertidos
05:44:30 – Introducción a las funciones
05:56:02 – Funciones con parámetros/argumentos (múltiples y predeterminados)
06:11:42
- Declaración de retorno de función (Programa de compilación para verificar números primos)
06:37:39
- Sobrecarga de funciones
06:48:06 - Crear aplicación de cajero automático
07:03:03 - Funciones y plantillas genéricas
07:14:30 – Recursividad y funciones recursivas
07:30:01
– Introducción a OOP, ¿Qué son las clases y los objetos?
07:42:06
– Constructores OOP y métodos de clase
07:57:10 – Encapsulación OOP, GIT: https://github.com/TrueCodeBeauty/EncapsulationCpp
08:08:31 – Herencia OOP, GIT: https://github.com/TrueCodeBeauty/InheritanceCpp
08:24:59 – Polimorfismo orientado a objetos, GIT: https://github.com/TrueCodeBeauty/PolymorphismCpp
08:40:04 - Introducción a los punteros
08:51:14 - Indicadores de vacío
09:06:27 - Punteros y matrices
09:19:18
- Devuelve múltiples valores de una función usando punteros
09:34:50
- Arreglos dinámicos, crear/cambiar arreglos en tiempo de ejecución
09:48:35 – Arreglos dinámicos multidimensionales, arreglo bidimensional
10:07:00
- Detección de errores en el código usando PVS Studio
10:17:19 - Explicación de las fugas de memoria
10:26:25 - Errores
C++ FULL COURSE For Beginners (Learn C++ in 10 hours)
C++ FULL COURSE For Beginners (Learn C++ in 10 hours)
  • 2021.01.11
  • www.youtube.com
This is a full C++ programming course. It consists of many lectures whose goal is to take you from beginner to advanced programming level.I recommend watchin...
 

FUNCIONES C++ (2020) - ¿Qué son las funciones?


FUNCIONES C++ (2020) - ¿Qué son las funciones? TUTORIAL DE PROGRAMACIÓN

¡Bienvenidos al primer video de mi canal! Si es un principiante en C++, asegúrese de consultar mi lista de reproducción en C++ para principiantes, donde puede encontrar conceptos importantes que necesita comprender y saber para trabajar con C++. En este video, discutiremos las funciones de C++, que son esenciales para convertirse en un buen programador no solo en C++ sino en la mayoría de los lenguajes de programación.

Antes de comenzar, suscríbete a mi canal y haz clic en el ícono de campana para recibir notificaciones cuando publique mi próximo video. Si está interesado en ver contenido detrás de escena y cómo se ve realmente la vida del desarrollador, sígame en Instagram y Twitter a través de mis cuentas "CodeBeauty".

Ahora, profundicemos en el tema de las funciones. Una función es un bloque de código que se agrupa para resolver un problema específico o realizar una tarea específica. El código dentro de una función se ejecuta solo cuando se llama o se invoca la función. Cada programa C++ contiene al menos una función, que es la función principal. La ejecución de su programa comienza en la primera línea de la función principal y termina en la última línea o cuando se encuentra una declaración de retorno (cubriremos las declaraciones de retorno más adelante en este curso).

Para crear su propia función, hay algunas cosas que necesita saber. Primero, debe especificar el tipo de devolución de la función. Por ahora, usaremos el tipo de devolución "vacío", lo que significa que la función no devuelve nada. A continuación, le das un nombre a tu función. Dentro de los paréntesis, puede definir cualquier argumento o parámetro que reciba su función. En este caso, no tendremos argumentos, por lo que los paréntesis están vacíos. Finalmente, define el cuerpo de la función entre corchetes.

En nuestro ejemplo, hemos creado una función llamada "función" con un tipo de retorno nulo y sin argumentos. Dentro del cuerpo de la función, usamos la declaración "cout" para mostrar "Hola desde la función" y agregar una línea final. Sin embargo, la simple creación de la función no ejecuta su código. Para ejecutar la función, debe invocarla o llamarla. En nuestro caso, llamamos a la función después de la instrucción "cout" en la función principal escribiendo su nombre seguido de paréntesis.

Después de compilar y ejecutar el programa, verá el resultado "Hola desde la página principal" seguido de "Hola desde la función". Esto se debe a que la función principal se ejecuta primero y luego la función que creamos se ejecuta cuando se invoca.

Para que su código sea más legible, se recomienda declarar y definir sus funciones por separado. La declaración incluye el tipo de devolución, el nombre de la función y cualquier parámetro, y debe colocarse antes de la función principal. La definición, que contiene el cuerpo de la función, se coloca después de la función principal. De esta manera, si alguien más está leyendo su código, puede navegar fácilmente a la función específica que necesita comprender.

Recuerda que las funciones hacen que tu código sea reutilizable. En lugar de escribir el mismo código varias veces, puede escribirlo una vez dentro de una función e invocar esa función cuando la necesite. Esta práctica ayuda a reducir la redundancia y hace que su código sea más fácil de administrar.

En futuros videos, exploraremos las funciones con más detalle. No olvides suscribirte a mi canal y habilitar las notificaciones para mantenerte actualizado con el próximo contenido. ¡Gracias por mirar, y nos vemos en el próximo video!

C++ FUNCTIONS (2020) - What are functions? PROGRAMMING TUTORIAL
C++ FUNCTIONS (2020) - What are functions? PROGRAMMING TUTORIAL
  • 2020.06.11
  • www.youtube.com
This is the introduction video of the "C++ functions" course. In this video, I'm explaining what are C++ functions, how functions are created, when they're u...
 

FUNCIONES C++ (2020) - ¿Qué es el parámetro/argumento de función (múltiple, predeterminado) TUTORIAL DE PROGRAMACIÓN


FUNCIONES C++ (2020) - ¿Qué es el parámetro/argumento de función (múltiple, predeterminado) TUTORIAL DE PROGRAMACIÓN

¡Hola a todos! Bienvenido de nuevo a mi canal. Si eres un principiante en C++, me alegro de que estés aquí. Antes de sumergirnos en el tema de hoy, quiero recordarles que consulten mi lista de reproducción de C++ para principiantes. Cubre conceptos esenciales e incluye muchos ejercicios para ayudarte a practicar. Además, no olvides suscribirte a mi canal y hacer clic en el ícono de la campana para recibir notificaciones cada vez que publique un nuevo video. También puede seguirme en mis perfiles de redes sociales, CodeBeauty Instagram y Twitter, para echar un vistazo a la vida de un desarrollador. Muy bien, sin más preámbulos, pasemos a la lección de hoy.

En este video, quiero discutir los parámetros o argumentos de las funciones de C++. Entonces, ¿qué son exactamente los parámetros y argumentos? Si no ha visto mi video anterior sobre las funciones de C++, le recomiendo que lo revise (enlace provisto). A veces, una función necesita recibir un valor o variable específica para realizar una tarea en particular. Estos valores o variables se denominan parámetros.

Ahora, aprendamos cómo crear una función que acepte parámetros en C++. Para hacer esto, definimos una función con un tipo de retorno de vacío. Llamemos a la función "Preséntame". Dentro de los paréntesis especificamos los parámetros que recibirá la función. El cuerpo de nuestra función estará encerrado entre corchetes.

Para definir un parámetro, comenzamos indicando el tipo del parámetro, seguido de su nombre. En nuestro caso, queremos pasar el nombre de nuestro usuario a la función, por lo que el parámetro será de tipo cadena. Llamaremos al parámetro "nombre". Luego, la función presentará a nuestro usuario imprimiendo "Mi nombre es" seguido del nombre provisto.

Para invocar o llamar a nuestra función, simplemente usamos su nombre, "preséntame". Dado que nuestra función requiere un argumento (el parámetro de nombre), debemos pasar un valor al llamar a la función. En este caso, pasemos el nombre "Selena" como argumento.

Cuando ejecutamos el programa, la función introducirá con éxito al usuario con el nombre proporcionado. Imprimirá "Mi nombre es Selena" como se esperaba.

Si queremos presentar varios usuarios, podemos volver a llamar a la función con diferentes argumentos. Por ejemplo, podemos copiar la línea de invocación y pasar un nombre diferente, como "Anna". La función luego presentará a ambos usuarios en consecuencia.

Ahora, exploremos pasar múltiples argumentos a una función. Para ello, separamos los parámetros con comas. Además del parámetro de nombre, agreguemos dos parámetros más: ciudad (de tipo cadena) y edad (de tipo int). Modificaremos la función para incluir también información sobre la ciudad y la edad del usuario.

Dentro de la función, usaremos "cout" de C++ para imprimir la ciudad y la edad del usuario junto con su nombre. Estructuraremos la salida de la siguiente manera: "Soy de [ciudad] y tengo [edad] años".

Cuando invocamos la función, pasamos los valores de los tres parámetros: nombre, ciudad y edad. Por ejemplo, podemos llamar a la función y pasar "Selena" como nombre, "Moscú" como ciudad y 25 como edad. La función presentará al usuario toda la información proporcionada.

Podemos repetir el proceso para un segundo usuario. Pasemos "Anna" como nombre, "Nueva York" como ciudad y 27 como edad. Cuando ejecutemos el programa, veremos que ambos usuarios han sido presentados con sus respectivos datos.

A continuación, exploremos los parámetros predeterminados. A veces, es posible que desee definir un valor predeterminado para un parámetro. Este valor se utilizará si no se proporciona ningún argumento para ese parámetro al llamar a la función.

Para especificar un valor predeterminado, lo asignamos durante la declaración de parámetros. Por ejemplo, establezcamos el valor predeterminado para el parámetro "edad" en 18. Ahora, si llamamos a la función sin proporcionar una edad, asumirá el valor predeterminado.

Invoquemos la función para un tercer usuario, pasando solo el nombre y la ciudad, pero omitiendo la edad. Como era de esperar, la función presentará al usuario con el valor de edad predeterminado de 18.

Eso concluye nuestra discusión sobre los parámetros y argumentos de las funciones de C++. Espero que este video le haya resultado útil y que tenga una sólida comprensión de cómo trabajar con parámetros de funciones en C++. Si tiene alguna pregunta o necesita más aclaraciones, deje un comentario a continuación y estaré encantado de ayudarle. Estén atentos para más tutoriales de C++, y no se olviden de dar me gusta y compartir este video si lo encontraron valioso. ¡Gracias por mirar y feliz codificación!

C++ FUNCTIONS (2020) - What is function parameter/argument (multiple, default) PROGRAMMING TUTORIAL
C++ FUNCTIONS (2020) - What is function parameter/argument (multiple, default) PROGRAMMING TUTORIAL
  • 2020.06.15
  • www.youtube.com
In this video of the "C++ functions" course, I'm explaining what are function parameters/arguments, how to pass arguments to a function, and how to invoke a ...
 

FUNCIONES C++ (2020) - Declaración de devolución de funciones, cómo verificar el número primo


FUNCIONES DE C++ (2020) - Declaración de devolución de funciones, cómo verificar el número primo TUTORIAL DE PROGRAMACIÓN

Hola a todos, bienvenidos a mi canal. En este video, quiero hablar sobre declaraciones de retorno y tipos de funciones de retorno en C++. Si es un principiante, asegúrese de consultar mi curso de C++ para principiantes, que proporciona ejemplos útiles para ayudarlo a comenzar a aprender C++. No olvides suscribirte a mi canal y hacer clic en la campana de notificaciones para mantenerte actualizado sobre nuevos videos. Además, si está interesado en convertirse en desarrollador y obtener información sobre la vida del desarrollador, sígame en Instagram y Twitter en @truecodebeauty (enlaces en la descripción del video). Sin más preámbulos, vamos a sumergirnos en el tema de hoy.

Un tipo de retorno de una función puede ser cualquier tipo de datos, incluidos los tipos de datos int, float, bool, char, double o incluso definidos por el usuario. También puede ser nulo, lo que indica que la función no devuelve nada. En videos anteriores, expliqué que una función es un bloque de código diseñado para realizar una tarea específica. Las funciones se pueden clasificar en dos tipos: las que devuelven un valor y las que no.

Las funciones que no devuelven un valor suelen realizar una acción específica, como mostrar un menú al usuario. Por otro lado, las funciones que devuelven un valor se utilizan para realizar cálculos u operaciones y proporcionar un resultado. Es importante tener en cuenta que una función solo puede devolver un valor, y una vez que se encuentra la declaración de devolución, la ejecución de la función se detiene.

Para ilustrar la importancia de las funciones, consideremos un ejemplo sin usar funciones. Crearemos un programa para determinar si un número es primo o no. Un número primo es divisible solo por uno y por sí mismo. Primero, le pediremos al usuario que ingrese un número. Luego, recorreremos todos los números entre 2 y el número ingresado por el usuario menos 1. Si el número es divisible por cualquiera de estos valores, no es primo. De lo contrario, es primo. Finalmente, mostraremos el resultado.

Ahora, refactoricemos el programa usando funciones para hacer que el código sea más legible y reutilizable. Crearemos una función llamada "isPrimeNumber" que toma un argumento entero y devuelve un valor booleano que indica si el número es primo o no. Dentro de la función, implementaremos la misma lógica que antes, verificando la divisibilidad y configurando una bandera en consecuencia. Finalmente, devolveremos el valor de la bandera.

Mediante el uso de funciones, podemos encapsular la lógica para determinar los números primos, lo que hace que el código sea más fácil de entender y reutilizar.

C++ FUNCTIONS (2020) - Functions return statement, How to check prime number PROGRAMMING TUTORIAL
C++ FUNCTIONS (2020) - Functions return statement, How to check prime number PROGRAMMING TUTORIAL
  • 2020.06.29
  • www.youtube.com
In this video of the "C++ functions" course, I'm explaining what is the function return type. I'll show you how to return value from a function on an example...
 

FUNCIONES C++ (2020) - ¿Qué es la sobrecarga de funciones? TUTORIAL DE PROGRAMACIÓN


FUNCIONES C++ (2020) - ¿Qué es la sobrecarga de funciones? TUTORIAL DE PROGRAMACIÓN

¡Hola a todos! Bienvenido de nuevo a mi canal. En el video de hoy, profundizaremos en el concepto de sobrecarga de funciones en C++. La sobrecarga de funciones nos permite crear múltiples funciones con el mismo nombre pero diferentes parámetros. Entonces, exploremos qué es la sobrecarga de funciones y cómo funciona.

Para comenzar, abramos nuestro Visual Studio y creemos una función llamada "suma". Comenzaremos definiendo el tipo de retorno de nuestra función, que será un número entero. Si no está familiarizado con los tipos de devolución, le recomiendo ver mi video sobre el tema (enlace provisto). A continuación, especificaremos el nombre de nuestra función como "suma" y declararemos dos parámetros. Ambos parámetros serán de tipo entero, y los nombraremos "a" y "b" respectivamente.

Ahora, vamos a crear otra función con el mismo nombre, "suma", pero esta vez con un tipo de retorno de doble. Declararemos dos parámetros de tipo doble, llamados "a" y "b".

Además, vamos a crear una tercera función llamada "suma" con un tipo de valor de retorno flotante. Esta vez, pasaremos tres parámetros, todos los cuales serán de tipo flotante. Los nombraremos "a", "b" y "c" respectivamente.

Después de declarar nuestras funciones, notamos que están subrayadas, lo que indica que les faltan sus definiciones. Procedamos proporcionando las definiciones para cada función. Comenzaremos con la primera función que devuelve un número entero.

Dentro de las llaves, definiremos una variable llamada "resultado" de tipo int. Le asignaremos el valor de "a + b", que representa la suma de los dos parámetros. Finalmente, usaremos la palabra clave "return" para devolver el valor de "resultado" de la función.

Alternativamente, en lugar de crear una variable separada, podemos devolver directamente la suma de "a" y "b" sin asignarla a una variable. Esto puede hacer que el código sea más corto y más legible.

A continuación, definamos la segunda función que devuelve un doble. Copiaremos la declaración, agregaremos las llaves y, dentro, usaremos la palabra clave "return" seguida de "a + b". Dado que los parámetros son de tipo doble, la suma se realizará con precisión doble.

Ahora, definamos la tercera función que devuelve un flotante. Copiaremos la declaración, agregaremos las llaves y, dentro, usaremos la palabra clave "return" seguida de "a + b + c". Nuevamente, dado que todos los parámetros son de tipo flotante, la suma se realizará en consecuencia.

Para probar nuestras funciones, las invocaremos en la función "principal". Usaremos la instrucción "cout" para mostrar los resultados. Comencemos llamando a la primera función, "suma", y pasando dos valores enteros, como 4 y 3. Daremos salida al resultado usando "cout" y terminaremos la línea.

Cuando ejecutamos el programa, podemos esperar ver el resultado de sumar 4 y 3, que debería ser 7. Si el programa se ejecuta con éxito, hemos probado nuestra primera función.

A continuación, probemos la segunda función llamando a "sum" y pasando dos valores dobles, como 4.4 y 3.3. Nuevamente, mostraremos el resultado usando "cout" y finalizaremos la línea.

Cuando ejecutamos el programa, deberíamos ver el resultado de sumar 4.4 y 3.3, que debería ser 7.7. Si la salida es correcta, hemos probado con éxito nuestra segunda función.

Finalmente, probemos la tercera función llamando a "sum" y pasando tres valores flotantes, como 4.4, 3.3 y 2.2. Mostraremos el resultado usando "cout" y terminaremos la línea.

Ejecutar el programa debería mostrar el resultado de sumar 4.4, 3.3 y 2.2, que debería ser la suma correcta. Verifique la salida usando una calculadora si es necesario.

En resumen, lo que hemos demostrado aquí es la sobrecarga de funciones. Creamos tres funciones con el mismo nombre, "suma", pero con diferentes parámetros y tipos de devolución. La primera función toma dos enteros, la segunda toma dos dobles y la tercera toma tres flotantes. Cuando invocamos estas funciones, el compilador determina la función adecuada para llamar en función de los argumentos proporcionados.

La sobrecarga de funciones nos permite escribir código más conciso y legible usando el mismo nombre para funciones que realizan tareas similares. No necesitamos crear funciones separadas con diferentes nombres para cada variación.

Espero que ahora comprenda el concepto de sobrecarga de funciones y cómo puede ser útil en C++. Si disfrutaste este video, suscríbete a mi canal y haz clic en el icono de la campana para recibir notificaciones de futuros videos. También puedes seguirme en mis otras plataformas de redes sociales (enlaces proporcionados en la descripción).

Gracias por mirar, y te veré en mi próximo video. ¡Adiós!

C++ FUNCTIONS (2020) - What is function overloading? PROGRAMMING TUTORIAL
C++ FUNCTIONS (2020) - What is function overloading? PROGRAMMING TUTORIAL
  • 2020.07.17
  • www.youtube.com
Function overloading is the ability to create multiple functions that have the same name but different implementations. In this video of the C++ programming ...