Antecedentes Del Lenguaje C y C++ Y Librerias

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

Antecedentes Del Lenguaje C y C++

-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.

Pero, ¿por qué se creó el lenguaje de programación C? El objetivo era encontrar un


compilador que garantizará la consistencia y la velocidad de cada terminal, y entender
mejor el sistema operativo Unix. En pocas palabras, lo que se quería era un sistema
operativo eficiente que pudiera evolucionar sin sufrir vergonzosas ralentizaciones.

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.

Aunque, en 1972 fue el año más productivo de desarrollo y probablemente cuando se


bautizó C. Fue para el año de 1973, que el lenguaje C estaba lo suficientemente
maduro como para que el 90% de UNIX pudiera reescribirse con él. Y en 1974, los
laboratorios Bell concedieron la licencia de UNIX a las universidades, y así fue como
se empezó a distribuir el lenguaje C.

-ACONTECIMIENTOS MÁS RESALTANTES-

Luego de que comenzará a distribuirse el lenguaje, se hizo necesario algunos cambios


importantes:

 Ritchie con la colaboración de Brian Kernighan, en 1978, publicó el libro «El


lenguaje de programación C». Este libro, también conocido como K & R, sirvió
de base informal para todos aquellos que querían empezar a programar con este
nuevo lenguaje.
 En 1983, el ANSI, que es una de las organizaciones de normalización más
importantes de Estados Unidos, formó su propio comité con el fin de convertir a
C en un estándar.
 Pero no fue hasta 1989 que el ANSI ratificó esta norma y, por lo tanto, la
versión ANSI de C también se le conoce como C89.
 En 1990, la norma C ANSI también fue tratada por la ISO, el organismo
internacional de normalización. Esta versión, que es prácticamente idéntica a la
versión ANSI, se le llamó C90.
 Otra revisión del lenguaje, que con el paso de los años fue adquiriendo nuevas
características respecto a las versiones iniciales, se ha convertido en otra norma
ISO; más o menos entre 1999-2000, por eso se habla de C99.
 En 2011 se ratificó como estándar una nueva revisión del lenguaje C, que
incluye otras actualizaciones que se han producido con el tiempo, y se llama
C11.
 Actualmente, la versión más estable del lenguaje C, es la C18, la cual fue
lanzada en junio de 2018.

-DIFERENCIA ENTRE C Y C++-


C y C++ son dos lenguajes de programación distintos, con algunas similitudes. A
continuación, citamos algunas de las principales diferencias entre C y C++:
1. Librerías. C++ cuenta con una amplia variedad de librerías y herramientas
disponibles que facilitan el desarrollo de aplicaciones complejas y de gran escala.
En contraste, C tiene una librería estándar más limitada.
2. Sobrecarga de operadores. C++ permite a los programadores sobrecargar
operadores como +, -, *, /, etc.; esto vuelve factible crear tipos de datos
personalizados y proporciona una mayor flexibilidad y expresividad en la escritura
de código, mientras que C no tiene esta funcionalidad.
3. Gestión de memoria. En C++, la gestión de memoria es responsabilidad del
programador, quien debe asignar y liberar manualmente la memoria empleada por
su programa. En C, la gestión de memoria es más simple, porque no es necesario
liberar la memoria usada por las variables globales y estáticas.
4. Compatibilidad con C. C++ es compatible con C, lo que permite a los
programadores utilizar código C en programas C++. Sin embargo, el código C no es
compatible con todas las características de C++.
5. Compilación. El proceso de compilación de C++ es más complejo que el de C, ya
que el compilador C++ debe realizar tareas adicionales para admitir la
programación orientada a objetos.
En resumen, aunque C y C++ comparten algunas similitudes, C++ es un lenguaje de
programación más avanzado y completo. Ofrece soporte para programación orientada a
objetos, sobrecarga de operadores, una librería estándar más amplia y una gestión más
compleja de la memoria, mientras que C es más simple y más adecuado para aplicaciones
menos complejas y de menor escala.

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 ventajas de programar en C++ son:

 Alto rendimiento: Es una de sus principales características, el alto rendimiento que


ofrece. Esto es debido a que puede hacer llamadas directas al sistema operativo, es
un lenguaje compilado para cada plataforma, posee gran variedad de parámetros de
optimización y se integra de forma directa con el lenguaje ensamblador.
 Lenguaje actualizado: A pesar de que ya tiene muchos años, el lenguaje se ha ido
actualizando, permitiendo crear, relacionar y operar con datos complejos y ha
implementado múltiples patrones de diseño.
 Multiplataforma
 Extendido: C y C++ están muy extendidos. Casi cualquier programa o sistema
están escritos o tienen alguna parte escrita en estos lenguajes (desde un navegador
web hasta el propio sistema operativo).

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.

-Características del lenguaje C++-

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.

Orientado a Objetos: El foco de la programación está en los objetos y la manipulación y


configuración de sus distintos parámetros o propiedades.

Rapidez: La compilación y ejecución de un programa en C++ es mucho más rápida que en


la mayoría de lenguajes de programación.

Compilación: En C++ es necesario compilar el código de bajo nivel antes de ejecutarse,


algo que no ocurre en otros lenguajes.
Punteros: Los punteros del lenguaje C, también están disponibles en C++.

Didáctico: Aprendiendo programación en C++ luego es mucho más fácil aprender


lenguajes como Java, C#, PHP, Javascript, etc.

Antecedentes De La Librería Estándar C Y C++


Normalmente son llamadas librerías en español, aunque es técnicamente más apropiado
llamarles bibliotecas, pues la palabra de la que surgen es de la palabra en inglés library
cuya traducción inmediata es biblioteca. Esto no importa demasiado pues para quienes
hablamos español, ambas palabras nos dan una idea muy similar. También hay quienes se
refieren a ellas como cabeceras o en inglés headers.
Una librería es un archivo que el compilador puede leer y en el que encuentra las
instrucciones de uso de muchos y distintos métodos y funciones. Existen cientos de
librerías, la mayoría de IDE ya las tienen incluidas, pero no las incluyen en todos los
códigos fuente que se crean, con el propósito de que estos no sean demasiado grandes. Por
esto debemos declarar en nuestro código fuente qué librerías necesitaremos.
Si vamos a usar una determinada librería en nuestro programa, debemos incluirla o
declararla en nuestro código fuente. Para incluir algo a nuestro archivo fuente usamos la
expresión #include, después de esto y entre signos de menor qué (<) y mayor qué (>)
ponemos el nombre de la librería. De manera general sería:
#include <nombre_libreria>

-LIBRERIAS MAS USADAS EN C++-

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

Declara un conjunto de funciones principalmente para operaciones matemáticas y


transformaciones. Incluye funciones
como sin(), cos(), tan(), exp(), log(), pow(), sqrt(), abs(). Se puede usar en C/C++.

cstring

Declara un conjunto de funciones principalmente para manipulación de elementos


tipo string. Algunas funciones que incluye
son strcat() memcmp() strpbrk() strlen() memset(). Se puede usar en C/C++.

ctime

Declara un conjunto de funciones para obtener y manipular información de tiempo y fecha.


Incluye funciones como: clock() difftime() mktime() time(). Se puede usar en C/C++.

algorithm

Define una colección de funciones especialmente diseñadas para utilizarse en rangos de


elementos. Además incluye la mayoría de los contenedores de la STL. Algunas funciones
que incluye son: find() count() swap() reverse() sort() merge(). Exclusiva de C++.

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>

Todas las librerías de C en C++

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>

Las librerías estándar para C++

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:

#include <algorithm> // Algoritmos de la plantilla estándar


#include <chrono> // Librería para usar mediciones de tiempo
#include <complex> // Librería para usar números complejos
#include <exception> // Exepciones estándar
#include <functional> // Objetos para funciones
#include <initializer_list> // Para inicilizar listas
#include <iterator> // Para definir iteradores
#include <limits> // Calcula límites numéricos
#include <locale> // Librería para localizaciones
#include <memory> // Elementos de memoria
#include <new> // Para uso dinámico de memoria
#include <numeric> // Operaciones numéricas generales
#include <random> // Funciones para obtener cosas aleatorias
#include <ratio> // Librería para proporciones
#include <regex> // Para manejar expresiones regulares
#include <stdexcept> // Clases de exepciones
#include <string> // Crea y maneja elementos string
#include <system_error> // Gestión de errores del sistema
#include <tuple> // Librería para objetos tipo tuple
#include <typeinfo> // Obtener información sobre tipos de datos
#include <type_traits> // Tipos de traits
#include <utility> // Componentes variados de utilería
#include <valarray> // Para arreglos de elementos numéricos

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

También podría gustarte