Introducción a C#
¿Por qué aprender C#? ¿Para qué sirve?
Instalación de Visual Studio Community
Conoce .NET 6
Introducción a Visual Studio y nuestro primer "Hola, mundo" en consola
¡Nuestro primer "Hola, mundo" en una aplicación gráfica!
¿Cómo funcionan los Namespaces en C#?
Lógica de programación
Tipos de datos
Variables
Manejo de strings
Trabajando con números y operadores aritméticos
Operadores lógicos
Operadores relacionales
Cómo leer datos de un usuario en C#
Arreglos en C#
Listas
Métodos o methods
Métodos de strings
Cómo crear tus propios métodos
Bucles y estructuras de control en C#
La sentencia if
La sentencia switch
Ciclo for
Ciclo while
Proyecto
Introducción del proyecto: sistema de registros de usuarios
Creando la búsqueda y el registro de usuarios
Finalizado del proyecto: mostrando la lista de usuarios registrados
Tus siguientes pasos con C#
POO: tu siguiente paso con C#
No tienes acceso a esta clase
¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera
Aportes 45
Preguntas 19
Hay tres tipos de conversión de datos en C#
La conversión implícita se da cuando convertimos un tipo de doto que ocupa un tamaño menor en memoria a un que ocupa uno mayor por ejemplo:
byte b = 1;
int i = b;
En este ejemplo estamos convirtiendo un tipo de dato byte que ocupa un solo byte en memoria a un un tipo de dato int que ocupa 4 bytes en memoria. Lo que ocurre internamente en memoria es:
b = 00000001
i = 00000000 00000000 00000000 00000001
La variable b esta compuesta de 7 ceros y un 1 y al convertir esta variable a un tipo de dato int C# añade 24 ceros para completar los 4 bytes, por lo que no hay perdida de información.
En el caso contrario
int i = 1;
byte b = i;
Para realizar la conversión se necesitan eliminar 4 bytes de información por lo que C# no permite convertir los datos ya que podría haber una perdida de información. Para realizar esta conversión tenemos que expresar de forma explicita la conversión para decirle a C# que estamos seguros de realizarla. A esto se le conoce como casteo de datos. El casteo de datos en C# se hace de la siguiente forma:
int i = 1;
byte b = (byte)i;
Pero que pasa si tratamos de castear datos que no son compatibles por ejemplo:
string s = "1";
int i = (int)s;
Esta instrucción no va a compilar por que los tipos nos son compatibles y el casteo no funciona. Esto se debe a que la forma en la que se guarda la información de cadena de texto y un número son diferentes. Para realizar esta conversión podemos hacer uso de los métodos predefinidos como los siguientes:
string s = "1";
int i = Convert.ToInt32(s);
int j = int.Parse(s);
Todos los tipos de datos en C# poseen el método Parse que convierte una cadena de caracteres en su tipo de dato, en este caso int. La clase Convert posee varios métodos para convertir una cadena de caracteres en varios tipos de datos:
Los números 16, 32 y 64 corresponden al número se bits que son equivalentes a 2, 4 y 8 bytes.
Vamo a darle
Para los que les interese también se puede mostrar las variables de esta manera, aquí el contenido de la variable se muestra en lugar de “{0}”
int result = numberOne * numberTwo;
Console.WriteLine("The result is: {0}", result);
En esta forma si quieres utilizar más variables haces esto:
int result = numberOne * numberTwo;
Console.WriteLine("The result {0} X {1} = {2}", numberOne, numberTwo, result);
Observen que cada numero corresponde a una variable según el orden.
Para convertir en entero también se puede utilizar Int32.Parse( variableAConvertir );
Las conversiones funcionan de dos formas y son las siguientes:
IMPLICITAS: Estas las realiza de forma automática C# cuando asignamos una valor de un mismo tipo de menor cantidad en espacio de memoria a uno de mayor ejemplo pasar un int a long, asignando el valor int a una variable long.
EXPLICITAS: Son conversiones que debemos especificar debido a que C# no sabe realmente a que tipo de dato queremos asignar lo que estamos tratando de guardar en una variable, ejemplo: convertir un string a un int.
Para declarar una variable en C#, primero se declara el tipo de dato y luego se asigna un nombre.
string firstName;
ㅤㅤ
Para crear una variable de tipo implícito se utiliza la palabra clave var
, se asigna un nombre y se inicializa. Es importante entender que si intenta usar la palabra clave var
sin inicializar, aparecerá un error (error CS0818: Implicitly-typed variables must be initialized).
var message = "Hello C#";
😎 A diferencia de otros lenguajes de programación la palabra clave
var
se usa de manera distinta. En C#, el tipo de datos se bloquea en el momento de la declaración y, por tanto, nunca puede contener valores de otro tipo de datos.
ㅤㅤ
Para crear una constante se usa la palabra clave const
. Las constantes son un tipo de dato invariable, su valor se establece en tiempo de compilación.
Se usan de forma muy similar a las variables, con la diferencia de que no podemos modificar su valor durante la ejecución.
const double PI = 3.14159;
No me gusto la nueva forma de VS2022, creo que me regire por lo clasico esciribinedo toda la sintaxis del VS2019.
Nombrar Clases y Variables
Comúnmente podemos encontrar formas distintas para escribir los nombres de nuestros programas, clases y variables. Estas son:
🐍snake_case: Sólo usa mayúsculas y separa las palabras con guión bajo ( _ ). Por consenso se usa en Python
👴PascalCase: Cada inicial con mayúscula y sin ningún tipo de separación entre palabras. El consenso indica que es la forma que usaremos para escribir los nombres de nuestros archivos, namespace (el nombre del programa y el namespace deben ser iguales también por mero consenso) y clases
🐫camelCase: Primera inicial en minúscula y el resto en mayúscula, sin separación entre palabras. Esto lo usaremos para las variables (sí, nuevamente se trata de puro consenso).
De la mano con los puntos anteriores y por comodidad, sobre todo a la hora de trabajar en equipo, se recomienda que cada elemento (métodos, variables, funciones, etc) de nuestro programa use nombres representativos, es decir, que nombremos cada cosa de forma que se pueda entender sin dificultad qué debería representar o hacer, y siempre acompañando con el tipo de dato que va a poseer la variable (en caso de tratarse de una)
int number1;
int number2;
💡Recordemos que podemos usar a modo de comodín la palabra reservada var en lugar del tipo de valor específico a manejar, mas no es lo recomendado:
var number1;
var number2;
Casteos y ReadLine
Ahora, pueden darse casos en los que necesitemos hacer cambiar el tipo de dato que vamos a utilizar y que el sistema no lo esté haciendo por su cuenta (casteo implícito, int -> long , por ejemplo), siendo necesario que nosotros realicemos el cambio de forma manual (casteo explícito, string -> int, por ejemplo). En estas situaciones C# posee un método para realizar esta tarea usando Convert
int number1;
int number2;
Console.WriteLine("Input the first number");
number1 = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("Input the second number");
number2 = Convert.ToInt32(Console.ReadLine());
int result = number1 * number2;
Console.WriteLine("The result is: " + result);
Con Convert iniciamos el proceso de cambio de tipo de variable, pasando del string (aplicado por C#), seguido del tipo de dato a seleccionar y su peso en bytes con ToInt32 .
💡Recordemos que Console.ReadLine() lo utilizamos para ingresar información, números enteros en este caso, por nuestra terminal. Aquí estaríamos indicando que lo ingresado con Console.ReadLine() debe ser convertido a int mediante el método Convert
Convert.ToInt32(Console.ReadLine());
Este método es el que se usa para mostrar texto en la consola, el método escribe en la pantalla el valor que le pasemos como parámetro. El parámetro que recibe el método puede ser de varios tipos, ya sea una cadena de caracteres, un número entero, una línea en blanco, etc.
Este método se utiliza para recoger la información que el usuario introduce cuando la aplicación así lo requiera.
Me pareció muy útil la práctica para declarar variables:
Camel Case: Es la práctica de escribir frases sin espacios ni puntuación, indicando la separación de palabras con una sola letra en mayúscula, la primera palabra en minúscula.
Aquí les dejo este enlace donde muestra otros estilos como Camel, Pascal, Snake, and Kebab
https://betterprogramming.pub/string-case-styles-camel-pascal-snake-and-kebab-case-981407998841
Si quieren saber mas de “var”:
https://docs.microsoft.com/es-es/dotnet/csharp/language-reference/keywords/var
Me estaba asustando al inicio, pero pues ahora estoy feliz 💚
PascalCase es como camelCase pero empezando con mayúscula.
Excelente hasta ahora, les cuento que este será uno de los lenguajes que desarrollaré en mi nuevo trabajo 😃
VARIABLES
<code>
Console.WriteLine("¿cual es tu nombre? por favor nombre completo");
string fullname = Console.ReadLine();//en C3 las palabras claves inician por mayusculas
Console.WriteLine("hola" + fullname + "bienvenido a mi programa");
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace NumericCalculator
{
internal class Program
{
static void Main(string[] args)
{
// Variables para almacenar los valores de los argumentos
int num1, num2, result = 0;
// Usuario ingresa los valores de los argumentos
// Se ingresa el primer valor
Console.WriteLine(“Ingresa el primer numero”);
num1 = Convert.ToInt32(Console.ReadLine());
// Se ingresa el segundo valor
Console.WriteLine(“Ingresa el segundo numero”);
num2 = Convert.ToInt32(Console.ReadLine());
// Se calcula el resultado segun el operador ingresado por el usuario
Console.WriteLine(“Ingresa el operador”);
string operador = Console.ReadLine();
// Condicional para verificar el operador ingresado
if (operador == “+”)
{
result = num1 + num2;
}
else if (operador == “-”)
{
result = num1 - num2;
}
else if (operador == “*”)
{
result = num1 * num2;
}
else if (operador == “/”)
{
result = num1 / num2;
}
else
{
Console.WriteLine(“Operador invalido”);
}
// Se muestra el resultado en consola y se espera a que el usuario presione una tecla para salir
Console.WriteLine("El resultado es: " + result);
Console.ReadLine();
}
}
}
hay vamos repasando Conceptos
// See https://aka.ms/new-console-template for more information
using System;
class WelcomeToPlatzi
{
static void Main(string []args)
{
Console.WriteLine("What your name? Please Write You Full Name ");
var FullYouName = Console.ReadLine();
Console.WriteLine("My name is " + FullYouName);
Console.WriteLine("Hello " + FullYouName + " " + " Wellcome To Platzi");
}
cw + TAB y te crea el Console.WriteLine(); de golpe.
Que genial que usemos el nuevo framework 😄
Hace aproximadamente 10 años llevé un poco de VIsual Basic, la verdad es que, con esta clase, no pude evitar acordarme de los primeros ejercicios que nos hicieron hacer con variables: una suma y resta pero con la condicional de que el usuario eligiera que tipo de operación necesitaba. Aquí hice mi pequeño intento sin haber visto la parte de condicionales en C#.
//Declaring many variables
int x = 12, y = 5, z = x + y;
Console.WriteLine("The operation x + y is equal to \n" + z);
//String
string myName = "Nicolas";
Console.WriteLine(myName);
El operador de suma + permite concatenar cadenas cuando las variables u objetos que se utilizan son de tipo string o char, se puede añadir a la concatenación un objeto tipo numérico siempre y cuando exista también un tipo string.
Para los que esten usando rider desde linux y no les este dejando poner un input hay varias soluciones.
La primera es ir a la pestaña run, editar la configuracion y chequear la casilla que dice “abrir con consola externa”
En caso de que aun con eso no funcione, se puede correr el programa directamente desde consola, el ejecutable usualmente se encuentra en la carpeta bin/Debug/netx.x (siendo x.x la version de .NET que se este usando) y dentro de esa carpeta les deberia aparecer un archivo proyecto.dll (con proyecto siendo el nombre de su proyecto), desde ahi pueden ejecutar el programa con el comando:
dotnet proyecto.dll
y con eso les deberia ejecutar el programa desde consola sin ningun problema para poner los inputs.
Si deciden optar por esta solucion pueden en vez de ejecutar el programa desde rider, simplemente hacer la build y ejecutarla desde consola (o si quieren pueden hacer la build tambien desde consola aunque es mas trabajo)
Convert
La clase “Convert
” en C# es una clase estática que proporciona métodos para convertir un tipo de datos a otro tipo de datos. Esta clase proporciona una variedad de métodos que pueden convertir diferentes tipos de datos, como enteros, flotantes, cadenas, fechas, entre otros. Algunos ejemplos de métodos que se pueden encontrar en la clase “Convert” son:
Los métodos de la clase “Convert” son útiles cuando se trabaja con diferentes tipos de datos y se necesita convertir uno en otro de forma segura. Además, en algunos casos puede ser más fácil y legible utilizar los métodos de la clase “Convert” en lugar de escribir la lógica de conversión por sí mismo. Sin embargo, es importante tener en cuenta que algunos métodos de “Convert” pueden generar una excepción si no se puede realizar la conversión de forma segura.
La conversión explícita hace referencia a la conversión del tipo de datos. Es decir, un número que se recibe como si fuera texto, se convierte a formato numérico y así utilizarlo en operaciones matemáticas.
Presionando tabulador pueden autocompletar de manera rápida. ☺
Me parece que el profesor explica bien o es porque ya tengo bases hahahha.
O ambas 😃
Siempre me ha parecido mejor usar el tipado estricto que el dinámico, los errores por tipos de datos los vemos en el momento que se ejecuta y no pasa de largo
Todo lo que son variables o argumentos de funciones van a ser en minúscula.
Usamos pascal case para nombrar proyectos. Lo cual implica que siempre se empieza en mayúscula en cada palabra y desde la primera palabra.
I have learned interesting things, today. I am a Bilingual Industrial Engineer and I am starting in this field. I feel passionate about it. So, I hope to become a software developer 1 year from today. I couldn´t find a good job studying many things about administration, financial issues, production, sst, and stuff. So, I am waiting for a lot of these courses. By the way, I speak Spanish haha
Si alguien llega a tener el problema que, tras intentar escribir el nombre la consola se cierra, intenten volver a crear un nuevo proyecto y seleccionar la Aplicación de consola correcta (Que tenga C#, Linux, macOS, Windows y Consola.
Me pasó que seleccioné otro tipo y el ejercicio no andaba, pero tras crear el tipo de proyecto correcto funcionó sin problemas!
Puedes usar punto (.) para nombrar y organizar de mejor manera los namespace
System.Data;
MiSistema.Info;
Para las enumeracion:
Esta fue mi calculadora…
Honestamente visual studio 2019 hoy en dia esta algo mal optimizada, si tienes los requisitos minimos para utilizarla es mejor no utilizarla ya que va algo muy lento, incluso con el recomendado va lento. Por lo que es recoendable usar IDE mejor optimizado que puedan correr en consola, visual studio 2010 o monodevelop, y si es mas comodo Sublime text 3 pero esto solo y unicamente te correra en consola, el visual studio code no lo recomiendo demasiado.
tardo más en nombrar las variables que en organizar la lógica 😦
Conversiones implícitas
Las conversiones implícitas son aquellas para las que no hace falta indicar entre paréntesis (…) la conversión:
double variable = 10;
Conversiones explícitas
Llegados a este punto, me podrías decir que también funciona una línea como esta:
double variable = (double)10;
Muy variable
Esta clase me ha servido para poder retroalimentar mi conocimiento. Muchas gracias.
class Program
{
static void Main(string[] args)
{
Console.WriteLine("What's your name? Please write your full name");
var fullUserName = Console.ReadLine();
Console.WriteLine("My name is " + fullUserName);
Console.WriteLine("Hello " + fullUserName + ", Welcome to Platzi");
}
}
Una variable en cualquier lenguaje, es un espacio reservado en memoria (como una caja) donde podemos guardar un dato.
No tenía idea que C# tenía inferencia de tipos, la inferencia de tipo generalmente utiliza más memoria para inferir el tipo de dato. No es muy recomendable utilizarlo en todo nuestro programa, pero si nos puede facilitar la inferencia en algunas variables o estructuras de datos.
Qué bueno que cambiaste a VS22, es con la que empecé el curso y me va a ser más fácil
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?