Explicacion Ejercicios Csharp2010
Explicacion Ejercicios Csharp2010
Explicacion Ejercicios Csharp2010
Introducción a la Programación en C#
Introducción.
Programa: Conjunto de instrucciones que entiende un ordenador para realizar una actividad.
Para la resolución de un problema hay que plantear un algoritmo.
Algoritmo: Son los pasos a seguir para resolver un problema.
Ayudas algoritmos:
Pseudocódigo: Escribimos los pasos del algoritmo en borrador en nuestro lenguaje general común.
Diagrama de flujo: es la representación gráfica de un ALGORITMO. Resulta mucho más fácil entender un gráfico.
Programación en C#
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
Programación en C o C++
namespace CalculoSueldo #include <stdio.h> //ok edu
{ main ()
class Program {
{ int horasTrabajadas; //se declaran las variables
static void Main(string[] args) float costoHora, sueldo; // 2 variables en misma linea
{
costoHora, sueldo=0; //se inicializan las variables
int horasTrabajadas;
printf("Horas trabajadas por el operario:");
float costoHora; scanf("%d",&horasTrabajadas);
float sueldo;
printf("Coste por hora:");
string linea;
scanf("%f",&costoHora);
Console.Write("Horas trabajadas:");
sueldo = horasTrabajadas * costoHora;
linea = Console.ReadLine();
printf("El sueldo total del operario es: %f",
horasTrabajadas = int.Parse(linea);
sueldo);
Console.Write("Cote por hora:");
printf("\n");
linea = Console.ReadLine();
printf ("Pulsa RETURN para terminar.");
costoHora = float.Parse(linea);
scanf("%d");
sueldo = horasTrabajadas * costoHora;
}
Console.Write("El sueldo total del operario:");
Console.Write(sueldo);
/*%c: formato caracter %d: formato entero %f:
Console.ReadKey();
formato decimal flotante. (introducir los decimales
} con el punto decimal no la coma) */
}
}
OFIMEGA acadèmies - Salou Programación POO C# ejercicios 3
EJERCICIO 1
Realizar una interfaz gráfica que permita al usuario introducir dos números. El programa calculará y desplegará la
suma de ambos.
Se requieren 3 etiquetas, 3 cuadros de texto y dos botones. Cambiar sus propiedades como indica la 2ª figura
Añadir el código:
En el botón sumar button1_Click():
int n1, n2, suma;
n1 = int.Parse(txtNumero1.Text);
n2 = int.Parse(txtNumero2.Text);
suma = n1 + n2;
txtResultado.Text = suma.ToString();
En el botón salir: Application.Exit();
Ejercicio propuesto: Agregar un botón más al formulario para “Limpiar” el contenido de los cuadros de texto
EJERCICIO 2:
Realizar una pantalla que pida “Login” y “Password” a un usuario. Mostrar un mensaje de “Bienvenida” si los
datos son correctos, o un mensaje de “Rechazo” si no lo son.
Datos correctos: – Login: “ofimega” – Password: “danone”
Formulario: Código:
Código en C ++ (Builder) :
void __fastcall TForm5::Button1Click(TObject *Sender) {
txtResultado->Text=FormatFloat("###.##",txtBase -> Text.ToDouble()*
txtAltura ->Text.ToDouble()/2);
}
Código en C # :
private void button1_Click(object sender, EventArgs e) {
float b, a;
b=float.Parse(txtBase.Text);
a=float.Parse(txtAltura.Text);
txtResultado.Text = (a * b / 2).ToString();
}
La clase: MessageBox muestra una ventana modal de mensajes que puede contener texto, botones y símbolos que
informan y dan instrucciones al usuario. ( En Visual Basic: MsgBox ( ) , en C++ Builder: ShowMessage( ) )
Ejercicio 1:
1. Crea un nuevo proyecto. (Escoge del menú: ArchivoNuevo proyecto de Windows forms)
2. Añade un botón de comando. Ve cambiando el código de evento del botón1 para los mensajes.
3. Comprueba su funcionamiento. Al finalizar, cierra y guarda el proyecto con el nombre: Mensaje1
➢ Mensaje de información:
{
MessageBox.Show("Mensaje informativo", "Atención", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
}
➢ Mensaje de error:
{
MessageBox.Show("Ha habido un error", "Mesage de error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
➢ Mensajes de decisión
{
MessageBox.Show("¿Desea continuar?", "Pregunta", MessageBoxButtons.OKCancel);
}
Ejercicio 2:
Añade al formulario anterior un cuadro de texto como en la imagen.
Si al pulsar en el botón, no has escrito nada en el cuadro de texto, se mostrará un
mensaje de decisión.
Ampliación:
➢ Añadir un botón para eliminar de la lista y otro para vaciar la lista:
private void buttonVaciar1_Click(object sender, EventArgs e)
{listBox1.Items.Clear(); } // borra todos los elementos
private void buttonEliminar1_Click(object sender, EventArgs e)
{listBox1.Items.Remove(listBox1.SelectedItem); } //borra el seleccionado de la lista
➢ Añadir un botón para llamar a iniciar sesión: (el formulario del ejercicio 2):
this.Hide(); //oculta este objeto (la venta actual)
Form2 frm = new Form2();
frm.ShowDialog(); //abre la otra ventana en modo modal (diálogo)
if (frm.DialogResult == DialogResult.OK) MessageBox.Show("Correcto");//si se cerró con OK…
this.Show(); //vuelve a mostrar la ventana
Ejercicio C# Windows Forms: Pong
En este ejercicio utilizaremos las propiedades Left y Top y el objeto Timer para desplazar una imagen por la ventana.
➢ Crea un nuevo proyecto:
Archivo – Nuevo proyecto (File – New Project)
Aplicación de Windows Forms: Pong
➢ Añade al formulario los objetos de la figura. →
Ingredientes:
▪ 2 Buttons: Text: Start y Stop
▪ 1 Timer: Interval: 20.
Image: Importar pelota.gif
▪ 1 Picture box. Name: bola
Añade el código:
Primero crearemos dos variables públicas antes de public Form():
int vel=5; //variable numérica entera para la velocidad
int direc = 1; // variable numérica entera para la dirección
public Form1()
Ejercicio propuesto:
Al hacer clic sobre la pelota, aumentará la velocidad y la puntuación.
a) Incrementando la variable vel: vel++;
b) Reduciendo el intervalo del timer: timer1.interval --;
Código:
Ejemplo1 1 sin variable:
namespace Ejer1
{
class Program
{
static void Main(string[] args)
{
Console.Write("Hola mundo"); // muestra mensaje en la consola
Console.WriteLine("Hola"); //muestra mensaje y salta de línea
Console.ReadKey(); //pausa de espera tecla
}
}}
Creación de la aplicación
Inicia Visual Studio Code.
Seleccione Archivo Abrir carpeta
En el cuadro de diálogo Abrir carpeta, crea una carpeta de HelloWorld y haz clic en Seleccionar carpeta.
De forma predeterminada, el nombre de la carpeta se convierte en el nombre del proyecto y del espacio de
nombres. Se supone que el espacio de nombres del proyecto es HelloWorld.
Para abrir el Terminal en Visual Studio Code, selecciona: Ver Terminal en el menú principal.
Se abre el Terminal con el símbolo del sistema en la carpeta HelloWorld.
En el Terminal, escriba este comando: dotnet new console
La plantilla crea una aplicación "Hola mundo" sencilla. Llama al método Console.WriteLine(String) para mostrar "Hello
World!" en la ventana de la consola.
El código de plantilla define una clase, Program, con un solo método, Main, que toma una matriz de String como
argumento: static void Main(string[] args)
Main es el punto de entrada de la aplicación, el método que se llama automáticamente mediante el tiempo de
ejecución cuando inicia la aplicación. Los argumentos de línea de comandos proporcionados cuando se inicia la
aplicación están disponibles en la matriz args
Ejecutar la aplicación
Ejecuta este comando en el Terminal: dotnet run
Mejora de la aplicación
En el panel lateral, haz clic en el archivo Program.cs para abrirlo. La primera vez que se abre un archivo de C# en
Visual Studio Code, se carga OmniSharp en el editor.
Selecciona Sí cuando Visual Studio Code pida que agregues los recursos que faltan para compilar.
Reemplaza el contenido del método Main en Program.cs, por este otro código:
{
Console.WriteLine("Cómo te llamas?");
var nombre = Console.ReadLine();
var hoy = DateTime.Now;
Console.WriteLine($"{Environment.NewLine}Hola, {nombre}, estamos a {hoy:d} a las {hoy:t}!");
Console.Write($"{Environment.NewLine}Pulsa una tecla para salir...");
Console.ReadKey(true);
}
Este código muestra un mensaje en la ventana de la consola y espera a que el usuario escriba un nombre y,
luego, presione Entrar. Almacena esta cadena en una variable denominada nombre. También recoge el valor de
DateTime.Now, que contiene la hora local actual, y se lo asigna a una variable denominada hoy. Asimismo,
muestra estos valores en la ventana de la consola. Por último, muestra un mensaje en la ventana de la consola y
llama al método Console.ReadKey(Boolean) para esperar a la entrada del usuario.
NewLine es una manera independiente de la plataforma y del lenguaje de representar un salto de línea. Las
alternativas son \n en C# y vbCrLf en Visual Basic.
El signo de dólar ($) delante de una cadena permite colocar expresiones como nombres de variable entre llaves
en la cadena. El valor de la expresión se inserta en la cadena en lugar de la expresión. Esta sintaxis se conoce
como cadenas interpoladas.
Guarda los cambios y ejecuta el programa otra vez: dotnet run
Presiona cualquier tecla para salir de la aplicación.
Ofimega - Introducción a la Programación en C# - 21 -
Punto de interrupción y depuración del programa:
Abra el archivo Program.cs.
Establece un punto de interrupción en la línea que muestre el nombre, la fecha y la hora; para ello, haz clic en el
margen izquierdo de la ventana de código o presiona F9 o selecciona: Ejecutar > Alternar punto de interrupción.
Visual Studio Code marca la línea donde se establece el punto de interrupción con un punto rojo en el margen.
Configuración para la entrada de terminal:
Como el punto de interrupción no funciona con la consola-terminal interno, debemos de cambiarlo a
integratedTerminal:
Abre: .vscode/launch.json.
Cambie la opción console de internalConsole a integratedTerminal: "console": "integratedTerminal",
Guarda los cambios.
Iniciar depuración
Abre la vista Depurar mediante el icono de depuración que hay en el menú de la izquierda.
Selecciona la flecha verde en la parte superior del panel, junto a .NET Core Launch (console)
Otras maneras son presionar F5 o elegir Ejecutar > Iniciar depuración en el menú.
La ejecución del programa se detiene cuando llega al punto de interrupción. La sección Variables locales de la
muestra los valores de las variables actuales.
Pulsa en Continue (F5) para seguir y salir de la pausa.
Launch.json Task.json
{
"version": "0.2.0", {
"configurations": [ "version": "2.0.0",
{ "tasks": [
"name": "g++.exe - Build and debug active file", {
"type": "cppdbg", "type": "shell",
"request": "launch", "label": "C/C++: g++.exe build active file",
"program": "${fileDirname}\\${fileBasenameNoExtensio "command": "C:\\mingw\\bin\\g++.exe",
n}.exe", "args": ["-g", "${file}", "-
"args": [], o", "${fileDirname}\\${fileBasenameNoExtension}.exe"],
"stopAtEntry": false, "options": {
"cwd": "${workspaceFolder}", "cwd": "${workspaceFolder}"
"environment": [], },
"externalConsole": false, "problemMatcher": ["$gcc"],
"MIMode": "gdb", "group": {
"miDebuggerPath": "C:\\mingw\\bin\\gdb.exe", "kind": "build",
"setupCommands": [ "isDefault": true
{ }
"description": "Enable pretty-printing for gdb", }
"text": "-enable-pretty-printing", ]
"ignoreFailures": true }
}
],
"preLaunchTask": "C/C++: g++.exe build active file"
}
]
}
INVERTIR NÚMERO DE DOS CIFRAS OPERACIONES BÁSICAS
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Text; using System.Text;
namespace ConsoleApplication1 namespace ConsoleApplication1
{ {
class Program class Program
{ {
static void Main(string[] args) static void Main(string[] args)
{ {
int NUM, AUX, DEC, UNI; int NUM1, NUM2, RESUL;
string linea; string linea;
Console.WriteLine ("INGRESE NÚMERO DE DOS Console.Write("PRIMER NÚMERO :");
CIFRAS :"); linea = Console.ReadLine();
linea = Console.ReadLine(); NUM1 = int.Parse(linea);
NUM = int.Parse(linea); Console.Write("SEGUNDO NÚMERO :");
DEC = NUM/10; linea = Console.ReadLine();
UNI = NUM % 10; NUM2 = int.Parse(linea);
AUX = (UNI * 10) + DEC; Console.WriteLine();
Console.WriteLine("NÚMERO INVERTIDO ES: " + RESUL = NUM1 + NUM2;
AUX); Console.WriteLine("LA SUMA ES {0}: ", RESUL);
Console.WriteLine("Pulse una Tecla:"); RESUL = NUM1 - NUM2;
Console.ReadLine(); Console.WriteLine("LA RESTA ES: {0} - {1} = {2} ",
} NUM1, NUM2, RESUL);
} RESUL = NUM1 * NUM2;
} Console.WriteLine("LA MULTIPLICACIÓN ES: " +
RESUL);
RESUL = NUM1 / NUM2;
Console.WriteLine("LA DIVISIÓN ES: " + RESUL);
RESUL = NUM1 % NUM2;
Console.WriteLine("EL RESIDUO ES: " + RESUL);
Console.Write("Pulse una Tecla:");
Console.ReadLine();
}
}
Ofimega - Introducción a la Programación en C# - 23 -
COMPRA EN RESTAURANT FORMATOS DE SALIDA
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Text; using System.Text;
namespace ConsoleApplication1 namespace ConsoleApplication1
{ {
class Program class Program
{ {
static void Main(string[] args) static void Main(string[] args)
{ {
byte CANB, CANH, CANP; double BASE, ALTURA, RESUL;
double APAGAR; string linea;
string linea; Console.Write("DIGITE LA BASE :"); linea =
const double PRECIOB = 0.8; Console.ReadLine();
const double PRECIOH = 2; BASE = double.Parse (linea);
const double PRECIOP = 1.2; Console.Write("DIGITE LA ALTURA:"); linea =
Console.Write("CANTIDAD DE HAMBURGUESAS :");linea = Console.ReadLine();
Console.ReadLine(); ALTURA= double.Parse (linea);
CANH = byte.Parse (linea); RESUL = (BASE * ALTURA) / 2;
Console.Write("CANTIDAD DE PAPAS :");linea = Console.WriteLine("AREA TRIANGULO :" +
Console.ReadLine(); String.Format("{0:####.00}", RESUL));
CANP = byte.Parse (linea); Console.WriteLine("AREA TRIANGULO :" +
Console.Write("CANTIDAD DE BEBIDAS :");linea = String.Format("{0:c}", RESUL));
Console.ReadLine(); Console.WriteLine("AREA TRIANGULO :" +
CANB = byte.Parse (linea); String.Format("{0:f}", RESUL));
Console.WriteLine(); Console.WriteLine("AREA TRIANGULO :" +
APAGAR = (CANH * PRECIOH) + (CANP * PRECIOP) + String.Format("{0:g}", RESUL));
(CANB * PRECIOB); Console.WriteLine();
Console.WriteLine("VALOR A PAGAR: " + APAGAR); Console.WriteLine("HOY ES: " + String.Format("Hoy
Console.Write("Pulse una es {0:F}", DateTime.Now));
Tecla:");Console.ReadLine(); Console.WriteLine("HOY ES: " + String.Format("Hoy
} es {0:dddd}{0:dd/MM/yyy}", DateTime.Now));
} Console.Write("Pulse una Tecla:");
} Console.ReadLine();
} } }
FUNCIONES BÁSICAS LIBRERÍA MATH MAYOR DE DOS NÚMEROS
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Text; using System.Text;
namespace ConsoleApplication1 namespace ConsoleApplication1
{ {
class Program class Program
{ {
static void Main(string[] args) static void Main(string[] args)
{ {
int NUM1; int NUM1, NUM2;
string linea; string linea;
long RESUL; Console.Write("NÚMERO 1 :"); linea =
Console.Write("DIGITE UN NÚMERO :"); Console.ReadLine();
linea = Console.ReadLine(); NUM1 = int.Parse(linea);
NUM1 = int.Parse(linea); Console.Write("NÚMERO 2 :"); linea =
RESUL = Math.Abs(NUM1); Console.ReadLine();
Console.WriteLine("VALOR ABSOLUTO : " + RESUL); NUM2 = int.Parse(linea);
Console.WriteLine("POTENCIA : " + Math.Pow(NUM1, if ((NUM1 > NUM2))
3)); {Console.WriteLine("{0} ES MAYOR QUE {1}", NUM1,
Console.WriteLine("RAIZ CUADRADA : " + NUM2);
Math.Sqrt(NUM1)); }
Console.WriteLine("SENO : " + Math.Sin(NUM1 * else
Math.PI / 180)); {
Console.WriteLine("COSENO : " + Math.Cos(NUM1 * if ((NUM1 == NUM2))
Math.PI / 180)); {Console.WriteLine("{0} ES IGUAL A {1}", NUM1,
Console.WriteLine("NÚMERO MÁXIMO : " + NUM2);
Math.Max(NUM1, 50)); }
Console.WriteLine("NÚMERO MÍNIMO : " + else
Math.Min(NUM1, 50)); {Console.WriteLine("{0} ES MENOR QUE {1}", NUM1,
Console.WriteLine("PARTE ENTERA : " + NUM2);
Math.Truncate(18.78)); } }
Console.WriteLine("REDONDEO : " + Console.WriteLine();
Math.Round(18.78)); Console.WriteLine("OTRA MANERA");
Console.Write("Pulse una Tecla:"); string RESUL;
Console.ReadLine(); if (NUM1 > NUM2 )
} {
} RESUL = "MAYOR";
} }
else
if (NUM1 == NUM2 ) {
{ C20 = (CAN / 20);
RESUL = "IGUAL"; CAN = CAN - (C20 * 20);
} }
else if( (CAN >= 10) )
{ {
RESUL = "MENOR"; C10 = (CAN / 10);
} CAN = CAN - (C10 * 10);
Console.WriteLine("{0} ES {1} QUE {2}", NUM1, }
RESUL, NUM2); if( (CAN >= 5) )
Console.Write("Pulse una Tecla:"); {
Console.ReadLine(); C5 = (CAN / 5);
} } } CAN = CAN - (C5 * 5);
}
MAYOR DE TRES NÚMEROS Console.WriteLine("BILLETES DE A 100: "+ C100);
using System; Console.WriteLine("BILLETES DE A 50 : " + C50);
using System.Collections.Generic; Console.WriteLine("BILLETES DE A 20 : " + C20);
using System.Linq; Console.WriteLine("BILLETES DE A 10 : " + C10);
using System.Text; Console.WriteLine("BILLETES DE A 5 : " + C5);
namespace ConsoleApplication1 Console.WriteLine("BILLETES DE A 1 : " + CAN);
{ Console.Write("Pulse una Tecla:");
class Program Console.ReadLine();
{ } } }
static void Main()
{ Ejemplo bucle for
byte MAY, MEN, NUM1, NUM2, NUM3; // Muestra los números pares del 1 al 100:
string linea; using System;
Console.Write("NÚMERO 1 :"); namespace basicos3
linea = Console.ReadLine(); {
NUM1 = byte.Parse(linea); class Program
Console.Write("NÚMERO 2 :"); {
linea = Console.ReadLine(); public static void Main()
NUM2 = byte.Parse(linea); {
Console.Write("NÚMERO 3 :"); for (int i = 2; i<=100 ; i+=2)
linea = Console.ReadLine(); {
NUM3 = byte.Parse(linea); Console.WriteLine(i);
MAY = NUM1; MEN = NUM1; }
if ((NUM2 > MAY)) MAY = NUM2; Console.ReadLine();
if ((NUM3 > MAY)) MAY = NUM3; }
if ((NUM2 > MEN)) MEN = NUM2; }
if ((NUM3 < MEN)) MEN = NUM3; }
Console.WriteLine("MAYOR ES:" + MAY);
Console.WriteLine("MENOR ES:" + MEN);
Mostar un menú con bucle do - while
Console.WriteLine("Pulse una Tecla:");
Console.ReadLine(); using System;
namespace carpeta
} } }
{
class Program
DESGLOSE DE BILLETES {
using System; static void Main()
using System.Collections.Generic; {
using System.Linq; int opcion=0;
using System.Text; do //inicio del bucle
namespace ConsoleApplication1 {
{ mostrar_menu(); //llama a la función menu
class Program opcion = Convert.ToInt32( Console.ReadLine() );
{ } while (opcion !=0); //condición del bucle
static void Main() }
{
int CAN, C100, C50, C20, C10, C5; static void mostrar_menu() //función mostrar menu
C100 = 0; {
C50 = 0; Console.Clear();
Console.WriteLine("1. Instrucciones");
C20 = 0;
Console.WriteLine("2. Cargar partida");
C10 = 0;
Console.WriteLine("3. Grabar partida");
C5 = 0; Console.WriteLine("4. Jugar");
string linea; Console.WriteLine("0. Salir");
Console.Write("DIGITE UNA CANTIDAD :"); Console.WriteLine();
linea = Console.ReadLine(); Console.Write("Escoge opción: ");
CAN = int.Parse (linea); }
if( (CAN >= 100) ) }
{ }
C100 = (CAN / 100);
CAN = CAN - (C100 * 100);
}
if( (CAN >= 50) )
{
C50 = (CAN / 50);
CAN = CAN - (C50 * 50);
}
if( (CAN >= 20) )