martes, 11 de agosto de 2020

Fundamentos de programación. Estructuras de control WHILE

Las estructuras de control son básicamente la razón por la cual los programas de computadora puedan resolver las diversas situaciones de la vida del hombre.
Recordando un poco de pasado, encontraremos que el mayor problema con el cual se enfrento el hombre fue: "...existían muchas operaciones y procesos repetitivos que debían hacerse una y otra vez, que aparte de cansados no estaban exentas de errores..."; las estructuras while, for y do while permiten al programador realizar dichas tareas eficazmente.

Hoy corresponde detallar en este blog la estructura while (Mientras) cuya finalidad es permitir la ejecución de ciertas acciones siempre y cuando exista una condición verdadera.

Por ejemplo: El ser humano come, bebe, camina, trabaja, etc. siempre y cuando haya aire que pueda respirar
* Observaciones:

  • ¿Qué es lo que el hombre hace? come, bebe, camina, trabaja, etc.
  • ¿Cuál es la condición que limita el quehacer del hombre? Debe haber aire

Por lo consiguiente el diagrama de flujo es el siguiente:

Es importante recordar que comúnmente las "Acciones" que están dentro de la estructura de control deberán de contener alguna opción por medio de la cual "Respira" se convierta en "Falso", en caso de no ser así es muy probable que el programa se bloquee creando un ciclo eterno (jejeje).

Espero sean de ayuda este ejercicio para sus prácticas posteriores, les dejo a continuación el link para que puedan probar sus ejercicios sin necesidad de instalar físicamente ningún compilador C# en su computadora.

Compilador online C#

Un ejemplo de programa en C# sería.

- Programa que imprime los números del 1 al 10

int n = 1;
while (n <= 10)
{
    Console.WriteLine(n);
    n++;
}

martes, 8 de octubre de 2019

QUICKSORT en Windows Form C#

Método de ordemiento QUICKSORT

En Windows FORMS C#

He leído en Internet un comentario, de que esperar a que alguien se le ocurra hacer el método de ordenamiento en Windows Forms C# seria algo como "Morirás esperando una respuesta". La verdad me reí un poco y aprovechando que estoy estudiando dicho tema.

Creo, que no morirás esperando, pues aqui te dejo un ejemplo práctico de como mostrar el funcionamiento.

EL DISEÑO es el siguiente

para lo cual se han agregado:
  •  2 controles ListBox: uno para números a ordenar listBox1 y otro para ordenados listBox2
  • 1 botón para ejecutar el ordenamiento button1
  • 1 botón para agregar nuevos números a la lista para ordenar button2
  • 1 caja de texto para escribir el nuevo número a agregar textBox1

EL FUNCIONAMIENTO
- El usuario agrega los números al listBox1 
- El usuario presiona sobre el botón "Ordenar QUICKSORT"
- El usuario ve en el ListBox2 el resultado de los datos ordenados


EL CÓDIGO

El método de ordenamiento lo obtuve del siguiente LINK
http://csharp-facilito.blogspot.com/2013/07/metodo-de-ordenamiento-quick-sort-en-c-sharp.html

 private void quicksort(int[] vector, int primero, int ultimo)
        {
            int i, j, central;
            double pivote;
            central = (primero + ultimo) / 2;
            pivote = vector[central];
            i = primero;
            j = ultimo;
            do
            {
                while (vector[i] < pivote) i++;
                while (vector[j] > pivote) j--;
                if (i <= j)
                {
                    int temp;
                    temp = vector[i];
                    vector[i] = vector[j];
                    vector[j] = temp;
                    i++;
                    j--;
                }
            } while (i <= j);

            if (primero < j)
            {
                quicksort(vector, primero, j);
            }
            if (i < ultimo)
            {
                quicksort(vector, i, ultimo);
            }
        }




El código del botón que tiene el simbolo "+" es:


        private void button2_Click(object sender, EventArgs e)
        {
            listBox1.Items.Add(textBox1.Text);
        }

 

El código del botón que ORDENA QUICKSORT es:

        private void button1_Click(object sender, EventArgs e)
        {
            int[] datos = new int[100];
            for (int i = 0; i < listBox1.Items.Count; i++)
                datos[i] = Convert.ToInt32( listBox1.Items[i]);

            quicksort(datos, 0, datos.Length - 1);

            listBox2.Items.Clear();

            for (int i = 0; i < datos.Length; i++)
                if (datos[i] != 0)
                {
                    listBox2.Items.Add(datos[i]);
                }
        }



 

Sin más, espero les sirva este código.

martes, 6 de marzo de 2018

Programa C# de pase lista con OBJETOS

Saludos a la banda de 203.
A continuación les dejo el código fuente de las clases necesarias para desarrollar el programa de pase de lista escolar.

CLASE ALUMNO:
    public class Alumno
    {
        public String nombre;
        public String apellidos;
        public String noControl;

        public Alumno()
        {
            nombre = "Desconocido";
        }

        public Alumno(String nString aString noControl)
        {
            nombre = n;
            apellidos = a;
            this.noControl = noControl;
        }
    }


CLASE LISTA
    public class Lista
    {
        public DateTime fecha;
        public String docente;
        public String materia;
        public String periodoEscolar;
        public String grupo;
        public String grado;
        public Alumno[] listaAlumnos;
        private int contador;

        public Lista()
        {
            listaAlumnos = new Alumno[12];
            for (int i = 0i < 12i++)
            {
                listaAlumnos[i] = new Alumno();
            }
            fecha = DateTime.Now;
            contador = 0;
        }

        public void AgregarAlumno(String nombreString apellidosString nocontrol) {
            if (contador < 12)
            {
                Alumno a = new Alumno(nombreapellidosnocontrol);

                listaAlumnos[contador] = a;
                contador++;
            }
            else {
                Console.WriteLine("Ya no hay cupo");
            }
        }

        public void EliminarAlumno(String c)
        {
            for (int i = 0i < 12i++){
                if (listaAlumnos[i].noControl == c ) {
                    Console.WriteLine("El alumno " + listaAlumnos[i].nombre + "fue eliminado");
                    listaAlumnos[i] = new Alumno();
                    break;
                }
            }
        }

        public void PasarLista()
        {
            for (int i = 0i < 12i++)
            {
                Console.WriteLine(i + ".- " + listaAlumnos[i].nombre + " " +
                                  listaAlumnos[i].apellidos 
                                  + " - " + listaAlumnos[i].noControl);
            }
        }
    }
 


CLASE PRINCIPAL o MAIN

    class Program
    {
        static void Main(string[] args)
        {
            Lista ISC203 = new Lista();
            ISC203.docente = "Martín Contreras";
            ISC203.materia = "POO";
            ISC203.periodoEscolar = "FEB-JUL18";
            ISC203.grupo = "203";
            ISC203.grado = "2";

            // Agregar alumnos
            ISC203.AgregarAlumno("Marina""Torres""176W0579");
            ISC203.AgregarAlumno("LUIS Antonio""Coxcahua""176W0567");
            ISC203.AgregarAlumno("erik fernando""texcahua""176W0578");

            // Vamos a imprimir la lista
            ISC203.PasarLista();
            ISC203.EliminarAlumno("176W0578");
            ISC203.PasarLista();
        }
    }


Para que les funcione igual que a mí, crear una solución de Visual Studio C# en modo CONSOLA.
Más tarde les agregaré el diagrama de clases.

Cualquier duda, estamos en contacto.

viernes, 10 de noviembre de 2017

phpMyAdmin y el feo mensaje: Esta tabla no contiene una columna única

Desde ya hace algún instale alguna versión de XAMPP en mi computadora y había notado que cuando consultaba mi base de datos desde allí no podia Editar, Borrar o modificar directamente sobre la tabla "grid" como la siguiente:


Al intentarlo aparecia el "feo" mensaje de que

"Esta tabla no contiene una columna única.... "

busque unos dias en internet la solución pero como no encontré nada que me ayudara, decidí dejar por la paz el tema.

Ayer, después de mucho tiempo después volví a intentar reparar tal error, incluso me arriesgue a buscar dentro del mismísimo código PHP del phpMyAdmin. Y pues nada.
Todas las soluciones en internet proponían agregar una clave PRIMARIA de tipo INT con la propiedad AUTO_INCREMENT ¡Qué lógico!

La solución común no me ayudaba, porque cuando cree la tabla de base de datos que estaba manipulando ya le había agregado esas características a un campo llamado "id"

CREATE TABLE Usuarios (
`id` INT NOT NULL AUTO_INCREMENT,
`matricula` varchar(10) NOT NULL,
`paterno` varchar(60) NOT NULL,
`materno` varchar(60) NOT NULL,
`nombre` varchar(60) NOT NULL,
`carrera` varchar(100) NOT NULL,
`grado` INT NOT NULL,
`Externo` BIT NOT NULL,
PRIMARY KEY (id)
);

, y aunando a eso "... en mi anterior versión de XAMPP todo funcionaba sin errores." Esto si que causa enojo.

Les comparto por este medio la solución a mi problema:


  • Busque la página oficial de PhpMyAdmin

  • Descargue la ultima versión del paquete (que en este momento es phpMyAdmin-4.7.5)
  • Descomprimi el archivo .zip
  • Fui a la carpeta XAMPP en mi disco duro
  • Reemplace los archivos de la carpeta llamada "phpMyAdmin" ubicada dentro de XAMPP por los archivos de la ultima versión que baje de internet
  • Y listo!!!! 

jueves, 9 de noviembre de 2017

Links para aprender a programar una página Web PHP que consulte información MySQL: PASO a PASO

Saludos a los del grupo 303 TQ...
Esta entrada tiene como finalidad ofrecer el link a tutoriales paso a paso para el desarrollo de una aplicación Web PHP. Considerando que los interesados desconocen el manejo de base de datos.

Prerequisitos
- Instalar XAMPP
- Conocer el funcionamiento de XAMPP

PASO 0. La intención de seguir estos Links es generar a una base de datos llamada: ALMACEN, que va a contener una tabla llamada productos que contiene los campos id, código, precio, nombre y existencia.  y que debe tener insertado los siguientes productos:

idCódigoNombrePrecioExistencia
1001Refrescos de sabores9.00100
2002Galletas OLE15.0017


PASO 1.  Creación de la base de datos MySQL desde la herramienta phpMyAdmin que ofrece XAMPP.

https://pensamientosaztlek.files.wordpress.com/2013/07/phpmyadmin_crearunabasededatosmysqldesdephpmyadmin.pdf

PASO 2. Crear una tabla en base de datos y de inserción de datos MySQL desde la herramienta phpMyAdmin

http://blog.evidaliahost.com/2014/02/11/curso-phpmyadmin-anadir-una-tabla/

PASO 3. Consideraciones generales antes de entrar a programar la página PHP:

  • Los archivos PHP funcionan mediante el servidor Apache que se incluye dentro de la instalación de XAMPP, por lo tanto los archivos .php deben ser colocados dentro de la carpeta htdocs.
  • El servidor Apache dentro de XAMPP debe estar activado
  • Para ejecutar una página PHP es necesario escribir en la dirección de internet: http://localhost/ seguido del nombre del archivo o carpeta contenedora de los archivos
  • Los datos para la conexión a MySQL predeterminados en XAMPP son:
  • Servidor: localhost
  • Usuario: root
  • Contraseña:  No tiene contraseña, dejar solo comillas-comillas -> ""
PASO 4. A programar la página PHP con acceso a datos

https://programarenphp.wordpress.com/2010/11/02/como-hacer-una-consulta-en-php-y-mysql/

PASO 5. Eres un experto!!!!

lunes, 23 de mayo de 2016

Fondo a JFRAME Java

Simplemente puedo decir ¡que complicado!, yo siempre he dicho a mis alumnos que todo es posible desde un lenguaje de programación en este caso JAVA. Pero poner fondo a un jFrame resulto algo que no era tan simple. Muchos de los códigos en internet no están lo suficientemente descritos y provocan algunos problemas de uso, he robado ideas de algunos y el resultado lo comparto a continuación.

Para dar solución a esta situación fue necesario crear una clase que hereda de jPanel para la sobreescritura de su método de PAINT. Se ha creado para eso un archivo por separado "MiPanel.java" (link de descarga) que debe colocarse junto al programa que lo va a utilizar.



Es importante modificar la linea "package" dentro del MiPanel.java por el nombre de paquete  utilizado por tu proyecto.

Ahora, una vez agregado los archivos necesarios, debemos crear un nuevo paquete de fuentes (carpeta) dando click derecho sobre el nombre del proyecto y seleccionado la opción "New folder" llamada "imagenes" (OJO es sin acento) donde se almacenará la imagen de fondo, en mi caso "tiempo.jpg"


Finalmente lo único restante es, agregar el código fuente dentro del programa al cual vamos a poner el fondo, primero debemos ubicar la función main, que debe ser parecida a la siguiente imagen:


Él cual tendremos que modificar, creando una instancia de la clase MiPanel llamando a la variable "fondo"; es importante recalcar que dicha clase permite indicar el nombre de la imagen a mostrar, así como también ancho y alto.

MiPanel fondo = new MiPanel("tiempo.jpg", 500, 300);

 Donde tiempo,jpg debe ser reemplazado por el nombre de la imagen que quieres mostrar como fondo; 500 es el ancho de la imagen y 300 es el alto. Quedando el código de la siguiente manera:



Espero que este material te ayude a colocar fondo a tus aplicaciones JAVA.


domingo, 22 de mayo de 2016

Generar archivo .JAR desde NetBeans para su distribución

Gusto en saludarles, como todos sabemos, si aprendemos y programamos soluciones de software en JAVA es para poder distribuirlos a nuestros clientes. Que mala idea seria obligar a nuestro cliente instalar una herramienta de desarrollo como NetBeans que muchas veces es soportado por maquinas con especificas características.

Es por ello ideal, tener una herramienta u opción para la generación de paquetes ejecutables (.jar) que puedan copiarse a una USB y poder instalarlos en los equipos clientes, Netbeans cuenta con una opción para dicha tarea.

A continuación les dejo una forma de hacerlo:

Primero cabe mencionar, que tengo un proyecto llamado ejemplosJFrame que contiene varios programas por lo cual, para compilarlo tendría que separarlos cada uno; afortunadamente en NetBeans puedes indicar el programa INICIAL mediante la propiedad "Main Class" del menú ejecutar como lo muestra la siguiente imagen.

También es importante tomar en cuenta que para poder compilar todos los programas incluidos en el proyecto NO DEBEN TENER ERRORES.


Una vez realizado esto lo que sigue es ir al menú RUN de Netbeans y presionar sobre "Clean and build project"


NetBeans nos debe confirmar que ya se construyo el archivo "car" de nuestra aplicación con un mensaje de BUILD SUCCESSFUL el cual nos indica que la construcción ha sido exitosa . Es en este momento que en la carpeta de nuestro proyecto se ha creado una nueva carpeta llamada dist en la cual esta nuestro archivo jar :
image
image

Este tutorial, inserta material del siguiente link:
http://javax-peru.blogspot.mx/2009/04/generar-un-archivo-jar-ejecutable.html