Saltar al contenido

C

El lenguaje de programación C se creó para utilizarse en sistemas Unix (luego evolucionó a lo que conocemos como Linux, así que en este sistema operativo también se pueden crear muchas aplicación con este lenguaje de programación).

Si hacemos un repaso a la historia, los creadores fueron Dennis Ritchie y Brian Kernighan, por la mitad de la década de los 70.

Podemos decir que fue de los primeros lenguajes de programación de alto nivel que ganaron en popularidad.

Lo llamaron C porque venía de otro lenguaje llamado B, y el lenguaje de programación B venía del BCPL.

Si buscas un curso para aprender a programar en C y no puedes ahora leerte todo este pedazo de post, te recomiendo que hagas ⇒ click en este enlace ⇐ para ir directamente al mejor curso que hay ahora en UDEMY.
¡Y con un MEGA-DESCUENTO! solo por 9,99 € 😲😲😲.

Características del lenguaje c

C es famoso hoy en día porque aunque es de los lenguajes de alto nivel que más se aproxima al lenguaje máquina por la sintaxis que tiene, por eso también puedes ver que es un lenguaje de programación de medio nivel (aunque esta clasificación no existe, están los de alto y bajo nivel).

Al tener esta característica, su código es mucho más eficaz porque se aproxima al lenguaje máquina (aprovecha mejor el hardware), así que se suele programar para hacer rutinas del sistema operativo (aunque también se podría hacer algún programa).

Algunos ejemplos de rutinas sería:

  • para crear intérpretes.
  • para el desarrollo de un compilador.
  • para hacer editores de texto nativos del sistema operativo (como vi o GNU nano).

El lenguaje c no es un lenguaje de programación orientado a objetos, aunque se ha utilizado de base para lenguajes como C++ o Java.

Es un lenguaje estructurado, como BASIC o Pascal, así que tiene:

  • tipos de datos básicos.
  • funciona con rutinas o funciones.
  • se pueden agrupar las funciones en módulos.

Los tipos son básicamente bits, números, carácteres y direcciones de memoria.

Acepta varios tamaños de bits de números, y puedes declarar una variable como un simple carácter, pero si quieres tratar una cadena (tipo string), debes usar los punteros o direcciones de memoria para tener una lista de caracteres.

Al ser un lenguaje estructurado, tiene las rutinas clásicas condicionales y de bucles, pero podemos ordenarlas en diferentes funciones para llamarlas entre ellas, pero no es posible hacer nuevas funciones dentro de otras funciones.

El código fuente se puede clasificar en varios ficheros, siendo cada uno de estos ficheros un módulo o librería que se puede re aprovechar. De esta manera hay librerías de sistema muy útiles para usar.

 

Lenguaje de programación c: ventajas y desventajas

Ahora vamos a nombre una serie de ventajas y desventajas de este lenguaje. Empezaremos por las ventajas:

  1. Acceso y uso de punteros. Aunque codificar con punteros (una dirección de memoria) no es lo más agradable del mundo, optimiza al máximo la memoria al acceder a ella a un nivel muy bajo.
  2. Lenguaje eficiente. Es el lenguaje que mejor aprovecha la CPU de la máquina, sin tener las desventajas de los lenguajes ensambladores.
  3. Tipos de datos básicos. Tiene muy pocos, pero suficiente para no cometer errores de programación.
  4. Palabras reservadas limitadas. Hay muy pocas palabras clave, lo que ayuda a un aprendizaje más rápido.
  5. Gran biblioteca de sistema. Cualquier compilador de c viene con funciones matemáticas y bibliotecas de programación del sistema (como la famosa línea #include <stdio.h>, usaba para imprimir datos en pantalla) para empezar a programar con lo más básico (crear una función main y empezar a probar).
  6. Permite estructuras de datos. Gracias a la sentencia struct, se puede dar forma a una variable con registros agregados.
    Por ejemplo, una variable llamada fecha y que sea una estructura de tres registros de tipo int (día, mes y año).

Ahora nombraremos algunas desventajas de este lenguaje:

  1. No tiene Garbage Collector. En lenguajes como Java o el .NET Framework, la liberación de la memoria es automática, haciendo que de vez en cuando elimine lo que no se está usando. En c el control de la memoria lo tienes tú, así que tienes que tener claro cuando liberarla.
  2. No tiene soporte para POO (programación orientada a objetos). Pascal evolucionó y en la última versión permitía el uso de objetos, inclusó evolucionó a Delphi como parte gráfica (al igual que Visual Basic). La evolución de c fue creando otros lenguajes de programación como c++.
  3. No permite multihilo. Curiosamente se utiliza para rutinas ligadas a Unix, pero de serie no permite multihilo para aprovechar al máximo el procesador.
  4. Curva de aprendizaje alta. Aunque es muy eficiente programar en c, no es un lenguaje muy fácil para empezar a aprender comparado con otros como Python o incluso Java.

Palabras reservadas en c

Como hemos dicho, el lenguaje c tiene muy pocas palabras reservadas, concretamente 32.

Así que vamos a agruparlas en diferentes categorías (para verlas todas), y así tienes una guía para escribir código y crear tu propio programa.

  • Tipos de datos. Sirve para declarar variables, pero también para forzarlas a que sean de un tipo concreto.
    • Numéricos:
      •  int
      • float
      • double
    • carácter
      • char
    • sin tipo
      • void
  • Modificadores de tipos. Se aplican a los tipos de datos que hemos comentado anteriormente, principalmente para definir su signo o tamaño:
    • signed
    • unsigned
    • long
    • short
  • Modificadores de acceso. Son variables declaradas pero con alguna limitación.
    • const
    • volatile
  • Especificadores de almacenamiento. Seguimos con las variables, hemos declarado el tipo de dato, hemos podido modificar el tipo y el acceso.
    Ahora vamos a especificar el almacenamiento de la variable. Al no ser un lenguaje orientado a objetos, utilizaríamos estas palabras para saber si la variable es local, externa, estática o de registro.

    • auto
    • extern
    • static
    • register
  • Operadores. En c tenemos los operadores básicos como +, -, *, /, %, los de incremento como ++ o –, y los relacionales como !, >, == &&, ||, pero hay un operador especial que devuelve el tamaño de la variable (o el tipo de datos).
    • sizeof
  • Sentencias de control y bucles. Dejamos por fin las variables, y veamos las posibles sentencias con las que podemos escribir en c:
    • if
    • else
    • switch
    • case
    • for
    • while
    • do
    • break
    • continue
    • default
  • Funciones. Las funciones c son muy parecidas a otros lenguajes. El retorno de una función se define como los tipos de datos comentados, siendo void cuando no retorna nada. Pero usamos palabras reservadas para la gestión de estas funciones:
    • return
  • Estructuras, uniones y enumeraciones. De las estructuras ya hemos hablado, para agrupar varios registros en una variable, pero de las uniones no. Una unión es muy parecida a la estructura, pero puedes declarar registros con tipos de datos diferentes, como puede ser un int o un char.
    Una enumeración es agrupar en una variable una lista de constantes enteras, pero asociadas a nombres concretos (por ejemplo, los días de la semana).

    • struct
    • union
    • enum
  • Nuevos tipos de datos. Existe una palabra para poder crearse nuevos tipos de datos, aunque lo habitual es usarse con estructuras
    • typedef
  • Ir a una etiqueta. Aunque no es la mejor manera de programar, en c podemos crear etiquetas para poder ir directamente:
    • goto

Codelite: un programa completo para escribir y compilar en c

¿Cómo puedo programar en c? Para hacerlo necesitarás un IDE. La función del IDE (Entorno de desarrollo integrado) es que un programador pueda hacer código fuente, y proporcionar un compilador para probar y ejecutar y crear un programa en ese lenguaje escrito.

Por ejemplo, un programa o IDE muy famoso para escribir en lenguaje c era Turbo C, de Borland. Muchas distribuciones de Linux viene con un compilador por defecto, que es gcc (sino se puede descargar e instalar).

Ahora mismo, en los sistemas operativos actuales es más complicado, poder usar compiladores antiguos, así que una buena alternativa es el programa Codelite.

En su página podemos encontrar mucha información para los programadores, ya que es un proyecto opensource, dónde podremos descargar desde Github.

Curso de programación en c

¿Qué opciones tienes para aprender c? A la hora de empezar, es posible que quieras buscar algún manual básico de programación en c, para habituarte a la sintaxis.

Es complicado encontrar algún tutorial en español, así que te paso un sitio dónde podrás encontrar multitud de manuales de este lenguaje para que valores cuál es el mejor

Libros gratis de programación en c

También he encontrado otro ejemplo de una página que ofrece un curso genial

Curso de c online

Y en la página de AulaFacil tienes otro ejemplo de curso online para hacer un programa en c.

Curso de c en AulaFacil

Si lo tuyo no es la lectura, quizás deberías de buscar un curso con vídeos como en la plataforma Udemy. No existen muchos cursos de programación en c (y más díficil en castellano), ya que el potencial máximo de éste es con sistemas operativos basados en Linux.

Así que podrás encontrar cosas muy concretas, como hacer scripts en Unix, programar para una RaspBerry Pi o para microcontroladores. El mejor curso que he encontrado es en inglés:

Curso de programación en c en Udemy (inglés) → 9,99 €

está basado en un libro The Little book of C, así que puedes seguir el curso y usar el libro como guía (las páginas de un capítulo corresponden a una lección), al igual que cada ejemplo que te muestran.

Resumen final

Hemos hecho un gran resumen de uno de los lenguajes de programación más populares que existieron en los años 80, antes que la programación de objetos empezara a ser popular.

Hemos visto sus ventajas e inconvenientes, hemos repasado las palabras claves y he ofrecido algunos manuales y cursos para aprender bien las bases de este lenguaje de programación.

Espero que con esta cantidad de ejemplos haya podido resolver toda las funciones y preguntas que te puedas realizar sobre este lenguaje de programación.