fundamentos de programacion c++

Upload: teresa-giraldo-garron

Post on 08-Jul-2015

316 views

Category:

Documents


4 download

TRANSCRIPT

UNIVERSIDADDEMALAGADpt. LenguajesyCC. ComputacionE.T.S.I. InformaticaIngenieraInformaticaFundamentos de Programacionconel Lenguaje de Programaci onC++VicenteBenjumea ManuelRoldan6dejuliode20112Este obraestabajounalicenciaReconocimiento-NoComercial-CompartirIgual 3.0Un-ported de Creative Commons: No se permite un uso comercial de la obra original nide las posibles obras derivadas, la distribucion de las cuales se debe hacer con una li-cencia igual a la que regula la obra original. Para ver una copia de esta licencia, visitehttp://creativecommons.org/licenses/by-nc-sa/3.0/deed.esES o envie una carta a Creative Com-mons,171SecondStreet,Suite300,SanFrancisco,California94105,USA.Ustedeslibrede: Copiar,distribuirycomunicarp ublicamentelaobra. Hacerobrasderivadas.Bajolassiguientescondiciones: Reconocimiento(Attribution)Debereconocerloscreditosdelaobradelamaneraespecicadaporelautoroellicenciador(peronodeunamaneraquesugieraquetienesuapoyooapoyanelusoquehacedesuobra). Nocomercial(Noncommercial)Nopuedeutilizarestaobraparanescomerciales. Compartir bajolamismalicencia(Share alike) Si alteraotransformaestaobra,ogeneraunaobraderivada, solopuededistribuirlaobrageneradabajounalicenciaidenticaa esta.Entendiendoque: RenunciaAlgunadeestascondicionespuedenoaplicarsesiseobtieneelpermisodeltitulardelosderechosdeautor DominioP ublicoCuandolaobraoalgunodesuselementossehalleenel dominiop ublico seg un la ley vigente aplicable, esta situacion no quedara afectada por la licencia. Otros derechos Los derechos siguientes no quedan afectados por la licencia de ningunamanera: Losderechosderivadosdeusoslegtimosuotraslimitacionesreconocidasporleynosevenafectadosporloanterior. Losderechosmoralesdelautor Derechosquepuedenostentarotraspersonassobrelapropiaobraosuuso, comoporejemploderechosdeimagenodeprivacidad. AvisoAl reutilizarodistribuirlaobra, tienequedejarbienclarolosterminosdelalicenciadeestaobra.Dpto. LenguajesyCienciasdelaComputacion UniversidaddeMalagaIndicegeneralPrologo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9I Programaci onBasica 111. UnProgramaC++ 132. TiposSimples 172.1. DeclaracionVs.Denicion. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172.2. TiposSimplesPredenidos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172.3. TiposSimplesEnumerados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192.4. ConstantesyVariables. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202.5. Operadores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212.6. ConversionesAutomaticas(Implcitas)deTipos . . . . . . . . . . . . . . . . . . . . 232.7. ConversionesExplcitasdeTipos . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232.8. TablaASCII . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252.9. AlgunasConsideracionesRespectoaOperacionesconN umerosReales . . . . . . . 253. EntradaySalidadeDatosBasica 273.1. SalidadeDatos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 273.2. EntradadeDatos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 293.3. ElBuerdeEntradayelBuerdeSalida . . . . . . . . . . . . . . . . . . . . 303.4. OtrasOperacionesdeEntradaySalida . . . . . . . . . . . . . . . . . . . . . . . . . 303.5. ControldelEstadodelFlujodeDatos . . . . . . . . . . . . . . . . . . . . . . . . . 304. EstructurasdeControl 334.1. Sentencia,SecuenciayBloque. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 334.2. DeclaracionesGlobalesyLocales . . . . . . . . . . . . . . . . . . . . . . . . . . . . 334.3. SentenciasdeAsignacion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 344.4. SentenciasdeSeleccion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 354.5. SentenciasdeIteracion.Bucles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 374.6. ProgramacionEstructurada . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 394.7. Ejemplos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 395. Subprogramas.FuncionesyProcedimientos 415.1. FuncionesyProcedimientos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 415.2. DeniciondeSubprogramas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 425.3. EjecuciondeSubprogramas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 435.4. PasodeParametros.ParametrosporValoryporReferencia. . . . . . . . . . . . . 435.5. CriteriosdeModularizacion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 455.6. SubprogramasenLnea . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 465.7. DeclaraciondeSubprogramas.Prototipos . . . . . . . . . . . . . . . . . . . . . . . 465.8. SobrecargadeSubprogramasyOperadores . . . . . . . . . . . . . . . . . . . . . . 465.9. ParametrosporDefecto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4734INDICEGENERAL5.10. SubprogramasyFlujosdeEntradaySalida . . . . . . . . . . . . . . . . . . . . . . 485.11. Pre-CondicionesyPost-Condiciones . . . . . . . . . . . . . . . . . . . . . . . . . . 485.12. Ejemplos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 496. TiposCompuestos 516.1. PasodeParametrosdeTiposCompuestos . . . . . . . . . . . . . . . . . . . . . . . 516.2. CadenasdeCaracteresenC++:elTipoString . . . . . . . . . . . . . . . . . . . . 526.3. RegistrosoEstructuras . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 596.4. Agregados:elTipoArray . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 626.5. ResoluciondeProblemasUtilizandoTiposCompuestos . . . . . . . . . . . . . . . 717. B usquedayOrdenacion 777.1. B usquedaLineal(Secuencial) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 777.2. B usquedaBinaria. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 787.3. OrdenacionporIntercambio(Burbuja). . . . . . . . . . . . . . . . . . . . . . . . . 797.4. OrdenacionporSeleccion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 807.5. OrdenacionporInsercion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 807.6. OrdenacionporInsercionBinaria . . . . . . . . . . . . . . . . . . . . . . . . . . . . 817.7. AplicaciondelosAlgoritmosdeB usquedayOrdenacion . . . . . . . . . . . . . . . 828. OtrosTiposCompuestosenC 878.1. AgregadosoArraysPredenidos . . . . . . . . . . . . . . . . . . . . . . . . . . . . 878.2. CadenasdeCaracteresalEstilo-C . . . . . . . . . . . . . . . . . . . . . . . . . . . 988.3. Uniones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1048.4. CamposdeBits. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1058.5. ResoluciondeProblemasUtilizandoTiposCompuestos . . . . . . . . . . . . . . . 1059. AlgunasBibliotecasUtiles 111II ProgramacionIntermedia 11310.AlmacenamientoenMemoriaSecundaria:Ficheros 11510.1. FlujosdeEntradaySalidaAsociadosaFicheros . . . . . . . . . . . . . . . . . . . 11610.2. EntradadeDatosdesdeFicherosdeTexto. . . . . . . . . . . . . . . . . . . . . . . 11710.3. SalidadeDatosaFicherosdeTexto . . . . . . . . . . . . . . . . . . . . . . . . . . 11910.4. Ejemplos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12110.5. OtrosTiposdeFlujosdeFicheros . . . . . . . . . . . . . . . . . . . . . . . . . . . 12610.5.1. FicherosBinarios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12610.5.2. AccesoDirectoenFicheros . . . . . . . . . . . . . . . . . . . . . . . . . . . 12910.5.3. FlujosdeEntradaySalida . . . . . . . . . . . . . . . . . . . . . . . . . . . 13010.6. FlujosdeEntradaySalidaVinculadosaCadenasdeCaracteres . . . . . . . . . . . 13011.ModulosyBibliotecas 13311.1. InterfazeImplementaciondelModulo . . . . . . . . . . . . . . . . . . . . . . . . . 13311.2. CompilacionSeparadayEnlazado . . . . . . . . . . . . . . . . . . . . . . . . . . . 13511.3. EspaciosdeNombre . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13611.4. HerramientasdeAyudaalaGestiondelaCompilacionSeparada . . . . . . . . . . 14112.ManejodeErrores.Excepciones 14512.1. ErroresdeProgramacionyAsertos . . . . . . . . . . . . . . . . . . . . . . . . . . . 14512.2. SituacionesAnomalasExcepcionales . . . . . . . . . . . . . . . . . . . . . . . . . . 14612.3. GestiondeErroresMedianteExcepciones . . . . . . . . . . . . . . . . . . . . . . . 14712.4. ExcepcionesEstandares . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152Dpto. LenguajesyCienciasdelaComputacion UniversidaddeMalagaINDICEGENERAL 513.TiposAbstractosdeDatos 15513.1. TiposAbstractosdeDatosenC++:Clases . . . . . . . . . . . . . . . . . . . . . . 15613.1.1. DenicioneImplementaciondeClasesenLnea . . . . . . . . . . . . . . 15613.1.2. DeniciondeClaseseImplementacionSeparada . . . . . . . . . . . . . . . 15913.2. MetodosDenidosAutomaticamenteporelCompilador . . . . . . . . . . . . . . . 17213.3. RequisitosdelasClasesRespectoalasExcepciones . . . . . . . . . . . . . . . . . . 17313.4. MassobreMetodosyAtributos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17313.5. SobrecargadeOperadores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17714.IntroduccionalaProgramacionGenerica.Plantillas 17914.1. SubprogramasGenericos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17914.2. TiposAbstractosdeDatosGenericos. . . . . . . . . . . . . . . . . . . . . . . . . . 18114.3. ParametrosGenericosporDefecto . . . . . . . . . . . . . . . . . . . . . . . . . . . 18414.4. DeniciondeTiposdentrodelaDeniciondeTiposGenericos . . . . . . . . . . . 18514.5. SeparaciondeDenicioneImplementacion . . . . . . . . . . . . . . . . . . . . . . 18615.MemoriaDinamica.Punteros 19115.1. Punteros. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19215.2. GestiondeMemoriaDinamica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19315.3. OperacionesconVariablesdeTipoPuntero . . . . . . . . . . . . . . . . . . . . . . 19415.4. PasodeParametrosdeVariablesdeTipoPuntero . . . . . . . . . . . . . . . . . . 19615.5. AbstraccionenlaGestiondeMemoriaDinamica . . . . . . . . . . . . . . . . . . . 19715.6. EstructurasEnlazadas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19815.7. OperacionesconListasEnlazadas. . . . . . . . . . . . . . . . . . . . . . . . . . . . 20015.8. GestiondeMemoriaDinamicaenPresenciadeExcepciones . . . . . . . . . . . . . 20715.9. ComprobaciondeGestiondeMemoriaDinamica . . . . . . . . . . . . . . . . . . . 21715.10.OperadordeDireccion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21816.IntroduccionalosContenedoresdelaBibliotecaEstandar(STL) 22116.1. Vector . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22116.2. Stack . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22516.3. Queue . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22716.4. ResoluciondeProblemasUtilizandoContenedores . . . . . . . . . . . . . . . . . . 229III ProgramacionAvanzada 23317.ProgramacionOrientadaaObjetos 23718.MemoriaDinamicaAvanzada 24118.1. MemoriaDinamicadeAgregados . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24118.2. PunterosaSubprogramas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24218.3. PunterosInteligentes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24219.TiposAbstractosdeDatosAvanzados 24519.1. PunterosaMiembros. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24519.2. OcultarlaImplementacion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24519.3. ControldeElementosdeunContenedor . . . . . . . . . . . . . . . . . . . . . . . . 25020.ProgramacionGenericaAvanzada 25520.1. ParametrosGenericosporDefecto . . . . . . . . . . . . . . . . . . . . . . . . . . . 25520.2. TiposdentrodeClasesGenericas . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25520.3. MetodosdeClaseGenericos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25520.4. AmigosGenericos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25620.5. RestriccionesenProgramacionGenerica . . . . . . . . . . . . . . . . . . . . . . . . 257Dpto. LenguajesyCienciasdelaComputacion UniversidaddeMalaga6INDICEGENERAL20.6. Especializaciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25820.7. Meta-programacion. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25920.8. SFINAE. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26021.BueryFlujosdeEntradaySalida 26321.1. OperacionesdeSalida . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26321.2. OperacionesdeEntrada . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26321.3. Buer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26521.4. RedireccionTransparentedelaSalidaEstandaraunString . . . . . . . . . . . . . 26721.5. Ficheros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26821.6. FicherosdeEntrada . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26821.7. FicherosdeSalida . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26921.8. EjemplodeFicheros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26921.9. FicherosdeEntradaySalida . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27021.10.FlujodeEntradadesdeunaCadena . . . . . . . . . . . . . . . . . . . . . . . . . . 27021.11.FlujodeSalidaaunaCadena . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27021.12.JerarquadeClasesdeFlujoEstandar . . . . . . . . . . . . . . . . . . . . . . . . . 27122.TecnicasdeProgramacionUsualesenC++ 27322.1. AdquisiciondeRecursosesInicializacion(RAII) . . . . . . . . . . . . . . . . . . . 27322.1.1. autoptr(uniqueptr) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27322.1.2. RAIISimpledeMemoriaDinamica . . . . . . . . . . . . . . . . . . . . . . . 27422.1.3. RAIISimpleGenerico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27522.1.4. RAIIGenerico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27622.1.5. RAIIGenerico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27623.GestionDinamicadeMemoria 27923.1. GestiondeMemoriaDinamica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27923.2. GestiondeMemoriaDinamicasinInicializar . . . . . . . . . . . . . . . . . . . . . 28223.3. RAII:autoptr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28223.4. ComprobaciondeGestiondeMemoriaDinamica . . . . . . . . . . . . . . . . . . . 28324.BibliotecaEstandardeC++.STL 28524.1. CaractersticasComunes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28524.1.1. Ficheros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28524.1.2. Contenedores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28624.1.3. TiposDenidos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28624.1.4. Iteradores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28624.1.5. Acceso. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28724.1.6. OperacionesdePilayCola . . . . . . . . . . . . . . . . . . . . . . . . . . . 28724.1.7. OperacionesdeLista. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28724.1.8. Operaciones. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28724.1.9. Constructores. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28724.1.10.Asignacion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28824.1.11.OperacionesAsociativas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28824.1.12.Resumen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28824.1.13.OperacionessobreIteradores . . . . . . . . . . . . . . . . . . . . . . . . . . 28824.2. Contenedores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28824.3. Vector . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28924.4. List . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29024.5. Deque . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29324.6. Stack . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29424.7. Queue . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29524.8. Priority-Queue . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29624.9. Map . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 296Dpto. LenguajesyCienciasdelaComputacion UniversidaddeMalagaINDICEGENERAL 724.10.Multimap . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29724.11.Set . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29824.12.Multiset . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29924.13.Bitset . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29924.14.Iteradores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30024.15.Directos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30024.16.Inversos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30124.17.Inserters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30224.18.StreamIterators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30224.19.OperacionessobreIteradores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30624.20.ObjetosFuncionyPredicados. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30624.21.Algoritmos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30924.22.Garantas(Excepciones)deOperacionessobreContenedores . . . . . . . . . . . . . 31124.23.Numericos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31224.24.Lmites . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31224.25.RunTimeTypeInformation(RTTI) . . . . . . . . . . . . . . . . . . . . . . . . . . 313A. PrecedenciadeOperadoresenC 315B.PrecedenciadeOperadoresenC++ 317C.BibliotecaBasicaANSI-C(+conio) 321C.1. cassert . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 321C.2. cctype . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 321C.3. cmath . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 321C.4. cstdlib . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 322C.5. climits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 323C.6. coat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 323C.7. ctime . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 323C.8. cstring . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 323C.9. cstdio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 324C.10.cstdarg . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 325C.11.conio.h. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 326D. ElPreprocesador 329E. ErroresMasComunes 331F. CaractersticasnoContempladas 333G. Bibliografa 335Indice 335Dpto. LenguajesyCienciasdelaComputacion UniversidaddeMalaga8INDICEGENERALDpto. LenguajesyCienciasdelaComputacion UniversidaddeMalagaPrologoEste manual pretende ser una gua de referencia para la utilizacion del lenguaje de programacionC++enel desarrollodeprogramas. Estaorientadaaalumnosdeprimercursodeprogramacionde Ingeniera Informatica. No obstante, hay algunos captulos y secciones que presentan conceptosavanzadosyrequierenmayoresconocimientosporpartedel lector, yporlotantoexcedendelosconocimientos basicos requeridos para un alumno de primer curso de programacion. Estos captulosy secciones que presentan o requieren conceptos avanzadosse encuentran marcados con un smboloA, ynoesnecesarioqueseanledosporel lector, aloscualespodraaccederencualquierotromomentoposterior.Otroscaptulosyseccionesmuestranestructurasytecnicasdeprogramacionobsoletasy no recomendadas en C++, sin embargo son mostradas en este manual por completitud.Estoscaptulosyseccionesestanmarcadosconelsmbolo OBS.Este manual se concibe como material de apoyo a la docencia, y requiere de las explicaciones im-partidas en clase por el profesor para su aprendizaje. As mismo, este manual no pretende ense naraprogramar,suponequeellectorposeelosfundamentosnecesariosrelativosalaprogramacion,ysimplementemuestracomoaplicarlosutilizandoelLenguajedeProgramacionC++.EllenguajedeprogramacionC++esunlenguajemuyexibleyversatil,ydebidoaello,siseutiliza sin rigor puede dar lugar a construcciones y estructuras de programacion complejas, difcilesdecomprenderypropensasaerrores.Debidoaello,restringiremostantolasestructurasautilizarcomolaformadeutilizarlas.No pretende ser una gua extensa del lenguaje de programacion C++. Ademas, dada la amplituddel lenguaje, haycaractersticas del mismoque nohansidocontempladas por exceder loqueentendemosqueesuncursodeprogramacionelemental.Estemanual hasidoelaboradoenel Dpto. deLenguajesyCienciasdelaComputaciondelaUniversidaddeMalaga.ESUNAVERSIONPRELIMINAR, INCOMPLETAYSEENCUENTRAAC-TUALMENTEBAJODESARROLLO.Sedifundeenlacreenciadequepuedeser util,a unsiendounaversionpreliminar.La ultimaversiondeestedocumentopuedeserdescargadadesdelasiguientepaginaweb:http://www.lcc.uma.es/%7Evicente/docencia/index.htmlodirectamentedesdelasiguientedireccion:http://www.lcc.uma.es/%7Evicente/docencia/cpp/manual_referencia_cxx.pdf910INDICEGENERALDpto. LenguajesyCienciasdelaComputacion UniversidaddeMalagaParteIProgramaci onBasica11Captulo1UnProgramaC++En principio, un programaC++se almacena en un chero cuya extension sera una de las sigu-ientes: .cpp, .cxx, .cc, etc. Masadelanteconsideraremosprogramascomplejoscuyocodigoseencuentradistribuidoentrevarioscheros(vease11).Dentro de este chero, normalmente, apareceran al principio unas lneas para incluir las deni-ciones delos modulos debibliotecaqueutilicenuestroprograma. Posteriormente, serealizarandeclaracionesydenicionesdetipos, deconstantes(vease2)ydesubprogramas(vease5)cuyoambitodevisibilidadseraglobal atodoel chero(desdeel puntodondehasidodeclaradohastaelnaldelchero).Deentrelasdenicionesdesubprogramas, debedenirseunafuncionprincipal, denominadamain, que indica donde comienza la ejecucion del programa. Al nalizar, dicha funcion devolvera unn umeroenteroque indicaal SistemaOperativoel estadode terminaciontras laejecuciondelprograma(unn umero0indicaterminacionnormal). Encasodenoaparecer explcitamenteelvalorderetornodemain,elsistemarecibirapordefectounvalorindicandoterminacionnormal.Ejemplo de un programa que convierte una cantidad determinada de eurosa su valor en pesetas.//- fichero: euros.cpp --------------------------------------------#include using namespace std;const double EUR_PTS = 166.386;int main(){cout > euros;double pesetas = euros * EUR_PTS;cout