Conceptos basicos de programacion

40
Introducción a la Programación Tema 1: Conceptos básicos de programación Ingeniería Técnica en Informática de Gestión Departamento de Ingeniería del Software e Inteligencia Artificial Curso 2009-2010 Profesor Federico Peinado Elaboración del material Mercedes Gómez Pablo Moreno Manuel Ortega Federico Peinado

description

conceptos

Transcript of Conceptos basicos de programacion

Page 1: Conceptos basicos de programacion

Introducción a la Programación

Tema 1: Conceptos básicos de

programación

Ingeniería Técnica en Informática de GestiónDepartamento de Ingeniería del Software e Inteligencia Artificial

Curso 2009-2010

ProfesorFederico Peinado

Elaboración del materialMercedes GómezPablo MorenoManuel OrtegaFederico Peinado

Page 2: Conceptos basicos de programacion

Tema 1

Introducción:El Hardware

Lenguajes y Programas

Ingeniería delSoftware

Descripción delenguajes de programación

Introducción a la ProgramaciónIngeniería Técnica en Informática de Gestión 1.2

Qué es la Informática

Informática (Del fr. informatique). 1. f. Conjunto de conocimientos científicos y técnicas que hacen posible el tratamiento automático de la información por medio de ordenadores.

(Extraído del Diccionario de la RAE, 2001)

Un poco de historia... Ábaco – 2000 a.c. El sumador de Pascal – mediados s. XVII La calculadora de G.W. von Leibniz – finales s. XVII La máquina de diferencias de Babbage – s. XIX

Concepto de programa externo 1945: Comienzo de la era de la Informática

Modelo J. von Neumann: estructura de la computadora tal y como la conocemos hoy; concepto de programa interno

Coincide con el desarrollo de la electrónica

Page 3: Conceptos basicos de programacion

Tema 1

Introducción:El Hardware

Lenguajes y Programas

Ingeniería delSoftware

Descripción delenguajes de programación

Introducción a la ProgramaciónIngeniería Técnica en Informática de Gestión 1.3

Qué es la Informática

Más sobre la Historia de la Informática en el MIGS

http://www.fdi.ucm.es/migs

Page 4: Conceptos basicos de programacion

Tema 1

Introducción:El Hardware

Lenguajes y Programas

Ingeniería delSoftware

Descripción delenguajes de programación

Introducción a la ProgramaciónIngeniería Técnica en Informática de Gestión 1.4

Computadora electrónica 1. f. Máquina electrónica digital, dotada de una memoria de gran capacidad y de métodos de tratamiento de la información, capaz de resolver problemas matemáticos y lógicos mediante la utilización automática de programas informáticos.

(Extraído del Diccionario de la RAE, 2001)

Fundamentos de computadores Introducción a la programación

Qué es una computadora

Hardware (Voz ingl.).1. m. Inform. Conjunto de los componentes que integran la parte material de una computadora.

Software (Voz ingl.).1. m. Conjunto de programas, instrucciones y reglas informáticas para ejecutar ciertas tareas en una computadora.

Page 5: Conceptos basicos de programacion

Tema 1

Introducción:El Hardware

Lenguajes y Programas

Ingeniería delSoftware

Descripción delenguajes de programación

Introducción a la ProgramaciónIngeniería Técnica en Informática de Gestión 1.5

Un poco de hardware

Memoria

Dispositivo de salida

Dispositivos de entrada

Memoria secundaria

Ratón

Teclado

Unidad Central

de Procesamiento

Carcasa (tipo torre)

Unidadde disquetes

Unidadde CD-ROM

Memoria principal

y Unidad de Disco Duro

(ambos dentro)

Monitor

Page 6: Conceptos basicos de programacion

Tema 1

Introducción:El Hardware

Lenguajes y Programas

Ingeniería delSoftware

Descripción delenguajes de programación

Introducción a la ProgramaciónIngeniería Técnica en Informática de Gestión 1.6

Un poco de hardware: el Modelo Von Neumann

Unidad de Control Unidad Aritmético-Lógica

Unidad Central de Procesamiento (CPU)

Unidad de Memoria

Ideas importantes: Un programa es una cadena secuencial de instrucciones

Las instrucciones ordenan al ordenador realizar una operación sobre unos datos

Las instrucciones se ejecutan una tras otra, aunque puede haber bifurcaciones condicionales (usar un dato para decidir entre dos instrucciones diferentes por donde continuar)

El computador procesa tanto instrucciones como sus datos Las instrucciones y los datos se almacenan juntos en memoria

Page 7: Conceptos basicos de programacion

Tema 1

Introducción:El Hardware

Lenguajes y Programas

Ingeniería delSoftware

Descripción delenguajes de programación

Introducción a la ProgramaciónIngeniería Técnica en Informática de Gestión 1.7

Un poco de hardware: la Unidad de Memoria (UM)

Almacena las instrucciones y los datos del programas

El almacén está formado por celdas Identificadas unívocamente por su

dirección Siempre contienen información Se puede leer o escribir información en

ellas

Selector

...

UM

Registro de Dirección (RD)

Celdas

Registro de Intercambiode Datos (RID)

Page 8: Conceptos basicos de programacion

Tema 1

Introducción:El Hardware

Lenguajes y Programas

Ingeniería delSoftware

Descripción delenguajes de programación

Introducción a la ProgramaciónIngeniería Técnica en Informática de Gestión 1.8

Un poco de hardware: la Unidad Aritmético-Lógica (UAL)

Realiza las operaciones elementales aritméticas (suma, resta, multiplicación, división, etc.) y lógicas (comparaciones de igualdad, mayor, menor, etc.)

Banco de Registros Temporales (BRT)

Operador

UALAcumulador

Page 9: Conceptos basicos de programacion

Tema 1

Introducción:El Hardware

Lenguajes y Programas

Ingeniería delSoftware

Descripción delenguajes de programación

Introducción a la ProgramaciónIngeniería Técnica en Informática de Gestión 1.9

Un poco de hardware: la Unidad de Control (UC)

Obtiene y almacena los datos en la UM, obtiene e identifica las instrucciones del programa de la UM y manda ejecutar las operaciones a la UAL

Registro de Instrucción (RI)

Decodificador

UC

Secuenciador

Contador de Programa (CP)

Operación Direcciones de 3 operandos

Page 10: Conceptos basicos de programacion

Tema 1

Introducción:El Hardware

Lenguajes y Programas

Ingeniería delSoftware

Descripción delenguajes de programación

Introducción a la ProgramaciónIngeniería Técnica en Informática de Gestión

Ejecución de una instrucción

Los pasos del ciclo de instrucción según Von Neumann

LEER INSTRUCCIÓN

DECODIFICARINSTRUCCIÓN

CAPTURARDATOS

REALIZAROPERACIÓN

ALMACENARRESULTADOS

CALCULARINSTRUCCIÓN

SIGUIENTE

El CP indica la dirección de la celda donde está la instrucción que se debe copiar al RI

El operando del RI (que puede ser un dato o la dirección de la celda de un dato) se copia en el BRT(Esto se repite para todos los operandos de entrada)

La dirección de celda de la siguiente instrucción se copia al CP

El resultado del Acumulador se copia en la dirección de la celda del resultado, generalmente indicada en el último operando de la instrucción

(Esto se repite para todos los resultados)

Page 11: Conceptos basicos de programacion

1.11

Ejecución de una instrucción (cont.)

Operación: SUMA-CELDAS Operando 1: X Operando 2: Y Operando 3: Z

SUMA-CELDAS suma el dato de la primera dirección al de la segunda y lo guarda en la tercera

Explicación en

PIZARRA

Page 12: Conceptos basicos de programacion

Tema 1

Introducción:El Hardware

Lenguajes y Programas

Ingeniería delSoftware

Descripción delenguajes de programación

Introducción a la ProgramaciónIngeniería Técnica en Informática de Gestión 1.12

La computadora manipula únicamente información digital:

Datos e instrucciones se codifican como dígitos binarios (0’s y 1’s)

¿Por qué no se usa una representación de otro tipo? Problema tecnológico (es más fácil representar ceros y

unos)

¿A qué nos conduce la solución adoptada para evitar el problema tecnológico? La máquina sólo puede trabajar con cadenas de ceros y

unos

¿Qué entiende la computadora?

Page 13: Conceptos basicos de programacion

Tema 1

Introducción:El Hardware

Lenguajes y Programas

Ingeniería delSoftware

Descripción delenguajes de programación

Introducción a la ProgramaciónIngeniería Técnica en Informática de Gestión 1.13

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

Pasos sumar b y c, y guardar el resultado en una dirección de

memoria temporal X sumar d y e, y guardar el resultado en una dirección de

memoria temporal Y dividir el contenido de X por el de Y y guardar el resultado en la

dirección de memoria de a

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

Lenguaje máquina

x y

Page 14: Conceptos basicos de programacion

Tema 1

Introducción:El Hardware

Lenguajes y Programas

Ingeniería delSoftware

Descripción delenguajes de programación

Introducción a la ProgramaciónIngeniería Técnica en Informática de Gestión 1.14

Lenguaje máquina (cont.)

Inconvenientes Grandes posibilidades de error Portabilidad: máquina-dependiente

No se puede llevar el programa a otra máquina porque, entre otras cosas, el repertorio de instrucciones es distinto

Tedioso Nula capacidad de abstracción

Es muy complicado formular una solución a problemas del mundo real con ese lenguaje tan específico

Page 15: Conceptos basicos de programacion

Tema 1

Introducción:El Hardware

Lenguajes y Programas

Ingeniería delSoftware

Descripción delenguajes de programación

Introducción a la ProgramaciónIngeniería Técnica en Informática de Gestión 1.15

Lenguaje ensamblador

Lenguaje simbólico con una mínima capacidad de abstracción Nombres nemotécnicos para los códigos de operación Nombres simbólicos para las direcciones de memoria

Ejemplo de instrucción de código ensamblador

codigoSimbOp direccSimbOp1, direccSimbOp2, direccSimbRes

Códigos simbólicos de las operacionesSUM = La suma DIV = La división

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

SUM B, C, X

SUM D, E, Y

DIV X, Y, A

Page 16: Conceptos basicos de programacion

Tema 1

Introducción:El Hardware

Lenguajes y Programas

Ingeniería delSoftware

Descripción delenguajes de programación

Introducción a la ProgramaciónIngeniería Técnica en Informática de Gestión

Cuestiones ¿Cómo entiende la máquina el lenguaje ensamblador? Si las direcciones de memoria son simbólicas ¿en qué

direcciones de memoria se colocan los datos?

Programa ensamblador Traducción a código binario de códigos simbólicos de

operación Traducción de las direcciones simbólicas a direcciones

reales de memoria

Inconveniente: sigue siendo dependiente de la máquina

1.16

Lenguaje ensamblador (cont.)

Código fuente(lenguaje

ensamblador)

Programa ensamblador

Código objeto(lenguaje máquina)

Page 17: Conceptos basicos de programacion

Tema 1

Introducción:El Hardware

Lenguajes y Programas

Ingeniería delSoftware

Descripción delenguajes de programación

Introducción a la ProgramaciónIngeniería Técnica en Informática de Gestión 1.17

Lenguajes de alto nivel

Lenguaje que permite representar el mecanismo de resolución de los problemas usando instrucciones independientemente de la computadora Cercanía conceptual al programador Pascal, C, Java, etc. son lenguajes de alto nivel

Capacidad de abstracción Abstracción procedimental (poder representar

operaciones más complejas como calcular las raíces de un polinomio)

Abstracción de datos (poder representar información más compleja como el estado de una cuenta bancaria)

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

Analiza el programa fuente y lo ejecuta directamente en la máquina Compilador

Analiza el programa fuente y lo traduce a lenguaje máquina Ej. Turbo Pascal es un compilador de Pascal

Page 18: Conceptos basicos de programacion

Tema 1

Introducción:El Hardware

Lenguajes y Programas

Ingeniería delSoftware

Descripción delenguajes de programación

Introducción a la ProgramaciónIngeniería Técnica en Informática de Gestión 1.18

El sistema operativo

Programa básico encargado de manejar el hardware y facilitar el trabajo a los demás programas (aplicaciones) proporcionándoles un conjunto de servicios genéricos Asignación de tiempos de CPU Control y asignación racional de los recursos de la

computadora Ejecución de programas Controlar la E/S (ej., almacenar/recuperar en/de

memoria permanente) Control de errores y protección (ej., monitorizar la

ejecución de un programa) Interfaz con el usuario ...

¡Sin sistema operativo todo sería mucho más complicado!

Page 19: Conceptos basicos de programacion

Tema 1

Introducción:El Hardware

Lenguajes y Programas

Ingeniería delSoftware

Descripción delenguajes de programación

Introducción a la ProgramaciónIngeniería Técnica en Informática de Gestión 1.19

El sistema operativo (cont.)

¿Quién ejecuta el sistema operativo? Las computadoras suelen estar preparadas para, al

arrancar, ejecutar un pequeño programa que, a su vez, se encarga de ejecutar el sistema operativo

En el caso de los PCs normales, se almacena en memoria un programa denominado BIOS (Basic Input/Output System), capaz de localizar en memoria secundaria el programa “cargador” del sistema operativo

Page 20: Conceptos basicos de programacion

Tema 1

Introducción:El Hardware

Lenguajes y Programas

Ingeniería delSoftware

Descripción delenguajes de programación

Introducción a la ProgramaciónIngeniería Técnica en Informática de Gestión 1.20

Aplicaciones de propósito específico

Programas que permite en uso de la computadora para la realización de trabajos específicos y que se implantan sobre el sistema operativo Procesadores de texto Hojas de cálculo Sistemas de gestión de bases de datos Herramientas de diseño e ingeniería Juegos ...

Page 21: Conceptos basicos de programacion

Tema 1

Introducción:El Hardware

Lenguajes y Programas

Ingeniería delSoftware

Descripción delenguajes de programación

Introducción a la ProgramaciónIngeniería Técnica en Informática de Gestión 1.21

La programación: resolución de problemas

Un programa es una secuencia de instrucciones con un propósito concreto que un ordenador puede interpretar y ejecutar

Programar es resolver problemas Conjunto de actividades implicadas en la descripción, el

desarrollo y la implementación eficaz de soluciones algorítmicas a problemas bien especificados

Algoritmo 1. m. Conjunto ordenado y finito de operaciones que permite hallar la solución de un problema.

(Extraído del Diccionario de la RAE, 22ª edición)

Un algoritmo es, por tanto, una sistemática que transforma un estado inicial en un estado final La entrada del programa: Precondiciones

Descripción del estado inicial (datos y situación de partida) La salida del programa: Postcondiciones

Descripción del estado final (datos y situación deseada al acabar)

Page 22: Conceptos basicos de programacion

Tema 1

Introducción:El Hardware

Lenguajes y Programas

Ingeniería delSoftware

Descripción delenguajes de programación

Introducción a la ProgramaciónIngeniería Técnica en Informática de Gestión 1.22

La programación: resolución de problemas (cont.)

Utilizamos los lenguajes de programación para expresar los algoritmos de forma que el ordenador los entienda De igual forma, que utilizamos la lengua castellana para

expresar nuestras ideas a otras personas

Recuerda: Programar BIEN no es sólo conocer la sintaxis de uno o varios lenguajes de programación

Page 23: Conceptos basicos de programacion

Tema 1

Introducción:El Hardware

Lenguajes y Programas

Ingeniería delSoftware

Descripción delenguajes de programación

Introducción a la ProgramaciónIngeniería Técnica en Informática de Gestión 1.23

El problema del montón de fichas

Supongamos que tenemos un montón 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.

Creamos una nueva ficha y deseamos incorporarla al montón existente.

¿Cómo dividimos el montón original en dos montones, tales que todas las fichas del primer montón precedan a la nueva en la ordenación y todas las del segundo no le precedan, pudiendo estar alguno de los montones finales vacío?

¿Cuáles son las precondiciones? ¿Cuáles son las postcondiciones? ¿Qué algoritmos se te ocurren? ¿Qué lenguaje utilizamos para describir todo lo anterior?

La programación: resolución de problemas (cont.)

Explicación en

PIZARRA

Page 24: Conceptos basicos de programacion

Tema 1

Introducción:El Hardware

Lenguajes y Programas

Ingeniería delSoftware

Descripción delenguajes de programación

Introducción a la ProgramaciónIngeniería Técnica en Informática de Gestión 1.24

Análisis

Diseño

Implementación

Pruebas

Mantenimiento

El Ciclo de Vida del Software

Todas las tareas a realizar desde que se concibe un programa hasta que se deja de utilizar (no sólo “hasta que se codifica” ni “hasta que se instala”) Existen distintos modelos del ciclo de vida software, aunque

nosotros estudiaremos el más simple: Modelo en Cascada

Page 25: Conceptos basicos de programacion

1.25

Análisis

Diseño

Implementación

Pruebas

Mantenimiento

“Quiero 3 habitaciones, 2 baños, garaje...”

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

Se construye la casa

Se comprueba la solidez de la estructura, el funcionamiento de las instalaciones, el acabado...

Algunas reparaciones, se cierra la terraza, se instala aire

acondicionado...

Casa

¿Qué tiene que hacer exactamente nuestro

programa?

¿Cómo vamos a organizar el programa? ¿Qué partes tendrá y cómo

funcionará?

Se construye el software

Ponemos a prueba nuestro programa, incluso en

situaciones límite

Pequeñas modificaciones o correcciones (parches), actualizaciones, etc...

Software

¿Qué significa todo esto?

Page 26: Conceptos basicos de programacion

Tema 1

Introducción:El Hardware

Lenguajes y Programas

Ingeniería delSoftware

Descripción delenguajes de programación

Introducción a la ProgramaciónIngeniería Técnica en Informática de Gestión 1.26

Fases en el desarrollo de una aplicación (cont.)

Análisis Actividad en la que se analizan y clarifican los diferentes

aspectos del problema que debe ser resuelto por la aplicación, con el fin de establecer claramente qué debe ser construido

El resultado es, normalmente, un documento de requisitos software que especifica claramente las funcionalidades de la aplicación

Funcionalidad = lo que tiene que hacerse (sin saber todavía cómo)

Page 27: Conceptos basicos de programacion

Tema 1

Introducción:El Hardware

Lenguajes y Programas

Ingeniería delSoftware

Descripción delenguajes de programación

Introducción a la ProgramaciónIngeniería Técnica en Informática de Gestión 1.27

Fases en el desarrollo de una aplicación (cont.)

Diseño Actividad en la que se decide la organización y la

estructura de una aplicación que satisfaga los diferentes requisitos establecidos en la fase de análisis

El resultado es uno (o varios) documentos de diseño que especifican claramente cómo construir la aplicación

Mientras que el análisis se ocupa de qué hay que hacer, el diseño se ocupa de cómo hacerlo

Hay varias técnicas de diseño, nosotros estudiaremos una de las más básicas: el diseño funcional

Page 28: Conceptos basicos de programacion

Tema 1

Introducción:El Hardware

Lenguajes y Programas

Ingeniería delSoftware

Descripción delenguajes de programación

Introducción a la ProgramaciónIngeniería Técnica en Informática de Gestión 1.28

Fases en el desarrollo de una aplicación (cont.)

Implementación Actividad en la que se construye (codifica) la aplicación

utilizando un lenguaje de programación concreto, y siguiendo, las directrices marcadas por los documentos de diseño

Si las actividades anteriores han sido realizadas correctamente, la fase de implementación debería ser bastante trivial

La implementación se encarga de concretar el diseño teniendo en cuenta un lenguaje y herramienta de desarrollo concreta

Page 29: Conceptos basicos de programacion

Tema 1

Introducción:El Hardware

Lenguajes y Programas

Ingeniería delSoftware

Descripción delenguajes de programación

Introducción a la ProgramaciónIngeniería Técnica en Informática de Gestión 1.29

Fases en el desarrollo de una aplicación (cont.)

Pruebas Actividad en la que se asegura que la aplicación

construida satisface los requisitos del usuario Se debe invertir mucho tiempo en hacer pruebas

(¡mucho más que en su implementación!) Dos pasos diferenciados

Verificación: ¿Se ajusta la aplicación construida a los requisitos establecidos?

Validación: ¿Resuelve la aplicación el problema que realmente tenía el usuario?

Page 30: Conceptos basicos de programacion

Tema 1

Introducción:El Hardware

Lenguajes y Programas

Ingeniería delSoftware

Descripción delenguajes de programación

Introducción a la ProgramaciónIngeniería Técnica en Informática de Gestión 1.30

Fases en el desarrollo de una aplicación (cont.)

Mantenimiento Actividad en la que la aplicación se modifica para

satisfacer cambios o ampliaciones en los requisitos del usuario, corregir errores, etc.

¡Es la actividad más costosa en el desarrollo de software!(Tened en cuenta que hay programas que están muchos años en funcionamiento y lo usan miles de personas)

Estos costes pueden aliviarse si se hacen bien todo lo anterior

*Otras actividades Confección de los manuales de usuario Planificación y control del proyecto Gestión de versiones ...

Page 31: Conceptos basicos de programacion

Tema 1

Introducción:El Hardware

Lenguajes y Programas

Ingeniería delSoftware

Descripción delenguajes de programación

Introducción a la ProgramaciónIngeniería Técnica en Informática de Gestión 1.31

Fases en el desarrollo de una aplicación (cont.)

Este Modelo en Cascada, tan lineal, no suele aplicarse “tal cual” en la vida real Conviene hacer pruebas desde las primeras fases de

desarrollo, por ejemplo para detectar y corregir errores prematuros, etc.

Los programas suelen construirse en varias iteraciones (sacando primero una versión básica, luego otra con más funcionalidad añadida, etc.)

Cada iteración es un ciclo completo (análisis, diseño, pruebas, etc.), siendo el diseño más importante en las primeras y la implementación más importante en las últimas

Page 32: Conceptos basicos de programacion

Tema 1

Introducción:El Hardware

Lenguajes y Programas

Ingeniería delSoftware

Descripción delenguajes de programación

Introducción a la ProgramaciónIngeniería Técnica en Informática de Gestión 1.32

Lenguajes de programación

Un lenguaje de programación puede describirse a tres niveles distintos: Nivel sintáctico

Descripción de la forma (= sintaxis) de las instrucciones

Suelen utilizarse lenguajes artificiales con mucho “formalismo” (= rigor matemático y lógico)

Nivel semánticoDescripción del significado (= semántica) de las

instruccionesPuede utilizarse lenguaje natural (español, inglés,

etc.) o intentar expresarse de manera más formal Nivel pragmático

Descripción de cómo se utilizan las instruccionesSuelen utilizarse tutoriales y ejemplos de

programas…

Page 33: Conceptos basicos de programacion

Tema 1

Introducción:El Hardware

Lenguajes y Programas

Ingeniería delSoftware

Descripción delenguajes de programación

Introducción a la ProgramaciónIngeniería Técnica en Informática de Gestión 1.33

Sintaxis de los lenguajes de programación

Conjunto de reglas que especifican y permiten verificar la corrección formal de las sentencias de un lenguaje

Formalismos utilizados: Notación BNF (Backus-Naur Form) Notación EBNF (Extended Backus-Naur Form) Diagramas sintácticos

Todos ellos pueden expresar la forma de cualquier lenguaje de programación, sólo hay que elegir el que nos sea cómodo Estos formalismos se usan para escribir documentación

técnica que leen quienes quieren conocer con exactitud un lenguaje

Page 34: Conceptos basicos de programacion

Tema 1

Introducción:El Hardware

Lenguajes y Programas

Ingeniería delSoftware

Descripción delenguajes de programación

Introducción a la ProgramaciónIngeniería Técnica en Informática de Gestión 1.34

Notación BNF

TERMINAL Símbolo (ej. una palabra) del lenguaje a definir

(se escribe en letras mayúsculas)

<no terminal> Símbolo que se define en términos de otros símbolos (tanto terminales como no

terminales)(se escribe en letras minúsculas y

entre <>)

Regla de producción Descripción de un símbolo no terminal como

equivalente a 1) una combinación de terminales y no terminales, o 2) al vacío (Ø)

(Un mismo no terminal puede tener varias reglas de producción)

Metasímbolo Símbolo propio de la notación BNF, está reservado y no puede utilizarse en ningún otro símbolo ::= Equivalencia

(lo de la izquierda equivale a lo de la derecha; es una regla de producción)

| Alternativa (lo de la izquierda o lo de la

derecha)

Page 35: Conceptos basicos de programacion

Tema 1

Introducción:El Hardware

Lenguajes y Programas

Ingeniería delSoftware

Descripción delenguajes de programación

Introducción a la ProgramaciónIngeniería Técnica en Informática de Gestión 1.35

Sintaxis de los números enteros positivos en notación BNF<numero entero> ::= <signo opcional> <secuencia dígitos><signo opcional> ::= + | <nada><secuencia dígitos> ::= <dígito> | <dígito> <secuencia dígitos><dígito> ::= 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9<nada> ::=

¿Sintaxis de los números reales en notación BNF?

Notación BNF (cont.)

RecursividadQue un símbolo aparezca dentro de su propia definición

¡OJO! Pero evitando las definiciones circulares

Explicación en

PIZARRA

Page 36: Conceptos basicos de programacion

Tema 1

Introducción:El Hardware

Lenguajes y Programas

Ingeniería delSoftware

Descripción delenguajes de programación

Introducción a la ProgramaciónIngeniería Técnica en Informática de Gestión 1.36

Notación EBNF

Añade metasímbolos nuevos y cambia la forma de presentar las cosas

BNF

TERMINAL

<no terminal>

Metasímbolo ::= Equivalencia | Alternativa

Recursividad permitida

EBNF

“terminal”

No-terminal

Metasímbolo::= Equivalencia| Alternativa(...) Agrupación[...] Aparición opcional{...} Aparición 0, 1 o más veces

Recursividad NO permitida (se suple con {…})

Si algún símbolo del lenguaje coincide con un metasímbolo, el símbolo del lenguaje se pone entre ‘comillas simples’

Page 37: Conceptos basicos de programacion

Tema 1

Introducción:El Hardware

Lenguajes y Programas

Ingeniería delSoftware

Descripción delenguajes de programación

Introducción a la ProgramaciónIngeniería Técnica en Informática de Gestión

Sintaxis de los números enteros positivos en notación EBNF

Numero-entero ::= [Signo] Secuencia-dígitosSigno ::= “+” Secuencia-dígitos ::= Dígito {Dígito}Dígito ::= “0” | “1” | “2” | “3” | “4” | “5” | “6” | “7” | “8” | “9”

¿Sintaxis de los números reales en notación EBNF?

1.37

Notación EBNF (cont.)

Explicación en

PIZARRA

Page 38: Conceptos basicos de programacion

Tema 1

Introducción:El Hardware

Lenguajes y Programas

Ingeniería delSoftware

Descripción delenguajes de programación

Introducción a la ProgramaciónIngeniería Técnica en Informática de Gestión 1.38

Diagramas sintácticos

TERMINAL No Terminal

Alternativa

Aparición 0, 1 o más veces Aparición opcional

*En las reglas de producción el no terminal de la izquierda se deja sin recuadro

Page 39: Conceptos basicos de programacion

Tema 1

Introducción:El Hardware

Lenguajes y Programas

Ingeniería delSoftware

Descripción delenguajes de programación

Introducción a la ProgramaciónIngeniería Técnica en Informática de Gestión 1.39

Diagramas sintácticos (cont.)

Sintaxis de los números enteros positivos en notación de diagramas sintácticos

¿Sintaxis de los números reales en notación de diagramas sintácticos?

+

DígitoDígito

1

0

9

Nº entero positivo

Dígito

Explicación en

PIZARRA

Page 40: Conceptos basicos de programacion

1.40

Críticas, dudas, sugerencias…

Federico Peinadowww.federicopeinado.es