El documento describe las características del lenguaje de programación C. C es un lenguaje de propósito general, de bajo nivel y alto rendimiento. Fue desarrollado en los años 70 y se ha convertido en uno de los lenguajes más utilizados para desarrollo de software. El documento discute las ventajas de C como su portabilidad y eficiencia, así como algunas desventajas como la necesidad de gestionar manualmente la memoria.
1. Universidad Fermín Toro
Facultad de Ingeniería
Estudiante:
Javier A. Paris R.
C.I. 20.539.759
Materia:
Computación para
Ingenieros
2. 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.
Lenguaje C
La base del C proviene del BCPL, escrito por Martin Richards, y del B
escrito por Ken Thompson en 1970 para el primer sistema UNIX en un DEC
PDP-7. Estos son lenguajes sin tipos, al contrario que el C que proporciona
varios tipos de datos. Los tipos que ofrece son caracteres, números enteros
y en coma flotante, de varios tamaños. Además se pueden crear tipos
derivados mediante la utilización de punteros, vectores, registros y uniones.
El primer compilador de C fue escrito por Dennis Ritchie para un DEC PDP-
11 y escribió el propio sistema operativo en C.
3. 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.
4. Características
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.
5. Funciones
Un programa C está formado por un conjunto de funciones que al menos contiene la
función main. Una función se declara con el nombre de la función precedido del tipo de
valor que retorna y una lista de argumentos encerrados entre paréntesis. El cuerpo de
la función está formado por un conjunto de declaraciones y de sentencias
comprendidas entre llaves. Veamos un ejemplo de utilización de funciones:
#include <stdio.h>
#define VALOR 5
#define FACT 120
int fact_i ( int v )
{
int r = 1, i = 0;
while ( i <= v )
{
r = r * i;
i = i + 1;
}
return r;
}
int fact_r ( int v )
{
if ( v == 0 ) return 1;
else return v * fact_r(v-1);
}
main() {
int r, valor = VALOR;
if ( (r = fact_i(valor)) != fact_r(valor) )
printf("Codificación errónea!!.n");
else if ( r == FACT ) printf("Codificación
correcta.n");
else printf("Algo falla!!.n");
}
6. 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.
7. Desventajas
• 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 evita 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[cita requerida].
• 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
8. Utilidad
El lenguaje de programación C está caracterizado por ser de uso
general, con una sintaxis sumamente compacta y de alta portabilidad,
de fácil aprendizaje.
Es común leer que se lo caracteriza como un lenguaje de “bajo nivel”.
No debe confundirse el término “bajo” con “poco”, ya que el significado
del mismo es en realidad “profundo”, en el sentido que C maneja los
elementos básicos presentes en todas las computadoras: caracteres,
números y direcciones.
Esta particularidad, junto con el hecho de no poseer operaciones de
entrada-salida, manejo de arreglo de caracteres, de asignación de
memoria, etc , puede al principio parecer un grave defecto; sin
embargo el hecho de que estas operaciones se realicen por medio de
llamadas a Funciones contenidas en Librerías externas al lenguaje en
sí, es el que confiere al mismo su alto grado de portabilidad,
independizándolo del “Hardware” sobre el cual corren los programas,
como se irá viendo a lo largo del aprendizaje de este novedoso
lenguaje de programación.
La descripción del lenguaje se realiza siguiendo las normas del ANSI
C, por lo tanto, todo lo expresado será utilizable con cualquier
compilador que se adopte; sin embargo en algunos casos particulares
se utilizaron funciones Compilador ó Sistema Operativo-dependientes,
9. Ejemplos
/* Ejemplo 1. Programa DOCENA.C */
#include <stdio.h>
main ()
{
int docena;
docena = 12;
printf ("Una docena son %d unidadesn", docena);
}
Este programa hace aparecer en pantalla la frase "Una docena son 12
unidades".