Antecedentes Del Lenguaje C y C++ Y Librerias
Antecedentes Del Lenguaje C y C++ Y Librerias
Antecedentes Del Lenguaje C y C++ Y Librerias
-ORIGEN-
Ritchie a mediados de los años 70. La primera implementación del mismo la realizó
Dennis Ritchie sobre un computador DEC PDP-11 con sistema operativo UNIX. C es
el resultado de un proceso de desarrollo que comenzó con un lenguaje anterior, el
BCPL, el cual influyó en el desarrollo por parte de Ken Thompson de un lenguaje
llamado B, el cual es el antecedente directo del lenguaje C. El lenguaje C es un
lenguaje para programadores en el sentido de que proporciona una gran flexibilidad de
programación y una muy baja comprobación de incorrecciones, de forma que el
lenguaje deja bajo la responsabilidad del programador acciones que otros lenguajes
realizan por si mismos. Así, por ejemplo, C no comprueba que el índice de referencia
de un vector (llamado array en la literatura informática) no sobrepase el tamaño del
mismo; que no se escriba en zonas de memoria que no pertenecen al área de datos del
programa, etc.
El lenguaje C es un lenguaje estructurado, en el mismo sentido que lo son otros
lenguajes de programación tales como el lenguaje Pascal, el Ada o el Modula-2, pero
no es estructurado por bloques, o sea, no es posible declarar subrutinas (pequeños
trozos de programa) dentro de otras subrutinas, a diferencia de como sucede con otros
lenguajes estructurados tales como el Pascal. Además, el lenguaje C no es rígido en la
comprobación de tipos de datos, permitiendo fácilmente la conversión entre diferentes
tipos de datos y la asignación entre tipos de datos diferentes, por ejemplo la expresión
siguiente es válida en C:
float a; /*Declaro una variable para numeros reales*/
int b; /*Declaro otra variable para numero enteros*/
b=a; /*Asigno a la variable para entera el numero real*/
Todo programa de C consta, básicamente, de un conjunto de funciones, y una
función llamada main, la cual es la primera que se ejecuta al comenzar el programa,
llamándose desde ella al resto de funciones que compongan nuestro programa.
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.
Y como todos los mejores descubrimientos, ocurrió uno por casualidad. Estos
programadores unieron el BCPL, lenguaje sencillo y rápido, con el B, que en cambio
era lento porque estaba lleno de instrucciones. El resultado fue el lenguaje C, y
permitió a Thompson abandonar y reescribir completamente a UNIX.
En conclusión, C y C++ son dos lenguajes de programación diferentes, cada uno con sus
ventajas y desventajas. Al comprender las diferencias entre C y C++, puedes elegir el
lenguaje adecuado para tus necesidades específicas y lograr un resultado más eficiente y
escalable.
-VENTAJAS Y DESVENTAJAS DEL C++-
Las principales desventajas de C++ es que se trata de un lenguaje muy amplio (con
muchos años y muchas líneas de código), tiene que tener una compilación por plataforma y
su depuración se complica debido a los errores que surgen. Además el manejo de librerías
es más complicado que otros lenguajes como Java o .Net y su curva de aprendizaje muy
alta.
Algunas de las características más importantes que posee el lenguaje C++ son:
Compatibilidad con bibliotecas: A través de bibliotecas hay muchas funciones que están
disponible y que ayudan a escribir código rápidamente.
Debes tener en cuenta que las librerías no son iguales en todos los lenguajes. Las librerías
que se usan en un programa escrito en C++ (archivo con extensión .cpp) no siempre pueden
usarse en un programa escrito en C (archivo con extensión .c). Aunque la declaración de
librerías es igual en C y C++, estas no siempre son intercambiables. Aquí se hablará de
algunas librerías para C++ y algunas funciones que incluyen.
iostream
Es definitivamente la librería que más estaremos utilizando, pues es una muy completa,
tiene muchas funciones sencillas que son muy utilizadas, al incluirla en nuestro código
fuente generalmente evitamos tener que incluir más librerías. Está especializada en la
lectura y escritura de archivos. Es exclusiva de C++.
cmath
cstring
ctime
algorithm
bits/stdc++.h
Esta es algo así como una súper librería. Incluye todas las librerías estándar y de STL, es
decir, podrías sólo incluir esta siempre y no necesitarías incluir otra. Sin embargo funciona
precompilando todas las librerías que incluye, sólo que lo hace en una sola línea, por lo que
incluye librerías que podríamos no usar, esto hace que el tiempo de compilación sea mayor.
Debido a esto y aunque su uso es muy práctico, sugiero no utilizarla al hacer nuestros
programas, es preferible que incorpores una a una las librerías que usaremos. Además no
todos los compiladores y evaluadores soportan este fichero. Sin embargo es algo útil
conocer y llegar a utilizar en pruebas, por ejemplo.
#include <bits/stdc++.h>
Las librerías que se utilizaban en C han sido convertidas para que puedan usarse en C++,
como se mostró en ejemplos anteriores. Las librerías en C utilizaban una extención .h al
final del nombre, en C++ se excluye ese .h y en su lugar se añade una c al inicio del nombre
de la librería. Por ejemplo, la librería de C stdio.h se puede usar en C++ con el
nombre <cstdio>. Todas las librerías de C que han tenido esta conversión son:
#include <cassert>
#include <cctype>
#include <cerrno>
#include <cfloat>
#include <ciso646>
#include <climits>
#include <clocale>
#include <cmath>
#include <csetjmp>
#include <csignal>
#include <cstdarg>
#include <cstddef>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <ctime>
Existen otras librerías que son estándar en C++, algunas de ellas son solamente compatibles
con C++11, entonces considera esto cuando quieras compilar tu codigo o quieras enviar un
código que incluya alguna de estas librerías a un evaluador. Entonces todas las liberías
estándar de C++ incluyendo las de C++11 son:
iostream
#include <iostream>
// Algunas funciones son
std::cout << a; // Muestra el valor de a en la consola
std::cin << a; // Ingresa un valor para a desde la consola
min(a, b) // Regresa el minimo entre a y b
max(a, b) // Regresa el máximo entre a y b
cmath
#include <cmath>
// Algunas funciones son
sin(x); // Devuelve el valor de la función trigonométrica seno de la variable x
cos(x); // Devuelve el valor de la función trigonométrica coseno de la variable x
tan(x); // Devuelve el valor de la función trigonométrica tangente de la variable x
exp(x); // Devuelve el valor de la función exponencial de la variable x, es decir e^x
log(x); // Devuelve el valor de la función logaritmo de la variable x
pow(x, y); // Devuelve el valor de la variable x elevadaa la potencia y
sqrt(x); // Devuelve el valor de la raíz cuadrada de la variable x
abs(x); // Devuelve el valor absoluto de la variable x
cstring
#include <cstring>
// Algunas funciones son
strcat() // Concatena cadenas
memcmp() // Mueve bloques de memoria
strpbrk() // Ubica caracteres en una cadena
strlen() // Obtienes la longitud de una cadena
memset() // Rellena un bloque de memoria
// Para conocer más funciones en strings y ejemplos revisa el articulo de Strings en STL
ctime
#include <ctime>
// Algunas funciones son
clock() // La puedes usar para contar el tiempo que dura la ejecución de un programa
difftime() // Da la diferencia entre dos tiempos
mktime() // Convierte entre tipos de variable de tiempo
time() // Obtiene el tiempo actual
algorithm
#include <algorithm>
// Algunas funciones son
find() // Encuentra un valor en un rango de elementos
count() // Cuenta el numero de apariciones de un valor en un rango
swap() // Intercambia el valor de dos variables
reverse() // Pone en orden inverso un rango de elementos
sort() // Ordena un rango de elementos
merge() // Mezcla dos rangos de elementos ya ordenados