Hola, amigo. ¿te importa decirme cómo haces para indentar bloques de código por asignación de teclas? He probado en VS Enterprise 2022 y no hay manera de que funcione. Desconozco si hay que deshabilitar alguna de las configuraciones por defecto para conseguir que no se superpongan atajos. Supongo que debe haber alguna explicación lógica. 😰
@vladimirmerilesvelasquez6194 күн бұрын
hola buenas, tus videos me ayudan muchísimo. eres un grande! podrías hacer un video de como hacer trampas con área 2d, por ejemplo un pincho en C#
@Oscar-td5sl3 күн бұрын
Una forma que se me ocurre es tratar las trampas como un enemigo, y que se active la animación cuando el jugador jugador colisione. A falta de una mejor solución, yo pondría 2 cajas de colisiones, una que activa la animación y otra que hace daño cuando la animación ha finalizado.
@Oscar-td5sl4 күн бұрын
Muy buen video, he aprendido cosas nuevas y que me parecen mas optimas a como enseñaban en otros tutoriales. Gracias siempre por tu dedicación.
@Jaime-xd4mj14 күн бұрын
Nacho, gracias por estas explicaciones tan claras. Suscrito.
@adrianjoselopezguzman415515 күн бұрын
agradecido, vídeos fáciles de entender y muy buenos. Solo me falta aprender como modificar los datos guardados y como eliminarlos
@NaniBlack-_-19 күн бұрын
Creo que el curso deberia ir como viene por defecto con Gdscript
@Nacho_Cabanes18 күн бұрын
Es una opinión. Pero de GDscript hay mucho donde elegir, y además mis alumnos trabajan en C#, y se trata de que puedan aplicar sus conocimientos a algo "menos serio".
@Oscar-td5sl19 күн бұрын
Impaciente por los siguientes videos, y la verdad ojalá te animes a hacer mas "temporadas" donde toques el motor en mas profundidad con este lenguaje.
@Nacho_Cabanes19 күн бұрын
Si hay interés y mi poco tiempo libre lo permite, puedes contar con ello 😊
@DeleteDCode7419 күн бұрын
Gracias maestro,recomiendas godot antes que unity??,se integra godot bien con c#??
@Nacho_Cabanes19 күн бұрын
Para principiantes y aficionados, sí lo recomiendo. Para proyectos de mucha envergadura, todavía tiene más peso Unity. Además, como verás en la próxima entrega, Unity se integra mejor con C# que Godot.
@Oscar-td5sl19 күн бұрын
Tanto Unity como Godot son gratis(Unity con sus clausulas), lo mejor es que te descargues los dos y pruebes con cual te sientes mas cómodo, es engorroso si pero también es importante hacer estos trabajos de investigación. No por tener un mejor motor vas a ser mejores juegos, eso depende de cada uno.
@desoft8b19 күн бұрын
Pero no instalaste nada del entorno .NET este ni nada? no es necesario?
@Nacho_Cabanes19 күн бұрын
No debería hacer falta. Pronto lo usaremos junto con Visual Studio, para tener un entorno más cómodo, pero debería funcionar tal cual.
@aaroncol616519 күн бұрын
Saludos desde Venezuela Nacho, estoy cursando Ingeniería de Sistemas y toda la facultad de Ingeniería de Sistemas vemos tus videos para aprender programación. Este es mi código del ejercicio que planteaste: program AmbosPares; var n1, n2: integer; ambosPares: boolean; begin writeln('Dime un numero'); readln(n1); writeln('Dime otro numero'); readln(n2); ambosPares:= (n1 mod 2 = 0) and (n2 mod 2 = 0) = true; if ambosPares then writeln('Ambos numeros son pares') else writeln('Ambos numeros son impares'); ambosPares:= false; end.
@Nacho_Cabanes19 күн бұрын
Se acerca mucho, pero realmente no necesitas los " = true" cuando das valor a un booleano a partir de una comparación. En casi cualquier lenguaje moderno bastará con algo como: "ambosPares := (n1 mod 2 = 0) and (n2 mod 2 = 0);"
@aaroncol616519 күн бұрын
@@Nacho_Cabanes Vale muchas gracias por la corrección Nacho
@sebastian.gallego20 күн бұрын
Muy buen video, esperando mas contenido !!!
@Oscar-td5sl20 күн бұрын
Genial video. Es bueno que se le de mas importancia a Godot con C#, que está un poco ninguneado. Espero mas entregas suyas.
@raafaelcusto862721 күн бұрын
Profesor, Qué alegría volver a verle por acá.
@LuisDiaz-uu7xg27 күн бұрын
Hola Nacho tu juego del ahorcado C# lo estoy probando hacer con CPC basic... Pero hay algo que no me sale me ayudas ? 10 dim p$(4):dim ver$(30) 20 cls:border 4:mode 2 21 p$(0)="La grande vadrouille" 22 p$(1)="Batman" 23 p$(2)="Le grand bleu" 24 p$(3)="Le cercle des poetes disparus" 25 p$(4)="Fast and furious" 26 RANDOMIZE TIME 30 peli$=p$(rnd*4) 31 ver$=peli$:nbr=len(ver$) 32 for i=1 to nbr 33 if ver$(i)=" " then print " "; else print "-"; 34 next i 40 print peli$ 50 input"Press any key to redo";a$ 60 goto 20 Es esto que no va 33 if ver$(i)=" " then print " "; else print "-";
@Nacho_Cabanes19 күн бұрын
Sobra el ";" antes de "else". Quizá te interese renumera esas líneas (con la orden RENUM) o dentro de poco te costará insertar órdenes intermedias, si lo llegas a necesitar.
@LuisDiaz-uu7xg18 күн бұрын
@@Nacho_Cabanes Nacho, ya esta.. ya funciona casi bien.. voy a seguir. Gracias
@Yasmin-dy3uk28 күн бұрын
Voy a empezar a aprender esto por simple curiosidad, mi mamá tiene un libro y lo encontré me emocioné demasiado, es Pascal turbo Pascal, ya se python así que creo que no se me dificultará.
@yomisioneroАй бұрын
Pregunta. Esta explicación es sólo válida para SQL, también trabajamos las 3 relaciones de existencia de la misma manera en Access. Tenía entendido que una relación 1.1 siempre una clave principal viajaba como ajena, la que tú quieras, y listo. Pero claro, eso en Access. Viendo lo que has comentado aquí, no sé si es que Access es más sencillito, o que sólo he aplicado el caso de 1º restricción de asistencia, o que directamente sólo en SQL se aplican estas cuestiones. Gracias por la respuesta.
@Nacho_Cabanes20 күн бұрын
Lo que yo cuento son conceptos generales, aplicables a cualquier gestor de bases de datos. Lo importante es qué tipo de relación 1:1 estás planteando (sin existencia, una existencia o doble existencia). En cualquier caso, prueba a introducir datos y ver si realmente cumplen esas restricciones, porque quizá te lo hayan explicado de una manera alternativa que también sea válida.
@yomisioneroАй бұрын
Quería darte las gracias. Muy buena labor docente.
@K4rv3rАй бұрын
Esto es oro puro Nacho, muchas gracias
@AngelProfesorАй бұрын
Hola. ¿Por qué en el primer ejemplo del matrimonio un rombo está relleno y el otro medio relleno? ¿Es alguna notación que usas o ha sido algo arbitrario y no tiene ninguna importanticia?
@Nacho_Cabanes20 күн бұрын
Es una notación alternativa para una relación "uno a muchos", menos habitual que otras pero muy expresiva. La zona sombreada indica el lado del "muchos".
@RT-linkАй бұрын
Muchas gracias por lo que haces,me suscribo a tu canal
@ZaTuRsSsSАй бұрын
Yo la verdad aun sigo sin entenderlo, no soy programador, pero si me gustaria aprenderlo.
@Nacho_CabanesАй бұрын
Pues para eso sólo hace falta dedicarle tiempo. Este curso dura más de 30 horas. Si lo sigues de principio a fin, puedes aprender mucho. Si quieres algo más breve (pero, obviamente, menos exhaustivo), tengo una versión compacta, de 2 horas, que puedes encontrar aquí: www.udemy.com/course/lo-basico-de-csharp/
@josev98Ай бұрын
buenas noches ud puede poner el link de descarga pascal para pc.. gracias
@Nacho_CabanesАй бұрын
Claro! El compilador se llama Free Pascal y la descarga para Windows y para otros sistemas operativos está en su web oficial : www.freepascal.org/download.html
@LuisDiaz-uu7xgАй бұрын
Hola Nacho molan mucho tus videos. que te parece BlitzBasic? haras un curso sobre hacer juegos con BLitz?
@Nacho_CabanesАй бұрын
Me lo anoto. No he usado Blitz, pero espero que no me costaría mucho hacerme con su manejo básico. Lo que pasa es que tendrá que esperar un poco, porque ahora mismo tengo que terminar el de C (cosa que ocurrirá pronto, estoy preparando ya los contenidos que faltan), y luego quiero crear una versión actualizada del de Godot con C#, para mis alumnos de este año.
@LuisDiaz-uu7xgАй бұрын
@@Nacho_Cabanes chulo Muchas gracias
@IanCardoso666Ай бұрын
Bien! No entendía la representación de la agregación, simplemente se envuelve en un rectángulo todo el conjunto para "agregarlo" a ese conjunto. Luego, podemos tratar toda la agregación como un conjunto
@Nacho_CabanesАй бұрын
Efectivamente, así es. Aún así, es algo que se utiliza en pocas ocasiones.
@JoseGonzalez-n7kАй бұрын
Si quieren mas bibliotecas agrueguen crt
@JoseGonzalez-n7kАй бұрын
Extrairdinario
@JoseGonzalez-n7kАй бұрын
Genial esto es mas facil para luego ir a Cc+
@benjaminlopezvidarte3746Ай бұрын
Genioo muy buenoo, nuevo sub
@exitod9401Ай бұрын
gracias me sirvio
@daniloalvarez6181Ай бұрын
Muuuchas gracias! Like y suscrito
@MANGONDRAS2 ай бұрын
MI MEGA PROPUESTA: program MediaDeBloques; const Bloques = 2; Datos = 10; var Numeros:array[1..Bloques,1..Datos] of real; suma,media:Real; nombrebloque,opcion,dato,bloque:Integer; begin for bloque:= 1 to Bloques do for dato:= 1 to Datos do begin Write('Dato ', dato,' del bloque ', bloque,':'); ReadLn(Numeros[bloque,dato]); end; repeat suma:= 0; media:=0; WriteLn(); WriteLn('¿A cuales numeros les quieres sacar la media?'); WriteLn('Escribe el numero del bloque o "0" para todos los bloques'); WriteLn('si quieres terminar escribe "-1"'); ReadLn(opcion); WriteLn(); if opcion = 0 then begin for bloque:= 1 to Bloques do for dato:= 1 to Datos do suma := suma + Numeros[bloque,dato]; media := suma / (datos*bloques); WriteLn('La media de todos los bloques es: ', media); end; for bloque:= 1 to Bloques do begin if opcion = bloque then begin nombrebloque := bloque; for dato:= 1 to Datos do suma := suma + Numeros[bloque,dato]; media := suma / Datos; WriteLn('La media del bloque ',nombrebloque,' es: ',media); end; end; until opcion = -1 end.
@MANGONDRAS2 ай бұрын
AQUI MI PROPUESTA program MenuDeDatos; const DatosTotales = 10; var Datos,Datos2: array [1..DatosTotales] of integer; Auxiliar,W,Mov,M:Integer; DatoEcontrado: Boolean ; begin for M:= 1 to DatosTotales do begin Write('Escribe el dato ', M,': '); ReadLn(datos[M]); datos2[M] := datos[M] end; WriteLn(); repeat WriteLn(); WriteLn('¿Que haras con la lista de datos?'); WriteLn('1- Mostrar lista'); WriteLn('2- Buscar dato en concreto'); WriteLn('3- Mostrar el dato mas grande'); WriteLn('4- Ordenar lista de datos'); WriteLn('5- Nada, salir'); ReadLn(Mov); WriteLn(); Case Mov of 1: begin WriteLn('lista de datos'); for M := 1 to DatosTotales do begin datos[M] := datos2[M]; Write(datos[M],' '); end; WriteLn(); end; 2: begin WriteLn('escribe el dato a buscar'); DatoEcontrado := false; repeat for M:= 1 to DatosTotales do datos[M] := datos2[M]; readln(W); DatoEcontrado := (W >0) and (W <= DatosTotales); if not DatoEcontrado then WriteLn('Dato no econtrado'); until DatoEcontrado; WriteLn('Este es el dato: ', datos[W]); end; 3: begin Auxiliar := datos[1]; WriteLn('Este es el dato mas grande'); for M:= 1 to DatosTotales do if Auxiliar < datos[M] then Auxiliar := datos[M]; WriteLn(Auxiliar); end; 4: begin WriteLn('Este es el orden de los datos de menor a mayor'); for M:= 1 to DatosTotales-1 do for W:= M+1 to DatosTotales do begin if datos[M] > datos[W] then begin Auxiliar := datos[M]; datos[M] := datos[W]; datos[W] := Auxiliar; end; end; for M:= 1 to DatosTotales do WriteLn(datos[M]); end; end; until Mov = 5; end.
@MauroStegmayer2 ай бұрын
como se llama el lenguaje?
@Nacho_Cabanes2 ай бұрын
Te he contestado ya en el video 13, pero lo hago aquí también. Es "Pascal". Lo pone tanto en el título del video como en la descripción.
@MauroStegmayer2 ай бұрын
que lenguajes es??
@Nacho_Cabanes2 ай бұрын
Pascal. Lo pone tanto en el título del video como en la descripción.
@jozeues2 ай бұрын
Gracias por los videos. Hay un repositorio en github de los cursos?
@Nacho_Cabanes2 ай бұрын
Claro, en la mayoría de ellos. Mira la descripción de cada video. En el caso de este curso, que es más antiguo, hay muy pocos fuentes compartidos, y los tienes aquí: github.com/ncabanes/cursosKZbin/tree/master/csharp2020
@smart159762 ай бұрын
Felicidades por este curso tan interesante, tienes pensado hacer un curso de C++?
@Nacho_CabanesАй бұрын
De C++ no, por ahora, pero tienes uno de C 😉
@rbnzazo2 ай бұрын
dejo por aqui un like y el ejercicio propuesto: program ejemploelse; var n1 : integer; n2 : integer; begin writeln ('dime un numero'); readln (n1); writeln ('dime otro numero'); readln (n2); if (n1 > n2) then writeln ('el primer numero es mayor que el segundo') else if (n1 < n2) then writeln ('el segundo numero es mayor que el primero') else writeln ('ambos numeros son iguales'); end. Seguimos mejorando. Muchas gracias profesor!!
@rbnzazo2 ай бұрын
Grande el profesor Nacho!! Dejo por aqui otro de los ejemplo como hacer el ejercicio propuesto: program ejemploif; var n : integer; begin writeln ('dime un numero'); readln (n); if (n mod 2 = 0) then write ('el numero es par'); If (n mod 2 <> 0) then write ('el numero es impar'); end. Mil gracias por la serie de videos. A mas de uno nos esta salvando y a la vez picando para seguir cada dia un poco mas a indagar en el mundo de la programacion.
@VictorJulioBatistaSera2 ай бұрын
Muy buena explicacion!!
@hada11113 ай бұрын
Las relaciones pueden tener id?
@Nacho_Cabanes3 ай бұрын
Claro. O, hablando con más propiedad, "pueden tener una clave primaria" (compuesta, en ocasiones), que es algo más amplio que una "id". Mira el video con detenimiento (por ejemplo, a partir del minuto 5). En las "muchos a muchos" necesitarás una clave primaria compuesta, y, en ciertas ocasiones, incluso algún campo adicional que también sea parte de esa clave primaria.
@gamer73proprro203 ай бұрын
Desconozco si es la solucion correcta: using System; public class Ejercicio { static void Main() { int tamaño = 11; int[] numeros = new int[tamaño]; bool final = false; for (int j = 1; j < numeros.Length; j++) { Console.WriteLine("ingrese un numero {0}/10", j); numeros[j] = Convert.ToInt32(Console.ReadLine()); } do { int numeroBuscadoPorUsuario; int num = 0; Console.WriteLine("ingrese un numero a buscar"); numeroBuscadoPorUsuario = Convert.ToInt32(Console.ReadLine()); foreach (int i in numeros) { if (numeroBuscadoPorUsuario == i) { string eleccion; Console.WriteLine("el numero {0} ingresado ya fue encontrado ¿desea buscar otro numero?", numeroBuscadoPorUsuario); Console.WriteLine("ingrese Fin para terminar, de lo contrario Presione Intro para buscar otro numero"); eleccion = Console.ReadLine(); num = i; if (eleccion.ToLower() == "fin") { final = true; } } } if (numeroBuscadoPorUsuario != num) { Console.WriteLine("numero no encontrado porfavor Presione Intro para buscar nuevamente"); } } while(final != true); Console.WriteLine("cerrando programa"); Console.ReadLine(); } }
@sergiooscar373 ай бұрын
Hola. Recuerdo este lenguaje, lo estudié en la década del '90.
@gamer73proprro203 ай бұрын
tengo 16 años y siempre me intereso el mundo de la programacion, este lenguaje en particular me provocaba interes ahora que porfin encontre a alguien que explica conciso y preciso, y en videos tan cortos como para verlos en los resesos de clases e tenido grandes avances de ver la lista de reproduccion y su libro de 444 paginas!!
@gallo-s1s3 ай бұрын
buenas, cuando intento compilar lo hace pero me aparece una pantalla donde me tira información (compiling (normal mode)) y al querer ver la consola o poner lo de readkey, no me aparece el resultado. qué podría ser eso?
@miguelrf79493 ай бұрын
Hola, este video no tiene solución en github? Me parece interesante el tema de mostrar el menu, pero no se como hacerlo.
@Nacho_Cabanes3 ай бұрын
Es cierto, tienes los ejemplos desarrollados aquí: github.com/ncabanes/cursosKZbin/tree/master/pascal2021 pero no he compartido ninguna solución de ejemplo para el ejercicio propuesto. Aun así, en los comentarios del video tienes una propuesta de solución, aportada por un usuario. Ahí podrás ver que hacer un menú es poco más que varios "writeLn" y un "case".
@MANGONDRAS4 ай бұрын
Quize hacer las dos en un solo programa: program array_example; var numeros: array [1..10] of Integer ; p: Byte; impar: Boolean; impares: Integer; begin impares :=0; WriteLn('escribe 10 numeros'); for p := 1 to 10 do begin WriteLn('numero',' ', p, ); ReadLn(numeros[p]); end; Writeln('el primer numeri que escribiste fue:',' ', numeros[1]); Writeln('el ultimo numero que escribiste fue:',' ', numeros[10]); for p:= 1 to 10 do begin impar:= numeros[p] mod 2=0; if impar = true then Inc(impares); end; WriteLn('el total de numeros impares es',' ',impares); end.
@shermanperez33864 ай бұрын
Mil gracias! fácil de seguir y atento a detalles 😁
@MANGONDRAS4 ай бұрын
Yo hice que solo pudieras escribir mayúsculas, si escribes alog que no sea una mayúscula te da error. program escribe_una_letra; uses crt; var letra : Char; i : byte; begin repeat WriteLn('escribe una letra, entre la A y la Z'); ReadLn(letra); i := Ord(letra); if (i <65) or (i >90) then WriteLn('no puedes escribir eso'); until (i >=65) and (i <=90); WriteLn('aqui estan las letras que estan antes de tu letra'); for i := i+1 downto 65 do begin Writeln(Chr(i)); end; end.
@Chequelo24104 ай бұрын
gracias por los videos
@CrisSanMArt-u5n4 ай бұрын
Eso esta obsoleto! Yo ahora uso→ c: Run"disc" y después dir.exe para acto seguido teclear Run"anivemin" y ahí ya... Empieza la magia y el auténtico combate entre el hombre y la maquina para ver que inteligencia dominará el mundo..
@Nacho_Cabanes2 ай бұрын
Sí, algunos juegos se lanzaban con su nombre, otros con RUN "DISC", otros con |CPM... había distintas formas, según cada juego, pero la que indico en el video era la más habitual.