Vous êtes sur la page 1sur 40

Introduccin a la Programacin

Tema 1:
Conceptos bsicos de programacin
Profesor
Federico Peinado
Elaboracin del material
Mercedes Gmez
Pablo Moreno
Manuel Ortega
Federico Peinado
Ingeniera Tcnica en Informtica de Gestin
Departamento de Ingeniera del Software e Inteligencia Artificial
Curso 2009-2010

Qu es la Informtica

Tema 1
Introduccin:
El Hardware
Lenguajes y
Programas

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)

Ingeniera del
Software
Descripcin de
lenguajes de
programacin

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

Introduccin a la Programacin
Ingeniera Tcnica en Informtica de Gestin

1.2

Qu es la Informtica

Tema 1
Introduccin:
El Hardware
Lenguajes y
Programas
Ingeniera del
Software
Descripcin de
lenguajes de
programacin

Ms sobre la Historia de la
Informtica en el MIGS
http://www.fdi.ucm.es/migs
Introduccin a la Programacin
Ingeniera Tcnica en Informtica de Gestin

1.3

Qu es una computadora
Tema 1
Introduccin:
El Hardware
Lenguajes y
Programas
Ingeniera del
Software
Descripcin de
lenguajes de
programacin

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.

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.

(Extrado del Diccionario de la RAE, 2001)

Fundamentos de computadores

Introduccin a la

programacin
Introduccin a la Programacin
Ingeniera Tcnica en Informtica de Gestin

1.4

Un poco de hardware
Tema 1

Dispositivo de salida

Introduccin:
El Hardware
Lenguajes y
Programas
Ingeniera del
Software

Carcasa (tipo torre)

Monitor

Descripcin de
lenguajes de
programacin

Unidad
de CD-ROM

Unidad Central
de Procesamiento

Unidad
de disquetes
Memoria principal
(ambos dentro)
y Unidad de Disco
Duro

Memoria

Teclado
Ratn

Dispositivos de
entrada
Introduccin a la Programacin
Ingeniera Tcnica en Informtica de Gestin

Memoria
secundaria

1.5

Un poco de hardware: el Modelo Von Neumann


Tema 1
Introduccin:
El Hardware
Lenguajes y
Programas

Unidad Central de Procesamiento


(CPU)
Unidad de Control

Unidad AritmticoLgica

Ingeniera del
Software

Unidad de Memoria

Descripcin de
lenguajes de
programacin

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
Introduccin a la Programacin
Ingeniera Tcnica en Informtica de Gestin

1.6

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


Tema 1

Almacena las instrucciones y los datos del programas

Introduccin:
El Hardware

Selector

Lenguajes y
Programas
Ingeniera del
Software

Registro de Direccin (RD)

Descripcin de
lenguajes de
programacin

Registro de Intercambio
de Datos (RID)
UM

...
Celdas

El almacn est formado por celdas


Identificadas unvocamente por su
direccin
Siempre contienen informacin
Se puede leer o escribir informacin en
Introduccin a la Programacin
Ingeniera Tcnica en Informtica de Gestin ellas

1.7

Un poco de hardware: la Unidad Aritmtico-Lgica (UAL)


Tema 1
Introduccin:
El Hardware

Realiza las operaciones elementales aritmticas (suma,


resta, multiplicacin, divisin, etc.) y lgicas (comparaciones
de igualdad, mayor, menor, etc.)

Lenguajes y
Programas
Ingeniera del
Software
Descripcin de
lenguajes de
programacin

Banco de Registros
Temporales (BRT)

Operador

Acumulador

Introduccin a la Programacin
Ingeniera Tcnica en Informtica de Gestin

UAL

1.8

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


Tema 1
Introduccin:
El Hardware

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

Lenguajes y
Programas
Ingeniera del
Software

Secuenciador

Descripcin de
lenguajes de
programacin

Decodificador

Contador de Programa (CP)

Registro de Instruccin
(RI)
Operacin
Direcciones de 3
operandos
UC

Introduccin a la Programacin
Ingeniera Tcnica en Informtica de Gestin

1.9

Ejecucin de una instruccin


Los pasos del ciclo de instruccin segn Von Neumann

Tema 1
Introduccin:
El Hardware
Lenguajes y
Programas

El CP indica la direccin de la celda donde est


la instruccin que se debe copiar al RI

Ingeniera del
Software

LEER
INSTRUCCIN

Descripcin de
lenguajes de
programacin

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)

DECODIFICAR
INSTRUCCIN

CAPTURAR
DATOS

REALIZAR
OPERACIN
CALCULAR
INSTRUCCIN
SIGUIENTE

ALMACENAR
RESULTADOS

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)
Introduccin a la Programacin
Ingeniera Tcnica en Informtica de Gestin

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

1.11

Qu entiende la computadora?
Tema 1
Introduccin:
El Hardware
Lenguajes y
Programas

La computadora manipula nicamente informacin


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

Ingeniera del
Software
Descripcin de
lenguajes de
programacin

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
Introduccin a la Programacin
Ingeniera Tcnica en Informtica de Gestin

1.12

Lenguaje mquina
Tema 1
Introduccin:
El Hardware
Lenguajes y
Programas
Ingeniera del
Software
Descripcin de
lenguajes de
programacin

Pasos

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

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
Cdigo de la suma

Direcc. Temporal X

0000 00001000 00001100 00001110


0000 00011000 00011100 00011110
0101 00011110 00001110 00000100
Direcc. Temporal Y
Cdigo de la divisin
Introduccin a la Programacin
Ingeniera Tcnica en Informtica de Gestin

1.13

Lenguaje mquina (cont.)


Tema 1
Introduccin:
El Hardware
Lenguajes y
Programas
Ingeniera del
Software
Descripcin de
lenguajes de
programacin

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

Introduccin a la Programacin
Ingeniera Tcnica en Informtica de Gestin

1.14

Lenguaje ensamblador
Tema 1
Introduccin:
El Hardware
Lenguajes y
Programas
Ingeniera del
Software
Descripcin de
lenguajes de
programacin

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
Introduccin a la Programacin
Ingeniera Tcnica en Informtica de Gestin

X, Y, A
1.15

Lenguaje ensamblador (cont.)


Tema 1
Introduccin:
El Hardware
Lenguajes y
Programas

Cuestiones
Cmo entiende la mquina el lenguaje ensamblador?
Si las direcciones de memoria son simblicas en qu
direcciones de memoria se colocan los datos?

Ingeniera del
Software
Descripcin de
lenguajes de
programacin

Cdigo fuente
(lenguaje
ensamblador)

Programa
ensamblador

Cdigo objeto
(lenguaje
mquina)

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
Introduccin a la Programacin
Ingeniera Tcnica en Informtica de Gestin

1.16

Lenguajes de alto nivel


Tema 1
Introduccin:
El Hardware
Lenguajes y
Programas
Ingeniera del
Software
Descripcin de
lenguajes de
programacin

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
Introduccin a la Programacin
Ingeniera Tcnica en Informtica de Gestin

1.17

El sistema operativo
Tema 1
Introduccin:
El Hardware
Lenguajes y
Programas
Ingeniera del
Software
Descripcin de
lenguajes de
programacin

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!
Introduccin a la Programacin
Ingeniera Tcnica en Informtica de Gestin

1.18

El sistema operativo (cont.)


Tema 1
Introduccin:
El Hardware
Lenguajes y
Programas
Ingeniera del
Software
Descripcin de
lenguajes de
programacin

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

Introduccin a la Programacin
Ingeniera Tcnica en Informtica de Gestin

1.19

Aplicaciones de propsito especfico


Tema 1
Introduccin:
El Hardware
Lenguajes y
Programas
Ingeniera del
Software
Descripcin de
lenguajes de
programacin

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
...

Introduccin a la Programacin
Ingeniera Tcnica en Informtica de Gestin

1.20

La programacin: resolucin de problemas


Tema 1
Introduccin:
El Hardware
Lenguajes y
Programas
Ingeniera del
Software
Descripcin de
lenguajes de
programacin

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)

Introduccin a la Programacin
Ingeniera Tcnica en Informtica de Gestin

1.21

La programacin: resolucin de problemas (cont.)


Tema 1
Introduccin:
El Hardware
Lenguajes y
Programas
Ingeniera del
Software
Descripcin de
lenguajes de
programacin

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

Introduccin a la Programacin
Ingeniera Tcnica en Informtica de Gestin

1.22

La programacin: resolucin de problemas (cont.)


Tema 1
Introduccin:
El Hardware
Lenguajes y
Programas
Ingeniera del
Software
Descripcin de
lenguajes de
programacin

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?

Introduccin a la Programacin
Ingeniera Tcnica en Informtica de Gestin

1.23

El Ciclo de Vida del Software


Tema 1
Introduccin:
El Hardware
Lenguajes y
Programas
Ingeniera 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

Descripcin de
lenguajes de
programacin

Anlisis
Diseo
Implementacin
Pruebas
Mantenimiento
Introduccin a la Programacin
Ingeniera Tcnica en Informtica de Gestin

1.24

Qu significa todo esto?

Casa
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...

Software
Anlisis
Diseo

Qu tiene que hacer


exactamente nuestro
programa?
Cmo vamos a organizar
el programa? Qu
partes tendr y cmo
funcionar?

Implementacin

Se construye el software

Pruebas

Ponemos a prueba nuestro


programa, incluso en
situaciones lmite

Mantenimiento

Pequeas modificaciones o
correcciones (parches),
actualizaciones, etc...

1.25

Fases en el desarrollo de una aplicacin (cont.)


Tema 1
Introduccin:
El Hardware
Lenguajes y
Programas
Ingeniera del
Software
Descripcin de
lenguajes de
programacin

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)

Introduccin a la Programacin
Ingeniera Tcnica en Informtica de Gestin

1.26

Fases en el desarrollo de una aplicacin (cont.)


Tema 1
Introduccin:
El Hardware
Lenguajes y
Programas
Ingeniera del
Software
Descripcin de
lenguajes de
programacin

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

Introduccin a la Programacin
Ingeniera Tcnica en Informtica de Gestin

1.27

Fases en el desarrollo de una aplicacin (cont.)


Tema 1
Introduccin:
El Hardware
Lenguajes y
Programas
Ingeniera del
Software
Descripcin de
lenguajes de
programacin

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

Introduccin a la Programacin
Ingeniera Tcnica en Informtica de Gestin

1.28

Fases en el desarrollo de una aplicacin (cont.)


Tema 1
Introduccin:
El Hardware
Lenguajes y
Programas
Ingeniera del
Software
Descripcin de
lenguajes de
programacin

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?

Introduccin a la Programacin
Ingeniera Tcnica en Informtica de Gestin

1.29

Fases en el desarrollo de una aplicacin (cont.)


Tema 1
Introduccin:
El Hardware
Lenguajes y
Programas
Ingeniera del
Software
Descripcin de
lenguajes de
programacin

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
...

Introduccin a la Programacin
Ingeniera Tcnica en Informtica de Gestin

1.30

Fases en el desarrollo de una aplicacin (cont.)


Tema 1
Introduccin:
El Hardware
Lenguajes y
Programas
Ingeniera del
Software
Descripcin de
lenguajes de
programacin

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

Introduccin a la Programacin
Ingeniera Tcnica en Informtica de Gestin

1.31

Lenguajes de programacin
Tema 1
Introduccin:
El Hardware
Lenguajes y
Programas
Ingeniera del
Software
Descripcin de
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

Introduccin a la Programacin
Ingeniera Tcnica en Informtica de Gestin

1.32

Sintaxis de los lenguajes de programacin


Tema 1
Introduccin:
El Hardware

Conjunto de reglas que especifican y permiten


verificar la correccin formal de las sentencias de un
lenguaje

Lenguajes y
Programas
Ingeniera del
Software
Descripcin de
lenguajes de
programacin

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

Introduccin a la Programacin
Ingeniera Tcnica en Informtica de Gestin

1.33

Notacin BNF
Tema 1
Introduccin:
El Hardware
Lenguajes y
Programas
Ingeniera del
Software
Descripcin de
lenguajes de
programacin

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)
Introduccin a la Programacin
Ingeniera Tcnica en Informtica de Gestin

1.34

Notacin BNF (cont.)


Tema 1
Introduccin:
El Hardware
Lenguajes y
Programas
Ingeniera del
Software
Descripcin de
lenguajes de
programacin

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> ::=
Recursivida
d
Que un smbolo aparezca dentro de su propia definicin
OJO! Pero evitando las definiciones circulares

Sintaxis de los nmeros reales en notacin BNF?

Introduccin a la Programacin
Ingeniera Tcnica en Informtica de Gestin

1.35

Notacin EBNF
Tema 1
Introduccin:
El Hardware
Lenguajes y
Programas
Ingeniera del
Software
Descripcin de
lenguajes de
programacin

Aade metasmbolos nuevos y cambia la forma de


presentar las cosas
BNF

EBNF

TERMINAL

terminal

<no terminal>

No-terminal

Metasmbolo
::= Equivalencia
|
Alternativa

Metasmbolo
::=
Equivalencia
|
Alternativa
(...)
Agrupacin
[...]
Aparicin opcional
{...}
Aparicin 0, 1 o ms
veces

Recursividad permitida

Introduccin a la Programacin
Ingeniera Tcnica en Informtica de Gestin

Recursividad NO permitida (se suple con


{})
Si algn smbolo del lenguaje coincide con
un metasmbolo, el smbolo del lenguaje
se pone entre comillas simples
1.36

Notacin EBNF (cont.)


Tema 1
Introduccin:
El Hardware

Sintaxis de los nmeros enteros positivos en notacin


EBNF

Lenguajes y
Programas
Ingeniera del
Software
Descripcin de
lenguajes de
programacin

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?

Introduccin a la Programacin
Ingeniera Tcnica en Informtica de Gestin

1.37

Diagramas sintcticos
Tema 1
Introduccin:
El Hardware

TERMINAL

Lenguajes y
Programas

No Terminal
*En las reglas de produccin el no terminal
de la izquierda se deja sin recuadro

Ingeniera del
Software
Descripcin de
lenguajes de
programacin

Alternativa

Aparicin 0, 1 o ms veces

Introduccin a la Programacin
Ingeniera Tcnica en Informtica de Gestin

Aparicin opcional

1.38

Diagramas sintcticos (cont.)


Tema 1
Introduccin:
El Hardware
Lenguajes y
Programas

Sintaxis de los nmeros enteros positivos en notacin de diagramas


sintcticos

N entero positivo
Dgito

Ingeniera del
Software

Descripcin de
lenguajes de
programacin

Dgito

Dgito

1
Sintaxis de los nmeros
reales en notacin de diagramas
sintcticos?

Introduccin a la Programacin
Ingeniera Tcnica en Informtica de Gestin

1.39

Crticas, dudas, sugerencias

Federico Peinado
www.federicopeinado.es

1.40