View
0
Download
0
Category
Preview:
Citation preview
Facultad de InformáticaUniversidad Complutense
Apuntes de clase de la asignatura
Fundamentos de la programación
1º curso
Grado en Ingeniería en InformáticaGrado en Ingeniería del Software
Grado en Ingeniería de Computadores
2012 2013
Luis Hernández Yáñez
(Con contribuciones de Pablo Moreno Ger y Carlos Cervigón Rückauer)
Licencia Creative Commons:Reconocimiento, No comercial y Compartir igual.
http://creativecommons.org/licenses/by nc sa/3.0/
Esta publicación contiene los apuntes de clase de la asignaturaFundamentos de la programación, asignatura de 1º curso de los grados
que se imparten en la Facultad de Informática de la UCM.
Durante los dos primeros cursos en los que se ha impartido la asignatura,este material ha sido sometido a continuas revisiones y contribucionespor parte de los profesores que han impartido los distintos grupos
de la asignatura. Aunque el trabajo ha quedado bastante consolidado,estoy seguro de que todavía contiene muchas erratas. Si encuentras alguna,
no dudes, por favor, en hacérmelo saber y conseguir asíque la siguiente versión esté mejor depurada.
Quiero agradecer a todos los profesores que han impartido la asignaturasu contribución en el desarrollo del material, destacando especialmente
la labor de Pablo Moreno Ger y Carlos Cervigón Rückauer.
Luis Hernández YáñezProfesor de la Facultad de Informática de la UCM
Fundamentos de la programaciónFundamentos de la programación
1111
Informática, computadoras y programaciónInformática, computadoras y programación 22Lenguaje máquina y lenguaje ensambladorLenguaje máquina y lenguaje ensamblador 1212Lenguajes de programación de alto nivelLenguajes de programación de alto nivel 1515El Sistema OperativoEl Sistema Operativo 1818Un poco de historiaUn poco de historia 1919Programa informáticoPrograma informático 2525El lenguaje de programación C++El lenguaje de programación C++ 2626La Ingeniería del SoftwareLa Ingeniería del Software 2828Los lenguajes de programaciónLos lenguajes de programación 3030EjerciciosEjercicios 3535Un primer programa en C++Un primer programa en C++ 3737
zz
Herramientas de desarrolloHerramientas de desarrollo 4040Compilación, enlace y ejecuciónCompilación, enlace y ejecución 4141Más herramientas de desarrolloMás herramientas de desarrollo 4242
ernánd
ezYáñe
zernánd
ezYáñe
z
Un primer programa en C++: ejecuciónUn primer programa en C++: ejecución 4444C++: Un mejor CC++: Un mejor C 4545Referencias bibliográficasReferencias bibliográficas 4646
LuisH
LuisH
PáginaPágina 11Fundamentos de la programación: Computadoras y programaciónFundamentos de la programación: Computadoras y programación
¿Es la Informática una ciencia? ¿Una disciplina de ingeniería?¿Es la Informática una ciencia? ¿Una disciplina de ingeniería?¿O simplemente una tecnología, una invención, un proveedor¿O simplemente una tecnología, una invención, un proveedor¿O simplemente una tecnología, una invención, un proveedor¿O simplemente una tecnología, una invención, un proveedorde dispositivos informáticos? ¿Cuál es el fundamento intelectualde dispositivos informáticos? ¿Cuál es el fundamento intelectualde la disciplina? ¿Es algo pasajero o se diluirá en una generación?de la disciplina? ¿Es algo pasajero o se diluirá en una generación?
Task Force on the Core of Computer ScienceTask Force on the Core of Computer Science
InformáticaInformáticaff
zz
Diccionario de la R.A.E.Diccionario de la R.A.E.
ernánd
ezYáñe
zernánd
ezYáñe
zLuisH
LuisH
PáginaPágina 22Fundamentos de la programación: Computadoras y programaciónFundamentos de la programación: Computadoras y programación
¿Ordenador? ¿Computador? ¿Computadora?¿Ordenador? ¿Computador? ¿Computadora?
ComputadoraComputadora
¡Miles de millones de cálculos por segundo!¡Miles de millones de cálculos por segundo!
zz
¡Miles de millones de cálculos por segundo!¡Miles de millones de cálculos por segundo!
ernánd
ezYáñe
zernánd
ezYáñe
zLuisH
LuisH
PáginaPágina 33Fundamentos de la programación: Computadoras y programaciónFundamentos de la programación: Computadoras y programación
Las computadoras hoy están en todas partesLas computadoras hoy están en todas partes
¡Con múltiples formas distintas de un PC!¡Con múltiples formas distintas de un PC!
zzernánd
ezYáñe
zernánd
ezYáñe
zLuisH
LuisH
PáginaPágina 44Fundamentos de la programación: Computadoras y programaciónFundamentos de la programación: Computadoras y programación
Programación de computadorasProgramación de computadoras
ProgramaPrograma
¡resolver un problema!¡resolver un problema!
HardwareHardware
zz
HardwareHardware
SoftwareSoftware
ernánd
ezYáñe
zernánd
ezYáñe
z ff
LuisH
LuisH
PáginaPágina 55Fundamentos de la programación: Computadoras y programaciónFundamentos de la programación: Computadoras y programación
Parque JurásicoParque Jurásico
zzernánd
ezYáñe
zernánd
ezYáñe
zLuisH
LuisH
PáginaPágina 66Fundamentos de la programación: Computadoras y programaciónFundamentos de la programación: Computadoras y programación
Esquema generalEsquema general
MemoriaMemoriatemporaltemporal
Unidad Central de ProcesoUnidad Central de ProcesoCentral Processor UnitCentral Processor Unit
DispositivosDispositivosde entradade entrada
DispositivosDispositivosde salidade salida
DispositivosDispositivosde salidade salidaC.P.U.C.P.U.
zz
TecladoTecladoRatónRatónEscánerEscánerá lá l
MonitorMonitorImpresoraImpresoraAltavozAltavoz
MonitorMonitorImpresoraImpresoraAltavozAltavoz
MonitorMonitorImpresoraImpresoraAltavozAltavoz
ernánd
ezYáñe
zernánd
ezYáñe
z
AlmacenamientoAlmacenamientopermanentepermanente
AlmacenamientoAlmacenamientopermanentepermanente
TáctilTáctil�…�…
�…�…�…�…�…�…
LuisH
LuisH
PáginaPágina 77Fundamentos de la programación: Computadoras y programaciónFundamentos de la programación: Computadoras y programación
La arquitectura de VonLa arquitectura de Von NeumannNeumann
Dispositivos de E/SDispositivos de E/S
Una ALU de 2 bits (Wikipedia)Una ALU de 2 bits (Wikipedia)
C.P.U. (Procesador)C.P.U. (Procesador)
A.L.U.A.L.U.
( p )( p )
zz
MemoriaMemoria
A.L.U.A.L.U.Unidad AritméticoUnidad Aritmético LógicaLógica
ernánd
ezYáñe
zernánd
ezYáñe
z
Unidad de ControlUnidad de Control
LuisH
LuisH
PáginaPágina 88Fundamentos de la programación: Computadoras y programaciónFundamentos de la programación: Computadoras y programación
Unidad Central de Proceso (CPU)Unidad Central de Proceso (CPU)Registros de 8 / 16 / 32 / 64 bitsRegistros de 8 / 16 / 32 / 64 bits
CPU (Procesador)CPU (Procesador)
ALU (Unidad AritméticoALU (Unidad Aritmético Lógica)Lógica) Unidad de ControlUnidad de Control
gg
ALU (Unidad AritméticoALU (Unidad Aritmético Lógica)Lógica) Unidad de ControlUnidad de Control
Contador de programaContador de programaRegistro ARegistro A
R i BR i B
Registro 1Registro 1 Registro 2Registro 2
InstrucciónInstrucción
Registro BRegistro B
Registro CRegistro C
Registro DRegistro D
zz
gg
Registro ERegistro E Registro RRegistro R
ernánd
ezYáñe
zernánd
ezYáñe
z
Bus de datosBus de datos
LuisH
LuisH
PáginaPágina 99Fundamentos de la programación: Computadoras y programaciónFundamentos de la programación: Computadoras y programación
Bus de datosBus de datos
La memoriaLa memoria
MemoriaMemoria01
02
Cada celda tieneCada celda tieneuna dirección asociada.una dirección asociada.Celdas de 8 / 16 / 32 / 64 bitsCeldas de 8 / 16 / 32 / 64 bits
BusBus
02
03
04
05
Información volátil.Información volátil.
BusBusdede
datosdatos06
07
08
1 Bit = 0 / 11 Bit = 0 / 11 Byte = 8 bits1 Byte = 8 bits = 1 carácter / nº (0= 1 carácter / nº (0 255)255)1 Kilobyte (KB) = 1024 Bytes1 Kilobyte (KB) = 1024 Bytes
zz
. . . 1 Megabyte (MB) = 1024 KB1 Megabyte (MB) = 1024 KB1 Gigabyte (GB) = 1024 MB1 Gigabyte (GB) = 1024 MB1 Terabyte (TB) = 1024 GB1 Terabyte (TB) = 1024 GB
ernánd
ezYáñe
zernánd
ezYáñe
z
DirecciónDirección 1 Petabyte (PB) = 1024 TB1 Petabyte (PB) = 1024 TB
221010 = 1024= 1024
LuisH
LuisH
PáginaPágina 1010Fundamentos de la programación: Computadoras y programaciónFundamentos de la programación: Computadoras y programación
Los procesadores trabajan con ceros y unosLos procesadores trabajan con ceros y unosByteByteByteByte
InstrucciónInstrucción SignificadoSignificadoA0 2FA0 2F Acceder a la posición de memoria 2FAcceder a la posición de memoria 2F
zz
A0 2FA0 2F Acceder a la posición de memoria 2FAcceder a la posición de memoria 2F3E 013E 01 Copiar el dato en el registro 1 de la ALUCopiar el dato en el registro 1 de la ALUA0 30A0 30 Acceder a la posición de memoria 30Acceder a la posición de memoria 303E 023E 02 Copiar el dato en el registro 2 de la ALUCopiar el dato en el registro 2 de la ALU
ernánd
ezYáñe
zernánd
ezYáñe
z 3E 023E 02 Copiar el dato en el registro 2 de la ALUCopiar el dato en el registro 2 de la ALU1D1D SumarSumarB3 31B3 31 Guardar el resultado en memoria (31)Guardar el resultado en memoria (31)
LuisH
LuisH
PáginaPágina 1111Fundamentos de la programación: Computadoras y programaciónFundamentos de la programación: Computadoras y programación
CPU (Procesador)CPU (Procesador) MemoriaMemoria
ALUALU UCUC
C.P.C.P.
0101 A0A0
0202 2F2F
0303 3E3E
2D2D
2E2E
2F2F 03030101
Inst.Inst.0404 0101
0505 A0A0
0606 3030
3030 0505
3131
3232
0707 3E3E
0808 0202
0909 1D1D
3333
3434
. . .. . .
ProgramaPrograma
Dir.Dir.
zz
0A0A B3B3
0B0B 3131
. . .. . .0101
ProgramaProgramaen memoriaen memoria
ernánd
ezYáñe
zernánd
ezYáñe
z
Bus de datosBus de datos
0101
LuisH
LuisH
PáginaPágina 1212Fundamentos de la programación: Computadoras y programaciónFundamentos de la programación: Computadoras y programación
Bus de datosBus de datos
zzernánd
ezYáñe
zernánd
ezYáñe
zLuisH
LuisH
PáginaPágina 1313Fundamentos de la programación: Computadoras y programaciónFundamentos de la programación: Computadoras y programación
A0A0 READ 3EREAD 3E REG 1DREG 1D ADD �…ADD �…
READ 2FREAD 2FREG 01REG 01
Código fuenteCódigo fuente(lenguaje ensamblador)(lenguaje ensamblador)
READ 30READ 30REG 02REG 02ADDADD Programa ensambladorPrograma ensamblador
zz
ADDADDWRITE 31WRITE 31
CódigoCódigo objetoobjeto
gg
ernánd
ezYáñe
zernánd
ezYáñe
z CódigoCódigo objetoobjeto(lenguaje máquina)(lenguaje máquina)
LuisH
LuisH
PáginaPágina 1414Fundamentos de la programación: Computadoras y programaciónFundamentos de la programación: Computadoras y programación
resultado = dato1 + dato2;resultado = dato1 + dato2;resultado = dato1 + dato2;resultado = dato1 + dato2;
zzernánd
ezYáñe
zernánd
ezYáñe
zLuisH
LuisH
PáginaPágina 1515Fundamentos de la programación: Computadoras y programaciónFundamentos de la programación: Computadoras y programación
TraducciónTraducciónCódigo fuenteCódigo fuente
#include <iostream>#include <iostream>using namespace std;using namespace std;
int main()int main()
C il dC il d
int main()int main(){{
cout << "Hola Mundo!" << endl;cout << "Hola Mundo!" << endl;return 0;return 0;
}}
CompiladorCompilador
CódiCódi
Código objetoCódigo objeto 0100010100111010011100�…0100010100111010011100�…
zz
EnlazadorEnlazadorCódigoCódigoobjeto deobjeto debibliotecabiblioteca
ernánd
ezYáñe
zernánd
ezYáñe
z
ProgramaProgramaejecutableejecutable
Para una arquitectura concretaPara una arquitectura concretay un Sistema Operativo concretoy un Sistema Operativo concreto
LuisH
LuisH
PáginaPágina 1616Fundamentos de la programación: Computadoras y programaciónFundamentos de la programación: Computadoras y programación
Genealogía de lenguajesGenealogía de lenguajes Versiones / EstándaresVersiones / EstándaresPrologPrologPrologPrologPrologPrologPrologProlog
C#C#C#C#C#C#
JavaJavaJavaJavaJavaJavaC++C++C++C++C++C++PL/IPL/IPL/IPL/IPL/IPL/ICOBOLCOBOLCOBOLCOBOL
FORTRANFORTRANFORTRANFORTRAN
PythonPythonPythonPythonPythonPythonModulaModulaModulaModulaModulaModula
C#C#C#C#C#C#CCCCCC
PascalPascalPascalPascalPascalPascal
CPLCPLCPLCPLCPLCPL
ALGOLALGOLALGOLALGOLALGOLALGOL
FORTRANFORTRANFORTRANFORTRAN
BASICBASICBASICBASICBASICBASIC
EiffelEiffelEiffelEiffelEiffelEiffel
ModulaModulaModulaModulaModulaModula
AdaAdaAdaAdaAdaAda
PascalPascalPascalPascalPascalPascalALGOLALGOLALGOLALGOLALGOLALGOL
zz
RubyRubyRubyRubyRubyRubyFuente:Fuente: http://www.levenez.com/lang/http://www.levenez.com/lang/Fuente:Fuente: http://www.levenez.com/lang/http://www.levenez.com/lang/
SmalltalkSmalltalkSmalltalkSmalltalkSmalltalkSmalltalkSimulaSimulaSimulaSimulaSimulaSimula
ernánd
ezYáñe
zernánd
ezYáñe
z
LogoLogoLogoLogoLogoLogo
HaskellHaskellHaskellHaskellSchemeSchemeSchemeSchemeSchemeSchemeLispLispLispLisp
LuisH
LuisH
PáginaPágina 1717Fundamentos de la programación: Computadoras y programaciónFundamentos de la programación: Computadoras y programación
Funcionalidad básica de la computadoraFuncionalidad básica de la computadora
�—�—
�—�—
�—�—
�—�—
zz
�—�—
ernánd
ezYáñe
zernánd
ezYáñe
z
�—�—
LuisH
LuisH
PáginaPágina 1818Fundamentos de la programación: Computadoras y programaciónFundamentos de la programación: Computadoras y programación
prehistoriaprehistoria
LaLa PascalinaPascalina (Wikipedia)(Wikipedia)
Lady AdaLady Ada LovelaceLovelacees consideradaes consideradala primerala primera
dd
zz
programadora.programadora.
Álgebra deÁlgebra de BooleBoole
ernánd
ezYáñe
zernánd
ezYáñe
z Álgebra deÁlgebra de BooleBoole
LuisH
LuisH
PáginaPágina 1919Fundamentos de la programación: Computadoras y programaciónFundamentos de la programación: Computadoras y programación
ENIAC (Wikipedia)ENIAC (Wikipedia)
heedmane files wordpress comheedmane files wordpress comheedmane.files.wordpress.comheedmane.files.wordpress.com
zz
IBM 360 (Wikipedia)IBM 360 (Wikipedia)
ernánd
ezYáñe
zernánd
ezYáñe
zLuisH
LuisH
PáginaPágina 2020Fundamentos de la programación: Computadoras y programaciónFundamentos de la programación: Computadoras y programación
disquetedisquetedisquetedisquete
CreeperCreeper Intel Corp. (Wikipedia)Intel Corp. (Wikipedia)pp
AppelAppel II (Wikipedia)II (Wikipedia)
zz
AppelAppel II (Wikipedia)II (Wikipedia)
ernánd
ezYáñe
zernánd
ezYáñe
zLuisH
LuisH
PáginaPágina 2121Fundamentos de la programación: Computadoras y programaciónFundamentos de la programación: Computadoras y programación
PacmanPacmanPacmanPacman
IBM PC (Wikipedia)IBM PC (Wikipedia)
zz
WorldWorld WideWide WebWeb LinuxLinux
ernánd
ezYáñe
zernánd
ezYáñe
zLuisH
LuisH
PáginaPágina 2222Fundamentos de la programación: Computadoras y programaciónFundamentos de la programación: Computadoras y programación
zzernánd
ezYáñe
zernánd
ezYáñe
zLuisH
LuisH
PáginaPágina 2323Fundamentos de la programación: Computadoras y programaciónFundamentos de la programación: Computadoras y programación
zzernánd
ezYáñe
zernánd
ezYáñe
zLuisH
LuisH
PáginaPágina 2424Fundamentos de la programación: Computadoras y programaciónFundamentos de la programación: Computadoras y programación
¿Qué es programar?¿Qué es programar?D i l t tD i l t t á idá id t tt t l ti hl ti hDecirle a un tontoDecirle a un tontomuymuy rápidorápido exactamenteexactamente lo que tiene que hacer.lo que tiene que hacer.
¡No hay que olvidarse de comprobar que funciona!¡No hay que olvidarse de comprobar que funciona!
zz
ProgramaProgramaEntradaEntrada SalidaSalida
ernánd
ezYáñe
zernánd
ezYáñe
zLuisH
LuisH
PáginaPágina 2525Fundamentos de la programación: Computadoras y programaciónFundamentos de la programación: Computadoras y programación
El lenguaje C++El lenguaje C++
#include <iostream>#include <iostream>using namespaceusing namespace std;std;
Hola Mundo!
g pg p ;;
intint main()main(){{
cout <<cout << "Hola Mundo!""Hola Mundo!" << endl;<< endl; // Muestra Hola Mundo!// Muestra Hola Mundo!
zz
returnreturn 00;;}}
ernánd
ezYáñe
zernánd
ezYáñe
z }}
LuisH
LuisH
PáginaPágina 2626Fundamentos de la programación: Computadoras y programaciónFundamentos de la programación: Computadoras y programación
zzernánd
ezYáñe
zernánd
ezYáñe
zLuisH
LuisH
PáginaPágina 2727Fundamentos de la programación: Computadoras y programaciónFundamentos de la programación: Computadoras y programación
La programación es sólo una etapa del proceso de desarrollo.La programación es sólo una etapa del proceso de desarrollo.
PlanificaciónPlanificación
AnálisisAnálisisAnálisisAnálisis
a cac óa cac ó
DiseñoDiseñoDiseñoDiseño
zz P b d ióP b d ióP b d ióP b d ió
ProgramaciónProgramaciónProgramaciónProgramación
ernánd
ezYáñe
zernánd
ezYáñe
z
MantenimientoMantenimientoMantenimientoMantenimiento
Prueba y depuraciónPrueba y depuraciónPrueba y depuraciónPrueba y depuración
LuisH
LuisH
PáginaPágina 2828Fundamentos de la programación: Computadoras y programaciónFundamentos de la programación: Computadoras y programación
a te e toa te e toa te e toa te e to
CasaCasa SoftwareSoftware
AnálisisAnálisisQuiero Quiero 3 habitaciones3 habitaciones,,2 2 baños, baños, garaje, ...garaje, ...
¿Qué tiene que hacer ¿Qué tiene que hacer exactamente exactamente el el software?software?
DiseñoDiseñoPlanos, diseño circuito Planos, diseño circuito eléctrico y de eléctrico y de agua, ...agua, ...
¿Cómo vamos ¿Cómo vamos aaorganizar el organizar el softwaresoftware??¿¿Qué hará cada parte?Qué hará cada parte?
ProgramaciónProgramaciónSe construye la Se construye la casa.casa. Se construye el Se construye el software.software.
P bP bSe comprueba la solidez de la Se comprueba la solidez de la Ponemos a prueba nuestro Ponemos a prueba nuestro
zz
PruebaPruebaestructura, el funcionamiento de estructura, el funcionamiento de las instalaciones, el las instalaciones, el acabado, ...acabado, ...
software, incluso en software, incluso en situaciones situaciones límite.límite.
MantenimientoMantenimientoAlgunas Algunas reformas: reformas: se cierra se cierra
la la terraza, se instala aire terraza, se instala aire Pequeñas modificaciones o Pequeñas modificaciones o
correcciones, actualizaciones, correcciones, actualizaciones,
ernánd
ezYáñe
zernánd
ezYáñe
z MantenimientoMantenimiento,,acondicionado, ...acondicionado, ...
, ,, ,etc...etc...
LuisH
LuisH
PáginaPágina 2929Fundamentos de la programación: Computadoras y programaciónFundamentos de la programación: Computadoras y programación
Elementos de un lenguajeElementos de un lenguaje
#include <iostream>#include <iostream>using namespaceusing namespace std;std;#include <iostream>#include <iostream>using namespaceusing namespace std;std;
DirectivaDirectivaDirectivaDirectiva
bbbb
zz
intint main()main(){{
cout <<cout << "¡Hola Mundo!""¡Hola Mundo!" << endl;<< endl; // Muestra Hola Mundo!// Muestra Hola Mundo!
intint main()main(){{
cout <<cout << "¡Hola Mundo!""¡Hola Mundo!" << endl;<< endl; // Muestra Hola Mundo!// Muestra Hola Mundo!
SubprogramaSubprogramaSubprogramaSubprograma
ComentarioComentarioComentarioComentarioInstrucciónInstrucciónInstrucciónInstrucción DatoDatoDatoDato
ernánd
ezYáñe
zernánd
ezYáñe
z
returnreturn 00;;}}
returnreturn 00;;}}InstrucciónInstrucciónInstrucciónInstrucción DatoDatoDatoDato
LuisH
LuisH
Fundamentos de la programación: Computadoras y programaciónFundamentos de la programación: Computadoras y programación PáginaPágina 3030
Sintaxis y semánticaSintaxis y semántica
�—�—
�—�—
zzernánd
ezYáñe
zernánd
ezYáñe
zLuisH
LuisH
Fundamentos de la programación: Computadoras y programaciónFundamentos de la programación: Computadoras y programación PáginaPágina 3131
Especificación de la sintaxisEspecificación de la sintaxisBackusBackus NaurNaur FormFormBackusBackus NaurNaur FormForm
<numero entero> ::= <signo opcional><secuencia de dígitos><numero entero> ::= <signo opcional><secuencia de dígitos>
BNF<numero entero> ::= <signo opcional><secuencia de dígitos><numero entero> ::= <signo opcional><secuencia de dígitos><signo opcional> ::= +|<signo opcional> ::= +| |<nada>|<nada><secuencia de dígitos> ::= <dígito>|<dígito><secuencia de dígitos><secuencia de dígitos> ::= <dígito>|<dígito><secuencia de dígitos><dígito> ::= 0|1|2|3|4|5|6|7|8|9<dígito> ::= 0|1|2|3|4|5|6|7|8|9
| significa ó +23+23
zz
<nada> ::=<nada> ::= | significa ó +23+23159159
1374137411 3434++++
ernánd
ezYáñe
zernánd
ezYáñe
z
3.43.4002002
++0 .. 90 .. 9
++0 .. 90 .. 9
LuisH
LuisH
Fundamentos de la programación: Computadoras y programaciónFundamentos de la programación: Computadoras y programación PáginaPágina 3232
BackusBackus NaurNaur FormForm<numero entero> ::= <signo opcional><secuencia de dígitos><numero entero> ::= <signo opcional><secuencia de dígitos>g p gg p g<signo opcional> ::= +|<signo opcional> ::= +| |<nada>|<nada><secuencia de dígitos> ::= <dígito>|<dígito><secuencia de dígitos><secuencia de dígitos> ::= <dígito>|<dígito><secuencia de dígitos><dígito> ::= 0|1|2|3|4|5|6|7|8|9<dígito> ::= 0|1|2|3|4|5|6|7|8|9<nada> ::=<nada> ::=
+23+23<numero entero> ::= <signo opcional><secuencia de dígitos><numero entero> ::= <signo opcional><secuencia de dígitos>::=::= ++<secuencia de dígitos> ::=<secuencia de dígitos> ::= ++<dígito><secuencia de dígitos><dígito><secuencia de dígitos>:::: ++<secuencia de dígitos> ::<secuencia de dígitos> :: ++<dígito><secuencia de dígitos><dígito><secuencia de dígitos>::=::= +2+2<secuencia de dígitos> ::=<secuencia de dígitos> ::= +2+2<dígito> ::=<dígito> ::= +23+2313741374<numero entero> ::= <signo opcional><secuencia de dígitos><numero entero> ::= <signo opcional><secuencia de dígitos>
i d dí i dí i i d dí ii d dí i dí i i d dí i
zz
::= <secuencia de dígitos> ::= <dígito><secuencia de dígitos>::= <secuencia de dígitos> ::= <dígito><secuencia de dígitos>::=::= 11<secuencia de dígitos> ::=<secuencia de dígitos> ::= 11<dígito><secuencia de dígitos><dígito><secuencia de dígitos>::=::= 1313<secuencia de dígitos> ::=<secuencia de dígitos> ::= 1313<dígito><secuencia de dígitos><dígito><secuencia de dígitos>::=::= 137137<secuencia de dígitos> ::=<secuencia de dígitos> ::= 137137<dígito> ::=<dígito> ::= 13741374
ernánd
ezYáñe
zernánd
ezYáñe
z :::: 137137 secuencia de dígitos ::secuencia de dígitos :: 137137 dígito ::dígito :: 1374137411 3434<numero entero> ::= <signo opcional><secuencia de dígitos><numero entero> ::= <signo opcional><secuencia de dígitos>::=::= <secuencia de dígitos> ::= <dígito><secuencia de dígitos><secuencia de dígitos> ::= <dígito><secuencia de dígitos>
11 i d dí ii d dí i ERRORERROR (( dí i )dí i )
LuisH
LuisH
Fundamentos de la programación: Computadoras y programaciónFundamentos de la programación: Computadoras y programación PáginaPágina 3333
::=::= 11<secuencia de dígitos> ::=<secuencia de dígitos> ::= ERRORERROR (( nono es <dígito>)es <dígito>)
Diagramas de sintaxisDiagramas de sintaxis
++++22223333+23+23+23+23 ++
0 .. 90 .. 90 .. 90 .. 9 22223333
11113333777744441374137413741374 ++
0 .. 90 .. 90 .. 90 .. 9
zz 1111????11 343411 3434 ++
ernánd
ezYáñe
zernánd
ezYáñe
z 1111????0 .. 90 .. 90 .. 90 .. 9
LuisH
LuisH
Fundamentos de la programación: Computadoras y programaciónFundamentos de la programación: Computadoras y programación PáginaPágina 3434
Notación BNFNotación BNF
<identificador> ::= <c><m><resto><identificador> ::= <c><m><resto>t | tt | t<resto> ::= <c> | <c><resto><resto> ::= <c> | <c><resto>
<c> ::= <n> | <m><c> ::= <n> | <m><n> ::= 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9<n> ::= 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9<m> ::= A | B | C<m> ::= A | B | C
zz 1AB1AB ABAcABAc 42784278 1B1B
ernánd
ezYáñe
zernánd
ezYáñe
zLuisH
LuisH
PáginaPágina 3535Fundamentos de la programación:Fundamentos de la programación: Computadoras y programación
Diagramas sintácticosDiagramas sintácticos
ProgramaProgramaProgramaPrograma BloqueBloque ..CabeceraCabeceraProgramaPrograma BloqueBloque ..CabeceraCabecera
CabeceraCabeceraCabeceraCabecera IdentificadorIdentificadorPROGRAMPROGRAMCabeceraCabecera IdentificadorIdentificadorPROGRAMPROGRAM
((
,,
IdentificadorIdentificador )) ;;((
,,
IdentificadorIdentificador )) ;;
zz
Expresión simpleExpresión simple TérminoTérmino++
Expresión simpleExpresión simpleExpresión simpleExpresión simple TérminoTérmino++
ernánd
ezYáñe
zernánd
ezYáñe
z
++TérminoTérmino
oror++TérminoTérmino
oror
LuisH
LuisH
PáginaPágina 3636Fundamentos de la programación:Fundamentos de la programación: Computadoras y programación
é oé oé oé o
Hola Mundo!Hola Mundo!
#include <iostream>#include <iostream>ii ddusing namespaceusing namespace std;std;
intint main()main() // main() es donde empieza la ejecución// main() es donde empieza la ejecuciónintint main()main() // main() es donde empieza la ejecución// main() es donde empieza la ejecución
{{cout <<cout << "Hola Mundo!""Hola Mundo!" << endl;<< endl; // Mostrar Hola Mundo!// Mostrar Hola Mundo!
zz
;; ////returnreturn 00;;
}}
ernánd
ezYáñe
zernánd
ezYáñe
zLuisH
LuisH
PáginaPágina 3737Fundamentos de la programación: Computadoras y programaciónFundamentos de la programación: Computadoras y programación
Análisis del programaAnálisis del programaBibliotecaBiblioteca
#include <iostream>#include <iostream>using namespaceusing namespace std;std;
DirectivaDirectiva
InstrucciónInstrucción
BibliotecaBiblioteca
Espacio de nombresEspacio de nombres
g pg p ;;
Palabras reservadasPalabras reservadasTipoTipo
intint main()main(){{
DeclaraciónDeclaración Cabecera de la funciónCabecera de la función
igo
igo Cadena de caracteresCadena de caracteres ConstanteConstanteVariableVariable
zz
cout <<cout << "Hola Mundo!""Hola Mundo!" << endl;<< endl;
returnreturn 00;;
InstrucciónInstrucción
InstrucciónInstrucciónDatos literalesDatos literales
quede
cód
quede
cód
OperadorOperadorOperadorOperador
ernánd
ezYáñe
zernánd
ezYáñe
z returnreturn 00;;}}
L i i iL i i i
InstrucciónInstrucción
Cuerpo de la funciónCuerpo de la función
Bloq
Bloq NúmeroNúmero
LuisH
LuisH
PáginaPágina 3838
Las instrucciones terminan enLas instrucciones terminan en ;;
Fundamentos de la programación: Computadoras y programaciónFundamentos de la programación: Computadoras y programación
Hola Mundo!Hola Mundo!
cout <<cout << "Hola Mundo!""Hola Mundo!" << endl<< endlcout <<cout << Hola Mundo!Hola Mundo! << endl<< endl
zzernánd
ezYáñe
zernánd
ezYáñe
z
¡El estilo importa!¡El estilo importa!
LuisH
LuisH
PáginaPágina 3939Fundamentos de la programación: Computadoras y programaciónFundamentos de la programación: Computadoras y programación
EditorEditor
zz
Herramientas de desarrolloHerramientas de desarrolloHerramientas de desarrolloHerramientas de desarrollo
ernánd
ezYáñe
zernánd
ezYáñe
zLuisH
LuisH
PáginaPágina 4040Fundamentos de la programación: Computadoras y programaciónFundamentos de la programación: Computadoras y programación
hola cpphola cpphola cpphola cpp hola objhola objhola objhola objhola objhola objhola.cpphola.cpp(código fuente)(código fuente)hola.cpphola.cpp
(código fuente)(código fuente)hola.objhola.obj
(código objeto)(código objeto)hola.objhola.obj
(código objeto)(código objeto)hola.objhola.obj
(código objeto)(código objeto)
Código objeto deCódigo objeto dela bibliotecala biblioteca iostreamiostream
Código objeto deCódigo objeto dela bibliotecala biblioteca iostreamiostream
Código objeto deCódigo objeto dela bibliotecala biblioteca iostreamiostreamla bibliotecala biblioteca iostreamiostreamla bibliotecala biblioteca iostreamiostreamla bibliotecala biblioteca iostreamiostream
zz
hola.exehola.exe(ejecutable)(ejecutable)hola.exehola.exe(ejecutable)(ejecutable)hola.exehola.exe(ejecutable)(ejecutable)
Hola Mundo!Hola Mundo!
ernánd
ezYáñe
zernánd
ezYáñe
zLuisH
LuisH
PáginaPágina 4141Fundamentos de la programación: Computadoras y programaciónFundamentos de la programación: Computadoras y programación
CompiladorCompilador
zz
Herramientas de desarrolloHerramientas de desarrolloHerramientas de desarrolloHerramientas de desarrollo
ernánd
ezYáñe
zernánd
ezYáñe
zLuisH
LuisH
PáginaPágina 4242Fundamentos de la programación: Computadoras y programaciónFundamentos de la programación: Computadoras y programación
Entornos de desarrolloEntornos de desarrollo
�—�—
�—�—
zz
Herramientas de desarrolloHerramientas de desarrolloHerramientas de desarrolloHerramientas de desarrollo
ernánd
ezYáñe
zernánd
ezYáñe
zLuisH
LuisH
PáginaPágina 4343Fundamentos de la programación: Computadoras y programaciónFundamentos de la programación: Computadoras y programación
¿Qué hace el programa?¿Qué hace el programa?i ()i ()main()main()
Pantalla (Pantalla (coutcout))InicioInicio
_Hola Mundo!Hola Mundo!_
cout <<cout << "Hola Mundo!""Hola Mundo!" << endl;<< endl;cout <<cout << "Hola Mundo!""Hola Mundo!" << endl;<< endl;
zz
Hola Mundo!Hola Mundo!
returnreturn 00;;returnreturn 00;;
ernánd
ezYáñe
zernánd
ezYáñe
z
00
FinFin
LuisH
LuisH
PáginaPágina 4444Fundamentos de la programación: Computadoras y programaciónFundamentos de la programación: Computadoras y programación
La base de C++: El lenguaje CLa base de C++: El lenguaje C
�—�—
�—�—
zzernánd
ezYáñe
zernánd
ezYáñe
zLuisH
LuisH
PáginaPágina 4545Fundamentos de la programación: Computadoras y programaciónFundamentos de la programación: Computadoras y programación
C++:C++: AnAn IntroductionIntroduction toto ComputingComputing
ProgrammingProgramming.. PrinciplesPrinciples andand PracticePractice Using C++Using C++
zzernánd
ezYáñe
zernánd
ezYáñe
zLuisH
LuisH
Fundamentos de la programación: Computadoras y programaciónFundamentos de la programación: Computadoras y programación PáginaPágina 4646
Licencia CC (Licencia CC (CreativeCreative CommonsCommons))
Attribution
Non commercial
zz
Share alike
ernánd
ezYáñe
zernánd
ezYáñe
zLuisH
LuisH
Fundamentos de la programación: Computadoras y programaciónFundamentos de la programación: Computadoras y programación PáginaPágina 4747
Recommended