Ejercicios resueltos en C# : Control de alcoholemia


La Dirección General de Tráfico necesita un programa que, dado el tipo de vehículo que conduce un conductor, su índice de alcohol y si ha sido medido en sangre o en aire, determine si da positivo en el control de alcoholemia o no. La tasa máxima de alcohol tanto en sangre como en aire según el tipo de vehículo se resume en la siguiente tabla:

Vehiculo Indicador Tasa maxima en sangre Tasa maxima en aire
Camión C 0.3 0.15
Autobús A 0.3 0.15
Turismo T 0.5 0.25
Motocicleta M 0.3 0.15


Como realizar este ejercicio en C#?


1ro. Crear un formulario con dos textboxes, el que contendra el Tipo de vehiculo se llamara txttipovehiculo y que contendra el indice de alcohol txtindicealcohol asi como dos radio buttons llamados rbtsangrerbtaire.

2do. El botón "Determinar" hará el trabajo, por lo que este es el codigo que hará que el mismo funcione:


try
            {
                double indecealcohol;
                indecealcohol = Convert.ToDouble(txtindicealcohol.Text);

                if (txttipovehiculo.Text != "C" && txttipovehiculo.Text != "A" && txttipovehiculo.Text != "T" && txttipovehiculo.Text != "M")
                {

                    MessageBox.Show("Indicador no válido!");

                    txttipovehiculo.SelectionStart = 0; //Sombrear el texto
                    txttipovehiculo.SelectionLength = txttipovehiculo.Text.Length; //Sombrear el texto
                    txttipovehiculo.Focus(); 

                } 
                else
                {

                    if (txttipovehiculo.Text == "C")
                    {

                        if (rbtsangre.Checked)
                        {
                            if (indecealcohol >= 0.3)
                            {
                                lblresultado.Text = "Positivo".ToString();
                            }
                            else
                            {
                                lblresultado.Text = "Negativo".ToString();
                            }
                        }
                        else
                        {

                            if (rbtaire.Checked == true)
                            {
                                if (indecealcohol >= 0.15)
                                {
                                    lblresultado.Text = "Positivo".ToString();
                                }
                                else
                                {
                                    lblresultado.Text = "Negativo".ToString();
                                }

                            }
                        }
                    }
                    else
                    {

                        if (txttipovehiculo.Text == "A")
                        {

                            if (rbtsangre.Checked)
                            {
                                if (indecealcohol >= 0.3)
                                {
                                    lblresultado.Text = "Positivo".ToString();
                                }
                                else
                                {
                                    lblresultado.Text = "Negativo".ToString();
                                }
                            }
                            else
                            {
                                if (rbtaire.Checked)
                                {
                                    if (indecealcohol >= 0.15)
                                    {
                                        lblresultado.Text = "Positivo".ToString();
                                    }
                                    else
                                    {
                                        lblresultado.Text = "Negativo".ToString();
                                    }

                                }
                            }

                        }
                        else
                        {
                            if (txttipovehiculo.Text == "T")
                            {

                                if (rbtsangre.Checked)
                                {
                                    if (indecealcohol >= 0.5)
                                    {
                                        lblresultado.Text = "Positivo".ToString();
                                    }
                                    else
                                    {
                                        lblresultado.Text = "Negativo".ToString();
                                    }
                                }
                                else
                                {
                                    if (rbtaire.Checked)
                                    {
                                        if (indecealcohol >= 0.25)
                                        {
                                            lblresultado.Text = "Positivo".ToString();
                                        }
                                        else
                                        {
                                            lblresultado.Text = "Negativo".ToString();
                                        }

                                    }
                                }

                            }
                            else
                            {
                                if (txttipovehiculo.Text == "M")
                                {

                                    if (rbtsangre.Checked)
                                    {
                                        if (indecealcohol >= 0.3)
                                        {
                                            lblresultado.Text = "Positivo".ToString();
                                        }
                                        else
                                        {
                                            lblresultado.Text = "Negativo".ToString();
                                        }
                                    }
                                    else
                                    {
                                        if (rbtaire.Checked)
                                        {
                                            if (indecealcohol >= 0.15)
                                            {
                                                lblresultado.Text = "Positivo".ToString();
                                            }
                                            else
                                            {
                                                lblresultado.Text = "Negativo".ToString();
                                            }

                                        }
                                    }
                                }
                            }
                        }
                    }
                }
                

            }
            catch (Exception msg)
            {

                MessageBox.Show(msg.Message);
            }


3ro. Adicionalmente el botón "Limpiar":

            txtindicealcohol.Clear();
            txttipovehiculo.Clear();
            lblresultado.Text = "";
            txttipovehiculo.Focus();


y el botón "Salir":

Close();

Ejercicios resueltos en C#: Precio de pasaje de ferrocarril

"Determinar el precio de un pasaje de ida y vuelta en ferrocarril, conociendo la distancia a recorrer y el número de días de estancia en el destino. Si este es mayor que 7 y la distancia superior a 800km, el pasaje tiene una reducción del 30%. El precio por km es $0.80."

Como realizar este ejercicio en C#?

1ro. Crear un formulario con tres textboxes, el que contendra La distancia recorrer se llamara txtdistancia, el de los dias de estancia txtdiasestancia y el que contendra lel precio del pasaje txtprecio_pasaje.

2do. El botón "Calcular" hará el trabajo, por lo que este es el codigo que hará que el mismo funcione:

    try
            {
                double distancia, dias_estancia, precioxkm, precio_pasaje;

                distancia = Convert.ToInt16(txtdistancia.Text);
                dias_estancia = Convert.ToInt16(txtdiasestancia.Text);
                precioxkm = 0.80;
                if (dias_estancia > 7 && distancia > 800)
                {
                    precio_pasaje = precioxkm * distancia - (precioxkm * distancia * 0.30);
                    txtprecio_pasaje.Text = "$" + precio_pasaje.ToString();
                }
                else
                {
                    precio_pasaje = precioxkm * distancia;
                    txtprecio_pasaje.Text = "$" + precio_pasaje.ToString();
                }

            }
            catch (Exception msg)
            {

                MessageBox.Show(msg.Message);
            }


          

3ro. Adicionalmente el botón "Limpiar":


            txtdiasestancia.Clear();
            txtdistancia.Clear();
            txtprecio_pasaje.Clear();

          

Factura en DFD

Para emprezar en una figura de lectura declaramos las variables canart y precio.

Elemento Variable
Cantidad de articulos canart
Precio del articulo precio

Luego en una figura de asignacion asignamos a las constantes itbis, subtotal y total las siguientes operaciones:
Constante Operacion
itbis cantart*precio* 0.16
subtotal cantart *precio
total cantart *precio + itbis

En una figura de Salida escribimos el sigte mensaje (entre comillas simples):
'Desea aplicar descuento : si/no'

En la figura de lectura leemos la variable "d". Para cuando se lea esta variable si deseamos aplicar el descuento escribimos 'si', si no deseamos aplicar descuento entonces escribimos 'no' (entre comillas simples).

Despues colocamos una variable de Desicion con el texto: d='si'. Esto pregunta si la variable "d" es igual a 'si'. Si es asi el programa seguira ejecutandose hacia la derecha, de lo contrario se ira hacia la izquieda.

En caso de que se aplique el descuento, utilizaremos una variable de lectura con llamada "desc" que representara el valor del descuento a aplicar a la factura. 

Despues con una figura de asignacion asignamos a las variables p_desc, tdesc y total_desc las sigtes opetaciones.

ConstanteOperacion
p_descdesc /100
tdesctotal * p_desc
total_desctotal -tdesc


En caso de que no se valla a aplicar un descuento a la factura es necesario asignar a las constantes p_desc y total_desc el valor de 0, en ua figura de asignacion de el lado izquierdo de la figura de Desicion.

Finalmente en una figura de Salida insertar las variable necesarias para imprimir la factura.

'precio=',precio, '   ','itbis=',itbis ,'   ','subtotal=',subtotal ,'   ','total=',total ,'   ', 'descuento=' ,p_desc, '%', '  ' ,'descuento aplicado=',total_desc





Convertir de numeros a letras en Visual Basic 6.0

El siguiente programa convertira los numeros en letras del 0 al 10,000. Para ellos utilizaremos 2 textbox llamado txtvalor y txtletras, y un commandbutton que se llamara Command1.

El siguiente es el codigo para hacer funcionar el programa. Copiar y pegar en el commandbutton Command1. 




Dim n, z, y, t As String


Private Sub Command1_Click()
n = Val(txtvalor)

If n = 0 Then
nn = ("cero")
End If

z = ""
y = ""
t = ""

For x = 1 To 4


If n = 1 Then
nn = ("uno")
End If


If n = 2 Then
nn = ("dos")
End If


If n = 3 Then
nn = ("tres")
End If


If n = 4 Then
nn = ("cuatro")
End If


If n = 5 Then
nn = ("cinco")
End If


If n = 6 Then
nn = ("seis")
End If


If n = 7 Then
nn = ("siete")
End If


If n = 8 Then
nn = ("ocho")
End If


If n = 9 Then
nn = ("nueve")
End If


If n = 10 Then
nn = ("dies")
End If


If n = 11 Then
nn = ("once")
End If


If n = 12 Then
nn = ("doce")
End If


If n = 13 Then
nn = ("trece")
End If


If n = 14 Then
nn = ("catorce")
End If


If n = 15 Then
nn = ("quince")
End If


If n = 16 Then
nn = ("dieciseis")
End If


If n = 17 Then
nn = ("diecisiete")
End If


If n = 18 Then
nn = ("dieciocho")
End If


If n = 19 Then
nn = ("diecinueve")
End If


If n = 20 Then
nn = ("veinte")
End If


If n = 21 Then
nn = ("veintiuno")
End If


If n = 22 Then
nn = ("veintidos")
End If


If n = 23 Then
nn = ("veintitres")
End If


If n = 24 Then
nn = ("veinticuatro")
End If


If n = 25 Then
nn = ("veinticinco")
End If


If n = 26 Then
nn = ("veintiseis")
End If


If n = 27 Then
nn = ("veintisiete")
End If


If n = 28 Then
nn = ("veintiocho")
End If


If n = 29 Then
nn = ("veintinueve")
End If

If n = 30 Then
nn = ("treinta")

End If


If n > 30 And n < 40 Then
z = "treinta"
s = n - 30
n = s
End If

If n = 40 Then
nn = ("cuarenta")

End If

If n > 40 And n < 50 Then
z = "cuarenta"
s = n - 40
n = s
End If

If n = 50 Then
nn = ("cincuenta")

End If

If n > 50 And n < 60 Then
z = "cincuenta"
s = n - 50
n = s
End If



If n = 60 Then
nn = ("sesenta")

End If

If n > 60 And n < 70 Then
z = "sesenta"
s = n - 60
n = s
End If


If n = 70 Then
nn = ("setenta")

End If

If n > 70 And n < 80 Then
z = "setenta"
s = n - 70
n = s
End If

If n = 80 Then
nn = ("cincuenta")

End If

If n > 80 And n < 90 Then
z = "ochenta"
s = n - 80
n = s
End If



If n = 90 Then
nn = ("noventa")

End If

If n > 90 And n < 100 Then
z = "noventa"
s = n - 90
n = s
End If

If n = 100 Then
nn = ("cien")

End If


If n > 100 And n < 200 Then
y = "ciento"
s = n - 100
n = s
End If

If n = 200 Then
nn = ("doscientos")

End If

If n > 200 And n < 300 Then
y = "doscientos"
s = n - 200
n = s
End If

If n = 300 Then
nn = ("trescientos")

End If

If n > 300 And n < 400 Then
y = "trescientos"
s = n - 300
n = s
End If

If n = 400 Then
nn = ("cuatrocientos")

End If

If n > 400 And n < 500 Then
y = "cuatrocientos"
s = n - 400
n = s
End If

If n = 500 Then
nn = ("quinientos")

End If

If n > 500 And n < 600 Then
y = "quinientos"
s = n - 500
n = s
End If


If n = 600 Then
nn = ("seiscientos")

End If

If n > 600 And n < 700 Then
y = "seiscientos"
s = n - 600
n = s
End If


If n = 700 Then
nn = ("setecientos")

End If

If n > 700 And n < 800 Then
y = "setecientos"
s = n - 700
n = s
End If


If n = 800 Then
nn = ("ochocientos")

End If

If n > 800 And n < 900 Then
y = "ochocientos"
s = n - 800
n = s
End If


If n = 900 Then
nn = ("novecientos")

End If

If n > 900 And n < 1000 Then
y = "novecientos"
s = n - 900
n = s
End If

If n = 1000 Then
nn = ("mil")

End If

If n > 1000 And n < 2000 Then
t = "mil"
s = n - 1000
n = s
End If

If n = 2000 Then
nn = ("dos mil")

End If

If n > 2000 And n < 3000 Then
t = "dos mil"
s = n - 2000
n = s
End If

If n = 3000 Then
nn = ("tres mil")

End If

If n > 3000 And n < 4000 Then
t = "tres mil"
s = n - 3000
n = s
End If

If n = 4000 Then
nn = ("cuatro mil")

End If

If n > 4000 And n < 5000 Then
t = "cuatro mil"
s = n - 4000
n = s
End If

If n = 5000 Then
nn = ("cinco mil")

End If

If n > 5000 And n < 6000 Then
t = "cinco mil"
s = n - 5000
n = s
End If

If n = 6000 Then
nn = ("seis mil")

End If

If n > 6000 And n < 7000 Then
t = "seis mil"
s = n - 6000
n = s
End If

If n = 7000 Then
nn = ("siete mil")

End If

If n > 7000 And n < 8000 Then
t = "siete mil"
s = n - 7000
n = s
End If

If n = 8000 Then
nn = ("ocho mil")

End If

If n > 8000 And n < 9000 Then
t = "ocho mil"
s = n - 8000
n = s
End If

If n = 9000 Then
nn = ("mil")

End If

If n > 9000 And n < 10000 Then
t = "nueve mil"
s = n - 9000
n = s
End If

If n = 10000 Then
nn = ("dies mil")

End If

txtletras.Text = t & " " & " " & y & " " & z & " " & nn

Next
End Sub



Como funcionara el codigo este código:

Dim n, z, y, t As String: Se declaran las variables n, z, y, t tipo cadena.

n = Val(txtvalor): Se asigna a la variable "n" el valor del textbox "txtvalor" en el cual insertaremos el numero que queramos convertir a letra.

If n = 0 Then nn = ("cero") End If: Empezamos preguntando que si el valor de la variable "n"es igual a cero entonces la variable "nn" sera igual a la cadena "cero", este es el numero en letra.

t = "": Se inicializa la variable t con un valor vacio, se le asignas comillas por ser una variable tipo cadena.

For x = 1 To 4: El "For" sirve para repetir un evento la cantidad de veces especificadas en el mismo. En este caso el se repetira 4 veces ya que como se convertiran los numeros hasta el 10,000 las cifras de los numeros  que estan antes del 10,000 son 4.

Luego al igual se continuara preguntando con el If que numero es cual para imprimirlos en letras.

If n > 30 And n < 40 Then z = "treinta" s = n - 30 n = s End If: A partir de el numero 30 se utilizara la variable z para imprimir los numeros correspondientes a la decena. Con la variable "s" se resta a la variable "n" (el valor del textbox) en este caso 30, para conseguir el numero restante en letras.

Y asi sucesivamente...

La variable "t" representa la unidad de mil, la variable "y" la centena, "z" la decena y la variable "nn" representa la unidad.



Foto Christine by matmoon

PHP conexión a base de datos MySQL

Para conectarse a una base de datos en MySQL con PHP primero debemos crear la base de datos en MySQL, utilizando alguna interfaz, en my caso utilizo phpmyadmin que viene con el Appserv, el cual es mi servidor web local.  Los siguientes son los pasos para lograr la conexion:

1- Luego de haber instalado nuestro servidor web escribir en el navegador localhost/phpmyadmin.
2- Este pedira una auntetificacion de usuario mayormente el nombre de usuario por defecto es 'root', la contrasena sera la que hayas especificado en la instalacion del servidor web (esto dependera de cual servidor instales).
2- Especificar el nombre de la nueva base de datos (en phpmyadmin). Luego de esto preciona "Crear" o "Create" si esta en ingles.



4- Luego de haber creado la base de datos ir a nuestro editor y escribir el siguiente codigo:


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Documento sin titulo</title>
</head>

<body>


<?php
$server='localhost'; //Los mismo que 127.0.0.1
$user='root'; // Nombre de usuario de MySQL con el que te quiere conectar
$pass='admin'; // Contrasena de MySQL correspondiente al usuario
$db='bdConexion'; // Nombre de la base de datos

$conexion=mysql_connect($server,$user,$pass)or die("Error al conectarse a la base de datos").mysql_error();
mysql_select_db($db,$conexion) or die ("Error al seleccionar base de datos").mysql_error();
if ($conexion > 0)  {
echo "Conectado";
}
else
{
echo "No conectado";
}
?>

</body>
</html>


3- Si se ha conectado satisfactoriamente aparecera en la pantalla en mensaje "Conectado" de lo contrario aparecera "No conectado".

Notas:

mysql_connect: Abre una conexión al servidor MySQL
mysql_select_db: Seleccionar una base de datos MySQL

:)


Articulo relacionado 
¿Como programar en PHP?


Visual Basic 6.0: Convertir de Decimal a Binario

Para hacer este programa vamos a utilzar dos textboxes txt_entrada y txt_salida. Y un CommandButtom cmd_calcular.

El sigte es el codigo completo para realizar el programa:



Dim dec, bin As Integer
Dim sal As String


Private Sub cmd_calcular_Click()

dec = Val(txt_entrada.Text)
sal = ""


While dec > 0

bin = Fix(dec) Mod 2
dec = Fix(dec) / 2
sal = bin & sal
txt_salida.Text = Val(sal)

Wend

txt_salida.SetFocus

End Sub

 


Explicacion del código:

Dim dec, bin As Integer: Declaramos las variables dec y bin tipo entero.

Dim sal As String: Declaramos la variable sal tipo cadena.

dec = Val(txt_entrada.Text): Asignamos a la variable dec el valor del textbox txt_entrada al mismo tiempo que la funcion "Val" convierte el textbox en entero.

sal = "": Inicializamos la variable sal con un valor vacío.

While dec > 0: Mientras la variable dec sea mayor que 0 entonces ...

bin = Fix(dec) Mod 2: La variable "bin" será igual al valor de la variable dec Mod 2.. El mod se utiliza para obtener el residuo de una división. La división será entre el número que le indiquemos al lado, en este caso el numero 2, por ser 2 la base de los numeros binarios.

dec = Fix(dec) / 2: Luego de obtener el primer residuo la variable "dec" tendra el valor de ella misma entre 2.

sal = bin & sal: La variable "sal" sera igual al valor de la variable bin (que contiene el residuo de la división) concatenada con la misma variabe "sal" para ir acumulando el valor de los demas residuos que se generen mientras se ejecuta el WHILE.

txt_salida.Text = Val(sal) :  Finalmente se asigna a el textbox txt_salida el valor de "sal".

Wend: Aqui termina de ejecutar el While y vuelva hacia arriba mientras se cumpla la condición especificada en el mismo.



*Notas: 

Funcion Val: Devuelve los números contenidos en una cadena como un valor numérico del tipo adecuado.
Funcion Fix: Devuelven la parte entera de un número.
& : Se utiliza para concatenar caracteres.