Diagrama de temas

  • BIENVENIDA


    ¡Bienvenidos a todos a Programación II!

    Ya superaron los fundamentos, y ahora es momento de subir el nivel. Este semestre nuestro aliado es Visual C#. Vamos a explorar el desarrollo orientado a objetos, interfaces gráficas y la lógica detrás de aplicaciones profesionales.

    ¿Por qué C#? Porque es el motor de grandes soluciones en el mundo empresarial y de videojuegos. Prepárense para ensuciarse las manos con código, realizar proyectos prácticos y, sobre todo, aprender haciendo.

    Mi puerta (y mi chat) siempre estarán abiertos para resolver dudas. ¡Vamos a hacer de este semestre algo increíble!



  • COMPETENCIA ESPECíFICA

    El docente debe informar la competencia especifica de la asignatura 

    • Tema actual

      DATOS DEL DOCENTE:

      Profesor: MINERVA TABORDA

      Sección Según la Especialidad: PROGRAMACIÒN II 

      Semestre: SEGUNDO

      Datos de Contacto: 

        *  Número de Teléfono: 04244329119

        *  WhatsApp: 04244329119

        *  Correo: TABORAMINERVA@GMAIL.COM

      HORARIO DE ASESORÍA:

      Asesoría: Explicación para actividades o contenidos asignados.

       – De 3:00 AM A 7:00 PM 


      Observación:

      • DISTRIBUCIÓN DEL PRIMER SEMESTRE

        EL DOCENTE asignara en esta sección el formato de planificación de la asignatura 

        • I CORTE O MODULO: LENGUAJE Visual C#

          Obtener .NET y configurar tu IDE o editor para trabajar con C#

          C# es un lenguaje de programación modernoinnovadorde código abiertomultiplataforma orientado a objetos y uno de los 5 principales lenguajes de programación de GitHub.

          Si usas Visual Studio Code para comenzar a desarrollar con C# simplemente necesitarás crear una carpeta y trabajar en ella, creando tus archivos con código en C#, que tendrán la extensión ".cs".

          Si usas Visual Studio 2012

          1.- Creación de un Proyecto en C# 

           - Nuevo Proyecto: Menú Archivo > Nuevo Proyecto > Visual C# > Windows Forms Application o Console Application.

          windows forms para dieño de formulario y consola application para trabajar con la Interfaz de Línea de Comandos

          1. Estructura: El archivo Program.cs contiene el método Main (punto de entrada).
          2. Diseño: Arrastrar controles desde la barra de herramientas al Formulario. esta se encuentra del lado izquierdo  (Form1.cs [Design]).
          3. Barra de propiedades de controles, esta se encuentra del lado derecho y te permite cambiar editar os controles (color, tamaño, tipo de letra y lo mas importante darle un nombre para poderlos manipular dentro de nuestro código de funcionamiento.



          Visual C Sharp para Windows - Descarga gratis en Uptodown

          Controles Principales

          Label: son etiquetas en una ventana para proporcionar información al usuario, como títulos, descripciones o mensajes, sin permitir interacción directa de edición por parte del usuario.

          Texbox:  (cuadro de texto)  es un componente o control que puedes usar para introducir datos por el teclado y mostrar datos.

          Button: son los que realizan la acciòn ejemplo cuando entrar al correo introduce tu usuario, una contgraceña y luego pulsas el boton aceptar que te lleva al correo.


          Datos fundamentales para programar en C#

          1 tipo de datos de una variable en #

          Los tipos de coma flotante pueden representar números con componentes fraccionales. Existen dos clases de tipos de coma flotante: float y double. El tipo double es el más utilizado porque muchas funciones matemáticas de la biblioteca de clases de C# usan valores double. Quizá, el tipo de coma flotante más interesante de C# es decimal, dirigido al uso de cálculos monetarios.

          Los caracteres en C# no tienen un tamaño de 8 bits como en otros muchos lenguajes de programación, sino que usa un tamaño de 16 bits llamado Unicode al cual se le llama char.


          Practiquemos:

          Mi primer Programa en C#

          crea un nuevo proyecto 



          Arrastar al formulario un label, textBox y un Button 



          selecciona el label y en las propiedades que se encuentran a la derecha ubica el TEXT y coloca allí (ingresa tu nombre) 

          para que se vea dentro del label.

          luego selecciona el button y dale doble clic para que te abra la ventana de codificar para accionar el button 



          Coloca el siguiente codigo:   

          string NOMBRE = textBox1.Text;

              MessageBox.Show("Binvenido a Programacion I"+ "  "+ NOMBRE);

          finalmente compilamos dando un clic a la flecha verde que e encuentra en la barra de herramientas de visual 


          Agrego mi nomgre al TextBox y pulso elboton aceptar aparece una ventana con mi mensaje de bienvenida y el nombre 

          Explico el còdigo

          declaro una variable(nombre) como String para obnener los datos de mi TextBox

          muestro con un MessageBox.Show

          coloco un mensaje "" un espacio " " para separar y la variable nombre finalmente coloco un ; 

          todas las lìneas en C# terniman con ; 



          • Semana No. 2 y 3:


            Condicionales En visual 

                       C Sharp


            Las condicionales permiten que el programa tome decisiones y ejecute diferentes bloques de código según se cumplan o no ciertas condiciones.

            sintaxis:

            If (condición) {   // si la condición abro una llave  

             instrucciones;       // instrucciones a verdadera 

            }                          // cierro llave 

            else  {                  // de lo contrario abro nuevamente llave 

            instrucción 2 ;                      // instrucción falsa

            {                                           // cierro llave 


            Ejemplo de un Ejercicio utilizando condicionales simples 

            Diseño del formulario:

            • Un Label etiqueta con el texto (ingresa tu edad)

            • Un TextBox para ingresar la edad.
            • Un Button para evaluar.
            • Un Labe2 para mostrar el resultado.
            • Uso de if /else.

            Código en el button:

            if (edad >= 18) { 

            Label2.Text = "usted es mayor de edad.";

            }

             else 

             { 

            label2.Text = "Eres menor de edad."; 

             }


            Condicionales Anidadas 

            una condicional anidada es cuando dentro de una estructura condicional (ifelse if o else) colocas otra estructura condicional para evaluar más condiciones de forma jerárquica.

            Diseño del Formulario

            • Un TextBox para ingresar sueldo.
            • Un Button para evaluar.
            • Un Label para mostrar el resultado.
            • Uso de if / else if / else.

            if (sueldo >= 1500 && sueldo <= 900) // Validar rango 

              porcentaje= sueldo *0.2 ;            // aplico una deducción al sueldo del 2%

              Totalpagar = sueldo-porcentaje;           // resto la deducción del sueldo para obtener total a pagar

            label2.Text: "el total a pagar es:" +"  " + Totalpagar;  // muestro un mensaje con el sueldo 

             } 

             else                                                    // de lo contrario

             {

              if (sueldo >= 1600) {         //  vuelvo a preguntado por otra condición

              

             porcentaje= sueldo *0.3;            // aplico una deducción al sueldo del 3%

             Totalpagar = sueldo-porcentaje;           // resto la deducción del sueldo para obtener total a pagar

            label2.Text: "el total a pagar es:" +"  " + Totalpagar;


            Ejercicio propuestos FECHA DE ENTREGA 05/05/2026

            1- Un postulante a un empleo, realiza un test de capacitación, se obtuvo la siguiente información: cantidad total de preguntas que se le realizaron y la cantidad de preguntas que contestó correctamente. Se pide confeccionar un programa que ingrese los dos datos por teclado e informe el nivel del mismo según el porcentaje de respuestas correctas que ha obtenido, y sabiendo que:
            Nivel máximo: Porcentaje>=90%. Nivel medio: Porcentaje>=75% y <90%. Nivel regular: Porcentaje>=50% y <75%. Fuera de nivel: Porcentaje<50%.


            2.- carga una aplicación para un Sistema de descuentos en una tienda

            Un supermercado aplica descuentos según el monto de la compra y si el cliente es miembro VIP.

            Reglas:

            1. Si el monto es mayor a 100 USD:
              • Si es VIP, el descuento es 20%.
              • Si no es VIP, el descuento es 10%.
            2. Si el monto es entre 50 y 100 USD:
              • Si es VIP, el descuento es 5%.
              • Si no es VIP, no hay descuento.
            3. Si el monto es menor a 50 USD, no hay descuento.


            • Semana No. 3: Desde DD/MM/AA Hasta DD/MM/AA


              Resultado de imagen de controles radiobutton y checkbox

              El CheckBox: Es un control que permite al usuario seleccionar una o más opciones de varias disponibles.

              4700

              RadioButton: Control que permite al usuario escoger solo una de varias opciones.

              4701

              Observe como se ven en el formulario y también observe que los checkbox están seleccionados todos, en cambio los RadioButton son mutuamente excluyentes por lo que solo uno de ellos puede ser elegido.

              Estos controles generalmente se agrupan en un control contenedor llamado GroupBox y de esa manera se pueden poner varias opciones en un solo formulario, por supuesto que agrupando los radioButton en varios GroupBox


              Ejercicio con Checkbox

              Disponer un control Label que muestre el siguiente mensaje: "Esta de acuerdo con las normas del servicio?", luego un CheckBox y finalmente un objeto de tipo Button desactivo (propiedad Enabled con false). Cuando se tilde el CheckBox debemos activar el botón (para esto debemos responder al evento)

              CheckBox


              un label 

              un textbox

              un button 

              private void checkBox1_CheckedChanged(object sender, EventArgs e)
                      {
                          if (checkBox1.Checked == true)
                          {
                              button1.Enabled = true;
                          }
                          else
                          {
                              button1.Enabled = false;
                          }
              (El checked changed en evento (investiga como colocar los eventos a los controles))

              Aquí puedes ver como trabajar los eventos.

              https://www.bing.com/ck/a?!&&p=d9908e4ca8a5092349f042c72002647735826b0df0226a1230d3d13134973364JmltdHM9MTc3Nzg1MjgwMA&ptn=3&ver=2&hsh=4&fclid=0754cf7e-35cd-6470-2482-db83345d656a&psq=controles+radiobutton+en+lenguaje+de+programacion++CSharp++windows+foem+visual+studio+2012&u=a1aHR0cHM6Ly93d3cuZ2Vla3Nmb3JnZWVrcy5vcmcvYy1zaGFycC9yYWRpb2J1dHRvbi1pbi1jLXNoYXJwLw


              Debemos implementar el evento CheckedChange del objeto checkBox1 (preguntamos si el CheckBox se encuentra seleccionado o no, en caso de estar seleccionado activamos el botón asignando a la propiedad Enabled el valor true):


              Ejemplo Radiobutton


              >Agrega un button

              Código botton

                  if (radioButton1.checked ==true){

                     MessageBox.Show("usted ha seleccionado el radiobutton1");

              }

              else

              {

               if (radioButton2.checked ==true){

              MessageBox.Show("usted ha seleccionado el radiobutton2");

              }

              else

              {

               if (radioButton3.checked ==true){

              MessageBox.Show("usted ha seleccionado el radiobutton3");

              }

              else

              {


              1. Evento CheckedChanged: Detecta cuando el primer RadioButton cambia de estado.
              2. Si está seleccionado (Checked == true): Desactiva (Enabled = false) los demás.
              3. Si se desmarca: Los vuelve a activar.

              el codigo seria este:

              InitializeComponent(); // Asociar el evento CheckedChanged al primer 

              RadioButton radioButton1.CheckedChanged += RadioButton1_CheckedChanged; 

               } // Evento que se dispara cuando cambia el estado del primer 


              RadioButton private void RadioButton1_CheckedChanged(object sender, EventArgs e) {

               try 

               { 

               if (radioButton1.Checked) {   // Desactivar los otros RadioButton 

                    radioButton2.Enabled = false; 

                   radioButton3.Enabled = false; 

               }

               else 

               {

               // Volver a activarlos si se desmarca el primero

                    radioButton2.Enabled = true; 

                   radioButton3.Enabled = true; 

               } 

               } 

               catch (Exception ex) { 

               MessageBox.Show("Ocurrió un error: " + ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);

               } 

                  } 

                   } 

                        }

              • Semana No. 5: Desde 05/05/26 Hasta 06/05/26

                Ciclos En C Sharp y control, Lisbox

                un ciclo o bucle es una estructura de control que permite ejecutar repetidamente un bloque de código mientras se cumpla una condición o durante un número determinado de veces.

                Un ListBox es un control gráfico para mostrar una lista de elementos, permitiendo al usuario seleccionar uno o varios de ellos. 

                El ListBox puede manejar listas largas de elementos. Si el número de elementos excede el espacio visible, se agrega automáticamente una barra de desplazamiento. Además, se puede configurar para mostrar los elementos en una sola columna o en varias columnas, dependiendo de la propiedad.

                for

                Se usa cuando sabemos exactamente cuántas veces queremos repetir el código.

                ejemplo tablas de multiplicar 

                Diseño del Form1

                Label: introduzca un número del 1 al 10

                textBox: 

                un Listbox  

                un Button  con el signo de multiplicar.


                Código del button 

                private void buton1_Click(object sender, EventArgs e) 

                 {

                 listBox1.Items.Clear(); // Limpiar resultados previos 


                 // Validar que el usuario ingresó un número entero


                 if (!int.TryParse(txtNumero.Text, out int numero)) { 

                 MessageBox.Show("Por favor, ingrese un número entero válido.", "Entrada inválida", MessageBoxButtons.OK,       MessageBoxIcon.Warning);

                 return; 

                  } 

                 // Generar tabla de multiplicar usando ciclo for

                 

                      for (int i = 1; i <= 10; i++) { 


                       int resultado = numero * i;


                        listBox1.Items.Add($"{numero} x {i} = {resultado}"); 

                 }

                    } 







                • Semana No. 6: Desde DD/MM/AA Hasta DD/MM/AA

                  C# For bucle

                  Cuando sepa exactamente cuántas veces desea recorrer un bloque de código, utilice el bucle for en lugar de un while bucle:

                  Sintaxis

                  for (declaración 1; declaración 2; declaración 3)
                  {
                    // bloque de código a ejecutar
                  }

                  La Declaración 1 se ejecuta (una vez) antes de la ejecución del bloque de código.

                  La Declaración 2 define la condición para ejecutar el bloque de código.

                  La Declaración 3 se ejecuta (cada vez) después de que se haya ejecutado el bloque de código.

                  El siguiente ejemplo imprimirá los números del 0 al 4:

                  Ejemplo

                  for (int i = 0; i < 5; i++)
                  {
                    MessageBox.Show(i);
                  }


                  La declaración 1 establece una variable antes de que comience el ciclo (int i = 0).
                  La declaración 2 define la condición para que se ejecute el bucle (i debe ser menor que 5). Si la condición es true, el ciclo comenzará de nuevo, si es false, el ciclo finalizará.
                  La declaración 3 aumenta un valor (i++) cada vez que se ejecuta el bloque de código en el bucle.
                  finalmente mostramos con un MessageBox para mostrar los números del 1 al 4 



                  C# While bucle

                  El bucle while recorre un bloque de código siempre que una condición especificada sea True:

                  Sintaxis

                  while (condición)
                  {
                    // bloque de código a ejecutar
                  }
                  

                  En el siguiente ejemplo, el código del bucle se ejecutará una y otra vez, siempre que una variable (i) sea menor que 5:

                  Ejemplo

                  int i = 0;
                  while (i < 5)
                  {
                    
                  MessageBox.Show(i);
                  i++; }

                  El bucle Do/While

                  El bucle do/while es una variante del bucle while. Este bucle ejecutará el bloque de código una vez, antes de verificar si la condición es verdadera, luego repetirá el bucle mientras la condición sea verdadera.

                  Sintaxis

                  do
                  {
                    // bloque de código a ejecutar
                  }
                  while (condición);
                  

                  El siguiente ejemplo utiliza un bucle do/while. El bucle siempre se ejecutará al menos una vez, incluso si la condición es falsa, porque el bloque de código se ejecuta antes de que se pruebe la condición:

                  Ejemplo

                  int i = 0;
                  do { MessageBox.Show(i); i++; } while (i < 5);

                  ¡No olvides aumentar la variable utilizada en la condición, de lo contrario el ciclo nunca terminará!

                  ejercicio práctico.

                  En el Form1 agrega:

                  • Label"Ingrese un número:"
                  • TextBoxtxtNumero
                  • ButtonbtnFor → Texto: "Tabla de multiplicar (FOR)"
                  • ButtonbtnWhile → Texto: "Conteo regresivo (WHILE)"
                  • ListBoxlstResultados para mostrar resultados.

                  using System; 

                  using System.Windows.Forms; 

                   namespace EjerciciosCiclos {

                   public partial class Form1 :

                   Form { 

                   public Form1() { InitializeComponent(); } // Ejercicio 1: Tablas de multiplicar con FOR 

                   private void btnFor_Click(object sender, EventArgs e) { 

                     lstResultados.Items.Clear(); // Validar entrada

                   if (!int.TryParse(txtNumero.Text, out int numero) || numero <= 0) { 

                       MessageBox.Show("Ingrese un número entero positivo.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Warning);


                   return;

                   } 

                   // Ciclo FOR para generar la tabla

                   for (int i = 1; i <= 10; i++) { 

                   lstResultados.Items.Add($"{numero} x {i} = {numero * i}"); } } //


                  Ejercicio 2: Conteo regresivo con WHILE

                   private void btnWhile_Click(object sender, EventArgs e) {

                          lstResultados.Items.Clear();  // Validar entrada 


                   if (!int.TryParse(txtNumero.Text, out int numero) || numero <= 0) {

                          MessageBox.Show("Ingrese un número entero positivo.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Warning);

                   return; 

                   }

                  // Ciclo WHILE para conteo regresivo

                   while (numero >= 0) { 

                         lstResultados.Items.Add($"Cuenta: {numero}"); numero--; 

                   } 

                     }

                      } 

                        }

                  • Semana No. 1 CORTE II

                    VECTORES Y MATRICES EN C#

                    Arrays (arreglos) Vectores - Programación en C#. Net con Visual Studio 2013  (17-25) - www.IncanatoIT.com - Desarrollando Software


                    ¿Qué es un Vector?

                    Es una fila de casillas enumeradas. Cada casilla tiene una posición llamada índice, que siempre empieza en 0.

                    • Declaración: int[] miVector = new int[3]; (Crea un vector para guardar 3 números enteros).
                    • Estructura visual: [ Casilla 0 ] [ Casilla 1 ] [ Casilla 2 ]

                    ¿Qué es una Matriz?

                    Es una cuadrícula con filas y columnas (como una hoja de Excel). Para acceder a un dato, necesitas indicar la fila y la columna.

                    • Declaración: int[,] miMatrix = new int[2, 3]; (Crea una matriz de 2 filas y 3 columnas).
                    • Estructura visual:
                      [Fila 0, Columna 0] [Fila 0, Columna 1] [Fila 0, Columna 2]
                      [Fila 1, Columna 0] [Fila 1, Columna 1] [Fila 1, Columna 2]
                    ejemplo:

                    Diseño de la Interfaz
                    1. Form1 (Carga de Datos):
                      • TextBox llamados: txtNota1txtNota2txtNota3.
                      • Button llamado: btnCalcular.
                    2. Form2 (Resultados):
                      • ListBox llamado: lstResultados.

                    private void btnCalcular_Click(object sender, EventArgs e)
                    {
                        // 1. Crear un VECTOR para almacenar las 3 notas ingresadas
                        double[] notas = new double[3];
                        
                        // Convertir el texto de los TextBox a números decimales
                        notas[0] = Convert.ToDouble(txtNota1.Text);
                        notas[1] = Convert.ToDouble(txtNota2.Text);
                        notas[2] = Convert.ToDouble(txtNota3.Text);
                    
                        // 2. Calcular el promedio usando los datos del vector
                        double suma = notas[0] + notas[1] + notas[2];
                        double promedio = suma / 3;
                    
                        // 3. Crear una MATRIZ para organizar los resultados (1 fila, 2 columnas)
                        // Columna 0 = Suma total, Columna 1 = Promedio
                        double[,] matrizResultados = new double[1, 2];
                        matrizResultados[0, 0] = suma;
                        matrizResultados[0, 1] = promedio;
                    
                        // 4. Pasar la matriz al Form2 mediante su constructor
                        Form2 formularioResultado = new Form2(matrizResultados);
                        formularioResultado.Show();
                        this.Hide(); // Oculta el formulario actual
                    }
                    formulario 2 En la barra de herramientas proyecto agrega un nuevo Windows aplication 

                    public partial class Form2 : Form
                    {
                        // Variable global en Form2 para almacenar la matriz recibida
                        private double[,] datosRecibidos;
                    
                        // Modificamos el constructor para aceptar la matriz
                        public Form2(double[,] matrizPasada)
                        {
                            InitializeComponent();
                            this.datosRecibidos = matrizPasada;
                        }
                    
                        // Evento que se ejecuta al cargar el formulario
                        private void Form2_Load(object sender, EventArgs e)
                        {
                            // Extraer los datos de la matriz usando sus posiciones (Fila, Columna)
                            double totalSuma = datosRecibidos[0, 0];
                            double totalPromedio = datosRecibidos[0, 1];
                    
                            // Mostrar los elementos formateados en el ListBox
                            lstResultados.Items.Add("--- REPORTE DE NOTAS ---");
                            lstResultados.Items.Add("Suma Total: " + totalSuma);
                            lstResultados.Items.Add("Promedio Final: " + totalPromedio.ToString("F2")); // F2 limita a 2 decimales
                        }
                    }

                    Enviar este ejercicio Vía Whatsapp


                    • Semana No.2: Modulo II

                      MenuStrip

                      Este componente te permite organizar de forma jerárquica las opciones principales y desplegables de tu interfaz.

                      1. Añade el MenuStrip: Ve al Cuadro de herramientas (Toolbox), busca la sección Menús y barras de herramientas y arrastra el control MenuStrip hacia tu formulario.
                      2. Diseña el menú: Verás que aparece un cuadro en la parte superior de tu formulario que dice "Escriba aquí". Escribe el nombre de las opciones principales (por ejemplo, ArchivoEditarAyuda).
                      https://youtube.com/shorts/mV3foNgsKQk?si=35QNBSm0Fxfm2Et5

                      A pulsar un doble clic a cada recuadro podrás visualizar la ventana de codificar para darle una función a cada menú.

                      ejemplo:

                      Diseña un formulario con un menú que contenga "INICIO" dentro o debajo donde dice new en la imagen, cambia por password y en open salir. en la barra de herramientas de visual net dale clic a proyectos y agrega un nuevo Windows Aplicatión o formulario 2. regresas al form1.


                      Dale un doble clic a password y coloca el siguiente código:

                         form2 ventana = new form2();     // crea la instancia del segundo formulario

                          ventana. Show(); // muestra el segundo formulario 

                          this.Hide();         // oculta el primer formulario 


                      En el formulario 2 diseña el siguiente password: 

                      2 label  (Usuario, Contraseña)

                      2  textbox

                      tres button  ( ingresar, salir, retornar)


                      Codigo Button Ingresar

                        if (textBox1.text =="Minerva" && textBox2.text=="134")

                      }

                      form3.show();

                      {

                      else

                      }

                      MessageBox.Show("contraseña incorrecta, intenta de nuevo");

                      textbox1.text.clear();

                      textbox2.clear();

                      textbox1.text.focus();          // limpia los campos y regresa el cursor al textbox1


                      Botón salir

                      Clear();


                      Botón retorno

                      form1.show();

                      this Hide();


                      ENVIA ESTE EJERCICIO VIA WHATSAPP

                      • Semana No. 3: DataGridView


                        CONTROL DATAGRIDVIEW:


                        Un DataGridView es un control visual de Windows Forms que sirve para mostrar, editar y organizar datos en forma de tabla (filas y columnas), de manera muy similar a una hoja de cálculo de Excel. Es la herramienta estándar en C# para manejar listas de objetos o bases de datos en la interfaz gráfica.

                        1. Crear el Modelo de Datos
                        Agrega una clase a tu proyecto llamada Producto.cs para definir qué datos guardaremos:

                        public class Producto
                        {
                            public int Id { get; set; }       //GET Y SET 
                            public string Nombre { get; set; }
                            public double Precio { get; set; }
                        }
                        • get (Obtener): Se ejecuta cuando lees o pides el valor de la propiedad [1]. Equivalente a "dame el dato".
                        • set (Establecer): Se ejecuta cuando asignas o cambias el valor de la propiedad [1, 2]. Equivalente a "guarda este dato". Usualmente emplea la palabra clave value, que representa el nuevo valor que se quiere guardar [2].

                        2.Diseñar el Formulario (Form1)Coloca los siguientes controles en tu ventana de diseño:

                        3 TextBoxtxtIdtxtNombretxtPrecio.

                        • 1 DataGridViewdgvProductos.
                        • 3 BotonesbtnAgregarbtnModificarbtnEliminar.
                        3. Código del Formulario (Form1.cs)Reemplaza el código de tu formulario por el siguiente. Este bloque incluye las operaciones del CRUDCreate (Agregar), Read (Leer/Mostrar), Update (Modificar) y Delete (Eliminar).

                        using System;
                        using System.ComponentModel;
                        using System.Windows.Forms;
                        
                        namespace CrudDataGrid
                        {
                            public partial class Form1 : Form
                            {
                                // Colección especial que actualiza el DataGridView automáticamente al cambiar
                                private BindingList<Producto> listaProductos = new BindingList<Producto>();
                                
                                // Variable para rastrear qué fila está seleccionada para editar
                                private int filaSeleccionada = -1;
                        
                                public Form1()
                                {
                                    InitializeComponent();
                                    // Vincular la lista directamente al DataGridView (READ implícito)
                                    dgvProductos.DataSource = listaProductos;
                                }
                        
                                // --- C: CREATE (Agregar) ---
                                private void btnAgregar_Click(object sender, EventArgs e)
                                {
                                    Producto nuevo = new Producto
                                    {
                                        Id = Convert.ToInt32(txtId.Text),
                                        Nombre = txtNombre.Text,
                                        Precio = Convert.ToDouble(txtPrecio.Text)
                                    };
                        
                                    listaProductos.Add(nuevo);
                                    LimpiarCampos();
                                }
                        
                                // --- Evento al hacer clic en una fila de la tabla ---
                                private void dgvProductos_CellClick(object sender, DataGridViewCellEventArgs e)
                                {
                                    filaSeleccionada = e.RowIndex;
                        
                                    // Validar que se haya hecho clic en una fila válida y no en el encabezado
                                    if (filaSeleccionada >= 0)
                                    {
                                        // Pasar los datos de la fila seleccionada de vuelta a los TextBox
                                        txtId.Text = dgvProductos.Rows[filaSeleccionada].Cells[0].Value.ToString();
                                        txtNombre.Text = dgvProductos.Rows[filaSeleccionada].Cells[1].Value.ToString();
                                        txtPrecio.Text = dgvProductos.Rows[filaSeleccionada].Cells[2].Value.ToString();
                                        
                                        // Bloquear el ID para evitar inconsistencias al modificar
                                        txtId.Enabled = false; 
                                    }
                                }
                        
                                // --- U: UPDATE (Modificar) ---
                                private void btnModificar_Click(object sender, EventArgs e)
                                {
                                    if (filaSeleccionada >= 0)
                                    {
                                        // Modificar el objeto directamente en la lista indexada
                                        listaProductos[filaSeleccionada].Nombre = txtNombre.Text;
                                        listaProductos[filaSeleccionada].Precio = Convert.ToDouble(txtPrecio.Text);
                        
                                        // Forzar al DataGridView a refrescar los valores visuales
                                        listaProductos.ResetItem(filaSeleccionada);
                                        
                                        LimpiarCampos();
                                    }
                                    else
                                    {
                                        MessageBox.Show("Seleccione un producto de la tabla primero.");
                                    }
                                }
                        
                                // --- D: DELETE (Eliminar) ---
                                private void btnEliminar_Click(object sender, EventArgs e)
                                {
                                    if (filaSeleccionada >= 0)
                                    {
                                        // Eliminar el elemento de la lista por su posición
                                        listaProductos.RemoveAt(filaSeleccionada);
                                        LimpiarCampos();
                                    }
                                    else
                                    {
                                        MessageBox.Show("Seleccione el producto que desea eliminar.");
                                    }
                                }
                        
                                // Método auxiliar para limpiar la interfaz
                                private void LimpiarCampos()
                                {
                                    txtId.Clear();
                                    txtNombre.Clear();
                                    txtPrecio.Clear();
                                    txtId.Enabled = true;
                                    filaSeleccionada = -1;
                                }
                            }
                        }
                        REALIZA ESTE EJERCICIO Y ENVIA POR WHATSAPP

                        • Semana No. 8: Base de Datos y C#

                          Para crear y gestionar una base de datos local en XAMPP y conectarla a una aplicación de escritorio o web en C#, utilizando el paquete MySql.Data para establecer la comunicación y realizar consultas.


                          En este link podras seguir unos simples pasos para instalar el Xampp:

                           https://www.ionos.com/es-us/digitalguide/servidores/herramientas/instala-tu-servidor-local-xampp-en-unos-pocos-pasos/

                          Paso 1: Configurar la Base de Datos en XAMPP
                          1. Inicia los servicios: Abre el Panel de Control de XAMPP(https://www.apachefriends.org/es/index.html), ubica el módulo MySQL (o MariaDB) y haz clic en Start.
                          2. Accede a phpMyAdmin: Abre tu navegador web e ingresa a http://localhost/phpmyadmin/.
                          3. Crea tu base de datos: En el menú lateral, haz clic en Nueva. Escribe un nombre para tu base de datos (por ejemplo, tienda_db) y selecciona el cotejamiento utf8_general_ci. Haz clic en Crear.

                          Paso 2: Conectar C# con MySQL (XAMPP) [1]
                          Para que tu proyecto de C# reconozca el motor de base de datos de XAMPP, necesitas descargar el controlador oficial llamado MySql.Data.
                          2.1 Instalar la librería (NuGet)
                          • Visual Studio: Ve a Herramientas > Administrador de paquetes NuGet > Administrar paquetes NuGet para la solución.
                          • En la pestaña Examinar, busca MySql.Data y presiona Instalar en el proyecto donde manejarás la conexión. [1, 2, 3, 4]
                          2.2 Código de Conexión en C#
                          Aquí tienes el código necesario para establecer, abrir y cerrar la conexión con XAMPP.

                          csharp
                          using System;
                          using MySql.Data.MySqlClient; // Requiere instalar MySql.Data
                          
                          namespace ConectarXAMPP
                          {
                              class Program
                              {
                                  static void Main(string[] args)
                                  {
                                      // Cadena de conexión estándar para XAMPP
                                      // Servidor: localhost | Base de datos: tu_base_de_datos | Usuario: root | Contraseña: (vacía por defecto)
                                      string cadenaConexion = "Server=localhost;Database=tienda_db;Uid=root;Pwd=;";
                          
                                      using (MySqlConnection conexion = new MySqlConnection(cadenaConexion))
                                      {
                                          try
                                          {
                                              conexion.Open();
                                              Console.WriteLine("¡Conexión exitosa a la base de datos de XAMPP!");
                                          }
                                          catch (Exception ex)
                                          {
                                              Console.WriteLine("Error al conectar: " + ex.Message);
                                          }
                                      }
                                  }
                              }
                          }
                          Paso 3: Operaciones CRUD básicas (Consultar e Insertar)
                          Una vez abierta la conexión (conexion.Open()), puedes ejecutar comandos SQL directamente desde C#.
                          Consultar Datos (SELECT)

                          csharp
                          string query = "SELECT id, nombre, precio FROM productos";
                          MySqlCommand comando = new MySqlCommand(query, conexion);
                          MySqlDataReader lector = comando.ExecuteReader();
                          
                          while (lector.Read())
                          {
                              Console.WriteLine($"ID: {lector["id"]} | Producto: {lector["nombre"]} | Precio: {lector["precio"]}");
                          }
                          lector.Close();
                          Insertar Datos (INSERT)
                          (Es muy importante usar parámetros @parametro para evitar ataques de inyección SQL).
                          csharp
                          string query = "INSERT INTO productos (nombre, precio) VALUES (@nombre, @precio)";
                          MySqlCommand comando = new MySqlCommand(query, conexion);
                          
                          // Asignar valores a los parámetros
                          comando.Parameters.AddWithValue("@nombre", "Laptop Gamer");
                          comando.Parameters.AddWithValue("@precio", 1200.50);
                          
                          int filasAfectadas = comando.ExecuteNonQuery();
                          if (filasAfectadas > 0)
                          {
                              Console.WriteLine("Registro insertado correctamente.");
                          }

                          • MATERIAL DE APOYO

                            01

                            * Evaluaciones                                  * Cuentos

                            * Material multimedia                         * Libros

                            * Videos                                          * Revistas

                            * Link educativos                              * Otros

                            * Foros

                            • TIPOS DE ESTRATEGIAS DE ENSEÑANZAS Y APRENDIZAJES

                              1.-  EXÁMEN ESCRITO

                              2.- EXPOSICIÓN 

                              3.- FORO, CONVERSATORIOS Y DEBATES

                              4.- TALLER

                              5.- MAPA MENTAL Y CONCEPTUAL

                              6.- INFOGRAFÍAS

                              7.- SIMPOSIO 

                              8.- CUESTIONARIOS

                              9.- PARTICIPACIÓN EN CLASE

                              10.- ACTIVIDADES ASIGNADAS

                              11.- ENTRE OTROS....