Informática, computadora, y programación Fundamentos de … · 2016. 7. 4. · El modelo de J....

8
Fundamentos de programación 1 Grado en Ingeniería Informática Grado en Ingeniería Informática Grado en Ingeniería del Software Grado en Ingeniería del Software Grado en Ingeniería de Computadores Grado en Ingeniería de Computadores Material de la Prof.ª Mercedes Gómez Albarrán Material de la Prof.ª Mercedes Gómez Albarrán Versión revisada y ampliada del material del Prof. Luis Hernández Yáñez Versión revisada y ampliada del material del Prof. Luis Hernández Yáñez Facultad de Informática Facultad de Informática Universidad Complutense Universidad Complutense ¿Qué es la Informática? ¿Qué es la Informática? ¿Qué es una computadora? ¿Qué es una computadora? Informática, computadora, y programación Hardware vs. software Hardware vs. software ¿En qué consiste la programación de computadoras? ¿En qué consiste la programación de computadoras? Página Página 1 Fundamentos de programación: Computadoras y programación Fundamentos de programación: Computadoras y programación Ábaco Ábaco – 2.000 a.c. 2.000 a.c. El sumador de Pascal El sumador de Pascal – mediados s.XVII mediados s.XVII La calculadora de G.W. von Leibniz La calculadora de G.W. von Leibniz – finales s.XVII finales s.XVII El hombre y sus primeros intentos de procesar la información La La Pascalina Pascalina (Wikipedia) (Wikipedia) La máquina de diferencias de Babbage La máquina de diferencias de Babbage – s.XIX s.XIX El concepto de programa externo El concepto de programa externo Página Página 2 Fundamentos de programación: Computadoras y programación Fundamentos de programación: Computadoras y programación Lady Ada Lovelace es Lady Ada Lovelace es considerada la primera considerada la primera programadora programadora Comienza la era de la Informática 1945 1945 El modelo de J. von Neumann: estructura de la computadora El modelo de J. von Neumann: estructura de la computadora El concepto de programa interno El concepto de programa interno Dispositivos de E/S Dispositivos de E/S Página Página 3 Fundamentos de programación: Computadoras y programación Fundamentos de programación: Computadoras y programación C.P.U. (Procesador) C.P.U. (Procesador) Memoria Memoria ALU ALU Unidad Aritmético Unidad Aritmético-Lógica Lógica Unidad de Control Unidad de Control

Transcript of Informática, computadora, y programación Fundamentos de … · 2016. 7. 4. · El modelo de J....

Page 1: Informática, computadora, y programación Fundamentos de … · 2016. 7. 4. · El modelo de J. von Neumann: estructura de la computadora El concepto de programa interno Dispositivos

Fundamentos de programación

1Grado en Ingeniería InformáticaGrado en Ingeniería Informática

Grado en Ingeniería del SoftwareGrado en Ingeniería del SoftwareGrado en Ingeniería de ComputadoresGrado en Ingeniería de Computadores

Material de la Prof.ª Mercedes Gómez AlbarránMaterial de la Prof.ª Mercedes Gómez AlbarránVersión revisada y ampliada del material del Prof. Luis Hernández YáñezVersión revisada y ampliada del material del Prof. Luis Hernández Yáñez

Facultad de InformáticaFacultad de InformáticaUniversidad ComplutenseUniversidad Complutense

¿Qué es la Informática? ¿Qué es la Informática?

¿Qué es una computadora?¿Qué es una computadora?

Informática, computadora, y programación

Hardware vs. softwareHardware vs. software

¿En qué consiste la programación de computadoras?¿En qué consiste la programación de computadoras?

PáginaPágina 11Fundamentos de programación: Computadoras y programaciónFundamentos de programación: Computadoras y programación

Ábaco Ábaco –– 2.000 a.c.2.000 a.c.

El sumador de Pascal El sumador de Pascal –– mediados s.XVIImediados s.XVII

La calculadora de G.W. von Leibniz La calculadora de G.W. von Leibniz –– finales s.XVIIfinales s.XVII

El hombre y sus primeros intentos de

procesar la información

La La PascalinaPascalina

(Wikipedia)(Wikipedia)

La máquina de diferencias de Babbage La máquina de diferencias de Babbage –– s.XIXs.XIX

�� El concepto de programa externoEl concepto de programa externo

PáginaPágina 22Fundamentos de programación: Computadoras y programaciónFundamentos de programación: Computadoras y programación

Lady Ada Lovelace es Lady Ada Lovelace es considerada la primeraconsiderada la primeraprogramadoraprogramadora

Comienza la era de la Informática

19451945

�� El modelo de J. von Neumann: estructura de la computadoraEl modelo de J. von Neumann: estructura de la computadora

�� El concepto de programa internoEl concepto de programa interno

Dispositivos de E/SDispositivos de E/S

PáginaPágina 33Fundamentos de programación: Computadoras y programaciónFundamentos de programación: Computadoras y programación

C.P.U. (Procesador)C.P.U. (Procesador)

MemoriaMemoria

ALUALUUnidad AritméticoUnidad Aritmético--LógicaLógica

Unidad de ControlUnidad de Control

Page 2: Informática, computadora, y programación Fundamentos de … · 2016. 7. 4. · El modelo de J. von Neumann: estructura de la computadora El concepto de programa interno Dispositivos

Algunos hitos en la vida de la Informática

¿Cuándo se crean los primeros lenguajes de programación? ¿cuáles ¿Cuándo se crean los primeros lenguajes de programación? ¿cuáles fueron? ¿Es C++ mayor de edad? ¿Quién es más joven: C++ o Java?fueron? ¿Es C++ mayor de edad? ¿Quién es más joven: C++ o Java?

¿Cuál puede considerarse el primer virus informático?¿Cuál puede considerarse el primer virus informático?

¿Quién surge primero: MS¿Quién surge primero: MS--DOS, Windows, UNIX, Linux, DOS, Windows, UNIX, Linux, AndroidAndroid??

PáginaPágina 44Fundamentos de programación: Computadoras y programaciónFundamentos de programación: Computadoras y programación

¿Quién surge primero: MS¿Quién surge primero: MS--DOS, Windows, UNIX, Linux, DOS, Windows, UNIX, Linux, AndroidAndroid??

¿Cuándo se crea la WWW?¿Cuándo se crea la WWW?

¿Qué soportes externos conoces: disquete, CD, DVD? ¿Alguno nació ¿Qué soportes externos conoces: disquete, CD, DVD? ¿Alguno nació antes que tú?antes que tú?

¿Quién es Alan ¿Quién es Alan TuringTuring??

Las computadoras están por todas partes

¡Con múltiples formas distintas de un PC!¡Con múltiples formas distintas de un PC!

PáginaPágina 55Fundamentos de programación: Computadoras y programaciónFundamentos de programación: Computadoras y programación

¿Qué entiende la computadora?

ComputadoraComputadora: Máquina electrónica : Máquina electrónica digitaldigital, dotada de ..., dotada de ...

La computadora manipula información digital: esquema binarioLa computadora manipula información digital: esquema binario

PáginaPágina 66Fundamentos de programación: Computadoras y programaciónFundamentos de programación: Computadoras y programación

¿Por qué no se usa una representación analógica de la información?¿Por qué no se usa una representación analógica de la información?

¿A qué nos conduce la solución adoptada para evitar el problema ¿A qué nos conduce la solución adoptada para evitar el problema tecnológico?tecnológico?

Lenguaje máquina

a = (b + d)/(c + e)

Pasos�� sumar sumar cc y y ee, y guardar el resultado en una dirección de memoria , y guardar el resultado en una dirección de memoria temporal temporal X X

�� sumar sumar bb yy dd, y guardar el resultado en una dirección de memoria , y guardar el resultado en una dirección de memoria temporal temporal YY

�� dividir el contenido de dividir el contenido de YY por el de por el de XX y guardar en la dirección de y guardar en la dirección de aa

PáginaPágina 77Fundamentos de programación: Computadoras y programaciónFundamentos de programación: Computadoras y programación

�� dividir el contenido de dividir el contenido de YY por el de por el de XX y guardar en la dirección de y guardar en la dirección de aa

Ejemplo de código máquina�� codigoOp direccOp1 direccOp2 direccRes

0000 00001000 00001100 000011100000 00011000 00011100 000111100101 00011110 00001110 00000100

Código de la división

Direcc. Temporal X

Direcc. Temporal Y

Código de la suma

Page 3: Informática, computadora, y programación Fundamentos de … · 2016. 7. 4. · El modelo de J. von Neumann: estructura de la computadora El concepto de programa interno Dispositivos

Lenguaje máquina

�� Lenguaje de programación de bajo nivelLenguaje de programación de bajo nivelNulo nivel de abstracción: los códigos contienen los ceros y unos Nulo nivel de abstracción: los códigos contienen los ceros y unos que gobiernan directamente los circuitos de la CPUque gobiernan directamente los circuitos de la CPU

�� Totalmente dependiente de la máquinaTotalmente dependiente de la máquinaCada familia de procesadores usa sus propios códigos,Cada familia de procesadores usa sus propios códigos,distintos de los de otras familiasdistintos de los de otras familias

PáginaPágina 88Fundamentos de programación: Computadoras y programaciónFundamentos de programación: Computadoras y programación

�� Programación: muy Programación: muy tediosatediosa

�� Grandes posibilidades de errorGrandes posibilidades de error

Lenguaje ensamblador

�� Lenguaje simbólico con una mínima capacidad de abstracción Lenguaje simbólico con una mínima capacidad de abstracción

�� Nemotécnicos para los códigos que representan Nemotécnicos para los códigos que representan instruccionesinstrucciones

�� Nombres simbólicos para las direcciones de memoriaNombres simbólicos para las direcciones de memoria

a = (b + d)/(c + e)Código fuenteCódigo fuente

(lenguaje ensamblador)(lenguaje ensamblador)

PáginaPágina 99Fundamentos de programación: Computadoras y programaciónFundamentos de programación: Computadoras y programación

ADD C, E, XADD B, D, YDIV Y, X, A

�� Mayor legibilidadMayor legibilidad

�� ¿Cómo entiende la máquina este código?¿Cómo entiende la máquina este código?

�� Dependiente de la máquinaDependiente de la máquina

Código objetoCódigo objeto(lenguaje máquina)(lenguaje máquina)

(lenguaje ensamblador)(lenguaje ensamblador)

Programa ensambladorPrograma ensamblador

Lenguajes de programación de alto nivel

�� Lenguaje que permite expresar el mecanismo de resolución de Lenguaje que permite expresar el mecanismo de resolución de problemas usando instrucciones independientemente de la problemas usando instrucciones independientemente de la computadoracomputadora

�� Más cercanos a los lenguajes natural y matemáticoMás cercanos a los lenguajes natural y matemático

a = (b + d)/(c + e);

�� Capacidad de abstracciónCapacidad de abstracción

Abstracción procedimentalAbstracción procedimental

PáginaPágina 1010Fundamentos de programación: Computadoras y programaciónFundamentos de programación: Computadoras y programación

�� Abstracción procedimentalAbstracción procedimental

�� Abstracción de datosAbstracción de datos

�� Mayor legibilidad, mayor facilidad de codificaciónMayor legibilidad, mayor facilidad de codificación

�� ¿Cómo conseguir que la computadora “entienda” los programas ¿Cómo conseguir que la computadora “entienda” los programas escritos en lenguajes de alto nivel?escritos en lenguajes de alto nivel?

�� Compiladores e intérpretesCompiladores e intérpretes

BASICBASICBASICBASIC

PythonPython19911991

PythonPython19911991ModulaModula

19751975ModulaModula

19751975

PrologProlog19701970

PrologProlog19701970

C#C#20002000C#C#

20002000

JavaJava19951995JavaJava19951995C++C++

19831983C++C++19831983

PL/IPL/I19641964PL/IPL/I19641964

CC19711971

CC19711971

PascalPascal19701970

PascalPascal19701970

CPLCPL19631963CPLCPL19631963

COBOLCOBOL19591959

COBOLCOBOL19591959

ALGOLALGOL19581958

ALGOLALGOL19581958

FORTRANFORTRAN19541954

FORTRANFORTRAN19541954

Lenguajes de programación de alto nivel

PáginaPágina 1111Fundamentos de programación: Computadoras y programaciónFundamentos de programación: Computadoras y programación

BASICBASIC19641964

BASICBASIC19641964

LogoLogo19681968LogoLogo19681968

RubyRuby19931993RubyRuby19931993

EiffelEiffel19861986EiffelEiffel19861986

Fuente: Fuente: http://www.levenez.com/lang/http://www.levenez.com/lang/

HaskellHaskell19871987

HaskellHaskell19871987

SmalltalkSmalltalk19711971

SmalltalkSmalltalk19711971

SchemeScheme19751975

SchemeScheme19751975

SimulaSimula19641964

SimulaSimula19641964

AdaAda19791979AdaAda19791979

LispLisp19581958LispLisp19581958

Page 4: Informática, computadora, y programación Fundamentos de … · 2016. 7. 4. · El modelo de J. von Neumann: estructura de la computadora El concepto de programa interno Dispositivos

El sistema operativoEl sistema operativo

Programas y más programas

Programas de aplicaciónProgramas de aplicación

PáginaPágina 1212Fundamentos de programación: Computadoras y programaciónFundamentos de programación: Computadoras y programación

�� PROGRAMAR PROGRAMAR ESES RESOLVER PROBLEMASRESOLVER PROBLEMAS—— Actividades implicadas en la descripción, el desarrollo y la Actividades implicadas en la descripción, el desarrollo y la

implementación de implementación de soluciones algorítmicas eficaces y eficientessoluciones algorítmicas eficaces y eficientesa a problemas bien especificadosproblemas bien especificados

—— Estado inicial Estado inicial -- Entrada del problema Entrada del problema -- Precondiciones Precondiciones

Datos iniciales y relaciones entre ellosDatos iniciales y relaciones entre ellos

—— Estado final Estado final -- Salida del problema Salida del problema -- PostcondicionesPostcondiciones

Datos finales y relaciones entre ellosDatos finales y relaciones entre ellos

La programación: resolución de problemas

AlgoritmoAlgoritmo

EstadoEstadoinicialinicial

Datos finales y relaciones entre ellosDatos finales y relaciones entre ellos

—— Algoritmo: sistemática que transforma la entrada en la salidaAlgoritmo: sistemática que transforma la entrada en la salida

�� PROGRAMAR PROGRAMAR NO ESNO ES CONOCER LA SINTAXIS DE MUCHOS CONOCER LA SINTAXIS DE MUCHOS LENGUAJES DE PROGRAMACIÓNLENGUAJES DE PROGRAMACIÓN—— Los lenguajes de programación son un medio para expresar Los lenguajes de programación son un medio para expresar

algoritmosalgoritmos

—— Programa: algoritmo expresado en un cierto lenguaje de Programa: algoritmo expresado en un cierto lenguaje de programaciónprogramación

PáginaPágina 1313Fundamentos de programación: Computadoras y programaciónFundamentos de programación: Computadoras y programación

EstadoEstadofinalfinal

El primer problema del montón de fichasEl primer problema del montón de fichas

Supongamos que tenemos una secuencia de fichas, cada una de las cuales tiene escrito el nombre de una persona junto con otros datos personales (fecha de nacimiento, dirección, número de teléfono). Las fichas están ordenadas alfabéticamente por el nombre.

Queremos felicitar por teléfono a los que cumplen años hoy.

¿Cómo detectamos a los cumpleañeros?

La programación: resolución de problemas

¿Cómo detectamos a los cumpleañeros?

�� ¿Cuál es la entrada? ¿Cuál es la entrada?

�� ¿Cuál es la salida? ¿Cuál es la salida?

�� ¿Cuál es el algoritmo?¿Cuál es el algoritmo?

�� ¿Qué lenguaje utilizamos para describir las respuestas a todo lo ¿Qué lenguaje utilizamos para describir las respuestas a todo lo anterior?anterior?

PáginaPágina 1414Fundamentos de programación: Computadoras y programaciónFundamentos de programación: Computadoras y programación

El segundo problema del montón de fichasEl segundo problema del montón de fichas

Supongamos que volvemos a tener la misma secuencia de fichas.

Nos pasan el nombre de una persona a la que hay que felicitar por teléfono.

¿Cómo lo hacemos?

La programación: resolución de problemas

�� ¿Cuál es la entrada? ¿Cuál es la entrada?

�� ¿Cuál es la salida? ¿Cuál es la salida?

�� ¿Cuál es el algoritmo?¿Cuál es el algoritmo?

�� ¿Qué lenguaje utilizamos para describir las respuestas a todo lo ¿Qué lenguaje utilizamos para describir las respuestas a todo lo anterior?anterior?

PáginaPágina 1515Fundamentos de programación: Computadoras y programaciónFundamentos de programación: Computadoras y programación

Page 5: Informática, computadora, y programación Fundamentos de … · 2016. 7. 4. · El modelo de J. von Neumann: estructura de la computadora El concepto de programa interno Dispositivos

El tercer problema del montón de fichasEl tercer problema del montón de fichas

Supongamos que volvemos a tener la misma secuencia de fichas.

Nos pasan el nombre de una persona y su nuevo número de teléfono.

¿Cómo hacemos el cambio? ¿Y si la persona no está?

La programación: resolución de problemas

�� ¿Cuál es la entrada? ¿Cuál es la entrada?

�� ¿Cuál es la salida? ¿Cuál es la salida?

�� ¿Cuál es el algoritmo?¿Cuál es el algoritmo?

�� ¿Qué lenguaje utilizamos para describir las respuestas a todo lo ¿Qué lenguaje utilizamos para describir las respuestas a todo lo anterior?anterior?

PáginaPágina 1616Fundamentos de programación: Computadoras y programaciónFundamentos de programación: Computadoras y programación

El cuarto problema del montón de fichasEl cuarto problema del montón de fichas

De nuevo tenemos la misma secuencia de fichas.

Nos dan una nueva ficha y hay que incorporarla al montón existente sin romper el orden.

¿Cómo averiguamos dónde incorporarla?

La programación: resolución de problemas

�� ¿Cuál es la entrada? ¿Cuál es la entrada?

�� ¿Cuál es la salida? ¿Cuál es la salida?

�� ¿Cuál es el algoritmo?¿Cuál es el algoritmo?

�� ¿Qué lenguaje utilizamos para describir las respuestas a todo lo ¿Qué lenguaje utilizamos para describir las respuestas a todo lo anterior?anterior?

PáginaPágina 1717Fundamentos de programación: Computadoras y programaciónFundamentos de programación: Computadoras y programación

El quinto problema del montón de fichasEl quinto problema del montón de fichas

¡Nos han desordenado la secuencia de fichas!

De nuevo nos pasan el nombre de una persona a la que hay que felicitar.

¿Cómo lo hacemos ahora?

La programación: resolución de problemas

�� ¿Cuál es la entrada? ¿Cuál es la entrada?

�� ¿Cuál es la salida? ¿Cuál es la salida?

�� ¿Cuál es el algoritmo?¿Cuál es el algoritmo?

�� ¿Qué lenguaje utilizamos para describir las respuestas a todo lo ¿Qué lenguaje utilizamos para describir las respuestas a todo lo anterior?anterior?

PáginaPágina 1818Fundamentos de programación: Computadoras y programaciónFundamentos de programación: Computadoras y programación

El modelo de desarrollo “en cascada”El modelo de desarrollo “en cascada”

DiseñoDiseño

AnálisisAnálisis

PlanificaciónPlanificación Recursos necesarios, presupuesto, plan, …

¿Qué?

¿Cómo?

La ingeniería del software

PáginaPágina 1919Fundamentos de programación: Computadoras y programaciónFundamentos de programación: Computadoras y programación

MantenimientoMantenimiento

Prueba y depuraciónPrueba y depuración

ImplementaciónImplementación

DiseñoDiseño ¿Cómo?

Aplicación

Aplicaciónvalidada

Aplicaciónmodificada

Page 6: Informática, computadora, y programación Fundamentos de … · 2016. 7. 4. · El modelo de J. von Neumann: estructura de la computadora El concepto de programa interno Dispositivos

AnálisisAnálisisQuiero 3 habitaciones,Quiero 3 habitaciones,2 baños, garaje, ...2 baños, garaje, ...

¿Qué tiene que hacer ¿Qué tiene que hacer exactamente el software?exactamente el software?

CasaCasa SoftwareSoftware

DiseñoDiseñoPlanos, diseño circuito Planos, diseño circuito eléctrico y de agua, ...eléctrico y de agua, ...

¿Cómo vamos a¿Cómo vamos aorganizar el software?organizar el software?¿Qué hará cada parte?¿Qué hará cada parte?

La ingeniería del software

PáginaPágina 2020Fundamentos de programación: Computadoras y programaciónFundamentos de programación: Computadoras y programación

ImplementaciónImplementaciónSe construye la casa.Se construye la casa. Se construye el software.Se construye el software.

PruebaPruebaSe comprueba la solidez de la Se comprueba la solidez de la

estructura, el funcionamiento de estructura, el funcionamiento de las instalaciones, el acabado, ...las instalaciones, el acabado, ...

Ponemos a prueba nuestro Ponemos a prueba nuestro software, incluso en software, incluso en situaciones límite.situaciones límite.

MantenimientoMantenimientoAlgunas reformas: se cierra Algunas reformas: se cierra

la terraza, se instala aire la terraza, se instala aire acondicionado, ...acondicionado, ...

Pequeñas modificaciones o Pequeñas modificaciones o correcciones, actualizaciones, correcciones, actualizaciones,

etc...etc...

Los lenguajes de programación pueden describirse:Los lenguajes de programación pueden describirse:

�� A nivel sintácticoA nivel sintáctico

—— Descripción de cómo se pueden construir y secuenciar los Descripción de cómo se pueden construir y secuenciar los elementos del lenguajeelementos del lenguaje

—— Es una descripción hecha usando algún formalismo artificialEs una descripción hecha usando algún formalismo artificial

�� A nivel semánticoA nivel semántico

Los aspectos de los lenguajes de programación

—— Descripción del significado de cada elemento del lenguajeDescripción del significado de cada elemento del lenguaje

—— Puede usarse lenguaje natural o expresarse de manera formalPuede usarse lenguaje natural o expresarse de manera formal

�� A nivel pragmáticoA nivel pragmático

—— Descripción de cómo se utiliza el lenguaje de forma prácticaDescripción de cómo se utiliza el lenguaje de forma práctica

—— Lo típico: usar tutoriales y ejemplos de programasLo típico: usar tutoriales y ejemplos de programas

Fundamentos de programación: Computadoras y programaciónFundamentos de programación: Computadoras y programación PáginaPágina 2121

Sintaxis = reglas que especifican y permiten verificar la corrección de las Sintaxis = reglas que especifican y permiten verificar la corrección de las sentencias de un lenguajesentencias de un lenguaje

Formalismos:Formalismos:

�� BNF (BNF (BackusBackus--Naur FormNaur Form))

�� EBNF (EBNF (Extended BackusExtended Backus--Naur FormNaur Form))

�� Diagramas sintácticosDiagramas sintácticos

Sintaxis de los lenguajes de programación

Fundamentos de programación: Computadoras y programaciónFundamentos de programación: Computadoras y programación PáginaPágina 2222

� TERMINAL Símbolo del lenguaje que se está definiendo

� <no terminal> Símbolo que se define en términos de otros(terminales y no terminales)

� Regla de producción Descripción de símbolos no terminales.Parte izquierda: símbolo no terminalParte derecha: combinación de terminales y no terminales; vacío

Sintaxis de los lenguajes de programación: BNF

� Metasímbolos Símbolos del formalismo

::= Equivalencia

| Alternativa

Fundamentos de programación: Computadoras y programaciónFundamentos de programación: Computadoras y programación PáginaPágina 2323

Page 7: Informática, computadora, y programación Fundamentos de … · 2016. 7. 4. · El modelo de J. von Neumann: estructura de la computadora El concepto de programa interno Dispositivos

� Reglas BNF para expresar la sintaxis de un número entero positivo en un cierto lenguaje de programación

<numero entero> ::= <signo opcional> <secuencia digitos>

<signo opcional> ::= + | <nada>

<secuencia digitos> ::= <digito> | <digito> <secuencia digitos>

<digito> ::= 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9

+23 +23

1374 1374

1+34 1+34

3.43.4

Sintaxis de los lenguajes de programación: BNF

<digito> ::= 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9

<nada> ::=

� Reglas BNF para expresar la sintaxis de un número entero

Fundamentos de programación: Computadoras y programaciónFundamentos de programación: Computadoras y programación PáginaPágina 2424

3.43.4

002002

Sintaxis de los lenguajes de programación: EBNF

BNF

� TERMINAL

� <no terminal>

� Metasímbolos::= Equivalencia| Alternativa

EBNF

� “terminal”

� No-terminal

� Metasímbolos::= Equivalencia| Alternativa{...} Aparición 0, 1, 2,... veces

Fundamentos de programación: Computadoras y programaciónFundamentos de programación: Computadoras y programación PáginaPágina 2525

� Recursividad

{...} Aparición 0, 1, 2,... veces[...] Opcionalidad(...) Agrupaciones

� Recursividad no permitida

� Coincidencia de metasímbolo con símbolo del lenguaje: el metasímbolo entre comillas simples

� Reglas EBNF para expresar la sintaxis de un número entero positivo en un cierto lenguaje de programación

Numero-entero ::= [Signo] Secuencia-digitos

Signo ::= “+”

Secuencia-digitos ::= Digito {Digito}

Digito ::= “0” | “1” | “2” | “3” | “4” | “5” | “6” | “7” | “8” | “9”

+23 +23

1374 1374

1+34 1+34

3.43.4

Sintaxis de los lenguajes de programación: EBNF

Digito ::= “0” | “1” | “2” | “3” | “4” | “5” | “6” | “7” | “8” | “9”

� Reglas EBNF para expresar la sintaxis de un número entero

Fundamentos de programación: Computadoras y programaciónFundamentos de programación: Computadoras y programación PáginaPágina 2626

3.43.4

002002

Sintaxis de los lenguajes de programación:

diagramas sintácticos

terminal

no terminal

aAlternativa

Fundamentos de programación: Computadoras y programaciónFundamentos de programación: Computadoras y programación PáginaPágina 2727

b

Aparición 0, 1, 2,... veces Opcionalidad

Donde va esto puede ir un terminal, un noterminal, una secuencia de terminales y no terminales,…

Page 8: Informática, computadora, y programación Fundamentos de … · 2016. 7. 4. · El modelo de J. von Neumann: estructura de la computadora El concepto de programa interno Dispositivos

+23 +23

1374 1374

1+34 1+34

3.43.4

Sintaxis de los lenguajes de programación:

diagramas sintácticos

+

digitodigito

Nº entero positivo

digito

� Diagramas sintácticos para expresar la sintaxis de un número entero positivo en un cierto lenguaje de programación

Fundamentos de programación: Computadoras y programaciónFundamentos de programación: Computadoras y programación PáginaPágina 2828

3.43.4

002002

1

0

9

digito

� Diagramas sintácticos para expresar la sintaxis de un número entero

Licencia CC (Licencia CC (CreativeCreative CommonsCommons))

Este tipo de licencias ofrecen algunos derechos a terceras personas bajo Este tipo de licencias ofrecen algunos derechos a terceras personas bajo ciertas condiciones.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.

En En http://es.creativecommons.org/ y http://es.creativecommons.org/ y http://creativecommons.org/puedes saber más de http://creativecommons.org/puedes saber más de CreativeCreative CommonsCommons..

Fundamentos de programación: Computadoras y programaciónFundamentos de programación: Computadoras y programación PáginaPágina 2929

hará falta reconocer la autoría.

No comercial (Non commercial): La explotación de la obra queda limitada a usos no comerciales.

Compartir igual (Share alike):La explotación autorizada incluye la creación de obras derivadas siempre que mantengan la misma licencia al ser divulgadas.