Programación en C/Fundamentos de programación

De Wikilibros, la colección de libros de texto de contenido libre.
← Historia de C Fundamentos de programación Primer programa en C →



En este capítulo veremos un resumido listado de conceptos básicos, esta información puede encontrarse en forma más elaborada en el WikiLibro Fundamentos de programación.

Definiciones[editar]

  • Se denomina algoritmo a una secuencia de instrucciones que permiten obtener un resultado en particular. No necesariamente son programas de computadora, una receta de cocina, o las instrucciones para cambiar un neumático son ejemplos de algoritmos de la vida real.
  • Las computadoras, son maquinas sin inteligencia propia, cuya única finalidad es interpretar el código que se les provee.
  • Los lenguajes de programación son el medio de comunicación entre el programador y una computadora. El programador escribe en algún lenguaje de programación y utiliza las herramientas provistas por ese lenguaje para transformarlo en lenguaje de máquina.
  • Finalmente, denominamos programa a una secuencia de órdenes a ser ejecutadas por una computadora. Un programa debe estar escrito en algún lenguaje de programación, y puede incluir uno o más algoritmos.

Tipos de lenguajes[editar]

Existe una gran cantidad de lenguajes de programación, que están pensados para distintas finalidades, siguen distintos paradigmas, y de una u otra forma se diferencian de los demás.

Esquemas de programación[editar]

El esquema de programación llamado Programación Imperativa, consiste en escribir una secuencia de instrucciones una detrás de la otra, que se ejecutarán en orden. Algunas de esas instrucciones pueden hacer que la máquina pase a una instrucción que no sea la siguiente, tal vez porque se cumpla una condición que hayamos establecido.

En los últimos años ha tomado fuerza otro paradigma de computación, llamado Programación Orientada a Objetos , en el cual se intentan modelar los sistemas creados como extensiones de la realidad mediante la definición de "objetos" que modelan entidades de la vida real y que interactúan entre sí mediante "mensajes" llamadas métodos.

El lenguaje C es un lenguaje imperativo, no orientado a objetos.

Alto o bajo nivel[editar]

Por otro lado, los lenguajes de programación se clasifican en niveles. Un lenguaje es de más bajo nivel cuanto más cercano esté al código de máquina, y un lenguaje que es de más alto nivel cuanto más lejano esté de la máquina y más cercano al lenguaje humano.

C es un lenguaje de alto nivel aunque tiene muchas características de lenguaje de bajo nivel (como el uso que permite hacer de la memoria). Estas características hacen que C sea un lenguaje muy potente, ya que permite optimizar al máximo los recursos de la máquina. Por ende, esto también hace que la dificultad y que los errores que se puedan cometer programando aumenten. Así que a C se le considera de nivel medio.

Lenguajes de más alto nivel que C son aquellos en los que el programador no necesita encargarse de manipular la memoria, como Java, C#, Python, Ruby, entre otros.

Compilados o interpretados[editar]

Otra forma de clasificar a los lenguajes de programación que es según la forma en que se ejecutan sus órdenes. Existen los lenguajes que son interpretados, cuyas órdenes pasan a través de un intérprete que se encarga de ejecutarlas (a partir del código fuente) en el mismo momento en que están siendo leídas. Algunos de los lenguajes interpretados son Python, Perl o Tcl, entre muchos otros.

La contraparte de los lenguajes interpretados son los lenguajes compilados (como el mismo C) que se diferencian en que las órdenes son transformadas a lenguaje de máquina que se almacena en un archivo ejecutable. Ese archivo puede ejecutarse luego, sin recurrir al compilador.

Los lenguajes compilados tienen la ventaja de la velocidad y la eficiencia, pero los interpretados tienen la ventaja de que, generalmente, son muy portables y de más alto nivel.

Estructura de la memoria[editar]

Parte de esta potencia de C viene de que permite acceder con mucha libertad a la memoria de la máquina. Para entender un poco cómo es posible, debemos entender cómo se guardan los datos en la memoria.

Imaginemos que la memoria tiene un montón de casillas, una enorme fila de casillas, cada una de las cuales contiene un dígito binario (bit):

0101001010100001010101001010000100111010110010010101001011010110001101010110101010110111...

Es exactamente así, pero es más cómodo recordar que esos bits se encuentran agrupados de ocho en ocho, formando octetos (bytes):

01010010 10100001 01010100 10100001 00111010 11001001 01010010 11010110 00110101 01101010 10110111 ...

Cada octeto puede contener combinaciones distintas de ceros y unos, es decir, cualquier número entre 0 y 255:

82 161 84 161 58 201 82 214 181 106 183 ...

También podemos representar estos números en base hexadecimal:

0x52 0xA1 0x54 0xA1 0x3A 0xC9 0x52 0xD6 0x35 0x6A 0xB7 ...

O considerarlos caracteres, mediante alguna codificación:

R ¡ T ¡ : É R Ö 5 j · ...

Este es el tipo de dato más elemental que nos podemos encontrar en C: el caracter. Un caracter ocupa exactamente un byte (8 bits) de memoria, y puede contener un número entre 0 y 255, o entre -128 y 127, dependiendo si queremos considerarlo como sin signo o con él.


← Historia de C Fundamentos de programación Primer programa en C →