Domina cómo manejar múltiples cursos en C# con arreglos, evitando fallos por índices incorrectos y formateando la salida con claridad. Verás cómo crear y llenar un arreglo, recorrerlo con la palabra clave while, usar Length para no pasarte del límite y aplicar interpolación de cadenas para imprimir nombre e ID aleatorio de cada curso. Además, aprovecharás atajos del IDE y mejoras de sintaxis.
¿Cómo crear un arreglo de cursos en C#?
Para administrar varios objetos del mismo tipo, usa un arreglo (también llamado array). Un arreglo alinea en memoria elementos del mismo tipo y permite tratarlos como una sola entidad. Recuerda: la numeración inicia en 0.
Declarar y reservar espacio para tres cursos.
Asignar cada curso a su posición: 0, 1 y 2.
Tener presente que empezar desde 1 es un error común.
// Crear y poblar el arreglo de cursosCurso[] arregloCursos =newCurso[3];arregloCursos[0]= curso1;// primera posición (índice 0)arregloCursos[1]= curso2;// segunda posición (índice 1)arregloCursos[2]=newCurso{ Nombre ="Curso 301"};// tercera posición (índice 2)
Cada curso muestra un ID aleatorio muy grande con probabilidad ínfima de repetirse.
Ejecuta y verifica desde la terminal.
dotnet run
¿Cómo recorrer un arreglo con while sin errores?
Imprimir posiciones fijas (0, 1, 2…) funciona, pero es frágil: si pides una posición que no existe, el programa se rompe. La solución es controlar el recorrido con un contador y la propiedad Length del arreglo.
Iniciar contador en 0.
Repetir mientras contador < arreglo.Length.
Imprimir con string interpolation usando el prefijo $.
Incrementar el contador al final del ciclo.
staticvoidImprimirCursos(Curso[] cursos){int contador =0;while(contador < cursos.Length){ Console.WriteLine($"Nombre [{cursos[contador].Nombre}], ID [{cursos[contador].UniqueId}]"); contador++;}}// Pausa opcional antes de continuarConsole.WriteLine("Presione enter para continuar.");Console.ReadLine();// Cuidado: esto rompe si la posición no existe// Console.WriteLine(arregloCursos[5].Nombre);
Beneficio clave: al usar Length, nunca te sales del rango del arreglo.
La salida queda consistente y legible con el formato Nombre [..], ID [..].
¿Qué atajos y mejoras de sintaxis aceleran tu código?
Pequeños cambios hacen el código más claro y corto, sin perder legibilidad.
Incrementos equivalentes.
contador = contador +1;// forma completacontador +=1;// abreviadacontador++;// la más concisa cuando incrementas de a 1
Saltos personalizados: puedes avanzar de dos en dos, o de cinco en cinco.
contador +=2;// imprime cada dos posiciones
Generación de métodos con el IDE: atajo Control + . para crear el esqueleto de un método como ImprimirCursos.
Nota de práctica: más adelante, los arreglos se usan en casos específicos, pero hoy son ideales para entender índices, longitudes y ciclos.
¿Qué habilidades y keywords refuerzas aquí?
Uso de arreglos / array para agrupar objetos del mismo tipo.
Índices desde 0 y cuidado con posiciones inexistentes.
Ciclo while con contador y condición basada en Length.
Console.WriteLine con interpolación de cadenas: $"...{expresión}...".
Console.ReadLine para pausar la ejecución.
Comandos de compilación/ejecución: dotnet run.
IDs aleatorios en cursos con bajísima probabilidad de repetición.
Atajos del IDE y de incremento: +=, ++.
¿Tienes otra forma favorita de recorrer arreglos o formatear la salida? Comparte tu enfoque y qué te gustaría automatizar a continuación.
Por si alguien quiere tener alguna idea de como crearlos de manera dinamica, les comparto!
La próxima vez por favor comparte el código en texto, es más fácil de leer, además si nos interesa lo podemos copiar y ejecutar en nuestro ambiente local.
Excelente curso sigo el curso en MAC
privatestaticvoidImprimirCursos(Curso[] arregloCursos){for(int i =0; i <3; i++){System.Console.WriteLine($"{arregloCursos[i].Nombre}, {arregloCursos[i].UniqueId}");}}
Un consejo que no está tan relacionado a la clase, sino a VS Code, es que podemos hacer que las líneas de codigo se corten y se pasen hacia abajo según el ancho de la ventana/pestaña. Esto para no tener un scroll horizontal.
Alt + Z
Una alternativa usando el ciclo foreach
privatestaticvoidPrintCourse(Course[] courseArray){foreach(Course course in courseArray){Console.WriteLine($"Course: {course.Name}, id: {course.UniqueId}");}}```
Yo lo hice con un ciclo for
var arregloCursos =newCurso[3]; arregloCursos[0]=newCurso(){Nombre="101"}; arregloCursos[1]=newCurso(){Nombre="201"}; arregloCursos[2]=newCurso(){Nombre="301"};for(int i=0; i<arregloCursos.Length;i++){Console.WriteLine($"curso: {arregloCursos[0].Nombre}\nId: {arregloCursos[0].UniqueId}");System.Console.WriteLine("=========================");}
Hola Camilo!
Para que te funcione el for y e muestres información distinta deberias cambiar dentro de tú código arreglosCurso[0] por arreglosCurso[i] ya que la i te funciona como un indice y cada vez que el for realice una iteración cambiará la psocición de memoria y esto ayudará a que la información de los otros cursos sea mostrada.
Usa la variable de iteración para acceder a cada elemento.
Otra de las formas de imprimir un array es esta:
foreach(Curso c in arrCursos)Console.WriteLine($" Curso: {c.Nombre} - {c.UniqueId}");```
Si alguién le interesa otra forma que se podría mostrar la información de los cursos es sobre el método sobre escrito de ToString() en el cual yo lo deje asi:
public override string ToString() {
return $“Nombre: {} ,Jornada: {this.Scheldure}”;
}
Y cuándo estemos recorriendo el array sólo sería necesario ccolocar el indice del curso:
private static void PrintCourseInfo(Course[] courses)
{
int cont = 0;
while (cont < courses.Length)
{
System.Console.WriteLine(courses[cont]);
cont ++;
}
}
De esta manera imprimirá la información con el formato que está en el metodo sobre escrito.
Hola, que podria usar en vez de "var"?
var arregloCursos =newCourse[3];
Aporte de la clase
using System.Runtime.Serialization.Json;// See https://aka.ms/new-console-template for more informationusing CoreEscuela.Entidades;Console.WriteLine("Hello, World!");Escuela es =newEscuela("Escuela Basicas",1995,TiposEscuela.Primaria);Curso cursos1 =newCurso();cursos1.Nombre="Pruebas";cursos1.Jornada=TiposJornada.Manaña;var curso2 =newCurso(){Nombre="102",Jornada=TiposJornada.Tarde};var arrayCursos =newCurso[3];arrayCursos[0]=newCurso(){Nombre="301",Jornada=TiposJornada.Noche};var cursos2 =newCurso(){Nombre="302",Jornada=TiposJornada.Noche};arrayCursos[1]= cursos2;arrayCursos[2]=newCurso(){Nombre="303",Jornada=TiposJornada.Noche};Console.WriteLine(es.Nombres);Console.WriteLine("=======================================");Console.WriteLine(cursos1.Nombre+","+ cursos1.Jornada+","+ cursos1.CursoId);Console.WriteLine($"{curso2.Nombre} , {curso2.Jornada} , {curso2.CursoId}");ImprimirCurosNoche(arrayCursos);voidImprimirCurosNoche(Curso[] arrayCursos){foreach(var curso in arrayCursos){Console.WriteLine($"Nombre: {curso.Nombre} , Jornada: {curso.Jornada}, Id: {curso.CursoId}");}}
Yo recorri y imprimi el arreglo con un ciclo for básico
for(int x =0; x <3; x++){Console.WriteLine(arregloCursos[x].Nombre+","+ arregloCursos[x].UniqueId);System.Console.WriteLine("===============");}
a mi tampoco me funcionan el ctrl + . para poder hacer la funcion, no se que plugin hace falta para esto, ya tengo el C# extensions y nada
Debes pararte sobre ImprimirCursos y ahí si usar ctrl+. si te ubicas al final de la instrucción, no te salen opciones.
Debes pararte sobre ImprimirCursos y ahí si usar ctrl+. si te ubicas al final de la instrucción, no te salen opciones.
VS Code y el compilador no admitieron este método:
var courses[]=newCurso[3];
pero si este
Curso[] courses =NewMethod();
var courses[] = new Curso[3];
Esta mal declarado esto, le tenes que sacar los corchetes a courses
cambia el nombre de tus variables, es confuso, pense en ayudar pero no me complicare con esos nombres
alternativamente, se puede usar un for:
for(int i =0; i < arrayCourse.Length; i++){Console.WriteLine($"Name:{arrayCourse[i].name}, \nId:{arrayCourse[i].UniqueId}");}
Tengo una duda o inquietud, he estado trabajando con Java, pero no se si es el profesor o es el lenguaje pero me he sentido mas comodo con c#. Soy el unico?
Alguno sabe donde conseguir ejercicios para practircar C#?
hola alguno sabe como puedo correguir el codio CS8618
No me sugiere la creación del método ImprimirCursos() pese a que tengo las extensiones habilitadas tal cual muestran en la clase. Tampoco se detecta como error.
Que extraño, pero debo reconocer que, entre el mar de posibles problemas con un editor de codigo, ese es uno bastante manejable (siempre que se ejecute el metodo claro)