Lenguaje de Programación
SEMANA 3
entrada y salida
ENTRADAS
Las entradas son todos aquellos insumos que se requieren para el adecuado procesamiento de los datos y que se definirán como variables, teniendo en cuenta el tipo de dato que puede representar y ellos se detallan en el siguiente capítulo con más énfasis. Entre los tipos de datos existentes se encuentran:
Caracter: Datos de tipo alfanumérico que representan un solo caracter de datos.
Cadena: Datos similares al anterior, pero que pueden almacenar cadenas de caracteres
Enteros: Datos numéricos que manejan cantidades enteras.
Flotantes o decimales: Son datos numéricos que permiten almacenar datos con parte entera y parte decimal. Existen dos tipos: float o flotante y doble o double.
Booleanos: Son datos que representan valores lógicos, de tal manera que devuelven resultados como falso o verdadero
PROCESOS
Los procesos son los diversos métodos o instrucciones mediante las cuales se realizan cambios a las entradas para convertirlas en un resultado; de tal manera que las entradas pueden variar o simplemente jugar el papel de llevar sus valores a otro dato para que este sea entregado ya sea a otro proceso o como resultado final.
Un ejemplo de un proceso es una operación aritmética, ya sea suma, resta, multiplicación, división, entre otras; sin embargo, es necesario tener en cuenta que en el desarrollo del algoritmo, se le deben presentar al usuario una serie de mensajes para que lo oriente acerca de que es lo que debe hacer.
Por ejemplo, para realizar una suma se requieren los sumandos y para ello es necesario decirle al usuario que digite los números, este proceso se denomina impresión o escritura de mensajes y se escribe de la siguiente manera en pseudocódigo:
Escriba (“Digite un número”);
Esta instrucción hace que se presente en pantalla o visualice el mensaje Digite un número, y así el usuario puede escribir el número y al oprimir la tecla “enter”, su dato será guardado en una determinada variable. Este proceso se denomina captura de datos y se representa de la siguiente manera en pseudocódigo:
Lea (a);
Donde a es el tipo de dato que almacenará el valor digitado por el usuario.
Así mismo existe otro tipo de información que son los mensajes que contienen datos, como se pudo apreciar en el ejemplo anterior, la instrucción: Escriba (“Digite un número”), visualiza de manera literal lo que se encuentra entre comillas, pero cuando se quiere presentar un valor de un dato que se encuentra almacenado, como es el caso del valor de “a”, se puede representar de la siguiente manera:
Escriba (a);
Otro proceso que se da, es la operación de datos, suponiendo que se quiere conocer el cuadrado de un número, para ello se requiere como dato el número del que se desea saber el cuadrado y como elevar un número al cuadrado es multiplicarse por sí mismo, esta operación solo requerirá de dos tipos de datos numéricos enteros, ellos serán:
a, para el número y cuadrado, para el valor de la operación.
De acuerdo con ello y construyendo el algoritmo con la información existente hasta el momento será:
ā
Inicio
Entero a, cuadrado, Escriba (“Digite el numero para el que desea hallar el cuadrado”);
Lea (a); Cuadrado = a * a;
Escriba (“el cuadrado del número es: ”);
Escriba (cuadrado);
Fin
SALIDAS
Son los valores o resultados que se generan después de una operación o proceso, en el ejemplo anterior se puede ver que la salida, se compone de dos partes, el mensaje final, que es la cadena: “el cuadrado del número es:” y el valor de cuadrado que se visualiza para el usuario.
Bibliotecas o librerías en C++. Declaración y uso de librerías. Include en C++
Junto con los compiladores de C y C++, se incluyen ciertos archivos llamados bibliotecas mas comúnmente librerías. Las bibliotecas contienen el código objeto de muchos programas que permiten hacer cosas comunes, como leer el teclado, escribir en la pantalla, manejar números, realizar funciones matemáticas, etc.
Las bibliotecas están clasificadas por el tipo de trabajos que hacen, hay bibliotecas de entrada y salida, matemáticas, de manejo de memoria, de manejo de textos y como imaginarás existen muchísimas librerías disponibles y todas con una función especifica.
Nota: Existe una discusión sobre el nombre de estos archivos. Muchos personas consideran que el nombre adecuado es archivos de biblioteca, y estan en lo correcto. Sin embargo, la mayoría llamamos a estos archivos librerías, y también me incluyo entre estos. El error proviene del nombre en inglés, que es library. Este término se traduce como biblioteca, y no como librería. De este modo a lo largo de esta sección las llamaré de cualquiera de las dos formas, para estár mas claros.
Hay un conjunto de bibliotecas (o librerías) muy especiales, que se incluyen con todos los compiladores de C y de C++. Son las librerías (o bibliotecas) ANSI o estándar. También hay librerías que no son parte del estándar pero en esta sección sólo usaremos algunas bibliotecas (o librerías) ANSI.
Nota 2: Sé que esto pinta aburrido, pero es muy útil y las librerías nos facilitan enormemente el trabajo a la hora de programar. Recuerda que antes de hablar librerías y demás es necesario dominar algunos conceptos de fundamentación en general y otros temas importantes (ciclos, condicionales y demás) Ahora veamos algunas librerías y como es su sintaxis.
¿Qué son exactamente las librerías?
En C++, se conoce como librerías (o bibliotecas) a cierto tipo de archivos que podemos importar o incluir en nuestro programa. Estos archivos contienen las especificaciones de diferentes funcionalidades ya construidas y utilizables que podremos agregar a nuestro programa, como por ejemplo leer del teclado o mostrar algo por pantalla entre muchas otras más.
Al poder incluir estas librerías con definiciones de diferentes funcionalidades podremos ahorrarnos gran cantidad de cosas, imaginemos por ejemplo que cada vez que necesitemos leer por teclado, debamos entonces crear una función que lo haga (algo realmente complejo), al poder contar con las librerías en C++, podremos hacer uso de una gran variedad de funciones que nos facilitaran la vida y aumentarán la modularidad de nuestros códigos.
Las librerías no son únicamente archivos externos creados por otros, también es posible crear nuestras propias librerías y utilizarlas en nuestros programas. Las librerías pueden tener varias extensiones diferentes, las más comunes son: .lib, .bpl, .a, .dll, .h y algunas más ya no tan comunes.
En conclusión: Las librearías son archivos (no siempre externos) que nos permiten llevar a cabo diferentes tareas sin necesidad de preocuparnos por cómo se hacen sino simplemente entender cómo usarlas. Las librearías en C++ permiten hacer nuestros programas más modulares y reutilizables, facilitando además crear programas con funcionalidades bastante complejas en unas pocas líneas de código.
Sintaxis para declarar Librerías en C++
La declaración de librerías, tanto en C como en C++, se debe hacer al principio de todo nuestro código, antes de la declaración de cualquier función o línea de código, debemos indicarle al compilador que librerías usar, para el saber que términos estarán correctos en la escritura de nuestro código y cuáles no. La sintaxis es la siguiente: #include <nombre de la librería> o alternativamente #include "nombre de la librería". Cualquiera de las 2 formas es válida en C++ (no estoy seguro si en C sea válido), ten en cuenta que siempre el nombre de la librería debe ir entre " y " o entre < y >. En tu código puedes declarar todas las librerías que quieras aunque en realidad no tienen sentido declarar una librería que no vas a usar en tu programa, sin embargo no existe límite para esto.
Librerías Estandar de C++ (Standar Template Library o STL)
A continuación pondré algunas de las librerías de uso más común de C++ y que forman parte de las librerías estandar de este lenguaje.
-
fstream: Flujos hacia/desde ficheros. Permite la manipulación de archivos desde el programar, tanto leer como escribir en ellos.
-
iosfwd: Contiene declaraciones adelantadas de todas las plantillas de flujos y sus typedefs estándar. Por ejemplo ostream.
-
iostream: Parte del a STL que contiene los algoritmos estándar, es quizá la más usada e importante (aunque no indispensable).
-
La biblioteca list: Parte de la STL relativa a contenedores tipo list; listas doblemente enlazadas
-
math: Contiene los prototipos de las funciones y otras definiciones para el uso y manipulación de funciones matemáticas.
-
memory: Utilidades relativas a la gestión de memoria, incluyendo asignadores y punteros inteligentes (auto_ptr).
"auto_ptr" es una clase que conforma la librería memory y permite un fácil manejo de punteros y su destrucción automaticamente.
-
Biblioteca new: Manejo de memoria dinámica
-
numeric: Parte de la librería numérica de la STL relativa a operaciones numéricas.
-
ostream: Algoritmos estándar para los flujos de salida.
-
queue: Parte de la STL relativa a contenedores tipo queue (colas de objetos).
-
Librería stdio: Contiene los prototipos de las funciones, macros, y tipos para manipular datos de entrada y salida.
-
Librería stdlib: Contiene los prototipos de las funciones, macros, y tipos para utilidades de uso general.
-
string: Parte de la STL relativa a contenedores tipo string; una generalización de las cadenas alfanuméricas para albergar cadenas de objetos. Muy útil para el fácil uso de las cadenas de caracteres, pues elimina muchas d elas dificultades que generan los char
-
typeinfo: Mecanismo de identificación de tipos en tiempo de ejecución
-
vector: Parte de la STL relativa a los contenedores tipo vector; una generalización de las matrices unidimensionales C/C++
-
forward_list: Esta librería es útil para implementar con gran facilidad listas enlazadas simples.
-
list: Permite implementar listas doblemente enlzadas (listas enlazadas dobles) facilmente.
-
iterator: Proporciona un conjunto de clases para iterar elementos.
-
regex: Proporciona fácil acceso al uso de expresiones regulares para la comparación de patrones.
-
thread: Útil para trabajar programación multihilos y crear múltiples hilos en nuestra aplicación.
-
time: Útil para obtener marcas de tiempo durante ejecución. Se usa con frecuencia para conocer el tiempo exacto durante un programa.
¿Cómo declarar una librería en C++?
Veamos a continuación como se haría la declaración de unas cuantas librerías conocidas, recuerda que ese pueden declarar todas las librerías necesarias y siempre debe hacerse al comienzo del código fuente
ā
#include "iostream"
#include "string"
#include <math.h>
#include <conio.h>
using namespace std;
Con esto debió quedar claro, como declarar librerías C++ al interior de un código fuente. Lo único adicional, es la línea que dice using namespace std; esta línea nos ayuda a declarar un espacio de nombre que evita tener que usarlo cada que accedemos a alguna función especifica de una librería. Teniendo este namespace declarado podemos llamar por ejemplo el comando cout >>, que pertenece a la librería iostream, sin embargo sin este namespace sería std::cout >>, imagina tener que hacer esto cada vez que uses algún comando o función de las librerías, sería bastante tedioso.
Acerca del namespace std
Todas las librerías estándar de C++ contienen una declaración del espacio de nombre std, es decir que todas las librerías que hacen parte del estándar de C++ colocan entidades dentro de este espacio de nombre.
Por esta razón cuando declaramos el uso del espacio de nombre std por medio de "using namespace std;", podemos evitar estar escribiendo std::cout o std::cin, etc en nuestro código.
El espacio de nombre std como tal no es una librería sino simplemente un namespace, por esta razón no reemplaza la declaración de las librerías del código, simplemente facilita la escritura de éste al momento de usar las entidades de las librerías estándar. Sin embargo si vamos a hacer uso de una o varias librerías estándar de C++ es recomendable que declaremos el namespace std, para no tener que estar constantemente escribiendo cosas similares a las que puse hace unas líneas como std::cin o similares, dado que únicamente se puede acceder a la entidades de las librerías estándar por medio del espacio nombre std.
Muy bien, ahora veamos algunos ejemplos simples del uso de librerías o bibliotecas en C++