Aufsten Aufsten
Luis Javier Minutti
Jajajaj esta genial!!
Kevin Villatoro
Nice!
Aprende, paso a paso, a construir una app de consola en .NET, definir una clase en C#, crear atributos y métodos, controlar modificadores de acceso y usar la clase Console para escribir texto y emitir un timbre. Del Hello World a un comportamiento real, todo dentro de Visual Studio Code y con comandos de .NET.
¿Cómo crear un proyecto .NET y verificar Hello World?
Primero, abre la terminal en el directorio elegido y genera una app de consola. Al ejecutarla, confirmas que el punto de partida funciona antes de programar la lógica de negocio.
# crear la app de consola dotnet new console # ejecutar y validar salida dotnet run
¿Qué archivos crea dotnet new console?
¿Qué es una clase y cómo definir atributos y métodos en C#?
Una clase es la plantilla de un objeto. Aquí se definen sus atributos (campos) y métodos (acciones). Por convención, el método main es el punto de entrada en apps de consola.
class Escuela { // atributos públicos para poder modificarlos fuera de la clase public string nombre; public string dirección; public int añoFundación; public string CEO; // opcional: se puede asignar luego // método: acción que no devuelve valor public void timbrar() { // comentarios con // no se ejecutan // timbre a 10000 Hz durante 3000 ms Console.Beep(10000, 3000); } }
¿Cómo definir atributos y comentarios en C#?
¿Cómo crear acciones con Console.Beep?
¿Cómo instanciar un objeto y usar sus miembros públicos?
Para que el programa haga algo real, crea una instancia, asigna valores a los campos públicos y llama a sus métodos desde main.
class Program { static void Main(string[] args) { // Console.WriteLine("Hola, mundo"); // comentado para empezar con la lógica var miEscuela = new Escuela(); miEscuela.nombre = "Platzi Academy"; miEscuela.dirección = "Bogotá, carrera novena con calle 72"; miEscuela.añoFundación = 2012; // miEscuela.CEO = "Freddie Vega"; // opcional Console.WriteLine("timbre"); miEscuela.timbrar(); } }
¿Por qué no timbra al ejecutar y cómo solucionarlo?
¿Qué conceptos y habilidades clave practicaste?
¿Te gustaría compartir cómo nombrarías más métodos para la escuela, como iniciar jornada o cerrar jornada? Escribe tus ideas y mejoras en los comentarios.
Aufsten Aufsten
Luis Javier Minutti
Jajajaj esta genial!!
Kevin Villatoro
Nice!
Leonardo Ernesto Solórzano Carrasquero
Aqui pueden ver los distintos tipos de acceso.
Yezid Garcia Medina
Excelente aporte
joe quisca suarez
No entiendo bien para que sirve pero a tener en cuenta.
Christian Eduardo Ramirez Castillo
Yezid Garcia Medina
jeje :D me encantó ese sonido
Jose pm
Excelente !!!!
Miguel Salgado
Fue un error haber puesto esa frecuencia con audifonos puestos, no lo hagan… jajaja
Cristhian Camilo Perez Veloza
jajajaja gracias por el dato!
RIP tus oidos
Luis Andrés Arce Cárdenas
Jajajaja xD
También pueden tocar canciones usando beep!
Aquí está la de tetris:
Console.Beep(658, 125); Console.Beep(1320, 500); Console.Beep(990, 250); Console.Beep(1056, 250); Console.Beep(1188, 250); Console.Beep(1320, 125); Console.Beep(1188, 125); Console.Beep(1056, 250); Console.Beep(990, 250); Console.Beep(880, 500); Console.Beep(880, 250); Console.Beep(1056, 250); Console.Beep(1320, 500); Console.Beep(1188, 250); Console.Beep(1056, 250); Console.Beep(990, 750); Console.Beep(1056, 250); Console.Beep(1188, 500); Console.Beep(1320, 500); Console.Beep(1056, 500); Console.Beep(880, 500); Console.Beep(880, 500); System.Threading.Thread.Sleep(250); Console.Beep(1188, 500); Console.Beep(1408, 250); Console.Beep(1760, 500); Console.Beep(1584, 250); Console.Beep(1408, 250); Console.Beep(1320, 750); Console.Beep(1056, 250); Console.Beep(1320, 500); Console.Beep(1188, 250); Console.Beep(1056, 250); Console.Beep(990, 500); Console.Beep(990, 250); Console.Beep(1056, 250); Console.Beep(1188, 500); Console.Beep(1320, 500); Console.Beep(1056, 500); Console.Beep(880, 500); Console.Beep(880, 500); System.Threading.Thread.Sleep(500); Console.Beep(1320, 500); Console.Beep(990, 250); Console.Beep(1056, 250); Console.Beep(1188, 250); Console.Beep(1320, 125); Console.Beep(1188, 125); Console.Beep(1056, 250); Console.Beep(990, 250); Console.Beep(880, 500); Console.Beep(880, 250); Console.Beep(1056, 250); Console.Beep(1320, 500); Console.Beep(1188, 250); Console.Beep(1056, 250); Console.Beep(990, 750); Console.Beep(1056, 250); Console.Beep(1188, 500); Console.Beep(1320, 500); Console.Beep(1056, 500); Console.Beep(880, 500); Console.Beep(880, 500); System.Threading.Thread.Sleep(250); Console.Beep(1188, 500); Console.Beep(1408, 250); Console.Beep(1760, 500); Console.Beep(1584, 250); Console.Beep(1408, 250); Console.Beep(1320, 750); Console.Beep(1056, 250); Console.Beep(1320, 500); Console.Beep(1188, 250); Console.Beep(1056, 250); Console.Beep(990, 500); Console.Beep(990, 250); Console.Beep(1056, 250); Console.Beep(1188, 500); Console.Beep(1320, 500); Console.Beep(1056, 500); Console.Beep(880, 500); Console.Beep(880, 500); System.Threading.Thread.Sleep(500); Console.Beep(660, 1000); Console.Beep(528, 1000); Console.Beep(594, 1000); Console.Beep(495, 1000); Console.Beep(528, 1000); Console.Beep(440, 1000); Console.Beep(419, 1000); Console.Beep(495, 1000); Console.Beep(660, 1000); Console.Beep(528, 1000); Console.Beep(594, 1000); Console.Beep(495, 1000); Console.Beep(528, 500); Console.Beep(660, 500); Console.Beep(880, 1000); Console.Beep(838, 2000); Console.Beep(660, 1000); Console.Beep(528, 1000); Console.Beep(594, 1000); Console.Beep(495, 1000); Console.Beep(528, 1000); Console.Beep(440, 1000); Console.Beep(419, 1000); Console.Beep(495, 1000); Console.Beep(660, 1000); Console.Beep(528, 1000); Console.Beep(594, 1000); Console.Beep(495, 1000); Console.Beep(528, 500); Console.Beep(660, 500); Console.Beep(880, 1000); Console.Beep(838, 2000);
Angel Rafael Taveras Garcia
Solo para informar : En MacOS el console.Beep no es una acción soportada.
Jesus Manuel Lopez Suarez
asi es, no es compatible. El beep solo funciona en windows.
Usuario anónimo
UserNO es compatible con Linux el timbre :(
Misael Yered Ruiz Zamora
hay alternativa? estaba buscando...
David Fuentes
EL metodo Beep tampoco funciona en osx. Para efectos de funcionamiento solo imprimi un texto.
Kevin Rafael Santacruz Burgos
Hola, ¿Qué versión de .NEt Core tienes? Ya que el evento Beep solo está soportado hasta la versión .NET Core 2.1
Te adjunto la documentación oficial
Luis Abdel Rangel Castro
Yo tengo 2.2.105 y de igual forma no funciona.
Israel Yance
Me sale este error:
TIMBRE Unhandled exception. System.PlatformNotSupportedException: Operation is not supported on this platform.
¿Será porque estoy en una mac?
Adrian Morales Rosas
No hay "beep de hardware" en macOS.
José Roberto Flores Flores
#MeToo =(
Bryan Alejandro Sánchez Ramírez
Esta es otra manera de asignar parámetros dentro de una clase
Escuela miEscuela = new Escuela() { nombre = "Escuela", direccion = "Dirección", añoFundacion = 2000 };
Victor Enrique Lino Hernández
Se ve más claro, pero siento que me confundiría entre la clase y la instanciación de un objeto por los brackets jajaja gracias por el aporte :)
Fremin Abreu
Como comentario adicional con relacion a los modificadores de acceso, es importante saber que en los tipo class o struct el modificador de acceso por defecto para todos los miembros siembre es private, sin embargo en los tipos interface o enum, el modificador de acceso predeterminado siempre es public. class clase { string name; //<== private } interface interface{ string name(); //<== public }
Henry Espinoza
Lamentablemente no podré seguir el curso porque ha destruido mis oidos XD
Julio Cesar Olarte Bernal
No entendía el comentario pero ahora entiendo jjajajaj
David Orlando Espinosa Dicelis
En Visual Studio Code muestra en azul los atributos que se llaman campos y en cubos los metodos o acciones.
Miguel Angel Escurra
"Pequeño" gran detalle que ayuda. Gracias por la aclaración.
Anthony Robert Cardenas Aquino
Es importante y requerido que lleven el curso de Programación Orientada a Objetos de la profe Anahí..
Vicente López Robles
Ja ja ja, le puse
Console.Beep(10000, 30000);
Se me fue un 0
Arturo Mojica Guerrero
Arajo... y pobre odio!!!
José Jesús Palacios
En esta dirección pueden ver en que entornos funciona.
Microsoft Docs .Net
Jairo Andres Grajales Salinas
La función Beep no está soportada en IOS
Fredy Marin
por favor su ayuda tengo estos errores
Program.cs(34,23): error CS1061: "Escuela" no contiene una definición para "WriteLine" ni un método de extensión accesible "WriteLine" que acepte un primer argumento del tipo "Escuela" (¿falta alguna directiva using o una referencia de ensamblado?) [C:\estudios\proyectos\c#\CoreEscuela\CoreEscuela.csproj]
No se pudo llevar a cabo la compilación. Corrija los errores de compilación y vuelva a ejecutar el proyecto.
Luis Enrique Hernández Mosqueda
Fredy Marin
muchas gracias!!!
Daniel Cadavid
Para crear una nueva carpeta en consola usamos el comando md nombre carpeta
Creamos la carpeta y la abrimos con VS code
Con la carpeta ya abierta ejecutamos el comando dotnet new console para crear el nuevo proyecto
Luego aceptamos los nuevos parámetros dando clic en yes del aviso emergente para que se cree la carpeta VS code
Listo ya podemos trabajar sobre el proyecto teniendo la carpeta obj, bin, vscode y los archivos .css .csproj creados
Class program define el objeto programa, y la línea static void Main… define un método que se llama Main
Cuando ejecutamos el programa nos muestra lo que esta dentro de este método que es hello Word porque por concepción el método Main es el primero que se ejecuta en un programa
Vamos a crear una clase con las siguientes líneas de código: class coreEscuela {
}
Luego de crear la clase dentro de los corchetes empezamos a crear los atributos de la escuela: class coreEscuela { string nombre; string dirección; }
Luego creamos las acciones, funciones o métodos así: class Escuela { string nombre; //tipo de atributo nombre atributo string dirección; int añoFundacion;
void Timbrar() //Void quiere decir que la acción no devuelve valor { //lo que hará la función timbrar será un sonido de 10000 HZ que dure 3 segundos., esto se hace con la siguiente línea de código Console.Beep(10000, 3000); }
}
Al ejecutar la clase no pasa nada, porque no estamos haciendo nada con la plantilla de la clase, vamos a empezar a hacerlo
Cada clase y atributo tiene dos tipos de acceso, private y public, private se usa para que no se puede pueda acceder a ese elemento fuera de la clase y public para que se pueda acceder a ese elemento desde cualquier lugar del programa, para seguir creando el programa le pondremos public a los atributos nombre, dirección, añoFundacion
class Escuela { public string nombre; //tipo de atributo nombre atributo public string dirección; public int añoFundacion; public string ceo = “Fredy Vega”; //otra forma de darle valores a un atributo
void Timbrar() //Void quiere decir que la acción no devuelve valor { //lo que hará la función timbrar será un sonido de 10000 HZ que dure 3 segundos., esto se hace con la siguiente línea de código Console.Beep(10000, 3000); }
}
Vamos a inicializar la clase Escuela dentro de la clase Main definiendo una nueva variable miEscuela y en ella inicializamos la clase Escuela, esa variable es un objeto, luego a miEscuela le ponemos valores a los atributos nombre, dirección y año fundación y le asignamos dos métodos o acciones
Static void Main(string[ ] arg) { Var miEscuela = new Escuela(); //inicialización de la clase miEscuela.nombre = “Platzi Academy”; //Creamos nombre miEscuela.direccion = “Cra 9 Calle 72”; miEscuela.añoFundacion = “2012”
Console.WriteLine(“Timbrando”); //texto para saber si ejecuta sonido
miEscuela.Timbrar(); //Asignamos el método }
En los autocompletados salen unos borradores azules esto quiere decir que son atributos, y unos cubitos morados, esto quiere decir que son métodos o acciones
Carlos Héctor Méndez Sánchez
using System; namespace CoreEscuela { class Escuela { public string nombre; public string direccion; public int añoFundacion; public string ceo = "Fredy Vega"; public void Timbrar() { Console.Beep(1000, 5000); } } class Program { static void Main(string[] args) { var miEscuela = new Escuela(); miEscuela.nombre = "Platzi Academy"; miEscuela.direccion = "Cr 9 calle 72"; miEscuela.añoFundacion = 2012; Console.WriteLine("Timbre"); miEscuela.Timbrar(); } } }```
Les dejo mi código… mi escuela timbra como una canción de Zelda…¿La reconocen?
using System; namespace CoreEscuela { class Escuela { //Atributos public string nombre; public string direccion; public int añofundacion; public string director; //Métodos //Void es una función que se ejecuta pero no devolvera ningun valor public void Timbrar(){ Console.Beep(987, 1000); //Si Console.Beep(1174, 500); //Re' Console.Beep(880, 1500); //La Console.Beep(783, 250); //Sol Console.Beep(880, 250); //La Console.Beep(987, 1000); //Si Console.Beep(1174, 500); //Re' Console.Beep(880, 1500); //La Console.Beep(987, 1000); //Si Console.Beep(1174, 500); //Re' Console.Beep(1760, 1000); //La' Console.Beep(1567, 500); //Sol' Console.Beep(1174, 1000); //Re' Console.Beep(1046, 250); //Do Console.Beep(987, 250); //Si Console.Beep(880, 1000); //La //Console.Beep(523, 500); //Do } } class Program { static void Main(string[] args) { var miEscuela = new Escuela(); miEscuela.nombre = "Carlos Hank González"; miEscuela.direccion = "Valentin Gomez Faríaz #211"; miEscuela.añofundacion = 1980; Console.WriteLine("Timbrando"); miEscuela.Timbrar(); miEscuela.Timbrar(); } } }
Mario Bross
using System; using System.Threading; namespace coreescuela { class Program { static void Main(string[] args) { var miEscuela = new Escuela() { nombre = "Platzi Academia", direccion = "calle 72", añoFundacion = 2012 }; miEscuela.Timbrar(); } } class Escuela { public string nombre; public string direccion; public int añoFundacion; public string ceo; public void Timbrar() { Console.Beep(659, 125); Console.Beep(659, 125); Thread.Sleep(125); Console.Beep(659, 125); Thread.Sleep(167); Console.Beep(523, 125); Console.Beep(659, 125); Thread.Sleep(125); Console.Beep(784, 125); Thread.Sleep(375); Console.Beep(392, 125); Thread.Sleep(375); Console.Beep(523, 125); Thread.Sleep(250); Console.Beep(392, 125); Thread.Sleep(250); Console.Beep(330, 125); Thread.Sleep(250); Console.Beep(440, 125); Thread.Sleep(125); Console.Beep(494, 125); Thread.Sleep(125); Console.Beep(466, 125); Thread.Sleep(42); Console.Beep(440, 125); Thread.Sleep(125); Console.Beep(392, 125); Thread.Sleep(125); Console.Beep(659, 125); Thread.Sleep(125); Console.Beep(784, 125); Thread.Sleep(125); Console.Beep(880, 125); Thread.Sleep(125); Console.Beep(698, 125); Console.Beep(784, 125); Thread.Sleep(125); Console.Beep(659, 125); Thread.Sleep(125); Console.Beep(523, 125); Thread.Sleep(125); Console.Beep(587, 125); Console.Beep(494, 125); Thread.Sleep(125); Console.Beep(523, 125); Thread.Sleep(250); Console.Beep(392, 125); Thread.Sleep(250); Console.Beep(330, 125); Thread.Sleep(250); Console.Beep(440, 125); Thread.Sleep(125); Console.Beep(494, 125); Thread.Sleep(125); Console.Beep(466, 125); Thread.Sleep(42); Console.Beep(440, 125); Thread.Sleep(125); Console.Beep(392, 125); Thread.Sleep(125); Console.Beep(659, 125); Thread.Sleep(125); Console.Beep(784, 125); Thread.Sleep(125); Console.Beep(880, 125); Thread.Sleep(125); Console.Beep(698, 125); Console.Beep(784, 125); Thread.Sleep(125); Console.Beep(659, 125); Thread.Sleep(125); Console.Beep(523, 125); Thread.Sleep(125); Console.Beep(587, 125); Console.Beep(494, 125); Thread.Sleep(375); Console.Beep(784, 125); Console.Beep(740, 125); Console.Beep(698, 125); Thread.Sleep(42); Console.Beep(622, 125); Thread.Sleep(125); Console.Beep(659, 125); Thread.Sleep(167); Console.Beep(415, 125); Console.Beep(440, 125); Console.Beep(523, 125); Thread.Sleep(125); Console.Beep(440, 125); Console.Beep(523, 125); Console.Beep(587, 125); Thread.Sleep(250); Console.Beep(784, 125); Console.Beep(740, 125); Console.Beep(698, 125); Thread.Sleep(42); Console.Beep(622, 125); Thread.Sleep(125); Console.Beep(659, 125); Thread.Sleep(167); Console.Beep(698, 125); Thread.Sleep(125); Console.Beep(698, 125); Console.Beep(698, 125); Thread.Sleep(625); Console.Beep(784, 125); Console.Beep(740, 125); Console.Beep(698, 125); Thread.Sleep(42); Console.Beep(622, 125); Thread.Sleep(125); Console.Beep(659, 125); Thread.Sleep(167); Console.Beep(415, 125); Console.Beep(440, 125); Console.Beep(523, 125); Thread.Sleep(125); Console.Beep(440, 125); Console.Beep(523, 125); Console.Beep(587, 125); Thread.Sleep(250); Console.Beep(622, 125); Thread.Sleep(250); Console.Beep(587, 125); Thread.Sleep(250); Console.Beep(523, 125); Thread.Sleep(1125); Console.Beep(784, 125); Console.Beep(740, 125); Console.Beep(698, 125); Thread.Sleep(42); Console.Beep(622, 125); Thread.Sleep(125); Console.Beep(659, 125); Thread.Sleep(167); Console.Beep(415, 125); Console.Beep(440, 125); Console.Beep(523, 125); Thread.Sleep(125); Console.Beep(440, 125); Console.Beep(523, 125); Console.Beep(587, 125); Thread.Sleep(250); Console.Beep(784, 125); Console.Beep(740, 125); Console.Beep(698, 125); Thread.Sleep(42); Console.Beep(622, 125); Thread.Sleep(125); Console.Beep(659, 125); Thread.Sleep(167); Console.Beep(698, 125); Thread.Sleep(125); Console.Beep(698, 125); Console.Beep(698, 125); Thread.Sleep(625); Console.Beep(784, 125); Console.Beep(740, 125); Console.Beep(698, 125); Thread.Sleep(42); Console.Beep(622, 125); Thread.Sleep(125); Console.Beep(659, 125); Thread.Sleep(167); Console.Beep(415, 125); Console.Beep(440, 125); Console.Beep(523, 125); Thread.Sleep(125); Console.Beep(440, 125); Console.Beep(523, 125); Console.Beep(587, 125); Thread.Sleep(250); Console.Beep(622, 125); Thread.Sleep(250); Console.Beep(587, 125); Thread.Sleep(250); Console.Beep(523, 125); Thread.Sleep(625); } } }
Hola Freddy asegurate de tener el
using System;
en la parte superior de tu archivo y en caso de que estes usando el comando :
WriteLine("");
necesitas agregar el siguiente using para que te funcione
using static System.Console;
o remplazar en tu codigo por la instruccion completa:
Console.WriteLibne("");