SlideShare una empresa de Scribd logo
1 de 23
Descarga del entorno para programar con C#.
Podemos utilizar el Visual C# 2010 Express que lo podemos descargar de aquí.. Muchas
instituciones universitarias y terciarias tienen convenios para utilizar el Visual Studio .Net 2010
Profesional.
Codificación del problema con el lenguaje C#.
No debemos perder de vista que el fin último es realizar un programa de computación que permita
automatizar una actividad para que muchos procesos sean desarrollados por la computadora.
El diagrama de flujo es un paso intermedio para poder ser interpretado por la computadora.
El paso siguiente es la codificación del diagrama de flujo en un lenguaje de computación, en
nuestro caso emplearemos el lenguaje C#.
Lenguaje de computación: Conjunto de instrucciones que son interpretadas por una computadora
para realizar operaciones, mostrar datos por pantalla, sacar listados por impresora, entrar datos por
teclado, etc.
Conceptos básicos para codificar un programa.
Variable: Es un depósito donde hay un valor. Consta de un nombre y pertenece a un tipo.
Para el ejemplo planteado la variable HorasTrabajadas almacena la cantidad de horas trabajadas por
el operario. La variable ValorHora almacena el precio de una hora de trabajo. La variable Sueldo
almacena el sueldo a abonar al operario.
En el ejemplo tenemos tres variables.
Tipos de variable:
Una variable puede almacenar:
- Valores Enteros (100, 260, etc.)
- Valores Reales (1.24, 2.90, 5.00, etc.)
- Cadenas de caracteres ("Juan", "Compras", "Listado", etc.)
Elección del nombre de una variable:
Debemos elegir nombres de variables representativas. En el ejemplo el nombre HorasTrabajadas es
lo suficientemente claro para darnos una idea acabada sobre su contenido. Podemos darle otros
buenos nombres. Otros no son tan representativos, por ejemplo HTr. Posiblemente cuando estemos
resolviendo un problema dicho nombre nos recuerde que almacenamos las horas trabajadas por el
operario pero cuando pase el tiempo y leamos el diagrama probablemente no recordemos ni
entendamos qué significa HTr.
Consideraciones a tener en cuenta en cada proyecto.
Hay que tener en cuenta que el entorno de programación "Microsoft Visual C# Express" o el
"Visual Studio .Net Profesional" no han sido desarrollados pensando en un principiante de la
programación. Lo mismo ocurre con el propio lenguaje C#, es decir su origen no tiene como
objetivo el aprendizaje de la programación. Debido a estos dos puntos veremos que a medida que
avanzamos con el tutorial muchos conceptos que iremos dejando pendientes se irán aclarando.
Veremos los pasos para la creación de un proyecto en C#.
Pasos.
1 - Ingresemos al "Microsoft Visual C# 2010 Express".
2 - Creación del proyecto. Para esto seleccionamos desde el menú la opción "Archivo" -> "Nuevo
proyecto..."
Aparece un diálogo donde debemos indicar el nombre del proyecto y seleccionar el tipo de proyecto
(elegiremos "Aplicación de consola" y le daremos como nombre al proyecto "CalculoSueldo"):
Podemos ver que el entorno nos generó automáticamente el esqueleto de nuestro programa:
3 - Grabación del proyecto en el disco duro de la computadora. Debemos presionar el ícono de los
diskettes en la barra superior:
Aparece un diálogo donde debemos seleccionar la carpeta donde grabaremos el proyecto (la
podemos cambiar presionando el botón "examinar", conviene dejar seleccionado el checkbox para
que se cree un directorio para la solución):
Codificación del diagrama de flujo en C#
Ahora debemos codificar el diagrama de flujo utilizando las instrucciones del lenguaje C#. Como
hemos visto el entorno de programación del Visual C# nos creó un esqueleto básico sobre el cual
continuaremos el programa:
using System;
usingSystem.Collections.Generic;
usingSystem.Linq;
usingSystem.Text;
namespaceCalculoSuedo
{
class Program
{
static void Main(string[] args)
{
}
}
}
A medida que avancemos en el curso veremos que significa una clase y namespace, cual es el
objetivo del using etc. por el momento nos centraremos donde codificaremos nuestros diagramas de
flujo.
La codificación del diagrama de flujo la haremos dentro de la función Main (la función Main es la
primera que se ejecuta al iniciarse un programa)
El programa completo para el calculo del sueldo de un operario conociendo la cantidad de horas
trabajadas y el costo por hora es:
using System;
usingSystem.Collections.Generic;
usingSystem.Linq;
usingSystem.Text;
namespaceCalculoSuedo
{
class Program
{
static void Main(string[] args)
{
inthorasTrabajadas;
floatcostoHora;
float sueldo;
stringlinea;
Console.Write("Ingrese Horas trabajadas por el operario:");
linea = Console.ReadLine();
horasTrabajadas = int.Parse(linea);
Console.Write("Ingrese el pago por hora:");
linea = Console.ReadLine();
costoHora = float.Parse(linea);
sueldo = horasTrabajadas * costoHora;
Console.Write("El sueldo total del operario es:");
Console.Write(sueldo);
Console.ReadKey();
}
}
}
Para probar el funcionamiento del programa debemos presionar el ícono con un triángulo verde (o
la tecla especial F5 o desde el menú elegir la opción "Depurar" -> "Iniciar depuración"):
La ejecución del programa permite ingresar la cantidad de horas trabajadas por un operario y su
pago por hora, mostrando seguidamente el sueldo que se debe pagar, un ejemplo de la ejecución de
este programa es:
Conceptos que deben quedar claros:
1. Por el momento haremos todo el algoritmo dentro de la función Main. Es decir el resto
siempre lo crea el entorno del Visual C#.
2. Si observamos el diagrama de flujos vemos que debemos definir tres variables:
(horasTrabajadas, costoHora,sueldo), aquí es donde debemos definir que tipos de datos se
almacenarán en las mismas. La cantidad de horas normalmente será un valor entero (ej. 100
- 150 - 230 etc.), pero el costo de la hora es muy común que sea un valor real (ej. 5.35 - 7.50
etc.) y como el sueldo resulta de multiplicar las horas trabajadas por el costo por hora el
mismo deberá ser real.
La definición de las variables la hacemos en la Main:
inthorasTrabajadas;
floatcostoHora;
float sueldo;
Utilizamos la palabra clave int para definir variables enteras (en C# las palabras claves deben ir
obligatoriamente en minúsculas, sino se produce un error sintáctico) Luego de la palabra clave
debemos indicar el nombre de la variable, por ejemplo: horasTrabajadas (se propone que el
nombre de la variable comience con minúscula y en caso de estar constituida por dos palabras o
más palabras deben ir en mayúsculas el primer caracter (un nombre de variable no puede tener
espacios en blanco, empezar con un número, ni tampoco utilizar caracteres especiales)
Debemos buscar siempre nombres de variables que nos indiquen que almacenan (no es
conveniente llamar a nombres de variables con letras individuales)
3. Para mostrar mensajes en la pantalla utilizamos el objeto "Console":
4. Console.Write("Ingrese Horas trabajadas por el operario:");
Con esta sintaxis todo lo que se encuentra contenido entre comillas aparecerá exactamente en la
ventana de la "Console".
Si disponemos una variable:
Console.Write(sueldo);
Aparecerá el contenido de la variable. Es decir el valor almacenado en la variable sueldo y no el
mensaje "sueldo".
5. Para hacer la entrada de datos por teclado en C# se complica. Debemos definir una variable
de tipo string que la llamaremos linea:
6. stringlinea;
Luego cada vez que necesitemos ingresar por teclado un conjunto de caracteres utilizaremos
la función ReadLine del objeto Console con la siguiente sintaxis:
linea = Console.ReadLine();
Un segundo paso es copiar el contenido de la variable linea en una variable de tipo int:
horasTrabajadas = int.Parse(linea);
O una variable de tipo float:
costoHora = float.Parse(linea);
La variable linea almacena temporalmente los datos que ingresa el operador del programa,
para luego copiarse a la variable respectiva (como vemos si queremos convertir un string a
tipo de dato entero utilizamos la función Parse del objeto int (int.Parse))
Las operaciones que indicamos en el diagrama de flujo mediante la figura rectángulo la
codificamos tal cual:
sueldo = horasTrabajadas * costoHora;
Podemos ver una relación entre las instrucciones que debemos utilizar para cada símbolo del
diagrama de flujo:
En el diagrama de flujo no indicamos la definición de variables:
inthorasTrabajadas;
floatcostoHora;
float sueldo;
stringlinea;
No representamos con símbolos los mensajes a mostrar previo a la carga de datos por teclado:
Console.Write("Ingrese Horas trabajadas por el operario:");
Como hemos visto hasta ahora hay muchas partes de nuestro código que no entendemos pero son
indispensables para la implementación de nuestros programas, a medida que avancemos con el
curso muchos de estos conceptos se irán aclarando.
Interfaces visuales (Windows Forms)
Hasta ahora hemos resuelto todos los algoritmos haciendo las salidas a través de una consola en
modo texto. La realidad que es muy común la necesidad de hacer la entrada y salida de datos
mediante una interfaz más amigable con el usuario.
En C# existen varias librerías de clase para implementar interfaces visuales. Utilizaremos las
Windows Forms.
Para crear una aplicación que utilice esta librería debemos crear un proyecto. Los pasos son los
siguientes:
1. Desde el menú de opciones del Visual Studio .Net seleccionamos la opción: Archivo -> Nuevo
proyecto...
2. Seleccionamos la plantilla "Aplicación de Windows Forms".
3. Ahora ya tenemos un esqueleto para desarrollar nuestra aplicación. Si vemos la ventana del
"Explorador de soluciones tenemos tres archivos generados en forma automática: Program.cs,
Form1.cs y Form1.Designer.cs:
En la parte central tenemos el Form listo para disponer controles con el mouse.
4. Ahora podemos seleccionar un control visual de la ventana "Cuadro de herramientas"
(seleccionemos el control Button) y seguidamente presionemos el botón izquierdo del mouse
dentro del formulario que se encuentra en la parte central del Visual Studio .net:
5. Ahora podemos analizar la ventana "Propiedades" que nos muestra las propiedades del objeto
seleccionado del formulario. Podemos por ejemplo si tenemos seleccionado el botón cambiar la
propiedad text (la misma cambia la etiqueta que muestra el botón):
6. Cuando ejecutamos la aplicación el resultado podemos ver que es muy distinto a la interfaz en
modo texto vista hasta el momento:
7. Por último vamos a ver los contenidos de los archivos generados automáticamente por el Visual
Studio .Net.
Program.ch
using System;
usingSystem.Collections.Generic;
usingSystem.Linq;
usingSystem.Windows.Forms;
namespace WindowsFormsApplication1
{
static class Program
{
///
/// Punto de entrada principal para la aplicación.
///
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
}
}
}
Form1.ch
using System;
usingSystem.Collections.Generic;
usingSystem.ComponentModel;
usingSystem.Data;
usingSystem.Drawing;
usingSystem.Linq;
usingSystem.Text;
usingSystem.Windows.Forms;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
}
}
Form1.Designer.ch
namespace WindowsFormsApplication1
{
partial class Form1
{
///
/// Variable del diseñador requerida.
///
privateSystem.ComponentModel.IContainercomponents = null;
///
/// Limpiar los recursos que se estén utilizando.
///
/// true si los recursos administrados se deben eliminar; false en
caso contrario, false.
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Código generado por el Diseñador de Windows Forms
///
/// Método necesario para admitir el Diseñador. No se puede
modificar
/// el contenido del método con el editor de código.
///
private void InitializeComponent()
{
this.button1 = new System.Windows.Forms.Button();
this.SuspendLayout();
//
// button1
//
this.button1.Location = new System.Drawing.Point(190, 223);
this.button1.Name = "button1";
this.button1.Size = new System.Drawing.Size(75, 23);
this.button1.TabIndex = 0;
this.button1.Text = "HolaMundo";
this.button1.UseVisualStyleBackColor = true;
//
// Form1
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(292, 273);
this.Controls.Add(this.button1);
this.Name = "Form1";
this.Text = "Form1";
this.ResumeLayout(false);
}
#endregion
privateSystem.Windows.Forms.Button button1;
}
}
- Cuadro de herramientas (Windows Forms)
El cuadro de herramientas contiene todas las componentes visuales que nos permiten elaborar
nuestro formulario.
Podemos ver todos los controles visuales en forma completa:
O agrupados por su uso(Menús, datos etc.):
Problema 1:
: Desarrollar un programa que muestre un objeto de cada una de las siguientes clases:
MonthCalendar, TextBox y Button
La interfaz visual debe ser parecida a esta:
Hasta ahora solo hemos creado una interfaz visual, como podemos ver algunas componentes en
tiempo de ejecución tienen funcionalidad (el objeto de la clase MonthCalendar si ejecutamos el
programa nos permite seleccionar una fecha, cambiar de mes etc., el control de la clase TextBox
nos permite ingresar una cadena de caracteres, pero el objeto de la clase Button cuando se presiona
podemos ver que se visualiza que es hundido con el mouse pero no hace nada):
Ventana de propiedades (Windows Forms)
La "ventana de propiedades" nos permite inicializar los valores de las propiedades del objeto que se
encuentra seleccionado en el formulario (Button, MonthCalendar, TextBox etc.)
Por ejemplo si disponemos dos objetos de la clase Button y seleccionamos uno de ellos podremos
editar las propiedades del mismo en la "ventana de propiedades":
A medida que seleccionamos un objeto en la ventana de "Diseño" podemos ver como se actualiza la
"ventana de propiedades", por ejemplo la propiedad Text de la clase Button permite fijar la etiqueta
que muestra el botón.
El formulario también es un objeto, esto quiere decir que se lo seleccionamos luego la "ventana de
propiedades" nos muestra las propiedades de la clase Form:
Problema propuesto
1. Elaborar una interfaz gráfica que muestre una calculadora (utilizar objetos de la clase Button y un
objeto de la clase TextBox donde se mostrarían los resultados y se cargarían los datos), tener en
cuenta que solo se debe implementar la interfaz y no la funcionalidad de una calculadora.
Ventana de eventos (Windows Forms)
La ventana de eventos coincide con la ventana de propiedades. Para activar la lista de eventos
disponibles para un objeto debemos presionar:
Podemos observar la lista de eventos que puede reaccionar el objeto seleccionado en ese momento.
Por ejemplo si tenemos seleccionado un objeto de la clase Button el evento más común que
deberemos implementar es el Click (este evento se dispara cuando en tiempo de ejecución del
programa se presiona el botón)
Para disponer el código para dicho evento debemos hacer doble clic sobre dicho evento (esto hace
que se active la ventana del editor y genere automáticamente el método asociado a dicho evento):
Problema:
Confeccionar un programa que al presionar un botón se muestre en un objeto de la clase Label el
string "Hola Mundo".
Programa:
using System;
usingSystem.Collections.Generic;
usingSystem.ComponentModel;
usingSystem.Data;
usingSystem.Drawing;
usingSystem.Linq;
usingSystem.Text;
usingSystem.Windows.Forms;
namespace WindowsFormsApplication5
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
label1.Text = "Hola Mundo";
}
}
}
Hay que tener en cuenta que la clase anterior es parcial (el archivo Form1.Designer.cs contiene la
definición de los dos objetos y la inicialización de sus propiedades y evento):
namespaceWA05
{
partial class Form1
{
///
/// Variable del diseñador requerida.
///
privateSystem.ComponentModel.IContainercomponents = null;
///
/// Limpiar los recursos que se estén utilizando.
///
/// true si los recursos administrados se deben eliminar;
/// false en caso contrario, false.
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Código generado por el Diseñador de Windows Forms
///
/// Método necesario para admitir el Diseñador. No se puede modificar
/// el contenido del método con el editor de código.
///
private void InitializeComponent()
{
this.label1 = new System.Windows.Forms.Label();
this.button1 = new System.Windows.Forms.Button();
this.SuspendLayout();
//
// label1
//
this.label1.AutoSize = true;
this.label1.Location = new System.Drawing.Point(48, 102);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(35, 13);
this.label1.TabIndex = 0;
this.label1.Text = "label1";
//
// button1
//
this.button1.Location = new System.Drawing.Point(51, 148);
this.button1.Name = "button1";
this.button1.Size = new System.Drawing.Size(75, 23);
this.button1.TabIndex = 1;
this.button1.Text = "Presionar";
this.button1.UseVisualStyleBackColor = true;
this.button1.Click += new System.EventHandler(this.button1_Click);
//
// Form1
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(292, 273);
this.Controls.Add(this.button1);
this.Controls.Add(this.label1);
this.Name = "Form1";
this.Text = "Form1";
this.ResumeLayout(false);
this.PerformLayout();
}
#endregion
privateSystem.Windows.Forms.Label label1;
privateSystem.Windows.Forms.Button button1;
}
}
Al ejecutar el programa si presionamos el botón vemos como cambia el contenido de la Label (esto
debido a que en el evento click del botón cambiamos el valor de la propiedad Text del objeto de la
clase Label):
Problema propuesto
1. Disponer 7 objetos de la clase Button con los días de la semana. Fijar en los atributos Text de cada
botón los días de la semana. Al presionar un botón mostrar en un objeto de la clase Label el día
seleccionado.
using System;
usingSystem.Collections.Generic;
usingSystem.ComponentModel;
usingSystem.Data;
usingSystem.Drawing;
usingSystem.Linq;
usingSystem.Text;
usingSystem.Windows.Forms;
namespace WindowsFormsApplication6
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
label1.Text = "Lunes";
}
private void button2_Click(object sender, EventArgs e)
{
label1.Text = "Martes";
}
private void button3_Click(object sender, EventArgs e)
{
label1.Text = "Miercoles";
}
private void button4_Click(object sender, EventArgs e)
{
label1.Text = "Jueves";
}
private void button5_Click(object sender, EventArgs e)
{
label1.Text = "Viernes";
}
private void button6_Click(object sender, EventArgs e)
{
label1.Text = "Sábado";
}
private void button7_Click(object sender, EventArgs e)
{
label1.Text = "Domingo";
}
}
}
Controles comunes - Label
En el "cuadro de herramientas" podemos ver las componentes visuales agrupadas. En la pestaña de
Controles comunes podemos acceder a los controles visuales que normalmente toda aplicación
requiere.
El primer control que vamos a analizar es la clase Label. Un control de tipo Label nos permite
mostrar básicamente un texto inicializando la propiedad Text.
Las propiedades más comunes de este control son:
Text: Es el string que muestra el control.
BackColor: Define el color de fondo del control.
ForeColor: Define el color del texto.
Font: Define la fuente del texto.
BorderStyle: Define si la label tiene un borde visible.
AutoSize: Permite o no redimensionar la label en forma automática.
Cursor: Definimos el ícono del cursor a mostrar cuando disponemos el mouse dentro del control.
Visible: Determina si el control está visible u oculto cuando ejecutamos el programa.
Problema propuesto
1. Crear una aplicación que muestre en 6 objetos de la clase Label con algunos nombres de controles
visuales contenidos en la pestaña de "controles comunes" del cuadro de herramientas
Del 31 al 35 están

Más contenido relacionado

La actualidad más candente

La actualidad más candente (14)

Apuntes de c
Apuntes de cApuntes de c
Apuntes de c
 
Introduccion dev c++
Introduccion dev c++Introduccion dev c++
Introduccion dev c++
 
C(++) programacion en c y c++
C(++)   programacion en c y c++C(++)   programacion en c y c++
C(++) programacion en c y c++
 
Programación c++forcsma
Programación c++forcsmaProgramación c++forcsma
Programación c++forcsma
 
Intro2
Intro2Intro2
Intro2
 
Curso de programacion en c++ para microcontroladores pic 16 f87xx
Curso de programacion en c++ para microcontroladores pic 16 f87xxCurso de programacion en c++ para microcontroladores pic 16 f87xx
Curso de programacion en c++ para microcontroladores pic 16 f87xx
 
Guía De Ejercicios Programación Web Básica
Guía De Ejercicios Programación Web BásicaGuía De Ejercicios Programación Web Básica
Guía De Ejercicios Programación Web Básica
 
2. Introduccion A C#
2.  Introduccion A C#2.  Introduccion A C#
2. Introduccion A C#
 
37975756-Guia-de-C
37975756-Guia-de-C37975756-Guia-de-C
37975756-Guia-de-C
 
C++
C++C++
C++
 
Dev c++
Dev c++Dev c++
Dev c++
 
Programación en C++
Programación en C++Programación en C++
Programación en C++
 
Introducción
IntroducciónIntroducción
Introducción
 
El arte de programar c++ - versión 3.0
El arte de programar   c++ - versión 3.0El arte de programar   c++ - versión 3.0
El arte de programar c++ - versión 3.0
 

Destacado

Golpe de estado blando
Golpe de estado blandoGolpe de estado blando
Golpe de estado blandoMercy Ordónez
 
Taller onve temas de estudio
Taller onve temas de estudioTaller onve temas de estudio
Taller onve temas de estudio1Resiste1
 
REVOLUCION PACÍFICA
REVOLUCION PACÍFICAREVOLUCION PACÍFICA
REVOLUCION PACÍFICApsy Saul
 
Coaching politico 2 liderazgo politico
Coaching politico 2 liderazgo politicoCoaching politico 2 liderazgo politico
Coaching politico 2 liderazgo politicoEnrique Sacanell
 
Honduras_mas_alla_del_golpe
Honduras_mas_alla_del_golpeHonduras_mas_alla_del_golpe
Honduras_mas_alla_del_golpesomossur
 
Guia para la formación de lideres comunitarios FACES UC 2012 prof. ferreira
Guia para la formación de lideres comunitarios FACES UC 2012 prof. ferreiraGuia para la formación de lideres comunitarios FACES UC 2012 prof. ferreira
Guia para la formación de lideres comunitarios FACES UC 2012 prof. ferreiraJOSE ANGEL FERREIRA
 
Coaching politico 3 la persona
Coaching politico 3 la personaCoaching politico 3 la persona
Coaching politico 3 la personaEnrique Sacanell
 
Claves de liderazgo politico
Claves de liderazgo politicoClaves de liderazgo politico
Claves de liderazgo politicoAntoni
 
Liderazgo politico
Liderazgo politicoLiderazgo politico
Liderazgo politicoDIEGO0201
 
Libro de la dictadura a la democracia
Libro de la dictadura a la democraciaLibro de la dictadura a la democracia
Libro de la dictadura a la democracia72pantalla
 
Conferencia coaching politico
Conferencia coaching politicoConferencia coaching politico
Conferencia coaching politicoEnrique Sacanell
 
Liderazgo comunitario
Liderazgo comunitarioLiderazgo comunitario
Liderazgo comunitarioSyddney Potoy
 
Diapositiva del liderazgo exitoso
Diapositiva del liderazgo exitosoDiapositiva del liderazgo exitoso
Diapositiva del liderazgo exitosogjchas
 
Liderazgo
LiderazgoLiderazgo
Liderazgoelfreco
 
Diapositivas liderazgo
Diapositivas liderazgoDiapositivas liderazgo
Diapositivas liderazgofabian1070
 

Destacado (18)

Golpe de estado blando
Golpe de estado blandoGolpe de estado blando
Golpe de estado blando
 
Taller onve temas de estudio
Taller onve temas de estudioTaller onve temas de estudio
Taller onve temas de estudio
 
REVOLUCION PACÍFICA
REVOLUCION PACÍFICAREVOLUCION PACÍFICA
REVOLUCION PACÍFICA
 
Golpe blando
Golpe blandoGolpe blando
Golpe blando
 
Liderazgo político siglo xxi
Liderazgo político siglo xxiLiderazgo político siglo xxi
Liderazgo político siglo xxi
 
Coaching politico 2 liderazgo politico
Coaching politico 2 liderazgo politicoCoaching politico 2 liderazgo politico
Coaching politico 2 liderazgo politico
 
Honduras_mas_alla_del_golpe
Honduras_mas_alla_del_golpeHonduras_mas_alla_del_golpe
Honduras_mas_alla_del_golpe
 
Guia para la formación de lideres comunitarios FACES UC 2012 prof. ferreira
Guia para la formación de lideres comunitarios FACES UC 2012 prof. ferreiraGuia para la formación de lideres comunitarios FACES UC 2012 prof. ferreira
Guia para la formación de lideres comunitarios FACES UC 2012 prof. ferreira
 
Coaching politico 3 la persona
Coaching politico 3 la personaCoaching politico 3 la persona
Coaching politico 3 la persona
 
Claves de liderazgo politico
Claves de liderazgo politicoClaves de liderazgo politico
Claves de liderazgo politico
 
Liderazgo politico
Liderazgo politicoLiderazgo politico
Liderazgo politico
 
Libro de la dictadura a la democracia
Libro de la dictadura a la democraciaLibro de la dictadura a la democracia
Libro de la dictadura a la democracia
 
Conferencia coaching politico
Conferencia coaching politicoConferencia coaching politico
Conferencia coaching politico
 
Liderazgo comunitario
Liderazgo comunitarioLiderazgo comunitario
Liderazgo comunitario
 
Diapositiva del liderazgo exitoso
Diapositiva del liderazgo exitosoDiapositiva del liderazgo exitoso
Diapositiva del liderazgo exitoso
 
Liderazgo
LiderazgoLiderazgo
Liderazgo
 
Diapositivas liderazgo
Diapositivas liderazgoDiapositivas liderazgo
Diapositivas liderazgo
 
Liderazgo y Clases de Lideres
Liderazgo y Clases de LideresLiderazgo y Clases de Lideres
Liderazgo y Clases de Lideres
 

Similar a C sharp manual[1]

Similar a C sharp manual[1] (20)

Programación c
Programación cProgramación c
Programación c
 
Qué es un algoritmo
Qué es un algoritmoQué es un algoritmo
Qué es un algoritmo
 
Conociendo los Lenguajes de Programacion
Conociendo los Lenguajes de ProgramacionConociendo los Lenguajes de Programacion
Conociendo los Lenguajes de Programacion
 
definiciones de c++ para el trabajo.docx
definiciones de c++ para el trabajo.docxdefiniciones de c++ para el trabajo.docx
definiciones de c++ para el trabajo.docx
 
Varios tema de c++ por (alvaro tejada)
Varios tema de c++ por (alvaro tejada)Varios tema de c++ por (alvaro tejada)
Varios tema de c++ por (alvaro tejada)
 
Prueba
PruebaPrueba
Prueba
 
Visual basic .NET
Visual basic .NETVisual basic .NET
Visual basic .NET
 
De algoritmo a programa en c++
De algoritmo a programa en c++De algoritmo a programa en c++
De algoritmo a programa en c++
 
C++
C++C++
C++
 
TUTORIAL DE VISUAL C++
TUTORIAL DE VISUAL C++TUTORIAL DE VISUAL C++
TUTORIAL DE VISUAL C++
 
Conceptos básicos
Conceptos básicosConceptos básicos
Conceptos básicos
 
2do parcial c
2do parcial c2do parcial c
2do parcial c
 
Ejemplos de pseudocódigo
Ejemplos de pseudocódigoEjemplos de pseudocódigo
Ejemplos de pseudocódigo
 
2154086 curso-c-c-con-clase
2154086 curso-c-c-con-clase2154086 curso-c-c-con-clase
2154086 curso-c-c-con-clase
 
Cursocpp
CursocppCursocpp
Cursocpp
 
Programacion c
Programacion cProgramacion c
Programacion c
 
Instituto tecnológico particular
Instituto tecnológico particularInstituto tecnológico particular
Instituto tecnológico particular
 
Practicas bloque 1
Practicas bloque 1Practicas bloque 1
Practicas bloque 1
 
Introducción al curso de C.docx
Introducción al curso de C.docxIntroducción al curso de C.docx
Introducción al curso de C.docx
 
Evolución de la programación
Evolución de la programaciónEvolución de la programación
Evolución de la programación
 

Último

Lecciones 04 Esc. Sabática. Defendamos la verdad
Lecciones 04 Esc. Sabática. Defendamos la verdadLecciones 04 Esc. Sabática. Defendamos la verdad
Lecciones 04 Esc. Sabática. Defendamos la verdadAlejandrino Halire Ccahuana
 
Registro Auxiliar - Primaria 2024 (1).pptx
Registro Auxiliar - Primaria  2024 (1).pptxRegistro Auxiliar - Primaria  2024 (1).pptx
Registro Auxiliar - Primaria 2024 (1).pptxFelicitasAsuncionDia
 
Clasificaciones, modalidades y tendencias de investigación educativa.
Clasificaciones, modalidades y tendencias de investigación educativa.Clasificaciones, modalidades y tendencias de investigación educativa.
Clasificaciones, modalidades y tendencias de investigación educativa.José Luis Palma
 
NARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARO
NARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARONARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARO
NARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFAROJosé Luis Palma
 
PRIMER SEMESTRE 2024 ASAMBLEA DEPARTAMENTAL.pptx
PRIMER SEMESTRE 2024 ASAMBLEA DEPARTAMENTAL.pptxPRIMER SEMESTRE 2024 ASAMBLEA DEPARTAMENTAL.pptx
PRIMER SEMESTRE 2024 ASAMBLEA DEPARTAMENTAL.pptxinformacionasapespu
 
programa dia de las madres 10 de mayo para evento
programa dia de las madres 10 de mayo  para eventoprograma dia de las madres 10 de mayo  para evento
programa dia de las madres 10 de mayo para eventoDiegoMtsS
 
La triple Naturaleza del Hombre estudio.
La triple Naturaleza del Hombre estudio.La triple Naturaleza del Hombre estudio.
La triple Naturaleza del Hombre estudio.amayarogel
 
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...JAVIER SOLIS NOYOLA
 
Herramientas de Inteligencia Artificial.pdf
Herramientas de Inteligencia Artificial.pdfHerramientas de Inteligencia Artificial.pdf
Herramientas de Inteligencia Artificial.pdfMARIAPAULAMAHECHAMOR
 
Planificacion Anual 2do Grado Educacion Primaria 2024 Ccesa007.pdf
Planificacion Anual 2do Grado Educacion Primaria   2024   Ccesa007.pdfPlanificacion Anual 2do Grado Educacion Primaria   2024   Ccesa007.pdf
Planificacion Anual 2do Grado Educacion Primaria 2024 Ccesa007.pdfDemetrio Ccesa Rayme
 
GLOSAS Y PALABRAS ACTO 2 DE ABRIL 2024.docx
GLOSAS  Y PALABRAS ACTO 2 DE ABRIL 2024.docxGLOSAS  Y PALABRAS ACTO 2 DE ABRIL 2024.docx
GLOSAS Y PALABRAS ACTO 2 DE ABRIL 2024.docxAleParedes11
 
EXPANSIÓN ECONÓMICA DE OCCIDENTE LEÓN.pptx
EXPANSIÓN ECONÓMICA DE OCCIDENTE LEÓN.pptxEXPANSIÓN ECONÓMICA DE OCCIDENTE LEÓN.pptx
EXPANSIÓN ECONÓMICA DE OCCIDENTE LEÓN.pptxPryhaSalam
 
EXPECTATIVAS vs PERSPECTIVA en la vida.
EXPECTATIVAS vs PERSPECTIVA  en la vida.EXPECTATIVAS vs PERSPECTIVA  en la vida.
EXPECTATIVAS vs PERSPECTIVA en la vida.DaluiMonasterio
 
Planificacion Anual 4to Grado Educacion Primaria 2024 Ccesa007.pdf
Planificacion Anual 4to Grado Educacion Primaria   2024   Ccesa007.pdfPlanificacion Anual 4to Grado Educacion Primaria   2024   Ccesa007.pdf
Planificacion Anual 4to Grado Educacion Primaria 2024 Ccesa007.pdfDemetrio Ccesa Rayme
 
MAYO 1 PROYECTO día de la madre el amor más grande
MAYO 1 PROYECTO día de la madre el amor más grandeMAYO 1 PROYECTO día de la madre el amor más grande
MAYO 1 PROYECTO día de la madre el amor más grandeMarjorie Burga
 
Neurociencias para Educadores NE24 Ccesa007.pdf
Neurociencias para Educadores  NE24  Ccesa007.pdfNeurociencias para Educadores  NE24  Ccesa007.pdf
Neurociencias para Educadores NE24 Ccesa007.pdfDemetrio Ccesa Rayme
 
Introducción:Los objetivos de Desarrollo Sostenible
Introducción:Los objetivos de Desarrollo SostenibleIntroducción:Los objetivos de Desarrollo Sostenible
Introducción:Los objetivos de Desarrollo SostenibleJonathanCovena1
 
Resolucion de Problemas en Educacion Inicial 5 años ED-2024 Ccesa007.pdf
Resolucion de Problemas en Educacion Inicial 5 años ED-2024 Ccesa007.pdfResolucion de Problemas en Educacion Inicial 5 años ED-2024 Ccesa007.pdf
Resolucion de Problemas en Educacion Inicial 5 años ED-2024 Ccesa007.pdfDemetrio Ccesa Rayme
 

Último (20)

Lecciones 04 Esc. Sabática. Defendamos la verdad
Lecciones 04 Esc. Sabática. Defendamos la verdadLecciones 04 Esc. Sabática. Defendamos la verdad
Lecciones 04 Esc. Sabática. Defendamos la verdad
 
Defendamos la verdad. La defensa es importante.
Defendamos la verdad. La defensa es importante.Defendamos la verdad. La defensa es importante.
Defendamos la verdad. La defensa es importante.
 
Registro Auxiliar - Primaria 2024 (1).pptx
Registro Auxiliar - Primaria  2024 (1).pptxRegistro Auxiliar - Primaria  2024 (1).pptx
Registro Auxiliar - Primaria 2024 (1).pptx
 
Clasificaciones, modalidades y tendencias de investigación educativa.
Clasificaciones, modalidades y tendencias de investigación educativa.Clasificaciones, modalidades y tendencias de investigación educativa.
Clasificaciones, modalidades y tendencias de investigación educativa.
 
NARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARO
NARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARONARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARO
NARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARO
 
PRIMER SEMESTRE 2024 ASAMBLEA DEPARTAMENTAL.pptx
PRIMER SEMESTRE 2024 ASAMBLEA DEPARTAMENTAL.pptxPRIMER SEMESTRE 2024 ASAMBLEA DEPARTAMENTAL.pptx
PRIMER SEMESTRE 2024 ASAMBLEA DEPARTAMENTAL.pptx
 
programa dia de las madres 10 de mayo para evento
programa dia de las madres 10 de mayo  para eventoprograma dia de las madres 10 de mayo  para evento
programa dia de las madres 10 de mayo para evento
 
La triple Naturaleza del Hombre estudio.
La triple Naturaleza del Hombre estudio.La triple Naturaleza del Hombre estudio.
La triple Naturaleza del Hombre estudio.
 
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...
 
Herramientas de Inteligencia Artificial.pdf
Herramientas de Inteligencia Artificial.pdfHerramientas de Inteligencia Artificial.pdf
Herramientas de Inteligencia Artificial.pdf
 
Planificacion Anual 2do Grado Educacion Primaria 2024 Ccesa007.pdf
Planificacion Anual 2do Grado Educacion Primaria   2024   Ccesa007.pdfPlanificacion Anual 2do Grado Educacion Primaria   2024   Ccesa007.pdf
Planificacion Anual 2do Grado Educacion Primaria 2024 Ccesa007.pdf
 
GLOSAS Y PALABRAS ACTO 2 DE ABRIL 2024.docx
GLOSAS  Y PALABRAS ACTO 2 DE ABRIL 2024.docxGLOSAS  Y PALABRAS ACTO 2 DE ABRIL 2024.docx
GLOSAS Y PALABRAS ACTO 2 DE ABRIL 2024.docx
 
EXPANSIÓN ECONÓMICA DE OCCIDENTE LEÓN.pptx
EXPANSIÓN ECONÓMICA DE OCCIDENTE LEÓN.pptxEXPANSIÓN ECONÓMICA DE OCCIDENTE LEÓN.pptx
EXPANSIÓN ECONÓMICA DE OCCIDENTE LEÓN.pptx
 
EXPECTATIVAS vs PERSPECTIVA en la vida.
EXPECTATIVAS vs PERSPECTIVA  en la vida.EXPECTATIVAS vs PERSPECTIVA  en la vida.
EXPECTATIVAS vs PERSPECTIVA en la vida.
 
Planificacion Anual 4to Grado Educacion Primaria 2024 Ccesa007.pdf
Planificacion Anual 4to Grado Educacion Primaria   2024   Ccesa007.pdfPlanificacion Anual 4to Grado Educacion Primaria   2024   Ccesa007.pdf
Planificacion Anual 4to Grado Educacion Primaria 2024 Ccesa007.pdf
 
MAYO 1 PROYECTO día de la madre el amor más grande
MAYO 1 PROYECTO día de la madre el amor más grandeMAYO 1 PROYECTO día de la madre el amor más grande
MAYO 1 PROYECTO día de la madre el amor más grande
 
Neurociencias para Educadores NE24 Ccesa007.pdf
Neurociencias para Educadores  NE24  Ccesa007.pdfNeurociencias para Educadores  NE24  Ccesa007.pdf
Neurociencias para Educadores NE24 Ccesa007.pdf
 
Introducción:Los objetivos de Desarrollo Sostenible
Introducción:Los objetivos de Desarrollo SostenibleIntroducción:Los objetivos de Desarrollo Sostenible
Introducción:Los objetivos de Desarrollo Sostenible
 
Power Point: "Defendamos la verdad".pptx
Power Point: "Defendamos la verdad".pptxPower Point: "Defendamos la verdad".pptx
Power Point: "Defendamos la verdad".pptx
 
Resolucion de Problemas en Educacion Inicial 5 años ED-2024 Ccesa007.pdf
Resolucion de Problemas en Educacion Inicial 5 años ED-2024 Ccesa007.pdfResolucion de Problemas en Educacion Inicial 5 años ED-2024 Ccesa007.pdf
Resolucion de Problemas en Educacion Inicial 5 años ED-2024 Ccesa007.pdf
 

C sharp manual[1]

  • 1. Descarga del entorno para programar con C#. Podemos utilizar el Visual C# 2010 Express que lo podemos descargar de aquí.. Muchas instituciones universitarias y terciarias tienen convenios para utilizar el Visual Studio .Net 2010 Profesional. Codificación del problema con el lenguaje C#. No debemos perder de vista que el fin último es realizar un programa de computación que permita automatizar una actividad para que muchos procesos sean desarrollados por la computadora. El diagrama de flujo es un paso intermedio para poder ser interpretado por la computadora. El paso siguiente es la codificación del diagrama de flujo en un lenguaje de computación, en nuestro caso emplearemos el lenguaje C#. Lenguaje de computación: Conjunto de instrucciones que son interpretadas por una computadora para realizar operaciones, mostrar datos por pantalla, sacar listados por impresora, entrar datos por teclado, etc. Conceptos básicos para codificar un programa. Variable: Es un depósito donde hay un valor. Consta de un nombre y pertenece a un tipo. Para el ejemplo planteado la variable HorasTrabajadas almacena la cantidad de horas trabajadas por el operario. La variable ValorHora almacena el precio de una hora de trabajo. La variable Sueldo almacena el sueldo a abonar al operario. En el ejemplo tenemos tres variables.
  • 2. Tipos de variable: Una variable puede almacenar: - Valores Enteros (100, 260, etc.) - Valores Reales (1.24, 2.90, 5.00, etc.) - Cadenas de caracteres ("Juan", "Compras", "Listado", etc.) Elección del nombre de una variable: Debemos elegir nombres de variables representativas. En el ejemplo el nombre HorasTrabajadas es lo suficientemente claro para darnos una idea acabada sobre su contenido. Podemos darle otros buenos nombres. Otros no son tan representativos, por ejemplo HTr. Posiblemente cuando estemos resolviendo un problema dicho nombre nos recuerde que almacenamos las horas trabajadas por el operario pero cuando pase el tiempo y leamos el diagrama probablemente no recordemos ni entendamos qué significa HTr. Consideraciones a tener en cuenta en cada proyecto. Hay que tener en cuenta que el entorno de programación "Microsoft Visual C# Express" o el "Visual Studio .Net Profesional" no han sido desarrollados pensando en un principiante de la programación. Lo mismo ocurre con el propio lenguaje C#, es decir su origen no tiene como objetivo el aprendizaje de la programación. Debido a estos dos puntos veremos que a medida que avanzamos con el tutorial muchos conceptos que iremos dejando pendientes se irán aclarando. Veremos los pasos para la creación de un proyecto en C#. Pasos. 1 - Ingresemos al "Microsoft Visual C# 2010 Express". 2 - Creación del proyecto. Para esto seleccionamos desde el menú la opción "Archivo" -> "Nuevo proyecto..." Aparece un diálogo donde debemos indicar el nombre del proyecto y seleccionar el tipo de proyecto
  • 3. (elegiremos "Aplicación de consola" y le daremos como nombre al proyecto "CalculoSueldo"): Podemos ver que el entorno nos generó automáticamente el esqueleto de nuestro programa: 3 - Grabación del proyecto en el disco duro de la computadora. Debemos presionar el ícono de los diskettes en la barra superior:
  • 4. Aparece un diálogo donde debemos seleccionar la carpeta donde grabaremos el proyecto (la podemos cambiar presionando el botón "examinar", conviene dejar seleccionado el checkbox para que se cree un directorio para la solución): Codificación del diagrama de flujo en C# Ahora debemos codificar el diagrama de flujo utilizando las instrucciones del lenguaje C#. Como hemos visto el entorno de programación del Visual C# nos creó un esqueleto básico sobre el cual continuaremos el programa: using System; usingSystem.Collections.Generic; usingSystem.Linq; usingSystem.Text; namespaceCalculoSuedo { class Program { static void Main(string[] args)
  • 5. { } } } A medida que avancemos en el curso veremos que significa una clase y namespace, cual es el objetivo del using etc. por el momento nos centraremos donde codificaremos nuestros diagramas de flujo. La codificación del diagrama de flujo la haremos dentro de la función Main (la función Main es la primera que se ejecuta al iniciarse un programa) El programa completo para el calculo del sueldo de un operario conociendo la cantidad de horas trabajadas y el costo por hora es: using System; usingSystem.Collections.Generic; usingSystem.Linq; usingSystem.Text; namespaceCalculoSuedo { class Program { static void Main(string[] args) { inthorasTrabajadas; floatcostoHora; float sueldo; stringlinea; Console.Write("Ingrese Horas trabajadas por el operario:"); linea = Console.ReadLine(); horasTrabajadas = int.Parse(linea); Console.Write("Ingrese el pago por hora:"); linea = Console.ReadLine(); costoHora = float.Parse(linea); sueldo = horasTrabajadas * costoHora; Console.Write("El sueldo total del operario es:"); Console.Write(sueldo); Console.ReadKey(); } } }
  • 6. Para probar el funcionamiento del programa debemos presionar el ícono con un triángulo verde (o la tecla especial F5 o desde el menú elegir la opción "Depurar" -> "Iniciar depuración"): La ejecución del programa permite ingresar la cantidad de horas trabajadas por un operario y su pago por hora, mostrando seguidamente el sueldo que se debe pagar, un ejemplo de la ejecución de este programa es: Conceptos que deben quedar claros: 1. Por el momento haremos todo el algoritmo dentro de la función Main. Es decir el resto siempre lo crea el entorno del Visual C#. 2. Si observamos el diagrama de flujos vemos que debemos definir tres variables: (horasTrabajadas, costoHora,sueldo), aquí es donde debemos definir que tipos de datos se almacenarán en las mismas. La cantidad de horas normalmente será un valor entero (ej. 100 - 150 - 230 etc.), pero el costo de la hora es muy común que sea un valor real (ej. 5.35 - 7.50 etc.) y como el sueldo resulta de multiplicar las horas trabajadas por el costo por hora el mismo deberá ser real.
  • 7. La definición de las variables la hacemos en la Main: inthorasTrabajadas; floatcostoHora; float sueldo; Utilizamos la palabra clave int para definir variables enteras (en C# las palabras claves deben ir obligatoriamente en minúsculas, sino se produce un error sintáctico) Luego de la palabra clave debemos indicar el nombre de la variable, por ejemplo: horasTrabajadas (se propone que el nombre de la variable comience con minúscula y en caso de estar constituida por dos palabras o más palabras deben ir en mayúsculas el primer caracter (un nombre de variable no puede tener espacios en blanco, empezar con un número, ni tampoco utilizar caracteres especiales) Debemos buscar siempre nombres de variables que nos indiquen que almacenan (no es conveniente llamar a nombres de variables con letras individuales) 3. Para mostrar mensajes en la pantalla utilizamos el objeto "Console": 4. Console.Write("Ingrese Horas trabajadas por el operario:"); Con esta sintaxis todo lo que se encuentra contenido entre comillas aparecerá exactamente en la ventana de la "Console". Si disponemos una variable: Console.Write(sueldo); Aparecerá el contenido de la variable. Es decir el valor almacenado en la variable sueldo y no el mensaje "sueldo". 5. Para hacer la entrada de datos por teclado en C# se complica. Debemos definir una variable de tipo string que la llamaremos linea: 6. stringlinea; Luego cada vez que necesitemos ingresar por teclado un conjunto de caracteres utilizaremos la función ReadLine del objeto Console con la siguiente sintaxis: linea = Console.ReadLine(); Un segundo paso es copiar el contenido de la variable linea en una variable de tipo int: horasTrabajadas = int.Parse(linea); O una variable de tipo float: costoHora = float.Parse(linea); La variable linea almacena temporalmente los datos que ingresa el operador del programa, para luego copiarse a la variable respectiva (como vemos si queremos convertir un string a tipo de dato entero utilizamos la función Parse del objeto int (int.Parse)) Las operaciones que indicamos en el diagrama de flujo mediante la figura rectángulo la codificamos tal cual:
  • 8. sueldo = horasTrabajadas * costoHora; Podemos ver una relación entre las instrucciones que debemos utilizar para cada símbolo del diagrama de flujo: En el diagrama de flujo no indicamos la definición de variables: inthorasTrabajadas; floatcostoHora; float sueldo; stringlinea; No representamos con símbolos los mensajes a mostrar previo a la carga de datos por teclado: Console.Write("Ingrese Horas trabajadas por el operario:"); Como hemos visto hasta ahora hay muchas partes de nuestro código que no entendemos pero son indispensables para la implementación de nuestros programas, a medida que avancemos con el curso muchos de estos conceptos se irán aclarando. Interfaces visuales (Windows Forms)
  • 9. Hasta ahora hemos resuelto todos los algoritmos haciendo las salidas a través de una consola en modo texto. La realidad que es muy común la necesidad de hacer la entrada y salida de datos mediante una interfaz más amigable con el usuario. En C# existen varias librerías de clase para implementar interfaces visuales. Utilizaremos las Windows Forms. Para crear una aplicación que utilice esta librería debemos crear un proyecto. Los pasos son los siguientes: 1. Desde el menú de opciones del Visual Studio .Net seleccionamos la opción: Archivo -> Nuevo proyecto... 2. Seleccionamos la plantilla "Aplicación de Windows Forms". 3. Ahora ya tenemos un esqueleto para desarrollar nuestra aplicación. Si vemos la ventana del "Explorador de soluciones tenemos tres archivos generados en forma automática: Program.cs,
  • 10. Form1.cs y Form1.Designer.cs: En la parte central tenemos el Form listo para disponer controles con el mouse. 4. Ahora podemos seleccionar un control visual de la ventana "Cuadro de herramientas" (seleccionemos el control Button) y seguidamente presionemos el botón izquierdo del mouse dentro del formulario que se encuentra en la parte central del Visual Studio .net: 5. Ahora podemos analizar la ventana "Propiedades" que nos muestra las propiedades del objeto seleccionado del formulario. Podemos por ejemplo si tenemos seleccionado el botón cambiar la
  • 11. propiedad text (la misma cambia la etiqueta que muestra el botón): 6. Cuando ejecutamos la aplicación el resultado podemos ver que es muy distinto a la interfaz en modo texto vista hasta el momento: 7. Por último vamos a ver los contenidos de los archivos generados automáticamente por el Visual Studio .Net. Program.ch using System; usingSystem.Collections.Generic; usingSystem.Linq; usingSystem.Windows.Forms; namespace WindowsFormsApplication1 { static class Program { /// /// Punto de entrada principal para la aplicación. /// [STAThread] static void Main() { Application.EnableVisualStyles();
  • 12. Application.SetCompatibleTextRenderingDefault(false); Application.Run(new Form1()); } } } Form1.ch using System; usingSystem.Collections.Generic; usingSystem.ComponentModel; usingSystem.Data; usingSystem.Drawing; usingSystem.Linq; usingSystem.Text; usingSystem.Windows.Forms; namespace WindowsFormsApplication1 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } } } Form1.Designer.ch namespace WindowsFormsApplication1 { partial class Form1 { /// /// Variable del diseñador requerida. /// privateSystem.ComponentModel.IContainercomponents = null; /// /// Limpiar los recursos que se estén utilizando. /// /// true si los recursos administrados se deben eliminar; false en caso contrario, false. protected override void Dispose(bool disposing) { if (disposing && (components != null)) { components.Dispose(); } base.Dispose(disposing); } #region Código generado por el Diseñador de Windows Forms /// /// Método necesario para admitir el Diseñador. No se puede modificar /// el contenido del método con el editor de código. /// private void InitializeComponent() { this.button1 = new System.Windows.Forms.Button();
  • 13. this.SuspendLayout(); // // button1 // this.button1.Location = new System.Drawing.Point(190, 223); this.button1.Name = "button1"; this.button1.Size = new System.Drawing.Size(75, 23); this.button1.TabIndex = 0; this.button1.Text = "HolaMundo"; this.button1.UseVisualStyleBackColor = true; // // Form1 // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.ClientSize = new System.Drawing.Size(292, 273); this.Controls.Add(this.button1); this.Name = "Form1"; this.Text = "Form1"; this.ResumeLayout(false); } #endregion privateSystem.Windows.Forms.Button button1; } } - Cuadro de herramientas (Windows Forms) El cuadro de herramientas contiene todas las componentes visuales que nos permiten elaborar nuestro formulario. Podemos ver todos los controles visuales en forma completa: O agrupados por su uso(Menús, datos etc.):
  • 14. Problema 1: : Desarrollar un programa que muestre un objeto de cada una de las siguientes clases: MonthCalendar, TextBox y Button La interfaz visual debe ser parecida a esta: Hasta ahora solo hemos creado una interfaz visual, como podemos ver algunas componentes en tiempo de ejecución tienen funcionalidad (el objeto de la clase MonthCalendar si ejecutamos el programa nos permite seleccionar una fecha, cambiar de mes etc., el control de la clase TextBox nos permite ingresar una cadena de caracteres, pero el objeto de la clase Button cuando se presiona podemos ver que se visualiza que es hundido con el mouse pero no hace nada):
  • 15. Ventana de propiedades (Windows Forms) La "ventana de propiedades" nos permite inicializar los valores de las propiedades del objeto que se encuentra seleccionado en el formulario (Button, MonthCalendar, TextBox etc.) Por ejemplo si disponemos dos objetos de la clase Button y seleccionamos uno de ellos podremos editar las propiedades del mismo en la "ventana de propiedades": A medida que seleccionamos un objeto en la ventana de "Diseño" podemos ver como se actualiza la "ventana de propiedades", por ejemplo la propiedad Text de la clase Button permite fijar la etiqueta que muestra el botón. El formulario también es un objeto, esto quiere decir que se lo seleccionamos luego la "ventana de propiedades" nos muestra las propiedades de la clase Form:
  • 16. Problema propuesto 1. Elaborar una interfaz gráfica que muestre una calculadora (utilizar objetos de la clase Button y un objeto de la clase TextBox donde se mostrarían los resultados y se cargarían los datos), tener en cuenta que solo se debe implementar la interfaz y no la funcionalidad de una calculadora.
  • 17. Ventana de eventos (Windows Forms) La ventana de eventos coincide con la ventana de propiedades. Para activar la lista de eventos disponibles para un objeto debemos presionar: Podemos observar la lista de eventos que puede reaccionar el objeto seleccionado en ese momento. Por ejemplo si tenemos seleccionado un objeto de la clase Button el evento más común que deberemos implementar es el Click (este evento se dispara cuando en tiempo de ejecución del programa se presiona el botón) Para disponer el código para dicho evento debemos hacer doble clic sobre dicho evento (esto hace que se active la ventana del editor y genere automáticamente el método asociado a dicho evento):
  • 18. Problema: Confeccionar un programa que al presionar un botón se muestre en un objeto de la clase Label el string "Hola Mundo". Programa: using System; usingSystem.Collections.Generic; usingSystem.ComponentModel; usingSystem.Data; usingSystem.Drawing; usingSystem.Linq; usingSystem.Text; usingSystem.Windows.Forms; namespace WindowsFormsApplication5 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { label1.Text = "Hola Mundo"; } } } Hay que tener en cuenta que la clase anterior es parcial (el archivo Form1.Designer.cs contiene la definición de los dos objetos y la inicialización de sus propiedades y evento): namespaceWA05 { partial class Form1
  • 19. { /// /// Variable del diseñador requerida. /// privateSystem.ComponentModel.IContainercomponents = null; /// /// Limpiar los recursos que se estén utilizando. /// /// true si los recursos administrados se deben eliminar; /// false en caso contrario, false. protected override void Dispose(bool disposing) { if (disposing && (components != null)) { components.Dispose(); } base.Dispose(disposing); } #region Código generado por el Diseñador de Windows Forms /// /// Método necesario para admitir el Diseñador. No se puede modificar /// el contenido del método con el editor de código. /// private void InitializeComponent() { this.label1 = new System.Windows.Forms.Label(); this.button1 = new System.Windows.Forms.Button(); this.SuspendLayout(); // // label1 // this.label1.AutoSize = true; this.label1.Location = new System.Drawing.Point(48, 102); this.label1.Name = "label1"; this.label1.Size = new System.Drawing.Size(35, 13); this.label1.TabIndex = 0; this.label1.Text = "label1"; // // button1 // this.button1.Location = new System.Drawing.Point(51, 148); this.button1.Name = "button1"; this.button1.Size = new System.Drawing.Size(75, 23); this.button1.TabIndex = 1; this.button1.Text = "Presionar"; this.button1.UseVisualStyleBackColor = true; this.button1.Click += new System.EventHandler(this.button1_Click); // // Form1 // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.ClientSize = new System.Drawing.Size(292, 273); this.Controls.Add(this.button1); this.Controls.Add(this.label1); this.Name = "Form1"; this.Text = "Form1"; this.ResumeLayout(false);
  • 20. this.PerformLayout(); } #endregion privateSystem.Windows.Forms.Label label1; privateSystem.Windows.Forms.Button button1; } } Al ejecutar el programa si presionamos el botón vemos como cambia el contenido de la Label (esto debido a que en el evento click del botón cambiamos el valor de la propiedad Text del objeto de la clase Label): Problema propuesto 1. Disponer 7 objetos de la clase Button con los días de la semana. Fijar en los atributos Text de cada botón los días de la semana. Al presionar un botón mostrar en un objeto de la clase Label el día seleccionado. using System; usingSystem.Collections.Generic; usingSystem.ComponentModel;
  • 21. usingSystem.Data; usingSystem.Drawing; usingSystem.Linq; usingSystem.Text; usingSystem.Windows.Forms; namespace WindowsFormsApplication6 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { label1.Text = "Lunes"; } private void button2_Click(object sender, EventArgs e) { label1.Text = "Martes"; } private void button3_Click(object sender, EventArgs e) { label1.Text = "Miercoles"; } private void button4_Click(object sender, EventArgs e) { label1.Text = "Jueves"; } private void button5_Click(object sender, EventArgs e) { label1.Text = "Viernes"; } private void button6_Click(object sender, EventArgs e) { label1.Text = "Sábado"; } private void button7_Click(object sender, EventArgs e) { label1.Text = "Domingo"; } } } Controles comunes - Label En el "cuadro de herramientas" podemos ver las componentes visuales agrupadas. En la pestaña de Controles comunes podemos acceder a los controles visuales que normalmente toda aplicación requiere.
  • 22. El primer control que vamos a analizar es la clase Label. Un control de tipo Label nos permite mostrar básicamente un texto inicializando la propiedad Text. Las propiedades más comunes de este control son: Text: Es el string que muestra el control. BackColor: Define el color de fondo del control. ForeColor: Define el color del texto. Font: Define la fuente del texto. BorderStyle: Define si la label tiene un borde visible. AutoSize: Permite o no redimensionar la label en forma automática. Cursor: Definimos el ícono del cursor a mostrar cuando disponemos el mouse dentro del control. Visible: Determina si el control está visible u oculto cuando ejecutamos el programa. Problema propuesto 1. Crear una aplicación que muestre en 6 objetos de la clase Label con algunos nombres de controles visuales contenidos en la pestaña de "controles comunes" del cuadro de herramientas
  • 23. Del 31 al 35 están