Descargar como docx, pdf o txt
Descargar como docx, pdf o txt
Está en la página 1de 10

Lenguaje C

C es un lenguaje de programación de propósito general que ofrece


economía sintáctica, control de flujo y estructuras sencillas y un buen conjunto de
operadores. No es un lenguaje de muy alto nivel y más bien un lenguaje pequeño,
sencillo y no está especializado en ningún tipo de aplicación. Esto lo hace un
lenguaje potente, con un campo de aplicación ilimitado y sobre todo, se aprende
rápidamente. En poco tiempo, un programador puede utilizar la totalidad del
lenguaje.

Este lenguaje ha sido estrechamente ligado al sistema operativo UNIX,


puesto que fueron desarrollados conjuntamente. Sin embargo, este lenguaje no
está ligado a ningún sistema operativo ni a ninguna máquina concreta. Se le suele
llamar lenguaje de programación de sistemas debido a su utilidad para escribir
compiladores y sistemas operativos, aunque de igual forma se puede desarrollar
cualquier tipo de aplicación.

C trabaja con tipos de datos que son directamente tratables por el hardware
de la mayoría de computadoras actuales, como son los caracteres, números y
direcciones. Estos tipos de datos pueden ser manipulados por las operaciones
aritméticas que proporcionan las computadoras. No proporciona mecanismos para
tratar tipos de datos que no sean los básicos, debiendo ser el programador el que
los desarrolle. Esto permite que el código generado sea muy eficiente y de ahí el
éxito que ha tenido como lenguaje de desarrollo de sistemas. No proporciona otros
mecanismos de almacenamiento de datos que no sea el estático y no proporciona
mecanismos de entrada ni salida. Ello permite que el lenguaje sea reducido y los
compiladores de fácil implementación en distintos sistemas. Por contra, estas
carencias se compensan mediante la inclusión de funciones de librería para
realizar todas estas tareas, que normalmente dependen del sistema operativo.
Características:

Propiedades:

 Un núcleo del lenguaje simple, con funcionalidades añadidas importantes,


como funciones matemáticas y de manejo de archivos, proporcionadas por
bibliotecas.
 Es un lenguaje muy flexible que permite programar con múltiples estilos.
Uno de los más empleados es el estructurado "no llevado al extremo"
(permitiendo ciertas licencias de ruptura).

 Un sistema de tipos que impide operaciones sin sentido.

 Usa un lenguaje de preprocesado, el preprocesador de C, para tareas como


definir macros e incluir múltiples archivos de código fuente.
 Acceso a memoria de bajo nivel mediante el uso de punteros.
 Interrupciones al procesador con uniones.
 Un conjunto reducido de palabras clave.

 Por defecto, el paso de parámetros a una función se realiza por valor. El


paso por referencia se consigue pasando explícitamente a las funciones las
direcciones de memoria de dichos parámetros.

 Punteros a funciones y variables estáticas, que permiten una forma


rudimentaria de encapsulado y polimorfismo.
 Tipos de datos agregados (struct) que permiten que datos relacionados
(como un empleado, que tiene un id, un nombre y un salario) se combinen y
se manipulen como un todo (en una única variable "empleado").
Carencias

 Recolección de basura nativa, sin embargo se encuentran a tal efecto


bibliotecas como la "libgc" desarrollada por Sun Microsystems, o el
Recolector de basura de Boehm.
 Soporte para programación orientada a objetos, aunque la implementación
original de C++ fue un preprocesador que traducía código fuente de C++ a
C.
 Funciones anidadas, aunque GCC tiene esta característica como extensión.
 Soporte nativo para programación multihilo.

Aunque la lista de las características útiles de las que carece C es larga, este
factor ha sido importante para su aceptación, porque escribir rápidamente nuevos
compiladores para nuevas plataformas, mantiene lo que realmente hace el
programa bajo el control directo del programador, y permite implementar la
solución más natural para cada plataforma. Ésta es la causa de que a menudo C
sea más eficiente que otros lenguajes. Típicamente, sólo la programación
cuidadosa en lenguaje ensamblador produce un código más rápido, pues da
control total sobre la máquina, aunque los avances en los compiladores de C y la
complejidad creciente de los microprocesadores modernos han reducido
gradualmente esta diferencia.

Ventajas

 Lenguaje muy eficiente puesto que es posible utilizar sus características de


bajo nivel para realizar implementaciones óptimas.
 A pesar de su bajo nivel es el lenguaje más portado en existencia, habiendo
compiladores para casi todos los sistemas conocidos.
 Proporciona facilidades para realizar programas modulares y/o utilizar
código o bibliotecas existentes.
Inconvenientes:

El mayor problema que presenta el lenguaje C frente a los lenguajes de tipo


de dato dinámico es la gran diferencia en velocidad de desarrollo: es más lento
programar en C, sobre todo para el principiante. La razón estriba en que el
compilador de C se limita a traducir código sin apenas añadir nada. La gestión de
la memoria es un ejemplo clásico: en C el programador ha de reservar y liberar la
memoria explícitamente. En otros lenguajes (como BASIC, Matlab o C#) la
memoria es gestionada de forma transparente para el programador. Esto alivia la
carga de trabajo humano y en muchas ocasiones previene errores, aunque
también supone mayor carga de trabajo para el procesador.

El mantenimiento en algunos casos puede ser más difícil y costoso que con
ciertos lenguajes de más alto nivel. El código en C se presta a sentencias cortas y
enrevesadas de difícil interpretación.

Cabe destacar el contexto y época en la que fue desarrollado C. En


aquellos tiempos existían muy pocos programadores, los cuales, a su vez, eran
prácticamente todos expertos en el área. De esta manera, se asumía que los
programadores eran conscientes de sus trabajos y capaces de manejar
perfectamente el lenguaje. Por esta razón es muy importante que los recién
iniciados adopten buenas prácticas a la hora de escribir en C y manejar la
memoria, como por ejemplo un uso intensivo de indentación y conocer a fondo
todo lo que implica el manejo de punteros y direcciones de memoria.

Aplicabilidad:

Hecho principalmente para la fluidez de programación en sistemas UNIX.


Se usa también para el desarrollo de otros sistemas operativos como Windows o
GNU/Linux. Igualmente para aplicaciones de escritorio como GIMP, cuyo principal
lenguaje de programación es C.
De la misma forma, es muy usado en aplicaciones científicas (para
experimentos informáticos, físicos, químicos, matemáticos, entre otros, parte de
ellos conocidos como modelos y simuladores), industriales (industria robótica,
cibernética, sistemas de información y base de datos para la industria petrolera y
petroquímica. Predominan también todo lo que se refiere a simulación de
máquinas de manufactura), simulaciones de vuelo (es la más delicada, ya que se
tienen que usar demasiados recursos tanto de hardware como de software para
desarrollar aplicaciones que permitan simular el vuelo real de una aeronave. Se
aplica por tanto, en diversas áreas desconocidas por gran parte de los usuarios
noveles.

Los ordenadores de finales de los 90 son varios órdenes de magnitud más


potentes que las máquinas en que C se desarrolló originalmente. Programas
escritos en lenguajes de tipo dinámico y fácil codificación (Ruby, Python, Perl...)
que antaño hubieran resultado demasiado lentos, son lo bastante rápidos como
para desplazar en uso a C. Aun así, se puede seguir encontrando código C en
grandes desarrollos de animaciones, modelados y escenas en 3D en películas y
otras aplicaciones multimedia.

Actualmente, los grandes proyectos de software se dividen en partes,


dentro de un equipo de desarrollo. Aquellas partes que son más "burocráticas" o
"de gestión" con los recursos del sistema, se suelen realizar en lenguajes de tipo
dinámico o de guion (script), mientras que aquellas partes "críticas", por su
necesidad de rapidez de ejecución, se realizan en un lenguaje de tipo compilado,
como C o C++. Si, después de hacer la división, las partes críticas no superan un
cierto porcentaje del total (aproximadamente el 10%) entonces todo el desarrollo
se realiza con lenguajes dinámicos. Si la parte crítica no llega a cumplir las
expectativas del proyecto, se comparan las alternativas de una inversión en nuevo
hardware frente a invertir en el coste de un programador para que reescriba dicha
parte crítica.
Estructura básica de un programa en C

La mejor forma de aprender un lenguaje es programando con él. El


programa más sencillo que se puede escribir en C es el siguiente:

main( )

Como nos podemos imaginar, este programa no hace nada, pero contiene
la parte más importante de cualquier programa C y además, es el más pequeño
que se puede escribir y que se compile correctamente. En el se define la función
main, que es la que ejecuta el sistema operativo al llamar a un programa C. El
nombre de una función C siempre va seguida de paréntesis, tanto si tiene
argumentos como si no. La definición de la función está formada por un bloque de
sentencias, que está encerrado entre llaves {}.

Un programa algo más complicado es el siguiente:

#include <stdio.h>

main( )

printf("Hola amigos!\n");

Con el visualizamos el mensaje Hola amigos! en el terminal. En la primera


línea indica que se tengan en cuenta las funciones y tipos definidos en la librería
stdio (standard input/output). Estas definiciones se encuentran en el fichero header
stdio.h. Ahora, en la función main se incluye una única sentencia que llama a la
función printf. Esta toma como argumento una cadena de caracteres, que se
imprimen van encerradas entre dobles comillas " ". El símbolo \n indica un cambio
de línea.

Un programa C puede estar formado por diferentes módulos o fuentes. Es


conveniente mantener las fuentes de un tamaño no muy grande, para que la
compilación sea rápida. También, al dividirse un programa en partes, puede
facilitar la legibilidad del programa y su estructuración. Las diferentes fuentes son
compiladas de forma separada, únicamente las fuentes que han sido modificados
desde la última compilación, y después combinados con las librerías necesarias
para formar el programa en su versión ejecutable.

Controlador Lógico Programado

Un controlador lógico programable, más conocido por sus siglas en inglés


PLC (programmable logic controller), es una computadora utilizada en la ingeniería
automática o automatización industrial, para automatizar procesos
electromecánicos, tales como el control de la maquinaria de la fábrica en líneas de
montaje o atracciones mecánicas.

Los PLC son utilizados en muchas industrias y máquinas. A diferencia de


las computadoras de propósito general, el PLC está diseñado para múltiples
señales de entrada y de salida, rangos de temperatura ampliados, inmunidad al
ruido eléctrico y resistencia a la vibración y al impacto. Los programas para el
control de funcionamiento de la máquina se suelen almacenar en baterías copia
de seguridad o en memorias no volátiles. Un PLC es un ejemplo de un sistema de
tiempo real «duro», donde los resultados de salida deben ser producidos en
respuesta a las condiciones de entrada dentro de un tiempo limitado, de lo
contrario no producirá el resultado deseado.

Los primeros PLC fueron diseñados para reemplazar los sistemas de relés
lógicos. Estos PLC fueron programados en lenguaje Ladder, que se parece mucho
a un diagrama esquemático de la lógica de relés. Este sistema fue elegido para
reducir las demandas de formación de los técnicos existentes. Otros autómatas
primarios utilizaron un formulario de listas de instrucciones de programación.
Los PLCs modernos pueden ser programados de diversas maneras, desde
la lógica de escalera de relés, a los lenguajes de programación tales como
dialectos especialmente adaptados de BASIC y C. Otro método es la lógica de
estado, un lenguaje de programación de alto nivel diseñado para programar PLC
basados en diagramas de estado.

Función

La función básica y primordial del PLC ha evolucionado con los años para
incluir el control del relé secuencial, control de movimiento, control de procesos,
sistemas de control distribuido y comunicación por red. Las capacidades de
manipulación, almacenamiento, potencia de procesamiento y de comunicación de
algunos PLCs modernos son aproximadamente equivalentes a las computadoras
de escritorio. Un enlace-PLC programado combinado con hardware de E/S
remoto, permite utilizar un ordenador de sobremesa de uso general para suplantar
algunos PLC en algunas aplicaciones. En cuanto a la viabilidad de estos
controladores de ordenadores de sobremesa basados en lógica, es importante
tener en cuenta que no se han aceptado generalmente en la industria pesada
debido a que los ordenadores de sobremesa ejecutan sistemas operativos menos
estables que los PLCs, y porque el hardware del ordenador de escritorio está
típicamente no diseñado a los mismos niveles de tolerancia a la temperatura,
humedad, vibraciones, y la longevidad como los procesadores utilizados en los
PLC. Además de las limitaciones de hardware de lógica basada en escritorio;
sistemas operativos tales como Windows no se prestan a la ejecución de la lógica
determinista, con el resultado de que la lógica no siempre puede responder a los
cambios en el estado de la lógica o de los estado de entrada con la consistencia
extrema en el tiempo como se espera de los PLCs. Sin embargo, este tipo de
aplicaciones de escritorio lógicos encuentran uso en situaciones menos críticas,
como la automatización de laboratorio y su uso en instalaciones pequeñas en las
que la aplicación es menos exigente y crítica, ya que por lo general son mucho
menos costosos que los PLCs.

Relé lógico programable (PLR)


En los últimos años, unos pequeños productos llamados relés lógicos
programables (PLR), y también por otros nombres similares, se han vuelto más
comunes y aceptados. Estos son muy similares a los PLC, y se utilizan en la
industria ligera, donde sólo unos pocos puntos de entrada/salida (es decir, unas
pocas señales que llegan desde el mundo real y algunas que salen) están
involucrados, y el bajo costo es deseado. Estos pequeños dispositivos se hacen
típicamente en un tamaño físico y forma común por varios fabricantes, y con la
marca de los fabricantes más grandes de PLCs para completar su gama baja de
producto final. La mayoría de ellos tienen entre 8 y 12 entradas digitales, 4 y 8
salidas discretas, y hasta 2 entradas analógicas. El tamaño es por lo general
alrededor de 10 cm de ancho y 7,5 cm de alto y 7,5 cm de profundidad. La
mayoría de estos dispositivos incluyen una pantalla LCD de tamaño pequeño para
la visualización simplificada lógica de escalera (sólo una porción muy pequeña del
programa está visible en un momento dado) y el estado de los puntos de E/S.
Normalmente estas pantallas están acompañados por una botonera basculante de
cuatro posiciones más cuatro pulsadores más separados, y se usan para navegar
y editar la lógica. La mayoría tienen un pequeño conector para la conexión a
través de RS-232 o RS-485 a un ordenador personal para que los programadores
pueden utilizar simples aplicaciones de Windows para la programación en lugar de
verse obligados a utilizar la pantalla LCD y el conjunto de pequeños pulsadores
para este fin. A diferencia de los PLCs regulares que son generalmente modulares
y ampliables en gran medida, los PLRs son por lo general no modulares o
expansibles, pero su precio puede ser dos órdenes de magnitud menos de un PLC
y todavía ofrecen un diseño robusto y de ejecución determinista de la lógica. En
los últimos años se está incluso incorporando en estos pequeños dispositivos, una
conexión de red Ethernet con RJ45 que permite configurar y monitorizar el equipo
de forma remota.

Ventajas

Dentro de las ventajas que estos equipos poseen se encuentra que, gracias
a ellos, es posible ahorrar tiempo en la elaboración de proyectos, pudiendo
realizar modificaciones sin costos adicionales. Por otra parte, son de tamaño
reducido y mantenimiento de bajo costo, además permiten ahorrar dinero en mano
de obra y la posibilidad de controlar más de una máquina con el mismo equipo.
Sin embargo, y como sucede en todos los casos, los controladores lógicos
programables, o PLC’s, presentan ciertas desventajas como es la necesidad de
contar con técnicos calificados y adiestrados específicamente para ocuparse de su
buen funcionamiento.

También podría gustarte