ebook img

Manual de Programación en Lenguaje C++ PDF

33 Pages·2008·0.143 MB·Spanish
Save to my drive
Quick download
Download
Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.

Preview Manual de Programación en Lenguaje C++

Manual de Programaci´on en Lenguaje C++ Proyecto de Investigaci´on:M´etodos de Funciones de Base Radial para la Solucio´n de EDP. Servicio Social - DGSCA-UNAM, 2008. Autor: Linda I. Olivares Flores ´ Indice general 1. Introduccio´n al lenguaje de programaci´on C++ 3 1.1. Lenguaje C++ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 1.2. C++ en un entorno Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 1.3. Estructura de un programa en C++ . . . . . . . . . . . . . . . . . . . . . . . 7 1.4. Variables y Tipos de datos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 1.4.1. Conversio´nde Tipos . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 1.5. Espacios de nombres en C++ . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 1.6. Bloque de sentencias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 1.6.1. Sentencia if . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 1.6.2. Comparaciones en C++ . . . . . . . . . . . . . . . . . . . . . . . . . . 12 1.6.3. Asignaciones en C++ . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 1.6.4. Sentencia Switch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 1.6.5. Sentencia For . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 1.6.6. Sentencias While y do While . . . . . . . . . . . . . . . . . . . . . . . 14 1.6.7. Sentencia exit y return . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 1.6.8. Algunos ejemplos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 1.7. Funciones y Estructuras . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 1.7.1. Funciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 1.7.2. Estructuras . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 1.8. Arreglos y Apuntadores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 1.8.1. Arreglos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 1.8.2. Apuntadores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 1.9. Manejo de Memor´ıa Dina´mica . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 1.10.Estructura de Datos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 2 Cap´ıtulo 1 Introducci´on al lenguaje de programaci´on C++ 1.1. Lenguaje C++ C++esunlenguajedeprogramaci´on,creadoamediadosde1980porBjarneStrousstrup, como extensio´n del lenguaje C. Este lenguaje abarca tres paradigmas de la programaci´on: 1. Programaci´onEstructurada 2. Programaci´onGen´erica 3. Programaci´onOrientada a Objetos En la actualidad, C++ es un lenguaje vers´atil, potente y general. Su ´exito entre los programadores le ha llevado a ocupar el primer puesto como herramienta de desarrollo de aplicaciones, ya sea en Windows o GNU Linux, que es el sistema operativo en el cual basa- remos este tutorial. 1.2. C++ en un entorno Linux Comenzaremosdiciendoquelosprogramassepuedenescribirencualquiereditordetextos de GNU, entre ellos se encuentran emacs, vim, kate, gedit, nan, guardando dichos archivos conextensio´n.cpp,loscualesser´ancompiladosenGNU/linuxutilizandoelcompiladorGNU deC++,llamadogccquepuedecompilarC,C++,yqueadem´asseapegaalestandarANSI, permitiendo la portabilidad de estos co´digos. Dicho compilador se invoca con el comando gcc. 3 Para compilar ponemos la siguiente l´ınea en una terminal previamente ubicada en el directorio que contiene nuestro archivo: g++ programa.cpp -o programa.out -o indica el nombre del archivo de salida el cual ser´a el ejecutable de nuestro proyecto. Luegoparaejecutar,escribimossobrelal´ıneadecomandos:./programa.out yentonces podremos ejecutar nuestro programa. Cuandocreamospequen˜osprogramaslacompilacio´nde´estosesmuyf´acil,perocuandose trabaja con proyectos grandes, con varios archivos fuente la compilacio´n resulta m´as dificil, porloqueLinuxproporcionalautiler´ıamake deGNU,elcualbuscaunarchivomakedonde encontrar´a toda la informaci´onque necesita para crear el ejecutable, si encuentra el archivo busca la palabra makefile o Makefile, que son nombres predeterminados. Losarchivosmakecontieneninformaci´onacercadelacompilacio´nyenlacedelprograma, con una sintaxis muy especifica. Un makefile se define como una lista de normas y depen- dencias consus correspondientescomandos paracrearobjetivos,utilizando dichas normasy dependencias. Un archivo Makefile es un archivo de texto en el cual se distinguen cuatro tipos ba´sicos de declaraciones: 1. Comentarios: Al igual que en los programas, contribuyen a un mejor entendimiento de las reglas definidas en el archivo.Los comentarios se inician con el caracter #, y se ignora todo lo que continu´e despu´es de ella, hasta el final de l´ınea. 2. Variables: Se definen utilizando el siguiente formato: nombre = dato De esta forma, se simplifica el uso de los archivos Makefile. Para obtener el valor se emplea la variable encerrada entre par´entesis y con el caracter $ al inicio, en este caso todas las instancias de $(nombre) ser´an reemplazadas por datos. Por ejemplo, la siguiente definici´on SRC = main.c origina la siguiente l´ınea: gcc $ SRC y ser´a interpretada como: gcc main.c Sin embargo,pueden contener m´as de un elemento. Por ejemplo: objects = programa 1.o programa 2.o programa 3.o \ programa 4.o programa 5.o 4 programa:$(objects) gcc -o programa $(objects) Hay que notar que make hace distinci´on entre mayu´sculas y minu´sculas. 3. Reglas Expl´ıcitas:Estasle indicanamakequ´earchivosdependendeotros,as´ıcomo los comandos requeridos para compilar un archivo en particular. Su formato es: archivoDestino:archivosOrigen Esta regla indica que, para crear archivoDestino, make debe ejecutar comandos sobre los archivos archivosOrigen.Por ejemplo: main: main.c funciones.h gcc -o main main.c funciones.h esto significa que, para crear el archivo de destino main, deben existir los archivos main.c y funciones.h y adem´as debe ejecutar el comando: gcc -o main main.c funciones.h 4. Reglas Impl´ıcitas:Sonsimilaresalasreglasexpl´ıcitas,peronoindicanloscomandos aejecutar,sinoquemakeutilizalossufijos(extensionesdelosarchivos)paradeterminar que comandos ejecutar. Por ejemplo: funciones.o: funciones.c funciones.h origina la siguiente l´ınea: $(CC) $(CFLAGS) c funciones.c funciones.h Existeunconjuntodevariablesqueseempleanparalasreglasimpl´ıcitas,yexistendos categor´ıas: aquellas que son nombres de programas (como CC) y aquellas que tienen los argumentos para los programas (como CFLAGS). Estas variables son provistas y contienen valores predeterminados, sin embargo, pueden ser modificadas, como se muestra a continuaci´on: CC = gcc CFLAGS = -Wall -O2 En el primer caso, se ha indicado que el compilador que se empleara´ es gcc y sus para´metros son -Wall -O2. Este co´digo debe estar en un archivo llamado Makefile o makefile o tendriamos que usar la opci´on -f que nos permite ubicarnos en el directorio ra´ız. 5 Ejemplo de Makefile. CPPFLAGS = CPPLIBS = main: Conjunto.o main.o g++ -o main main.o Conjunto.o $(CPPLIGS) Conjunto.o: Conjunto.cpp Conjunto.h g++ $(CPPFLAGS) -c -o Conjunto.o Conjunto.cpp main.o: Conjunto.h g++ $(CPPFLAGS) -c -o main.o main.cpp clean: rm *.o main Para ejecutar este archivo, escribimos sobre la linea de comandos: make, esta opci´on nos creara´ el archivo de salida, que ser´a el ejecutable. Esaqu´ıdondevienelaverdaderapruebadefuegodelprogramador:cuandolanzalaorden de compilar y enlazar su programa. Todoslosm´odulosinvolucradosenlospasosanteriores,compilador,analizadorsinta´ctico yenlazadorpuedendetectarerroresennuestroco´digoymostrarlosmensajescorrespondien- tes. Estos errores son considerados solo de tres tipos: 1. De tiempo de compilacio´n.Se englobanaqu´ıloserroresdetectados por preprocesa- dor, el analizador sinta´ctico y el propio compilador. Los hay meramente sinta´cticos. 2. De tiempo de enlazado. Son detectados por el enlazador. Por ejemplo una llamada a funcio´n cuya definici´on no aparece por ninguna parte. 3. De tiempo de (runtime). Existe finalmente una u´ltima clase de errores: los que se producen cuando se ejecuta el programa; son precisamente los m´as dif´ıciles de diag- nosticar y verificar, sobre todo en aplicaciones grandes. 6 1.3. Estructura de un programa en C++ Para darnos una idea chequemos el siguiente programa //Mi primer programa en C++ # include <iostream> using namespace std; int main (){ count << "hello World"; return 0; } El programa anterior es t´ıpico de los programadores aprendices, el resultado de su im- presio´n en pantalla es la frase: ”hello World” Esunodelosm´assimplesprogramasquepuedenestarescritosenC++,peroyacontiene los componentes fundamentales que todos los programas escritos en C + +. Vamos a ver l´ınea por l´ınea en el co´digo lo que hemos escrito: //Mi primer programa en C++ Setratade unal´ıneadecomentario.Todaslasl´ıneasquecomiencencondossignosbarra se considerancomentariosy no tienen ningu´n efecto sobre elcomportamiento delprograma. Elprogramadorpuede usar paraincluir breves explicacioneso alegacionesdentrodel co´digo fuente en s´ı. En este caso, la l´ınea es una breve descripcio´n de lo que es nuestro programa. # include <iostream> Las l´ıneas que comienza con un s´ımbolo de sostenido # son directivas para el preproce- sador. En este caso, la directiva # include <iostream>le dice al preprocesador que incluya el iostream esta´ndar de archivo. Este archivo espec´ıfico (iostream) incluye las declaraciones de la norma ba´sica de entrada y salida de la biblioteca de C++. using namespace std; Todosloselementosdelmodelode librer´ıade C++sedeclarandentrode loque se deno- minaunespaciodenombres.Porlotanto,parapoderaccederasufuncionalidaddeclaramos 7 con esta expresi´on que vamos a utilizar estas entidades. Esta l´ınea es muy frecuente en los programas que utilizan la biblioteca esta´ndar, y de hecho ser´a incluido en la mayor´ıa de los co´digos. int main () Esta l´ınea se corresponde con el comienzo de la definici´on de la funcio´n principal. La funcio´n principal es el punto por donde todos los programas inician su ejecucio´n, indepen- dientemente de su ubicaci´on dentro del co´digo fuente. No importa si hay otras funciones con otros nombres definidos antes o despu´es de las instrucciones que figuran dentro de esta funcio´n,yaquepordefinici´onser´asiemprelaprimeraenserejecutada.Poresamismarazo´n, es esencial que todos los programastenganuna funcio´n principal. Lo que se contiene dentro de las llaves que delimitan la funcio´n es lo que hace cuando se ejecuta. count <<"hello World"; Estal´ıneaesunadeclaraci´ondeC++,ent´erminossimplesesunaexpresi´onqueproduce algu´n efecto. De hecho, esta declaraci´on lleva a cabo la u´nica acci´on que genera un efecto visible en nuestro programa. Representa el flujo de salida y su objetivo es insertar una secuencia de caracteres ( ”hello World”) en el flujo de salida esta´ndar (pantalla) return 0; Estadeclaraci´onhace que la funcio´n pricipaltermine.Un co´digode retornoes 0, cuando lafuncio´nprincipalinterpretademanerageneralqueelprogramatrabaj´ocomoseesperaba, sin ningu´n error durante su ejecucio´n. Esta es la forma m´as habitual para poner fin a un programa C++ en la consola. 8 1.4. Variables y Tipos de datos Una variable es un espacio de memor´ıareservadoen el ordenadorparacontener valores que pueden cambiar durante la ejecucio´n de un programa. Los tipos que se le asignen a estas determinan co´mo se manipular´a la informaci´on contenida en ellas. Cada variable necesita un identificador que la distingue de las dema´s. Un identificador v´alidoesunasecuenciadeunaom´asletras,d´ıgitosoguionesbajos,recordandoquenodeben coincidirconpalabrasreservadasdellenguaje,debencomenzarporunaletrayadem´astomar en cuenta que C++ hace diferencia entre mayu´sculas y minu´sculas. Las variables que se pueden presentar en un programa son de los siguientes tipos: 1. Variables Locales . Se definen solo en bloque en el que se vayan a ocupar, de esta manera evitamos tener variables definidas que luego no se utilizan. 2. Variables Globales. No son lo m´as recomendable, pues su existencia atenta contra la comprensio´n del co´digo y su encapsulamiento. 3. Variables est´aticas. Se tienen que inicializar en el momento en que se declaran, de manera obligatoria. Ahora hablemos de los tipos de datos que reconoce C++. Estos definen el modo en que se usa el espacio (memoria) en los programas. Al especificar un tipo de datos, estamos indicando al compilador como crear un espacio de almacenamiento en particular, y tambi´en como manipular este espacio. Un tipo de dato define el posible rango de valores que una variablepuede tomaralmomentode ejecucio´ndelprogramayalo largode todala vida u´til del propio programa. Los tipos de datos pueden ser predefinidos o abstractos. Un tipo de dato predefinido es intr´ınsecamente comprendido por el compilador. En contraste, un tipo de datos definido por el usuario es aquel que usted o cualquier otro programador crea como una clase, que comu´nmente son llamados tipos de datos abstractos. 9 Los tipos de datos m´as comunes en C++ son: TipodeDato EspacioenMemoria Rango unsigned char 8 bits 0 a 255 char 8 bits -128 a 127 short int 16 bits -32,768 a 32,767 unsigned int 32 bits 0 a 4,294,967,295 int 32 bits -2,147,483,648a 2,147,483,647 unsigned long 32 bits 0 a 4,294,967,295 enum 16 bits -2,147,483,648a 2,147,483,647 long 32 bits -2,147,483,648a 2,147,483,647 float 32 bits 3.4 x 10-38 a 3.4 x 10+38(6 dec) double 64 bits 1.7 x 10-308 a 1.7*10+308(15dec long double 80 bits 3.4 x 10-4932 a 1.1 x 10+4932 void sin valor 1.4.1. Conversi´on de Tipos Cuandonuestroprogramacontieneoperacionesbinariasconoperandosdedistintostipos, estosseconviertenauntipoencomu´n,engeneralparaconversionesexpl´ıcitasC++haceuso delcasting, lo que nos permite tener m´as presicio´nen aquelloscasosenlos que elresultado de la operacio´n no es un int y la variuable receptora s´ı lo es. Algunas reglas que controlan estas conversiones son las siguientes: 1. Cualquier tipo entero pequen˜o como char o short ser´a convertido a int o unsigned int. 2. Si algu´n operando es de tipo long double, el otro se convertir´a a long double. 3. Si algu´n operando es de tipo double, el otro se convertira´ a double. 4. Si algu´n operando es de tipo float, el otro se convertir´a a float. 5. Si algu´n operando es de tipo unsigned long long, el otro se convertir´a a unsigned long long. 6. Si algu´n operando es de tipo long long, el otro se convertir´a a long long. 7. Si algu´n operando es de tipo unsigned long, el otro se convertir´a a unsigned long. 8. Si algu´n operando es de tipo long, el otro se convertir´a a long. 9. Si algu´n operando es de tipo unsigned int, el otro se convertir´a a unsigned int. 10

See more

The list of books you might like

Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.