miércoles, 10 de octubre de 2012

Conociendo C++ II



Cuerpo de un programa en C++ 

Archivo de cabecera

Librerías – indica que se tengan en cuenta las funciones y tipos definidos en la librería que se escoja, por ejemplo tenemos:

#include < nombre de fichero >

Podemos ver donde dice: ” nombre de fichero ” va como su nombre lo indica un “fichero cabecera” por lo general en c++ usamos iostream que son las siglas iniciales de: [ input output stream ].

Cada fichero cabecera sirve para indicarle al programa “que funciones podemos usar”, es decir que al colocarle el iostream, tendremos funciones que se nos permitirá usar como el system (“pause”) para dar una pausa al programa que hemos hecho y observar bien los resultados, entre otras; también podemos usar recursos como es el cin ( para que el usuario/a ingrese datos ) y el cout ( para mostrarle datos al usuario/a ).

Entonces quedamos con una cabecera así:

#include <iostream.h>


Cabecera de función – función principal

Debajo de la cabecera principal del programa, se coloca la “cabecera de función”, ésta función es obligatoria en cada programa porque indica el comienzo del programa:

main ( )

Y se requiere de los paréntesis después de la palabra restringida “main“


Cuerpo – desarrollo

Después de colocar main ( ) es decir nuestro indicador que comienza el programa, ya podemos comenzar con la programación, ya que la programación va en el cuerpo del programa, se debe indicar cuál es el cuerpo, o sea los limites. En un programa los límites son marcados por el símbolo “las llaves “, es decir { }

{

. . . .

. . . . . . .

}

Por ultimo tenemos las sentencias, es decir nuestra programacion, lo que vayamos realizando en el cuerpo del programa, lo que va a hacer el programa al compilarlo y ejecutarlo. Todo eso va a ir en el cuerpo es decir DENTRO de los límites que establecimos (las llaves principales del programa )

Al final tenemos que, la estructura de un programa en c++ es así:


Estructura -

#include <iostream.h>

main ( )

{

. . . .

. . . . . . .

}


A continuación  se mostrara un ejemplo creado en clases muy basico de como se realiza un programa en C++:

#include <iostream.h>

int main() {

int a=0,b=0,c=0;

cout<<"\n ingrese numero a:";

cin>>a;

cout<<"\n ingrese numero b:";

cin>>b;

suma=a+b;

cout<<"\n la suma de "<<a<<"+"<<b<<" es:"<<suma;

return 0;

 }



Atte. Salomé Infante. Carrera: Ing de Sistemas 601D12
Gracias por su visita.



Conociendo C++




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 exitoso lenguaje de programación C con mecanismos que permitan 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 sumó a los otros dos paradigmas que ya estaban admitidos (programación estructurada y la programación orientada a objetos). Por esto se suele decir que el C++ es un lenguaje de programación multiparadigma.
Actualmente existe un estándar, denominado ISO C++, al que se han adherido la mayoría de los fabricantes de compiladores más modernos. Existen también algunos intérpretes, tales como ROOT.
Una particularidad del C++ es la posibilidad de redefinir los operadores, y de poder crear nuevos tipos que se comporten como tipos fundamentales.
El nombre C++ fue propuesto por Rick Mascitti en el año 1983, cuando el lenguaje fue utilizado por primera vez fuera de un laboratorio científico. Antes se había usado el nombre "C con clases". En C++, la expresión "C++" significa "incremento de C" y se refiere a que C++ es una extensión de C.

Comenzar en C++

Por convención, antes de cualquier línea de código en C++, se suelen escribir las directivas del preprocesador para incluir archivos de encabezado (headers), mediante #include. Por ejemplo:

#include <iostream>

Para especificar el espacio de nombres a utilizar (namespace), se utiliza una sentencia como ésta:

using namespace nombre_de_espacio;

El valor de retorno de main (), por convención, debe ser 0 cuando el programa termina correctamente. También puede utilizarse para devolver un valor al sistema operativo. En DOS, este valor se captura con la variable ERRORLEVEL en los archivos batch.

Como ejemplo, el programa que imprime "Hola mundo" en C++ es:

#include <iostream>

using namespace std;

int main ()
{
cout << "Hola, mundo" << endl;
return 0;
}

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 estaran 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, pero 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.

Algunas Librerías Estandar de C++ son:

Librería fstream:
Flujos hacia/desde ficheros. Permite la manipulación de archivos desde el programar, tanto leer como escribir en ellos.
Librería iosfwd:
Contiene declaraciones adelantadas de todas las plantillas de flujos y sus typedefs estándar. Por ejemplo ostream.
Librería iostream:
Parte del a STL que contiene los algoritmos estándar, es quizá la más usada e importante (aunque no indispensable).
Librería list:
Parte de la STL relativa a contenedores tipo list; listas doblemente enlazadas
Librería math:
Contiene los prototipos de las funciones y otras definiciones para el uso y manipulación de funciones matemáticas.
Librería memory:
Utilidades relativas a la gestión de memoria, incluyendo asignadores y punteros inteligentes(auto_ptr).
Librería new:
Manejo de memoria dinámica
Librería numeric:
Parte de la librería numérica de la STL relativa a operaciones numéricas.
Librería ostream:
Algoritmos estándar para los flujos de salida.
Librería 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.
Librería 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
Librería typeinfo:
Mecanismo de identificación de tipos en tiempo de ejecución
Librería vector:
Parte de la STL relativa a los contenedores tipo vector; una generalización de las matrices unidimensionales C/C++

Constantes y variables en C++

Para definir una constante en el programa se usa:
#define (el nombre) y el valor.

Una característica de C++, es la necesidad de declarar las variables que se usarán en un programa. Esto resulta chocante para los que se aproximan al C++ desde otros lenguajes de programación en los que las variables de crean automáticamente la primera vez que se usan. Se trata, es cierto, de una característica de bajo nivel, más cercana al ensamblador que a lenguajes de alto nivel, pero en realidad una característica muy importante y útil de C++, ya que ayuda a conseguir códigos más compactos y eficaces, y contribuye a facilitar la depuración y la detección y corrección de errores y a mantener un estilo de programación elegante.
Uno de los errores más comunes en lenguajes en los que las variables se crean de forma automática se produce al cometer errores ortográficos. Por ejemplo, en un programa usamos una variable llamada prueba, y en un punto determinado le asignamos un nuevo valor, pero nos equivocamos y escribimos prubea. El compilador o intérprete no detecta el error, simplemente crea una nueva variable, y continúa como si todo estuviese bien.
En C++ esto no puede pasar, ya que antes de usar cualquier variable es necesario declararla, y si por error usamos una variable que no ha sido declarada, se producirá un error de compilación.
El sistema es siempre será, primero se especifica el tipo y a continuación una lista de variables y finalmente un punto y coma.
La declaración de variables es uno de los tipos de sentencia de C++. La prueba más clara de esto es que la declaración terminará con un ";". Sintaxis:
<tipo> <lista de variables>;
También es posible inicializar las variables dentro de la misma declaración. Por ejemplo:
int a = 1234;
bool seguir = true, encontrado;
Declararía las variables a, seguir y encontrado; y además iniciaría los valores de a y seguir con los valores 1234 y true, respectivamente.
En C++, contrariamente a lo que sucede con otros lenguajes de programación, las variables no inicializadas tienen un valor indeterminado (con algunas excepciones que veremos más tarde), y contienen lo que normalmente se denomina "basura". Cuando se declara una variable se reserva un espacio de memoria para almacenarla, pero no se hace nada con el contenido de esa memoria, se deja el valor que tuviera previamente, y ese valor puede interpretarse de distinto modo, dependiendo del tipo.
Dependiendo de dónde se declaren las variables, podrán o no ser accesibles desde distintas partes del programa. Es decir, su ámbito de acceso y temporal dependerá del lugar en que se declaren.
Las variables declaradas dentro de un bucle, serán accesibles sólo desde el propio bucle, esto es, tendrán un ámbito local para el bucle. Esto es porque las variables se crean al iniciar el bucle y se destruyen cuando termina. Evidentemente, una variable que ha sido destruida no puede ser accedida, por lo tanto, el ámbito de acceso está limitado por el ámbito temporal.
Las variables declaradas dentro de una función, y recuerda que main también es una función, sólo serán accesibles para esa función, desde el punto en que se declaran hasta el final. Esas variables son variables locales o de ámbito local de esa función.
Al igual que ocurre con las variables locales de bucle, en las de función, las variables se crean al inciar la función y se destruyen al terminar.
Las variables declaradas fuera de las funciones, serán accesibles desde todas las funciones definidas después de la declaración. Diremos que esas variables son globales o de ámbito global.
El ámbito temporal de estas variables es también global: se crean junto con el programa, y se destruyen cuando el programa concluye.
Las variables globales son las únicas que son inicializadas automáticamente con valor cero cuando se declaran. Esto no sucede con ninguna variable local.
En todos los casos descritos, el ámbito temporal coincide con el de acceso: las variables que no pueden ser accedidas es porque no existen todavía o porque han sido destruídas. Más adelante veremos casos en que estos ámbitos no coinciden.
Una variable global declarada después de la definición de una función no será accesible desde esa función, por eso, normalmente se declaran las variables globales antes de definir las funciones.
Pero esto es hablando de forma general, en realidad, en C++ está mal visto usar variables globales, ya que se consideran poco seguras.

Errores posibles en c++

Errores de sintaxis: son errores en el programa fuente. Pueden deberse a palabras reservadas mal escritas, expresiones erróneas o incompletas, variables que no existen, etc. Los errores de sintaxis se detectan en la fase de compilación. El compilador, además de generar el código objeto, nos dará una lista de errores de sintaxis. De hecho nos dará sólo una cosa o la otra, ya que si hay errores no es posible generar un código objeto.
Avisos: además de errores, el compilador puede dar también avisos (warnings). Los avisos son errores, pero no lo suficientemente graves como para impedir la generación del código objeto. No obstante, es importante corregir estos avisos, ya que el compilador tiene que decidir entre varias opciones, y sus decisiones no tienen por qué coincidir con lo que nosotros pretendemos, se basan en las directivas que los creadores del compilador decidieron durante su creación.
Errores de enlazado: el programa enlazador también puede encontrar errores. Normalmente se refieren a funciones que no están definidas en ninguno de los ficheros objetos ni en las librerías. Puede que hayamos olvidado incluir alguna librería, o algún fichero objeto, o puede que hayamos olvidado definir alguna función o variable, o lo hayamos hecho mal.
Errores de ejecución: incluso después de obtener un fichero ejecutable, es posible que se produzcan errores. En el caso de los errores de ejecución normalmente no obtendremos mensajes de error, sino que simplemente el programa terminará bruscamente. Estos errores son más difíciles de detectar y corregir. Existen programas auxiliares para buscar estos errores, son los llamados depuradores (debuggers). Estos programas permiten detener la ejecución de nuestros programas, inspeccionar variables y ejecutar nuestro programa paso a paso. Esto resulta útil para detectar excepciones, errores sutiles, y fallos que se presentan dependiendo de circunstancias distintas

Atte. Salomé Infante. Carrera: Ing de Sistemas 601D12

Gracias por su visita.