Mostrando las entradas con la etiqueta programacion. Mostrar todas las entradas
Mostrando las entradas con la etiqueta programacion. Mostrar todas las entradas

martes, 28 de febrero de 2023

Conocí ChatGPT | Las IA ya no son Zzzz

 Efectivamente, soy un boomer conociendo nueva tecnología, pero es parte del trabajo de alguien que se dedica a las tecnologías de la información.

Hace tiempo cuando recién entraba al mundo de la computación conocí chatbots muy austeros que lograban impresionar a la gente de ese tiempo, unos 20 años atrás, como lo fue CleverBot, y hace unos 10 años más o menos llegó SimSimi.

 

 

Supongo que no es necesario el contexto, pero por si no lo sabías estas dos tecnologías por llamarlos de alguna manera, sí evolucionaron, "SÍ APRENDIERON". Hablo solo de los más comerciales, quizá existan más por ahí perdidos en el limbo, pero específicamente estos dos dieron mucho de qué hablar porque eran la sensación del momento, es decir, que pudieras "chatear" con alguien ya era una novedad, pero chatear con la misma computadora y te respondiera cual si fuera una persona resultaba muy atractivo para todo el mundo.

 Hoy día, esa tecnología dejó un poco atrás los pañales, pues si en esos momentos los chats podían sostener una conversación ligeramente fluida y comprensible, ahora ChatGPT ha roto la barrera entre la coherencia y el razonamiento humano. Logra entender instrucciones complejas, logra realizar operaciones que quizá muchos imaginamos pero jamás imaginamos vivirlas.

 Mi experiencia con esta IA específicamente ha sido pedirle código fuente, código que obviamente analizo y ejecuto para realizar alguna actividad específica, obviamente necesita entrenamiento, pero fuera de ello te da muchísimas opciones libres de derechos, libres de todo lo que puedas encontrar en internet y sobre todo una explicación lógica de por qué fue lo que hizo así.

 No hay ningún motivo para pensar que esta tecnología en algún momento nos va a reemplazar, pues siempre ha ocurrido algo revolucionario que vuelve posible que el trabajo de cien hombres lo pueda realizar uno solo utilizando una máquina, pero esto siempre da pauta a nuevas oportunidades de trabajo, de actividades, de un montón de funciones.

Recomiendo 100% esta herramienta, puede ser útil para casi cualquier ámbito. Justo hace unos días un amigo le pidió que hiciera un invitación para un bautizo, pero no porque la necesitara, sino porque es estúpidamente inteligente la herramienta y todos los días aprende más y más.

 De nada por sus futuras wins ZELDA:  ChatGPT

También pueden encontrar su app oficial en PlayStore y AppStore.

miércoles, 5 de agosto de 2020

Expresiones regulares [1] General

¿Alguna vez has escuchado expresión regular o regex?, si no has escuchado ninguna de las dos, este es tu día de suerte, en realidad no tanto, pero sí lo escucharás un poco por aquí.
Resulta que en mi trabajo necesitaba validar que un número de serie tuviera ciertas características mamalonas para pudiera dejar pasar al siguiente proceso, así que estuve considerando todos los puntos:
  1. Todas las letras de la serie deben ser mayúsculas.
  2. No puede haber espacios ni caracteres especiales, únicamente números hexadecimales (Es decir del 0 al 9 y de la A a la F).
  3. Todos los números de serie contienen 10 dígitos y ninguno puede comenzar con la letra F o el 0, yo no puse las reglas.
Bueno, al final no son tantas reglas como pensé, pero bueno, así fue mi pequeña situación en el trabajo, comencé a hacer las validaciones poniendo condiciones y lo primero que hice fue, tomar el dato que entraba (obviamente se debe enviar un número de serie), y puse un ToUpper() y listo, ya con eso solucioné la primera regla, ¡PERFECTO!

Pero la cosa no acabó ahí, ahora debía validar la segunda, pero como se me hizo ligeramente más complicada me salté a la tercera y puse unas condiciones if que me ayudaran a validar que el primer caracter, es decir, la primera posición (valor[0]) en la cadena leída; no fuera un CERO o una EFE, facilito también, pero a la hora de la verdad, estuve pensando muy tonta y estúpidamente que debía hacer un ciclo que comprobara cada uno de los 10 caracteres, no había problema, lo hacía y ya, pero luego de recordar mis días de universidad me di cuenta de que había una manera más sencilla y nada tardada de hacer eso.
An introduction to regular expressions – O'Reilly

Las Regex

O expresiones regulares, como les quieran llamar, son lo mismo, pero en programación así se les conoce más comúnmente, perfecto, ahora que recordé que con eso puedo hacer más sencillo el proceso, ¿ahora cómo carajo la implemento?, nada que StackOverflow no tenga.

Utilicé esta página: https://regex101.com
En ella puedes validar si tu expresión regular está correcta y las cadenas que permite, ahora solo falta el programita perrón que les mostrará lo que hice. Por cierto, la expresión regular que "diseñé" fue esta:

^([1-9A-E])([0-9A-F]{9})$

Pueden ignorar el primero y el último signo (^ y $), el símbolo de potencia (gorrito) representa el inicio de una expresión regular y el símbolo de dinero representa el final, no es necesario, simplemente es para marcar límites en caso de cualquier cosa.

martes, 14 de julio de 2020

Validar variables vacías o nulas en C# | Función definida

Hoy mientras me encontraba en el trabajo revisando al monstruo (el sistema que hace funcionar la empresa), me di cuenta de que las condiciones eran una barbaridad (como diría mi jefecita). En fin, las condiciones eran demasiadas pero en ocasiones eran repetitivas y prácticamente abarcaban el 80% del bloque de código, entonces decidí unificar todas las condiciones parecidas que iba encontrando y se me ocurrió poner en google lo siguiente:


Cuando se trata de programación las búsquedas en inglés o en ruso son lo mejor (Obviamente el ruso es menos común). Así que si quieres buscar algo de programación y pretendes encontrarlo pronto debes buscarlo en ese idioma, la cantidad de información que existe es grandísima, si en español encuentras 1GB de información quizá en inglés encuentres hasta 1000 veces esa cantidad.

En fin, las condiciones trataban de validar que una variable de tipo string no estuviera vacía y tampoco tuviera un valor nulo (null), para ello se hacía la siguiente condición:

if(varString != null && varString != "")

Y la secuencia de validaciones era un sin fin de condiciones similares, a lo que en mi búsqueda encontré una súper función de la librería string que permite hacer esa validación con un solo método enviando una única ocasión la variable a validar y de respuesta te regresa un true o un false.

String.IsNullOrEmpty(variable)

Tan bonita que es la función que les muestro, esta función permite validar si una variable de tipo string es nula, está vacía o si únicamente contiene espacios en blanco.

Espero que te haya servido esta función, quizá en algún otro lenguaje exista o quizá no, pero al menos sabemos que en C# es posible explotarla de todas las maneras que consideremos necesaria, nos vemos en la próxima entrada.

lunes, 6 de julio de 2020

Listas en programación [3] | Listas simples

En la entrada anterior mencioné las listas simples, y también que de simples solo tienen el nombre, y efectivamente tienen un nivel de complejidad un poco más elevado a lo que ya conoces, es decir, "los arreglos".
Es posible manejar las listas como un simple arreglo, le agregamos datos y le quitamos. Pero en esta ocasión utilizaremos espacios de memoria que se comuniquen entre sí utilizando algo que se llama puntero, en C es un poco más complejo hacer el manejo de estos, pero en los lenguajes orientados a objetos es sencillo llevar a cabo este proceso, ya que el manejo de clases y objetos es muy eficaz.

En realidad las listas simples están enlazadas para que cumplan con su función, este enlace apunta a una dirección de memoria, por ello es que si se asigna ese valor a cualquier otra variable, este afectará de forma global.

Podemos tenerlo en cuenta como los changuitos que aparecen en la película de Toy Story, que uno se unía a otro y así, cada chango representa un valor y sus brazos representan ese enlace apuntando a la dirección de memoria.

La siguiente imagen muestra la representación correcta de una lista simple enlazada, el enlace final determinará su límite al tener un valor nulo, es decir, que no hay otra dirección de memoria más, simplemente hasta ahí llega.

Estructuras de datos: listas enlazadas, pilas y colas.

Es posible realizar 3 operaciones básicas en este tipo de listas, bueno, en realidad en todas las listas, pero con pequeñas variaciones.

Agregar: Es posible agregar un dato "siguiente" a la lista, o crear un nuevo nodo que apunte al anterior, es decir, agregar un dato al final o al inicio.

Borrar: Es posible borrar un dato ya sea el primero, el último o buscándolo por su valor, pero siempre de uno en uno, si se llegaran a repetir valores, eliminará el primero que encuentre.

Buscar: Es necesario poder hacer consultas de datos, para verificar si existe el valor, ya sea solo para mostrarlo o también como apoyo para borrar.

En el siguiente código te muestro esas operaciones utilizando ECMA Script 6, es una variación de Javascript más bonita y orientada a objetos, para más información puedes consultar en algún sitio web las diferencias de cada variación.


Prueba la magia:


Y descarga el código si quieres ver cuál es la magia detrás de esto.

¡DESCARGA FAST!

Todo el código que quieras, ¡GRATIS!, programación totalmente gratuita.
Comenta, opina, exprésate y déjame saber si quieres algo específico, si algo está mal o si no te gusta algo, para hacer que te guste.

Clic a la imagen para descargar el código en Javascript:

sábado, 4 de abril de 2020

Mayor de 3 números

El problema dice lo siguiente: "Realizar un programa en [CUALQUIER LENGUAJE] que determine cuál es el mayor de 3 números".

Realmente no es un problema difícil de resolver, sin embargo es buen ejercicio para quienes van comenzando en este mundo de la programación. Con fundamentos se deben conocer las estructuras comparativas. Si no las recuerdan, son las siguientes:

Operadores lógicos y funciones lógicas en Excel | Blog

En la mayoría de los lenguajes de programación son exactamente iguales que en la tabla anterior, pero recuerden que si vamos a comparar algo igual a algo, se deben colocar dos signos IGUAL (==), bueno, sabiendo esto ya podemos proceder a la parte de la programación.

Lógica (según): 
Ok, se tienen 3 números, los cuales debemos comparar para saber cuál de los 3 es mayor, y efectivamente, lo único que se debe hacer es compara si el primer número mayor que el segundo, y así mismo comparar el mayor de esos dos con el tercero.
  • número1 es mayor que número2
    • Sí: número1 es mayor que número3
      • Sí: número1 es el mayor.
      • No: número3 es el mayor.
    • No: número2 es mayor que número3
      • Sí: número2 es el mayor.
      • No: número3 es el mayor.
De esta manera queda expresada la lógica que se debe tomar en cuenta para realizar este programa o se puede hacer de la siguiente manera.

variable mayor = -99999999
  • número1 es mayor que mayor
    • Sí: mayor = número1
  • número2 es mayor que mayor
    • Sí: mayor = número2
  • número3 es mayor que mayor
    • Sí: mayor = número3

Ambas formas son correctas, pero la segunda te obliga a realizar 3 condiciones obligatorias, sin embargo es notablemente más reducida que la primera forma, cada quien tiene su lógica, quizá haya personas que puedan hacerlo de otra manera, pero lo dejo a tu criterio y manera de pensar.

¡DESCARGA FAST!

Todo el código que quieras, ¡GRATIS!, programación totalmente gratuita.
Comenta, opina, exprésate y déjame saber si quieres algo específico, si algo está mal o si no te gusta algo, para hacer que te guste.


sábado, 28 de diciembre de 2019

¡Programa que imprime las tablas de multiplicar!



Las tablas de multiplicar, malditas tablas diría yo cuando iba en la primaria. En mi país México en general te enseñan a multiplicar en base a este concepto, consta de 8 o 10 tablas como su nombre lo dice donde se encuentran las multiplicaciones de los 10 números (del 1 al 10) hasta el 10 cada uno, es de 1*1, 1*2,..., 1*10, 2*1, 2*2, y así hasta el máximo que es 10*10.

Resultado de imagen para tablas de multiplicar del 1 al 10

Es un concepto sencillo hasta cierto punto porque únicamente te debes de aprender de memoria esta secuencia de multiplicaciones, pero la tarea se complica cuando tu jefecita es a quien debes decirle cada una de estas sin equivocarte o te irá mal. Finalmente debes demostrar esos conocimientos adquiridos diciéndole cada una a tu maestro(a), y según ya con eso debes tener nociones de cómo multiplicar, aunque la verdad puedes aprender sin tener que memorizar las tablas.

La explicación de aquí es todo lo que necesitas saber para programar este objetivo, únicamente se trata de 10 iteraciones por cada número, y puedes utilizar ciclos y todas esas cosas que se te ocurren, recuerdo que este "mini proyecto" lo hice cuando recién iniciaba y lo hice con 10 printf en lenguaje C, ya luego me di cuenta de que pude haberme ahorrado esas líneas de código si tan solo hubiese investigado, pero bueno, nunca se termina de aprender.

¡DESCARGA FAST!

Todo el código que quieras, ¡GRATIS!, programación totalmente gratuita.
Comenta, opina, exprésate y déjame saber si quieres algo específico, si algo está mal o si no te gusta algo, para hacer que te guste.


lunes, 21 de octubre de 2019

Combinaciones de letras para formar una palabra en C#

¿Alguna vez has escuchado sobre la genética?, es absurdo hasta cierto punto escucharlo por aquí, ¿no?, pero no es tan descabellado, pues la genética también está basada en algoritmos muy complejos, realmente complejos.

Imagina esto, tu abuelo y tu abuela, obviamente de familias distintas tuvieron a tu padre, y tu padre con tu madre te tuvieron a ti, es también obvio que tu madre tiene sus propios padres; y quizá ella heredó algo de sus padres, pero tu padre no, hasta que naciste tú. "Abueleaste", dirían en mi humilde pueblo, es decir, tuviste una característica genética que le llevó a familia algunas generaciones "fallidas", es decir, ni tus tíos, ni tu padre, ni tus hermanos obtuvieron esa característica extra que tú tienes. Puede ser desde una marca de nacimiento, hasta color de ojos, cabello, y sin fin de tonterías que las mamás encuentran para justificar por qué su hijo tiene características que "su padre" no (eso sonó a que eres hijo del lechero).

Resultado de imagen para algoritmo genetico

En fin, eso es un algoritmo genético, y en esta ocasión traigo un programa bastante relacionado con el tema, sin embargo es más básico que las morras que dicen "¡WEEEEEEY, NOOOOO!".

Incluye una población, que en este caso sería nuestra frase, nuestra selección sería toda la población, pues queremos cambiar de posición cada una de las letras, pero como no todas cambian siempre, diremos que nuestra selección es variable desde 0 hasta la longitud de nuestra frase. También tenemos un cruce implícito, pues si bien no tenemos una selección fija, tampoco tenemos un cruce distinguible, POR ESO DECIMOS QUE ES PARECIDO AL ALGORITMO GENÉRICO mas no representa la genética en su esplendor.
Y nuestra mutación sería el producto de lo que ocurrió en el cruce, normalmente la mutación es la probabilidad de que ocurra un cambio, pero como nuestra probabilidad está ligada únicamente a la generación de una número aleatorio no tenemos definido un % de mutación, solo tenemos nuestro producto final que obtendrá la palabra idéntica una vez generadas frases al azar con todos los caracteres que la conforman, toma en cuenta que entre más larga sea la palabra, más larga será la espera para que encuentre una resolución.

También podemos decir el el algoritmo genético se relaciona aún más si colocamos un contador de generaciones para saber en cuál fue donde se obtuvo el resultado esperado.



¡DESCARGA FAST!

Todo el código que quieras, ¡GRATIS!, programación totalmente gratuita.
Dale clic en el logo del lenguaje de programación que sea de tu gusto y descarga el código.

Comenta, opina, exprésate y déjame saber si quieres algo específico, si algo está mal o si no te gusta algo, para hacer que te guste.

domingo, 20 de octubre de 2019

Fracciones a decimales y decimales a fracciones en C#



Hacía mucho que no redactaba una entrada para el blog, recientemente acabo de subir una nueva, pero este día también es necesario subir otra nueva.

AHORA SÍ...

Todos hemos tenidos problemas con las fracciones, esos numeritos que tienen abajo otros números, tuvimos conflictos con los numeradores, denominadores, cocientes, divisor, dividendo, y todos esos términos que a final de cuenta tenían significados similares pero cada maestros nos confundía utilizando todas esas distintas formas de llamarle, si de por sí ya era difícil entender, ahora con tanto sinónimo pfff... 

AHORA SÍ YA VA EN SERIO...

Bien, las fracciones o quebrados, como mucha gente latino las conoce son números que representan una porción de algún entero, su nombre viene del latín (la verdad no tengo idea de dónde venga). Siempre en la primaria se nos explica con pasteles o con cosas que se puedan dividir, como una pizza o una galleta, así como en la figura de abajo.

Imagen relacionada

No es tan sencillo como que siempre sea la mitad, también pueden ser octavos, novenos, y tanta cantidad se te ocurra, pero nada puede ser dividido entre cero, y si no me crees pregúntaselo a SIRI.
Cada fracción tiene dos partes, su numerador (la parte de arriba) y el denominador (lo de abajo), que si analizamos bien, las fracciones son simplemente divisiones para "repartir" enteros.

Bueno, en fin, mucha teoría, USTEDES SOLO VIENEN POR EL MALDITO CÓDIGO...



¡DESCARGA FAST!

Todo el código que quieras, ¡GRATIS!, programación totalmente gratuita.
Dale clic en el logo del lenguaje de programación que sea de tu gusto y descarga el código.

NOTA:

El programa solo calcula la fracción definitiva, es decir, si tú ingresas 1.5 el programa te regresará 1 + 5/10, en lugar de decir 1 + 1/2, que al final es lo mismo, pero si buscas simplificar la fracción hasta ese punto dale clic AQUÍ.

Comenta, opina, exprésate y déjame saber si quieres algo específico, si algo está mal o si no te gusta algo, para hacer que te guste.

sábado, 19 de octubre de 2019

Programa de Código ASCII en C#


Durante el proceso de introducción al mundo de la "computación" te vas a dar cuenta de que en ocasiones dependes del código ascii, si eres de la vieja escuela es muy probable que utilizaras Alt + 64 para escribir el @ cuando escribías tu correo en MSN, pero bueno, no regresaremos a eso porque no estamos aquí para nostalgias, estás aquí para obtener código perrón en varios lenguajes y que hagan exactamente lo mismo.

Resultado de imagen para codigo ascii

De igual manera como cuando hacías tu combinación de teclas para obtener el caracter especial también en programación debes hacerlo, pero simplemente convirtiendo a tipo CHAR cualquier número, siempre y cuando el lenguaje soporte el símbolo resultante, pues no sé a qué se deba que algunos lenguajes impriman símbolos extraños en lugar de imprimir el que debe ser.

La verdad la historia y las explicaciones no son lo mío, por eso aquí les dejo el código para que lo analicen y lo vean y lo amen... Todo lo que ustedes deseen.

¡DESCARGA FAST!

Todo el código que quieras, ¡GRATIS!, programación totalmente gratuita.
Dale clic en el logo del lenguaje de programación que sea de tu gusto y descarga el código.

Comenta, opina, exprésate y déjame saber si quieres algo específico, si algo está mal o si no te gusta algo, para hacer que te guste.


lunes, 11 de febrero de 2019

Te regalo código desde el 2015

Estamos en el año 2019, y te he regalado código fuente desde hace más de 3 años. Mi canal de youtube contiene varios programas básicos, que son ideales para aprender a programar, el único mal detalle de esto es que todos son en C# (C sharp), me cerré a ese mundo porque en la escuela programaba mucho en ese lenguaje.

Comencé a programar en 2012 en el lenguaje de programación C y subía vídeos a youtube en un canal cuyo nombre no puedo decir porque aún sigue en línea pero con otra clase de vídeos. Luego decidí crear otro totalmente dedicado a la programación y le llamé CódigoFuente.


Ahora que ya sabes esto, entra al canal, róbate el código y me dices qué opinas al respecto. Mentira, copiar código ajeno no significa robar, mucha gente necesita ese empujón que te da el saber que otra persona sí pudo hacer lo que tú no has podido. En mi caso detesto que la gente sepa más que yo, aunque de todos modos siempre surge el geniesillo que lo sabe todo y he aprendido a vivir con ello.

¡Saludos, sigue programando!

miércoles, 6 de febrero de 2019

Operaciones básicas

Hoy te voy a presentar las operaciones más básicas que las morritas a las que les gusta Harley Queen. Casi todos los lenguajes de programación usan estas operaciones universalmente, ya lo sabes, suma, resta, multiplicación, división y módulo.
Resultado de imagen para suma resta multiplicacion y division png

Pero, no sé qué es una operación...

No te preocupes, aquí te la voy a definir: Una operación es un proceso en donde se incrementa o se reduce un número. Bien, ahora que ya lo sabes, vamos a ponerlo en práctica, ¿qué debemos hacer para sumar, restar, multiplicar o dividir?
¡MUY SENCILLO!
En programación para realizar estas operaciones ¡NO TIENES QUE HACER NADA!, porque la computadora hace todo por ti, únicamente utilizando los símbolos correspondientes a cada operación:

Imagen relacionada

NOTA: El módulo es el RESIDUO de una división entera. Imagina que tienes que dividir 14 ÷ 5, el resultado de esta operación sería 2.8, PERO, en realidad las partes enteras solo son 2, 5 + 5 = 10, 14 - 10 = 4, teniendo como resultado del MÓDULO un 4, 14 % 5 = 4.


Todo el código que quieras, ¡GRATIS!, programación totalmente gratuita.
Dale clic en el logo del lenguaje de programación que sea de tu gusto y descarga el código.

DESCARGA:
https://drive.google.com/drive/folders/11c0k3eLMYTJTU_YJGgw1RMX_ZKDshz-H

Comenta, opina, exprésate y déjame saber si quieres algo específico, si algo está mal o si no te gusta algo, para hacer que te guste.



viernes, 1 de febrero de 2019

¿Hola mundo?

Esta es la primera entrada del blog, y por supuesto como pseudo-maestro de programación de todos los lectores, aquí te dejo una pequeña introducción de lo que es la programación.

Programación: Herramienta utilizada para decirle a la computadora qué hacer y cómo hacerlo.

Eso es lo que deben saber acerca de la programación, ¿quieres una definición más técnica?, no la necesitas, de lo contrario no estarías leyendo esto. Bueno, lo que sí necesitas para comenzar a escribir código fuente es lo siguiente:

Hello World text
  1. Conocimientos básicos de lógica. La lógica es fundamental pero muy probablemente todos desertarán a media carrera porque no se les da, sin embargo, al inicio un pizca es suficiente y si solo necesitas programar un poco para pasar una materia no tienes de qué preocuparte.
  2. Paciencia. Es tu mejor amiga durante el proceso de programar, porque encontrarás errores, muchos errores que te harán perder la cabeza, y si no lo resuelves en el momento tendrás muchas dudas existenciales acerca de si elegiste bien seguir estudiando o trabajar en la línea de producción de una empresa. No te preocupes de tener errores, hasta la imagen que aparece aquí tiene el error más cliché de los programadores, le falta el punto y coma (;).
  3. Nociones de programación. Tienes que tener al menos entendido qué es la programación y cómo llevarla a cabo.

Qué es la programación y cómo llevarla a cabo en un solo post:

Ya hemos definido programación allá arriba, pero ¿cómo la puedo hacer?, muy sencillo, solo necesitas un entorno de desarrollo (IDE), el cual puedes elegir dependiendo el lenguaje de programación que quieras utilizar. Podemos usar Borland C++, Dev-C++, Visual Studio, Xamarin Studio, Eclipse, Android Studio, etcétera, etcétera, pero si te sientes como todo un macho alfa puedes utilizar únicamente un editor de texto y guardar los archivos en sus respetivas extensiones (.cs, .cpp, .java, .php, .js, .pl); puedes utilizar Atom, Sublime Text, Notepad++, Visual Studio Code, hasta el mismísimo Bloc de Notas.

Bien, ya eres todo un experto leyendo cosas que quizá no te interesan, aquí viene lo bueno.

Todo el código que quieras, ¡GRATIS!, programación totalmente gratuita.
Dale clic en el logo del lenguaje de programación que sea de tu gusto y descarga el código.

DESCARGA:
https://drive.google.com/drive/folders/1N68_vqBjNuK5Ae-Pj4z8I-wLrm9QwTVJ

Comenta, opina, exprésate y déjame saber si quieres algo específico, si algo está mal o si no te gusta algo, para hacer que te guste.