Está en la página 1de 74

SINTAXIS DE C#

WINDOWS FROM: El Espacio de nombres System.Windows. Forms contiene clases para crear
aplicaciones basadas en las ventanas que aprovechan las ventajas de las caractersticas
avanzadas de la interfaz de un usuario disponibles en el sistema operativo Microsoft Windows.

CONTROLES
PROPIEDADES DE LOS CONTROLES.
BACKCOLOR: Permite modificar el color de fondo de un componente.

FORECOLOR: Propiedad para modificar el color de la letra de un componente.

FONT: Permite modificar la fuente, el estilo y el tamao de la letra de un componente.

VISIBLE: Propiedad que permite establecer si el control estar o no visible.

TEXT: Para definir la lnea de texto que se va a visualizar en el componente.

CURSOR: Define el estilo del cursor del Mouse.

TOOLTIPTEXT: Permite ingresar un mensaje de ayuda que se visualizara cuando pasemos el


mouse sobre el componente.
ENABLE: Permite habilitar o des habilidades un componente

TIPO DE DATOS EN C#
Tipos de datos compuestos: C# introduce el concepto de estructura como tipo de datos
compuestos asignado por pila que no admite la herencia. En la mayora de los otros aspectos,
las estructuras son muy similares.
Tipos de datos Integrados: C# Los tipos de datos primitivos en C# con objetos en el espacio de
nombres System. Para cada tipo de datos, se proporciona un nombre corto o alias. Por
ejemplo, int es el nombre corto correspondiente a System. Int32 double es la forma de
abreviad de System.Double.
VARIABLES Y CONTANTES
Ambas representan un espacio de memoria RAM que guarda un valor que servir para algn
proceso en particular, la variable contiene un valor que puede ser medicado en cualquier
momento, mientras que el valor de la constante es fijo y no cambia en la ejecucin del
programa.

EN C# HAY TRES TIPOS VARIABLES.


DECLARACION DE VARIABLES.
EN C# EXISTEN 3 TIPOS DE VARIABLES:
VARIABLES DE INSTANCIA: Se utiliza para definir los atributos de un objeto.
VARIABLES DE CLASE: Son similares a las variables de instancia, con la excepcin de que sus
valores son los mismo para todas las instancias de la clase.
VARIABLES LOCALES: Se declaran y se utilizan dentro de las definiciones de los mtodos.

COMO DECLARAR UNA VARIABLE.

String nombre=Rafael Rivera; // variable de tipo String.


(string: es un tipo de dato) (nombre: Nombre de la variable) (Rafael Rivera: Valor inicial)
OPERADORES.

OPERADORES NUMERICOS.
TIPO DE OPERADOR OPERADORES ASOCIADOS
Cambio de Signo -,+
Aritmticos + - * / %
Incremento y Decremento ++ --

OPERADORES DE COMPARACION.
OPERADOR SIGNIFICADO
> Mayor que
< Menor que
== Igual a
>= Mayor o igual que
<= Menor o igual que
!= Distinto de
PROBLEMA1

Crear un programa que permita sumar, restar, multiplicar, dividir, obtener potencia y raz de
dos nmeros ingresados por teclado.

Estructuras secuenciales:
using System;//using se utiliza para importar tipos y clases y ms espacios de nombres
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 WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()// este se llama un procedimiento constructor
{
InitializeComponent();// Este mtodo constructor llama a otro procedimiento inicializar.
}

private void btnCalcular_Click(object sender, EventArgs e)//En este parte es para ejecutar
el boton clic
{
//Declaracin de variables.
Doubl num1,num2;
Doubl suma;
Double resta,multi,div,potencia,raz;

//Entrada de datos
Num1=Double.parse(txtnumero1.Text);
Num2=Double.ToDouble(txtnumero2.Text);

//Proceso

Suma=num1+num2;
resta=num1+num2;
mult=num1+num2;
div=num1+num2;
potencia=Math.pow(num1,num2);
raz=Math.pow(num1,(1/num2));

//Salida de datos

Txtsuma.Text=Covert.ToString(suma);

}
{
Txtnum1.Clear();//Este es para dejar limpio la caja de texto.

Txtnum1.Focus();//Este es para poner el foco sobre la caja de texto

}
}

ESTRUCTURAS SECUENCIALES.
PROBLEMA 2:
Calcular el inters compuesto generado por un capital depositado durante cierta cantidad de
tiempo a una tasa de inters determinada, aplique las siguientes formulas
M=(1+r%)^t.C I=M-C
M(Monto)=Suma del capital ms intereses producidas en un tiempo determinado.
R (Ata de Inters): ganancia que se obtiene por cada 100 unidades monetarias en cada periodo
de tiempo.
T (Tiempo): Periodo de tiempo durante el cual se cede el capital.
C (Capital): Dinero invertido para generar una ganancia.
I (Inters): Utilidad generada.
namespace _4_EstructurasSecuenciales
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

private void btncalcular_Click(object sender, EventArgs e)


{
//Declaracion de variables

double capital, razon, tiempo;


double totalinteres, montofinal;

//Proceso

capital =Convert.ToDouble (txtcapital.Text); razon = Convert.ToDouble(txtrazon.Text);


tiempo = Convert.ToDouble(txttiempo.Text);

//Operacion

montofinal =Math.Pow ((1 + razon),tiempo) * capital; totalinteres = montofinal -


capital;

//Salida de datos. txttinteres.Text =Convert.ToString (totalinteres); txtmfinal.Text =


Convert.ToString(montofinal);

private void btnnuevo_Click(object sender, EventArgs e)


{
txtcapital.Clear();
txttiempo.Clear();
txtrazon.Clear();
txttiempo.Clear();
txttinteres.Clear();
txtcapital.Focus();
}

private void btnsalir_Click(object sender, EventArgs e)


{
Close();
}
}
}

ESTRUCTURA CONDICIONAL IF.


Evala una expresin lgica (Condicin), si es verdadero ejecuta una determinada instruccin o
instruccin.
PROBLEMA 3:
Ingrese para un trabajador el total de horas normales y horas extras trabajadas durante todo el
mes, adems ingresar el pago por cada hora normal y cada hora extra. Se debe de ingresar
tambin la cantidad de hijos que este tiene para recibir una bonificacin de S/. 20 soles por
cada hijo, siempre y cuando su solicitud de recibir bonificacin este aceptada.
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 _5_Bonificacion
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

private void btncalcular_Click(object sender, EventArgs e)


{
//Declaracion de variables.

int horasnormales, horasextras;


double pagohoranormal, pagohoraextra;
byte nhijos;
double sueldobruto, sueldoneto, bonificacion;
Boolean marcado;

//Entrada de datos

horasnormales =Convert.ToInt32 (txthorasnormalestrabajadas.Text); horasextras =


Convert.ToInt32(txthorasextrastrabajadas.Text);
pagohoranormal=Convert.ToDouble(txtpagoporhoranormal.Text); pagohoraextra =
Convert.ToDouble(txtpagoporhoraextra.Text); nhijos = Convert.ToByte(nphijos.Value);
marcado = Convert.ToBoolean(chkbonificacion.Checked);

//Inicializar.
bonificacion = 0.0;
//Proceso.

sueldobruto = (horasnormales * horasextras) + (pagohoraextra * pagohoranormal);

//Evaluamos si recibir la bonificacin respectiva.

if(marcado==true)

{
bonificacion = nhijos * 20;
}
sueldoneto = sueldobruto + bonificacion;

//Salida de la informacin

txtsueldobruto.Text =S/. +Convert.ToString (sueldobruto); txtbonificacion.Text =S/.


+ Convert.ToString(bonificacion); txtsueldoneto.Text = S/. +
Convert.ToString(sueldoneto);

private void btnlimpiar_Click(object sender, EventArgs e)


{
txthorasnormalestrabajadas.Clear();
txthorasextrastrabajadas.Clear();
txtpagoporhoranormal.Clear();
txtpagoporhoraextra.Clear();
txtsueldobruto.Clear();
txtbonificacion.Clear();
nphijos.Value=0;
chkbonificacion.Checked = false;
txtsueldoneto.Clear();
txthorasnormalestrabajadas.Focus();
}

private void btnsalir_Click(object sender, EventArgs e)


{
Close();
}
}
}
ESTRUCTURA CONDICIONAL.
(Dobles ifelse)

ESTRUCTURA CONDICIONAL if-Else.


Evala una impresin lgica (Condicional), si es verdadero ejecuta una determinada
instruccin o instrucciones y si es falso ejecuta otro grupo de instrucciones.

PROBLEMA 4:
Crear un programa en C# que permita ingresar los dos lados de un cuadriltero, y mostrar la
figura de un cuadrado o mostrar un rectngulo si la figura es de forma con dichos con dichos
lados es un rectngulo, adems mostrar el rea y el permetro de dicha figura.
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 _6_Estructura_condicional
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();

pxcuadrado.Visible = false;//Inicializar apagado figura cuadrado

pxrectangulo.Visible = false;//Inicializar apagado figura rectngulo


}

private void btncalcular_Click(object sender, EventArgs e)


{
//Declaracin de variables

Double lado1, lado2;


double area, perimetro;
//Entrada de datos lado1 =Convert.ToDouble (txtlado1.Text); lado2 =
Convert.ToDouble(txtlado2.Text);
//Proceso
//Primero Evaluamos si es un cuadrado o un rectngulo
if(lado1==lado2)
{
pxcuadrado.Visible=true;
pxrectangulo.Visible = false;
}
else
{
pxrectangulo.Visible = true;
pxcuadrado.Visible = false;
}

area = lado1 * lado2;


perimetro = 2*(lado1 + lado2);

//Salida de datos

txtarea.Text = Convert.ToString(area); txtperimetro.Text =


Convert.ToString(perimetro);

private void btnlimpiar_Click(object sender, EventArgs e)


{
txtlado1.Clear();
txtlado2.Clear();
txtarea.Clear();
txtperimetro.Clear();
pxcuadrado.Visible = false;
pxrectangulo.Visible = false;
txtlado1.Focus();
}

private void btnsalir_Click(object sender, EventArgs e)


{
Close();
}
}
}
ESTRUCTURAS CONDICIONALES (Anidadas if else)

PROBLEMA 5:
Al ingresar el valor de la temperatura, obtener el tipo de clima segn la siguiente tabla:
Temperatura Tipo de Clima
Temp.<10 Frio
Temp. Entre 10 y 20 Nublado
Temp.Entre 21 y 30 Calor
Temp.>30 Tropical

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 WindowsFormsApplication4
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

private void button1_Click(object sender, EventArgs e)


{
//Declaracin de variables

byte temperatura;
string clima;

//Ingreso de datos

temperatura = Convert.ToByte(txttemperatura.Text);

//Proceso

if (temperatura < 10)


{
clima=Fro;
}
else if (temperatura >= 10 && temperatura <= 20)
{
clima = Nublado;
}
else if (temperatura > 20 && temperatura <= 30)
{
clima = Calor;
}
else
{
clima = Tropical;
}

//Salida de Datos.

txtclima.Text = clima;
}

private void button2_Click(object sender, EventArgs e)


{
txttemperatura.Clear();
txtclima.Clear();
txttemperatura.Focus();
}

private void button3_Click(object sender, EventArgs e)


{
Close();
}
}
}

ESTRUCTURA SELECTIVA MULTIPLE SWITCH


Permita comprar un valor con diversas alternativas, si la comparacin tiene xito se ejecuta el
grupo de instruccin que contenga la alternativa seleccionada y luego sale de la estructura.
PROBLEMA 6:
Ingresar un numero por teclado y determinar su representacin en un da de la semana.
Por ejemplo, si se ingresa 3 deber mostrar mircoles, si se ingresa 7 mostrar domingo, pero
si se ingresa un numero fuera del rango entre 1 y7 mostrar el mensaje Error Intente con un
nuevo nmero.
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 _8_Estructuramultiple
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

private void button1_Click(object sender, EventArgs e)


{
//Declaracin de variables.

byte numero;
string dia;
//Entrada de datos.

numero = Convert.ToByte(txtnumero.Text);

//Proceso

switch (numero)
{
case 1: dia = Lunes; break;
case 2: dia = Martes; break;
case 3: dia = Miercoles; break;
case 4: dia = Jueves; break;
case 5: dia = Viernes; break;
case 6: dia = Sabado; break;
case 7: dia = Domingo; break;

default: dia = Error ingrese un nuevo numero de 1 al 7 !...; break;

//Salida de datos.

txtdia.Text = dia;
}

private void button2_Click(object sender, EventArgs e)


{
txtnumero.Clear();
txtdia.Clear();
txtnumero.Focus();
}

private void button3_Click(object sender, EventArgs e)


{
Close();
}
}
}
CONTROL TIMER
(Intervalos de Tiempo).
CONTROL TIMER:
Componente que genera un evento a intervalos de tiempo definidos por el usuario.
PROBLEMA 7:
Implementar una aplicacin que permita mostrar la hora actualizada al segundo, y que permita
crear una animacin simple que dos etiquetas de texto.
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 _9_ControlTimer
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();

//Este Cdigo Inicializa la hora actualizada de Timer.


lblhora.Text = DateTime.Now.ToLongTimeString();
}

private void timer1_Tick(object sender, EventArgs e)


{
lblhora.Text = DateTime.Now.ToLongTimeString();
}

//Declarar ambito de clase se declara fuera del metodo.


private int num = 0;
private void timer2_Tick(object sender, EventArgs e)
{
//En primer momento el num vale 0 y luego vale 1
num = num + 1;

//Condicin si el nmero residuo 2 es igual a 0 quiere decir es par

if (num%2==0)
{
// Esta funcin cumple cuando el nmero es par
lbla.Visible = true;
lblb.Visible = false;
}
else
{
//Esta funcin cumple cuando el nmero es impar
lbla.Visible = false;
lblb.Visible = true;
}
}

private void btnPlay_Click(object sender, EventArgs e)


{
// Es el timer que genera la Animacin.

timer2.Enabled = true;
}

private void btnstop_Click(object sender, EventArgs e)


{
//El timer que deshabilita la animacin.
timer2.Enabled = false;

private void linksalir_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)


{
Close();
}
}
}

MessageBox e ImputBox (Cuadros de Mensaje)


MessageBox:
El mtodo MessageBox. Show() permite mostrar un cuadro de mensaje que puede contener
texto, botones y smbolos que forman e instruyen al usuario. El formato es:
MessageBox:
Botones:
OK: El cuadro Muestra un Botn de Aceptar.

OKCancel: El Cuadro Muestra un Botn de aceptar y cancelar.

RetryCancelar: Para Mostrar un Botn Reintentar y otro cancelar en el cuadro de mensaje.

YesNo: El cuadro Muestra un Botn S y Otro no.

YesNOCancel: El cuadro de mensaje contiene los botones si, No y Cancelar.


Problema 8:
Crear un programa que permita ingresar el nombre de un usuario en un Inputbox y despus
mostrar el saludo respectivo en un en MessageBox.
Adems mostrar un botn un botn de salir que pregunte y se seleccione la opcin de salir
antes de cerrar la aplicacin

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 _10_MessageBox
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

private void btnIngresar_Click(object sender, EventArgs e)


{
//Declaracin de variables.
string nombre;
//Entrada de datos
//El nombre lo vamos a leer des de un inputbox en el lenguaje

//S# no est implementado este mtodo directamente por eso

//se utiliza una referencia (como utilizamos referencias en

//propiedades referencias que est dentro de nuestro explorar

//de soluciones)

nombre = Microsoft.VisualBasic.Interaction.InputBox(Ingrese Nombre:, Registro de


Datos, Rafael Rivera, 100, 0);

//Mostrar en un MessageBox.

MessageBox.Show(Bienvenidos Usuario: + nombre, Sistema Administrativo,


MessageBoxButtons.OK, MessageBoxIcon.Information);
}

private void btnSalir_Click(object sender, EventArgs e)


{

// Close();

DialogResult opcion;

opcion = MessageBox.Show( Realmente desea Salir de la Aplicacin?, Salir del


Programa, MessageBoxButtons.OKCancel, MessageBoxIcon.Question);

if (opcion == DialogResult.OK)
{
Close();
}
}
}
}

VALIDACIONES MENSAJE DE AYUDA (ErrorProvider,ToolTip)


ErrorProvider.
Proporciona una Interfaz de Usuario que el control de un formulario tiene un error asociado.
PROBLEMA 9:
Crear un programa que permita ingresar de manera obligatoria los nombres, la edad y el salario
de una persona; adems todos los campos de texto deben de tener un mensaje emergente que
ayude al usuario final con el contenido que debe ingresar
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 _11_Validaciones
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

private void btnenviar_Click(object sender, EventArgs e)


{
if (is_validate())
{
erroricono.Clear();

MessageBox.Show(Datos agregados correctamente, Validaciones,


MessageBoxButtons.OK, MessageBoxIcon.Information);

}
}
private bool is_validate()
{
bool no_error=true;

if(txtnombre.Text==string.Empty)
{
erroricono.SetError(txtnombre,Ingrese su Nombre);
no_error = false;
}
else
{
try
{
int i = Convert.ToInt32(txtedad.Text);

}
catch
{
erroricono.Clear();
erroricono.SetError(txtedad,Ingrese Edad);
return false;
}
try
{
double j=Convert.ToDouble(txtsalario.Text);
}
catch
{
erroricono.Clear();

erroricono.SetError(txtsalario,Ingrese un salario vlido);

return false;
}
}
return no_error;
}

private void btnnuevo_Click(object sender, EventArgs e)


{
txtnombre.Clear();
txtedad.Clear();
txtsalario.Clear();
txtdescripcion.Clear();
txtnombre.Focus();
}

private void linkLabel1_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)


{
Close();
}

}
}

VALIDACIONES MENSAJES DE AYUDA (ErrorProvider, ToolTip);


ToolTip
Muestra Informacin cuando el usuario mueve el puntero sobre el control asociado.
PROBLEMA 9:
Crear un programa que permita ingresar de manera obligatoria los nombres, la edad y el
salario de una persona; adems todos los campos de texto deben de tener un mensaje
emergente que ayude al usuario final con el contenido que debe ingresar.
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 _11_Validaciones
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();

//Inicializa este constructor cuando pones el cursor en los texbox

//sale un aviso que debes de hacer.

this.ttmensaje.SetToolTip(this.txtnombre,Ingrese un nombre);

this.ttmensaje.SetToolTip(this.txtedad, Ingrese Edad);

this.ttmensaje.SetToolTip(this.txtsalario, Ingrese Salario);

this.ttmensaje.SetToolTip(this.txtdescripcion, Ingrese Descripcin);


}

private void btnenviar_Click(object sender, EventArgs e)


{
if (is_validate())
{
erroricono.Clear();

MessageBox.Show(Datos agregados correctamente, Validaciones,


MessageBoxButtons.OK, MessageBoxIcon.Information);

}
}
private bool is_validate()
{
bool no_error=true;

if(txtnombre.Text==string.Empty)
{
erroricono.SetError(txtnombre,Ingrese su Nombre);
no_error = false;
}
else
{
try
{
int i = Convert.ToInt32(txtedad.Text);
}
catch
{
erroricono.Clear();
erroricono.SetError(txtedad,Ingrese Edad);
return false;
}
try
{
double j=Convert.ToDouble(txtsalario.Text);
}
catch
{
erroricono.Clear();

erroricono.SetError(txtsalario,Ingrese un salario vlido);

return false;
}
}
return no_error;
}

private void btnnuevo_Click(object sender, EventArgs e)


{
txtnombre.Clear();
txtedad.Clear();
txtsalario.Clear();
txtdescripcion.Clear();
txtnombre.Focus();
}

private void linkLabel1_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)


{
Close();
}

}
}
ESTRUCTURAS ITERATIVAS (Bucles: For, While, do Wile)
ESTRUCTURAS ITERATIVA (Bucle For)
Un buble for es una estructura de control de repeticin que permite escribir de manera
eficiente un bucle que es necesario ejecutar un nmero determinado de veces. Un bucle for es
til cuando se sabe cuntas veces una tarea se va a repetir.

PROBLEMA 10:
Hacer un programa en C# que permita mostrar la tabla de sumar, restar, multiplicar y dividir de
un numero ingresado previamente.
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 _13_EstructuraIterativa
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

private void btncalcular_Click(object sender, EventArgs e)


{
//Declaracin de variables

int numero; double suma, resta, multiplicaion, division;


//Entrada de datos
numero = Convert.ToInt32(txtnumero.Text);
//Proceso
//Primero dejamos en blanco los combobox
cbsuma.Items.Clear();
cbresta.Items.Clear();
cbmulti.Items.Clear();
cbdivision.Items.Clear();

//Creamos el bucle para poder mostrar la tabla del 1 al 12

for (int i = 1; i <= 12; i++)


{
suma = numero + i;
resta = numero - i;
multiplicaion = numero * i;
division = numero / i;

//Agregar resultados a los combox

cbsuma.Items.Add(numero + + + i + = + suma); cbresta.Items.Add(numero + -


+ i + = + resta); cbmulti.Items.Add(numero + * + i + = + multiplicaion);
cbdivision.Items.Add(numero + / + i + = + division);

}
}

private void btnnuevo_Click(object sender, EventArgs e)


{
cbsuma.Items.Clear();
cbresta.Items.Clear();
cbmulti.Items.Clear();
cbdivision.Items.Clear();
txtnumero.Clear();
txtnumero.Focus();

}
}
}
Estructura Iterativa Bucle For.

PROBLEMA 11:
Se tiene un conjunto de calificaciones de un grupo de n alumnos, realizan un algoritmo para
calcular la calificacin media y la calificacin media y la calificacin ms baja de dicho grupo.
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 _13_EstructuraIterativa
{
public partial class FrmNotas : Form
{
public FrmNotas()
{
InitializeComponent();
}

private void btncalcular_Click(object sender, EventArgs e)


{
//Declaracion de variables

int numalumnos; double nota, sumanotas, notabaja, promedio;

if (txtnumalumno.Text != )
{
//Entrada de datos
numalumnos = Convert.ToInt32(txtnumalumno.Text);
//Inicializamos los variables
sumanotas = 0.0;
notabaja = 20.0;

for (int i = 1; i <= numalumnos; i = i + 1)

//este bucle permite leer n alumnos


//en este parte se hace una referencia de visual basic

nota = Convert.ToDouble(Microsoft.VisualBasic.Interaction.InputBox(Ingres nota del


alumno + i, Promedio Notas, 16,100,100));

sumanotas = sumanotas + nota;


if (nota < notabaja)
{
notabaja = nota;
}

}
promedio = sumanotas / numalumnos;
//Salida de la informacion

txtpromedio.Text = Convert.ToString(promedio);
txtnotabaja.Text = Convert.ToString(notabaja);
}
else
{
MessageBox.Show(Ingrese un Nmero Vlido,Promedio
Notas,MessageBoxButtons.OK,MessageBoxIcon.Error);
}
}

private void btnnuevo_Click(object sender, EventArgs e)


{
txtnumalumno.Clear();
txtnotabaja.Clear();
txtpromedio.Clear();
txtnumalumno.Focus();

private void btnsalir_Click(object sender, EventArgs e)


{
Close();
}
}
}

ESTRUCTURA ITERATIVA (BUCLE DO-WHILE


Una estructura iterativa Do-While ejecuta al menos una vez su bloque repetitivo, a diferencia
del while o del for que podan no ejecutar el bloque, este bloque de instrucciones se repetirn
siempre que la condicin sea verdadera

PROBLEMA 13:
Hacer un programa en C# que permita validar el ingreso de notas (0-20) para n alumnos, es
decir mientras la nota este fuera de ese rango del programa deber indicar al usuario ingresar
la nota, hasta que se ingrese la nota correcta; al final mostrar el promedio.

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 _15_EstructuraIterativa_DoWhile
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

private void btningresar_Click(object sender, EventArgs e)


{
//Declaracion de Variables
int cantAlumnos, nota;
Double promedio = 0;

//Entradas de datos.

cantAlumnos =Convert.ToInt32 (txtcantialumno.Text);

//Proceso
//Implementar un bucle para pedir la nota de los alumnos

for(int i = 1; i <=cantAlumnos;i++ )
{
//Leer la nota del alumno n

do
{

nota = Convert.ToInt32(Microsoft.VisualBasic.Interaction.InputBox(Ingrese nota del


alumno + i, Registro Notas));

}
while (nota < 0 || nota > 20);

promedio = promedio + nota;


}

//Salida de Informacion.

txtpromedio.Text = Convert.ToString(promedio / cantAlumnos);


}

private void btnnuevo_Click(object sender, EventArgs e)


{
txtcantialumno.Clear();
txtpromedio.Clear();
txtcantialumno.Focus();

private void btnsalir_Click(object sender, EventArgs e)


{
Close();
}
}
}

ESTRUCTURA ITERATIVA BUCLE WHILE


Una estructura iterativa While permite repetir una o ms instrucciones mientras la condicin
(Expresin lgica) sea verdadera, cuando la condicin es falta sale del bucle.

PROBLEMA 14:
Una organizacin tiene punto de repartos de vacunas, cada da se registra con cuantas vacunas
se inicia. Crear un programa en C# que gestione las entregas (validar que la cantidad a entregar
no sea mayor que el stock) y de un aviso cuando stock es inferior a 10 unidades.
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 _16_EstructuraIterativaWhile
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

private void button2_Click(object sender, EventArgs e)


{
//Declaraion de variables
int stock;
int cantpersonas, cantidadentrega;

//entrada de datos

stock =Convert.ToInt32 (txtstockinicial.Text);


cantpersonas = 0;
//Empezamos a repetir las vacunas
while (stock >= 10)
{
//Agregamos una eferencia para inputbox (visualBasic)

cantidadentrega =Convert.ToInt32 (Microsoft.VisualBasic.Interaction.InputBox(Ingrese


Cantidad entregada persona +(cantpersonas+1),Reparto de Vacunas));

//Validar que la cantidad entregada sea menor o igual

//que el stock

if (stock >= cantidadentrega)


{
cantpersonas = cantpersonas + 1;
stock = stock - cantidadentrega;

}
else
{
MessageBox.Show(No hay suficiente Stock, Reparto de Vacuma,
MessageBoxButtons.OK,MessageBoxIcon.Error);
}

}
MessageBox.Show(El Stock es Inferior a 10 Unidades,Reparto de
Vacunas,MessageBoxButtons.OK,MessageBoxIcon.Information);

//Salida de informacion

txtStock.Text = Convert.ToString(stock); txtcantidadpersona.Text =


Convert.ToString(cantpersonas);

private void button1_Click(object sender, EventArgs e)


{
txtstockinicial.Clear();
txtStock.Clear();
txtcantidadpersona.Clear();
txtstockinicial.Focus();
}

private void button3_Click(object sender, EventArgs e)


{
Close();
}

}
}

ESTRUCTURA DE DATOS.
Permite procesar una coleccin de que estn relacionados entre s, por ejemplo, la lista de
notas de alumnos, procesar esta lista de forma independiente con variables simples sera muy
difcil, por el contrario, las estructuras de datos facilitan la manipulacin.
Estructura de datos.
Se subdividen en:
Estticas: Espacio fijo establecido de memoria.
Arrays (Vectores Y Matrices)
Cadenas.
Registros.
Ficheros.

Estructura de datos.
Se Subdividen en:
Dinmicas: Sin restricciones y limitaciones en el espacio usando en memoria.
Listas (Pilas Y colas)
Listas enlazadas
Arboles.
Grafos.

Arrays (Arreglos)
Arrays
Es un conjunto finito y ordenado de datos homogneos. Los arreglos pueden ser de una
dimensin (vector), dos dimensiones (matriz) y n dimensiones (matriz multidimensionales)

PROBLEMA 15:
v 0
Implementar un vector para almacenar las notas del curso de
0 14
matemtica de 5 alumnos; al final mostrar el promedio de esas notas.
1 15
2 13
Vector esttico. 3 11
sing System;
4 16
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 _17_Arrays
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

private void btncargarvector_Click(object sender, EventArgs e)


{
//Declaracion de variables
int[] notas = new int[5];
//Especificar las notas
notas[0] = 15;
notas[1] = 13;
notas[2] = 11;
notas[3] = 16;
notas[4] = 18;

int suma = 0;
double promedio;

//proceso

cbonotas.Items.Clear();

//Recorrer nuestro vector

for (int i = 0; i <= 4; i++)


{
//Mostras las notas en Combobox
cbonotas.Items.Add(notas[1]);
suma = suma + notas[1];

}
promedio = suma / 5;
//Salida de Informacion

txtpromedio.Text = Convert.ToString(promedio);
}

private void btnnuevo_Click(object sender, EventArgs e)


{
cbonotas.Items.Clear();
txtpromedio.Clear();
}

private void btnsalir_Click(object sender, EventArgs e)


{
Close();
}
}
}

PROBLEMA 16:
Implementar un programa que permita gestionar los gastos de los n V 0
das de una persona, los gastos se deben de ingresar con un imputBox; Dia 01 100
al final se deber mostrar el total de gastos y que da se hizo el mayor Dia 02 85
gasto. Dia 03 19
using System; Dia 04 110
using System.Collections.Generic; Dia 05 106
using System.ComponentModel; Dia 06 108
using System.Data; Dia 07 95
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace _17_Arrays
{
public partial class FrmGastosdiarios : Form
{
public FrmGastosdiarios()
{
InitializeComponent();
}

private void btningresar_Click(object sender, EventArgs e)


{
//Declaracion de variables

double[] vgastos; double gasto, totalgasto, diamayor, gastomayor; int cantidadias;


//Inicializar Variables;
totalgasto = 0;
diamayor = 1;
gastomayor = 0;

//Empezamos a ller los gastos


cantidadias = Convert.ToInt32(txtcantidaddias.Text);
vgastos = new double[cantidadias];
for (int dia = 1; dia <= cantidadias;dia=dia+1 )
{
gasto = Convert.ToDouble(Microsoft.VisualBasic.Interaction.InputBox(Ingrese el gasto del
da + dia, Gastos));

vgastos[dia - 1] = gasto;
}

for (int i = 0; i < cantidadias;i++ )


{
//Evaluamos el gasto mayor
if (vgastos[i] > gastomayor)
{
gastomayor = vgastos[1];
diamayor = i + 1;
}

//Calculamos total de gastos

totalgasto = totalgasto + vgastos[i];

//Mostrar los gastos en el combobox

cbogastos.Items.Add(Da + (i + 1) + Total: + vgastos[i]);


}
//Mostrar la informacion
txtgastomayor.Text = Convert.ToString(gastomayor);
txtDiamayor.Text = Convert.ToString(diamayor);
txttotalgastos.Text = Convert.ToString(totalgasto);
}

private void btnnuevo_Click(object sender, EventArgs e)


{
txtcantidaddias.Clear();
txtDiamayor.Clear();
txtgastomayor.Clear();
txttotalgastos.Clear();
cbogastos.Items.Clear();
txtcantidaddias.Focus();
}

private void btnsalir_Click(object sender, EventArgs e)


{
Close();
}
}
}
ARRAYS(ARREGLOS).
ARRAY MULTIDI.

MENSIONAL - MATRIZ

PROBLEMA 17:
Implementar un 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. Para vender,
el stock se debe de actualizar por cada venta

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 _17_MAtrizMultidimencional
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();

btnvender.Enabled = false;
txtprecio.Enabled = false;
txtdisponible.Enabled = false;
}

//declarar variables de mbito de clase

private string [,]mPlatos;


private int cantPlatos;
private int index;
private int encuentra = 0;

private void btncargardatos_Click(object sender, EventArgs e)


{
//Entrada de Datos

cantPlatos = Convert.ToInt32(txtcantidadplatos.Text);

//Inicializar la Matriz

mPlatos = new string[cantPlatos, 3];


//ingresar datos en la matriz
for(int i=0;i<cantPlatos;i++)
{
mPlatos[i, 0] = Microsoft.VisualBasic.Interaction.InputBox(Ingrese el Nombre del plato +
(i + 1), Restaurant);

mPlatos[i,1] = Microsoft.VisualBasic.Interaction.InputBox(Ingrese el Precio del plato + (i


+ 1), Restaurant);

mPlatos[i, 2] = Microsoft.VisualBasic.Interaction.InputBox(Ingrese el Stock del plato + (i


+ 1), Restaurant);
}
}

private void btnbuscar_Click(object sender, EventArgs e)


{

//Declaracion de variables

string plato;
plato = txtplato.Text;
//Buscamos si el plato ingresado existe?

for (int i = 0; i < cantPlatos;i=i+1 )


{
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;

}
}

private void btnvender_Click(object sender, EventArgs e)


{
//Declaracion de variables

int cant, stock;

//entrada de datos

cant = Convert.ToInt32(txtcantidad.Text); stock = Convert.ToInt32(txtdisponible.Text);


if (cant <= stock)
{
//Disminuir el stock de plato
mPlatos[index, 2] = Convert.ToString(stock - cant);

}
else
{
MessageBox.Show(No hay suficiente stock, Restaurant, MessageBoxButtons.OK,
MessageBoxIcon.Information);
}
}

private void btnnuevo_Click(object sender, EventArgs e)


{
txtcantidadplatos.Clear();
txtplato.Clear();
txtprecio.Clear();
txtdisponible.Clear();
txtcantidad.Clear();
txtcantidadplatos.Focus();
}

private void btnsalir_Click(object sender, EventArgs e)


{
Close();
}
}
}

FUNCIONES CON CADENAS DE CARACTERES (STRING).

FUNCIONES CON STRING.


El lenguaje de programacin C# tiene algunas funciones para realizar operaciones con cadenas
de caracteres (string), que nos pueden ser muy tiles.
Funciones con string.
Vamos a revisar algunas de ellas:
Length: Permite obtener la longitud de la cadena.

SubString: Recupera una subcadena indicndole la ubicacin inicial y la cadena de caracteres.

IndexOf: Devuelve el ndice de un carcter especfico.

ToUpper: Convierte a mayscula los caracteres de la cadena.

ToLower: Convierte a minscula los caracteres de la cadena.

Replace: Reemplaza un carcter o caracteres de una cadena por otros caracteres.

PROBLEMA 18.
Disear una aplicacin en #, donde se ingrese una cadena de caracteres y se implementen
funciones de cadenas (String)
ing 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 _18_Funciones_Cadena
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

private void btnprocesar_Click(object sender, EventArgs e)


{
//Declarara las Variables

string cadena = txtCadena.Text;

//Plicar las funciones


//Calculamos la longitud de la cadena

txtLongitud.Text=Convert.ToString(cadena.Length);

//Mostrar el primer caracter

txtprimercaracter.Text=cadena.Substring(0,1);

//Mostrar el ultimo carcter

txtultimocaracter.Text = cadena.Substring(cadena.Length - 1, 1);

//Mostar del segundo al sexto caracter

txt26.Text = cadena.Substring(1, 5);

//Buscamos la ubicacin de la primera letra

txtposiciondela1erletraA.Text =Convert.ToString (cadena.IndexOf(A, 0)+1);

//Convertimos las letras a mayusculas

txtmayuculas.Text = cadena.ToUpper();

//Convertimos las letras a minusculas

txtminusculas.Text = cadena.ToLower();
//Borrar los espacios

txtborrarespacio.Text = cadena.Replace( , );

private void btnnuevo_Click(object sender, EventArgs e)


{
//Para Limpiar los Texbox

txtCadena.Clear();
txtLongitud.Clear();
txtmayuculas.Clear();
txtminusculas.Clear();
txtposiciondela1erletraA.Clear();
txtprimercaracter.Clear();
txtultimocaracter.Clear();
txtborrarespacio.Clear();
txt26.Clear();
txtCadena.Focus();

private void btnsalir_Click(object sender, EventArgs e)


{
Close();
}
}
}

PROCEDIMIENTOS Y FUNCIONES.
Todas las instrucciones deben estar incluidos en un procedimiento o funcin, a las que
llamaremos mediante su identificador.
EN C# TENEMOS 4 TIPOS:
- Los PROCEDIMIENTOS que ejecutan un cdigo a peticin sin devolver ningn
resultado.
- Las FUNCIONES que ejecutan un cdigo y devuelven el resultado al cdigo que las
llamo.
- Los PROCEDIMIENTOS DE PROPIEDADES. Que permiten manejar las propiedades de
los objetivos 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 declaracin PRIVATE, PUBLIC O
INTERNAL. Por defecto si no se indica nada se entiende que es public. Un procedimiento
puede recibir o no parmetros, ejecuta instrucciones, pero nunca retorna ningn valor.
Sintaxis para declarar un procedimiento.

FUNCIONES.
Una funcin puede recibir o no parmetros, ejecuta ciertas instrucciones y la ejecucin return
devuelve un valor de salida de la funcin.

Sintaxis
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 _19_ProcedimientosyFunciones
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

private void btnlimpiar_Click(object sender, EventArgs e)


{
limpiar();
}

/// <summary>
///
/// </summary>
private void limpiar()
{

txtnumero1.Clear();
txtnumero2.Clear();
txtresultado.Clear();

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

private void btnsuma_Click(object sender, EventArgs e)


{
int numero1;
int numero2;
//entrada de datos

numero1 = Convert.ToInt32(txtnumero1.Text);
numero2 = Convert.ToInt32(txtnumero2.Text);
//Declar la variable suma
int suma;
suma = sumar(numero1, numero2);
txtresultado.Text = Convert.ToString(suma);
}

private Double operaiones(int num1, int num2, string op)


{
double 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;
}

private void btnresta_Click(object sender, EventArgs e)


{
//Declaracion de variables

int numero1;
int numero2;

Double resultado;

//Leer los datos

numero1 = Convert.ToInt32(txtnumero1.Text); numero2 =


Convert.ToInt32(txtnumero2.Text);

//Llamar a la funcion operaciones


resultado = operaiones(numero1, numero2, r);
//Mostrar la informacion
txtresultado.Text = Convert.ToString(resultado);

private void btnmultiplicar_Click(object sender, EventArgs e)


{
//Declaracion de variables

int numero1;
int numero2;

Double resultado;

//Leer los datos

numero1 = Convert.ToInt32(txtnumero1.Text); numero2 =


Convert.ToInt32(txtnumero2.Text);

//Llamar a la funcion operaciones


resultado = operaiones(numero1, numero2, m);
//Mostrar la informacion
txtresultado.Text = Convert.ToString(resultado);
}

private void btndividir_Click(object sender, EventArgs e)


{
//Declaracion de variables

int numero1;
int numero2;
Double resultado;

//Leer los datos

numero1 = Convert.ToInt32(txtnumero1.Text); numero2 =


Convert.ToInt32(txtnumero2.Text);

//Llamar a la funcion operaciones


resultado = operaiones(numero1, numero2, d);
//Mostrar la informacion
txtresultado.Text = Convert.ToString(resultado);
}

}
}

PROCEDIMIENTOS DE PROPIEDADES:
Estos procedimientos se llaman ENCAPSULADORES ya que el valor de la propiedad se
encapsula. Se utilizarn cuando queramos modificar y/o recuperar un valor (Set/Get).

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 _19_ProcedimientosyFunciones
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

//Hay varias maneras de encapsular estos valores con propiedades y


//metodos (Set/Get).
private int _numero1;
public int Numero1
{
get { return _numero1; }
set { _numero1 = value; }
}
private int _numero2;

public int Numero2


{
get { return _numero2; }
set { _numero2 = value; }
}

private void btnlimpiar_Click(object sender, EventArgs e)


{
limpiar();
}

/// <summary>
///
/// </summary>
private void limpiar()
{

txtnumero1.Clear();
txtnumero2.Clear();
txtresultado.Clear();
}
///
///
private int sumar(int num1, int num2)
{
int resultado;
resultado = num1 + num2;
return resultado;
}

private void btnsuma_Click(object sender, EventArgs e)


{
int numero1;
int numero2;
//entrada de datos

numero1 = Convert.ToInt32(txtnumero1.Text);
numero2 = Convert.ToInt32(txtnumero2.Text);
//Declar la variable suma
int suma;
suma = sumar(numero1, numero2);
txtresultado.Text = Convert.ToString(suma);
}

private Double operaiones(int num1, int num2, string op)


{
double 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;
}

private void btnresta_Click(object sender, EventArgs e)


{
//Declaracion de variables

int numero1;
int numero2;

Double resultado;

//Leer los datos

numero1 = Convert.ToInt32(txtnumero1.Text); numero2 =


Convert.ToInt32(txtnumero2.Text);

//Llamar a la funcion operaciones


resultado = operaiones(numero1, numero2, r);
//Mostrar la informacion
txtresultado.Text = Convert.ToString(resultado);

private void btnmultiplicar_Click(object sender, EventArgs e)


{
//Declaracion de variables

int numero1;
int numero2;

Double resultado;

//Leer los datos

numero1 = Convert.ToInt32(txtnumero1.Text); numero2 =


Convert.ToInt32(txtnumero2.Text);

//Llamar a la funcion operaciones


resultado = operaiones(numero1, numero2, m);
//Mostrar la informacion
txtresultado.Text = Convert.ToString(resultado);
}

private void btndividir_Click(object sender, EventArgs e)


{
//Declaracion de variables

int numero1;
int numero2;

Double resultado;
//Leer los datos

numero1 = Convert.ToInt32(txtnumero1.Text); numero2 =


Convert.ToInt32(txtnumero2.Text);

//Llamar a la funcion operaciones


resultado = operaiones(numero1, numero2, d);
//Mostrar la informacion
txtresultado.Text = Convert.ToString(resultado);
}

private void btnsalir_Click(object sender, EventArgs e)


{
Close();
}

private void btnnuevo_Click(object sender, EventArgs e)


{
Numero1 = 1;
Numero2 = 2;

int suma;
suma = Numero1 + Numero2;
txtresultado.Text = Convert.ToString(suma);
}

}
}

PROCEDIMIENTO DE OPERADORES
Permite la redefinicin de un operador estndar del lenguaje para utilizarlo en tipo
personalizado (Clase O estructura).
SINTAXIS
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 _19_ProcedimientosyFunciones
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

//Hay varias maneras de encapsular estos valores con propiedades y


//metodos (Set/Get).
private int _numero1;
public int Numero1
{
get { return _numero1; }
set { _numero1 = value; }
}
private int _numero2;

public int Numero2


{
get { return _numero2; }
set { _numero2 = value; }
}

private void btnlimpiar_Click(object sender, EventArgs e)


{
limpiar();
}

/// <summary>
///
/// </summary>
private void limpiar()
{

txtnumero1.Clear();
txtnumero2.Clear();
txtresultado.Clear();

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

private void btnsuma_Click(object sender, EventArgs e)


{
int numero1;
int numero2;
//entrada de datos

numero1 = Convert.ToInt32(txtnumero1.Text);
numero2 = Convert.ToInt32(txtnumero2.Text);
//Declar la variable suma
int suma;
suma = sumar(numero1, numero2);
txtresultado.Text = Convert.ToString(suma);
}

private Double operaiones(int num1, int num2, string op)


{
double 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;
}

private void btnresta_Click(object sender, EventArgs e)


{
//Declaracion de variables

int numero1;
int numero2;

Double resultado;

//Leer los datos

numero1 = Convert.ToInt32(txtnumero1.Text); numero2 =


Convert.ToInt32(txtnumero2.Text);

//Llamar a la funcion operaciones


resultado = operaiones(numero1, numero2, r);
//Mostrar la informacion
txtresultado.Text = Convert.ToString(resultado);

private void btnmultiplicar_Click(object sender, EventArgs e)


{
//Declaracion de variables

int numero1;
int numero2;

Double resultado;
//Leer los datos

numero1 = Convert.ToInt32(txtnumero1.Text); numero2 =


Convert.ToInt32(txtnumero2.Text);

//Llamar a la funcion operaciones


resultado = operaiones(numero1, numero2, m);
//Mostrar la informacion
txtresultado.Text = Convert.ToString(resultado);
}

private void btndividir_Click(object sender, EventArgs e)


{
//Declaracion de variables

int numero1;
int numero2;

Double resultado;

//Leer los datos

numero1 = Convert.ToInt32(txtnumero1.Text); numero2 =


Convert.ToInt32(txtnumero2.Text);

//Llamar a la funcion operaciones


resultado = operaiones(numero1, numero2, d);
//Mostrar la informacion
txtresultado.Text = Convert.ToString(resultado);
}

private void btnsalir_Click(object sender, EventArgs e)


{
Close();
}

private void btnnuevo_Click(object sender, EventArgs e)


{
Numero1 = 10;
Numero2 = 30;

int suma;
suma = Numero1 + Numero2;
txtresultado.Text = Convert.ToString(suma);
}

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

private void btnstructura_Click(object sender, EventArgs e)


{
cliente cliente1;
cliente1.nombre= Rafael;
cliente1.apellidos = Rivera;
cliente1.telefono = 975732827;

}
}
}

PROCEDIMIENTOS Y FUNCIONES
PROBLEMA 19:
Disear y programar una aplicacin permita gestionar los retiros y depsitos de la cuenta
bancaria de un cliente se debe primero ingresar los datos del cliente y cul es el monto de
apertura de la cuenta de ahorros. El cliente puede realizar n depsitos, almacenndolos 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 depsito y retiros

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 _19_GestionAhorros
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
desactivarControles();
}
//Debajo del Constructor declaramos una variable

private Double monto;

private void activarControles()


{
//En este parte desactivamos

txtcliente.Enabled = false;
txtmonto.Enabled = false;
btnabrircuenta.Enabled = false;

//En este paso activamos los controles


btnDeposito.Enabled = true;
btnRetiro.Enabled = true;
}

private void desactivarControles()


{
//En este parte activamos los controles

txtcliente.Enabled = true;
txtmonto.Enabled = true;
btnabrircuenta.Enabled = true;

//En este paso desactivamos los controles


btnDeposito.Enabled = false;
btnRetiro.Enabled = false;
}

private void btnabrircuenta_Click(object sender, EventArgs e)


{
string clientes;
clientes = txtcliente.Text;
monto =Convert.ToDouble (txtmonto.Text);

//Evaluar si el usuario ingreso un numero derrepente negativo o positivo


if(monto>0)
{
activarControles();

}
else
{
MessageBox.Show(El Monto debe se Mayor o Igual que Cero, Gestion de Ahorros,
MessageBoxButtons.OK,MessageBoxIcon.Error);
}
}

private Double leer(string mensaje)


{
double cantidad;

cantidad = Convert.ToDouble(Microsoft.VisualBasic.Interaction.InputBox(Ingrese Monto a


+ mensaje,Gestion de Ahorros,0,100,0));

return cantidad;

private void btnDeposito_Click(object sender, EventArgs e)


{
double deposito;
deposito = leer(Depositar);
monto = monto + deposito;
lstdepositos.Items.Add(deposito);
mostrar();

private void mostrar()


{
txtsaldo.Text = Convert.ToString(monto);
}

private void btnRetiro_Click(object sender, EventArgs e)


{
double restiro;
restiro = leer(Retirar);

//Evaluamos el retiro

if (restiro <= monto)


{
monto = monto - restiro;
lstRetiros.Items.Add(restiro);
mostrar();
}
else
{
MessageBox.Show(La Cantidad de Retiro es Mayor al Monto, Gestion de Ahorros,
MessageBoxButtons.OK, MessageBoxIcon.Information);
}
}

private void btnnuevo_Click(object sender, EventArgs e)


{
txtcliente.Clear();
txtmonto.Clear();
txtsaldo.Clear();
lstdepositos.Items.Clear();
lstRetiros.Items.Clear();
desactivarControles();

private void btnsalir_Click(object sender, EventArgs e)


{
Close();
}
}
}

CONCEPTOS DE PROGRAMACION ORIENTADOS A ABJETOS


PARADIGMA:
Un paradigma es una forma de afrontar la construccin de cdigo de software.
- No hay paradigmas mejores ni peores
- Todos tienen sus ventajas e inconvenientes.

HAY DISTINTOS PARADIGMAS:


- POO, Estructurado, funcional, Lgico, etc.

PROGRAMACION ORIENTADOS A ABJETOS.


- Facilidad de disear y relacionar con el mundo real (UML lenguaje unificado modelado)
- Reutilizacin de piezas de cdigo (no copy/pastes)
- Encapsulamiento (ocultar el estado de los objetos)
ELEMENTOS DE LA POO.
Los Elementos principales son:
Clases: Especificacin de un conjunto de elementos.
Objetos: Elementos Autnomo y con una funcionalidad concreta. Instancias concretas de una
clase.

Tambin se Basa en Otros Conceptos: Herencia, Polimorfismo y encapsulamiento.

Objetos: Elementos con comportamiento y estado. Mtodos y atributos concretos instancias


de clase interactan por medio de mensajes.

Clases: Son plantillas para definir elementos (objetos). Pueden estar directamente
relacionadas una con otras.

VER DE LA MANERA MAS DETALLADA

ELEMENTOS DE LA POO

ENCAPSULACION:

Puede (y suele) Heber distintos niveles de visibilidad:

public: se puede acceder desde cualquier lugar.

private: Solo se puede acceder desde la propia clase.

protected: solo se puede acceder desde la propia clase o desde una clase que hereda la propia
clase o desde una clase que hereda de ella.
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 _20_POO
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

private void btnobjeto1_Click(object sender, EventArgs e)


{

// INSTANCIACION DE OBJETOS:
//Antes de utilizar un objeto debemos de crearlo.

//Tipo identificador = New Tipo();

Perro perrito = new Perro();


perrito.nombre = "Chizu";
perrito.raza = "Pastor Alemn";
perrito.altura = "0.50";

//ya tenemos nuestro objto perrito que hace una instancia a


//clase perro.

//mostramos el resultado

txtResultado.Text = perrito.comer("Carne...!");

private void btnobjeto2_Click(object sender, EventArgs e)


{
//Antes de utilizar un objeto debemos de crearlo.

//Tipo identificador = New Tipo();

Perro perrito = new Perro();


perrito.nombre = "Lasy";
//perrito.raza = "Pastor Alemn";
perrito.altura = "0.70";

//ya tenemos nuestro objto perrito que hace una instancia a


//clase perro.

//mostramos el resultado

txtResultado.Text = perrito.comer("Pollo...!");
}

private void btnobjeto_Click(object sender, EventArgs e)


{
Perro perrito = new Perro("Peluchin", "Poodle", "0.60");
txtResultado.Text = perrito.comer("Pan");
}
}
}

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

namespace _20_POO
{

//Se agrego la clase perro en el principal de (POO)


//Podemos accesar desde de cualquier otro lugar a esta clase
public class Perro
{
//Declaramos nuestros atributos (de clase) como variables
public string nombre;
public string raza;
public string altura;

//A declarar las operaciones a manera de motodos

public string comer(string carne)


{
return this.nombre + " mide " + this.altura + " y va a comer " +
carne;
}
public void dormir()
{

}
public void ladrar()
{

}
/*
METODOS.
Definen el comportamiento de los objetos de una clase. La implementacin se suele
ocultar al exterior de la clase.
HAY DIFERENTES METODOS.
-Mtodos Habituales.
Constructor.
Sirve para inicializar un objeto al crearlo existe sobrecarga (distintos
parmetros) (para cualquier mtodo). Coincide con el nombre de la clase y no
devuelve nada por definicin

Public Perro(string nombre,string raza,string altura)


{
This.nombre=nombre;
This. raza=raza;
This.altura=altura;
}

*/

//vamos a crear un Constructor


public Perro()
{

}
public Perro(string nombre,String raza, String altura)
{
this.nombre = nombre;
this.raza = raza;
this.altura = altura;

//De esa manera ya tenemos nuestro constructor.

}
}

Otro Mtodo
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 _20_POO
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

private void btnobjeto1_Click(object sender, EventArgs e)


{

// INSTANCIACION DE OBJETOS:
//Antes de utilizar un objeto debemos de crearlo.

//Tipo identificador = New Tipo();

Perro perrito = new Perro();


perrito.Nombre = "Chizu";
perrito.Raza = "Pastor Alemn";
perrito.Altura = "0.50";

//ya tenemos nuestro objto perrito que hace una instancia a


//clase perro.

//mostramos el resultado

txtResultado.Text = perrito.comer("Carne...!");

private void btnobjeto2_Click(object sender, EventArgs e)


{
//Antes de utilizar un objeto debemos de crearlo.

//Tipo identificador = New Tipo();


Perro perrito = new Perro();
perrito.Nombre = "Lasy";
//perrito.raza = "Pastor Alemn";
perrito.Altura = "0.70";

//ya tenemos nuestro objto perrito que hace una instancia a


//clase perro.

//mostramos el resultado

txtResultado.Text = perrito.comer("Pollo...!");
}

private void btnobjeto_Click(object sender, EventArgs e)


{
Perro perrito = new Perro("Peluchin", "Poodle", "0.60");
txtResultado.Text = perrito.comer("Pan");
}
}
}
Clase
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace _20_POO
{

//Se agrego la clase perro en el principal de (POO)


//Podemos accesar desde de cualquier otro lugar a esta clase
public class Perro
{
/*
* Mtodos muy Habituales
Get y Set
Sirve para obtener o para modificar los atributos de una clase
Veamos la sintaxis
Public string Nombre
{
get{return nombre:} //el nico que hace es returna el atributo nombre
set{nombre=value;} // que actualiza la que est en atributo nombre
}
Lo que vamos hacer es encapsular los tres parmetros para crear
//
metodos get y set

*/
private string nombre;

public string Nombre


{
get { return nombre; }
set { nombre = value; }
}
private string raza;

public string Raza


{
get { return raza; }
set { raza = value; }
}
private string altura;

public string Altura


{
get { return altura; }
set { altura = value +" cm"; }
}

//ya tenemos nuestro metodo get y set dentro de una propiedad

public string comer(string carne)


{
return this.Nombre + " mide " + this.Altura + " y va a comer " +
carne;
}
public void dormir()
{

}
public void ladrar()
{

}
/*
METODOS.
Definen el comportamiento de los objetos de una clase. La implementacin se suele
ocultar al exterior de la clase.
HAY DIFERENTES METODOS.
-Mtodos Habituales.
Constructor.
Sirve para inicializar un objeto al crearlo existe sobrecarga (distintos
parmetros) (para cualquier mtodo). Coincide con el nombre de la clase y no
devuelve nada por definicin

Public Perro(string nombre,string raza,string altura)


{
This.nombre=nombre;
This. raza=raza;
This.altura=altura;
}

*/

//vamos a crear un Constructor


public Perro()
{

}
public Perro(string nombre,String raza, String altura)
{
//En este parte le dire que llame a la propiedad
this.Nombre = nombre;
this.Raza = raza;
this.Altura = altura;

}
}

Otro Mtodo Habitual

DESTRUCTOR

Nos es tan tpico, no se suele usar C# (se hace de manera automtico)

PROGRAMACION ORIENTADOS A ABJETOS

HERENCIA

- Es un mecanismo que sirve para reutilizar clase


- Se utilizan cuando existen clases que comparten muchas de sus caractersticas
- Se extiende la funcionalidad de clases ms genricas
- Se introducen los conceptos de

Superclase y subclase.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Clases
{
public class Persona
{
//Declaramos los atributos

private string apellidos;


private string nombres;
private string documento;
private string tipo;

//Luego encapsulamos nuestros atributos


//propiedades
public string Apellidos
{
get { return apellidos; }//Que returnar
set { apellidos = value; }//que va actualizar
}

public string Nombres


{
get { return nombres; }
set { nombres = value; }
}

public string Documento


{
get { return documento; }
set { documento = value; }
}

public string Tipo


{
get { return tipo; }
set { tipo = value; }
}

}
}

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

namespace Clases
{
public class Vendedor:Persona
{
private string tipoContrato;
private Double sueldo;

public string TipoContrato


{
get { return tipoContrato; }
set { tipoContrato = value; }
}

public Double Sueldo


{
get { return sueldo; }
set { sueldo = value; }
}

// Operaciones

public void calcularSueldo(Double sueldoBasico)


{
if (this.TipoContrato == "C")
{
this.Sueldo = sueldoBasico + 350;
}
else if (this.tipoContrato == "N")
{
this.Sueldo = sueldoBasico + 750;
}
else
{
this.Sueldo = 0;
}
}

}
}

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

namespace Clases
{
public class Cliente:Persona
{
//Atributos Propios
private string categoria;
private string codigo;

//Encapsulamos Atributos Propios


public string Categoria
{
get { return categoria; }
set { categoria = value; }
}

public string Codigo


{
get { return codigo; }
set { codigo = value; }
}
//Operacion generar codigo
public void generarCodigo()
{
this.Codigo = "C" + this.Apellidos.Substring(0, 3) + "17";
}

}
}

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 Clases;

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

private void btnguardar_Click(object sender, EventArgs e)


{
Vendedor Vendedor1 = new Vendedor();
Vendedor1.Apellidos = txtapellidos.Text;
Vendedor1.Documento = txtDocumento.Text;
Vendedor1.Tipo = cbotipo.Text;
Vendedor1.TipoContrato = cbotipocontrato.Text;

Vendedor1.calcularSueldo(750);

dgvVendedores.Rows.Insert(0, Vendedor1.Tipo, Vendedor1.Apellidos,


Vendedor1.Nombres, Vendedor1.Documento, Vendedor1.Sueldo);
}
}
}

POLIMORFISMO

- Se puede modificar localmente el comportamiento de los mtodos heredados


- De esta manera, objetos de diferentes tipos pueden responder de forma diferente a la
misma llamada.
- Este el concepto clave del polimorfismo.
POLIMORFISMO: EJEMPLO

- Se mueve igual un pez, un pjaro o una rana?


- En cambio, todos son animales y por tanto podran heredar el mtodo mover de dicha
clase.
- Gracias al polimorfismo, cada objeto concreto realizara la operacin mover como
corresponda

FORMULARIOS MDI:

- Las aplicaciones (MDI interfaz de mltiples documentos) permiten mostrar varios


documentos al mismo tiempo, cada uno de ellos en su propia ventana.
- Las aplicaciones MDI suelen tener un elemento de men ventana con submens que
permiten cambiar entre ventanas o documentos.
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 _23_NavegaciondeFormularios
{
public partial class FrmPrincipal : Form
{
private int childFormNumber = 0;

public FrmPrincipal()
{
InitializeComponent();
}

private void ShowNewForm(object sender, EventArgs e)


{
Form childForm = new Form();
childForm.MdiParent = this;
childForm.Text = "Ventana " + childFormNumber++;
childForm.Show();
}

private void OpenFile(object sender, EventArgs e)


{
OpenFileDialog openFileDialog = new OpenFileDialog();
openFileDialog.InitialDirectory =
Environment.GetFolderPath(Environment.SpecialFolder.Personal);
openFileDialog.Filter = "Archivos de texto (*.txt)|*.txt|Todos los
archivos (*.*)|*.*";
if (openFileDialog.ShowDialog(this) == DialogResult.OK)
{
string FileName = openFileDialog.FileName;
}
}

private void SaveAsToolStripMenuItem_Click(object sender, EventArgs e)


{
SaveFileDialog saveFileDialog = new SaveFileDialog();
saveFileDialog.InitialDirectory =
Environment.GetFolderPath(Environment.SpecialFolder.Personal);
saveFileDialog.Filter = "Archivos de texto (*.txt)|*.txt|Todos los
archivos (*.*)|*.*";
if (saveFileDialog.ShowDialog(this) == DialogResult.OK)
{
string FileName = saveFileDialog.FileName;
}
}

private void ExitToolsStripMenuItem_Click(object sender, EventArgs e)


{
this.Close();
}

private void CutToolStripMenuItem_Click(object sender, EventArgs e)


{
}

private void CopyToolStripMenuItem_Click(object sender, EventArgs e)


{
}

private void PasteToolStripMenuItem_Click(object sender, EventArgs e)


{
}

private void ToolBarToolStripMenuItem_Click(object sender, EventArgs e)


{
toolStrip.Visible = toolBarToolStripMenuItem.Checked;
}

private void StatusBarToolStripMenuItem_Click(object sender, EventArgs e)


{
statusStrip.Visible = statusBarToolStripMenuItem.Checked;
}

private void CascadeToolStripMenuItem_Click(object sender, EventArgs e)


{
LayoutMdi(MdiLayout.Cascade);
}

private void TileVerticalToolStripMenuItem_Click(object sender, EventArgs


e)
{
LayoutMdi(MdiLayout.TileVertical);
}

private void TileHorizontalToolStripMenuItem_Click(object sender,


EventArgs e)
{
LayoutMdi(MdiLayout.TileHorizontal);
}

private void ArrangeIconsToolStripMenuItem_Click(object sender, EventArgs


e)
{
LayoutMdi(MdiLayout.ArrangeIcons);
}

private void CloseAllToolStripMenuItem_Click(object sender, EventArgs e)


{
foreach (Form childForm in MdiChildren)
{
childForm.Close();
}
}

private void comprasToolStripMenuItem_Click(object sender, EventArgs e)


{
FrmCompras frm = new FrmCompras();
frm.MdiParent = this;
frm.Show();

private void ventasToolStripMenuItem_Click(object sender, EventArgs e)


{
frmVentas frm = frmVentas.GetIntancia();
frm.MdiParent = this;
frm.Show();
}

private void toolStrip_ItemClicked(object sender,


ToolStripItemClickedEventArgs e)
{

}
}
}

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 _23_NavegaciondeFormularios
{
public partial class FrmClientes : Form
{
public FrmClientes()
{
InitializeComponent();
}
private void cbocliente_SelectedIndexChanged(object sender, EventArgs e)
{
frmVentas frm = frmVentas.GetIntancia();
string par1 = cbocliente.Text;
frm.setCliente(par1);
this.Hide();
}
}
}

ing 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 _23_NavegaciondeFormularios
{
public partial class frmVentas : Form
{
public frmVentas()
{
InitializeComponent();
}

private static frmVentas _instancia;

public static frmVentas GetIntancia()


{
if (_instancia == null)
{
_instancia = new frmVentas();
}
return _instancia;
}

public void setCliente(String cliente)


{
txtcleinte.Text = cliente;
}
private void frmVentas_Load(object sender, EventArgs e)
{

}
private void btnbuscar_Click(object sender, EventArgs e)
{
FrmClientes frmvista = new FrmClientes();

/*
*Navegacion entre Formularios.

- Show(): Abre un form pero no bloqueada al resto, puede abrir varios


formularios y acceder a uno u otro indistintamente.
- ShowDialog(): Muestra un from modal, y mientras no se cierra no se puede
acceder a los forms inferiores.

* */
frmvista.ShowDialog();

private void frmVentas_FormClosing(object sender, FormClosingEventArgs e)


{
_instancia = null;
}
}
}

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace _23_NavegaciondeFormularios
{
static class Program
{
/// <summary>
/// Punto de entrada principal para la aplicacin.
/// </summary>
[STAThread]
static void Main()
{
//En este parte se configura para la inicializacin de los formularios

Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new FrmPrincipal());
}
}