Apuntes programacion
-
Upload
ana-gal-cor -
Category
Education
-
view
274 -
download
1
Transcript of Apuntes programacion
-
FacultaddeInformticaUniversidadComplutense
Apuntesdeclasedelaasignatura
Fundamentosdelaprogramacin
1curso
GradoenIngenieraenInformticaGradoenIngenieradelSoftware
GradoenIngenieradeComputadores
20132014
LuisHernndezYez
LicenciaCreativeCommons:Reconocimiento,NocomercialyCompartirigual.
http://creativecommons.org/licenses/byncsa/3.0/
-
EstapublicacincontienelosapuntesdeclasedelaasignaturaFundamentosdelaprogramacin,asignaturade1cursodelosgrados
queseimpartenenlaFacultaddeInformticadelaUCM.
Durantelostresprimeroscursosenlosquesehaimpartidolaasignatura,estematerialhasidosometidoacontinuasrevisionesycontribucionesporpartedelosprofesoresquehanimpartidolosdistintosgrupos
delaasignatura.Aunqueeltrabajohaquedadobastanteconsolidado,estoysegurodequetodavacontienemuchaserratas.Siencuentrasalguna,
nodudes,porfavor,enhacrmelosaberyconseguirasquelasiguienteversinestmejordepurada.
Quieroagradeceratodoslosprofesoresquehanimpartidolaasignaturasucontribucineneldesarrollodelmaterial,destacandoespecialmente
lalabordePabloMorenoGeryCarlosCervignRckauer.
LuisHernndezYezProfesordelaFacultaddeInformticadelaUCM
-
GradoenIngenieraInformticaGradoenIngenieradelSoftwareGradoenIngenieradeComputadoresLuisHernndezYezFacultaddeInformticaUniversidadComplutense
Fundamentosdelaprogramacin
TC
LuisHe
rnnde
zYez
Tema1 Computadorasyprogramacin 1Tema2 TiposeinstruccionesI 48
Anexo:Detallestcnicosdelostipos 212Tema3 TiposeinstruccionesII 225
AnexoI:Eloperadorternario? 398AnexoII:Ejemplosdesecuencias 402
Tema4 Laabstraccinprocedimental 425Anexo:Mssobresubprogramas 496
Tema5 Tiposdedatosestructurados 512Anexo:CadenasalestilodeC 580
Tema6 Recorridoybsquedaenarrays 588Tema7 Algoritmosdeordenacin 649
Anexo:Mssobreordenacin 742Tema8 Programacinmodular 755
Anexo:Ejemplodemodularizacin 832Tema9 Punterosymemoriadinmica 847
Anexo:Punterosymemoriadinmica 938Tema10 Introduccinalarecursin 981Apndice:Archivosbinarios 1049
Fundamentosdelaprogramacin
-
LuisHe
rnnde
zYez
Informtica,computadorasyprogramacin 3Lenguajemquinayensamblador 12Lenguajesdeprogramacindealtonivel 15Unpocodehistoria 19ProgramacineIngenieradelSoftware 24EllenguajedeprogramacinC++ 27Sintaxisdeloslenguajesdeprogramacin 30UnprimerprogramaenC++ 35Herramientasdedesarrollo 39C++:UnmejorC 45
Fundamentosdelaprogramacin
LuisHe
rnnde
zYez
Unejemplodeprogramacin 50ElprimerprogramaenC++ 64Laslneasdecdigodelprograma 80Clculosenlosprogramas 86Variables 92Expresiones 98Lecturadedatosdesdeelteclado 108Resolucindeproblemas 119Losdatosdelosprogramas 127Identificadores 129Tiposdedatos 133Declaracinyusodevariables 142Instruccionesdeasignacin 147Operadores 152Mssobreexpresiones 160Constantes 167Labibliotecacmath 171Operacionesconcaracteres 174
Operadoresrelacionales 177Tomadedecisiones(if) 180Bloquesdecdigo 183Bucles(while) 186Entrada/salidaporconsola 190Funcionesdefinidas
porelprogramador 199
Fundamentosdelaprogramacin
-
LuisHe
rnnde
zYez
int 214float 216Notacincientfica 217double 218char 220bool 221string 222Literalesconespecificacindetipo 223
Fundamentosdelaprogramacin
LuisHe
rnnde
zYez
Fundamentosdelaprogramacin
Tipos,valoresyvariables 227Conversindetipos 232Tiposdeclaradosporelusuario 236Tiposenumerados 238Entrada/Salida
conarchivosdetexto 248Lecturadearchivosdetexto 253Escrituraenarchivosdetexto 266
Flujodeejecucin 272Seleccinsimple 276Operadoreslgicos 282Anidamientodeif 286Condiciones 290Seleccinmltiple 293
Laescalaifelseif 295Lainstruccinswitch 302
Repeticin 313Elbuclewhile 316
Elbuclefor 321Buclesanidados 331
mbitoyvisibilidad 339Secuencias 349
Recorridodesecuencias 355Secuenciascalculadas 363Bsquedaensecuencias 370
Arraysdedatossimples 374Usodevariablesarrays 379Recorridodearrays 382Bsquedaenarrays 387Arraysnocompletos 393
-
LuisHe
rnnde
zYez
Fundamentosdelaprogramacin
Eloperadorternario? 399
Recorridos 404Unaparcamiento 405Parntesisbienemparejados? 409Dossecuenciasiguales? 412NmerosprimosmenoresqueN 413
Bsquedas 417Bsquedadeunnmeroenunarchivo 419Bsquedasensecuenciasordenadas 420
LuisHe
rnnde
zYez
Fundamentosdelaprogramacin
Diseodescendente:Tareasysubtareas 427Subprogramas 434Subprogramasydatos 441Parmetros 446Argumentos 451Resultadodelafuncin 467Prototipos 473Ejemploscompletos 475Funcionesdeoperador 477Diseodescendente(unejemplo) 480Precondicionesypostcondiciones 490
-
LuisHe
rnnde
zYez
Fundamentosdelaprogramacin:Laabstraccinprocedimental(Anexo)
Archivoscomoparmetros 498Lafuncinmain() 501Argumentosimplcitos 504Sobrecargadesubprogramas 508
LuisHe
rnnde
zYez
Fundamentosdelaprogramacin
Tiposdedatos 514Arraysdenuevo 517Arraysybuclesfor 520Mssobrearrays 522
Inicializacindearrays 523Enumeradoscomondices 524Pasodearraysasubprogramas 525
Implementacindelistas 528Cadenasdecaracteres 531Cadenasdecaracteresdetipostring 535
Entrada/salidaconstring 539Operacionesconstring 541
Estructuras 543Estructurasdentrodeestructuras 549Arraysdeestructuras 550Arraysdentrodeestructuras 551
Listasdelongitudvariable 552Unejemplocompleto 558Elbucledo..while 562
-
LuisHe
rnnde
zYez
Fundamentosdelaprogramacin
CadenasalestilodeC 582E/SconcadenasalestilodeC 583Labibliotecacstring 584Ejemplo 585
LuisHe
rnnde
zYez
Fundamentosdelaprogramacin
Recorridodearrays 590Arrayscompletos 593Arraysnocompletosconcentinela 594Arraysnocompletosconcontador 595Ejemplos 597Generacindenmerosaleatorios 601
Bsquedasenarrays 604Arrayscompletos 606Arraysnocompletosconcentinela 607Arraysnocompletosconcontador 608Ejemplo 610
Recorridosybsquedasencadenas 614Msejemplosdemanejodearrays 617Arraysmultidimensionales 630
Inicializacindearraysmultidimensionales 638Recorridodeunarraybidimensional 641RecorridodeunarrayNdimensional 644Bsquedaenunarraymultidimensional 647
-
LuisHe
rnnde
zYez
Fundamentosdelaprogramacin
Algoritmosdeordenacin 651Algoritmodeordenacinporinsercin 654
Ordenacindearraysporinsercin 665Algoritmodeordenacinporinsercin
conintercambios 672Clavesdeordenacin 680Estabilidaddelaordenacin 688Complejidadyeficiencia 692
Ordenacionesnaturales 694Ordenacinporseleccindirecta 701Mtododelaburbuja 716Listasordenadas 722Bsquedasenlistasordenadas 729Bsquedabinaria 731
LuisHe
rnnde
zYez
Fundamentosdelaprogramacin
Ordenacinporintercambio 744Mezcladedoslistasordenadas 747
-
LuisHe
rnnde
zYez
Fundamentosdelaprogramacin
Programasmultiarchivoycompilacinseparada 757Interfazfrenteaimplementacin 762Usodemdulosdebiblioteca 768Ejemplo:GestindeunalistaordenadaI 770Compilacindeprogramasmultiarchivo 778Elpreprocesador 780Cadacosaensumdulo 782Ejemplo:GestindeunalistaordenadaII 784Elproblemadelasinclusionesmltiples 789
Compilacincondicional 794Proteccinfrenteainclusionesmltiples 795
Ejemplo:GestindeunalistaordenadaIII 796Implementacionesalternativas 804Espaciosdenombres 808
Implementacionesalternativas 817Calidadyreutilizacindelsoftware 827
LuisHe
rnnde
zYez
Fundamentosdelaprogramacin
Modularizacindeunprograma 833
-
LuisHe
rnnde
zYez
Fundamentosdelaprogramacin
Direccionesdememoriaypunteros 849Operadoresdepunteros 854Punterosydireccionesvlidas 864
Punterosnoinicializados 866Unvalorseguro:NULL 867
Copiaycomparacindepunteros 868Tipospuntero 873
Punterosaestructuras 875Punterosaconstantesypunterosconstantes 877
Punterosypasodeparmetros 879Punterosyarrays 883Memoriaydatosdelprograma 886Memoriadinmica 891Punterosydatosdinmicos 895Gestindelamemoria 907Errorescomunes 911Arraysdedatosdinmicos 916Arraysdinmicos 928
LuisHe
rnnde
zYez
Fundamentosdelaprogramacin
Aritmticadepunteros 940Recorridodearraysconpunteros 953Referencias 962Listasenlazadas 964
-
LuisHe
rnnde
zYez
Fundamentosdelaprogramacin
Conceptoderecursin 983Algoritmosrecursivos 986
Funcionesrecursivas 987Diseodefuncionesrecursivas 989
Modelodeejecucin 990Lapiladelsistema 992Lapilaylasllamadasafuncin 994Ejecucindelafuncinfactorial() 1005
Tiposderecursin 1018Recursinsimple 1019Recursinmltiple 1020Recursinanidada 1022Recursincruzada 1026
Cdigodelsubprogramarecursivo 1027Parmetrosyrecursin 1032Ejemplosdealgoritmosrecursivos 1034
Bsquedabinaria 1035TorresdeHanoi 1038
Recursinfrenteaiteracin 1043Estructurasdedatosrecursivas 1045
LuisHe
rnnde
zYez
Fundamentosdelaprogramacin
Flujos 1051Archivosbinarios 1054Tamaodelosdatos:Eloperadorsizeof() 1056Aperturadearchivosbinarios 1059Lecturadearchivosbinarios(accesosecuencial) 1061Escrituraenarchivosbinarios(accesosecuencial) 1066Accesodirectooaleatorio 1070Ejemplosdeusodearchivosbinarios 1078
Ordenacindelosregistrosdelarchivo 1079Bsquedabinaria 1085Insercinenunarchivobinarioordenado 1088Cargadelosregistrodeunarchivoenunatabla 1092Almacenamientodeunatablaenunarchivo 1093
-
GradoenIngenieraInformticaGradoenIngenieradelSoftwareGradoenIngenieradeComputadoresLuisHernndezYezFacultaddeInformticaUniversidadComplutense
Fundamentosdelaprogramacin
RB
LuisHe
rnnde
zYez
Programming.Principles andPractice UsingC++B.Stroustrup.Pearson Education,2009 C++:An Introduction to Computing (2edicin)J.Adams,S.Leestma,L.Nyhoff.PrenticeHall,1998 EllenguajedeprogramacinC++ (Edicinespecial)B.Stroustrup.AddisonWesley,2002 ProgramacinyresolucindeproblemasconC++N.Dale,C.Weems.McGrawHillInteramericana,2007 Problem Solving,Abstraction,Design UsingC++ (3edicin)F.L.Friedman,E.B.Koffman.AddisonWesley,2000. ProgramacinenC++paraingenierosF.Xhafa etal.Thomson,2006
Fundamentosdelaprogramacin
-
LuisHe
rnnde
zYez
Programming.Principles andPractice UsingC++DelautordellenguajeC++,unampliotutorialqueenseaaprogramarenC++;haceunusotempranodeconceptosdeorientacinaobjetosydelaSTL,quequedanfueradeltemariodeestecursoC++:An Introduction to Computing (2edicin)BuenaintroduccinalaprogramacinenC++;buenaorganizacindeloscontenidos,biendesarrolladoyconseccionesprcticasEllenguajedeprogramacinC++ (Edicinespecial)DelautordellenguajeC++,lareferenciaabsolutasobreellenguajeC++enlaqueconsultardudasydetallestcnicossobreloselementosdellenguaje
Fundamentosdelaprogramacin
LuisHe
rnnde
zYez
ProgramacinyresolucindeproblemasconC++UnenfoqueprcticoaldesarrollodeprogramasconC++connumerososejemplosProblem Solving,Abstraction,Design UsingC++ (3edicin)IntroduccinalaprogramacinenC++conunenfoquededesarrollodesoftwareynumerososcasosdeestudioProgramacinenC++paraingenierosIntroduccinalaprogramacinenC++conexplicacionessencillasyunaorganizacinclara
Fundamentosdelaprogramacin
-
GradoenIngenieraInformticaGradoenIngenieradelSoftwareGradoenIngenieradeComputadoresLuisHernndezYezFacultaddeInformticaUniversidadComplutense
Fundamentosdelaprogramacin
1
LuisHe
rnnde
zYez
Informtica,computadorasyprogramacin 3Lenguajemquinayensamblador 12Lenguajesdeprogramacindealtonivel 15Unpocodehistoria 19ProgramacineIngenieradelSoftware 24EllenguajedeprogramacinC++ 27Sintaxisdeloslenguajesdeprogramacin 30UnprimerprogramaenC++ 35Herramientasdedesarrollo 39C++:UnmejorC 45
Fundamentosdelaprogramacin:Computadorasyprogramacin
-
LuisHe
rnnde
zYez
Pgina 3Fundamentosdelaprogramacin:Computadorasyprogramacin
LuisHe
rnnde
zYez
Informtica(Cienciadelacomputacin)Conjuntodeconocimientoscientficosytcnicasquehacenposibleeltratamientoautomticodelainformacinpormediodeordenadores
ComputadoraMquinaelectrnica,analgicaodigital,dotadadeunamemoria degrancapacidadydemtodosdetratamiento delainformacin,capazderesolverproblemas matemticosylgicosmediantelaejecucin deprogramas informticos
Pgina 4Fundamentosdelaprogramacin:Computadorasyprogramacin
-
LuisHe
rnnde
zYez
Entodaspartesyconmuchasformas
Pgina 5Fundamentosdelaprogramacin:Computadorasyprogramacin
LuisHe
rnnde
zYez
HardwareComponentesqueintegranlapartematerialdeunacomputadora
SoftwareProgramas,instruccionesyreglasinformticasparaejecutartareasenunacomputadora
Pgina 6Fundamentosdelaprogramacin:Computadorasyprogramacin
-
LuisHe
rnnde
zYez
ProgramarIndicaralacomputadoraquesloquetienequehacer
Programa Secuenciadeinstrucciones Instruccionesqueentiendelacomputadora Yquepersiguenunobjetivo:resolverunproblema!
Pgina 7Fundamentosdelaprogramacin:Computadorasyprogramacin
LuisHe
rnnde
zYez
TrabajoenequipoMltiplesroles... Gestores Analistas Diseadores Programadores Probadores Administradoresdesistemas
...
Pgina 8Fundamentosdelaprogramacin:Computadorasyprogramacin
ParqueJursico
-
LuisHe
rnnde
zYez
Esquemageneral
Pgina 9Fundamentosdelaprogramacin:Computadorasyprogramacin
Memoriatemporal
AlmacenamientopermanenteAlmacenamientopermanente
DispositivosdeentradaTecladoRatnEscnerTctil
DispositivosdesalidaMonitorImpresoraAltavoz
MonitorImpresoraAltavoz
DispositivosdesalidaMonitorImpresoraAltavoz
UnidadCentraldeProcesoCentralProcessorUnit
C.P.U.
LuisHe
rnnde
zYez
LaarquitecturadeVonNeumann
Pgina 10Fundamentosdelaprogramacin:Computadorasyprogramacin
C.P.U.(Procesador)
DispositivosdeE/S
MemoriaA.L.U.UnidadAritmticoLgica
UnidaddeControl
UnaALUde2bits(Wikipedia)
-
LuisHe
rnnde
zYez
Lamemoria
Pgina 11Fundamentosdelaprogramacin:Computadorasyprogramacin
Memoria
Busde
datos
01
02
03
04
05
06
07
08
...
Direccin
CadaceldaenunadireccinCeldasde8/16/32/64bitsInformacinvoltil
1Bit=0/11Byte=8bits=1carcter1Kilobyte(KB)=1024Bytes1Megabyte(MB)=1024KB1Gigabyte(GB)=1024MB1Terabyte(TB)=1024GB1Petabyte(PB)=1024TB210 =1024 1000
LuisHe
rnnde
zYez
Pgina 12Fundamentosdelaprogramacin:Computadorasyprogramacin
-
LuisHe
rnnde
zYez
Losprocesadorestrabajanconcerosyunos(bits)Unidaddememoriabsica:Byte (8bits)(2dgitoshexadecimales:01011011 01011011 5B)
LenguajemquinaCdigoshexadecimalesquerepresentaninstrucciones,registrosdelaCPU,direccionesdememoriaodatosInstruccin SignificadoA02F Accederalaceldadememoria2F3E01 Copiarloelregistro1delaALUA030 Accederalaceldadememoria303E02 Copiarloenelregistro2delaALU1D SumarB331 Guardarelresultadoenlaceldadememoria31
Pgina 13Fundamentosdelaprogramacin:Computadorasyprogramacin
LenguajedebajonivelDependientedelamquina
Programacindifcil
LuisHe
rnnde
zYez
Nemotcnicosparaloscdigoshexadecimales:A0 READ3E REG1D ADD
Mayorlegibilidad:READ2FREG01READ30REG02ADDWRITE31
Lenguajedenivelmedio
Pgina 14Fundamentosdelaprogramacin:Computadorasyprogramacin
Cdigoobjeto(lenguajemquina)
Programaensamblador
Cdigofuente(lenguajeensamblador)
-
LuisHe
rnnde
zYez
Pgina 15Fundamentosdelaprogramacin:Computadorasyprogramacin
LuisHe
rnnde
zYez
Mscercanosaloslenguajesnaturalymatemticoresultado=dato1+dato2;
Mayorlegibilidad,mayorfacilidaddecodificacin Estructuracindedatos/abstraccinprocedimental
Pgina 16Fundamentosdelaprogramacin:Computadorasyprogramacin
-
LuisHe
rnnde
zYez
Traduccin
Compiladores:CompilanyenlazanprogramascompletosIntrpretes:Compilan,enlazanyejecutaninstruccinainstruccin
Pgina 17Fundamentosdelaprogramacin:Computadorasyprogramacin
Compilador
Enlazador Cdigoobjetodebiblioteca
Cdigofuente#includeusingnamespacestd;
intmain(){
cout
-
LuisHe
rnnde
zYez
Pgina 19Fundamentosdelaprogramacin:Computadorasyprogramacin
LuisHe
rnnde
zYez
LaprehistoriaElbaco
SigloXIXMquinaanalticadeCharlesBabbage
Pgina 20Fundamentosdelaprogramacin:Computadorasyprogramacin
LadyAdaLovelaceesconsideradalaprimeraprogramadora
(Wikipedia)
-
LuisHe
rnnde
zYez
SigloXX1936 MquinadeTuring1946 ENIAC:Primeracomputadoradigitaldepropsitogeneral1947 Eltransistor1953 IBM650:Primeracomputadoraagranescala1966 ARPANET:OrigendeInternet1967 Eldisquete1970 SistemaoperativoUNIX1972 Primervirus informtico(Creeper)LenguajedeprogramacinC1974 ProtocoloTCP.Primeraredlocal
Pgina 21Fundamentosdelaprogramacin:Computadorasyprogramacin
ENIAC(Wikipedia)
LuisHe
rnnde
zYez
1975 SefundaMicrosoft1976 SefundaApple1979 JuegoPacman1981 IBMPCSistemaoperativoMSDOS1983 LenguajedeprogramacinC++1984 CDROM1985 Windows 1.01990 LenguajeHTML
World Wide Web1991 SistemaoperativoLinux
Pgina 22Fundamentosdelaprogramacin:Computadorasyprogramacin
AppleII(Wikipedia)
IBMPC(Wikipedia)Linux
-
LuisHe
rnnde
zYez
1992 Windows3.11995 LenguajedeprogramacinJavaDVD1998 SefundaGoogle1999 MSNMessengerSigloXXI2001 WindowsXPMacOS X2002 Mozilla Firefox2007 iPhone2008 Android ...
Pgina 23Fundamentosdelaprogramacin:Computadorasyprogramacin
LuisHe
rnnde
zYez
Pgina 24Fundamentosdelaprogramacin:Computadorasyprogramacin
-
LuisHe
rnnde
zYez
Quesprogramar?Decirleauntontomuy rpidoexactamente loquetienequehacerEspecificarlaestructura yelcomportamiento deunprograma,ascomoprobar queelprogramarealizasutareaadecuadamente yconunrendimiento aceptablePrograma:Transformaentradaensalida
Algoritmo:SecuenciadepasosyoperacionesquedeberealizarelprogramapararesolverelproblemaElprogramaimplementaelalgoritmoenunlenguajeconcreto
SalidaPrograma
Pgina 25Fundamentosdelaprogramacin:Computadorasyprogramacin
Entrada
LuisHe
rnnde
zYez
Laprogramacinesslounaetapadelprocesodedesarrollo
Modelodedesarrolloencascada:
Pgina 26Fundamentosdelaprogramacin:Computadorasyprogramacin
MantenimientoMantenimientoPruebaydepuracinPruebaydepuracin
ProgramacinProgramacinDiseoDiseo
AnlisisAnlisisPlanificacin Recursosnecesarios,presupuesto,plan,
Qu?Cmo?
Implementacin
-
LuisHe
rnnde
zYez
Pgina 27Fundamentosdelaprogramacin:Computadorasyprogramacin
LuisHe
rnnde
zYez
Bjarne Stroustrup (1983)
#includeusingnamespacestd;
int main(){
cout
-
LuisHe
rnnde
zYez
InstruccionesDatos:literales,variables,tiposSubprogramas(funciones)ComentariosDirectivas...
Fundamentosdelaprogramacin:Computadorasyprogramacin Pgina29
#includeusingnamespacestd;
int main(){
cout
-
LuisHe
rnnde
zYez
SintaxisysemnticadeloslenguajesSintaxis Reglasquedeterminancmosepuedenconstruirysecuenciarloselementosdellenguaje
Semntica SignificadodecadaelementodellenguajeParaqusirve?
Fundamentosdelaprogramacin:Computadorasyprogramacin Pgina 31
LuisHe
rnnde
zYez
Especificacin Lenguajes(BNF) Diagramas
Fundamentosdelaprogramacin:Computadorasyprogramacin Pgina 32
::=::=+||::=|::=0|1|2|3|4|5|6|7|8|9::=
BNF
|significa +2315913741343.4002
Ejemplo:Nmerosenteros(sindecimales)
+0..9
+0..9
-
LuisHe
rnnde
zYez
Fundamentosdelaprogramacin:Computadorasyprogramacin Pgina 33
::=::=+||::=|::=0|1|2|3|4|5|6|7|8|9::=
+23::=::=+::=+::=+2::=+2 ::=+231374::=::=::=::=1::=1::=13::=13::=137::=137 ::=1374134::=::=::=::=1::=ERROR ( noes)
LuisHe
rnnde
zYez
Fundamentosdelaprogramacin:Computadorasyprogramacin Pgina 34
++2233
113377 44
11 ??
+23+23
13741374
134134
+0..90..9
+
+
0..90..9
0..90..9
-
LuisHe
rnnde
zYez
Pgina 35Fundamentosdelaprogramacin:Computadorasyprogramacin
LuisHe
rnnde
zYez
HolaMundo!Unprogramaquemuestraunsaludoenlapantalla:#includeusingnamespacestd;
int main()//main()esdondeempiezalaejecucin{
cout
-
LuisHe
rnnde
zYez
Anlisisdelprograma
#includeusingnamespacestd;
int main(){
cout
-
LuisHe
rnnde
zYez
Pgina 39Fundamentosdelaprogramacin:Computadorasyprogramacin
LuisHe
rnnde
zYez
Editor Blocdenotas,Wordpad,Word,Writer,Gedit,Kwrite,(textosimple,sinformatos) Editoresespecficos:coloreadosintctico Recomendacin:Notepad++
Pgina 40
Instalacinyuso:SeccinHerramientasdedesarrolloenelCampusVirtual
Instalacinyuso:SeccinHerramientasdedesarrolloenelCampusVirtual
Fundamentosdelaprogramacin:Computadorasyprogramacin
-
LuisHe
rnnde
zYez
Pgina 41Fundamentosdelaprogramacin:Computadorasyprogramacin
hola.cpp(cdigofuente)
hola.obj(cdigoobjeto)
Compilador
Cdigoobjetodelabibliotecaiostream
hola.exe(ejecutable)
EnlazadorHolaMundo!
CargadorCargador
LuisHe
rnnde
zYez
Compilador Importante:C++estndar Recomendacin:GNUG++(MinGW enWindows)
Pgina 42
Instalacinyuso:SeccinHerramientasdedesarrolloenelCampusVirtual
Instalacinyuso:SeccinHerramientasdedesarrolloenelCampusVirtual
Fundamentosdelaprogramacin:Computadorasyprogramacin
-
LuisHe
rnnde
zYez
Entornosdedesarrollo Paraeditar,compilaryprobarelcdigodelprograma Recomendaciones:
Windows:MSVisualStudio/C++ExpressoEclipse Linux:Netbeans oEclipse
Pgina 43
Instalacinyuso:SeccinHerramientasdedesarrolloenelCampusVirtual
Instalacinyuso:SeccinHerramientasdedesarrolloenelCampusVirtual
Fundamentosdelaprogramacin:Computadorasyprogramacin
LuisHe
rnnde
zYez
Quhaceelprograma? Laejecucindelprogramasiempreempiezaenmain() Seejecutanlasinstruccionesensecuenciadeprincipioafin
Pgina 44
_HolaMundo!HolaMundo!
Pantalla(cout)
_
MuestraHolaMundo!enlapantallaysaltadelneaDevuelve0 comocdigodeterminacindelprograma
FinFin
return0;return0;
cout
-
LuisHe
rnnde
zYez
Pgina 45Fundamentosdelaprogramacin:Computadorasyprogramacin
LuisHe
rnnde
zYez
EllenguajeC LenguajecreadoporDennisM.Ritchie en1972 Lenguajedenivelmedio:
Estructurastpicasdeloslenguajesdealtonivel Construccionesparacontrolaniveldemquina
Lenguajesencillo(pocaspalabrasreservadas) Lenguajeestructurado(noestrictamenteestructuradoenbloques) Compartimentalizacindecdigo (funciones) ydatos(mbitos) Componenteestructuralbsico:lafuncin(subprograma) Programacinmodular Distingue entremaysculasyminsculas Palabrasreservadas(oclave):enminsculas
Pgina 46Fundamentosdelaprogramacin:Computadorasyprogramacin
-
LuisHe
rnnde
zYez
LicenciaCC(Creative Commons)Estetipodelicenciasofrecenalgunosderechosaterceraspersonasbajociertascondiciones.Estedocumentotieneestablecidaslassiguientes:
Pulsaenlaimagendearribaaladerechaparasaberms.Fundamentosdelaprogramacin:Computadorasyprogramacin Pgina 47
Reconocimiento(Attribution):Encualquierexplotacindelaobraautorizadaporlalicenciaharfaltareconocerlaautora.Nocomercial(Noncommercial):Laexplotacindelaobraquedalimitadaausosnocomerciales.Compartirigual(Sharealike):Laexplotacinautorizadaincluyelacreacindeobrasderivadassiemprequemantenganlamismalicenciaalserdivulgadas.
-
2GradoenIngenieraInformticaGradoenIngenieradelSoftwareGradoenIngenieradeComputadores
LuisHernndezYezFacultaddeInformticaUniversidadComplutense
FundamentosdelaprogramacinLuisHe
rnnde
zYez
Unejemplodeprogramacin 50ElprimerprogramaenC++ 64Laslneasdecdigodelprograma 80Clculosenlosprogramas 86Variables 92Expresiones 98Lecturadedatosdesdeelteclado 108Resolucindeproblemas 119Losdatosdelosprogramas 127Identificadores 129Tiposdedatos 133Declaracinyusodevariables 142Instruccionesdeasignacin 147Operadores 152Mssobreexpresiones 160Constantes 167Labibliotecacmath 171Operacionesconcaracteres 174
Operadoresrelacionales 177Tomadedecisiones(if) 180Bloquesdecdigo 183Bucles(while) 186Entrada/salidaporconsola 190Funcionesdefinidas
porelprogramador 199
Fundamentosdelaprogramacin:TiposeinstruccionesI
-
LuisHe
rnnde
zYez
Pgina 50Fundamentosdelaprogramacin:TiposeinstruccionesI
LuisHe
rnnde
zYez
UnacomputadoradeuncocheInstruccionesqueentiende:::=;
::=Start |Stop |::=Go Blocks::=North |East |South |West::=1 |2 |3 |4 |5
Ejemplos:Start;Go North3Blocks;Stop;
Pgina 51Fundamentosdelaprogramacin:TiposeinstruccionesI
-
LuisHe
rnnde
zYez
Sintaxisdellenguajedeprogramacin
Pgina 52Fundamentosdelaprogramacin:TiposeinstruccionesI
avanzaravanzar direccinGo Blocksnum
=Literales=Literales
direccindireccin
North
East
South
West
instruccininstruccin
Start
avanzar
Stop ;
numnum
12345
LuisHe
rnnde
zYez
ElproblemaaresolverEstandoelcocheenlaposicinA,conseguirllegaralCineTvoli (B)
Qupasoshayqueseguir?ArrancarIrunbloquealNorteIrdosbloquesalEsteIrcincobloquesalNorteIrdosbloquesalEsteParar
Pgina 53Fundamentosdelaprogramacin:TiposeinstruccionesI
B
A
NN
Bloque:Bloque:
-
LuisHe
rnnde
zYez
ElalgoritmoSecuenciadepasosquehayqueseguirpararesolverelproblema
Pgina 54Fundamentosdelaprogramacin:TiposeinstruccionesI
1. Arrancar
NN
2. IrunbloquealNorte3. IrdosbloquesalEste4. IrcincobloquesalNorte5. IrdosbloquesalEste6. Parar
Esospasossirventantoparaunapersonacomoparaunacomputadora.
LuisHe
rnnde
zYez
ElprogramaInstruccionesescritasenellenguajedeprogramacin
Start;Go North1Blocks;Go East2Blocks;Go North5Blocks;Go East2Blocks;Stop;
Pgina 55Fundamentosdelaprogramacin:TiposeinstruccionesI
B
A
NN
-
LuisHe
rnnde
zYez
ElprogramaEscribimoselcdigodelprogramaenuneditoryloguardamosenunarchivo:
Pgina 56Fundamentosdelaprogramacin:TiposeinstruccionesI
Stat;Go North1BlocksGo EastBlocks;Go Noth 5Blocks;Go West2Blocks;Stop;
CopiamoselarchivoenunallaveUSBylollevamosalcoche
LuisHe
rnnde
zYez
LacompilacinIntroducimoslallaveUSBenelcocheypulsamoselbotndeejecutarelprograma:
Pgina 57Fundamentosdelaprogramacin:TiposeinstruccionesI
Stat;^Unknown word.Go North1Blocks^;missing.Go EastBlocks;^Number missing.Go Noth 5Blocks;^Unknown word.Go West2Blocks;Stop;There areerrors.Impossible to run the program.
ErroresdesintaxisErroresdesintaxis
-
LuisHe
rnnde
zYez
DepuracinEditamoselcdigoparacorregirloserroressintcticos:
Pgina 58Fundamentosdelaprogramacin:TiposeinstruccionesI
Stat;Go North1BlocksGo EastBlocks;Go Noth 5Blocks;Go West2Blocks;Stop;
Start;Go North1Blocks;Go East3 Blocks;Go North5Blocks;Go West2Blocks;Stop;
LuisHe
rnnde
zYez
LaejecucinSerealizaloquepidecadainstruccin:
Pgina 59Fundamentosdelaprogramacin:TiposeinstruccionesI
B
NN
Start;Go North1Blocks;Go East3Blocks; !!
ErrordeejecucinUnainstruccinnosepuedeejecutar!
-
LuisHe
rnnde
zYez
DepuracinEditamoselcdigoparaarreglarelerrordeejecucin:
Pgina 60Fundamentosdelaprogramacin:TiposeinstruccionesI
Start;Go North1Blocks;Go East2 Blocks;Go North5Blocks;Go West2Blocks;Stop;
Start;Go North1Blocks;Go East3Blocks;Go North5Blocks;Go West2Blocks;Stop;
LuisHe
rnnde
zYez
LaejecucinSerealizaloquepidecadainstruccin:
Pgina 61Fundamentosdelaprogramacin:TiposeinstruccionesI
B
NN
Start;Go North1Blocks;Go East2Blocks;
ErrorlgicoElprogramanollegaalresultadodeseado!
Go North5Blocks;Go West2Blocks;Stop;
??
-
LuisHe
rnnde
zYez
DepuracinEditamoselcdigoparaarreglarelerrorlgico:
Pgina 62Fundamentosdelaprogramacin:TiposeinstruccionesI
Start;Go North1Blocks;Go East2Blocks;Go North5Blocks;Go West2Blocks;Stop;
Start;Go North1Blocks;Go East2Blocks;Go North5Blocks;Go East 2Blocks;Stop;
LuisHe
rnnde
zYez
LaejecucinSerealizaloquepidecadainstruccin:
Pgina 63Fundamentosdelaprogramacin:TiposeinstruccionesI
NN
Start;Go North1Blocks;Go East2Blocks;Go North5Blocks;Go East2Blocks;Stop;
Conseguido!
-
LuisHe
rnnde
zYez
Pgina 64Fundamentosdelaprogramacin:TiposeinstruccionesI
LuisHe
rnnde
zYez
HolaMundo!Devueltaenelprogramaquemuestraunsaludoenlapantalla:#includeusingnamespacestd;
int main() //main()esdondeempiezalaejecucin{
cout
-
LuisHe
rnnde
zYez
HolaMundo!Lanicainstruccinqueproducealgotangible:#includeusingnamespacestd;
intmain()//main()esdondeempiezalaejecucin{
cout
-
LuisHe
rnnde
zYez
Pantallaenmodotexto Lneasde80caracteres(textos)
Pgina 68Fundamentosdelaprogramacin:TiposeinstruccionesI
AplicacinenmodotextoAplicacinenmodotexto
80caracteres80caracteres
LuisHe
rnnde
zYez
VentanasdeconsolaoterminalLasaplicacionesenmodotextoseejecutandentrodeventanas: Windows:ventanasdeconsola(Smbolodelsistema) Linux:ventanasdeterminal
Pgina 69Fundamentosdelaprogramacin:TiposeinstruccionesI
H o l a M u n d o !
Cursorparpadeante:Dondesecolocarelsiguientecarcter.Cursorparpadeante:Dondesecolocarelsiguientecarcter.
......
......
-
LuisHe
rnnde
zYez
Elinsertor
-
LuisHe
rnnde
zYez
ElprogramaprincipalLafuncinmain():dondecomienzalaejecucin...#includeusingnamespacestd;
int main() //main()esdondeempiezalaejecucin{
cout
-
LuisHe
rnnde
zYez
Documentandoelcdigo...Comentarios(seignoran):#includeusingnamespacestd;
intmain()//main()esdondeempiezalaejecucin{
cout
-
LuisHe
rnnde
zYez
BibliotecasSeincluyenconladirectiva #include:#include(Utilidadesdeentrada/salidaporconsola)Paramostraroleerdatoshayqueincluirlabibliotecaiostream
EspaciosdenombresEniostream hayespaciosdenombres;culqueremos?#includeusingnamespacestd;
Siempreusaremoselespaciodenombresestndar(std)Muchasbibliotecasnotienenespaciosdenombres
Pgina 76Fundamentosdelaprogramacin:TiposeinstruccionesI
Esunainstruccin:terminaen;Esunainstruccin:terminaen;
LuisHe
rnnde
zYez
Compilacinyenlace
Pgina 77
hola.cpp(cdigofuente)
hola.obj(cdigoobjeto)
Compilador
Cdigoobjetodelabibliotecaiostream
hola.exe(ejecutable)
Enlazador
Fundamentosdelaprogramacin:TiposeinstruccionesI
HolaMundo!
CargadorCargador
AmenudoenunpasoAmenudoenunpaso
-
LuisHe
rnnde
zYez
Elementosdelprograma
#includeusingnamespacestd;
int main(){
cout
-
LuisHe
rnnde
zYez
Pgina 80Fundamentosdelaprogramacin:TiposeinstruccionesI
LuisHe
rnnde
zYez
ProgramaconE/SporconsolaUnaplantillaparaempezar:#includeusingnamespacestd;
int main(){
return 0;}
Pgina 81Fundamentosdelaprogramacin:TiposeinstruccionesI
Tucdigoaqu!Tucdigoaqu!
-
LuisHe
rnnde
zYez
...recitadoenlaconsolaMostrarlostextosconcout
-
LuisHe
rnnde
zYez
IntroduccindelcdigodelprogramaNohayquepartirunacadenaliteralentredoslneas:cout
-
LuisHe
rnnde
zYez
Pgina 86Fundamentosdelaprogramacin:TiposeinstruccionesI
LuisHe
rnnde
zYez
Operadoresaritmticos+ Suma Resta* Multiplicacin/ DivisinOperadoresbinariosoperando_izquierdo operadoroperando_derecho
Operacin Resultado3 +4 72.56 3 0.44143 *2 28645.45 /3 15.15
Pgina 87Fundamentosdelaprogramacin:TiposeinstruccionesI
-
LuisHe
rnnde
zYez
Nmerosliterales(concretos) Enteros:sinpartedecimal
Signonegativo(opcional)+secuenciadedgitos314312673211234
Reales:conpartedecimalSignonegativo(opcional)+secuenciadedgitos+puntodecimal+secuenciadedgitos3.1416357.01.3332345.6789404.1
Pgina 88Fundamentosdelaprogramacin:TiposeinstruccionesI
Puntodecimal(3.1416),NOcoma(3,1416)
Noseusanpuntosdemillares
LuisHe
rnnde
zYez
Ejemplo#includeusingnamespacestd;
int main(){
cout
-
LuisHe
rnnde
zYez
Pgina 90Fundamentosdelaprogramacin:TiposeinstruccionesI
DivisinrealDivisinreal
DivisinenteraDivisinentera
LuisHe
rnnde
zYez
Divisinenteraodivisinreal?Ambosoperandosenteros DivisinenteraAlgnoperandoreal Divisinreal
Divisin Resultado500 /3 166500.0 /3 166.667500 /3.0 166.667500.0 /3.0 166.667
Pgina 91Fundamentosdelaprogramacin:TiposeinstruccionesI
Compruebasiemprequeeltipodedivisinseaelquequieres
-
LuisHe
rnnde
zYez
Pgina 92Fundamentosdelaprogramacin:TiposeinstruccionesI
LuisHe
rnnde
zYez
DatosquesemantienenenmemoriaVariable:datoqueseaccedepormediodeunnombreDatoliteral:unvalorconcretoVariable:puedecambiardevalor(variar)edad=19;//variableedadyliteral19
LasvariablesdebenserdeclaradasQutipodedatoqueremosmantener? Valornumricosindecimales(entero):tipoint Valornumricocondecimales(real):tipodoubleDeclaracin:tipo nombre;
Pgina 93Fundamentosdelaprogramacin:TiposeinstruccionesI
-
LuisHe
rnnde
zYez
Declaracindevariablesint cantidad;double precio;
Sereservaespaciosuficiente
LASVARIABLESNOSEINICIALIZANNosedebenusarhastaqueseleshayadadoalgnvalorDndecolocamoslasdeclaraciones?Siempre,antesdelprimerusoHabitualmentealprincipiodelafuncin
Pgina 94Fundamentosdelaprogramacin:TiposeinstruccionesI
Memoriacantidad ?
precio ?
...
tipo nombre;
LuisHe
rnnde
zYez
Declaracindevariables#includeusingnamespacestd;
int main(){
int cantidad;double precio,total;
return 0;}
Pgina 95Fundamentosdelaprogramacin:TiposeinstruccionesI
Memoria
cantidad ?
precio ?
total ?
...
Podemosdeclararvariasdeunmismotiposeparandolosnombresconcomas
-
LuisHe
rnnde
zYez
Capacidaddelasvariablesint2.147.483.648 ...2.147.483.6472147483648 ..2147483647double2,23x10308 ...1,79x 10+308 ysusnegativos[+|] 2.23e308 ..1.79e+308Problemasdeprecisin
Pgina 96Fundamentosdelaprogramacin:TiposeinstruccionesI
Notacincientfica
LuisHe
rnnde
zYez
Asignacindevaloresalasvariables(operador=)
variable = expresin;
cantidad=12; //intprecio=39.95; //doubletotal=cantidad*precio;//Asigna479.4
Concordanciadetipos: cantidad=12.5;Alaizquierdadel=debeirsiempreunavariable!!!
Pgina 97Fundamentosdelaprogramacin:TiposeinstruccionesI
Instruccin:terminaen;
cantidad 12
-
LuisHe
rnnde
zYez
Pgina 98Fundamentosdelaprogramacin:TiposeinstruccionesI
LuisHe
rnnde
zYez
ExpresionesSecuenciasdeoperandosyoperadoresoperando operador operandooperador operando...
total=cantidad*precio*1.18;
AigualprioridadseevalandeizquierdaaderechaParntesisparaforzarciertasoperacionestotal=cantidad1+cantidad2*precio;total=(cantidad1+cantidad2)*precio;
UnosoperadoresseevalanantesqueotrosPgina 99Fundamentosdelaprogramacin:TiposeinstruccionesI
ExpresinExpresin
-
LuisHe
rnnde
zYez
Precedenciadelosoperadorescantidad1=10;cantidad2=2;precio=40.0;
* y/ seevalanantesque + ytotal=cantidad1+cantidad2*precio;* antesque+ 10+2* 40,0 10+ 80,0 90,0total=(cantidad1+cantidad2)*precio;+ antesque* (10+ 2)*40,0 12* 40,0 480,0
Pgina 100Fundamentosdelaprogramacin:TiposeinstruccionesI
LuisHe
rnnde
zYez
Ejemplodeusodevariablesyexpresiones#includeusingnamespacestd;
int main(){
int cantidad;double precio,total;cantidad=12;precio=39.95;total=cantidad*precio;cout
-
LuisHe
rnnde
zYez
Memoria
...
Ejemplodeusodevariables#includeusingnamespacestd;
intmain(){
int cantidad;double precio,total;
Pgina 102Fundamentosdelaprogramacin:TiposeinstruccionesI
cantidad ?
precio ?
total ?
LuisHe
rnnde
zYez
Ejemplodeusodevariables#includeusingnamespacestd;
intmain(){
intcantidad;doubleprecio,total;cantidad=12;
Pgina 103Fundamentosdelaprogramacin:TiposeinstruccionesI
Memoria
...
cantidad 12
precio ?
total ?
-
LuisHe
rnnde
zYez
Ejemplodeusodevariables#includeusingnamespacestd;
intmain(){
intcantidad;doubleprecio,total;cantidad=12;precio=39.95;
Pgina 104Fundamentosdelaprogramacin:TiposeinstruccionesI
Memoria
...
cantidad 12
precio 39.95
total ?
LuisHe
rnnde
zYez
Ejemplodeusodevariables#includeusingnamespacestd;
intmain(){
intcantidad;doubleprecio,total;cantidad=12;precio=39.95;total=cantidad*precio;
Pgina 105Fundamentosdelaprogramacin:TiposeinstruccionesI
Memoria
...
cantidad 12
precio 39.95
total 479.4
-
LuisHe
rnnde
zYez
Ejemplodeusodevariables#includeusingnamespacestd;
intmain(){
intcantidad;doubleprecio,total;cantidad=12;precio=39.95;total=cantidad*precio;cout
-
LuisHe
rnnde
zYez
Pgina 108Fundamentosdelaprogramacin:TiposeinstruccionesI
LuisHe
rnnde
zYez
cin (iostream)Lecturadevaloresdevariables:operador>> (extractor)
Pgina 109Fundamentosdelaprogramacin:TiposeinstruccionesI
cin>>cantidad;
cin >>cantidad;
character inputstreamcharacter inputstream
Memoria
cantidad ?...
_
12
1 2 1 2
-
LuisHe
rnnde
zYez
Elextractor>>TransformaloscaracteresintroducidosendatosCursorparpadeante:lugardelecturadelsiguientecarcterLaentradaterminaconIntro (cursoralasiguientelnea)EldestinodelextractordebeserSIEMPRE unavariable!
Seignoranlosespaciosenblancoiniciales
Pgina 110Fundamentosdelaprogramacin:TiposeinstruccionesI
cin>>variable;
LuisHe
rnnde
zYez
Lecturadevaloresenteros(int)Seleendgitoshastaencontraruncarcterquenolosea
12abc 12abc 12abc 12Seasignaelvalor12alavariableElrestoquedapendienteparalasiguientelecturaRecomendacin:Leecadavariableenunalnea 12
Lecturadevaloresreales(double)Seleendgitos,elpuntodecimalyotrosdgitos
39.95.5abc 39.95abc 39.95Seasignaelvalor39,95alavariable;elrestoquedapendienteRecomendacin:Leecadavariableenunalnea 39.95
Pgina 111Fundamentosdelaprogramacin:TiposeinstruccionesI
-
LuisHe
rnnde
zYez
Qupasasielusuarioseequivoca?EldatonosercorrectoAplicacinprofesional:cdigodecomprobacinyayudaAqusupondremosquelosusuariosnoseequivocanEnocasionesaadiremoscomprobacionessencillas
Pgina 112Fundamentosdelaprogramacin:TiposeinstruccionesI
Paraevitarerrores,leecadadatoenunainstruccinaparteParaevitarerrores,leecadadatoenunainstruccinaparte
LuisHe
rnnde
zYez
Qupasasielusuarioseequivoca?int cantidad;double precio,total;coutcantidad;coutprecio;cout
-
LuisHe
rnnde
zYez
Qupasasielusuarioseequivoca?
Pgina 114Fundamentosdelaprogramacin:TiposeinstruccionesI
12 paracantidadNosepuedeleerunreal 0 paraprecio yError12 paracantidadNosepuedeleerunreal 0 paraprecio yError12 paracantidad.5 0,5 paraprecioLodemsquedapendiente12 paracantidad.5 0,5 paraprecioLodemsquedapendiente
Lecturacorrecta!!!Lecturacorrecta!!!
LuisHe
rnnde
zYez
DivisindedosnmerosPediralusuariodosnmerosymostrarleelresultadodedividirelprimeroentreelsegundo
Algoritmo.1. Pedirelnumerador2. Pedireldenominador3. Realizarladivisin,guardandoelresultado
4. MostrarelresultadoPgina 115Fundamentosdelaprogramacin:TiposeinstruccionesI
Datos/clculos
Variabledenominador (double)Variableresultado (double)
resultado=numerador/denominador
Variablenumerador (double)
-
LuisHe
rnnde
zYez
ProcesamientoEntrada SalidaDeclaraciones
EntradaProcesoSalidaMuchosprogramasseajustanaunsencilloesquema:
Pgina 116Fundamentosdelaprogramacin:TiposeinstruccionesI
1. Leernumerador2. Leerdenominador3. Calculardivisinenresultado4. Mostrarresultado
LuisHe
rnnde
zYez
DivisindedosnmerosPediralusuariodosnmerosymostrarleelresultadodedividirelprimeroentreelsegundo.
1. Leernumerador2. Leerdenominador3. Calculardivisinenresultado4. Mostrarresultado
Pgina 117Fundamentosdelaprogramacin:TiposeinstruccionesI
cin>>numerador;cin>>numerador;
cin>>denominador;cin>>denominador;
resultado=numerador/denominador;resultado=numerador/denominador;
cout
-
LuisHe
rnnde
zYez
Divisindedosnmeros#includeusingnamespacestd;
int main(){
double numerador,denominador,resultado;coutnumerador;coutdenominador;resultado=numerador/denominador;cout
-
LuisHe
rnnde
zYez
ProblemaDadaslabaseylaalturadeuntringulo,mostrarsurea
Mostrarenlapantallauntextoquepidalabasedeltringulo.Elusuariointroducirelvalorconelteclado.Mostrarenlapantallauntextoquepidalaalturadeltringulo.Elusuariointroducirelvalorconelteclado.Secalcularelreadeltringuloysemostrarenlapantalla.
Pgina 120Fundamentosdelaprogramacin:TiposeinstruccionesI
RefinamientoRefinamiento
LuisHe
rnnde
zYez
Objetos:Datosquemanejaelprograma
Mostrarenlapantallauntextoquepidalabasedeltringulo.Elusuariointroducirlabaseconelteclado.Mostrarenlapantallauntextoquepidalaalturadeltringulo.Elusuariointroducirlaalturaconelteclado.Secalcularelreadeltringuloysemostrarenlapantalla.
Pgina 121Fundamentosdelaprogramacin:TiposeinstruccionesI
coutcout cadenaliteralcadenaliteralvariablevariable cincin
cadenaliteralcadenaliteral variablevariablevariablevariable
-
LuisHe
rnnde
zYez
Datosquemanejaelprograma:tipos
Pgina 122Fundamentosdelaprogramacin:TiposeinstruccionesI
Objeto Tipo Vara? NombrePantalla Variable cout"Introduzcalabasedeltringulo:" Constante ningunoBasedeltringulo double Variable baseTeclado Variable cin"Introduzcalaalturadeltringulo:" Constante ningunoAlturadeltringulo double Variable alturareadeltringulo double Variable area
LuisHe
rnnde
zYez
Operaciones(acciones)
Mostrarenlapantallauntextoquepidalabasedeltringulo.Elusuariointroducirlabaseconelteclado. Mostrarenlapantallauntextoquepidalaalturadeltringulo.Elusuariointroducirlaalturaconelteclado.Secalcularelreadeltringuloysemostrarenlapantalla.
Pgina 123Fundamentosdelaprogramacin:TiposeinstruccionesI
cout...
area =base*altura/2area =base*altura/2
-
LuisHe
rnnde
zYez
Secuenciadeaccionesquehaderealizarelprogramaparaconseguirresolverelproblema1. Mostrarenlapantallaeltextoquepidalabasedeltringulo2. Leerdeltecladoelvalorparalabasedeltringulo3. Mostrarenlapantallaeltextoquepidalaaltura4. Leerdeltecladoelvalorparalaalturadeltringulo5. Calcularelreadeltringulo6. Mostrarelreadeltringulo
Pgina 124Fundamentosdelaprogramacin:TiposeinstruccionesI
LuisHe
rnnde
zYez
#includeusingnamespacestd;int main(){
return 0;}
Pgina 125Fundamentosdelaprogramacin:TiposeinstruccionesI
AlgoritmotraducidoacdigoenC++
Declaraciones1. Mostrarenlapantallaeltextoquepidalabasedeltringulo2. Leerdeltecladoelvalorparalabasedeltringulo3. Mostrarenlapantallaeltextoquepidalaalturadeltringulo4. Leerdeltecladoelvalorparalaalturadeltringulo5. Calcularelreadeltringulo6. Mostrarelreadeltringulo
-
LuisHe
rnnde
zYez
Elprograma:implementacin#includeusingnamespacestd;
int main(){
double base,altura,area;//Declaracionescoutbase;//2coutaltura;//4area =base*altura/2;//5cout
-
LuisHe
rnnde
zYez
Variabilidaddelosdatos
Pgina 128Fundamentosdelaprogramacin:TiposeinstruccionesI
DatosDatosConstantesConstantes
LiteralesLiterales
ConnombreConnombre
VariablesVariables
"Introduzcalabasedeltringulo:"3.141592653589
base,altura,area
Pi=3.141592653589
IdentificadoresIdentificadores
LuisHe
rnnde
zYez
Pgina 129Fundamentosdelaprogramacin:TiposeinstruccionesI
-
LuisHe
rnnde
zYez
Paravariablesyconstantesconnombre Nombre deundato(paraaccederlo/modificarlo) DebenserdescriptivosSintaxis:
Pgina 130Fundamentosdelaprogramacin:TiposeinstruccionesI
Almenos32caracteressignificativosAlmenos32caracteressignificativos
0..9,a..z,A..Z,_
a..z,A..Z,_
Nieesnivocalesacentuadas!Nieesnivocalesacentuadas!
palabrasreservadas
cantidadprrecio totalbasealturaarea numeradorcantidadprrecio totalbasealturaarea numerador
LuisHe
rnnde
zYez
PalabrasreservadasdellenguajeC++asm autoboolbreakcasecatchcharclassconst
const_cast continuedefaultdeletedodouble
dynamic_cast elseenumexplicitexternfalse
floatforfriendgoto ifinlineintlong
mutablenamespacenewoperatorprivateprotected
publicregisterreinterpret_cast returnshort
signedsizeofstaticstatic_cast structswitch
templatethisthrowtruetrytypedeftypeid
typename unionunsignedusingvirtualvoid
volatilewhile
Pgina 131Fundamentosdelaprogramacin:TiposeinstruccionesI
-
LuisHe
rnnde
zYez
Quidentificadoressonvlidos?balance interesAnual
_base_imponible aos
EDAD12 salario_1_mes
__edad clculoNmina
valor%100 AlgunValor
100caracteres valor?
_12_meses ____valor
Pgina 132Fundamentosdelaprogramacin:TiposeinstruccionesI
0..9,a..z,A..Z,_
a..z,A..Z,_LuisHe
rnnde
zYez
Pgina 133Fundamentosdelaprogramacin:TiposeinstruccionesI
-
LuisHe
rnnde
zYez
TiposCadadato,deuntipoconcretoCadatipoestablece: Elconjunto(intervalo)devaloresvlidos ElconjuntodeoperacionesquesepuedenrealizarExpresionescondatosdedistintostipos(compatibles):Transformacinautomticadetipos(promocindetipo)
Pgina 134Fundamentosdelaprogramacin:TiposeinstruccionesI
125'a'true3.14159
"Hola"
AnexodelTema2:detallestcnicosAnexodelTema2:detallestcnicos
LuisHe
rnnde
zYez
intNmerosenteros(sindecimales) 1363,12,49floatNmerosreales 12.45,3.1932,1.16E+02doubleNmerosreales(mayoresintervaloyprecisin)charCaracteres 'a' ,'{','\t'boolValoreslgicos(verdadero/falso) true,falsestringCadenasdecaracteres(bibliotecastring) "HolaMundo!"voidNada,ausenciadetipo,ausenciadedato(funciones)
Pgina 135Fundamentosdelaprogramacin:TiposeinstruccionesI
-
LuisHe
rnnde
zYez
Intervalodevalores:Juegodecaracteres(ASCII)Literales:'a''%''\t'Constantesdebarrainvertida(osecuenciasdeescape):Caracteresdecontrol'\t' =tabulador'\n' =saltodelnea
Pgina 136Fundamentosdelaprogramacin:TiposeinstruccionesI
ASCII(cdigos32..127)ASCII(cdigos32..127)ISO88591(ASCIIextendido:cdigos128..255)ISO88591(ASCIIextendido:cdigos128..255)
1byteCaracteres
LuisHe
rnnde
zYez
Slodosvaloresposibles: Verdadero(true) Falso(false)Literales:
truefalse
Cualquiernmerodistintode0 esequivalenteatrueEl0 esequivalenteafalse
Pgina 137Fundamentosdelaprogramacin:TiposeinstruccionesI
Valoreslgicos
-
LuisHe
rnnde
zYez
C++distingueentremaysculasyminsculas
int:palabrareservadadeC++paradeclarardatosenterosInt,INT oinT nosonpalabrasreservadasdeC++true:palabrareservadadeC++paraelvalorverdaderoTrue oTRUE nosonpalabrasreservadasdeC++
Pgina 138Fundamentosdelaprogramacin:TiposeinstruccionesI
LuisHe
rnnde
zYez
"Hola""Introduceelnumerador:""X142FG5TX?%A"
SecuenciasdecaracteresProgramasconvariablesdetipostring:#includeusingnamespacestd;
Pgina 139Fundamentosdelaprogramacin:TiposeinstruccionesI
" "
Lascomillastipogrficas(apertura/cierre) NOsirvenAsegratedeutilizarcomillasrectas:""
char
Cadenasdecaracteres
-
LuisHe
rnnde
zYez
Pgina 140Fundamentosdelaprogramacin:TiposeinstruccionesI
tipos.cpptipos.cpp
#include#includeusingnamespacestd;//Unsolousing...paraambasbibliotecas
int main(){
int entero=3;//Podemosasignar(inicializar)aldeclarardouble real=2.153;char caracter ='a';bool cierto=true;string cadena="Hola";cout
-
LuisHe
rnnde
zYez
Pgina 142Fundamentosdelaprogramacin:TiposeinstruccionesI
LuisHe
rnnde
zYez
[modificadores]tipo lista_de_variables;Opcional
lista_de_variables
int i,j,l;shortintunidades;unsignedshortintmonedas;double balance,beneficio,perdida;
Pgina 143Fundamentosdelaprogramacin:TiposeinstruccionesI
Identificador
Programacinconbuenestilo:IdentificadoresdescriptivosEspaciotrascadacomaNombresdelasvariablesenminsculas(Variaspalabras:capitalizacadainicial:interesPorMes)
,
-
LuisHe
rnnde
zYez
Sereservamemoriasuficienteparacadatipodedatoint inicio;shortintunidades;double balance;
Pgina 144Fundamentosdelaprogramacin:TiposeinstruccionesI
Memoria01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
...
inicio
unidades
balance
LuisHe
rnnde
zYez
EnC++lasvariablesnoseinicializanautomticamente!Unavariabledebeserhabersidoinicializadaantesdeseraccedida!Cmoseinicializaunavariable?
Alleersuvalor(cin>>) Alasignarleunvalor(instruccindeasignacin) Aldeclararla
Inicializacinenlapropiadeclaracin:
Pgina 145Fundamentosdelaprogramacin:TiposeinstruccionesI
Expresin:valorcompatibleExpresin:valorcompatibleIdentificador Expresin =
Enparticular,unaexpresinpuedeserunliteral
int i=0,j,l=26;shortintunidades=100;
-
LuisHe
rnnde
zYez
Obtencindelvalordeunavariable Nombredelavariableenunaexpresin
cout
-
LuisHe
rnnde
zYez
Eloperador=
Alaizquierda,SIEMPREunavariable
int i,j=2;i=23 +j*5;//itomaelvalor33
;Expresin=
Pgina 148Fundamentosdelaprogramacin:TiposeinstruccionesI
Variable
LuisHe
rnnde
zYez
Erroresint a,b,c;
5 =a;//ERROR:unliteralnopuederecibirunvalor
a+23 =5;//ERROR:nopuedehaberunaexpresinalaizda.
b="abc";//ERROR:unenteronopuedeguardarunacadena
c=23 5;//ERROR:expresinnovlida(faltaoperador)
Pgina 149Fundamentosdelaprogramacin:TiposeinstruccionesI
-
LuisHe
rnnde
zYez
int i,j=2;i=23 +j*5;
Pgina 150Fundamentosdelaprogramacin:TiposeinstruccionesI
Memoria01
02
03
04
05
06
07
08
09
10
...
i
j 2
?Memoria
01
02
03
04
05
06
07
08
09
10
...
i
j 2
3323 +2 *523 +2 *5
LuisHe
rnnde
zYez
Necesitamosunavariableauxiliardouble a=3.45,b=127.5,aux;
Pgina 151Fundamentosdelaprogramacin:TiposeinstruccionesI
a 3.45
b 127.5
aux ?
a 3.45
b 127.5
aux 3.45
a 127.5
b 127.5
aux 3.45
a 127.5
b 3.45
aux 3.45
aux=a;
a=b;
b=aux;
-
LuisHe
rnnde
zYez
Pgina 152Fundamentosdelaprogramacin:TiposeinstruccionesI
LuisHe
rnnde
zYez
OperacionessobrevaloresdelostiposCadatipodeterminalasoperacionesposiblesTiposdedatosnumricos(int,float ydouble):
Asignacin(=) Operadoresaritmticos Operadoresrelacionales(menor,mayor,igual,...)Tipodedatosbool: Asignacin(=) Operadoreslgicos(Y,O,NO)Tiposdedatoschar ystring: Asignacin(=) Operadoresrelacionales(menor,mayor,igual,...)
Pgina 153Fundamentosdelaprogramacin:TiposeinstruccionesI
-
LuisHe
rnnde
zYez
Operadoresparatiposdedatosnumricos
Pgina 154Fundamentosdelaprogramacin:TiposeinstruccionesI
Operador Operandos Posicin int float /double 1(monario) Prefijo Cambiodesigno+ 2(binario) Infijo Suma 2(binario) Infijo Resta* 2(binario) Infijo Producto/ 2(binario) Infijo Div.entera Divisinreal% 2(binario) Infijo Mdulo Noaplicable++ 1(monario) Prefijo/postfijo Incremento 1(monario) Prefijo/postfijo Decremento
LuisHe
rnnde
zYez
OperadoresmonariosyoperadoresbinariosOperadoresmonarios (unarios) Cambiodesigno():
Delantedevariable,constanteoexpresinentreparntesissaldoRATIO(3 *a b)
Incremento/decremento(slovariables)(prefijo/postfijo):++interes mesesj++ //1ms1menos
Operadoresbinarios OperandoizquierdooperadoroperandoderechoOperandos:literales,constantes,variablesoexpresiones
2 +3 a*RATIOa+b(a%b)*(c/d)
Pgina 155Fundamentosdelaprogramacin:TiposeinstruccionesI
-
LuisHe
rnnde
zYez
Divisinenteraodivisinreal?Ambosoperandosenteros:divisinenteraint i=23,j=2;cout
-
LuisHe
rnnde
zYez
OperadoresdeincrementoydecrementoIncremento/decrementodelavariable numricaenunaunidad
Prefijo:Antesdeaccederint i=10,j;j=++i;//Incrementaantesdecopiarcout
-
LuisHe
rnnde
zYez
Pgina 160Fundamentosdelaprogramacin:TiposeinstruccionesI
LuisHe
rnnde
zYez
Enquordenseevalanlosoperadores?3 +5 *2 /2 1
Deizquierdaaderecha?Dederechaaizquierda?Unosantesqueotros?Precedenciadelosoperadores(prioridad):
SeevalananteslosdemayorprecedenciaYsitienenigualprioridad?
Normalmente,deizquierdaaderechaParntesis:fuerzanaevaluarsusubexpresin
Pgina 161Fundamentosdelaprogramacin:TiposeinstruccionesI
-
LuisHe
rnnde
zYez
Pgina 162Fundamentosdelaprogramacin:TiposeinstruccionesI
Precedencia OperadoresMayorprioridad ++ (postfijos)
++ (prefijos) (cambiodesigno)*/%
Menorprioridad +
3 +5 *2 /2 1
Mismaprecedencia:IzquierdaantesMismaprecedencia:Izquierdaantes Mismaprecedencia:IzquierdaantesMismaprecedencia:IzquierdaantesMayorprecedenciaMayorprecedencia
3 +10 /2 1 3 +5 1 8 1 7
LuisHe
rnnde
zYez
Pgina 163Fundamentosdelaprogramacin:TiposeinstruccionesI
Primero,losparntesis...Primero,losparntesis...((3 + 5)*4 +12)/4 (3 * 2 1)* antesque* antesque
(8 *4 +12)/4 (6 1)
* antesque+* antesque+(32 +12)/4 5
44 /4 5
11 5
6
/ antesque/ antesquePonespacioantesydespusdecadaoperadorbinarioPonespacioantesydespusdecadaoperadorbinario
-
LuisHe
rnnde
zYez
#includeusingnamespacestd;
int main(){double x,f;coutx;f=3 *x*x/5 +6 *x/7 3;cout
-
LuisHe
rnnde
zYez
Valorsiguientealmximo?Valormayordelmximo(omenordelmnimo)deltiposhortinti=32767;//Valormximoparashortinti++;//32768nocabe enunshortintcout
-
LuisHe
rnnde
zYez
Declaracindeconstantes ModificadordeaccesoconstVariablesinicializadasalasquenodejamosvariar
Pgina 168Fundamentosdelaprogramacin:TiposeinstruccionesI
Declaracindevariableconinicializador
Programacinconbuenestilo:Ponenmaysculalaprimeraletradeunaconstanteotodosunombre
Laconstantenopodrvolveraapareceralaizquierdadeun=Laconstantenopodrvolveraapareceralaizquierdadeun=
constconst
constshortintMeses=12;constdouble Pi=3.141592,
RATIO=2.179 *Pi;
LuisHe
rnnde
zYez
AumentanlalegibilidaddelcdigocambioPoblacion =(0.1758 0.1257)*poblacion; vs.cambioPoblacion =(RatioNacimientos RatioMuertes)*poblacion;
Facilitanlamodificacindelcdigodouble compra1=bruto1*18 /100;double compra2=bruto2*18 /100;double total=compra1+compra2;cout
-
LuisHe
rnnde
zYez
Pgina 170Fundamentosdelaprogramacin:TiposeinstruccionesI
constantes.cppconstantes.cpp
#includeusingnamespacestd;
int main(){const double Pi=3.141592;double radio=12.2,circunferencia;circunferencia=2 *Pi*radio;cout
-
LuisHe
rnnde
zYez
Pgina 172Fundamentosdelaprogramacin:TiposeinstruccionesI
abs(x) Valorabsolutodexpow(x,y) xelevadoaysqrt(x) Razcuadradadexceil(x) Menorenteroque esmayoroigualquexfloor(x) Mayorenteroqueesmenoroigualquexexp(x) exlog(x) Ln x(logaritmonaturaldex)log10(x) Logaritmoenbase10 dexsin(x) Senodexcos(x) Coseno dextan(x) Tangentedexround(x) Redondeoalenteromsprximotrunc(x) Prdidadelapartedecimal(entero)
#include
Algunas...Algunas...LuisHe
rnnde
zYez
#includeusingnamespacestd;#include
int main(){double x,y,f;coutx;couty;f=2 *pow(x,5) +sqrt(pow(x,3) /pow(y,2))
/abs(x*y) cos(y);cout
-
LuisHe
rnnde
zYez
Pgina 174Fundamentosdelaprogramacin:TiposeinstruccionesI
LuisHe
rnnde
zYez
Asignacin,++/ yoperadoresrelacionalesFuncionesparacaracteres (bibliotecacctype)
isalnum(c) true sic esunaletraoundgitoisalpha(c) true sic esunaletraisdigit(c) true sic esundgitoislower(c) true sic esunaletraminsculaisupper(c) true sic esunaletramaysculatoupper(c) devuelvelamaysculadectolower(c) devuelvelaminsculadec
Pgina 175Fundamentosdelaprogramacin:TiposeinstruccionesI
char
false encasocontrario
-
LuisHe
rnnde
zYez
...#include
int main(){char caracter1='A',caracter2='1',caracter3='&';cout
-
LuisHe
rnnde
zYez
OperadoresrelacionalesComparaciones(condiciones)
Condicinsimple::=ExpresinOperador_relacional ExpresinConcordanciadetipoentrelasexpresionesResultado:bool (true ofalse)
Pgina 178Fundamentosdelaprogramacin:TiposeinstruccionesI
< menorque mayorque>= mayoroigualque== igualque!= distintode
Operadores(prioridad)...*/%+< >===!==+==*=/=%=
LuisHe
rnnde
zYez
Menorprioridadquelosoperadoresaditivosymultiplicativosbool resultado;int a=2,b=3,c=4;resultado=a< 5;//2= 12;//10>=12 falseresultado=a*(b+c)>= 12;//14>=12 trueresultado=a!= b;//2!=3 trueresultado=a*b> c+5;//6>9 falseresultado=a+b== c+1;//5==5 true
Pgina 179Fundamentosdelaprogramacin:TiposeinstruccionesI
Noconfundaseloperadordeigualdad(==)coneloperadordeasignacin(=)Noconfundaseloperadordeigualdad(==)coneloperadordeasignacin(=)
-
LuisHe
rnnde
zYez
Pgina 180Fundamentosdelaprogramacin:TiposeinstruccionesI
LuisHe
rnnde
zYez
Pgina 181Fundamentosdelaprogramacin:TiposeinstruccionesI
Seleccin:bifurcacincondicional
truetrue
cdigoT
falsefalse
cdigoF
if (condicin) {cdigoT
}else{
cdigoF}
CondicinCondicin
int num;coutnum;if (num%2 ==0){
cout
-
LuisHe
rnnde
zYez
Pgina 182Fundamentosdelaprogramacin:TiposeinstruccionesI
#includeusingnamespacestd;
int main(){intop1=13,op2=4;intopcion;cout
-
LuisHe
rnnde
zYez
{intruccin1intruccin2...intruccinN
}
{intruccin1intruccin2...intruccinN
}
Pgina 184Fundamentosdelaprogramacin:TiposeinstruccionesI
AgrupacindeinstruccionesGrupodeinstruccionesaejecutarenunaramadelif
Tab3esp.Tab3esp.
int num,total=0;cin>>num;if (num>0){
cout
-
LuisHe
rnnde
zYez
Pgina 186Fundamentosdelaprogramacin:TiposeinstruccionesI
LuisHe
rnnde
zYez
Pgina 187Fundamentosdelaprogramacin:TiposeinstruccionesI
Repeticinoiteracincondicional
while (condicin) {cuerpo
}Cuerpo
truetrue falsefalse
Bloquedecdigo
Silacondicinesfalse alempezar,noseejecutaelcuerponingunavezSilacondicinesfalse alempezar,noseejecutaelcuerponingunavez
cuerpo)condicin(while
Condicin
-
LuisHe
rnnde
zYez
Pgina 188Fundamentosdelaprogramacin:TiposeinstruccionesI
#includeusingnamespacestd;
int main(){inti=1,n=0,suma=0;while (n
-
LuisHe
rnnde
zYez
Pgina 190Fundamentosdelaprogramacin:TiposeinstruccionesI
LuisHe
rnnde
zYez
1 6 = l a t o T7 3 5 . 3 5 1
Flujosdetexto(streams)ConectanlaejecucindelprogramaconlosdispositivosdeE/SSonsecuenciasdecaracteresEntradaporteclado:flujodeentradacin (tipoistream)Salidaporpantalla:flujodesalidacout (tipoostream)
Pgina 191Fundamentosdelaprogramacin:TiposeinstruccionesI
Programa
cincin coutcout
Bibliotecaiostream conespaciodenombresstdBibliotecaiostream conespaciodenombresstdFlujodeentrada Variable>>
Flujodesalida Expresin
-
LuisHe
rnnde
zYez
Saltalosespaciosenblanco(espacios,tabuladoresosaltosdelnea) charSeleeuncarcterenlavariable intSeleendgitosysetransformanenelvaloraasignar float/double:Seleendgitos(quizelpuntoymsdgitos)yseasignaelvalor bool:Siselee1,seasignatrue;concualquierotrovalorseasignafalse
Pgina 192Fundamentosdelaprogramacin:TiposeinstruccionesI
Variablecin >>
SeamigableconelusuarioLeecadadatoenunalneaSeamigableconelusuarioLeecadadatoenunalneacoutedad;
LuisHe
rnnde
zYez
cin>>cadena terminaconelprimerespacioenblancocin.sync() descartalaentradapendiente
Pgina 193Fundamentosdelaprogramacin:TiposeinstruccionesI
Cmoleervariaspalabras?Siguientepgina...
Cmoleervariaspalabras?Siguientepgina...
apellidos recibe"Antonio"apellidos recibe"Antonio"
string nombre,apellidos;coutnombre;coutapellidos;cout
-
LuisHe
rnnde
zYez
Pgina 194Fundamentosdelaprogramacin:TiposeinstruccionesI
LecturasinsaltarlosespaciosenblancoinicialesLlamadaafuncionesconeloperadorpunto(.):Eloperadorpuntopermitellamaraunafuncinsobreunavariablevariable.funcin(argumentos)
Lecturadeuncarctersinsaltarespaciosenblanco:cin.get(c);//Leeelsiguientecarcter
Lecturadecadenassinsaltarlosespaciosenblanco:getline(cin,cad);Leetodoloquehayahastaelfinaldelalnea(Intro)Recuerda:Espaciosenblanco sonespacios,tabuladores,saltosdelnea,...
LuisHe
rnnde
zYez
Representacintextualdelosdatosint meses=7;cout
-
LuisHe
rnnde
zYez
int meses=7;cout
-
LuisHe
rnnde
zYez
bool fin=false;cout
-
LuisHe
rnnde
zYez
Losprogramaspuedenincluirotrasfuncionesademsdemain()FormageneraldeunafuncinenC++:tipo nombre(parmetros)//Cabecera{
//Cuerpo}
Tipo dedatoquedevuelvelafuncincomoresultado Parmetros paraproporcionardatosalafuncin
Declaracionesdevariablesseparadasporcomas Cuerpo:secuenciadedeclaracioneseinstruccionesUnbloquedecdigo!
Pgina 200Fundamentosdeprogramacin:TiposeinstruccionesI
LuisHe
rnnde
zYez
Datoslocales:declaradosenelcuerpodelafuncinDatosauxiliaresqueutilizalafuncin(puedenohaber)
Parmetros:declaradosenlacabeceradelafuncinDatosdeentradadelafuncin(puedenohaber)
Ambossondeusoexclusivodelafuncinynoseconocenfueradouble f(intx,int y){
//Declaracindedatoslocales:double resultado;
//Instrucciones:resultado=2 *pow(x,5) +sqrt(pow(x,3)
/pow(y,2)) /abs(x*y) cos(y);
return resultado;//Devolucindelresultado}
Pgina 201Fundamentosdeprogramacin:TiposeinstruccionesI
-
LuisHe
rnnde
zYez
LlamadaaunafuncinconparmetrosNombre(Argumentos)Alllamaralafuncin: Tantosargumentosentrelosparntesiscomoparmetros Ordendedeclaracindelosparmetros Cadaargumento:mismotipoquesuparmetro Cadaargumento:expresinvlida(sepasaelresultado)
SecopianlosvaloresresultantesdelasexpresionesenloscorrespondientesparmetrosLlamadasalafuncin:enexpresionesdeotras funcionesint valor=f(2,3);
Pgina 202Fundamentosdeprogramacin:TiposeinstruccionesI
LuisHe
rnnde
zYez
Secopianlosargumentosenlosparmetrosint funcion(int x,double a){
...}
int main(){int i=124;double d=3;funcion(i,33 *d);...
return0;//main()devuelve0alS.O.}
Pgina 203Fundamentosdeprogramacin:TiposeinstruccionesI
Memoria
i 124
d 3.0
...
...
x 124
a 99.0
...
LosargumentosnosemodificanLosargumentosnosemodifican
-
LuisHe
rnnde
zYez
LafuncinhadedevolverunresultadoLafuncinterminasuejecucindevolviendounresultadoLainstruccinreturn (slounaencadafuncin) Devuelveeldatoqueseponeacontinuacin(tipodelafuncin) TerminalaejecucindelafuncinEldatodevueltosustituyealallamadadelafuncin:int cuad(int x){ int main(){
return x*x; cout
-
LuisHe
rnnde
zYez
#includeusingnamespacestd;#include
//Prototiposdelasfunciones(exceptomain())bool par(int num);boolletra(char car);intsuma(int num);double formula(int x,inty);
int main(){intnumero,sum,x,y;char caracter;double f;coutnumero;if (par(numero)){
cout
-
LuisHe
rnnde
zYez
//Implementacindelasfuncionespropias
boolpar(int num){bool esPar;
if (num%2==0){esPar =true;
}else {
esPar =false;}
return esPar;}...
Pgina 208Fundamentosdeprogramacin:TiposeinstruccionesI
LuisHe
rnnde
zYez
bool letra(char car){bool esLetra;if ((car>='a')&&(car='A')&&(car
-
LuisHe
rnnde
zYez
double formula(int x,inty){double f;
f=2 *pow(x,5)+sqrt(pow(x,3)/pow(y,2))/abs(x*y) cos(y);
return f;}
Pgina 210Fundamentosdeprogramacin:TiposeinstruccionesI
funciones.cppfunciones.cppLuisHe
rnnde
zYez
LicenciaCC(Creative Commons)Estetipodelicenciasofrecenalgunosderechosaterceraspersonasbajociertascondiciones.Estedocumentotieneestablecidaslassiguientes:
Pulsaenlaimagendearribaaladerechaparasaberms.Fundamentosdelaprogramacin:TiposeinstruccionesI Pgina 211
Reconocimiento(Attribution):Encualquierexplotacindelaobraautorizadaporlalicenciaharfaltareconocerlaautora.Nocomercial(Noncommercial):Laexplotacindelaobraquedalimitadaausosnocomerciales.Compartirigual(Sharealike):Laexplotacinautorizadaincluyelacreacindeobrasderivadassiemprequemantenganlamismalicenciaalserdivulgadas.
-
2AGradoenIngenieraInformticaGradoenIngenieradelSoftwareGradoenIngenieradeComputadores
LuisHernndezYezFacultaddeInformticaUniversidadComplutense
FundamentosdelaprogramacinLuisHe
rnnde
zYez
int 214float 216Notacincientfica 217double 218char 220bool 221string 222Literalesconespecificacindetipo 223
Fundamentosdelaprogramacin:TiposeinstruccionesI(Anexo)
-
LuisHe
rnnde
zYez
Intervalodevalores:2147483648 ..2147483647
Bytesdememoria:4*Literales:1363,12,010 ,0x1A
Pgina 214Fundamentosdelaprogramacin:TiposeinstruccionesI(Anexo)
01
02
03
04
05
06
07
08
09
...
NotacinhexadecimalNotacinhexadecimal
(*)Dependedelamquina4byteseslomshabitualSepuedesabercuntosseusanconlafuncinsizeof(int)
(*)Dependedelamquina4byteseslomshabitualSepuedesabercuntosseusanconlafuncinsizeof(int)
NotacinoctalNotacinoctal
+
0
x 0..9,A..F0..9,A..F
0..90..9
0..7
NmerosenterosLuisHe
rnnde
zYez
Nmerosennotacinoctal(base8:dgitosentre0y7):010 =8ennotacindecimal10=1x 81 +0x 80 =1x 8+00423 =275ennotacindecimal423=4x 82 +2x 81 +3x 80 =4x 64+2x 8+3=256+16+3
Nmerosennotacinhexadecimal(base16):Dgitos posibles:0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F
0x1F =31 ennotacindecimal1F=1x 161 +Fx 160 =1x 16+150xAD =173ennotacindecimalAD=Ax 161 +Dx 160 =10x 16+13=160+13
Pgina 215Fundamentosdelaprogramacin:TiposeinstruccionesI(Anexo)
Nmerosenteros
-
LuisHe
rnnde
zYez
Intervalodevalores:+/ 1.18e38 ..3.40e+38
Bytesdememoria:4*Puntoflotante.Precisin:7 dgitosLiterales(puntodecimal):Notacinnormal:134.45,1.1764
Notacincientfica:1.4E2,5.23e02
Pgina 216Fundamentosdelaprogramacin:TiposeinstruccionesI(Anexo)
01
02
03
04
05
06
07
08
09
...
(*)sizeof(float)(*)sizeof(float)
0..90..9
+
+
+
.
.
e,E
0..90..9
0..90..9 0..90..9 0..90..9
Nmerosreales(condecimales)LuisHe
rnnde
zYez
Siempreunnmero(conosinsigno)conunsolodgitodeparteentera,seguidodelexponente(potenciade10):5.23e2 5,23x 102 0,05231.11e2 1,11x 102 111,07.4523e04 7,4523x 104 0,000745233.3333e+06 3,3333x 106 3.333.300
Pgina 217Fundamentosdelaprogramacin:TiposeinstruccionesI(Anexo)
-
LuisHe
rnnde
zYez
Intervalodevalores:+/ 2.23e308 ..1.79e+308
Bytesdememoria:8*Puntoflotante.Precisin:15 dgitosLiterales(puntodecimal):Notacinnormal:134.45,1.1764
Notacincientfica:1.4E2,5.23e02
Pgina 218Fundamentosdelaprogramacin:TiposeinstruccionesI(Anexo)
01
02
03
04
05
06
07
08
09
...
(*)sizeof(double)(*)sizeof(double)
0..90..9
+
+
.
.
e,E
0..90..9
0..90..9 0..90..9 0..90..9
+
Nmerosreales(condecimales)LuisHe
rnnde
zYez
Intervalodevalores:Juegodecaracteres(ASCII)Bytesdememoria:1 (FC)Literales:'a','%','\t'Constantesdebarrainvertida:(Osecuenciasdeescape)Paracaracteresdecontrol'\t' =tabulador,'\n' =saltodelnea,
Pgina 219Fundamentosdelaprogramacin:TiposeinstruccionesI(Anexo)
01
02
03
04
05
06
07
08
09
...
Carcter
n,t,v,b,r,f,a,\n,t,v,b,r,f,a,\' '
\
Caracteres
-
LuisHe
rnnde
zYez
JuegodecaracteresASCII:AmericanStandardCode forInformation Interchange (1963)Caracteresconcdigosentre0y127(7bits) Caracteresdecontrol:Cdigosdel0al31y127Tabulacin,saltodelnea,... Caracteresimprimibles:Cdigosdel32al126
JuegodecaracteresASCIIextendido(8bits):ISO88591+Cdigosentre128y255
Pgina 220Fundamentosdelaprogramacin:TiposeinstruccionesI(Anexo)
Multituddecodificaciones:EBCDIC,UNICODE,UTF8,...
LuisHe
rnnde
zYez
Slodosvaloresposibles: Verdadero(true) Falso(false)Bytesdememoria:1 (FC)Literales:
true,falseEnrealidad,cualquiernmerodistintode0esequivalenteatrueyelnmero0esequivalenteafalse
Pgina 221Fundamentosdelaprogramacin:TiposeinstruccionesI(Anexo)
01
02
03
04
05
06
07
08
09
...
Valoreslgicos
-
LuisHe
rnnde
zYez
"Hola","Introduceelnumerador:","X142FG5TX?%A"
SecuenciasdecaracteresSeasignalamemoriaquesenecesitaparalasecuenciaconcretaRequierenlabibliotecastring conelespaciodenombresstd:#includeusingnamespacestd;
Pgina 222Fundamentosdelaprogramacin:TiposeinstruccionesI(Anexo)
Carcter
Ojo!Lascomillastipogrficas(apertura/cierre)tedarnproblemasalcompilar.Asegratedeutilizarcomillasrectas:""
" "
CadenasdecaracteresLuisHe
rnnde
zYez
Pordefectounliteralenteroseconsideraundatoint longint:35L,1546l unsignedint:35U,1546u unsignedlongint:35UL,1546ulPordefectounliteralrealseconsideraundatodouble float:1.35F,15.46f longdouble:1.35L,15.46l
Abreviaturasparamodificadoresdetiposshort shortintlong longintEspreferibleevitarelusodetalesabreviaturas:Minimizarlacantidaddeinformacinarecordarsobreellenguaje
Pgina 223Fundamentosdelaprogramacin:TiposeinstruccionesI(Anexo)
-
LuisHe
rnnde
zYez
LicenciaCC(Creative Commons)Estetipodelicenciasofrecenalgunosderechosaterceraspersonasbajociertascondiciones.Estedocumentotieneestablecidaslassiguientes:
Pulsaenlaimagendearribaaladerechaparasaberms.Fundamentosdelaprogramacin:TiposeinstruccionesI(Anexo) Pgina 224
Reconocimiento(Attribution):Encualquierexplotacindelaobraautorizadaporlalicenciaharfaltareconocerlaautora.Nocomercial(Noncommercial):Laexplotacindelaobraquedalimitadaausosnocomerciales.Compartirigual(Sharealike):Laexplotacinautorizadaincluyelacreacindeobrasderivadassiemprequemantenganlamismalicenciaalserdivulgadas.
-
3GradoenIngenieraInformticaGradoenIngenieradelSoftwareGradoenIngenieradeComputadores
LuisHernndezYezFacultaddeInformticaUniversidadComplutense
FundamentosdelaprogramacinLuisHe
rnnde
zYez
Fundamentosdelaprogramacin:TiposeinstruccionesII
Tipos,valoresyvariables 227Conversindetipos 232Tiposdeclaradosporelusuario 236Tiposenumerados 238Entrada/Salida
conarchivosdetexto 248Lecturadearchivosdetexto 253Escrituraenarchivosdetexto 266
Flujodeejecucin 272Seleccinsimple 276Operadoreslgicos 282Anidamientodeif 286Condiciones 290Seleccinmltiple 293
Laescalaifelseif 295Lainstruccinswitch 302
Repeticin 313Elbuclewhile 316
Elbuclefor 321Buclesanidados 331
mbitoyvisibilidad 339Secuencias 349
Recorridodesecuencias 355Secuenciascalculadas 363Bsquedaensecuencias 370
Arraysdedatossimples 374Usodevariablesarrays 379Recorridodearrays 382Bsquedaenarrays 387Arraysnocompletos 393
-
LuisHe
rnnde
zYez
Pgina 227Fundamentosdelaprogramacin:TiposeinstruccionesII
LuisHe
rnnde
zYez
TipoConjuntodevaloresconsusposiblesoperacionesValorConjuntodebitsinterpretadoscomodeuntipoconcretoVariable (oconstante)CiertamemoriaconnombreparavaloresdeuntipoDeclaracinInstruccinqueidentificaunnombreDefinicinDeclaracinqueasignamemoriaaunavariableoconstante
Pgina 228Fundamentosdelaprogramacin:TiposeinstruccionesII
-
LuisHe
rnnde
zYez
Memoriasuficienteparasutipodevaloresshortinti=3;
int j=9;
char c='a';
double x=1.5;
Elsignificadodelosbitsdependedeltipodelavariable:00000000000000000000000001111000Interpretadocomoint eselentero120Interpretadocomochar (slo01111000)eselcarcter'x'
Pgina 229Fundamentosdelaprogramacin:TiposeinstruccionesII
ii 3
jj 9
cc a
xx 1.5
LuisHe
rnnde
zYez
Simples Estndar:int,float,double,char,boolConjuntodevalorespredeterminado Definidosporelusuario:enumeradosConjuntodevaloresdefinidoporelprogramador
Estructurados(Tema5) Coleccioneshomogneas:arraysTodosloselementosdelacoleccindeunmismotipo Coleccionesheterogneas:estructurasElementosdelacoleccindetiposdistintos
Pgina 230Fundamentosdeprogramacin:TiposeinstruccionesII
-
LuisHe
rnnde
zYez
Consusposiblesmodificadores:[unsigned][short] int
longlong int
float
[long] double
char
bool
Pgina 231Fundamentosdelaprogramacin:TiposeinstruccionesII
Definicindevariables:tipo nombre [=expresin][,...];Definicindeconstantesconnombre:consttipo nombre =expresin;
longint int
LuisHe
rnnde
zYez
Pgina 232Fundamentosdelaprogramacin:TiposeinstruccionesII
-
LuisHe
rnnde
zYez
PromocindetiposDosoperandosdetiposdistintos:Elvalordeltipomenor sepromocionaaltipomayorshortinti=3;int j=2;double a=1.5,b;b=a+i*j;
Pgina 233Fundamentosdelaprogramacin:TiposeinstruccionesII
long doubledoublefloatlong intintshort intP
romocin
Prom
ocin
Valor3 shortint (2bytes) int (4bytes)Valor3 shortint (2bytes) int (4bytes)Valor6 int (4bytes) double (8bytes)Valor6 int (4bytes) double (8bytes)
b=a+3 *2;
b=1.5 +6;
LuisHe
rnnde
zYez
Conversinsegura:Deuntipomenorauntipomayorshortint int longint ...Conversinnosegura:Deuntipomayorauntipomenorintentero=1234;char caracter;caracter =entero;//Conversinnosegura
Menormemoria:Prdidadeinformacinenlaconversin
Pgina 234Fundamentosdelaprogramacin:TiposeinstruccionesII
long doubledoublefloatlong intintshort int
-
LuisHe
rnnde
zYez
Fuerzanunaconversindetipo:tipo(expresin)Elvalorresultantedelaexpresin setratacomounvalordeltipoint a=3,b=2;cout
-
LuisHe
rnnde
zYez
Describimoslosvaloresdelasvariablesdeltipotypedefdescripcinnombre_de_tipo;
Pgina 237Fundamentosdelaprogramacin:TiposeinstruccionesII
Nombresdetipospropios:tminsculaseguidadeunaovariaspalabrascapitalizadasLoscolorearemosennaranja,pararemarcarquesontipostypedefdescripcintMiTipo;typedefdescripcintMoneda;typedefdescripcintTiposDeCalificacion;
typedefdescripcintMiTipo;typedefdescripcintMoneda;typedefdescripcintTiposDeCalificacion;
Identificadorvlido
Declaracindetipofrenteadefinicindevariable
LuisHe
rnnde
zYez
Pgina 238Fundamentosdelaprogramacin:TiposeinstruccionesII
-
LuisHe
rnnde
zYez
Enumeracindelconjuntodevaloresposiblesparalasvariables:enum {smbolo1,smbolo2,...,smboloN }
enum {centimo,dos_centimos,cinco_centimos,diez_centimos,veinte_centimos,medio_euro,euro }
Valoresliteralesquepuedentomarlasvariables(enamarillo)
Pgina 239Fundamentosdelaprogramacin:TiposeinstruccionesII
enumenum
,
{ Identificador }
LuisHe
rnnde
zYez
typedefdescripcinnombre_de_tipo;Elegimosunnombreparaeltipo:tMonedatypedefenum {centimo,dos_centimos,cinco_centimos,
diez_centimos,veinte_centimos,medio_euro,euro }tMoneda;
Pgina 240Fundamentosdelaprogramacin:TiposeinstruccionesII
Enelmbitodeladeclaracin,sereconoceunnuevotipotMonedatMoneda moneda1,moneda2;Cadavariabledeesetipocontendralgunodelossmbolosmoneda1=dos_centimos;moneda2=euro;
moneda1moneda1 dos_centimos
moneda2moneda2 euro
descripcindescripcin
MejoranlalegibilidadMejoranlalegibilidad
(Internamenteseusanenteros)(Internamenteseusanenteros)
-
LuisHe
rnnde
zYez
typedefenum{enero,febrero,marzo,abril,mayo,junio,julio,agosto,septiembre,octubre,noviembre,diciembre}tMes;
tMes mes;Lecturadelavariablemes:cin>>mes;SeesperaunvalorenteroNosepuedeescribirdirectamenteenero ojunioYsiseescribelavariableenlapantalla:cout
-
LuisHe
rnnde
zYez
typedefenum {enero,febrero,marzo,abril,mayo,junio,julio,agosto,septiembre,octubre,noviembre,diciembre} tMes;
Pgina 243Fundamentosdelaprogramacin:TiposeinstruccionesII
if (mes==enero){cout
-
LuisHe
rnnde
zYez
#includeusingnamespacestd;
typedef enum{enero,febrero,marzo,abril,mayo,junio,julio,agosto,septiembre,octubre,noviembre,diciembre }tMes;
typedef enum {lunes,martes,miercoles,jueves,viernes,sabado,domingo }tDiaSemana;
string cadMes(tMes mes);string cadDia(tDiaSemana dia);
int main(){tDiaSemana hoy=lunes;int dia =21;tMes mes=octubre;int anio =2013;...
Pgina 245Fundamentosdelaprogramacin:TiposeinstruccionesII
Silostiposseusanenvariasfunciones,losdeclaramosantesdelosprototipos
LuisHe
rnnde
zYez
//Mostramoslafechacout
-
LuisHe
rnnde
zYez
string cadMes(tMes mes){string cad;
if (mes==enero){cad ="enero";
}if (mes==febrero){
cad ="febrero";}...if (mes==diciembre){
cad ="diciembre";}
return cad;}
string cadDia(tDiaSemana dia);string cad;
if (dia ==lunes){cad ="lunes";
}if (dia ==martes){
cad ="martes";}...if (dia ==domingo){
cad ="domingo";}
return cad;}
Pgina 247Fundamentosdelaprogramacin:TiposeinstruccionesII
fechas.cppfechas.cppLuisHe
rnnde
zYez
Pgina 248Fundamentosdelaprogramacin:TiposeinstruccionesII
-
LuisHe
rnnde
zYez
Datosdelprograma:enlamemoriaprincipal(voltil)Medios(dispositivos)dealmacenamientopermanente: Discosmagnticosfijos(internos)oporttiles(externos) Cintasmagnticas Discospticos(CD,DVD,BlueRay) MemoriasUSB
MantienenlainformacinenarchivosSecuenciasdedatos
Pgina 249Fundamentosdelaprogramacin:TiposeinstruccionesII
LuisHe
rnnde
zYez
Archivodetexto:secuenciadecaracteres
Archivobinario:contieneunasecuenciadecdigosbinarios
LosarchivossemanejanenlosprogramaspormediodeflujosArchivosdetexto:flujosdetextoSimilaralaE/Sporconsola(Msadelanteveremoselusodearchivosbinarios)
Pgina 250Fundamentosdelaprogramacin:TiposeinstruccionesII
A0 25 2F 04 D6 FF 00 27 6C CA 49 07 5F A4
T o t a l : 1 2 3 . 4 A
(Cdigosrepresentadosennotacinhexadecimal)(Cdigosrepresentadosennotacinhexadecimal)
-
LuisHe
rnnde
zYez
TextosdispuestosensucesivaslneasCarcterdefindelneaentrelneaylnea(Intro)PosiblementevariosdatosencadalneaEjemplo:Comprasdelosclientes
Encadalnea,NIFdelcliente,unidadescompradas,preciounitarioydescripcindeproducto,separadosporespacio12345678F2123.95ReproductordeDVD00112233A1218.4Discoporttil32143567J332MemoriaUSB16Gb76329845H1134.5ModemADSL...
Normalmenteterminanconundatoespecial(centinela)Porejemplo,unNIFqueseaXPgina 251Fundamentosdelaprogramacin:TiposeinstruccionesII
LuisHe
rnnde
zYez
Lecturadelarchivo:flujodeentrada Escrituraenelarchivo:flujodesalidaNopodemosleeryescribirenunmismoflujoUnflujodetextosepuedeutilizarparalecturaoparaescritura: Flujos(archivos)deentrada:variablesdetipoifstream Flujos(archivos)desalida:variablesdetipoofstreamBibliotecafstream (sinespaciodenombres)
Pgina 252Fundamentosdelaprogramacin:TiposeinstruccionesII
#include
-
LuisHe
rnnde
zYez
Pgina 253Fundamentosdelaprogramacin:TiposeinstruccionesII
LuisHe
rnnde
zYez
FlujosdetextodeentradaParaleerdeunarchivodetexto:
DeclaraunavariabledetipoifstreamAsocialavariableconelarchivodetexto(aperturadelarchivo)RealizalasoperacionesdelecturaDesligalavariabledelarchivodetexto(cierreelarchivo)
Pgina 254Fundamentosdelaprogramacin:TiposeinstruccionesII
1
2
3
4
ifstream
-
LuisHe
rnnde
zYez
AperturadelarchivoConectalavariableconelarchivodetextodeldispositivo
flujo.open(cadena_literal);
ifstream archivo;archivo.open("abc.txt");if(archivo.is_open())...
CierredelarchivoDesconectalavariabledelarchivodetextodeldispositivo
flujo.close();archivo.close();
Pgina 255Fundamentosdelaprogramacin:TiposeinstruccionesII
Elarchivodebeexistir!is_open():true sielarchivosehapodidoabrirfalse encasocontrario
LuisHe
rnnde
zYez
Operacionesdelectura Extractor(>>) archivo>>variable;Saltaprimerolosespaciosenblanco(espacio,tab,Intro,...)
Datosnumricos:leehastaelprimercarcternovlidoCadenas(string):leehastaelsiguienteespacioenblanco archivo.get(c)
Leeelsiguientecarcterenlavariablec,seaelquesea getline(archivo,cadena)
Leeenlacadena todosloscaracteresquequedenenlalneaIncluidoslosespaciosenblancoHastaelsiguientesaltodelnea(descartndolo)
Conlosarchivosnotieneefectolafuncinsync()Pgina 256Fundamentosdelaprogramacin:TiposeinstruccionesII
-
LuisHe
rnnde
zYez
Qudeboleer? Unnmero
Usaelextractor archivo>>num; Uncarcter(seaelquesea)
Usalafuncinget() archivo.get(c); Unacadenasinespacios
Usaelextractor archivo>>cad; Unacadenaposiblementeconespacios
Usalafuncingetline() getline(archivo,cad);
Pgina 257Fundamentosdelaprogramacin:TiposeinstruccionesII
LuisHe
rnnde
zYez
Dndequedapendientelaentrada? Nmeroledoconelextractor
Enelprimercarcternovlido(inc.espaciosenblanco) Carcterledoconget()
Enelsiguientecarcter(inc.espaciosenblanco) UnacadenaledaconelextractorEnelsiguienteespacioenblanco Unacadenaledaconlafuncingetline()
Alprincipiodelasiguientelnea
Pgina 258Fundamentosdelaprogramacin:TiposeinstruccionesII
-
LuisHe
rnnde
zYez
Programa
string nif,producto;int unidades;double precio;char aux;
Pgina 259Fundamentosdelaprogramacin:TiposeinstruccionesII
7
6
5
4
3
2
1
FlujodeentradaarchivoFlujodeentradaarchivo
1 ifstream archivo;
2 archivo.open("compras.txt");//Apertura
3 archivo>>nif >>unidades>>precio;getline(archivo,producto);
4 archivo.close();//Cierre
LuisHe
rnnde
zYez
archivo>>nif;archivo>>unidades;archivo>>precio;getline(archivo,producto);
Pgina 260Fundamentosdelaprogramacin:TiposeinstruccionesII
productoproducto ReproductordeDVD precioprecio 123.95
unidadesunidades 2nifnif 12345678F
12345678F2123.95ReproductordeDVD
EspacioEspacio
ElextractorsaltalosespaciosElextractorsaltalosespacios
getline() nosaltaespaciosgetline() nosaltaespacios
-
LuisHe
rnnde
zYez
archivo>>nif;archivo>>unidades;archivo>>precio;archivo.get(aux);//Saltaelespacioenblancogetline(archivo,producto);
Pgina 261Fundamentosdelaprogramacin:TiposeinstruccionesII
productoproducto ReproductordeDVD precioprecio 123.95
unidadesunidades 2nifnif 12345678F
12345678F2123.95ReproductordeDVD
SinespacioSinespacio
Leemoselespacio(nohacemosnadaconl)Leemoselespacio(nohacemosnadaconl)
LuisHe
rnnde
zYez
Cadalnea,datosdeunacompraMostrareltotaldecadacompraunidadesx preciomsIVA(21%)Final:"X" comoNIFBucledeprocesamiento: Cadapasodelbucle(ciclo)procesaunalnea(compra) Podemosusarlasmismasvariablesencadaciclo
LeerprimerNIFMientraselNIFnoseaX:Leerunidades,precioydescripcinCalcularymostrareltotalLeerelsiguienteNIF
Pgina 262Fundamentosdelaprogramacin:TiposeinstruccionesII
-
LuisHe
rnnde
zYez
#include#includeusingnamespacestd;#include#include//Formatodesalida
int main(){const int IVA=21;string nif,producto;int unidades;double precio,neto,total,iva;char aux;ifstream archivo;int contador=0;
archivo.open("compras.txt");//Apertura...
Pgina 263Fundamentosdelaprogramacin:TiposeinstruccionesII
leer.cppleer.cpp
LuisHe
rnnde
zYez
if (archivo.is_open()){//Existeelarchivoarchivo>>nif;//PrimerNIFwhile (nif !="X"){
archivo>>unidades>>precio;archivo.get(aux);//Saltaelespaciogetline(archivo,producto);contador++;neto=unidades*precio;iva =neto*IVA/100;total=neto+iva;cout
-
LuisHe
rnnde
zYez
archivo.close();//Cierre}else {
cout
-
LuisHe
rnnde
zYez
FlujosdetextodesalidaParacrearunarchivodetextoyescribirenl:
DeclaraunavariabledetipoofstreamAsocialavariableconelarchivodetexto(creaelarchivo)Realizalasescrituraspormediodeloperador
-
LuisHe
rnnde
zYez
#include#includeusingnamespacestd;#include
int main(){string nif,producto;int unidades;double precio;char aux;ofstream archivo;
archivo.open("output.txt");//Apertura(creacin)
coutnif;...
Pgina 269Fundamentosdelaprogramacin:TiposeinstruccionesII
escribir.cppescribir.cppLuisHe
rnnde
zYez
while (nif !="X"){//QuedapendienteelIntroanterior...cin.get(aux);//LeemoselIntrocout
-
LuisHe
rnnde
zYez
//Escribimoselcentinelafinal...archivo
-
LuisHe
rnnde
zYez
Pgina 273Fundamentosdelaprogramacin:TiposeinstruccionesII
{double oper1,oper2,prod;
coutoper1;
cout
-
LuisHe
rnnde
zYez
RepetirlaejecucindeunaomsinstruccionesAcumular,procesarcolecciones,...
Pgina 275Fundamentosdelaprogramacin:TiposeinstruccionesII
Cdigo
Iterar?SS NoNo
Inicializacin
whilewhile forfor
LuisHe
rnnde
zYez
Pgina 276Fundamentosdelaprogramacin:TiposeinstruccionesII
-
LuisHe
rnnde
zYez
Lainstruccinifif (condicin){
cdigoT}[else {
cdigoF}]
condicin:expresinboolClusulaelse opcional
Pgina 277Fundamentosdelaprogramacin:TiposeinstruccionesII
BloqueT BloqueF
Condicintruetrue falsefalse
OpcionalOpcional
LuisHe
rnnde
zYez
int num;cin>>num;if (num
-
LuisHe
rnnde
zYez
int num;cin>>num;if (num
-
LuisHe
rnnde
zYez
Divisinentredosnmerosprotegidafrenteaintentodedivisinpor0#includeusingnamespacestd;
int main(){double numerador,denominador,resultado;coutnumerador;coutdenominador;if (denominador==0){
cout
-
LuisHe
rnnde
zYez
Seaplicanavaloresbool (condiciones)Elresultadoesdet