Sunteți pe pagina 1din 19

UNP.

PROGRAMACION VISUAL

17. Estructura de Datos

Permite procesar una colección de datos que están relacionados entre sí, por ejemplo
la lista de notas de alumnos, procesar esta lista de forma independiente con variables
simples sería muy difícil, por el contrario las estructuras de datos facilitan la
manipulación y organización.
Se subdividen en:

Estáticas: Espacio fijo establecido de memoria.


 Arrays (Vectores y Matrices)
 Cadenas
 Registros
 Ficheros
Dinámicas: Sin restricciones y limitaciones en el espacio usado en memoria.
 Listas (Pilas y colas)
 Listas enlazadas
 Árboles
 Grafos
Arrays - Arreglos
Es un conjunto finito y ordenado de datos homogéneos.
Los arreglos pueden ser de una dimensión (vector), dos dimensiones (matriz) y “n”
dimensiones (matriz multidimensional)

Sintáxis Vector

Problema 15
Implementar un vector para almacenar las notas del curso de matemática de 5
alumnos; al final mostrar el promedio de esas notas.

V 0
0 14
1 15
2 13
3 11
4 16

Formulario:

H.A.P.Z.
UNP. PROGRAMACION VISUAL

Código del Botón ingresar


private void btnCargar_Click(object sender, EventArgs e)
{ //Declaración de variables
int[] notas = new int[7];
notas[0] = 14;
notas[1] = 15;
notas[2] = 13;
notas[3] = 11;
notas[4] = 16;
notas[5] = 18;
notas[6] = 19;
int suma = 0;
double promedio;
//Proceso
//Limpiar los datos del ComboBox
cboNotas.Items.Clear();
//Calcular la suma de todos los valores
for(int i=0;i<=6;i++)
{ //Mostrando en el Combobox
cboNotas.Items.Add(notas[i]);
suma = suma + notas[i];
}
promedio = suma / 7;
//Salida de Información
txtPromedio.Text = Convert.ToString(promedio);
}
Código del botón nuevo
private void btnNuevo_Click(object sender, EventArgs e)
{
cboNotas.Items.Clear();
txtPromedio.Clear();
}
Código del botón salir
private void btnSalir_Click(object sender, EventArgs e)
{
Close();
}
18. Arrays - Arreglos

H.A.P.Z.
UNP. PROGRAMACION VISUAL

Es un conjunto finito y ordenado de datos homogéneos.


Los arreglos pueden ser de una dimensión (vector), dos dimensiones (matriz) y “n”
dimensiones (matriz multidimensional)

Sintáxis Vector

Problema 16
Implementar un programa que permita gestionar los gastos de los “n” días de una
persona, los gastos se deben de ingresar con un inputBox; al final se deberá mostrar
el total de gastos y que día se hizo el mayor gasto.

V 0
Día 01 100
Día 02 85
Día 03 19
Día 04 110
Día 05 106
Día 06 108
Día 07 95

H.A.P.Z.
UNP. PROGRAMACION VISUAL

Formulario:

Código del botón Ingresar


private void btnCargar_Click(object sender, EventArgs e)
{
//Declaración de variables
double[] vGastos;
double gasto,totalGasto, diaMayor, gastoMayor;
int cantDias;
//Entrada de datos
cantDias = Convert.ToInt32(txtCantDias.Text);
//Declaramos el total de valores del vector
vGastos = new double[cantDias];

//Empezamos a leer los gastos


for (int dia=1;dia<=cantDias;dia++)
{
//Agregamos la referencia a vb para utilizar Inputbox
gasto
= Convert.ToDouble(Microsoft.VisualBasic.Interaction.InputBox("Ingrese el gasto del
dia " + dia, "Gastos"));

//Almacenamos el valor en el vector


//como el vector inicializa en cero
//y los dias en 1 pues restamos 1
vGastos[dia - 1] = gasto;

H.A.P.Z.
UNP. PROGRAMACION VISUAL

}
//Ya tenemos todo el vector almacenado
//Ahora vamos a calcular el total de gastos,
//el gasto mayo y mostrar lo gastos
//Inicialemte el gasto mayor cera 0
//el total de gastos 0
gastoMayor = 0;
totalGasto = 0;
diaMayor = 1;

for(int i=0;i<cantDias;i++)
{
//Evaluamos el gasto mayor
if (vGastos[i]>gastoMayor)
{
gastoMayor = vGastos[i];
diaMayor = i + 1;
}
//Calculamos el total
totalGasto = totalGasto + vGastos[i];
//Mostrmos los gastos en el combobox
cboGastos.Items.Add("Día " + (i + 1) + " Total: " + vGastos[i]);
}
//Mostramos el resultado final
txtGastoMayor.Text = Convert.ToString(gastoMayor);
txtTotalGasto.Text = Convert.ToString(totalGasto);
txtDiaMayor.Text = "Día " + Convert.ToString(diaMayor);

Código del botón Nuevo


private void btnNuevo_Click(object sender, EventArgs e)
{
txtDiaMayor.Clear();
txtGastoMayor.Clear();
txtTotalGasto.Clear();
txtCantDias.Clear();
cboGastos.Items.Clear();
}

Código del botón Salir


private void btnSalir_Click(object sender, EventArgs e)
{
Close();

H.A.P.Z.
UNP. PROGRAMACION VISUAL

19. Arrays - Arreglos

Es un conjunto finito y ordenado de datos homogéneos.


Los arreglos pueden ser de una dimensión (vector), dos dimensiones (matriz) y “n”
dimensiones (matriz multidimensional).

Sintáxis Matriz Multidimensional

Problema 17

Implementar una programa para registrar los datos de venta de un restaurant, se debe
almacenar en una matriz el nombre del plato, su precio, y la cantidad disponible.

El programa permitirá realizar búsquedas por el nombre del plato, si existe el plato
buscado nos mostrará su precio y la cantidad disponible para vender, el stock se debe
de actualizar por cada venta.

V 0 1 2

0 Arroz $5 10

1 Fideos $4 15

2 Gaseosa $2 20

3 Vino $50 5

H.A.P.Z.
UNP. PROGRAMACION VISUAL

Formulario:

Código del Formulario (Declaración de variables de ámbito de clase)

public FrmRestaurant()
{
InitializeComponent();
btnVender.Enabled = false;
}
private string[,] mPlatos;
private int cantPlatos;
private int index;
private int encuentra=0;

Código del botón Cargar


private void btnCargar_Click(object sender, EventArgs e)
{ //Entrada de Datos
cantPlatos=Convert.ToInt32(txtCantPlatos.Text);
//Inicializamos la matriz
mPlatos = new string[cantPlatos, 3];
//Ingresamos datos a la matriz con un inputBox
//Para ingresar datos a la matriz
for (int i = 0; i < cantPlatos;i++ )
{
mPlatos[i, 0] = Microsoft.VisualBasic.Interaction.InputBox("Ingrese
Nombre del plato "+(i+1),"Restaurant");
mPlatos[i, 1] = Microsoft.VisualBasic.Interaction.InputBox("Ingrese Precio
del plato " +( i+1), "Restaurant");
mPlatos[i, 2] = Microsoft.VisualBasic.Interaction.InputBox("Ingrese
Cantidad disponible del plato " + (i+1), "Restaurant");
}
}

H.A.P.Z.
UNP. PROGRAMACION VISUAL

Código del Botón Buscar

private void btnBuscar_Click(object sender, EventArgs e)


{
//Declaración de variables
string plato;
//Entrada de Datos
plato = txtPlato.Text;
//Filtramos el plato en la matriz

for(int i=0;i<cantPlatos;i++)
{
if(mPlatos[i,0].Equals(plato))
{
txtPrecio.Text = mPlatos[i, 1];
txtDisponible.Text = mPlatos[i, 2];
index = i;
btnVender.Enabled=true;
encuentra = 1;

}
}
if (encuentra == 0)
{
MessageBox.Show("No existe el
plato", "Restaurant", MessageBoxButtons.OK,MessageBoxIcon.Error);
btnVender.Enabled = false;
}

}
Código del Botón Vender

private void btnVender_Click(object sender, EventArgs e)


{
//Declaración de variables
int cant,stock;
//Entrada de Datos
cant = Convert.ToInt32(txtCant.Text);
stock = Convert.ToInt32(txtDisponible.Text);

if (cant<=stock)
{
//Disminuimos el stock de ese plato
mPlatos[index, 2] = Convert.ToString(stock - cant);
}
else
{
MessageBox.Show("No hay Suficiente
Stock", "Restaurant",MessageBoxButtons.OKCancel, MessageBoxIcon.Information);
}

H.A.P.Z.
UNP. PROGRAMACION VISUAL

20. Funciones con cadenas de caracteres (string)

El lenguaje de programación c# tiene algunas funciones para realizar operaciones con


cadenas de caracteres (string), que nos pueden ser muy útiles. Vamos a revisar algunas
de ellas:
 Length: Permite obtener la longitud de la cadena.
 SubString: Recupera una subcadena indicándole la ubicación inicial y la cadena de
caracteres.
 IndexOf: Devuelve el índice de un carácter específico.
 ToUpper: Convierte a mayúscula los caracteres de la cadena.
 ToLower: Convierte a minúscula los caracteres de la cadena.
 Replace: Reemplaza un carácter o caracteres de una cadena por otros caracteres.

Problema 18: Diseñar una aplicación en c#, donde se ingrese una cadena de caracteres
y se implementen funciones de cadenas (String).

Formulario:

Código del botón Procesar

private void btnProcesar_Click(object sender, EventArgs e)


{ string cadena = txtCadena.Text;
//Calculamos la longitud de la cadena
txtLongitud.Text = Convert.ToString(cadena.Length);
//Mostramos el primer caracter
txtPrimer.Text = cadena.Substring(0, 1);
//Mostramos el último caracter
txtUltimo.Text = cadena.Substring(cadena.Length - 1, 1);
//Mostramos el del segundo al sexto caracter
txt26.Text = cadena.Substring(2, 6);

H.A.P.Z.
UNP. PROGRAMACION VISUAL

//Buscamos la posición de la primera letra "A" o "a"


txtA.Text = Convert.ToString(cadena.IndexOf("A", 0)+1);
//Convertimos las letras a mayúsculas
txtMay.Text = cadena.ToUpper();
//Convertimos las letras a minúsuculas
txtMin.Text = cadena.ToLower();
//Eliminar caracteres en blanco
txtBorrarEspacios.Text = cadena.Replace(" ","");
}

21. Procedimientos y Funciones


Todas las instrucciones deben estar incluidas en un procedimiento o función, a las que
llamaremos mediante su identificador.
En C# tenemos 4 tipos:
 Los procedimientos que ejecutan un código a petición sin devolver ningún resultado.

 Las funciones que ejecutan un código y devuelven el resultado al código que las llamó.

 Los procedimientos de propiedades que permiten manejar las propiedades de los


objetos creados.
 Los procedimientos de operador utilizados para modificar el funcionamiento de un
operador cuando se aplica a una clase o una estructura.

Procedimientos
La visibilidad de un procedimiento viene determinada por la declaración private, public
o internal. Por defecto si no se indica nada se entiende que es public.
Un procedimiento puede recibir o no parámetros, ejecuta instrucciones, pero nunca
retorna ningún valor.

Sintáxis

H.A.P.Z.
UNP. PROGRAMACION VISUAL

Formulario

Código del botón Limpiar

private void btnLimpiar_Click(object sender, EventArgs e)


{
//LLamamos al procedimiento limpiar
limpiar();
}

Procedimiento limpiar

//Procedimiento limpiar, para dejar vacías las cajas de texto


private void limpiar()
{ txtNumero1.Clear();
txtNumero2.Clear();
txtResultado.Clear();
}

Funciones
Una función puede recibir o no parámetros, ejecuta ciertas instrucciones y la ejecución
return devuelve un valor de salida de la función.

Sintáxis Función:

H.A.P.Z.
UNP. PROGRAMACION VISUAL

Código funciones

//Función sumar que recibe 2 parámetros de entrada


private int sumar(int num1, int num2)
{
int resultado = num1 + num2;
return resultado;
}

private void btnSumar_Click(object sender, EventArgs e)


{

//Función operaciones que recibe 3 parámetros de entrada


private int operaciones(int num1, int num2, string op)
{
int resultado;
if (op == "s")
{
resultado = num1 + num2;
}
else if (op == "r")
{
resultado = num1 - num2;
}
else if (op == "m")
{
resultado = num1 * num2;
}
else
{
resultado = num1 / num2;
}

return resultado;
}

Código del botón Sumar

private void btnSumar_Click(object sender, EventArgs e)


{
//Declaración de variables
int numero1;
int numero2;
int suma;
//Entrada de datos
numero1=Convert.ToInt32(txtNumero1.Text);
numero2= Convert.ToInt32(txtNumero2.Text);
//Asignamos a la variable suma el valor retornado de la función sumar
suma = sumar(numero1,numero2);

txtResultado.Text=Convert.ToString(suma);
}

H.A.P.Z.
UNP. PROGRAMACION VISUAL

Codigo del botón Restar

private void btnRestar_Click(object sender, EventArgs e)


{
int numero1;
int numero2;
double resta;
//Entrada de datos
numero1 = Convert.ToInt32(txtNumero1.Text);
numero2 = Convert.ToInt32(txtNumero2.Text);

//Asignamos a la variable resta el valor retornado de la función operaciones, le


envíamos como operación la "r" de resta
resta = operaciones(numero1, numero2,"r");

txtResultado.Text = Convert.ToString(resta);
}

Código del botón Multiplicar

private void btnMultiplicar_Click(object sender, EventArgs e)


{ int numero1;
int numero2;
int resultado;
//Entrada de datos
numero1 = Convert.ToInt32(txtNumero1.Text);
numero2 = Convert.ToInt32(txtNumero2.Text);

//Asignamos a la variable mult el valor retornado de la función operaciones, le


envíamos como operación la "m" de resta
resultado= operaciones(numero1, numero2,"m");

txtResultado.Text = Convert.ToString(resultado);
}

Código del Botón Dividir

private void btnDividir_Click(object sender, EventArgs e)


{
int numero1;
int numero2;
double resultado;
//Entrada de datos
numero1 = Convert.ToInt32(txtNumero1.Text);
numero2 = Convert.ToInt32(txtNumero2.Text);

//Asignamos a la variable mult el valor retornado de la función operaciones, le


envíamos como operación la "m" de resta
resultado= operaciones(numero1, numero2,"d");

txtResultado.Text = Convert.ToString(resultado);

H.A.P.Z.
UNP. PROGRAMACION VISUAL

Procedimiento de Propiedades

Estos procedimientos se llaman “encapsuladores” ya que el valor de la propiedad se


encapsula. Se utilizarán cuando queramos modificar y/o recuperar un valor (Set / Get).

Declaramos dos variables privadas de ámbito

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;

namespace Procedimientosyfunciones2
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

//Declaramos las variables para crear sus propiedades


private int _numero1;
private int _numero2;
private int _resultado;

//Propiedad Numero1 para encapsular la variable _numero1


public int Numero1
{
get { return _numero1; }

H.A.P.Z.
UNP. PROGRAMACION VISUAL

set { _numero1 = value; }


}

//Propiedad Numero2 para encapsular la variable _numero2


public int Numero2
{
get { return _numero2; }
set { _numero2 = value; }
}

//Propiedad Resultado para encapsular la variable _resultado


public int Resultado
{
get { return _resultado; }
set { _resultado = value; }
}
}

Agregamos un nuevo botón llamado btnPropiedades

private void btnPropiedades_Click(object sender, EventArgs e)


{
Numero1=10;
Numero2=30;
int suma;
Suma=Numero1 + Numero2;
txtResultado.Text=Convert.ToString(suma);
}
}
}

H.A.P.Z.
UNP. PROGRAMACION VISUAL

Procedimiento de Operadores
Permite la redifinición de un operador estándar del lenguaje para utilizarlo en tipo
personalizados (clase o estructura).

Declaramos nuestra estructura cliente

struct cliente
{
public string nombre;
public string apellidos;
public string telefono;
}

Agregamos un nuevo botón llamado btnEstructura

private void btnEstructura_Click(object sender, EventArgs e)


{
cliente cliente1;
cliente1.nombre = "Juan";
cliente1.apellidos = "Carlos";
cliente1.telefono = "979026684";
}

22. Procedimientos y Funciones

Problema 19:
Diseñar y programar una aplicación que permita gestionar los retiros y depósitos de la
cuenta bancaria de un cliente.
Se debe primero ingresar los datos del cliente y cuál es el monto de apertura de la
cuenta de ahorros.
El cliente puede realizar "n" depósitos, almacenándolos en su cuenta de ahorros.
El cliente puede realizar "n" retiros, pero siempre que se realiza el retiro se debe de
tener en cuenta inicialmente que el monto de retiro sea menor al dinero almacenado en
la cuenta de ahorros.
Se debe de mostrar el historial de depósitos y retiros.

H.A.P.Z.
UNP. PROGRAMACION VISUAL

Formulario:

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;

namespace Procedimientosyfunciones2
{
public partial class frmCuentaAhorros : Form
{
public frmCuentaAhorros()
{
InitializeComponent();
//Llamamos al método para desactivar los controles específicos
desactivarControles();
}
private Double monto;

private void groupBox2_Enter(object sender, EventArgs e)


{

private void label1_Click(object sender, EventArgs e)


{

H.A.P.Z.
UNP. PROGRAMACION VISUAL

private void btnAbrir_Click(object sender, EventArgs e)


{
string cliente;
cliente = txtCliente.Text;
//Leemos el monto a depositar
monto = Convert.ToDouble(txtMonto.Text);
if (monto >= 0)
{
//Activamos los controles si el monto de depósito es correcto
activarControles();
}
else
{
//Mostramos un mensaje de error si el monto inicial es cero o negativo
MessageBox.Show("El monto debe ser mayor a cero", "Gestión de
Ahorros",MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
private void activarControles()
{
//Procedimiento que permite activar los controles
txtCliente.Enabled = false;
txtMonto.Enabled = false;
btnAbrir.Enabled = false;
btnRetiros.Enabled = true;
btnDepositos.Enabled = true;
}
private void desactivarControles()
{
//Procedimiento que permite desactivar los controles
txtCliente.Enabled = true;
txtMonto.Enabled = true;
btnAbrir.Enabled = true;

btnRetiros.Enabled = false;
btnDepositos.Enabled = false;
}

private Double leer(string mensaje)


{
//Leemos la cantidad a retirar o depositar con un InputBox
Double cantidad;
cantidad
= Convert.ToDouble(Microsoft.VisualBasic.Interaction.InputBox("Ingrese monto a " +
mensaje, "Gestión de Ahorros", "0", 100, 0));
return cantidad;
}
private void mostrar()
{
//procedimiento que permite mostrar el monto actual
txtSaldo.Text = Convert.ToString(monto);
}

H.A.P.Z.
UNP. PROGRAMACION VISUAL

Código Botón Depositos

private void btnDepositos_Click(object sender, EventArgs e)


{
Double deposito;
//Llamamos a la función leer y le enviamos como cadena la palabra "Depositar"
deposito = leer("depositar");
monto = monto + deposito;
lstDepositos.Items.Add(deposito);
mostrar();
}

Código del Botón Retiros

private void btnRetiros_Click(object sender, EventArgs e)


{
Double retiro;
//Llamamos a la función leer y le enviamos como cadena la palabra "Depositar"
retiro = leer("retirar");
//Si la cantidad a retirar es mayor al monto actual mostramos un error
if (retiro <= monto)
{
monto = monto - retiro;
lstRetiros.Items.Add(retiro);
mostrar();
}
else
{
MessageBox.Show("El cantidad a retirar excede el saldo", "Gestión de
Ahorros", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
}
}

H.A.P.Z.

S-ar putea să vă placă și