Este documento introduce conceptos básicos de programación como el hardware, los lenguajes de programación y el sistema operativo. Explica que el hardware incluye componentes como la unidad central de procesamiento, la memoria y las unidades de entrada y salida, y que los programas se ejecutan mediante instrucciones codificadas en lenguaje máquina. También describe lenguajes de alto nivel que son más fáciles de usar para los programadores y cómo los compiladores los traducen a lenguaje máquina. El sistema operativo maneja el hardware y proporciona servic
Da una introduccion muy general sobre la historia de las computadoras, la division en hardware y software.
También explica la diferencia entre programa compilado e interpretado. Una breve historia sobre la tendencia de los lenguajes de computadora.
Las diferentes conversiones numericas entre diferentes bases como : base diez, base dos, base ocho y hexadecimal.
Da una introduccion muy general sobre la historia de las computadoras, la division en hardware y software.
También explica la diferencia entre programa compilado e interpretado. Una breve historia sobre la tendencia de los lenguajes de computadora.
Las diferentes conversiones numericas entre diferentes bases como : base diez, base dos, base ocho y hexadecimal.
El lenguaje ensamblador, o assembler, es un lenguaje de programación de bajo nivel para los computadores, microprocesadores, microcontroladores y otros circuitos integrados programables. ..
Presentación de la Materia Introducción a la Informática (INF110). Materia multigrupo impartida en las Carreras de Ingenieria Informática, Ingeniería de Sistemas, e Ingeniería en Redes de la Facultad de Ingenieria en Ciencias de la Computación y Telecomunicaciones de la UAGRM de Santa Cruz de la Sierra, Bolivia
El lenguaje ensamblador, o assembler, es un lenguaje de programación de bajo nivel para los computadores, microprocesadores, microcontroladores y otros circuitos integrados programables. ..
Presentación de la Materia Introducción a la Informática (INF110). Materia multigrupo impartida en las Carreras de Ingenieria Informática, Ingeniería de Sistemas, e Ingeniería en Redes de la Facultad de Ingenieria en Ciencias de la Computación y Telecomunicaciones de la UAGRM de Santa Cruz de la Sierra, Bolivia
Da una introduccion muy general sobre la historia de las computadoras, la division en hardware y software.
También explica la diferencia entre programa compilado e interpretado. Una breve historia sobre la tendencia de los lenguajes de computadora.
Las diferentes conversiones numericas entre diferentes bases como : base diez, base dos, base ocho y hexadecimal.
fundamentos de la programación, Introducción a la ciencia de la computación y...19025409
El papel de los programas de computadoras es
esencial; sin una lista de instrucciones a seguir, la computadora
es virtualmente inútil. Los lenguajes de programación
nos permiten escribir esos programas y por consiguiente
comunicarnos con las computadoras.
Las capacidades sociomotrices son las que hacen posible que el individuo se pueda desenvolver socialmente de acuerdo a la actuación motriz propias de cada edad evolutiva del individuo; Martha Castañer las clasifica en: Interacción y comunicación, introyección, emoción y expresión, creatividad e imaginación.
1. 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
2. Tema 1
Introducción:
El Hardware
Lenguajes y
Programas
Ingeniería del
Software
Descripción de
lenguajes de
programación
Introducción a la Programación
Ingenierí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
3. Tema 1
Introducción:
El Hardware
Lenguajes y
Programas
Ingeniería del
Software
Descripción de
lenguajes de
programación
Introducción a la Programación
Ingenierí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
4. Tema 1
Introducción:
El Hardware
Lenguajes y
Programas
Ingeniería del
Software
Descripción de
lenguajes de
programación
Introducción a la Programación
Ingenierí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.
5. Tema 1
Introducción:
El Hardware
Lenguajes y
Programas
Ingeniería del
Software
Descripción de
lenguajes de
programación
Introducción a la Programación
Ingeniería Técnica en Informática de Gestión 1.5
Un poco de hardware
Memori
a
Dispositivo de salida
Dispositivos de
entrada
Memoria
secundaria
Ratón
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
6. Tema 1
Introducción:
El Hardware
Lenguajes y
Programas
Ingeniería del
Software
Descripción de
lenguajes de
programación
Introducción a la Programación
Ingenierí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
7. Tema 1
Introducción:
El Hardware
Lenguajes y
Programas
Ingeniería del
Software
Descripción de
lenguajes de
programación
Introducción a la Programación
Ingenierí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 Intercambio
de Datos (RID)
8. Tema 1
Introducción:
El Hardware
Lenguajes y
Programas
Ingeniería del
Software
Descripción de
lenguajes de
programación
Introducción a la Programación
Ingenierí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
9. Tema 1
Introducción:
El Hardware
Lenguajes y
Programas
Ingeniería del
Software
Descripción de
lenguajes de
programación
Introducción a la Programación
Ingenierí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
10. Tema 1
Introducción:
El Hardware
Lenguajes y
Programas
Ingeniería del
Software
Descripción de
lenguajes de
programación
Introducción a la Programación
Ingenierí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
DECODIFICAR
INSTRUCCIÓN
CAPTURAR
DATOS
REALIZAR
OPERACIÓN
ALMACENAR
RESULTADOS
CALCULAR
INSTRUCCIÓ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)
11. 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
12. Tema 1
Introducción:
El Hardware
Lenguajes y
Programas
Ingeniería del
Software
Descripción de
lenguajes de
programación
Introducción a la Programación
Ingenierí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?
13. Tema 1
Introducción:
El Hardware
Lenguajes y
Programas
Ingeniería del
Software
Descripción de
lenguajes de
programación
Introducción a la Programación
Ingenierí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 00001110
0000 00011000 00011100 00011110
0101 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
14. Tema 1
Introducción:
El Hardware
Lenguajes y
Programas
Ingeniería del
Software
Descripción de
lenguajes de
programación
Introducción a la Programación
Ingenierí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
15. Tema 1
Introducción:
El Hardware
Lenguajes y
Programas
Ingeniería del
Software
Descripción de
lenguajes de
programación
Introducción a la Programación
Ingenierí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 operaciones
SUM = La suma
DIV = La división
a = (b + c)/(d + e)
SUM B, C, X
SUM D, E, Y
DIV X, Y, A
16. Tema 1
Introducción:
El Hardware
Lenguajes y
Programas
Ingeniería del
Software
Descripción de
lenguajes de
programación
Introducción a la Programación
Ingenierí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)
17. Tema 1
Introducción:
El Hardware
Lenguajes y
Programas
Ingeniería del
Software
Descripción de
lenguajes de
programación
Introducción a la Programación
Ingenierí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
18. Tema 1
Introducción:
El Hardware
Lenguajes y
Programas
Ingeniería del
Software
Descripción de
lenguajes de
programación
Introducción a la Programación
Ingenierí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!
19. Tema 1
Introducción:
El Hardware
Lenguajes y
Programas
Ingeniería del
Software
Descripción de
lenguajes de
programación
Introducción a la Programación
Ingenierí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
20. Tema 1
Introducción:
El Hardware
Lenguajes y
Programas
Ingeniería del
Software
Descripción de
lenguajes de
programación
Introducción a la Programación
Ingenierí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
...
21. Tema 1
Introducción:
El Hardware
Lenguajes y
Programas
Ingeniería del
Software
Descripción de
lenguajes de
programación
Introducción a la Programación
Ingenierí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)
22. Tema 1
Introducción:
El Hardware
Lenguajes y
Programas
Ingeniería del
Software
Descripción de
lenguajes de
programación
Introducción a la Programación
Ingenierí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
23. Tema 1
Introducción:
El Hardware
Lenguajes y
Programas
Ingeniería del
Software
Descripción de
lenguajes de
programación
Introducción a la Programación
Ingenierí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.)
24. Tema 1
Introducción:
El Hardware
Lenguajes y
Programas
Ingeniería del
Software
Descripción de
lenguajes de
programación
Introducción a la Programación
Ingenierí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
25. 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?
26. Tema 1
Introducción:
El Hardware
Lenguajes y
Programas
Ingeniería del
Software
Descripción de
lenguajes de
programación
Introducción a la Programación
Ingenierí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)
27. Tema 1
Introducción:
El Hardware
Lenguajes y
Programas
Ingeniería del
Software
Descripción de
lenguajes de
programación
Introducción a la Programación
Ingenierí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
28. Tema 1
Introducción:
El Hardware
Lenguajes y
Programas
Ingeniería del
Software
Descripción de
lenguajes de
programación
Introducción a la Programación
Ingenierí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
29. Tema 1
Introducción:
El Hardware
Lenguajes y
Programas
Ingeniería del
Software
Descripción de
lenguajes de
programación
Introducción a la Programación
Ingenierí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?
30. Tema 1
Introducción:
El Hardware
Lenguajes y
Programas
Ingeniería del
Software
Descripción de
lenguajes de
programación
Introducción a la Programación
Ingenierí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
...
31. Tema 1
Introducción:
El Hardware
Lenguajes y
Programas
Ingeniería del
Software
Descripción de
lenguajes de
programación
Introducción a la Programación
Ingenierí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
32. Tema 1
Introducción:
El Hardware
Lenguajes y
Programas
Ingeniería del
Software
Descripción de
lenguajes de
programación
Introducción a la Programación
Ingenierí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ántico
Descripción del significado (= semántica) de las
instrucciones
Puede 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 instrucciones
Suelen utilizarse tutoriales y ejemplos de programas…
33. Tema 1
Introducción:
El Hardware
Lenguajes y
Programas
Ingeniería del
Software
Descripción de
lenguajes de
programación
Introducción a la Programación
Ingenierí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
34. Tema 1
Introducción:
El Hardware
Lenguajes y
Programas
Ingeniería del
Software
Descripción de
lenguajes de
programación
Introducción a la Programación
Ingenierí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)
35. Tema 1
Introducción:
El Hardware
Lenguajes y
Programas
Ingeniería del
Software
Descripción de
lenguajes de
programación
Introducción a la Programación
Ingenierí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.)
Recursividad
Que un símbolo aparezca dentro de su propia definición
¡OJO! Pero evitando las definiciones circulares
36. Tema 1
Introducción:
El Hardware
Lenguajes y
Programas
Ingeniería del
Software
Descripción de
lenguajes de
programación
Introducción a la Programación
Ingenierí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’
37. Tema 1
Introducción:
El Hardware
Lenguajes y
Programas
Ingeniería del
Software
Descripción de
lenguajes de
programación
Introducción a la Programación
Ingenierí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ígitos
Signo ::= “+”
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.)
38. Tema 1
Introducción:
El Hardware
Lenguajes y
Programas
Ingeniería del
Software
Descripción de
lenguajes de
programación
Introducción a la Programación
Ingenierí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
39. Tema 1
Introducción:
El Hardware
Lenguajes y
Programas
Ingeniería del
Software
Descripción de
lenguajes de
programación
Introducción a la Programación
Ingenierí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ígito
Dígito
1
0
9
Nº entero positivo
Dígito
…