Mostrando entradas con la etiqueta Tópicos Avanzados de Programación. Mostrar todas las entradas
Mostrando entradas con la etiqueta Tópicos Avanzados de Programación. Mostrar todas las entradas

miércoles, 18 de mayo de 2016

Práctica de Android.

Terminar la práctica de la clase pasada agregando, por medio de estructuras IF/ELSE, si la persona tiene sobrepeso. Para eso hay que consultar una tabla del IMC (Índice de Masa Corporal).

El diseño de la interfaz es:



El código de la aplicación es :

package com.interconinental.wk1.imc_ejemplo_1;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

import static java.lang.Math.pow;
import static java.lang.Math.sqrt;

public class MainActivity extends AppCompatActivity {

    private EditText etPeso;
    private  EditText etEstatura;
    private TextView tvIMC;
    private Button btnIMC;
    double peso;
    double est;
    double resp;
    String sResp;

    @Override    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        etPeso = (EditText) findViewById(R.id.etPeso);
        etEstatura = (EditText) findViewById(R.id.etEstatura);
        tvIMC = (TextView) findViewById(R.id.tvIMC);
        btnIMC = (Button) findViewById(R.id.btnCalcular);

        btnIMC.setOnClickListener(new View.OnClickListener() {
            @Override            public void onClick(View view) {
                peso = Double.parseDouble(etPeso.getText().toString());
                est = Double.parseDouble(etEstatura.getText().toString());

                resp = Math.round(peso / pow(est, 2));

                sResp = tvIMC.getText().toString()+" "+Double.toString(resp);

                //sResp = Double.toString(resp);
                tvIMC.setText(sResp);
            }
        });


    }
}

jueves, 12 de mayo de 2016

Resumen de temas Android



Relizar un resumen de los siguientes links en su cuaderno.

  1. Conceptos básicos.
  2. Entorno de desarrollo Android (Android Studio)
  3. Estructura de un proyecto Android (Android Studio)
  4. Componentes de una aplicación Android (Android Studio)

jueves, 3 de marzo de 2016

Proyecto para graficar con GDI+

1.- Realice la práctica que se encuentra en el siguiente link https://drive.google.com/file/d/0B4wukMfAIfuAMUJCSWg0TlotTEk/view?usp=sharing

2.- Programe los ejemplos de la siguiente página web: http://www.c-sharpcorner.com/UploadFile/mahesh/gdi_plus12092005070041AM/gdi_plus.aspx

3.- Para la evaluación se tomará en cuenta un proyecto. El tema será un robot personalizado. Cada dibujo debe ser diferente de todos los demás.


jueves, 28 de enero de 2016

Programa del cubo de R

public class Cubo
{


    public int lados; //2
    public string[] colores; //rojo, azul

    public Cubo(int lados, string[] colores)
{
        this.lados = lados;
        this.colores = colores;
    }


}

class CuboR
    {
        Cubo[] cubo;

        public CuboR() {

            cubo = new Cubo[4];

            string[] s1 =  { "rojo" };
            string[] s2 = { "verde","azul" };
            string[] s3 = { "rojo","amarillo","naranja" };
            string[] s4 = { "blanco","azul" };

            cubo[0] = new Cubo(1, s1);
            cubo[1] = new Cubo(2, s2);
            cubo[2] = new Cubo(3, s3);
            cubo[3] = new Cubo(2, s4);

        }

        public void muestraCubos() {
            for (int i=0;i < 4; i++) {
                Console.WriteLine(cubo[i].lados);
                for (int j = 0; j < cubo[i].colores.Length; j++)
                    Console.WriteLine(cubo[i].colores[j]);
            }
        }
    }

En el programa principal poner

CuboR cr = new CuboR();

            cr.muestraCubos();

            Console.Read();

miércoles, 2 de julio de 2014

CRUD básico para hacer la tarea con Mysql y C#

1.- Para este minitutorial se requiere haber instalado el driver de MySQL para windows junto con la base de datos MySQL, ya sea que la instales independientemente o a través del programa WAMPSERVER.

2.- Crear una base de datos, dentro de la cual debe de tener una tabla que se llame EMPLEADOS. Los nombres de las tablas en MySQL solo se permiten en minúsculas, por lo cual no se esfuercen en tratar de forzar el administrador de base de datos preferido (MySQL Workbench, phpMyAdmin, etc.).

Tabla empleados. Vista desde MySQL Workbench. Click para expandir.
3.- Crear una forma en Visual Studio, donde hay que hacer la referencia hacia las librerías de MySQL.

Forma en Visual Studio 2012. El círculo rojo muestra la referencia para poder utilizar el ensambaje de MySQL.

4.- Manos a la obra!... mejor dicho... Manos al código. El listado completo aquí y comentado!

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using MySql.Data; //1.- Agregar la referencia de las librerías de MySql
using MySql.Data.MySqlClient;


namespace ejemploMysql
{
    public partial class Form2 : Form
    {
        //Atributos que vamos a utilizar dentro de nuestra forma.
        private string servidor = "localhost";
        private string baseDatos = "practicaunipoli";
        private string usuario = "root";
        private string password = "";
        private string idEmpleado;
        private string nomEmpleado;
        private string emEmpleado;
        private bool bandera = false; //Se utiliza para jugarle rudo al datagridview!

        public Form2()
        {
            InitializeComponent();
        }

        private void Form2_Load(object sender, EventArgs e)
        {
            this.TraerDatos(); //Método que se emplea para generar la consulta de los datos.
            //Modificamos los encabezados de nuestro datagridview llamado dgvEmpleados.
            dgvEmpleados.Columns[0].HeaderText = "ID";
            dgvEmpleados.Columns[1].HeaderText = "NOMBRE";
            dgvEmpleados.Columns[2].HeaderText = "E-MAIL";

            //Agregamos dos columnas tipo botón, para realizar acciones de editar y borrar!

            DataGridViewButtonColumn colEditar = new DataGridViewButtonColumn();
            colEditar.Name = "editar";
            colEditar.HeaderText = "EDITAR";
            dgvEmpleados.Columns.Add(colEditar);

            DataGridViewButtonColumn colBorrar = new DataGridViewButtonColumn();
            colBorrar.Name = "borrar";
            colBorrar.HeaderText = "BORRAR";
            dgvEmpleados.Columns.Add(colBorrar);

        }

        private void TraerDatos() {
            
            dgvEmpleados.Refresh();
            //Debido al refresh tuve que utilizar una propiedad "bandera" por que me
            //desplazaba de lugar las columnas. Esto lo pueden otimizar y mejorar.
            //Alguna otra opción??? dejeme un comentario en el blog!!!

            //Hacemos la conexión a la base de datos con la clase MySqlConnection
            //y la cadena de conexión

            MySqlConnection _con = new MySqlConnection();
            _con.ConnectionString = "Data Source=" + servidor + "; Database=" + baseDatos + "; Uid=" + usuario + "; Pwd=" + password;
            _con.Open();

            //Creamos un objeto de tipo Datatable para después
            //llenarlos de datos a través del objeto MySqlDataAdapter

            DataTable dtDatos = new DataTable();

            MySqlDataAdapter mdaDatos = new MySqlDataAdapter("Select * from empleados", _con);
            _con.Close();
            
            mdaDatos.Fill(dtDatos);
            //Con los datos listos en nuestra tabla llenamos el datagridview

            dgvEmpleados.DataSource = dtDatos;
            
            
        }

        

        private void button1_Click(object sender, EventArgs e)
        {
            /*El botón de la plicación es dinámico. Al inicio funcionará
            para que la aplicación guarde un registro nuevo.
            Después puede funcionar para editar un registo previamente cargado en los
            textboxes de la forma.
            */

            if (this.button1.Text == "EDITAR") {

                MySqlConnection _con = new MySqlConnection();
                _con.ConnectionString = "Data Source=" + servidor + "; Database=" + baseDatos + "; Uid=" + usuario + "; Pwd=" + password;
              
                //string sql para dar un update a la tabla tomando los valores
                //previamente cargados en otra función.

                string sql2 = "Update practicaunipoli.empleados set nombre = '"+this.txtNombre.Text+"', email ='"+txtEmail.Text+"' where idempleados = "+this.idEmpleado+";";

                MySqlCommand myCom2 = new MySqlCommand(sql2, _con);
                MySqlDataReader MyReader2;
                _con.Open();
                MyReader2 = myCom2.ExecuteReader();
                _con.Close();

                //Vaciamos los textbox y restablecemos el texto del botón
                this.txtNombre.Text = "";
                this.txtEmail.Text = "";
                this.button1.Text = "NUEVO";
                //mandamos llamar de nuevo el método que refresca y llena de nuevo
                //el dataridview
                this.TraerDatos();
                this.idEmpleado = "";
                
            }
            else
            {
                //Creamos la cadena sql a ejecutar la inserción
                string sql = "Insert into practicaunipoli.empleados(nombre,email) values('" + this.txtNombre.Text + "','" + this.txtEmail.Text + "');";

                //Creamos la conección a la base de datos
                MySqlConnection _con = new MySqlConnection();
                _con.ConnectionString = "Data Source=" + servidor + "; Database=" + baseDatos + "; Uid=" + usuario + "; Pwd=" + password;
                _con.Open();

                MySqlCommand MyCon = new MySqlCommand(sql, _con);
                MySqlDataReader MyReader;
                MyReader = MyCon.ExecuteReader();
                MessageBox.Show("Empleado Agregado");
                _con.Close();
                this.txtNombre.Text = "";
                this.txtEmail.Text = "";

                this.TraerDatos();
            }

        }

        private void dgvEmpleados_CellClick_1(object sender, DataGridViewCellEventArgs e)
        {
            //Con el método CellClick controlamos evento del usuario
            // al tratar de borrar o editar un registro de la tabla.

            if (dgvEmpleados.Columns[e.ColumnIndex].Name == "borrar")
            {
                //Usamos un atributo que se llama bandera ya que al refrescar el datagridview
                // movía de posición las columnas! y tronaba el programa!!!!

                if (bandera) {
                    this.idEmpleado = dgvEmpleados.Rows[e.RowIndex].Cells[2].Value.ToString();
                }
                else
                {
                    this.idEmpleado = dgvEmpleados.Rows[e.RowIndex].Cells[0].Value.ToString();
                    bandera = true;
                }

                MySqlConnection _con = new MySqlConnection();
                _con.ConnectionString = "Data Source=" + servidor + "; Database=" + baseDatos + "; Uid=" + usuario + "; Pwd=" + password;
                
                //sql de borrado!!!
                string sql = "delete from practicaunipoli.empleados where idempleados = " + idEmpleado + ";";
                MySqlCommand myCommand = new MySqlCommand(sql, _con);
                MySqlDataReader myReader;
                _con.Open();
                myReader = myCommand.ExecuteReader();
                MessageBox.Show("Dato del empleado Eliminado..." + idEmpleado);
                _con.Close();
                this.TraerDatos();
                this.idEmpleado = "";
            }

            if (dgvEmpleados.Columns[e.ColumnIndex].Name == "editar")
            {


                if (bandera)
                {
                    this.idEmpleado = dgvEmpleados.Rows[e.RowIndex].Cells[2].Value.ToString();
                    this.nomEmpleado = dgvEmpleados.Rows[e.RowIndex].Cells[3].Value.ToString();
                    this.emEmpleado = dgvEmpleados.Rows[e.RowIndex].Cells[4].Value.ToString();
                }
                else
                {
                    this.idEmpleado = dgvEmpleados.Rows[e.RowIndex].Cells[0].Value.ToString();
                    this.nomEmpleado = dgvEmpleados.Rows[e.RowIndex].Cells[1].Value.ToString();
                    this.emEmpleado = dgvEmpleados.Rows[e.RowIndex].Cells[2].Value.ToString();
                    bandera = true;
                }

                
                this.txtNombre.Text = nomEmpleado;
                this.txtEmail.Text = emEmpleado;
                this.button1.Text = "EDITAR";
            }
        }
    }
}

Bueno, tenía mucho que no escribía algo como esto en el blog. Espero que lo aprovechen, a demás de sus comentarios al respecto. Esto no les puede resolver un proyecto completo, ni tampoco es una práctica hecha a la medida. El trabajo de modificación o adaptación a proyectos y/o tareas académicas es de ustedes.

@rezzaca #RT

jueves, 10 de mayo de 2012

Examen TAP!!


1.- Desarrolle un programa en hilos, que ejecute dos métodos. Uno debe de calcular el perímetro de un círculo y el otro debe de calcular el perímetro de un triángulo.
2.- Desarrolle un programa en hilos, que ejecute dos métodos. Uno debe de mostrar la tabla de 7 y el otro debe de mostrar la secuencia de fibonacci.
3.- Desarrolle un programa en hilos, que ejecute dos métodos.Uno debe de calcular la fórmula de la aceleración y el otro, el tiro parabólico.

jueves, 19 de abril de 2012

Práctica de Hilos 2.


//Programa 1


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;


namespace ThreadsPropiedades
{
   


    class Program
    {
        static void Main(string[] args)
        {
            Program p = new Program();
            Thread t = new Thread(new ThreadStart(p.met1));
            t.Start();
             //Este método no interrumpe el thread
            


            Console.WriteLine(t.IsAlive);
            Console.WriteLine(t.ThreadState);
            Thread.Sleep(10000);
            Console.WriteLine("-----------------------");
            t.Interrupt();
            Console.WriteLine(t.ThreadState);
            Console.WriteLine("-----------------------");
            Thread.Sleep(5000);
            Console.WriteLine(t.IsAlive);
            Console.WriteLine(t.ThreadState);


            Console.ReadKey();
        }


        public void met1() {


            try
            {
                Thread.Sleep(Timeout.Infinite);


            }
            catch (ThreadInterruptedException) {


                Console.WriteLine("Forzado....");
            
            }


            Console.ForegroundColor = ConsoleColor.Red;
            Console.WriteLine("Despierta........");
            
        }


        
       
    }
}


//---------------------------------------------------------------



using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;


namespace SeguridadThreadsMutex1
{
    class DataBase
    {
        Mutex mutex = new Mutex();


        public void SaveData(string text)
        {
            mutex.WaitOne();
            
           Console.WriteLine("------------------------------");
           Console.WriteLine("DataBase.SaveData: Iniciado.....");
           Console.WriteLine("DataBase.SaveData:
Ejecutándose.....");
                Console.WriteLine("---------------------------------------");
                for (int i = 0; i <= 100; i++)
                {
                    Console.Write(i + text);
                }
                Console.WriteLine("---------------------------------------");
                Console.WriteLine("DataBase.SaveData: Finalizado.....");


                mutex.ReleaseMutex();
        }


    }


    class ThreadMutexApp
    {


        public static DataBase db = new DataBase();


        public static void WorkedThreadMethod1()
        {
            Console.WriteLine("------------------------------------------------------");
            Console.WriteLine("Hilo de ejecución secundario #1.-Iniciado..........");
            Console.WriteLine("Hilo de ejecución secundario #1.-Invocando DataBase.SaveData");
            Console.WriteLine("---------------------------------------------------------------");
            db.SaveData("x");
            Console.WriteLine("----------------------------------------------------------------");
            Console.WriteLine("Hilo de ejecución secundario #1.-Retornando desde Output");
        }


        public static void WorkedThreadMethod2()
        {
            Console.WriteLine("-------------------------------------------------------------");
            Console.WriteLine("Hilo de ejecución secundario #2.-Iniciado..........");
            Console.WriteLine("Hilo de ejecución secundario #2.-Invocando DataBase.SaveData");
            Console.WriteLine("--------------------------------------------------------------");
            db.SaveData("o");
            Console.WriteLine("--------------------------------------------------------------");
            Console.WriteLine("Hilo de ejecución secundario #2.-Retornando desde Output");
        }




        public static void Main()
        {


            Console.BackgroundColor = ConsoleColor.Black;
            Console.ForegroundColor = ConsoleColor.Green;
            Console.Clear();


            ThreadStart worker1 = new ThreadStart(WorkedThreadMethod1);
            ThreadStart worker2 = new ThreadStart(WorkedThreadMethod2);


            Console.WriteLine("Principal.- Creando Hilos de ejecución secundarios......");


            Thread t1 = new Thread(worker1);
            Thread t2 = new Thread(worker2);


            t1.Start();
            t2.Start();


            Console.ReadKey();
        }
    }
}


//---------------------En las conclusiones--------------------------------------------------
Nota: Poner qué es lo que hace cada programa. Agregar información teórica a la práctica.

jueves, 29 de marzo de 2012

Práctica de Hilos.

Instrucciones:


  • Mejore el siguiente código.
  • Haga pruebas con él.
  • Saque conclusiones del uso de hilos.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;

namespace simulacionCaja
{
    class caja2
    {
        Queue<int> clientes;// = new Queue<int>();
        int op = 0; //número de operación a realizar
        int NumCaja;

        //public caja() { }

        public void caja_proc(Object n) {

            this.NumCaja = (int)n;
            int[] c = { 1, 2, 3, 4, 5, 6, 7 }; //vector de clientes
            clientes = new Queue<int>(c);
            Random rOp = new Random();
            for (int i = 0; i < c.Length; i++)
            {
                this.op = rOp.Next(1, 4);
                this.SeleccionarOpcion();
            }
        }

        public void Pago() {

            Console.WriteLine("Caja #" + this.NumCaja + " atendiendo a cliente " + clientes.Peek()+" Pagando");
            Thread.Sleep(12000);
            clientes.Dequeue();
        }

        public void Retiro()
        {

            Console.WriteLine("Caja #" + this.NumCaja + " atendiendo a cliente " + clientes.Peek() +" Retirando");
            Thread.Sleep(8000);
            clientes.Dequeue();
        }

        public void Cosulta()
        {

            Console.WriteLine("Caja #" + this.NumCaja + " atendiendo a cliente " + clientes.Peek() + " Consultando saldo");
            Thread.Sleep(4000);
            clientes.Dequeue();
        }

        public void Transaccion()
        {

            Console.WriteLine("Caja #" + this.NumCaja + " atendiendo a cliente " + clientes.Peek() + " Haciendo transacción");
            Thread.Sleep(20000);
            clientes.Dequeue();
        }

        public void SeleccionarOpcion() {

             //genera una opción del 1 al 4;

            switch (this.op) { 
            
                case 1:
                    this.Pago();
                    break;
                case 2:
                    this.Retiro();
                    break;
                case 3:
                    this.Cosulta();
                    break;
                case 4:
                    this.Transaccion();
                    break;
            }
        
        }
    }
}


//---------------------------------------------------------------

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;

namespace simulacionCaja
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.BackgroundColor = ConsoleColor.Black;
            Console.ForegroundColor = ConsoleColor.Green;
            Console.Clear();
            //caja2 c1 = new caja2();
            //c1.caja_proc(1);

            caja2 c1 = new caja2();
            caja2 c2 = new caja2();
            caja2 c3 = new caja2();
            caja2 c4 = new caja2();

            Thread h1 = new Thread(c1.caja_proc);
            Thread h2 = new Thread(c2.caja_proc);
            Thread h3 = new Thread(c3.caja_proc);
            Thread h4 = new Thread(c4.caja_proc);

            h1.Start(1);
            h2.Start(2);
            h3.Start(3);
            h4.Start(4);

            h1.Join();
            h2.Join();
            h3.Join();
            h4.Join();
            //Console.WriteLine("Borrando todo");
            //Thread.Sleep(1000);
            //Console.Clear();
            Console.ReadKey();
        }
    }
}

miércoles, 7 de marzo de 2012

Agregar código a la práctica GDI+.


Agreguen una investigación sobre el uso de regiones en GDI+.




private void pictureBox4_Paint(object sender, PaintEventArgs e)
        {
            Graphics g = e.Graphics;
            //Tartas.....????


            /*Un gráfico de tarta es una forma parecida a una tarta; esto es,
             * un arco junto aon las dos líneas que unen sus vértices en el centro
             * de la elipse a la que pertenece el arco.
             * 
             * Para dibujar este tipo de gráficos el objeto Graphics proporciona
             * el método DrawPie que tiene como parámetros los miembros del método
             * DrawArc.**/
            pictureBox4.BackColor = Color.Black;
            Rectangle rect = new Rectangle(10, 10, 200, 100);
            Pen lapiz = new Pen(Color.Green, 3);
            g.DrawPie(lapiz, rect, 30, 150);


            //Polígonos


            /* Un polígono es una forma cerrada definida por tres o más puntos.
             * Por ejemplo un triángulo y un rectángulo son polígonos.
             * 
             * Paradibujar un polígono, son necesarios un objeto Graphics que
             * proporciona el método DrawPolygon, un objeto Pen y una matriz de
             * objetos Point (o PointF).
             * 
             * Esta matriz almacenará los puntos que se van a conectar mediante
             * líneas rectas.
             * 
             * El método DrawPolygon cierra el polígono de forma automática.
             * */


            PointF[] pentagono = {
                                     new Point(20,150),
                                     new Point(130,120),
                                     new Point(230,155),
                                     new Point(190,200),
                                     new Point(45,195)
                                 };


            g.DrawPolygon(lapiz, pentagono);


            //Curvas flexibles


            /* Dos tipos de curvas: cardinales y Bézier.
             * 
             * Cardinal: es una secuencia de curvas individuales combinadas
             * para formar una curva mayor; se especifica mediante una matriz
             * de puntos y un parámetro de tensión que por omisión vale 0.5,
             * y se dibuja invocando a DrawCurve.
             * 
             * Bézier se especifica con cuatro puntos: dos puntos correspondientes
             * a los extremos(p1 y p2) y dos puntos de control (c1 y c2). La curva
             * comienza en p1 y acaba en p2. La curva no pasa por los puntos de 
             * control (c1 y c2), pero estos se comportan como imanes, y tiran de la
             * curva en ciertas direcciones e influyen en el modo en que la curva
             * se dobla. Se dibuja invocando a DrawBeizer.
             * */
            Pen lapizRojo = new Pen(Color.Red);


            Point[] puntos = { 
                             
                                 new Point(25,25),
                                 new Point(50,15),
                                 new Point(100,5),
                                 new Point(120,25),
                                 new Point(150,50),
                                 new Point(220,200),
                                 new Point(120,120),
                             };


            //Dibujar líneas entre los puntos.


            g.DrawLines(lapizRojo, puntos);


            //Dibujar la curva


            g.DrawCurve(Pens.Green, puntos);


            //Puntos que definen la curva flexible de Bézier


            Point p1 = new Point(30, 120);
            Point p2 = new Point(150, 200);
            Point c1 = new Point(75, 10);
            Point c2 = new Point(50, 210);


            //Dibujar la curva


            g.DrawBezier(Pens.GreenYellow, p1, p2, c1, c2);




        }


        private void pictureBox5_Paint(object sender, PaintEventArgs e)
        {
            Graphics g = e.Graphics;


            //Trazados


            /* Un trazado es un objeto de la clase GraphicsPath. Se trata de una
             * figura formada por una secuencia de líneas, rectángulos, elipses
             * arcos, polígonos, curvas flexibles, etc., cuyos puntos inicial
             * y final pueden o no ser coincidentes.
             * 
             * Métodos: AddLine, AddRectangle, AddEllipse, AddArc, AddPolygon,
             * AddCurve y AddBeizer.
             * Ejemplo: **/


            GraphicsPath trazado = new GraphicsPath();


            Rectangle rect = new Rectangle(10, 10, 200, 100);
            trazado.AddArc(rect, 45, 135);
            trazado.AddLine(80, 100, 160, 200);
            trazado.CloseFigure();


            g.DrawPath(Pens.Blue, trazado);


        } //fin de PictureBox