Está en la página 1de 30

REPUBLICA BOLIVARIANA DE VENEZUELA MINISTERIO DEL PODER POPULAR PARA LA EDUCACIN UNIVERSITARIA MISIN SUCRE ALDEA UNIVERSITARIA CIUDAD

ANGOSTURA I TRAYECTO III TRIMESTRE

PROFESORA: MANAURE INGRIS

BACHILLER: OCA YULYMAR.

CIUDAD BOLVAR, ABRIL DEL 2.012.

INTRODUCCIN. C++ es un lenguaje de programacin diseado a mediados de los aos 1980 por Bjarne Stroustrup. La intencin de su creacin fue el extender al exitoso lenguaje de programacin C con mecanismos que permitan la manipulacin de objetos. En ese sentido, desde el punto de vista de los lenguajes orientados a objetos, el C++ es un lenguaje hbrido. Posteriormente se aadieron facilidades de programacin genrica, que se sum a los otros dos paradigmas que ya estaban admitidos (programacin estructurada y la programacin orientada a objetos). Por esto se suele decir que el C++ es un lenguaje de programacin multiparadigma. Actualmente existe un estndar, denominado ISO C++, al que se han adherido la mayora de los fabricantes de compiladores ms modernos. Existen tambin algunos intrpretes, 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 ao 1983, cuando el lenguaje fue utilizado por primera vez fuera de un laboratorio cientfico. Antes se haba usado el nombre "C con clases". En C++, la expresin "C++" significa "incremento de C" y se refiere a que C++ es una extensin de C.

TIPOS DE DATOS EN C.

C++ tiene los siguientes tipos fundamentales:


Caracteres: char (tambin es un entero), wchar_t Enteros: short, int, long, long long Nmeros en coma flotante: float, double, long double Booleanos: bool Vaco: void

El modificador unsigned se puede aplicar a enteros para obtener nmeros sin signo (por omisin los enteros contienen signo), con lo que se consigue un rango mayor de nmeros naturales. Tamaos asociados Segn la mquina y el compilador que se utilice los tipos primitivos pueden ocupar un determinado tamao en memoria. La siguiente lista ilustra el nmero de bits que ocupan los distintos tipos primitivos en la arquitectura x86.

Tamaos de tipos primitivos bajo i386 (GCC) Tipo char short int float double Nmero de Bits 8 16 32 32 64

Otras arquitecturas pueden requerir distintos tamaos de tipos de datos primitivos. C++ no dice nada acerca de cul es el nmero de bits en un byte, ni del

tamao de estos tipos; ms bien, ofrece solamente las siguientes "garantas de tipos":

Un tipo char tiene el tamao mnimo en bytes asignable por la mquina, y todos los bits de este espacio deben ser "accesibles".

El tamao reconocido de char es de 1. Es decir, sizeof(char) siempre devuelve 1.

Un tipo short tiene al menos el mismo tamao que un tipo char. Un tipo long tiene al menos el doble tamao en bytes que un tipo short. Un tipo int tiene un tamao entre el de short y el de long, ambos inclusive, preferentemente el tamao de un apuntador de memoria de la mquina.

Un tipo unsigned tiene el mismo tamao que su versin signed.

Wchar_t Para la versin del estndar que se public en 1998, se decidi aadir el tipo de dato wchar_t, que permite el uso de caracteres UNICODE, a diferencia del tradicional char, que contempla simplemente al cdigo de caracteres ASCII extendido. A su vez, se ha definido para la mayora de las funciones y clases, tanto de C como de C++, una versin para trabajar con wchar_t, donde usualmente se prefija el carcter w al nombre de la funcin (en ocasiones el carcter es un infijo). Por ejemplo:

strcpy - wstrcpy std::string - std::wstring std::cout - std::wcout

Cabe resaltar que en C se define wchar_t como: typedef unsigned short wchar_t; Mientras que en C++ es en s mismo un tipo de dato.

La palabra reservada "void" La palabra reservada void define en C++ el concepto de no existencia o no atribucin de un tipo en una variable o declaracin. Como tal, puede ser usada para destacar que una funcin no recibe parmetros, como en: int funcion (void); Aunque la tendencia actual es la de no colocar la palabra "void". Adems se utiliza para determinar que una funcin no retorna un valor, como en: void funcion (int parametro); Cabe destacar que void no es un tipo. Una funcin como la declarada anteriormente no puede retornar un valor por medio de return: la palabra clave va sola. No es posible una declaracin del tipo: void t; //Est mal En este sentido, void se comporta de forma ligeramente diferente a como lo hace en C, especialmente en cuanto a su significado en declaraciones y prototipos de funciones. Sin embargo, la forma especial void * indica que el tipo de datos es un puntero. Por ejemplo: void *memoria; Indica que memoria es un puntero a alguna parte, donde se guarda informacin de algn tipo. El programador es responsable de definir estos "algn", eliminando toda ambigedad. Una ventaja de la declaracin "void *" es que puede representar a la vez varios tipos de datos, dependiendo de la operacin de cast escogida. La memoria que hemos apuntado en alguna parte, en el ejemplo anterior, bien podra almacenar un entero, un flotante, una cadena de texto o un programa, o combinaciones de stos. Es responsabilidad del programador recordar qu tipo de datos hay y garantizar el acceso adecuado.

Principios. Todo programa en C++ debe tener la funcin main() (a no ser que se especifique en tiempo de compilacin otro punto de entrada, que en realidad es la funcin que tiene el main()) int main() {} La funcin main debe tener uno de los siguientes prototipos: int main() int main(int argc, char** argv) int main(int argc, char** argv, char** env) La primera es la forma por omisin de un programa que no recibe parmetros ni argumentos. La segunda forma tiene dos parmetros: argc, un nmero que describe el nmero de argumentos del programa (incluyendo el nombre del programa mismo), y argv, un puntero a un array de punteros, de argc elementos, donde el elemento argv[i] representa el i-simo argumento entregado al programa. En el tercer caso se aade la posibilidad de poder acceder a las variables de entorno de ejecucin de la misma forma que se accede a los argumentos del programa, pero reflejados sobre la variable env. El tipo de retorno de main es int. Al finalizar la funcin main, debe incluirse el valor de retorno (por ejemplo, return 0;, aunque el estndar prev solamente dos posibles valores de retorno: EXIT_SUCCESS y EXIT_ERROR, definidas en el archivo cstddef), o salir por medio de la funcin exit. Alternativamente puede dejarse en blanco, en cuyo caso el compilador es responsable de agregar la salida adecuada. Variables y constantes. Nombres de las variables Slo estn permitidas letras de la 'a' a la 'z' (la no vale), nmeros y el smbolo '_', puede contener nmeros, pero no en el primer carcter.

nombres vlidos: camiones numero buffer a1 j10hola29 num_alumnos

Ejemplos de nombres no vlidos: 1abc nombre? num/alumnos

Tampoco valen como nombres de variable las palabras reservadas que usa el compilador. Por ejemplo: for, main, do, while. C distingue entre maysculas y minsculas. Por lo tanto: Nombre nombre NOMBRE seran tres variables distintas.

Dnde se declaran las variables? Tenemos dos posibilidades, una es declararla como global y otra como local. Es global aquella variable que se declara fuera de la funcin main y local la que se declara dentro:
Variable Global Variable Local

#include <stdio.h> int x; int main() { }

#include <stdio.h> int main() { int x; }

Las variables globales se pueden usar en cualquier procedimiento y las locales slo pueden usarse en el procedimiento en el que se declaran. Es buena costumbre usar variables locales en vez de globales. Podemos declarar ms de una variable en una sola lnea: int x, y; En C++, las variables pueden ser declaradas en cualquier lugar dentro de un programa. No es necesario, como en C, que sean declaradas al comienzo de una funcin o de un bloque. Esto puede ser til en cdigos grandes, cuando una variable se utiliza en un trozo de cdigo lejano al comienzo del bloque. En este caso, el declarar el tipo de la variable cerca del lugar donde se va a utilizar puede hacer que el programa sea ms fcil de leer. Un ejemplo de esta posibilidad de C++ es la declaracin del contador dentro de un bucle. Por ejemplo: # include main () { for (int i=0; i < 10; i++) { cout << 'hola' << '\n'; } } El ndice i se ha definido dentro del bucle for. En algunos compiladores, su validez se extiende hasta el final del bloque donde han sido definidos

Constantes. Las constantes se declaran, como en C, igual que una variable normal, pero aadiendo la palabra const delante. Por ejemplo, para declarar una constante con valor 14: const int numero = 14;

Estas constantes no pueden ser modificadas a lo largo del programa. Por eso deben ser definidas al mismo tiempo que declaradas.

Los operadores aritmticos que se pueden utilizar en C++ son:

Operacin x++ ++x x---x +x -x x*y x/y x%y x+y x-y

Accin Pos incremento Pre incremento Pos decremento Pre decremento + unario - unario Multiplicacin Divisin Modulo Suma Resta

Los operadores incremento y decremento proporcionan una forma breve de sumar o restar 1 a una variable. Usados como prefijo, como ++i, el valor de la variable se incrementa (decrementa) antes de que la variable sea usada; usada como sufijo, como i++ el valor de la variable se incrementa (decrementa) despus de su utilizacion.

Operador Proposito :: Scope (unario) :: Scope (binario) -> . Seleccion de miembros [] ndices () Llamada a funcion ++ Postincremento -Postdecremento sizeof Tamao de un objeto ++ Preincremento -Predecremento *&+-!~ Operadores unarios new Crea un objeto delete Borra un objeto () Conversion de tipo (type cast) ->* .* Puntero a un miembro */% Operadores multiplicativos +Operadores aditivos << >> Operadores bitwise < > <= >= Operadores de relacion == != Operadores de igualdad & Y bitwise ^ bitwise O exclusivo | bitwise O inclusivo && Y logico || O logico ?: Operador condicional = *= /= += -= >*gt;= Operadores de asignacion &= ^= |= %= <<= , Operador coma

Asociatividad De derecha a izquierda De izquierda a derecha De izquierda a derecha De izquierda a derecha De izquierda a derecha De izquierda a derecha De izquierda a derecha De derecha a izquierda De derecha a izquierda De derecha a izquierda De derecha a izquierda De derecha a izquierda De derecha a izquierda De derecha a izquierda De izquierda a derecha De izquierda a derecha De izquierda a derecha De izquierda a derecha De izquierda a derecha De izquierda a derecha De izquierda a derecha De izquierda a derecha De izquierda a derecha De izquierda a derecha De izquierda a derecha De derecha a izquierda De derecha a izquierda De derecha a izquierda

10

Entradas y salidas. Funcin printf() Sirve para imprimir por pantalla. Supongamos que queremos mostrar el contenido de la variable "x" por pantalla: printf( '%i', x ); Suponiendo que x valga 10 (x=10) en la pantalla tendramos: 10 Para ver el contenido de dos variables, por ejemplo x e y, podemos hacer: printf( '%i %i', x, y ); resultado (suponiendo x=10, y=20): 10 20 Tambin podemos mezclar texto con enteros: printf( 'El valor de x es %i, que bien!\n', x ); que quedara como: El valor de x es 10, que bien! Como vemos %i al imprimir se sustituye por el valor de la variable. Salida por pantalla y entrada por teclado. En C++ ademas de las funciones printf() y scanf(), que siguen estando vigentes, se pueden utilizar los operadores cin y cout. Para utilizar estos nuevos operadores es necesario incluir la librera iostream.h con la instruccion #include <iostream.h>. As en un programa en C habra que hacer algo de este estilo: char nombre; int num=2; printf ('Introduzca el nombre del fichero %d: ', num); scanf (' %s', nombre) En C++ podra escribirse as:

11

char nombre; int num=2; cout << 'Introduzca el nombre del fichero ' << num << ': '; cin >> nombre; Es importante darse cuenta de que ahora ya no hace falta especificar el tipo de dato que va a ser impreso o ledo, asociandolo con un formato determinado. Es el propio programa el que decide el tipo de dato en tiempo de ejecucion gracias a que estos operadores estan sobrecargados de tal manera que admiten tanto los tipos predefinidos como aquellos tipos de datos definidos por el usuario. Cdigos de escape. Se utilizan para producir un tabulador, retorno de carro, movimiento del cursor hacia atras, incluso un pitido. Siempre comienzan por un ' \ ' seguido de una letra. Algunos son:

\n \r \t \v \b

Newline Retorno de carro. Tabulador horizontal. Tabulador vertical. Espacio hacia atrs

Expresiones. Una expresin es una combinacin de operadores y operandos de cuya evaluacin se obtiene un valor. Los operandos pueden ser nombres que denoten objetos variables o constantes, funciones, literales de cualquier tipo adecuado de

12

acuerdo con los operadores u otras expresiones ms simples. La evaluacin de una expresin da lugar a un valor de algn tipo, una expresin se dice que es del tipo de su resultado. Ejemplos de expresiones: a + 5*b (a >= 0) and ((b+5) > 10) a -a * 2 + b -b + sqrt(b**2 - 4*a*c) length(s) > 0 Las expresiones se evalan de acuerdo con la precedencia de los operadores. Ante una secuencia de operadores de igual precedencia, la evaluacin se realiza segn el orden de escritura, de izquierda a derecha. El orden de evaluacin puede modificarse usando parntesis. Operadores. Ada agrupa los operadores en 6 categoras, de menor a mayor precedencia. Los operadores binarios se usan en formato infijo (<operando_izquierdo> <operador> <operando_derecho>), como en "a + b". Los operadores unarios se usan en formato prefijo (<operador> <operando> ), como en "-5". Operadores lgicos. Estn predefinidos para cualquier tipo, T, que designe un booleano, modular o un array monodimensional de componentes booleanos: function "and"(Left, Right : T) return T function "or" (Left, Right : T) return T function "xor"(Left, Right : T) return T

13

Archivos de cabecera.
Se denomina header file, al espaol fichero/archivo (de) cabecera, o include file, al espaol fichero de inclusin, en ciencias de computacin, especialmente en el mbito de los lenguajes de programacinC y C++, al archivo, normalmente en forma de cdigo fuente, que el compilador incluye de forma automtica al procesar algn otro archivo fuente. Tpicamente los programadores especifican la inclusin de losheader files por medio de pragmas al comienzo (head o cabecera) de otro archivo fuente. Un header file contiene, normalmente, una declaracin directa de clases, subrutinas, variables, u otros identificadores. Aquellos programadores que desean declarar identificadores estndares en ms de un archivo fuente pueden colocar esos identificadores en un nico header file, que se incluir cuando el cdigo que contiene sea requerido por otros archivos. La biblioteca estndar de C y la biblioteca estndar de C++ tradicionalmente declaran sus funciones estndar en header files. En la mayora de lenguajes de programacin modernos, los programadores pueden dividir los programas en componentes de menor tamao (como pueden ser clases y subrutinas) y distribuir esos componentes entre muchas unidades por traducir (tpicamente en forma de archivos), que el sistema puede compilar de forma autnoma. Si una subrutina se tiene que usar al margen de la unidad por traducir donde ha sido definida, se tiene que introducir el concepto de declaracin directa o prototipos de funciones. Por ejemplo, una funcin definida as en un archivo fuente: int add(int a, int b) { return a + b; }

14

puede declararse (con un prototipo de funcin) y ser referida desde un segundo archivo fuente como sigue: int add(int, int);

int triple(int x) { return add(x, add(x, x)); } Sin embargo en esta simple ilustracin se requiere que el programador mantenga la declaracin de la funcin de add en dos sitios en el archivo que contiene su implementacin y en el archivo que usa la funcionalidad. Si la definicin de la funcin llega a alterarse, entonces el programador debe actualizar todos los prototipos repartidos a lo largo del programa. Esto es necesario porque la implementacin de ambos, C y C++ han de diagnosticar todas las violaciones de lo que en C++ se llama "one definition rule" (ODR), al espaol "regla de una nica definicin". De hecho, la mayora de ellos se sirven de un enlazador para realizar esta labor. El enlazador, sin embargo, suele conocer, de forma muy limitada los tipos usados en los programas. Por ello, algunas de las violaciones de ODR no se detectan a la hora de implementar el lenguaje. Como resultado, es responsabilidad del programador el mantener la coherencia de todas las declaraciones que cruzan las fronteras de una unidad por traducir. Buscar todas estas declaraciones de una entidad externa y verficar que son compatibles de forma manual es una tarea ardua. (Ntese que C no define el trmino "one definition rule" es especfico del lenguaje C++. Si declaraciones de la misma entidad en muchos archivos fuentes de C son diferentes, la funcin no funcionar de forma adecuada y puede llegarse a un comportamiento impredecible, independientemente de la regla que se est violando.) Para entender una violacin ODR, considrese el siguiente cdigo (correcto): /* File print-heading.c */

15

#include <stdio.h>

void print_heading(void) { printf("standard heading\n"); } /* File main.c */ void print_heading(void);

int main(void) { print_heading(); return 0; } La unidad por traducir representada por el archivo fuente main.c referencia a la funcin print_heading() que est definida en otra unidad por traducir (printheading.c). De acuerdo con las reglas de C99, los programadores deben declarar una funcin externa antes del primer uso. Para cumplir con este requisito el archivo main.c declara la funcin en la primera lnea. Esta versin del cdigo funciona de forma correcta. Posteriormente, el programador que mantiene el archivo fuente printheading.c puede decidir hacer la funcin ms flexible y dar soporte a cabeceras a gusto del usuario. Una posible implementacin podra ser la siguiente: /* File print-heading.c */ #include <stdio.h>

void print_heading(const char *heading) { printf("%s\n", heading);

16

} Si el programador olvida actualizar la declaracin en main.c, se pueden dar resultados devastadores. La funcin print_heading() espera un argumento y hace uso del valor del mismo, sin embargo la funcinmain() no provee ningn valor. Al ejecutar este programa se produce un comportamiento impredecible: la aplicacin puede imprimir basura, terminar de forma inesperada o dar pie a resultados impredecibles en la plataforma en la que es ejecutado. Por qu se puede compilar y enlazar este cdigo sin problema alguno? El motivo es que el compilador se gua por la declaracin en main.c a la hora de compilar la unidad por traducir main.c. Y esa declaracin se ajusta con la forma de la funcin. Ms tarde, cuando el enlazador combina la las translation de unitos ya

compiladas main.c y print-heading.c (en

mayora

implementaciones

representadas como archivos main.o o main.obj), probablmente podra detectar la inconsistencia pero no en C. Las implementaciones en C referencian las funciones por el nombre al nivel de archivo objeto y archivo binario, esto no incluye el valor de retorno o la lista de argumentos. El enlazador encuentra una referencia a print_heading() en main.o y una funcin adecuada en print-heading.o. Llegado este punto, toda la informacin relativa a tipos de argumentos de funciones se pierde. Cmo es entonces posible llevar a cabo declaraciones mltiples sin problema alguno? La solucin se llama header file. El header file de un mdulo declara cada funcin, objeto y tipo de dato que forma parte delinterfaz pblico del mdulo por ejemplo, en este caso el header file incluira slo la delcaracin de add. Todo aquel archivo fuente que se refiera a add usa la directiva #include en el header file: /* File add.h */ #ifndef ADD_H #define ADD_H

int add(int, int);

17

#endif /* ADD_H */ (Ntese que el header file utiliza un "Include guard".) /* File triple.c */ #include "add.h"

int triple(int x) { return add(x, add(x, x)); } This reduces the maintenance burden: when a definition changes, only a single copy of the declaration must be updated (the one in the header file). The header file may also be included in the source file that contains the corresponding definitions, giving the compiler an opportunity to check the declaration and the definition for consistency. /* File add.c */ #include "add.h"

int add(int a, int b) { return a + b; } Normalmente, los programadores slo utilizan los header files para especificar los interfaces, y suelen aportar al menos, una pequea cantidad de informacin explicando cmo usar los componentes declarados en el archivo. Al igual que en este ejemplo, las implementaciones de subrutinas permanecen en un archivo fuente separado, que continua siendo compilado de forma independiente. (Una excepcin comn entre C y C++ son las "funciones inline", que suelen incluirse en header files porque la mayora de implementaciones no pueden

18

expendir funciones inline de forma adecuada sin ver sus definiciones durante el tiempo de compilacin.) Bibliotecas. En C++, la biblioteca estndar es una coleccin de Clases y funciones, escritas en el ncleo del lenguaje. La biblioteca estndar proporciona varios contenedores genricos, funciones para utilizar y manipular esos contenedores, funciones objeto, cadenas y flujos genricos (incluyendo E/S interactiva y de archivos) y soporte para la mayora de las caractersticas del lenguaje. La biblioteca estndar de C++ tambin incorpora la ISO C90 biblioteca estndar de C. Las caractersticas de la biblioteca estndar estn declaradas en el espacio de nombres (namespace) std. La Standard Template Library es un subconjunto de la biblioteca estndar de C++ que contiene los contenedores, algoritmos, iteradores, funciones objeto, etc; aunque algunas personas utilizan el trmino STL indistintamente con la biblioteca estndar de C++. Los archivos de Cabecera de la biblioteca estndar de C++ no terminan en ".h Los siguientes archivos contienen las declaraciones de la biblioteca estndar. Cada cabecera de la biblioteca estndar de C est incluida en la biblioteca estndar de C++ con diferente nombre, generado eliminando la extensin .h y aadiendo una 'c' al inicio, por ejemplo 'time.h' se convierte en 'ctime'. La nica diferencia entre estas cabeceras y las cabeceras tradicionales de la biblioteca estndar de C es que es posible que las funciones estn incluidas en el namespace 'std::' (aunque algunos compiladores lo hacen). En el ISO C, las funciones de la biblioteca estndar se pueden implementar por macros, cosa no permitida por el ISO C++.

19

Biblioteca estndar de C

<cassert> <cctype> <cerrno> <cfloat> <climits> <cmath> <csetjmp> <csignal> <cstdlib> <cstddef> <cstdarg> <ctime> <cstdio> <cstring> <cwchar> <cwcty

Contenedores <bitset> Provee la clase contenedora especializada std::bitset, un arreglo de bits. <deque> Provee la plantilla clase contenedora std::deque, una cola doblemente enlazada. <list> Provee la plantilla clase contenedora std::list, una lista doblemente enlazada. <map> Provee las plantillas clases contenedoras std::map y std::multimap, un arreglo asociativo y un arreglo asociativo mltiple respectivamente. <queue>

20

Provee la clase adaptadora contenedora std::queue, una cola de datos. <set> Provee las plantillas clases contenedoras std:: set y std: :multiset, contenedores asociativos ordenados. <stack> Provee la clase adaptadora contenedora std::stack, una pila de datos. <vector> Provee la plantilla clase contenedora std::vector, un arreglo dinmico.

Funciones I: Declaracin y definicin Las funciones son un conjunto de instrucciones que realizan una tarea especfica. En general toman ciertos valores de entrada, llamados parmetros y proporcionan un valor de salida o valor de retorno; aunque en C++, tanto unos como el otro son opcionales, y pueden no existir. Tal vez parezca un poco precipitado introducir este concepto tan pronto en el curso. Sin embargo, las funciones son una herramienta muy valiosa, y como se usan en todos los programas C++, creo que debemos tener, al menos, una primera nocin de su uso. A fin de cuentas, todos los programas C++ contienen, como mnimo, una funcin. Prototipos de funciones En C++ es obligatorio usar prototipos. Un prototipo es una declaracin de una funcin. Consiste en una presentacin de la funcin, exactamente con la misma estructura que la definicin, pero sin cuerpo y terminada con un ";". La estructura de un prototipo es: [extern|static] <tipo_valor_retorno> <identificador>(<lista_parmetros>); [<modificadores>]

En general, el prototipo de una funcin se compone de las siguientes secciones:

Opcionalmente, una palabra que especifique el tipo de almacenamiento, puede ser extern o static. Si no se especifica ninguna, por defecto ser extern. No te preocupes de esto todava, de momento slo usaremos funciones externas, lo menciono porque es parte de la declaracin.

21

El tipo del valor de retorno, que puede ser void, si no necesitamos valor de retorno. En C, si no se establece, ser int por defecto, aunque en general se considera una mala tcnica de programacin omitir el tipo de valor de retorno de una funcin. En C++ es obligatorio indicar el tipo del valor de retorno. Modificadores opcionales. Tienen un uso muy especfico, de momento no entraremos en este particular, lo veremos en captulos posteriores. El identificador de la funcin. Es costumbre, muy til y muy recomendable, poner nombres que indiquen, lo ms claramente posible, qu es lo que hace la funcin, y que permitan interpretar qu hace el programa con slo leerlos. Cuando se precisen varias palabras para conseguir este efecto se puede usar alguna de las reglas ms usuales. Una consiste en separar cada palabra con un "_". Otra, que yo prefiero, consiste en escribir la primera letra de cada palabra en mayscula y el resto en minsculas. Por ejemplo, si hacemos una funcin que busque el nmero de telfono de una persona en una base de datos, podramos llamarla "busca_telefono" o "BuscaTelefono". Una lista de declaraciones de parmetros entre parntesis. Los parmetros de una funcin son los valores de entrada (y en ocasiones tambin de salida). Para la funcin se comportan exactamente igual que variables, y de hecho cada parmetro se declara igual que una variable. Una lista de parmetros es un conjunto de declaraciones de parmetros separados con comas. Puede tratarse de una lista vaca. En C es preferible usar la forma "func(void)" para listas de parmetros vacas. En C++ este procedimiento se considera obsoleto, se usa simplemente "func()".

Por ejemplo: int Mayor(int a, int b); Un prototipo sirve para indicar al compilador los tipos de retorno y los de los parmetros de una funcin, de modo que compruebe si son del tipo correcto cada vez que se use esta funcin dentro del programa, o para hacer las conversiones de tipo cuando sea necesario. En el prototipo, los nombres de los parmetros son opcionales, y si se incluyen suele ser como documentacin y ayuda en la interpretacin y comprensin del

22

programa. El ejemplo de prototipo anterior sera igualmente vlido si se escribiera como: int Mayor(int, int); Esto slo indica que en algn lugar del programa se definir una funcin "Mayor" que admite dos parmetros de tipo int y que devolver un valor de tipo int. No es necesario escribir nombres para los parmetros, ya que el prototipo no los usa. En otro lugar del programa habr una definicin completa de la funcin. Normalmente, los prototipos de las funciones se declaran dentro del fichero del programa, o bien se incluyen desde un fichero externo, llamado fichero de cabecera, (para esto se usa la directiva #include, que veremos en el siguiente captulo). Ya lo hemos dicho ms arriba, pero las funciones son extern por defecto. Esto quiere decir que son accesibles desde cualquier punto del programa, aunque se encuentren en otros ficheros fuente del mismo programa. En contraposicin las funciones declaradas static slo son accesibles dentro del fichero fuente donde se definen. Definicin de funciones

Al igual que hemos visto con las variables, las funciones deben declararse, para lo que usaremos los prototipos, pero tambin deben definirse. Una definicin contiene adems las instrucciones con las que la funcin realizar su trabajo, es decir, su cdigo. La sintaxis de una definicin de funcin es: [extern|static] <tipo_valor_retorno> <identificador>(<lista_parmetros>) { [sentencias] } [modificadores]

Como vemos, la sintaxis es idntica a la del prototipo, salvo que se elimina el punto y coma final, y se aade el cuerpo de funcin que representa el cdigo que ser ejecutado cuando se llame a la funcin. El cuerpo de la funcin se encierra entre llaves "{}".

23

La definicin de la funcin se hace ms adelante o ms abajo, segn se mire, es decir, se hace despus que el prototipo. Lo habitual es hacerlo despus de la funcinmain. Una funcin muy especial es la funcin main, de la que ya hablamos en el captulo primero. Se trata de la funcin de entrada, y debe existir siempre, ya ser la que tome el control cuando se ejecute el programa. Los programas Windows usan la funcin WinMain como funcin de entrada, aunque en realidad esta funcin contiene en su interior la definicin de una funcin main, pero todo esto se explica en otro lugar. Existen reglas para el uso de los valores de retorno y de los parmetros de la funcin main, pero de momento la usaremos como int main() o int main(void), con un entero como valor de retorno y sin parmetros de entrada. El valor de retorno indicar si el programa ha terminado sin novedad ni errores retornando cero, cualquier otro valor de retorno indicar un cdigo de error. Sentencias ^ Espero que hayas tenido la paciencia suficiente para llegar hasta aqu, y que no te hayas asustado demasiado. Ahora empezaremos a entrar en la parte interesante y estaremos en condiciones de aadir algn ejemplo. El elemento que nos falta para empezar a escribir programas que funcionen son las sentencias. Existen sentencias de varios tipos, que nos permitirn enfrentarnos a todas las situaciones posibles en programacin. Estos tipos son:

Bloques Expresiones
o o o

Llamada a funcin Asignacin Nula

Bucles
o

while

24

o o

do...while for

Etiquetas
o o o

Etiquetas de identificacin case default

Saltos
o o o o

break continue goto return

Seleccin
o o

if...else switch

Comentarios

Bloques ^ Una sentencia compuesta o un bloque es un conjunto de sentencias, que puede estar vaca, encerrada entre llaves "{}". Sintcticamente, un bloque se considera como una nica sentencia. Tambin se usa en variables compuestas, como veremos en el captulo de variables II, y en la definicin de cuerpo de funciones. Los bloques pueden estar anidados hasta cualquier profundidad. Expresiones ^

25

Una expresin seguida de un punto y coma (;), forma una sentencia de expresin. La forma en que el compilador ejecuta una sentencia de este tipo evaluando la expresin. Cualquier efecto derivado de esta evaluacin se completar antes de ejecutar la siguiente sentencia. <expresin>; Llamadas a funcin Esta es la manera de ejecutar las funciones que se definen en otras partes del programa o en el exterior de ste, ya sea una biblioteca estndar o particular. Consiste en el nombre de la funcin, una lista de argumentos entre parntesis y un ";". Por ejemplo, para ejecutar la funcin que declarbamos en el captulo 3 usaramos una sentencia como sta: Mayor(124, 1234); Pero vamos a complicar un poco la situacin para ilustrar la diferencia entre una sentencia de expresin y una expresin, reflexionemos sobre el siguiente ejemplo: Mayor(124, Mayor(12, 1234)); Aqu se llama dos veces a la funcin "Mayor", la primera vez como una sentencia; la segunda como una expresin, que nos proporciona el segundo parmetro de la sentencia. Pero en realidad, el compilador evala primero la expresin, de modo que se obtenga el segundo parmetro de la funcin, y despus llama a la funcin. Parece complicado?. Puede ser, pero tambin puede resultar interesante... En el futuro diremos mucho ms sobre este tipo de sentencias, pero por el momento es suficiente.

26

Asignacin Las sentencias de asignacin responden al siguiente esquema: <variable> <operador de asignacin> <expresin>; La expresin de la derecha es evaluada y el valor obtenido es asignado a la variable de la izquierda. El tipo de asignacin depender del operador utilizado, estos operadores ya los vimos en el captulo anterior. La expresin puede ser, por supuesto, una llamada a funcin. De este modo podemos escribir un ejemplo con la funcin "Mayor" que tendr ms sentido que el anterior: m = Mayor(124, 1234); Nula La sentencia nula consiste en un nico ";". Sirve para usarla en los casos en los que el compilador espera que aparezca una sentencia, pero en realidad no pretendemos hacer nada. Veremos ejemplo de esto cuando lleguemos a los bucles. Los compiladores. son programas o herramientas encargadas de compilar. Un compilador

toma un texto (cdigo fuente) escrito en un lenguaje de alto nivel y lo traduce a un lenguaje comprensible por las computadoras (cdigo objeto).

Bsicamente, existen dos grandes formas de ejecutar programas: programas compilados (previamente pasados por un compilador) y

programas interpretados (necesitan pasar por un intrprete para ejecutarse en tiempo real).

27

Caractersticas de un compilador Generalmente un compilador se divide en dos partes: * Front End: parte que analiza el cdigo fuente, comprueba su validez, genera el rbol de derivacin y rellena los valores de la tabla de smbolos. Parte que suele ser independiente de la plataforma osistema operativo para el que funcionar.

* Back End: parte en donde se genera el cdigo mquina exclusivo para una plataforma a partir de lo analizado en el front end.

Por lo general el resultado del back end no puede ser ejecutado directamente, se necesita pasar por un proceso de enlazado (linker).

Existen varios tipos de compiladores: Compiladores cruzados, Compiladores optimizadores, Compiladores de una sola pasada, Compiladores de varias pasadas, Compiladores JIT (Just In Time). UN ENLAZADOR (en ingls, linker) es un programa que toma los objetos generados en los primeros pasos del proceso de compilacin, la informacin de todos los recursos necesarios (biblioteca), quita aquellos recursos que no necesita, y enlaza el cdigo objeto con su(s) biblioteca(s) con lo que finalmente produce un fichero ejecutable o una biblioteca. En el caso de los programas enlazados dinmicamente, el enlace entre el programa ejecutable y las bibliotecas se realiza en tiempo de carga o ejecucin del programa.

28

CONCLUSIN.

C++ Builder Creado por una empresa de nombre Inprise, sobradamente conocida por la calidad de sus herramientas de desarrollo, que llevan la firma Borland, entre las que estn Borland C++, Intrabuilder, JBuilder, Delphi, C++ Builder. C++ Builder surgi de la fusin de dos tecnologas: Borland C++ que soporta el lenguaje C++ estndar con todas sus novedades, y el entorno RAD de Delphi. Visual C++ En el ao de 1992, la compaa Microsoft introduce C/C++ 7.0 y la biblioteca de clases MFC, los cuales tenan la finalidad de que el desarrollo de aplicaciones para Windows, escritas en C, fuera ms fcil. Sin embargo, no result como esperaban, as que un ao ms tarde fue creado Visual C++ 1.0, que pareca ms amigable a los desarrolladores, porque tena una versin mejorada de las clases MFC. Con Visual C++ se introdujo una tecnologa de desarrollo a base de asistentes. En general es un entorno de desarrollo diseado para crear aplicaciones grficas orientadas a objetos. Pero si cree que se trata slo de arrastrar componentes hacia un formulario, como lo puede hacer en Visual Basic, est muy equivocado. La programacin en l es ms compleja que eso.

29

BIBLIOGRAFIA.

JAVIER GARCA DE JALN JOS IGNACIO RODRGUEZ JOS MARA SARRIEGUI ALFONSO BRAZLEZ APRENDA C++ COMO SI ESTUVIERA EN PRIMERO ESCUELA SUPERIOR DE INGENIEROS INDUSTRIALES DE SAN SEBASTIN UNIVERSIDAD DE NAVARRA http://www.tayuda.com/ayudainf/index.htm

30