funddl ódamentos de la programación - cartagena99.com · prolog 1970 java c++ 1995 1983 pl/i 1964...
Post on 29-Oct-2018
212 Views
Preview:
TRANSCRIPT
d d l óFundamentos de la programación
1111Doble Grado en Matemáticas Doble Grado en Matemáticas e informáticae informáticaAna Gil Ana Gil LuezasLuezas(adaptadas del original de Luis Hernández Yáñez)(adaptadas del original de Luis Hernández Yáñez)(adaptadas del original de Luis Hernández Yáñez)(adaptadas del original de Luis Hernández Yáñez)Facultad de InformáticaFacultad de InformáticaUniversidad ComplutenseUniversidad Complutense
Informática, computadoras y programaciónInformática, computadoras y programación 22Un poco de historia Un poco de historia 77Computadoras lenguaje máquina y ensambladorComputadoras lenguaje máquina y ensamblador 1111Computadoras, lenguaje máquina y ensambladorComputadoras, lenguaje máquina y ensamblador 1111Lenguajes de programación de alto nivelLenguajes de programación de alto nivel 1818Elementos de los lenguajes de programaciónElementos de los lenguajes de programación 2424Sintaxis de los lenguajes de programación Sintaxis de los lenguajes de programación 2626Un primer programa en C++Un primer programa en C++ 2929H i t d d llH i t d d ll 3232Herramientas de desarrolloHerramientas de desarrollo 3232Un ejemplo Un ejemplo 3636
Fundamentos de la programación: Computadoras y programaciónFundamentos de la programación: Computadoras y programación
Informática (Ciencia de la computación)Informática (Ciencia de la computación)f ( p )f ( p )Conjunto de conocimientos científicos y técnicos Conjunto de conocimientos científicos y técnicos que hacen posible el tratamiento automático que hacen posible el tratamiento automático que ace pos b e e t ata e to auto át coque ace pos b e e t ata e to auto át code la información por medio de ordenadoresde la información por medio de ordenadoresComputadoraComputadoraMáquina electrónica, analógica o Máquina electrónica, analógica o digitaldigital,,dotada de una dotada de una memoriamemoria de gran capacidad de gran capacidad y de métodos de y de métodos de tratamientotratamiento de la información, de la información, capaz de capaz de resolver problemasresolver problemas matemáticos y lógicosmatemáticos y lógicosmediante la mediante la ejecuciónejecución de de programasprogramas informáticosinformáticos
PáginaPágina 22Fundamentos de la programación: Computadoras y programaciónFundamentos de la programación: Computadoras y programación
En todas partes y con muchas formasEn todas partes y con muchas formasp y fp y f
PáginaPágina 33Fundamentos de la programación: Computadoras y programaciónFundamentos de la programación: Computadoras y programación
HardwareHardwareComponentes que integranComponentes que integranla parte materialla parte materialla parte material la parte material de una computadorade una computadoraSoftwareSoftwareSoftwareSoftwareProgramas, instrucciones Programas, instrucciones y reglas informáticas y reglas informáticas para ejecutar tareas para ejecutar tareas p jp jen una computadoraen una computadora
PáginaPágina 44Fundamentos de la programación: Computadoras y programaciónFundamentos de la programación: Computadoras y programación
Indicar a la computadora qué es lo que tiene que hacer para Indicar a la computadora qué es lo que tiene que hacer para realizar una tarea concreta.realizar una tarea concreta.AlgoritmoAlgoritmo: Descripción precisa de una secuencia de : Descripción precisa de una secuencia de instrucciones para resolver un problema.instrucciones para resolver un problema.Un Un programaprograma es la codificación de un algoritmo en un es la codificación de un algoritmo en un p gp g gglenguaje concreto:lenguaje concreto:—— Secuencia de instruccionesSecuencia de instrucciones—— Instrucciones que entiende la computadoraInstrucciones que entiende la computadoraProcesoProceso o cómputo: la ejecución de un programa o unao cómputo: la ejecución de un programa o unaProcesoProceso o cómputo: la ejecución de un programa, o una o cómputo: la ejecución de un programa, o una secuencia de instrucciones, en un ordenador.secuencia de instrucciones, en un ordenador.
PáginaPágina 55Fundamentos de la programación: Computadoras y programaciónFundamentos de la programación: Computadoras y programación
Trabajo en equipo.Trabajo en equipo.Múltiples roles...Múltiples roles... AnalistasAnalistas DiseñadoresDiseñadoresParque JurásicoParque Jurásico DiseñadoresDiseñadores ProgramadoresProgramadores P b dP b d
Parque JurásicoParque Jurásico
ProbadoresProbadores Administradores de Administradores de sistemassistemas Etcétera...Etcétera...
PáginaPágina 66Fundamentos 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 desarrolloLa programación es sólo una etapa del proceso de desarrolloModelo de desarrollo “en cascada”:Modelo de desarrollo “en cascada”:PlanificaciónPlanificación Recursos necesarios, presupuesto, plan, …Recursos necesarios, presupuesto, plan, …
Di ñDi ñDi ñDi ñ
AnálisisAnálisisAnálisisAnálisis ¿Qué?¿Qué?Có ?Có ?
ProgramaciónProgramaciónProgramaciónProgramación
DiseñoDiseñoDiseñoDiseño ¿Cómo?¿Cómo?ImplementaciónImplementación
Prueba y depuraciónPrueba y depuraciónPrueba y depuraciónPrueba y depuración
ProgramaciónProgramaciónProgramaciónProgramación ImplementaciónImplementaciónMantenimientoMantenimientoMantenimientoMantenimiento
y py py py p
PáginaPágina 77Fundamentos de la programación: Computadoras y programaciónFundamentos de la programación: Computadoras y programación
La La prehistoriaprehistoriaEl ábacoEl ábacoSiglo XIXSiglo XIXSiglo XIXSiglo XIXMáquina analítica Máquina analítica de Charles de Charles BabbageBabbage (Wikipedia)(Wikipedia)
Lady Ada Lady Ada LovelaceLovelaceid did des consideradaes consideradala primerala primeraprogramadoraprogramadorap gp g
PáginaPágina 88Fundamentos de la programación: Computadoras y programaciónFundamentos de la programación: Computadoras y programación
Siglo XXSiglo XX19361936 Máquina de Máquina de TuringTuring19461946 ENIACENIAC: Primera computadora digital: Primera computadora digital19461946 ENIACENIAC: Primera computadora digital: Primera computadora digitalde propósito generalde propósito general19471947 El El transistortransistor19531953 IBM 650IBM 650: Primera: Primeracomputadora a gran escalacomputadora a gran escala ENIAC (Wikipedia)ENIAC (Wikipedia)p gp g19661966 ARPANETARPANET: Origen de Internet: Origen de Internet19671967 El El disquetedisqueteqq19701970 Sistema operativo Sistema operativo UNIXUNIX19721972 Primer Primer virusvirus informático (informático (CreeperCreeper))(( pp ))Lenguaje de programación Lenguaje de programación CC19741974 Protocolo Protocolo TCPTCP. Primera red local. Primera red localPáginaPágina 99Fundamentos de la programación: Computadoras y programaciónFundamentos de la programación: Computadoras y programación
19751975 Se fundaSe funda MicrosoftMicrosoft19751975 Se funda Se funda MicrosoftMicrosoft19761976 Se funda Se funda AppleApple19791979 JuegoJuego PacmanPacman19791979 Juego Juego PacmanPacman19811981 IBM PCIBM PCSistema operativoSistema operativo MSMS--DOSDOSSistema operativo Sistema operativo MSMS DOSDOS19831983 Lenguaje de programación Lenguaje de programación C++C++19841984 CDCD--ROMROM Apple II (Wikipedia)Apple II (Wikipedia)19841984 CDCD ROMROM19851985 WindowsWindows 1.01.019901990 LenguajeLenguaje HTMLHTML19901990 Lenguaje Lenguaje HTMLHTMLWorldWorld WideWide WebWeb19911991 Sistema operativo Sistema operativo LinuxLinux IBM PC (Wikipedia)IBM PC (Wikipedia)
LinuxLinuxIBM PC (Wikipedia)IBM PC (Wikipedia)
PáginaPágina 1010Fundamentos de la programación: Computadoras y programaciónFundamentos de la programación: Computadoras y programación
19921992 Windows 3.1Windows 3.119951995 Lenguaje de programaciónLenguaje de programación JavaJava19951995 Lenguaje de programación Lenguaje de programación JavaJavaDVDDVD19981998 Se fundaSe funda GoogleGoogle19981998 Se funda Se funda GoogleGoogle19991999 MSN MSN MessengerMessengerSiglo XXISiglo XXI20012001 Windows XPWindows XP20012001 Windows XPWindows XPMac OSMac OS XX20022002 MozillaMozilla FirefoxFirefox20072007 iPhoneiPhone20082008 AndroidAndroid ......PáginaPágina 1111Fundamentos de la programación: Computadoras y programaciónFundamentos de la programación: Computadoras y programación
Esquema generalEsquema generalq gq g
MemoriaMemoriatemporaltemporaltemporaltemporal
Unidad Central de ProcesoUnidad Central de Proceso
DispositivosDispositivosd dd d
DispositivosDispositivosd lidd lid
DispositivosDispositivosd lidd lid
Central Processor UnitCentral Processor Unit
C.P.U.C.P.U.de entradade entrada
TecladoTeclado
de salidade salida
MonitorMonitorMonitorMonitor
de salidade salida
MonitorMonitor
C.P.U.C.P.U.
AlmacenamientoAlmacenamientoAlmacenamientoAlmacenamiento
RatónRatónEscánerEscáner
TáctilTáctil
ImpresoraImpresoraAltavozAltavoz
……
ImpresoraImpresoraAltavozAltavoz
……
ImpresoraImpresoraAltavozAltavoz
……AlmacenamientoAlmacenamientopermanentepermanente
AlmacenamientoAlmacenamientopermanentepermanente……
PáginaPágina 1212Fundamentos de la programación: Computadoras y programaciónFundamentos de la programación: Computadoras y programación
La arquitectura de Von La arquitectura de Von NeumannNeumannqq
Dispositivos de E/SDispositivos de E/SDispositivos de E/SDispositivos de E/S
C.P.U. (Procesador)C.P.U. (Procesador)Una ALU de 2 bits (Wikipedia)Una ALU de 2 bits (Wikipedia)
A.L.U.A.L.U.Unidad AritméticoUnidad Aritmético--LógicaLógica
MemoriaMemoriaUnidad AritméticoUnidad Aritmético LógicaLógica
U id d d C lU id d d C lUnidad de ControlUnidad de Control
PáginaPágina 1313Fundamentos de la programación: Computadoras y programaciónFundamentos de la programación: Computadoras y programación
La memoriaLa memoriaMemoriaMemoria
01
Cada celda tieneCada celda tieneuna dirección asociadauna dirección asociada01
02
03
04
Celdas de 8 / 16 / 32 / 64 bitsCeldas de 8 / 16 / 32 / 64 bits
Información volátilInformación volátil
Bus Bus de de
04
05
06 1 Bit = 0 / 11 Bit = 0 / 1B t 8 bitB t 8 bit á t / º (á t / º ( ))
datosdatos 07
08
. . .
1 Byte = 8 bits 1 Byte = 8 bits = 1 carácter / nº (0= 1 carácter / nº (0--255)255)1 Kilobyte (KB) = 1024 Bytes1 Kilobyte (KB) = 1024 Bytes1 Megabyte (MB) = 1024 KB1 Megabyte (MB) = 1024 KB
DirecciónDirección
1 Gigabyte (GB) = 1024 MB1 Gigabyte (GB) = 1024 MB1 Terabyte (TB) = 1024 GB1 Terabyte (TB) = 1024 GB1 Petabyte (PB) = 1024 TB1 Petabyte (PB) = 1024 TBDirecciónDirección y ( ) 4y ( ) 4
221010 = 1024= 1024 ≈≈ 10001000
PáginaPágina 1414Fundamentos 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)d bd b
CPU (Procesador)CPU (Procesador)
Registros de 8 / 16 / 32 / 64 bitsRegistros de 8 / 16 / 32 / 64 bits
ALU (Unidad AritméticoALU (Unidad Aritmético--Lógica)Lógica) Unidad de ControlUnidad de Control
R i t 1R i t 1 R i t 2R i t 2 Contador de programaContador de programa
óó
Registro ARegistro A
Registro BRegistro B
R i t CR i t C
Registro 1Registro 1 Registro 2Registro 2
InstrucciónInstrucciónRegistro CRegistro C
Registro DRegistro D
Registro ERegistro ERegistro ERegistro E Registro RRegistro R
Bus de datosBus de datos
PáginaPágina 1515Fundamentos de la programación: Computadoras y programaciónFundamentos de la programación: Computadoras y programación
Los procesadores trabajan con ceros y unos (bits)Los procesadores trabajan con ceros y unos (bits)Unidad de memoria básica: Unidad de memoria básica: ByteByte (8 bits)(8 bits)(2 dígitos hexadecimales: 01011011 (2 dígitos hexadecimales: 01011011 0101 1011 0101 1011 5B)5B)Lenguaje máquinaLenguaje máquinaCódigos hexadecimales que representan instrucciones,Códigos hexadecimales que representan instrucciones,i t d l CPU di i d i d ti t d l CPU di i d i d tregistros de la CPU, direcciones de memoria o datosregistros de la CPU, direcciones de memoria o datosEjemplo de programa:Ejemplo de programa: Lenguaje de bajo nivelj p p gj p p g
InstrucciónInstrucción SignificadoSignificadoA0 2FA0 2F Acceder a la posición de memoria 2FAcceder a la posición de memoria 2F
Dependiente de la máquinaProgramación intrincada
3E 013E 01 Copiar el dato en el registro 1 de la ALU Copiar el dato en el registro 1 de la ALU A0 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 ALU Copiar el dato en el registro 2 de la ALU 1D1D SumarSumarB3 31B3 31 Guardar el resultado en la posición de memoria 31Guardar el resultado en la posición de memoria 31
PáginaPágina 1616Fundamentos de la programación: Computadoras y programaciónFundamentos de la programación: Computadoras y programación
CPU (Procesador)CPU (Procesador) MemoriaMemoriaCPU (Procesador)CPU (Procesador)
ALUALU UCUC
C PC P
MemoriaMemoria
0101 A0A0
0202 2F2F
2D2D
2E2E
0101
C.P.C.P.
InstInst
0303 3E3E
0404 0101
0505 A0A0
2F2F 0303
3030 0505
3131Inst.Inst.0606 3030
0707 3E3E
0808 0202
3232
3333
3434Dir.Dir. 0808 0202
0909 1D1D
0A0A B3B3
3434
. . .. . .
Programa Programa en memoriaen memoria
Dir.Dir.
0B0B 3131
. . .. . .
en memoriaen memoria
Bus de datosBus de datos
PáginaPágina 1717Fundamentos de la programación: Computadoras y programaciónFundamentos de la programación: Computadoras y programación
Nemotécnicos para los códigos hexadecimales:Nemotécnicos para los códigos hexadecimales:A0 A0 READ 3E READ 3E REG 1D REG 1D ADD …ADD …Mayor legibilidad:Mayor legibilidad:Mayor legibilidad:Mayor legibilidad:READ 2FREAD 2FREG 01REG 01
Código fuenteCódigo fuente(lenguaje ensamblador)(lenguaje ensamblador)REG 01 REG 01
READ 30READ 30REG 02 REG 02 ProgramaPrograma
( g j )( g j )
ADD ADD WRITE 31WRITE 31
Programa Programa ensambladorensamblador
Lenguaje de nivel medioLenguaje de nivel medio Código Código objetoobjeto(l j á i )(l j á i )(lenguaje máquina)(lenguaje máquina)
PáginaPágina 1818Fundamentos de la programación: Computadoras y programaciónFundamentos de la programación: Computadoras y programación
Más cercanos a los lenguajes natural y matemáticoMás cercanos a los lenguajes natural y matemáticoresultado = dato1 + dato2;resultado = dato1 + dato2;
Mayor legibilidad, mayor facilidad de codificaciónMayor legibilidad, mayor facilidad de codificaciónMayor legibilidad, mayor facilidad de codificaciónMayor legibilidad, mayor facilidad de codificación Estructuración de datos / abstracción procedimentalEstructuración de datos / abstracción procedimental
PáginaPágina 1919Fundamentos de la programación: Computadoras y programaciónFundamentos de la programación: Computadoras y programación
El sistema operativo:El sistema operativo:Software básico encargado de manejar el hardware y facilitar el Software básico encargado de manejar el hardware y facilitar el trabajo a los programas de aplicación, proporcionándoles un trabajo a los programas de aplicación, proporcionándoles un conjunto de servicios genéricos.conjunto de servicios genéricos.—— Interfaz con el usuario.Interfaz con el usuario.—— Asignación de tiempos de CPU.Asignación de tiempos de CPU.—— Control y asignación racional de los recursos de la computadora.Control y asignación racional de los recursos de la computadora.—— Ejecución de programas.Ejecución de programas.—— Administración de discos y dispositivos.Administración de discos y dispositivos.......
PáginaPágina 2020Fundamentos de la programación: Computadoras y programaciónFundamentos de la programación: Computadoras y programación
Modelo de ejecución Modelo de ejecución Código fuenteCódigo fuente
#include <iostream>#include <iostream>using namespace std;using namespace std;
basado en compilación:basado en compilación:Compilan y enlazanCompilan y enlazan
Código fuenteCódigo fuenteint main()int main(){{
cout << "Hola Mundo!" << endl;cout << "Hola Mundo!" << endl;return 0;return 0;p yp y
programas completosprogramas completos CompiladorCompilador}}
Otros modelos:Otros modelos:IntérpretesIntérpretes Código objetoCódigo objeto 0100010100111010011100…0100010100111010011100…Intérpretes, Intérpretes, Máquinas virtualesMáquinas virtualesE l dE l d
CódigoCódigobj t dbj t d
g jg j
EnlazadorEnlazador objeto deobjeto debibliotecabiblioteca
ProgramaProgramaejecutableejecutable
Para una arquitectura concretaPara una arquitectura concretay un y un Sistema Operativo Sistema Operativo concretoconcreto
PáginaPágina 2121Fundamentos 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ándaresg g jg g jPrologProlog19701970PrologProlog19701970 JavaJava19951995JavaJava19951995JavaJava19951995C++C++19831983C++C++19831983C++C++19831983PL/IPL/I19641964PL/IPL/I19641964PL/IPL/I19641964COBOLCOBOL19591959COBOLCOBOL19591959
C#C#20002000C#C#20002000C#C#20002000CC19711971CC19711971CC19711971CPLCPL19631963CPLCPL19631963CPLCPL19631963FORTRANFORTRAN19541954FORTRANFORTRAN19541954
BASICBASICBASICBASICBASICBASIC
PythonPython19911991PythonPython19911991PythonPython19911991ModulaModula19751975ModulaModula19751975ModulaModula19751975PascalPascal19701970PascalPascal19701970PascalPascal19701970ALGOLALGOL19581958ALGOLALGOL19581958ALGOLALGOL19581958BASICBASIC19641964BASICBASIC19641964BASICBASIC19641964
EiffelEiffel19861986EiffelEiffel19861986EiffelEiffel19861986ll lkll lkll lkll lkll lkll lk
SimulaSimula19641964SimulaSimula19641964SimulaSimula19641964AdaAda19791979AdaAda19791979AdaAda19791979
RubyRuby19931993RubyRuby19931993RubyRuby19931993Fuente: Fuente: http://www.levenez.com/lang/http://www.levenez.com/lang/Fuente: Fuente: http://www.levenez.com/lang/http://www.levenez.com/lang/
HaskellHaskellHaskellHaskell
SmalltalkSmalltalk19711971SmalltalkSmalltalk19711971SmalltalkSmalltalk19711971196419641964196419641964
LogoLogo19681968LogoLogo19681968LogoLogo196819681987198719871987SchemeScheme19751975SchemeScheme19751975SchemeScheme19751975LispLisp19581958LispLisp19581958
PáginaPágina 2222Fundamentos de la programación: Computadoras y programaciónFundamentos de la programación: Computadoras y programación
196819681968196819681968
BjarneBjarne StroustrupStroustrup (1983)(1983)BjarneBjarne StroustrupStroustrup (1983)(1983)
Para programar necesitamos un lenguajePara programar necesitamos un lenguaje Lenguaje muy ampliamente utilizado en las áreas de ingenieríaLenguaje muy ampliamente utilizado en las áreas de ingeniería Lenguaje muy ampliamente utilizado en las áreas de ingenieríaLenguaje muy ampliamente utilizado en las áreas de ingeniería Bien definido por un estándar (C++ 11)Bien definido por un estándar (C++ 11) Disponible para casi cualquier computadoraDisponible para casi cualquier computadora Los conceptos son trasladables a otros lenguajesLos conceptos son trasladables a otros lenguajes
PáginaPágina 2323Fundamentos 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 Cg jg j Lenguaje creado por Dennis M. Lenguaje creado por Dennis M. RitchieRitchie en 1972en 1972 Lenguaje de nivel medio:Lenguaje de nivel medio:g jg j
—— Estructuras típicas de los lenguajes de alto nivelEstructuras típicas de los lenguajes de alto nivel—— Construcciones para control a nivel de máquinaConstrucciones para control a nivel de máquinap qp q
Lenguaje sencillo (pocas palabras reservadas)Lenguaje sencillo (pocas palabras reservadas) Lenguaje estructurado (no eLenguaje estructurado (no estrictamente)strictamente)g j (g j ( ))
—— Compartimentación de códigoCompartimentación de código y datosy datos—— Componente estructural básico: la función (subprograma)Componente estructural básico: la función (subprograma)p ( p g )p ( p g )
Programación modularProgramación modular
PáginaPágina 2424Fundamentos de la programación: Computadoras y programaciónFundamentos de la programación: Computadoras y programación
Elementos de un lenguajeElementos de un lenguajeg jg j InstruccionesInstrucciones Datos (literales, variables, tipos)Datos (literales, variables, tipos)Datos (literales, variables, tipos)Datos (literales, variables, tipos) Subprogramas (funciones)Subprogramas (funciones) ComentariosComentarios ComentariosComentarios DirectivasDirectivas #include <iostream>#include <iostream>#include <iostream>#include <iostream> DirectivaDirectivaDirectivaDirectiva ...... #include <iostream>#include <iostream>
using namespace using namespace std;std;
intint main()main()
#include <iostream>#include <iostream>using namespace using namespace std;std;
intint main()main()SubprogramaSubprogramaSubprogramaSubprograma
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!ComentarioComentarioComentarioComentario
InstrucciónInstrucciónInstrucciónInstrucciónDatoDatoDatoDato
returnreturn 00;;}}
returnreturn 00;;}}
InstrucciónInstrucciónInstrucciónInstrucciónDatoDatoDatoDato
Fundamentos de la programación: Computadoras y programaciónFundamentos de la programación: Computadoras y programación PáginaPágina 2525
Sintaxis y semántica de los lenguajesSintaxis y semántica de los lenguajesy g jy g jSintaxisSintaxisReglas que determinan cómo se pueden construirReglas que determinan cómo se pueden construir—— Reglas que determinan cómo se pueden construir Reglas que determinan cómo se pueden construir y secuenciar los elementos del lenguajey secuenciar los elementos del lenguajeSemánticaSemántica—— Significado de cada elemento del lenguajeSignificado de cada elemento del lenguaje¿Para qué sirve?, ¿Qué hace?¿Para qué sirve?, ¿Qué hace?¿ a a qué s ve , ¿Qué ace¿ a a qué s ve , ¿Qué ace
Fundamentos de la programación: Computadoras y programaciónFundamentos de la programación: Computadoras y programación PáginaPágina 2626
EspecificaciónEspecificaciónp fp f Lenguajes (Lenguajes (BNFBNF)) DiagramasDiagramas DiagramasDiagramas
BNFEjemplo: Números enteros Ejemplo: Números enteros
<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><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> ::= | significa ó +23 +23
--159 159 13741374 1374 1374 11--34 34 3.4 3.4
++0 90 9
++0 90 9 002 002 0 .. 90 .. 9
--0 .. 90 .. 9
--
Fundamentos de la programación: Computadoras y programaciónFundamentos de la programación: Computadoras y programación PáginaPágina 2727
<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<nada> ::= <nada> ::=
+23+23<numero entero> ::= <numero entero> ::= <signo opcional><signo opcional><secuencia de dígitos><secuencia de dígitos>::=::= ++<secuencia de dígitos> ::=<secuencia de dígitos> ::= ++<dígito><dígito><secuencia de dígitos><secuencia de dígitos>:: :: secuencia de dígitos :: secuencia de dígitos :: dígitodígito secuencia de dígitos secuencia de dígitos ::= ::= +2+2<secuencia de dígitos> ::= <secuencia de dígitos> ::= +2+2<dígito><dígito> ::= ::= +23+2313741374
i i l i d dí ii i l i d dí i
<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><dígito><secuencia de dígitos> <secuencia de dígitos> ::=::= 11<secuencia de dígitos> ::=<secuencia de dígitos> ::= 11<dígito><dígito><secuencia de dígitos><secuencia de dígitos> :: :: 11 secuencia de dígitos :: secuencia de dígitos :: 11 dígitodígito secuencia de dígitos secuencia de dígitos ::= ::= 1313<secuencia de dígitos> ::= <secuencia de dígitos> ::= 1313<dígito><dígito><secuencia de dígitos> <secuencia de dígitos> ::= ::= 137137<secuencia de dígitos> ::= <secuencia de dígitos> ::= 137137<dígito><dígito> ::= ::= 13741374
11--3434<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><dígito><secuencia de dígitos> <secuencia de dígitos>
Fundamentos de la programación: Computadoras y programaciónFundamentos de la programación: Computadoras y programación PáginaPágina 2828
gg gg gg::= ::= 11<secuencia de dígitos> ::= <secuencia de dígitos> ::= ERRORERROR ((-- no es <dígito>)no es <dígito>)
++++22223333 +23+23+23+23 ++
0 .. 90 .. 90 .. 90 .. 9 22223333 --
111133337777 44441374137413741374 ++
--0 .. 90 .. 90 .. 90 .. 9
????
--
1111---- ????11--343411--3434 ++
--0 .. 90 .. 90 .. 90 .. 9
Fundamentos de la programación: Computadoras y programaciónFundamentos de la programación: Computadoras y programación PáginaPágina 2929
Hola Mundo!Hola Mundo!Un programa que muestra un saludo en la pantalla:Un programa que muestra un saludo en la pantalla:#include <iostream>#include <iostream>
ii dd
Hola Mundo!
using namespace using namespace std;std;
ii i ()i ()intint main()main(){{
" l d !"" l d !" dldl // l d !// l d !cout << cout << "Hola Mundo!" "Hola Mundo!" << endl; << endl; // Muestra Hola Mundo!// Muestra Hola Mundo!
returnreturn 00;;}}
PáginaPágina 3030Fundamentos de la programación: Computadoras y programaciónFundamentos de la programación: Computadoras y programación
Elementos sintácticos del programaElementos sintácticos del programap gp g
#include <iostream>#include <iostream>DirectivaDirectiva
BibliotecaBiblioteca
Espacio de nombresEspacio de nombres
using namespace using namespace std;std;
Palabras reservadasPalabras reservadasTipoTipoColoreado sintácticoColoreado sintácticoColoreado sintácticoColoreado sintáctico
intint main()main()DefiniciónDefinición
Palabras reservadasPalabras reservadasTipoTipo
Cabecera de la funciónCabecera de la función
{{cout << cout << "Hola Mundo!""Hola Mundo!" << endl;<< endl;InstrucciónInstrucción
códi
gocó
digo Cadena de caracteresCadena de caracteres ConstanteConstante
O dO dO dO d
VariableVariable
return return 00;;InstrucciónInstrucciónDatos literalesDatos literales
oque
de
coq
ue d
e c OperadorOperadorOperadorOperador
NúNú}}
Las instrucciones terminan enLas instrucciones terminan en ;;
Cuerpo de la funciónCuerpo de la función
BlBl NúmeroNúmero
PáginaPágina 3131
Las instrucciones terminan en Las instrucciones terminan en ;;
Fundamentos de la programación: Computadoras y programaciónFundamentos de la programación: Computadoras y programación
¿Qué hace el programa?¿Qué hace el programa?¿Q p g¿Q p g La ejecución del programa siempre empieza en la función La ejecución del programa siempre empieza en la función main()main() Se ejecutan las instrucciones en secuencia de principio a finSe ejecutan las instrucciones en secuencia de principio a fin Se ejecutan las instrucciones en secuencia de principio a finSe ejecutan las instrucciones en secuencia de principio a fin
I i iI i i
Hola Mundo!Hola Mundo!
Ventana Ventana ((coutcout))
_
InicioInicio
_
Muestra el texto Muestra el texto Hola Mundo!Hola Mundo!en la pantalla y cambiaen la pantalla y cambiacout << cout << "Hola Mundo!""Hola Mundo!" << endl;<< endl;cout << cout << "Hola Mundo!""Hola Mundo!" << endl;<< endl;
en la pantalla y cambia en la pantalla y cambia a la línea siguientea la línea siguienteDevuelveDevuelve 00 como códigocomo códigoreturn return 00;;return return 00;;Devuelve Devuelve 00 como códigocomo códigode terminación del programade terminación del programa
FinFin
PáginaPágina 3232Fundamentos de la programación: Computadoras y programaciónFundamentos de la programación: Computadoras y programación
EditorEditor Bloc de notas, Bloc de notas, WordpadWordpad, , WriterWriter, , GeditGedit, , KwriteKwrite, …, …(texto simple, sin formatos)(texto simple, sin formatos)( p )( p ) Editores específicos, coloreado sintáctico: Editores específicos, coloreado sintáctico: EmacsEmacs, , NotepadNotepad++ ++
PáginaPágina 3333Fundamentos de la programación: Computadoras y programaciónFundamentos de la programación: Computadoras y programación
hola.cpphola.cpp(código fuente)(código fuente)
hola.objhola.obj(código objeto)(código objeto)
CompiladorCompilador( g )( g ) ( g j )( g j )
Código objeto deCódigo objeto dela biblioteca la biblioteca iostreamiostream EnlazadorEnlazadorHola Mundo!
hola.exehola.exe(ejecutable)(ejecutable)
Hola Mundo! CargadorCargadorCargadorCargador(ejecutable)(ejecutable)
PáginaPágina 3434Fundamentos de la programación: Computadoras y programaciónFundamentos de la programación: Computadoras y programación
CompiladorCompiladorpp Importante: C++ estándar (C++11)Importante: C++ estándar (C++11)GNU G++ (GNU G++ (MinGWMinGW en Windows),en Windows),GNU G++ (GNU G++ (MinGWMinGW en Windows), en Windows), MS Visual Studio, MS Visual Studio, BorlandBorland C++, …C++, …
PáginaPágina 3535Fundamentos de la programación: Computadoras y programaciónFundamentos de la programación: Computadoras y programación
Entornos de desarrollo (IDE)Entornos de desarrollo (IDE)( )( ) Para editar, compilar y probar el código del programaPara editar, compilar y probar el código del programa Recomendaciones:Recomendaciones: Recomendaciones: Recomendaciones:
—— Windows: MS Visual Studio (MS Visual C++ Express) o EclipseWindows: MS Visual Studio (MS Visual C++ Express) o EclipseLinux:Linux: NetbeansNetbeans o Eclipseo Eclipse—— Linux: Linux: NetbeansNetbeans o Eclipseo Eclipse
PáginaPágina 3636Fundamentos de la programación: Computadoras y programaciónFundamentos de la programación: Computadoras y programación
PáginaPágina 3737Fundamentos de la programación: Computadoras y programaciónFundamentos de la programación: Computadoras y programación
Sintaxis y semántica de los lenguajesSintaxis y semántica de los lenguajesy g jy g jSintaxisSintaxisReglas que determinan cómo se pueden construirReglas que determinan cómo se pueden construir—— Reglas que determinan cómo se pueden construir Reglas que determinan cómo se pueden construir y secuenciar los elementos del lenguajey secuenciar los elementos del lenguajeSemánticaSemántica—— Significado de cada elemento del lenguaje Significado de cada elemento del lenguaje ¿Para qué sirve?, ¿Qué hace?¿Para qué sirve?, ¿Qué hace?¿ a a qué s ve , ¿Qué ace¿ a a qué s ve , ¿Qué aceReglas que determinan el efecto da cada instrucciónReglas que determinan el efecto da cada instrucción
Fundamentos de la programación: Computadoras y programaciónFundamentos de la programación: Computadoras y programación PáginaPágina 3838
Una computadora de un cocheUna computadora de un cocheCoche que acepta programas que le indican una ruta.Coche que acepta programas que le indican una ruta.Instrucciones que entiende:Instrucciones que entiende:qq<instrucción> ::= <<instrucción> ::= <instinst> > ;;<<instinst> ::=> ::= StartStart || StopStop | <avanzar>| <avanzar>instinst :: :: StartStart | | StopStop | avanzar| avanzar<avanzar> ::= <avanzar> ::= GoGo <dirección> <<dirección> <numnum> > BlocksBlocks<dirección> ::=<dirección> ::= NorthNorth || EastEast || SouthSouth || WestWest<dirección> ::= <dirección> ::= NorthNorth | | EastEast | | SouthSouth | | WestWest<<numnum> ::= > ::= 11 | | 22 | | 33 | | 44 | | 55Ej lEj lEjemplos:Ejemplos:StartStart;;GoGo North 3 Blocks;North 3 Blocks;Stop;Stop;
PáginaPágina 3939Fundamentos de la programación: Computadoras y programaciónFundamentos de la programación: Computadoras y programación
Sintaxis del lenguaje de programaciónSintaxis del lenguaje de programación
StartStart= Literales= Literales= Literales= Literales
instruccióninstruccióninstruccióninstrucción
avanzaravanzar
StopStop ;;
avanzaravanzar
avanzaravanzaravanzaravanzar direccióndirecciónGoGo BlocksBlocksnumnumavanzaravanzaravanzaravanzar direccióndirecciónGoGo BlocksBlocksnumnum
NorthNorth 11
direccióndireccióndireccióndirección
NorthNorth
numnumnumnumEastEast
112233
SouthSouth
WestWest
334455
PáginaPágina 4040Fundamentos de la programación: Computadoras y programaciónFundamentos de la programación: Computadoras y programación
El problema a resolverEl problema a resolverNNNN
Estando el coche en la posición A,Estando el coche en la posición A,conseguir llegar al Cine B.conseguir llegar al Cine B. BB¿Qué pasos hay que seguir ?¿Qué pasos hay que seguir ?
ArrancarArrancarIr un bloque al NorteIr un bloque al NorteIr dos bloques al EsteIr dos bloques al EsteIr cinco bloques al NorteIr cinco bloques al NorteIr dos bloques al EsteIr dos bloques al Este AA
PararParar Bloque:Bloque:Bloque:Bloque:PáginaPágina 4141Fundamentos de la programación: Computadoras y programaciónFundamentos de la programación: Computadoras y programación
El algoritmoEl algoritmoNNNN
Secuencia de pasos que hay que Secuencia de pasos que hay que seguir para resolver el problema.seguir para resolver el problema.
1.1.-- ArrancarArrancar22 I bl l NI bl l N2.2.-- Ir un bloque al NorteIr un bloque al Norte3.3.-- Ir dos bloques al EsteIr dos bloques al Este4.4.-- Ir cinco bloques al NorteIr cinco bloques al Norte5.5.-- Ir dos bloques al EsteIr dos bloques al Este6.6.-- PararParar
Estas instrucciones sirven tanto para Estas instrucciones sirven tanto para una persona como para una computadora.una persona como para una computadora.PáginaPágina 4242Fundamentos de la programación: Computadoras y programaciónFundamentos de la programación: Computadoras y programación
El programaEl programaNNNNEscribir el algoritmo en el Escribir el algoritmo en el lenguaje de programación.lenguaje de programación. BB
StartStart;;GoGo North 1 Blocks;North 1 Blocks;GoGo East 2 Blocks;East 2 Blocks;GoGo North 5 Blocks;North 5 Blocks;GoGo East 2 Blocks;East 2 Blocks;Stop;Stop; AA
PáginaPágina 4343Fundamentos de la programación: Computadoras y programaciónFundamentos de la programación: Computadoras y programación
El programaEl programaEscribimos el código del programaEscribimos el código del programaen un editor y lo guardamosen un editor y lo guardamosen un documento en un documento programa.prgprograma.prg..Stat;Stat;Go North 1 BlocksGo East Blocks; Copiamos el archivoCopiamos el archivoGo Noth 5 Blocks;Go West 2 Blocks;Stop;
Copiamos el archivoCopiamos el archivoen una llave USB en una llave USB y lo llevamos al coche.y lo llevamos al coche.Stop;
PáginaPágina 4444Fundamentos de la programación: Computadoras y programaciónFundamentos de la programación: Computadoras y programación
La compilaciónLa compilaciónIntroducimos la llave USB en el coche y pulsamos el botónIntroducimos la llave USB en el coche y pulsamos el botónde ejecutar el programa:de ejecutar el programa:St tSt tStatStat;;--------^ ^ UnknownUnknown wordword..GoGo North 1 BlocksNorth 1 Blocks----------------------------------^ ; ^ ; missingmissing..GoGo East Blocks;East Blocks;----------------^ ^ NumberNumber missingmissing.. ErroresErroresErroresErroresggGoGo NothNoth 5 Blocks;5 Blocks;--------------^ ^ UnknownUnknown wordword..GoGo West 2 Blocks;West 2 Blocks;
ErroresErroresde sintaxisde sintaxisErroresErroresde sintaxisde sintaxisGoGo West 2 Blocks;West 2 Blocks;Stop;Stop;ThereThere are are errorserrors. . ImpossibleImpossible toto runrun thethe programprogram..
PáginaPágina 4545Fundamentos de la programación: Computadoras y programaciónFundamentos de la programación: Computadoras y programación
DepuraciónDepuraciónEditamos el código para arreglar los errores de sintaxis.Editamos el código para arreglar los errores de sintaxis.StatStat;;GoGo North 1 BlocksNorth 1 Blocks
StaStarrtt;;GoGo North 1 BlocksNorth 1 Blocks;;
GoGo East Blocks;East Blocks;GoGo NothNoth 5 Blocks;5 Blocks;GoGo West 2 Blocks;West 2 Blocks;
GoGo East East 33 Blocks;Blocks;GoGo NoNorrth 5 Blocks;th 5 Blocks;GoGo West 2 Blocks;West 2 Blocks;GoGo West 2 Blocks;West 2 Blocks;
Stop;Stop;GoGo West 2 Blocks;West 2 Blocks;Stop;Stop;
PáginaPágina 4646Fundamentos de la programación: Computadoras y programaciónFundamentos de la programación: Computadoras y programación
La ejecuciónLa ejecuciónNNNNSe realiza lo que pideSe realiza lo que pidecada instrucción.cada instrucción. B
Start;
Go North 1 Blocks;Go North 1 Blocks;
Go East 3 Blocks;!!!!!!!!Error de ejecuciónError de ejecuciónError de ejecuciónError de ejecución
¡Una instrucción no se puede ejecutar!¡Una instrucción no se puede ejecutar!
PáginaPágina 4747Fundamentos de la programación: Computadoras y programaciónFundamentos de la programación: Computadoras y programación
DepuraciónDepuraciónEditamos el código para arreglar el error de ejecución.Editamos el código para arreglar el error de ejecución.StartStart;;GoGo North 1 Blocks;North 1 Blocks;
StartStart;;GoGo North 1 Blocks;North 1 Blocks;
GoGo East 3 Blocks;East 3 Blocks;GoGo North 5 Blocks;North 5 Blocks;GoGo West 2 Blocks;West 2 Blocks;
GoGo East East 22 Blocks;Blocks;GoGo North 5 Blocks;North 5 Blocks;GoGo West 2 Blocks;West 2 Blocks;GoGo West 2 Blocks;West 2 Blocks;
Stop;Stop;GoGo West 2 Blocks;West 2 Blocks;Stop;Stop;
PáginaPágina 4848Fundamentos de la programación: Computadoras y programaciónFundamentos de la programación: Computadoras y programación
La ejecuciónLa ejecuciónNNNNSe realiza lo que pideSe realiza lo que pidecada instrucción.cada instrucción. B
????
Start;
Go North 1 Blocks;Go North 1 Blocks;
Go East 2 Blocks;
h l kGo North 5 Blocks;
Go West 2 Blocks;
Error lógicoError lógicoStop;Error lógicoError lógico¡El programa se ejecuta, pero no obtiene el resultado deseado!¡El programa se ejecuta, pero no obtiene el resultado deseado!
PáginaPágina 4949Fundamentos de la programación: Computadoras y programaciónFundamentos de la programación: Computadoras y programación
DepuraciónDepuraciónEditamos el código para arreglar el error lógico.Editamos el código para arreglar el error lógico.StartStart;;GoGo North 1 Blocks;North 1 Blocks;
StartStart;;GoGo North 1 Blocks;North 1 Blocks;
GoGo East 2 Blocks;East 2 Blocks;GoGo North 5 Blocks;North 5 Blocks;GoGo West 2 Blocks;West 2 Blocks;
GoGo East 2 Blocks;East 2 Blocks;GoGo North 5 Blocks;North 5 Blocks;GoGo EastEast 2 Blocks;2 Blocks;GoGo West 2 Blocks;West 2 Blocks;
Stop;Stop;GoGo EastEast 2 Blocks;2 Blocks;Stop;Stop;
PáginaPágina 5050Fundamentos de la programación: Computadoras y programaciónFundamentos de la programación: Computadoras y programación
La ejecuciónLa ejecuciónNNNN
Se realiza lo que pideSe realiza lo que pidecada instrucción.cada instrucción.
Start;
Go North 1 Blocks;Go North 1 Blocks;
Go East 2 Blocks;
h l kGo North 5 Blocks;
Go East 2 Blocks;
Stop;
C id !C id !¡Conseguido!¡Conseguido!
PáginaPágina 5151Fundamentos de la programación: Computadoras y programaciónFundamentos de la programación: Computadoras y programación
Sintaxis del lenguaje de programaciónSintaxis del lenguaje de programaciónInstrucciones que entiende:Instrucciones que entiende:<instrucción> ::= <<instrucción> ::= <instinst> > ;;<<instinst> ::= > ::= StartStart | | StopStop | <avanzar>| <avanzar><avanzar> ::=<avanzar> ::= GoGo <dirección> <<dirección> <numnum>> BlocksBlocksavanzar :: avanzar :: GoGo dirección dirección numnum BlocksBlocks<dirección> ::= <dirección> ::= NorthNorth | | EastEast | | SouthSouth | | WestWest<<numnum> ::=> ::= 11 || 22 || 33 || 44 || 55<<numnum> ::= > ::= 11 | | 22 | | 33 | | 44 | | 55Semántica del lenguajeSemántica del lenguajeQ é h d i ió ? difi lQ é h d i ió ? difi l dd d l hd l h¿Qué hace cada instrucción?: modifica el ¿Qué hace cada instrucción?: modifica el estadoestado del cochedel cocheVariables que definen el estado:Variables que definen el estado:
arrancado, posición(x, y), chocadoarrancado, posición(x, y), chocado
PáginaPágina 5252Fundamentos de la programación: Computadoras y programaciónFundamentos de la programación: Computadoras y programación
Semántica del lenguajeSemántica del lenguaje¿Qué hace cada instrucción?: modifica el ¿Qué hace cada instrucción?: modifica el estadoestado del cochedel cocheVariables que definen el estado:Variables que definen el estado:qqarrancado, posición(x, y), chocadoarrancado, posición(x, y), chocadoLas coordenadasLas coordenadas (x, y)(x, y) sobre elsobre el mapamapa: (0,0) esquina: (0,0) esquina supsup. izq.. izq.Las coordenadas Las coordenadas (x, y) (x, y) sobre el sobre el mapamapa: (0,0) esquina : (0,0) esquina supsup. izq.. izq.
ElEl estadoestado respecto a un mapa queda definido por la tripla:respecto a un mapa queda definido por la tripla:El El estadoestado, respecto a un mapa, queda definido por la tripla:, respecto a un mapa, queda definido por la tripla:<arrancado, posición(x, y), chocado><arrancado, posición(x, y), chocado>ElEl d d fi id t i N fil M ld d fi id t i N fil M lEl El mapamapa queda definido por una matriz N filas y M columnas:queda definido por una matriz N filas y M columnas:Mapa(f, c) = 1 <Mapa(f, c) = 1 <--> calle> calleMapa(f, c) = 0 <Mapa(f, c) = 0 <--> edificio> edificio
PáginaPágina 5353Fundamentos de la programación: Computadoras y programaciónFundamentos de la programación: Computadoras y programación
Especificación del problemaEspecificación del problemaEl problema en estos términos quedaría El problema en estos términos quedaría especificadoespecificado por: por: ¿Cómo pasar de un ¿Cómo pasar de un ¿ p¿ p estado inicial estado inicial <posición(FA, CA)><posición(FA, CA)> a un a un estado finalestado final <posición(FB, CB)><posición(FB, CB)> ??estado final estado final posición(FB, CB)posición(FB, CB) ?? estado inicialestado inicial <posición(FA CA) chocado><posición(FA CA) chocado> a una un estado inicial estado inicial <posición(FA, CA), chocado> <posición(FA, CA), chocado> a un a un estado final estado final <posición(FB, CB)> <posición(FB, CB)> ?? estado inicial estado inicial <posición(FA, CA), No chocado> <posición(FA, CA), No chocado> a un a un ffestado final estado final <No arrancado, posición(FB, CB), No chocado><No arrancado, posición(FB, CB), No chocado>
PáginaPágina 5454Fundamentos de la programación: Computadoras y programaciónFundamentos de la programación: Computadoras y programación
Semántica de las instrucciones mediante Semántica de las instrucciones mediante reglas de cambio de estado: reglas de cambio de estado: EstAEstA <<instinst> > EstDEstDEstAEstA: Estado antes de la ejecución de la instrucción: Estado antes de la ejecución de la instrucción<<instinst> ejecución de una instrucción> ejecución de una instrucción<<instinst> ejecución de una instrucción> ejecución de una instrucciónEstDEstD: Estado después de la ejecución de la instrucción: Estado después de la ejecución de la instrucciónPara cada instrucción:Para cada instrucción:EstAEstA: : <posición(F, C), No chocado> <posición(F, C), No chocado>
StartStartEstDEstD: : <arrancado, posición(F, C), No chocado> <arrancado, posición(F, C), No chocado>
PáginaPágina 5555Fundamentos de la programación: Computadoras y programaciónFundamentos de la programación: Computadoras y programación
Para cada instrucción: Para cada instrucción: EstAEstA <<instinst> > EstDEstD•• EstAEstA: : <posición(F, C), No chocado> <posición(F, C), No chocado>
StartStartEstDEstD: : <arrancado, posición(F, C), No chocado> <arrancado, posición(F, C), No chocado>
•• EstAEstA: : <posición(F, C), No chocado> <posición(F, C), No chocado> StopStopStop Stop EstDEstD: : <No arrancado, posición(F, C), No chocado><No arrancado, posición(F, C), No chocado>
•• EstAEstA: : <[No]arrancado, posición(F, C), chocado> <[No]arrancado, posición(F, C), chocado> <<instinst> > EstDEstD: : <[No]arrancado, posición(F, C), chocado><[No]arrancado, posición(F, C), chocado>
PáginaPágina 5656Fundamentos de la programación: Computadoras y programaciónFundamentos de la programación: Computadoras y programación
El mapa, matriz de N filas y M columnas:El mapa, matriz de N filas y M columnas:M (F C) 1M (F C) 1 llll M (F C) 0M (F C) 0 difi idifi iMapa(F, C) = 1 <Mapa(F, C) = 1 <--> calle, > calle, Mapa(F, C) = 0 <Mapa(F, C) = 0 <--> edificio> edificio•• EstAEstA:: <arrancado posición(F C) No chocado><arrancado posición(F C) No chocado>•• EstAEstA:: <arrancado, posición(F, C), No chocado> <arrancado, posición(F, C), No chocado>
AND (FAND (F--n) >=0 AND (n) >=0 AND (p.t.p.t. i:1…n, Mapa(Fi:1…n, Mapa(F--i, C)=calle)i, C)=calle)GoGo NorthNorth nn Blocks Blocks EstDEstD:: <arrancado, posición(F<arrancado, posición(F--n, C), No chocado>n, C), No chocado>
Análogo para Análogo para EastEast, , South South y y WestWest
PáginaPágina 5757Fundamentos de la programación: Computadoras y programaciónFundamentos de la programación: Computadoras y programación
El mapa, matriz de N filas y M columnas:El mapa, matriz de N filas y M columnas:M (F C) 1M (F C) 1 llll M (F C) 0M (F C) 0 difi idifi iMapa(F, C) = 1 <Mapa(F, C) = 1 <--> calle, > calle, Mapa(F, C) = 0 <Mapa(F, C) = 0 <--> edificio> edificio•• EstAEstA:: <arrancado posición(F C) No chocado><arrancado posición(F C) No chocado>•• EstAEstA:: <arrancado, posición(F, C), No chocado> <arrancado, posición(F, C), No chocado>
AND (FAND (F--n <0) OR (n <0) OR (p.a.p.a. i:1…n, Mapa(Fi:1…n, Mapa(F--i, C)=edificio)i, C)=edificio)GoGo NorthNorth nn Blocks Blocks EstDEstD:: <posición(F, C), chocado><posición(F, C), chocado>
Análogo para Análogo para EastEast, , South South y y WestWest
PáginaPágina 5858Fundamentos de la programación: Computadoras y programaciónFundamentos de la programación: Computadoras y programación
Licencia CC (Licencia CC (CreativeCreative CommonsCommons))Este tipo de licencias ofrecen algunos derechos a terceras personas Este tipo de licencias ofrecen algunos derechos a terceras personas bajo ciertas condiciones.bajo ciertas condiciones.Este documento tiene establecidas las siguientes:Este documento tiene establecidas las siguientes:Reconocimiento (Attribution): ( )En cualquier explotación de la obra autorizada por la licenciahará falta reconocer la autoría. No comercial (Non commercial): La explotación de la obra queda limitada a usos no comerciales.C ti i l (Sh lik )Compartir igual (Share alike):La explotación autorizada incluye la creación de obras derivadas siempre que mantengan la misma licencia al ser divulgadas.Pulsa en la imagen de arriba a la derecha para saber más.Pulsa en la imagen de arriba a la derecha para saber más.Fundamentos de la programación: Computadoras y programaciónFundamentos de la programación: Computadoras y programación PáginaPágina 5959
top related