Está en la página 1de 40

Introduccin a la Programacin

Tema 1:
Conceptos bsicos de programacin
Ingeniera Tcnica en Informtica de Gestin
Departamento de Ingeniera del Software e Inteligencia Artificial
Curso 2009-2010
Profesor
Federico Peinado

Elaboracin del material
Mercedes Gmez
Pablo Moreno
Manuel Ortega
Federico Peinado
Tema 1
Introduccin:
El Hardware
Lenguajes y
Programas
Ingeniera del
Software
Descripcin de
lenguajes de
programacin
Introduccin a la Programacin
Ingeniera Tcnica en Informtica de Gestin 1.1
Qu es la Informtica
Informtica (Del fr. informatique). 1. f. Conjunto de
conocimientos cientficos y tcnicas que hacen posible el
tratamiento automtico de la informacin por medio de
ordenadores.
(Extrado 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 mquina de diferencias de Babbage s. XIX
Concepto de programa externo
1945: Comienzo de la era de la Informtica
Modelo J. von Neumann: estructura de la computadora tal y
como la conocemos hoy; concepto de programa interno
Coincide con el desarrollo de la electrnica

Tema 1
Introduccin:
El Hardware
Lenguajes y
Programas
Ingeniera del
Software
Descripcin de
lenguajes de
programacin
Introduccin a la Programacin
Ingeniera Tcnica en Informtica de Gestin 1.2
Qu es la Informtica
Ms sobre la Historia de la
Informtica en el MIGS
http://www.fdi.ucm.es/migs
Tema 1
Introduccin:
El Hardware
Lenguajes y
Programas
Ingeniera del
Software
Descripcin de
lenguajes de
programacin
Introduccin a la Programacin
Ingeniera Tcnica en Informtica de Gestin 1.3
Computadora electrnica 1. f. Mquina electrnica digital,
dotada de una memoria de gran capacidad y de mtodos de
tratamiento de la informacin, capaz de resolver problemas
matemticos y lgicos mediante la utilizacin automtica de
programas informticos.




(Extrado del Diccionario de la RAE, 2001)


Fundamentos de computadores Introduccin a la programacin

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
informticas para ejecutar
ciertas tareas en una
computadora.
Tema 1
Introduccin:
El Hardware
Lenguajes y
Programas
Ingeniera del
Software
Descripcin de
lenguajes de
programacin
Introduccin a la Programacin
Ingeniera Tcnica en Informtica de Gestin 1.4
Un poco de hardware
Memori
a
Dispositivo de salida
Dispositivos de
entrada
Memoria
secundaria
Ratn
Teclado
Unidad Central
de Procesamiento

Carcasa (tipo torre)
Unidad
de disquetes
Unidad
de CD-ROM
Memoria principal
y Unidad de Disco
Duro
(ambos dentro)
Monitor
Tema 1
Introduccin:
El Hardware
Lenguajes y
Programas
Ingeniera del
Software
Descripcin de
lenguajes de
programacin
Introduccin a la Programacin
Ingeniera Tcnica en Informtica de Gestin 1.5
Un poco de hardware: el Modelo Von Neumann
Unidad de Control Unidad Aritmtico-Lgica
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
operacin 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
Tema 1
Introduccin:
El Hardware
Lenguajes y
Programas
Ingeniera del
Software
Descripcin de
lenguajes de
programacin
Introduccin a la Programacin
Ingeniera Tcnica en Informtica de Gestin 1.6
Un poco de hardware: la Unidad de Memoria (UM)
Almacena las instrucciones y los datos del programas
El almacn est formado por celdas
Identificadas unvocamente por su direccin
Siempre contienen informacin
Se puede leer o escribir informacin en ellas
Selector



...

UM
Registro de Direccin (RD)
Celdas
Registro de Intercambio
de Datos (RID)
Tema 1
Introduccin:
El Hardware
Lenguajes y
Programas
Ingeniera del
Software
Descripcin de
lenguajes de
programacin
Introduccin a la Programacin
Ingeniera Tcnica en Informtica de Gestin 1.7
Un poco de hardware: la Unidad Aritmtico-Lgica (UAL)
Realiza las operaciones elementales aritmticas (suma,
resta, multiplicacin, divisin, etc.) y lgicas (comparaciones
de igualdad, mayor, menor, etc.)





Banco de Registros
Temporales (BRT)
Operador
UAL
Acumulador
Tema 1
Introduccin:
El Hardware
Lenguajes y
Programas
Ingeniera del
Software
Descripcin de
lenguajes de
programacin
Introduccin a la Programacin
Ingeniera Tcnica en Informtica de Gestin 1.8
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 Instruccin (RI)
Decodificador
UC
Secuenciador
Contador de Programa (CP)
Operacin Direcciones de 3 operandos
Tema 1
Introduccin:
El Hardware
Lenguajes y
Programas
Ingeniera del
Software
Descripcin de
lenguajes de
programacin
Introduccin a la Programacin
Ingeniera Tcnica en Informtica de Gestin
Ejecucin de una instruccin
Los pasos del ciclo de instruccin segn Von Neumann
LEER
INSTRUCCIN
DECODIFICAR
INSTRUCCIN
CAPTURAR
DATOS
REALIZAR
OPERACIN
ALMACENAR
RESULTADOS
CALCULAR
INSTRUCCIN
SIGUIENTE
El CP indica la direccin de la celda donde est
la instruccin que se debe copiar al RI
El operando del RI (que puede ser un dato o
la direccin de la celda de un dato) se copia en el BRT
(Esto se repite para todos los operandos de entrada)
La direccin de celda de la
siguiente instruccin se copia al CP
El resultado del Acumulador se copia en la direccin de la celda
del resultado, generalmente indicada en el ltimo operando de la instruccin
(Esto se repite para todos los resultados)
1.10
Ejecucin de una instruccin (cont.)
Operacin: SUMA-CELDAS Operando 1: X Operando 2: Y Operando 3: Z

SUMA-CELDAS suma el dato de la primera direccin al de la segunda y lo guarda en la tercera
Tema 1
Introduccin:
El Hardware
Lenguajes y
Programas
Ingeniera del
Software
Descripcin de
lenguajes de
programacin
Introduccin a la Programacin
Ingeniera Tcnica en Informtica de Gestin 1.11

La computadora manipula nicamente informacin digital:

Datos e instrucciones se codifican como
dgitos binarios (0s y 1s)


Por qu no se usa una representacin de otro tipo?
Problema tecnolgico (es ms fcil representar ceros y unos)
A qu nos conduce la solucin adoptada para evitar el
problema tecnolgico?
La mquina slo puede trabajar con cadenas de ceros y unos

Qu entiende la computadora?
Tema 1
Introduccin:
El Hardware
Lenguajes y
Programas
Ingeniera del
Software
Descripcin de
lenguajes de
programacin
Introduccin a la Programacin
Ingeniera Tcnica en Informtica de Gestin 1.12
a = (b + c)/(d + e)
Pasos
sumar b y c, y guardar el resultado en una direccin de memoria
temporal X
sumar d y e, y guardar el resultado en una direccin de memoria
temporal Y
dividir el contenido de X por el de Y y guardar el resultado en la
direccin de memoria de a
Ejemplo de cdigo mquina
codigoOp direccOp1 direccOp2 direccRes


0000 00001000 00001100 00001110
0000 00011000 00011100 00011110
0101 00011110 00001110 00000100

Cdigo de la divisin
Direcc. Temporal X
Direcc. Temporal Y
Cdigo de la suma
Lenguaje mquina
x y
Tema 1
Introduccin:
El Hardware
Lenguajes y
Programas
Ingeniera del
Software
Descripcin de
lenguajes de
programacin
Introduccin a la Programacin
Ingeniera Tcnica en Informtica de Gestin 1.13
Lenguaje mquina (cont.)
Inconvenientes
Grandes posibilidades de error
Portabilidad: mquina-dependiente
No se puede llevar el programa a otra mquina porque,
entre otras cosas, el repertorio de instrucciones es distinto
Tedioso
Nula capacidad de abstraccin
Es muy complicado formular una solucin a problemas del
mundo real con ese lenguaje tan especfico

Tema 1
Introduccin:
El Hardware
Lenguajes y
Programas
Ingeniera del
Software
Descripcin de
lenguajes de
programacin
Introduccin a la Programacin
Ingeniera Tcnica en Informtica de Gestin 1.14
Lenguaje ensamblador
Lenguaje simblico con una mnima capacidad de abstraccin
Nombres nemotcnicos para los cdigos de operacin
Nombres simblicos para las direcciones de memoria

Ejemplo de instruccin de cdigo ensamblador

codigoSimbOp direccSimbOp1, direccSimbOp2, direccSimbRes

Cdigos simblicos de las operaciones
SUM = La suma
DIV = La divisin

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

SUM B, C, X
SUM D, E, Y
DIV X, Y, A

Tema 1
Introduccin:
El Hardware
Lenguajes y
Programas
Ingeniera del
Software
Descripcin de
lenguajes de
programacin
Introduccin a la Programacin
Ingeniera Tcnica en Informtica de Gestin
Cuestiones
Cmo entiende la mquina el lenguaje ensamblador?
Si las direcciones de memoria son simblicas en qu
direcciones de memoria se colocan los datos?



Programa ensamblador
Traduccin a cdigo binario de cdigos simblicos de operacin
Traduccin de las direcciones simblicas a direcciones reales de
memoria
Inconveniente: sigue siendo dependiente de la mquina

1.15
Lenguaje ensamblador (cont.)
Cdigo fuente
(lenguaje ensamblador)
Programa ensamblador
Cdigo objeto
(lenguaje mquina)
Tema 1
Introduccin:
El Hardware
Lenguajes y
Programas
Ingeniera del
Software
Descripcin de
lenguajes de
programacin
Introduccin a la Programacin
Ingeniera Tcnica en Informtica de Gestin 1.16
Lenguajes de alto nivel
Lenguaje que permite representar el mecanismo de
resolucin de los problemas usando instrucciones
independientemente de la computadora
Cercana conceptual al programador
Pascal, C, Java, etc. son lenguajes de alto nivel
Capacidad de abstraccin
Abstraccin procedimental (poder representar operaciones ms
complejas como calcular las races de un polinomio)
Abstraccin de datos (poder representar informacin ms
compleja como el estado de una cuenta bancaria)

Cmo conseguir que la computadora entienda los
programas escritos en lenguajes de alto nivel?
Intrprete
Analiza el programa fuente y lo ejecuta directamente en la mquina
Compilador
Analiza el programa fuente y lo traduce a lenguaje mquina
Ej. Turbo Pascal es un compilador de Pascal
Tema 1
Introduccin:
El Hardware
Lenguajes y
Programas
Ingeniera del
Software
Descripcin de
lenguajes de
programacin
Introduccin a la Programacin
Ingeniera Tcnica en Informtica de Gestin 1.17
El sistema operativo
Programa bsico encargado de manejar el hardware y
facilitar el trabajo a los dems programas (aplicaciones)
proporcionndoles un conjunto de servicios genricos
Asignacin de tiempos de CPU
Control y asignacin racional de los recursos de la computadora
Ejecucin de programas
Controlar la E/S (ej., almacenar/recuperar en/de memoria
permanente)
Control de errores y proteccin (ej., monitorizar la ejecucin de
un programa)
Interfaz con el usuario
...

Sin sistema operativo todo sera mucho ms complicado!
Tema 1
Introduccin:
El Hardware
Lenguajes y
Programas
Ingeniera del
Software
Descripcin de
lenguajes de
programacin
Introduccin a la Programacin
Ingeniera Tcnica en Informtica de Gestin 1.18
El sistema operativo (cont.)
Quin ejecuta el sistema operativo?
Las computadoras suelen estar preparadas para, al arrancar,
ejecutar un pequeo 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

Tema 1
Introduccin:
El Hardware
Lenguajes y
Programas
Ingeniera del
Software
Descripcin de
lenguajes de
programacin
Introduccin a la Programacin
Ingeniera Tcnica en Informtica de Gestin 1.19
Aplicaciones de propsito especfico
Programas que permite en uso de la computadora para la
realizacin de trabajos especficos y que se implantan sobre
el sistema operativo
Procesadores de texto
Hojas de clculo
Sistemas de gestin de bases de datos
Herramientas de diseo e ingeniera
Juegos
...

Tema 1
Introduccin:
El Hardware
Lenguajes y
Programas
Ingeniera del
Software
Descripcin de
lenguajes de
programacin
Introduccin a la Programacin
Ingeniera Tcnica en Informtica de Gestin 1.20
La programacin: resolucin de problemas
Un programa es una secuencia de instrucciones con un propsito
concreto que un ordenador puede interpretar y ejecutar
Programar es resolver problemas
Conjunto de actividades implicadas en la descripcin, el desarrollo y la
implementacin eficaz de soluciones algortmicas a problemas bien
especificados

Algoritmo 1. m. Conjunto ordenado y finito de operaciones que permite
hallar la solucin de un problema.
(Extrado del Diccionario de la RAE, 22 edicin)

Un algoritmo es, por tanto, una sistemtica que transforma un
estado inicial en un estado final
La entrada del programa: Precondiciones
Descripcin del estado inicial (datos y situacin de partida)
La salida del programa: Postcondiciones
Descripcin del estado final (datos y situacin deseada al acabar)
Tema 1
Introduccin:
El Hardware
Lenguajes y
Programas
Ingeniera del
Software
Descripcin de
lenguajes de
programacin
Introduccin a la Programacin
Ingeniera Tcnica en Informtica de Gestin 1.21
La programacin: resolucin de problemas (cont.)
Utilizamos los lenguajes de programacin 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 slo conocer la
sintaxis de uno o varios lenguajes de programacin

Tema 1
Introduccin:
El Hardware
Lenguajes y
Programas
Ingeniera del
Software
Descripcin de
lenguajes de
programacin
Introduccin a la Programacin
Ingeniera Tcnica en Informtica de Gestin 1.22
El problema del montn de fichas
Supongamos que tenemos un montn de fichas, cada una de las cuales tiene
escrito el nombre de una persona junto con otros datos personales (fecha de
nacimiento, direccin, nmero de telfono). Las fichas estn ordenadas
alfabticamente por el nombre.
Creamos una nueva ficha y deseamos incorporarla al montn existente.
Cmo dividimos el montn original en dos montones, tales que todas las
fichas del primer montn precedan a la nueva en la ordenacin y todas las
del segundo no le precedan, pudiendo estar alguno de los montones finales
vaco?

Cules son las precondiciones?
Cules son las postcondiciones?
Qu algoritmos se te ocurren?
Qu lenguaje utilizamos para describir todo lo anterior?

La programacin: resolucin de problemas (cont.)
Tema 1
Introduccin:
El Hardware
Lenguajes y
Programas
Ingeniera del
Software
Descripcin de
lenguajes de
programacin
Introduccin a la Programacin
Ingeniera Tcnica en Informtica de Gestin 1.23
Anlisis
Diseo
Implementacin
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 slo hasta que se
codifica ni hasta que se instala)
Existen distintos modelos del ciclo de vida software, aunque
nosotros estudiaremos el ms simple: Modelo en Cascada

1.24
Anlisis
Diseo
Implementacin
Pruebas
Mantenimiento
Quiero 3 habitaciones,
2 baos, garaje...
Planos, diseo circuito
elctrico 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?
Cmo vamos a organizar
el programa? Qu partes
tendr y cmo funcionar?
Se construye el software
Ponemos a prueba nuestro
programa, incluso en
situaciones lmite
Pequeas modificaciones o
correcciones (parches),
actualizaciones, etc...
Software
Qu significa todo esto?
Tema 1
Introduccin:
El Hardware
Lenguajes y
Programas
Ingeniera del
Software
Descripcin de
lenguajes de
programacin
Introduccin a la Programacin
Ingeniera Tcnica en Informtica de Gestin 1.25
Fases en el desarrollo de una aplicacin (cont.)
Anlisis
Actividad en la que se analizan y clarifican los diferentes
aspectos del problema que debe ser resuelto por la aplicacin,
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
aplicacin
Funcionalidad = lo que tiene que hacerse (sin saber
todava cmo)
Tema 1
Introduccin:
El Hardware
Lenguajes y
Programas
Ingeniera del
Software
Descripcin de
lenguajes de
programacin
Introduccin a la Programacin
Ingeniera Tcnica en Informtica de Gestin 1.26
Fases en el desarrollo de una aplicacin (cont.)
Diseo
Actividad en la que se decide la organizacin y la estructura de
una aplicacin que satisfaga los diferentes requisitos
establecidos en la fase de anlisis
El resultado es uno (o varios) documentos de diseo que
especifican claramente cmo construir la aplicacin
Mientras que el anlisis se ocupa de qu hay que hacer, el
diseo se ocupa de cmo hacerlo
Hay varias tcnicas de diseo, nosotros estudiaremos una de las
ms bsicas: el diseo funcional

Tema 1
Introduccin:
El Hardware
Lenguajes y
Programas
Ingeniera del
Software
Descripcin de
lenguajes de
programacin
Introduccin a la Programacin
Ingeniera Tcnica en Informtica de Gestin 1.27
Fases en el desarrollo de una aplicacin (cont.)
Implementacin
Actividad en la que se construye (codifica) la aplicacin
utilizando un lenguaje de programacin concreto, y siguiendo,
las directrices marcadas por los documentos de diseo
Si las actividades anteriores han sido realizadas correctamente,
la fase de implementacin debera ser bastante trivial
La implementacin se encarga de concretar el diseo teniendo
en cuenta un lenguaje y herramienta de desarrollo concreta
Tema 1
Introduccin:
El Hardware
Lenguajes y
Programas
Ingeniera del
Software
Descripcin de
lenguajes de
programacin
Introduccin a la Programacin
Ingeniera Tcnica en Informtica de Gestin 1.28
Fases en el desarrollo de una aplicacin (cont.)
Pruebas
Actividad en la que se asegura que la aplicacin construida
satisface los requisitos del usuario
Se debe invertir mucho tiempo en hacer pruebas (mucho ms
que en su implementacin!)
Dos pasos diferenciados
Verificacin: Se ajusta la aplicacin construida a los
requisitos establecidos?
Validacin: Resuelve la aplicacin el problema que
realmente tena el usuario?

Tema 1
Introduccin:
El Hardware
Lenguajes y
Programas
Ingeniera del
Software
Descripcin de
lenguajes de
programacin
Introduccin a la Programacin
Ingeniera Tcnica en Informtica de Gestin 1.29
Fases en el desarrollo de una aplicacin (cont.)
Mantenimiento
Actividad en la que la aplicacin se modifica para satisfacer
cambios o ampliaciones en los requisitos del usuario, corregir
errores, etc.
Es la actividad ms costosa en el desarrollo de software!
(Tened en cuenta que hay programas que estn muchos aos
en funcionamiento y lo usan miles de personas)
Estos costes pueden aliviarse si se hacen bien todo lo anterior

*Otras actividades
Confeccin de los manuales de usuario
Planificacin y control del proyecto
Gestin de versiones
...

Tema 1
Introduccin:
El Hardware
Lenguajes y
Programas
Ingeniera del
Software
Descripcin de
lenguajes de
programacin
Introduccin a la Programacin
Ingeniera Tcnica en Informtica de Gestin 1.30
Fases en el desarrollo de una aplicacin (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 versin bsica, luego otra con ms
funcionalidad aadida, etc.)
Cada iteracin es un ciclo completo (anlisis, diseo,
pruebas, etc.), siendo el diseo ms importante en las
primeras y la implementacin ms importante en las ltimas
Tema 1
Introduccin:
El Hardware
Lenguajes y
Programas
Ingeniera del
Software
Descripcin de
lenguajes de
programacin
Introduccin a la Programacin
Ingeniera Tcnica en Informtica de Gestin 1.31
Lenguajes de programacin
Un lenguaje de programacin puede describirse a tres niveles
distintos:
Nivel sintctico
Descripcin de la forma (= sintaxis) de las instrucciones
Suelen utilizarse lenguajes artificiales con mucho
formalismo (= rigor matemtico y lgico)
Nivel semntico
Descripcin del significado (= semntica) de las
instrucciones
Puede utilizarse lenguaje natural (espaol, ingls, etc.) o
intentar expresarse de manera ms formal
Nivel pragmtico
Descripcin de cmo se utilizan las instrucciones
Suelen utilizarse tutoriales y ejemplos de programas

Tema 1
Introduccin:
El Hardware
Lenguajes y
Programas
Ingeniera del
Software
Descripcin de
lenguajes de
programacin
Introduccin a la Programacin
Ingeniera Tcnica en Informtica de Gestin 1.32
Sintaxis de los lenguajes de programacin
Conjunto de reglas que especifican y permiten verificar la
correccin formal de las sentencias de un lenguaje

Formalismos utilizados:
Notacin BNF (Backus-Naur Form)
Notacin EBNF (Extended Backus-Naur Form)
Diagramas sintcticos
Todos ellos pueden expresar la forma de cualquier lenguaje
de programacin, slo hay que elegir el que nos sea cmodo
Estos formalismos se usan para escribir documentacin tcnica
que leen quienes quieren conocer con exactitud un lenguaje

Tema 1
Introduccin:
El Hardware
Lenguajes y
Programas
Ingeniera del
Software
Descripcin de
lenguajes de
programacin
Introduccin a la Programacin
Ingeniera Tcnica en Informtica de Gestin 1.33
Notacin BNF
TERMINAL Smbolo (ej. una palabra) del lenguaje a definir
(se escribe en letras maysculas)

<no terminal> Smbolo que se define en trminos de otros
smbolos (tanto terminales como no terminales)
(se escribe en letras minsculas y entre <>)

Regla de produccin Descripcin de un smbolo no terminal como
equivalente a 1) una combinacin de terminales
y no terminales, o 2) al vaco ()
(Un mismo no terminal puede tener varias reglas de produccin)

Metasmbolo Smbolo propio de la notacin BNF, est reservado
y no puede utilizarse en ningn otro smbolo
::= Equivalencia
(lo de la izquierda equivale a lo de la
derecha; es una regla de produccin)
| Alternativa
(lo de la izquierda o lo de la derecha)


Tema 1
Introduccin:
El Hardware
Lenguajes y
Programas
Ingeniera del
Software
Descripcin de
lenguajes de
programacin
Introduccin a la Programacin
Ingeniera Tcnica en Informtica de Gestin 1.34

Sintaxis de los nmeros enteros positivos en notacin BNF
<numero entero> ::= <signo opcional> <secuencia dgitos>
<signo opcional> ::= + | <nada>
<secuencia dgitos> ::= <dgito> | <dgito> <secuencia dgitos>
<dgito> ::= 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
<nada> ::=




Sintaxis de los nmeros reales en notacin BNF?
Notacin BNF (cont.)
Recursividad

Que un smbolo aparezca dentro de su propia definicin
OJO! Pero evitando las definiciones circulares
Tema 1
Introduccin:
El Hardware
Lenguajes y
Programas
Ingeniera del
Software
Descripcin de
lenguajes de
programacin
Introduccin a la Programacin
Ingeniera Tcnica en Informtica de Gestin 1.35
Notacin EBNF
Aade metasmbolos nuevos y cambia la forma de presentar
las cosas
BNF
TERMINAL
<no terminal>
Metasmbolo
::= Equivalencia
| Alternativa



Recursividad permitida
EBNF
terminal
No-terminal
Metasmbolo
::= Equivalencia
| Alternativa
(...) Agrupacin
[...] Aparicin opcional
{...} Aparicin 0, 1 o ms veces

Recursividad NO permitida (se suple con {})
Si algn smbolo del lenguaje coincide con un
metasmbolo, el smbolo del lenguaje se pone
entre comillas simples
Tema 1
Introduccin:
El Hardware
Lenguajes y
Programas
Ingeniera del
Software
Descripcin de
lenguajes de
programacin
Introduccin a la Programacin
Ingeniera Tcnica en Informtica de Gestin

Sintaxis de los nmeros enteros positivos en notacin EBNF

Numero-entero ::= [Signo] Secuencia-dgitos
Signo ::= +
Secuencia-dgitos ::= Dgito {Dgito}
Dgito ::= 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9


Sintaxis de los nmeros reales en notacin EBNF?
1.36
Notacin EBNF (cont.)
Tema 1
Introduccin:
El Hardware
Lenguajes y
Programas
Ingeniera del
Software
Descripcin de
lenguajes de
programacin
Introduccin a la Programacin
Ingeniera Tcnica en Informtica de Gestin 1.37
Diagramas sintcticos
TERMINAL
No Terminal
Alternativa
Aparicin 0, 1 o ms veces Aparicin opcional
*En las reglas de produccin el no terminal
de la izquierda se deja sin recuadro
Tema 1
Introduccin:
El Hardware
Lenguajes y
Programas
Ingeniera del
Software
Descripcin de
lenguajes de
programacin
Introduccin a la Programacin
Ingeniera Tcnica en Informtica de Gestin 1.38
Diagramas sintcticos (cont.)
Sintaxis de los nmeros enteros positivos en notacin de
diagramas sintcticos






Sintaxis de los nmeros reales en notacin de diagramas
sintcticos?

+
Dgito
Dgito
1
0
9
N entero positivo
Dgito

1.39
Crticas, dudas, sugerencias
Federico Peinado
www.federicopeinado.es

También podría gustarte