Lenguaje de programación C

Código C formateado

Formatear código C online

Hacer que nuestro código se vea y lea bien usando una herramienta online

En cualquier lenguaje de programación que he probado siempre he querido que el código se vea bien. Algunos poderosos IDE’s traen el autoformato automático para determinados lenguajes; por ejemplo, VSCode formatea el código JavaScript.

Si queremos programar en otro lenguaje (como C) y embellecer nuestro código sin instalar nada, podemos hacerlo con una herramienta online.

Leer más »Formatear código C online

Contar frecuencia de palabras que el usuario introduce

Contar frecuencia de palabras en C

Realizar conteo de ocurrencias de palabras en una oración con C

Ya estamos aquí con otro tutorial de C. Lo que haremos ahora será analizar una cadena o string, contar las palabras que tiene (ignorando puntos, espacios y signos) y luego agruparlas para indicar la frecuencia con la que se repiten.

Este ejercicio puede resolverse de varias maneras pero yo he decidido hacerlo a través de una pila en donde almacenaremos structs.

Aquí puedes ver un ejemplo de una pila de enteros, la modificaremos un poco para que funcione con structs.

¿Por qué una pila en lugar de un arreglo? muy fácil, porque la pila puede tener un tamaño infinito.

Al final generaremos una tabla como la que se ve en la imagen (aunque la frecuencia es 1 en la mayoría de veces, la función trabaja bien; el problema fue que la cadena de prueba no tenía muchas palabras repetidas):

Contar frecuencia de palabras de una oración con C

Contar frecuencia de palabras de una oración con C

 

Leer más »Contar frecuencia de palabras en C

Separar cadena a partir de delimitadores en C con strtok

Resumen: en este post te mostraré a separar una cadena en subcadenas a partir de un delimitador, usando C y la función strtok; el equivalente a split en otros lenguajes.

Gracias a esto podríamos separar una cadena por comas, por puntos, por espacios, etcétera.

Dividir cadena en C por cada espacio, guión, coma, entre otros

En C no existe la función split como en otros lenguajes; en donde simplemente ponemos un delimitador y nos devuelve un arreglo; pero tenemos una función que incluso puede ser más poderosa.

Esta función de la que hablo (la cual se llama strtok) nos permitirá dividir una cadena usando un delimitador; por ejemplo una coma.

A partir de una cadena, podemos usar delimitadores para obtener tokens. Pongamos a la cadena “Hola, qué tal. Vamos a programar en C”; si la separamos usando el espacio, las comillas y los signos de puntuación obtendríamos las palabras limpias.

Por poner otro ejemplo, dada una lista delimitada por comas podemos obtener sus elementos. De “Juan,Pedro,María,Rosa” podemos obtener 4 nombres; usando la coma como delimitador.

Leer más »Separar cadena a partir de delimitadores en C con strtok

Pila dinámica en C

Implementación de una pila dinámica en C

Pila o stack dinámica en el lenguaje C

Una pila es una estructura de datos simple. Los datos se van apilando uno tras otro. Podemos abstraer cada elemento como un nodo que puede apuntar a otro nodo.

Su modo de acceso es LIFO: el último en entrar es el primero en salir. Las operaciones que tiene son 2: push y pop; la primera le pone un elemento y la segunda quita el último.

Pila dinámica en C

Pila dinámica en C

Veremos las operaciones básicas de una pila o stack en C; además de otras que hice para exponer aquí. Son:

  • Tamaño: devolver el tamaño de la pila
  • Apilar, también conocido como push: agregar un elemento
  • Desapilar, o la operación pop: quitar el último elemento; es decir, el elemento superior
  • Leer último: leer el elemento superior de la pila
  • Vacía: indica si la pila está vacía
  • Imprimir: recorrer la pila e imprimir sus valores

Por cierto, esta pila será dinámica: podremos poner elementos infinitos siempre y cuando nuestra memoria RAM alcance (cosa que es muy, muy difícil que ocurra)

Leer más »Implementación de una pila dinámica en C

Booleanos en C

Tipo de dato bool en C

En el inicio de los tiempos, el lenguaje de programación C no tenía el tipo de dato booleano. De hecho, ni siquiera hoy en día lo tiene como tal, es un simple macro.

Sin embargo, como programadores nos hemos dado a la tarea de implementarlos o de emular su uso. Veamos hoy cómo podemos implementar booleanos en C de dos maneras, analizando ventajas y desventajas de cada uso, así como exponiendo ejemplos.

Leer más »Booleanos en C

Búsqueda binaria en arreglos de cadena con C

Búsqueda binaria en arreglos de cadenas con C

Introducción

Esto es el complemento a la entrada publicada anteriormente sobre la búsqueda binaria en C sobre arreglos de números.

Ahí buscamos en arreglos de números, ahora nos toca buscar en arreglos de cadenas. Igualmente aplicaremos la forma recursiva y con el ciclo while.

Los arreglos de cadenas son una cosa un poco complicada al inicio, sobre todo en este lenguaje. Por eso te invito a que leas cómo trabajar con arreglos de cadenas en C.

Leer más »Búsqueda binaria en arreglos de cadenas con C

Trabajando con arreglos de cadenas en C

Introducción

El tipo de dato cadena, al menos en los estándares de C, no existe.

Una cadena es un arreglo de caracteres, o sea, del tipo char.

Por lo tanto, para declarar un arreglo de cadenas o strings en C necesitamos un arreglo de caracteres bidimensional, porque tendrá arreglos dentro de un arreglo.

Veamos hoy cómo declararlo, calcular su tamaño, recorrerlo y pasarlo como argumento a una función en C.

Leer más »Trabajando con arreglos de cadenas en C

Programa en C: búsqueda binaria recursiva y secuencial en arreglos

Introducción

Luego de algún tiempo he terminado de implementar la función recursiva y con ciclos para ejecutar el algoritmo de búsqueda binaria en un arreglo numérico en C.

Este algoritmo también es conocido como divide y vencerás; pues va dividiendo el arreglo en 2 hasta encontrar lo que buscamos, aunque como requisito dicho arreglo debe estar ordenado.

Leer más »Programa en C: búsqueda binaria recursiva y secuencial en arreglos

Algoritmo de búsqueda binaria en muchos lenguajes de programación

  • by

Introducción

Ya estamos aquí con una nueva serie de tutoriales. Esta vez el tema a tratar es la búsqueda binaria en un arreglo, tanto secuencial como recursiva o con recursión. También veremos cómo buscar sin importar si son números o cadenas.

Los enlaces a cada post están al final. Disfruta, comenta y comparte 🙂

Leer más »Algoritmo de búsqueda binaria en muchos lenguajes de programación

Palíndromo en C

Palíndromo en C usando recursividad y ciclos

Introducción

Ya comprobamos si una cadena es palíndroma o palíndromo en C#, un lenguaje de alto nivel en donde no nos importa mucho el manejo de la memoria, tenemos booleanos y funciones para cortar cadenas.

Ahora veamos lo mismo pero en el lenguaje de programación C, uno antiguo en donde ni siquiera existe un recolector de basura.

Palíndromo en C

Palíndromo en C

En resumen, veremos cómo:

  • Comprobar si una cadena es palíndroma usando recursividad
  • Usar el ciclo while para determinar si una cadena es palíndroma

Todo esto en el lenguaje ANSI C. Si no sabes lo que esto es, visita la Wikipedia.

Leer más »Palíndromo en C usando recursividad y ciclos

¿Qué es un desbordamiento en C?

Introducción

El lenguaje de programación C es un lenguaje muy bueno, pero antiguo. Es uno de los primeros lenguajes de programación de alto nivel que apareció en aquellos años.

Un desbordamiento en C es una cosa peligrosa que nos puede pasar si desarrollamos en este lenguaje.

Desbordamiento de variables en C

Desbordamiento de variables en C

Hoy veremos qué es un desbordamiento de una variable en C, cosa que es un poco peligrosa en apps que estén en producción.

Por cierto, esto se refiere a cuando una variable se desborda; pero puede que quieras ver un ejemplo de desbordamiento de búfer en C; algo que es un poco más peligroso.

Leer más »¿Qué es un desbordamiento en C?

Tomar captura o foto de nuestro código fuente con VSCode y Polacode

Introducción

Con Polacode podemos tomar una foto a nuestro código fuente. Su nombre viene de combinar “Polaroid” y “Code”, Polaroid creo que es una marca de cámaras o algo así.

El código fuente, cuando es escrito correctamente, es bello. Es como leer un poema, como ver una obra de arte que puede ser entendida por casi cualquier persona.

A veces es necesario tomar captura de nuestro código, ya sea para exponerlo, mandarlo o cosas así que no logramos copiando y pegando.

Además, al tomarle captura o convertirlo en imagen conserva los colores, las indentaciones y todo lo demás; en pocas palabras conserva su belleza.

Veamos entonces cómo tomar una foto de nuestro código, y no me refiero a una foto con una cámara real, ni tomando captura, sino con una extensión que tiene una de las cosas buenas que ha inventado Microsoft aparte de Office: Visual Studio Code.

Por cierto, anteriormente ya vimos cómo imprimir nuestro código fuente conservando colores, sintaxis y esas cosas.

Leer más »Tomar captura o foto de nuestro código fuente con VSCode y Polacode

Decimal a binario, octal y hexadecimal en C con itoa y ltoa

Introducción

Ya vimos cómo transformar un decimal a binario en C a mano, es decir, con un ejercicio hecho por nosotros, ignorando el rendimiento o velocidad.

Como lo dije en ese post, lo hicimos así porque era un simple ejercicio. Veamos ahora cómo podemos hacerlo de la forma correcta y repasemos las funciones ltoa e itoa.

Leer más »Decimal a binario, octal y hexadecimal en C con itoa y ltoa