- Introducción
- Tipos de lenguajes de programación
- Características
- Bibliotecas y descripciones de uso
- Elementos de un programa en C
- Expresiones y operadores
- Conclusión
- Bibliografía
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.
Desde su creación, surgieron distintas versiones de C, que incluían unas u otras características, palabras reservadas, etc. Este hecho provoco la necesidad de unificar el lenguaje C, y es por ello que surgió un standard de C, llamado ANSI-C, que declara una serie de características, etc., que debe cumplir todo lenguaje C. Por ello, y dado que todo programa que se desarrolle siguiendo el standard ANSI de C será fácilmente portable de un modelo de ordenador a otro modelo de ordenador, y de igual forma de un modelo de compilador a otro, en estos apuntes explicaremos un C basado en el standard ANSI-C. El lenguaje C posee un número reducido de palabras reservadas (tan solo 32)
Tipos de lenguajes de programación
Lenguaje en C
Es un lenguaje de programación originalmente desarrollado por Dennis M. Ritchie entre 1969 y 1972 en los Laboratorios Bell, como evolución del anterior lenguaje B, a su vez basado en BCPL.
Se trata de un lenguaje de tipos de datos estáticos, débilmente tipificado, de medio nivel pero con muchas características de bajo nivel. Dispone de las estructuras típicas de los lenguajes de alto nivel pero, a su vez, dispone de
construcciones del lenguaje que permiten un control a muy bajo nivel. Los compiladores suelen ofrecer extensiones al lenguaje que posibilitan mezclar código en ensamblador con código C o acceder directamente
a memoria o dispositivos periféricos.
DEFINICION 1 ., E un lenguaje de alto nivel (puesto que es estructurado y posee sentencias y funciones que simplifican su funcionamiento) .
DEFINICION 2 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.
DEFINICION 3 I Es el lenguaje de programación de propósito general asociado al sistema operativo UNIX I Trata con objetos básicos como caracteres, números . ; también con bits y direcciones de memoria I Posee una gran portabilidad I Se utiliza para la programación de sistemas: construcción de intérpretes, compiladores, editores de texto, etc.
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 pre procesado, 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 compiladorespara 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.
En algunos casos, una característica inexistente puede aproximarse. Por ejemplo, la implementación original de C++ consistía en un preprocesador que traducía código fuente C++ a C. La mayoría de las funciones orientadas a objetos incluyen un puntero especial, que normalmente recibe el nombre "this", que se refiere al objeto al que pertenece la función. Mediante el paso de este puntero como un argumento de función, esta funcionalidad puede desempeñarse en C. Por ejemplo, en C++ se puede escribir:
Donde el argumento stack es un puntero a una struct equivalente al puntero this de C++, que es un puntero a un objeto.
Estructura básica de un programa en C
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 esta encerrado entre llaves {}.
Un programa algo más complicado es el siguiente:
#include 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.
LENGUAJE c++
Es un lenguaje de programación diseñado a mediados de los años 1980
por Bjarne Stroustrup. La intención de su creación fue el extender al lenguaje de programación C mecanismos que permiten la manipulación de objetos. En ese sentido, desde el punto de vista de los lenguajes orientados a objetos, el C++ es un lenguaje híbrido.
Posteriormente se añadieron facilidades de programación genérica, que se sumaron a los paradigmas de programación estructurada y programación orientada a objetos. Por esto se suele decir que el C++ es un lenguaje de programación multiparadigma.
A continuación se cita un programa de ejemplo Hola mundo escrito en C++:
C++ tiene los siguientes tipos fundamentales:
Ventajas
Lenguaje de programación orientado a objetos.
Lenguaje muy didáctico, gracias a este lenguaje puedes aprender muchos otros lenguajes con gran facilidad, como C#, Java, Visual Basic, Javascript, PHP, entre otros.
Es muy potente en lo que se refiere a creación de sistemas complejos, un lenguaje muy robusto.
Permite elaborar aplicaciones sencillas como un "Hello World!" hasta sistemas operativos y mucho más, todo eso dependiendo del manejo del lenguaje.
Actualmente, puede compilar y ejecutar código de C, ya viene con librerías para realizar esta labor.
Es un lenguaje muy empleado, existen muchos tutoriales en línea, libros, códigos fuentes abiertos… hay material de sobra y basta para aprender lo necesario y mucho más con este lenguaje.
Existen muchos algoritmos cuyo pseudocódigo se encuentra ya desarrollado en C++, de manera que puedes tomarlo y amoldarlo a tu solución (porque el que veas un fragmento de código no asegura que sea correcto al 100%).
Desventajas
Uso de DLLs (librerías dinámicas) muy complejo. Java y .Net han evolucionado estos conceptos manipulando las DLLs mediante los frameworks que proveen. En cambio, en C++ el desarrollador debe encargarse de cargar y liberar de memoria estas librerías, y correr los riesgos por el manejo de esta memoria.
Elaborar un sistema en C++ es como construir un rascacielos: tiene buen soporte y es robusto, pero si existen errores en los pisos inferiores toda la parte superior se viene abajo terriblemente.
Manejo de punteros y memoria respecto a ello. Claro, esta también es una gran ventaja porque permite un mejor control de la memoria y una buena administración de recursos de computadora, pero la inexperiencia de los desarrolladores o la pérdida de costumbre con este tipo de variables (sobre todo cuando son dobles o triples punteros, inclusive de mayor orden) los lleva al desastre.
No es recomendable para desarrollo de páginas Web.
Existen muchos entornos de programación para C++. No existen estándares para ello. De manera que puedes encontrar C++ para Unix/Linux, C++ para Windows, C++ para MacOS, y asi indistintamente. Además, en cada SO encuentras diferentes IDEs de desarrollo, y también encuentras IDEs para desarrollo de aplicaciones gráficas como Anjuta, Qt para Unix/Linux, Borland C++ Builder y Visual Studio C++ para Windows.
Bibliotecas y descripciones de uso
Nombre de Biblioteca | Descripción | |||
assert.h | Es proporcionar una definición de la macro assert, que imprime un mensaje de error y aborta el programa | |||
alloc.h | Existen funciones para asignar, liberar memoria, u obtener información de bloques de memoria. | |||
ctype.h | Son funciones que nos permiten conocer la naturaleza de un carácter, o bien para convertir de mayúsculas a minúsculas y viceversa; y valores enteros a códigos ASCII. | |||
dir.h | Esto permite ordenar, crear, modificar, mover y eliminar directorios | |||
errno.h | Representa los números de error, después que ocurre un error se puede consultar el valor de la variable del sistema deerrno para obtener más información sobre ese error. | |||
float.h | Define los límites de los tipos de coma flotante | |||
limits.h | Define los límites de los diferentes tipos de enteros | |||
math.h | Contiene las funciones matemáticas estándar utilizadas en C y C++ | |||
setjmp.h | Define el tipo de jmp_buf para algunas funciones. | |||
signal.h | Contiene funciones de estado. | |||
stdarg.h | Define funciones que pueden ser llamadas con diferentes números de argumentos, de modo que se pueda escribir f(a) y f(a,b). | |||
stdef.h | Se definen algunos tipos especiales | |||
stdio.h | Incorporan las funciones de Entrada – Salida E/S estandar, tipos y macros | |||
stlib.h | Declara funciones que son útiles para diferentes propósitos, en especial de búsqueda y ordenación. | |||
string.h | Este archivo contiene funciones para manejo de cadenas de caracteres. | |||
time.h | Contiene funciones relativas a fechas y horas |
a | Alerta | ||||||
b | Espacio atrás | ||||||
f | Salto de página | ||||||
n | Salto de línea | ||||||
r | Retorno de carro | ||||||
t | Tabulación horizontal | ||||||
v | Tabulación vertical | ||||||
Barra invertida | |||||||
' | Comilla simple | ||||||
" | Comillas dobles | ||||||
OOO | Visualiza un carácter cuyo código ASCII es OOO en octal | ||||||
xHHH | Visualiza un carácter cuyo código ASCII es HHH en hexadecimal |
Tipos básicos y variables
Los tipos de datos básicos definidos por C son caracteres, números enteros y números en coma flotante. Los caracteres son representados por char, los enteros por short, int, long y los números en coma flotante por float y double.
Características
Su valor cambia durante la ejecución del programa.
Representa a un dato de manera individual. (cantidad numérica o caracter).
El valor se puede recuperar en el programa haciendo referencia con su nombre
. Tipos de datos Los tipos de datos básicos del lenguaje C y el espacio que ocupan estos en la memoria son los siguientes: • char (1 byte) • int (2 bytes)2 • float (4 bytes) • double (8 bytes) • void
Los tipos básicos disponibles y su tamaño son:
Char | Carácter | (normalmente 8 bits) | |||
Short | Entero corto con signo | (normalmente 16 bits) | |||
Int | Entero con signo | (depende de la implementación) | |||
Unsigned | Entero sin signo | (depende de la implementación) | |||
Long | Entero largo con signo | (normalmente 32 bits) | |||
Float | Flotante simple | (normalmente 32 bits) | |||
Double | Flotante doble | (normalmente 64 bits) |
La palabra unsigned en realidad es un modificador aplicable a tipos enteros, aunque si no se especifica un tipo se supone int. Un modificador es una palabra clave de C que indica que una variable, o función, no se comporta de la forma normal. Hay también un modificador signed, pero como los tipos son por defecto con signo, casi no se utiliza.
TIPOS DE CONSTANTES
. Constantes enteras: es un valor entero, consistente en una secuencia de dígitos y pueden escribirse en tres sistemas numéricos ( decimal (10), octal (8), hexadecimal (16). Ejemplo: 0 1 743 5280 32767.
2. Constantes en coma flotante: es un número que contiene punto decimal. Ejemplo: 25.50.
3. Constantes de caracter: es un sólo carácter. Ejemplo: "A", "X"
4. Constante de cadena de carácter: Ejemplo: "verde".
Página siguiente |