Curso de Programaci - PowerPoint PPT Presentation

1 / 78
About This Presentation
Title:

Curso de Programaci

Description:

Curso de Programaci n Estructurada Parte I Dr. Ana Lilia Laureano-Cruces e-mail: clc_at_correo.azc.uam.mx Departamento de Sistemas UAM, Unidad Azcapotzalco – PowerPoint PPT presentation

Number of Views:84
Avg rating:3.0/5.0
Slides: 79
Provided by: Pab113
Category:

less

Transcript and Presenter's Notes

Title: Curso de Programaci


1
Curso de Programación Estructurada Parte I
  • Dr. Ana Lilia Laureano-Cruces
  • e-mail clc_at_correo.azc.uam.mx
  • Departamento de Sistemas
  • UAM, Unidad Azcapotzalco

2
Objetivos (I)
Que al final del curso el estudiante sea capaz de
  • Ubicar la importancia de la programación en la
    ingeniería del software
  • Explicar el proceso de construcción de un
    programa
  • Diseñar algoritmos para resolver problemas
    simples
  • Diseñar y construir programas modulares bajo el
    enfoque de la programación estructurada
    utilizando eficazmente y eficientemente un
    entorno de desarrollo convencional

3
Objetivos (II)
  • Explicar y aplicar algoritmos iterativos de
    búsqueda y ordenamiento
  • Conocer el papel de las etapas de análisis,
    diseño y programación en el desarrollo
    estructurado del software

4
Contenido Sintético
Resolución de problemas y los algoritmos
De los algoritmos a los programas
Constructores fundamentales de la programación
estructurada
Fundamentos del diseño modular
Algoritmos iterativos de búsqueda y ordenamiento
Archivos
Introducción a los tipos de datos abstractos
Introducción al análisis y diseño estructurado
del software
5
Resolución de problemas y los algoritmos
  • Concepto de algoritmo
  • Propiedades de un algoritmo
  • El rol del algoritmo en la resolución de problemas

6
Concepto de algoritmo (I)
Un algoritmo es un procedimiento para resolver un
problema. Éste describe un conjunto finito y
ordenado de pasos, reglas o instrucciones para
producir la solución a un problema dado. Un
algoritmo puede ser definido como una secuencia
de instrucciones bien definidas y efectivas, y
finaliza con la producción del resultado esperado
a partir de las entradas dadas.
7
Concepto de algoritmo (II)
8
Un primer ejemplo de algoritmo
El siguiente algoritmo calcula el área y el
perímetro de un rectángulo
Datos de entrada b y a (base y altura) Datos de
salida ar y pe (área y perímetro) Procesos ar
ba, pe 2(b a)
Análisis resumido del problema
  1. Inicio
  2. Leer base y altura (b, a)
  3. ar lt- ba
  4. pe lt- 2(b a)
  5. Escribir Área del rectángulo , ar
  6. Escribir Perímetro del rectángulo , pe
  7. Fin

9
Características de los algoritmos (I)
  • Son precisos. Deben indicar el orden de
    realización de cada paso, así como especificar
    con precisión las entradas y cada paso o etapa
  • Están bien definidos. Etapas bien definidas y
    concretas
  • Exactitud y corrección. Se debe demostrar que el
    algoritmo resuelve el problema para el cual fue
    escrito
  • Son finitos. Deben tener un número finito de
    pasos y deben terminar
  • Deben describir el resultado o efecto final. La
    salida esperada del algoritmo debe estar
    completamente especificada

10
Características de los algoritmos (II)
Partes que debe describir la definición de un
algoritmo
  • Entrada
  • Proceso
  • Salida

11
Características de los algoritmos (III)
  • Son independientes tanto del lenguaje de
    programación en el que se expresan como del
    hardware en que se ejecutan los programas

12
El rol del algoritmo en la resolución de
problemas (I)
La resolución de un problema en computadora
requiere como paso previo el diseño de un
algoritmo que especifique el procedimiento para
resolver el problema. Es decir, antes de
codificar un programa se requiere diseñar el
algoritmo.
13
Ejemplos de algoritmos (I.a.)
Definición del problema Calcular los porcentajes
de hombres y mujeres en un grupo de N deportistas
Análisis del problema Datos a considerar
  • Sexo de la persona (S)
  • Número de personas del sexo masculino (CM)
  • Número de personas del sexo femenino (CF)
  • Total de deportistas (N)
  • Porcentaje de hombres (PM)
  • Porcentaje de mujeres (PF)

14
Ejemplos de algoritmos (I.b.)
Datos de entrada
  • Total de deportistas (N)
  • Sexo de la persona (S)

Continuamos con el análisis del problema
Datos de salida
  • Porcentaje de hombres (PM)
  • Porcentaje de mujeres (PF)

Procesos
  • Contar la cantidad de personas del sexo masculino
    (CM CM 1)
  • Contar la cantidad de personas del sexo femenino
    (CF CF 1)
  • Calcular el porcentaje de hombres en el grupo (PM
    CM/N100)
  • Calcular el porcentaje de mujeres en el grupo (PF
    CF/N100)

15
Ejemplos de algoritmos (I.c.)
Algoritmo
  • Inicio
  • Inicializar en cero el total de personas del sexo
    masculino CM lt- 0
  • Inicializar en cero el total de personas del sexo
    femenino CF lt- 0
  • Inicializar en cero el total de personas
    procesadas TP lt- 0
  • Leer total de deportistas (N)
  • MIENTRAS TP lt N

6.1 Leer sexo de la persona (S) 6.2 SI S
M, entonces CM lt- CM 1 6.3 SI S F,
entonces CF lt- CF 1 6.4 Incrementar en 1 el
contador TP lt- TP 1
FIN-MIENTRAS
16
Ejemplos de algoritmos (I.d.)
Algoritmo (continuación)
  1. Calcular porcentaje de hombres en el grupo PM lt-
    CM/N100
  2. Calcular porcentaje de mujeres en el grupo PF lt-
    CF/N100
  3. Escribir Porcentaje de hombres en el grupo ,
    PM
  4. Escribir Porcentaje de mujeres en el grupo ,
    PF
  5. Fin
  • En este algoritmo se puede apreciar el uso de las
    tres estructuras de control de la programación
    estructurada
  • Estructura secuencial
  • Estructura selectiva
  • Estructura iterativa

17
Ejemplos de algoritmos (II)
  1. Cálculo de la media de N observaciones numéricas
  2. Determinar si un número es primo dada una lista
    de N números enteros
  3. Cálculo del factorial de un número N
  4. Retiro de efectivo en un cajero automático
  5. Receta para preparar spaghetti alla napoletana

Definir en cada caso entrada, procesos/operacione
s y salida. Escribir el algoritmo completo para
todos los casos.
18
Diseño de algoritmos (I)
19
Diseño de algoritmos (II)
Diseño descendente (I)
El diseño descendente (top down) es un
procedimiento de refinamiento iterativo de un
problema, en el cual se parte del mayor nivel de
abstracción del problema (sistema o tarea) y se
prosigue hacia los niveles inferiores a través de
un proceso de descomposición del problema en
subproblemas. En el diseño descendente se parte
de una visión estructural del problema sin
especificar detalles para ninguna de sus partes
componentes. Cada componente del sistema es
entonces refinado, mostrando más detalles en cada
nivel de refinamiento.
20
Diseño de algoritmos (III)
Diseño descendente (II)
21
Diseño de algoritmos (IV)
Diseño descendente (III)
El diseño descendente efectúa una relación entre
las sucesivas etapas de refinamiento, de forma
tal que éstas se relacionen unas con otras a
través de los flujos de entrada y de salida de
información.
22
Diseño de algoritmos (V)
Diseño descendente (IV)
Ejemplo el problema del cajero automático
23
Diseño de algoritmos (VI)
Refinamiento del algoritmo (I)
Comúnmente, la primera versión de un algoritmo no
constituye una versión completa ni específica del
mismo. El refinamiento del algoritmo se refiere a
la conversión del primer esbozo/versión del
algoritmo en una versión más detallada y
completa, haciendo los pasos del algoritmo más
específicos. Este proceso conduce a la obtención
de un algoritmo claro, preciso y completo.
24
Diseño de algoritmos (VII)
Refinamiento del algoritmo (II)
Algoritmo para el cálculo de la media de la edad
y peso de un grupo de estudiantes (primer esbozo)
  1. Inicio
  2. Leer cantidad de estudiantes
  3. Leer edad y peso de los estudiantes
  4. Calcular las medias de la edad y del peso
  5. Escribir resultados

25
Diseño de algoritmos (VIII)
Refinamiento del algoritmo (III)
Algoritmo para el cálculo de la media de la edad
y peso de un grupo de estudiantes (versión
refinada)
  • Inicio
  • Leer cantidad de estudiantes (N)
  • NE lt- 0, SE lt- 0, SP lt- 0
  • MIENTRAS NE lt N
  • 4.1 Leer edad y peso del estudiante (E, P)
  • 4.2 SE lt- SE E
  • 4.3 SP lt- SP P
  • 4.4 Incrementar el contador NE lt- NE 1
  • FIN-MIENTRAS

26
Diseño de algoritmos (IX)
Refinamiento del algoritmo (IV)
Algoritmo para el cálculo de la media y
desviación estándar de la edad y peso de un grupo
de estudiantes (versión refinada)
  1. Calcular la media de la edad ME lt- SE/N
  2. Calcular la media del peso MP lt- SP/N
  3. Escribir La edad promedio es , ME
  4. Escribir El peso promedio es , MP
  5. Fin

27
Diseño de algoritmos (X)
Especificación y representación gráfica del
algoritmo
  • Pseudocódigo
  • Diagramas de flujo
  • Diagramas de Nassi-Schneiderman (N-S)

28
Diseño de algoritmos (XI)
Especificación del algoritmo pseudocódigo (I)
El pseudocódigo es un lenguaje de especificación
de algoritmos, comúnmente con una sintaxis para
las estructuras de control similar a la expresada
en el lenguaje de programación al que será
traducido el algoritmo. Cuando un algoritmo es
expresado en pseudocódigo, entonces la traducción
de éste al lenguaje de programación seleccionado
resultará relativamente fácil.
29
Diseño de algoritmos (XII)
Especificación del algoritmo pseudocódigo (II)
Las acciones y las estructuras de control se
representan en el pseudocódigo con palabras
reservadas del inglés, similares a las utilizadas
en los lenguajes de programación estructurada.
Entre estas palabras reservadas, las más usadas
son
start read write if-then-else while-end repeat-unt
il end
Comúnmente, la escritura del pseudocódigo
requiere el uso de la indentación de las
diferentes líneas
30
Diseño de algoritmos (XIII)
Especificación del algoritmo pseudocódigo (III)
start read N NE lt- 0 SE lt- 0 SP lt- 0 while
NE lt N read E, P SE lt- SE E
SP lt- SP P NE lt- NE 1 end
while
Algoritmo para el cálculo de la media y
desviación estándar de la edad y peso de un grupo
de estudiantes (versión en pseudocódigo)
31
Diseño de algoritmos (XIV)
Especificación del algoritmo pseudocódigo (IV)
Cuando se usa el pseudocódigo como lenguaje de
especificación de un algoritmo, el programador
puede concentrarse en la lógica y en las
estructuras de control sin preocuparse por la
sintaxis y reglas del lenguaje de programación.
ME lt- SE/N MP lt- SP/N write La edad
promedio es , ME write El peso promedio es
, MP end
32
Diseño de algoritmos (XV)
Representación gráfica del algoritmo
diagramas de flujo (I)
Un diagrama de flujo (flowchart, del inglés) es
una técnica de representación gráfica de la
lógica o pasos de un algoritmo. El diagrama de
flujo consiste de un conjunto de símbolos (tales
como rectángulos, paralelogramos, rombos, etc.) y
flechas que conectan estos símbolos. Los símbolos
representan las diferentes acciones que se pueden
ejecutar en un algoritmo (lectura, asignación,
decisión, escritura, etc.), mientras que las
flechas muestran la progresión paso a paso a
través del algoritmo. Con la aparición de los
lenguajes de programación estructurada el uso de
los diagramas de flujo ha disminuído
considerablemente, dando paso a otras técnicas de
representación (como por ejemplo, diagramas N-S,
tablas procesos-entidades, diagramas
estructurales, diagramas de burbujas, etc. ) que
capturan en un modo más adecuado la esencia y
principios de la programación estructurada.
33
Diseño de algoritmos (XVI)
Representación gráfica del algoritmo
diagramas de flujo (II)
Símbolo Representación Significado
Flechas o líneas de flujo Indica el sentido de ejecución de las acciones
Rectángulo Proceso o acción a realizar (por ejemplo, asignación)
Paralelogramo Representa una entrada o salida
Rombo Representa el constructor de selección (decisión lógica)
Rectángulo redondeado Representa el inicio y fin del diagrama
Círculo Se usa como conector entre dos partes del diagrama
34
Diseño de algoritmos (XVII)
Representación gráfica del algoritmo
diagramas de flujo (III)
  • Inicio
  • Leer cantidad de estudiantes (N)
  • NE lt- 0, SE lt- 0, SP lt- 0
  • MIENTRAS NE lt N
  • 4.1 Leer edad y peso del estudiante (E, P)
  • 4.2 SE lt- SE E
  • 4.3 SP lt- SP P
  • 4.4 Incrementar el contador NE lt- NE 1
  • FIN-MIENTRAS
  1. Calcular la media de la edad ME lt- SE/N
  2. Calcular la media del peso MP lt- SP/N
  3. Escribir La edad promedio es , ME
  4. Escribir El peso promedio es , MP
  5. Fin

35
Diseño de algoritmos (XVIII)
Continuación (IV)
  • Inicio
  • Leer cantidad de estudiantes (N)
  • NE lt- 0, SE lt- 0, SP lt- 0
  • MIENTRAS NE lt N
  • 4.1 Leer edad y peso del estudiante (E, P)
  • 4.2 SE lt- SE E
  • 4.3 SP lt- SP P
  • 4.4 Incrementar el contador NE lt- NE 1
  • FIN-MIENTRAS
  1. Calcular la media de la edad ME lt- SE/N
  2. Calcular la media del peso MP lt- SP/N
  3. Escribir La edad promedio es , ME
  4. Escribir El peso promedio es , MP
  5. Fin

36
Diseño de algoritmos (XIX)
Representación gráfica del algoritmo
diagramas de Nassi-Schneiderman (N-S) (I)
El diagrama de Nassi-Schneiderman (N-S) (también
conocido como diagrama de Chapin) es una técnica
de representación gráfica de algoritmos que
combina la especificación en pseudocódigo con la
representación gráfica del diagrama de flujo.
Cuando se usa el diagrama N-S un algoritmo es
representado con un rectángulo dividido en
franjas o bandas horizontales, donde cada banda
representa una acción a realizar. La
especificación de los pasos del algoritmo se hace
utilizando las palabras reservadas ya vistas en
el pseudocódigo, mientras que los símbolos
utilizados en el diagrama corresponden a cada
tipo de estructura de control secuencia,
selección, iteración.
37
Diseño de algoritmos (XX)
Representación gráfica del algoritmo
diagramas de Nassi-Schneiderman (N-S) (II)
Representación gráfica N-S de un algoritmo
Palabras reservadas comúnmente usadas en la
especificación de las acciones (pueden ser
también usadas en español)
Start
ltacción 1gt
start read write if-then-else while-end repeat-unt
il end
ltacción 2gt
ltacción 3gt
. . .
End
38
Diseño de algoritmos (XXI)
Representación gráfica del algoritmo
diagramas de Nassi-Schneiderman (N-S) (III)
Representación de la estructura de control
secuencial
Declaración de variables tipo
nombre_variable Ejemplos entero edad real
edadPromedio, pesoPromedio caracter
sexo cadena deporte
Asignación Variable expresion Ejemplos
edadPromedio sumaEdad/N pesoPromedio
sumaPeso/N sexo M Deporte atletismo
39
Diseño de algoritmos (XXII)
Representación gráfica del algoritmo
diagramas de Nassi-Schneiderman (N-S) (IV)
Representación de la estructura de control
secuencial
Instrucción leer leer ltlista de identificadores
de variablesgt Ejemplos leer edad, peso leer
deporte
Instrucción escribir escribir ltlista de variables
y constantesgt Ejemplos escribir edadPromedio,
pesoPromedio escribir deporte
40
Diseño de algoritmos (XXIII)
Representación gráfica del algoritmo
diagramas de Nassi-Schneiderman (N-S) (V)
Diagrama N-S
Algoritmo para calcular el área y perímetro de un
rectángulo
  1. Inicio
  2. Leer base y altura (b, a)
  3. ar lt- ba
  4. pe lt- 2(b a)
  5. Escribir Área , ar
  6. Escribir Perímetro , pe
  7. Fin

41
Diseño de algoritmos (XXIV)
Representación gráfica del algoritmo
diagramas de Nassi-Schneiderman (N-S) (VI)
Representación de la estructura de control
condicional
Algoritmo
Diagrama N-S
si ltcondicióngt entonces ltacción 1gt si_no
ltacción 2gt
condición

No
ltaccionesgt
ltaccionesgt
42
Diseño de algoritmos (XXV)
Representación gráfica del algoritmo
diagramas de Nassi-Schneiderman (N-S) (VII)
Representación de la estructura de control
condicional
43
Diseño de algoritmos (XXVI)
Representación gráfica del algoritmo
diagramas de Nassi-Schneiderman (N-S) (VIII)
Representación de la estructura de control de
iteración
Representación en el diagrama N-S de la
estructura MIENTRAS
Representación en el diagrama N-S de la
estructura HACER-MIENTRAS
44
Diseño de algoritmos (XXVII)
Representación gráfica del algoritmo
diagramas de Nassi-Schneiderman (N-S) (IX)
Representación de la estructura de control de
iteración
Representación en el diagrama N-S de la
estructura PARA
45
Diseño de algoritmos (XXVIII)
Representación gráfica del algoritmo
diagramas de Nassi-Schneiderman (N-S) (X)
start read N NE lt- 0 SE lt- 0 SP lt- 0 while
NE lt N read E, P SE lt- SE E
SP lt- SP P NE lt- NE 1 end
while
46
Diseño de algoritmos (XXIX)
Representación gráfica del algoritmo
diagramas de Nassi-Schneiderman (N-S) (XI)
Lo que hemos hecho en estas últimas dos
transparencias ha sido la especificación en un
diagrama N-S del algoritmo para el cálculo de la
edad promedio y peso promedio de un grupo de N
personas
47
De los algoritmos a los programas
  • Elementos, estructura y funcionamiento de un
    sistema de cómputo
  • Lenguajes de programación niveles, sintaxis y
    semántica
  • Estrategias de contrucción de programas

48
Elementos, estructura y funcionamiento de un
sistema de cómputo (I)
Organización física de una computadora
49
Elementos, estructura y funcionamiento de un
sistema de cómputo (II)
Funcionamiento de una computadora (I)
La unidad central de proceso (del inglés, CPU)
La unidad central de proceso (del inglés, CPU) es
el cerebro de la computadora. La CPU dirige y
controla el proceso de información efectuado por
la computadora, es la unidad donde se ejecutan
las instrucciones de los programas y donde se
controla el funcionamiento de los distintos
componentes de la computadora. La CPU procesa
información almacenada en la memoria, puede
recuperar información desde la memoria (datos o
programas) y almacenar nueva información o
información procesada en la memoria. La CPU está
compuesta por dos componentes la unidad de
control (CU) y la unidad lógico-aritmética (ALU)
50
Elementos, estructura y funcionamiento de un
sistema de cómputo (III)
Funcionamiento de una computadora (II)
La unidad de control (CU)
La unidad de control (CU) dirige y coordina las
actividades de la computadora, determina la
secuencia de operaciones a realizar, interpreta
instrucciones codificadas, controla las funciones
de decodificación, ejecución y almacenamiento.
Esta unidad controla y sincroniza todo el proceso
que tiene lugar en la computadora.
La unidad lógico-aritmética (ALU)
Como su nombre lo indica, la unidad
lógico-aritmética es la encargada de realizar
operaciones artiméticas y lógicas (suma, resta,
multiplicación, división y comparaciones) sobre
datos que provienen de la memoria principal
(RAM).
51
Elementos, estructura y funcionamiento de un
sistema de cómputo (IV)
Funcionamiento de una computadora (III)
La memoria central (RAM)
El papel de la memoria central (memoria RAM,
Random Access Memory) es el almacenamiento de
información datos y programas. Para que un
programa se pueda ejecutar, debe ser almacenado
en la memoria central (carga o load del
programa). También los datos que serán usados por
el programa durante su ejecución deben ser
situados en la memoria. Es decir, la memoria RAM
se usa para mantener los programas mientras se
están ejecutando y los datos mientras se están
procesando.
52
Elementos, estructura y funcionamiento de un
sistema de cómputo (V)
Funcionamiento de una computadora (IV)
Dispositivos de entrada/salida
Los dispositivos de entrada/salida establecen la
comunicación entre la computadora y el usuario.
Los dispositivos de entrada (teclado, mouse,
unidad CD-ROM, unidad DVD, escaner, cámara, etc.)
permiten la introducción de datos y programas en
la computadora para su procesamiento. Una vez que
los datos son leídos de los dispositivos de
entrada, éstos son almacenados en la memoria
central para su procesamiento. Los dispositivos
de salida (pantalla, impresora, etc.) permiten
representar/visualizar el resultado de la
ejecución de los programas.
53
Elementos, estructura y funcionamiento de un
sistema de cómputo (VI)
Funcionamiento de una computadora (V)
La memoria externa
La memoria externa es un medio de almacenamiento
permanente tanto para programas como para datos.
Entre los dispositivos de almacenamiento (o
memorias auxiliares) más comúnmente utilizados se
encuentran
  • El disco duro
  • Disquetes magnéticos
  • Unidad CD-ROM
  • Unidad DVD
  • Memoria USB

54
Elementos, estructura y funcionamiento de un
sistema de cómputo (VII)
El microprocesador
El microprocesador es un chip, un circuito
integrado electrónico que es utilizado como
unidad central de proceso en una computadora. Las
funciones del microprocesador son el cálculo y
control computacional.
55
Lenguajes de programación niveles, sintaxis y
semántica (I)
Niveles de lenguajes de programación (I)
Lenguajes declarativos
Lenguajes de alto nivel
Lenguajes ensambladores
Lenguajes de máquina
56
Lenguajes de programación niveles, sintaxis y
semántica (II)
Niveles de lenguajes de programación (II)
Lenguajes de máquina
Fue el primer lenguaje utilizado en la
programación de computadoras. Constituye la capa
más interna en los niveles de lenguaje en la
computación. Se podría decir que el lenguaje de
máquina es el único que entiende directamente la
computadora. Este lenguaje se expresa a través
del alfabeto binario, el cual consta solo de los
símbolos 0 y 1. El lenguaje de máquina es
dependiente de la computadora.
Lenguajes ensambladores
El lenguaje ensamblador es una representación
simbólica del lenguaje de máquina asociado. Es
decir, cada computadora tiene un lenguaje
ensamblador propio. El lenguaje ensamblador usa
palabras nemotécnicas para representar cada
instrucción (cadenas de bits) del lenguaje de
máquina asociado.
57
Lenguajes de programación niveles, sintaxis y
semántica (III)
Niveles de lenguajes de programación (III)
Lenguajes de alto nivel
Constituyen los lenguajes de programación más
utilizados. Son lenguajes independientes de la
computadora. Un programa escrito en lenguaje de
alto nivel puede ser ejecutado en cualquier
computadora, siempre que ésta disponga del
traductor o compilador del lenguaje en cuestión.
Los programas pueden ser escritos y comprendidos
de una forma más sencilla, dada la aproximación
de estos lenguajes con el lenguaje natural. Se
caracterizan por proporcionar librerías de uso
frecuente (entrada/salida, funciones matemáticas,
manejo de cadenas, etc.). Ejemplos de estos
lenguajes son Pascal, Fortran, C, C, Java,
Ada, Lisp y Prolog.
Lenguajes declarativos
Son aquellos lenguajes en los que se indica a la
computadora qué es lo que debe hacer, qué es lo
que se desea obtener o qué es lo que se está
buscando. Son comúnmente lenguajes de órdenes,
donde se expresa lo que hay que hacer en lugar de
cómo hacerlo. Ejemplos de lenguajes declarativos
son SQL y Prolog.
58
Lenguajes de programación niveles, sintaxis y
semántica (IV)
Lenguaje de programación Léxico
Sintaxis Semántica
59
Lenguajes de programación niveles, sintaxis y
semántica (V)
Aspectos a considerar en el diseño e
implementación de los lenguajes de programación
(I)
  • Léxico
  • Sintaxis
  • Semántica
  • Gestión de memoria
  • Manejo de excepciones
  • Implementación
  • Pragmática

60
Lenguajes de programación niveles, sintaxis y
semántica (VI)
Aspectos a considerar en el diseño e
implementación de los lenguajes de programación
(II)
Léxico
Es el conjunto de categorías gramaticales que
definen el vocabulario del lenguaje de
programación. Comúnmente, el léxico de un
lenguaje de programación posee las siguientes
categorías gramaticales
  • Identifier (nombre de variables, nombre de
    constantes, nombre de funciones, etc.)
  • Literal (números enteros y decimales)
  • Operator (, -, , /. etc.)
  • Separator ( . , etc.)
  • Keyword (while, read, write, if, for, case, int,
    real, etc.)

61
Lenguajes de programación niveles, sintaxis y
semántica (VII)
Aspectos a considerar en el diseño e
implementación de los lenguajes de programación
(III)
Sintaxis
La sintaxis de un lenguaje de programación es la
definición gramatical de lo que constituye un
programa en dicho lenguaje. La sintaxis se
especifica en términos de un conjunto de reglas
que rigen la construcción de los programas. La
definición de la sintaxis de un lenguaje de
programación debe ser clara, concisa y formal. La
sintaxis del lenguaje de programación se describe
a partir de otros lenguajes, llamados
metalenguajes. Uno de los metalenguajes más
difundidos es el formalismo BNF (Backus-Naur
Form), una gramática libre de contexto.
62
Lenguajes de programación niveles, sintaxis y
semántica (VIII)
Aspectos a considerar en el diseño e
implementación de los lenguajes de programación
(IV)
Semántica
Se refiere al significado de los programas. Es el
conjunto de reglas que permiten determinar el
significado de cualquier construcción del
lenguaje. La semántica asocia un significado a
cada posible construcción gramatical del
lenguaje.
Gestión de memoria
La gestión de memoria se refiere al proceso de
asignar valores a la memoria, considerando tanto
las características estáticas como dinámicas de
dichos valores. Los valores pueden ser asignados
a una de tres categorías de memoria memoria
estática, la pila en tiempo de ejecución y el
montículo.
63
Lenguajes de programación niveles, sintaxis y
semántica (IX)
Aspectos a considerar en el diseño e
implementación de los lenguajes de programación
(V)
Manejo de excepciones
Una excepción es una condición detectada por una
operación la cual no se puede resolver en el
contexto de la operación. Dos procesos básicos se
asocian al manejo de excepciones (1) lanzamiento
de la excepción y (2) captura de la excepción. El
lanzamiento de una excepción es señalar que se ha
producido una excepción, mientras que la captura
de la excepción consiste en proporcionar una
forma de manipular dicha excepción,
transfiriéndose el control del programa al
manipulador de la excepción.
64
Lenguajes de programación niveles, sintaxis y
semántica (X)
Aspectos a considerar en el diseño e
implementación de los lenguajes de programación
(VI)
Implementación
Cómo se ejecutan los programas.
Pragmática
Se refiere a los aspectos prácticos del uso de
los programas.
65
Lenguajes de programación niveles, sintaxis y
semántica (XI)
Lenguaje natural
Aplicación
Lenguaje de programación
Compilador/Intérprete
Contexto en el que se ubican los lenguajes de
programación
Máquina virtual
Sistema operativo
Lenguaje de máquina
66
Lenguajes de programación traductores de
lenguajes (I)
Un traductor de lenguaje es un programa que
traduce a código de máquina un programa fuente
escrito en un lenguaje de alto nivel.
67
Lenguajes de programación traductores de
lenguajes (II)
Intérpretes
Un intérprete es un traductor que recibe como
entrada un programa fuente, lo traduce y lo
ejecuta. Un intérprete traduce y ejecuta una
instrucción en código fuente, a la vez. Los
programas interpretados generalmente son más
lentos en ejecución que los programas compilados.
68
Lenguajes de programación traductores de
lenguajes (III)
Compiladores
Un compilador traduce un programa fuente escrito
en lenguaje de alto nivel al lenguaje de máquina
de la computadora. El programa traducido a
lenguaje de máquina es almacenado como código
objeto.
69
Lenguajes de programación traductores de
lenguajes (IV)
Fases de la compilación de un programa
70
Paradigmas de programación (I)
  • Programación imperativa
  • Programación funcional
  • Programación lógica
  • Programación orientada a objetos
  • Programación concurrente
  • Programación guiada por eventos

71
Paradigmas de programación (II)
Programación imperativa
El programa se define como una serie de acciones
o pasos, cada uno de los cuales recibe una
entrada, ejecuta un cálculo, o produce como
resultado una salida. La programación imperativa
se basa en la asignación de valores, en la
utilización de variables para almacenar valores y
en la realización de operaciones con estos
valores almacenados. Ejemplos de lenguajes de
programación imperativa son los lenguajes de alto
nivel (Fortran, C, Pascal, etc.) y los lenguajes
ensambladores.
Programación funcional
Los programas están formados por una colección de
definiciones de funciones. Las funciones
interactúan entre sí utilizando condicionales,
recursividad y composición funcional. Ejemplos de
lenguajes de programación funcional son Lisp y
Scheme.
72
Paradigmas de programación (III)
Programación lógica
Un lenguaje de programación lógica es un tipo de
lenguaje declarativo, en el cual el programa está
formado por un conjunto de declaraciones lógicas
(predicados, hechos). La ejecución de un programa
consiste en aplicar estas declaraciones para
obtener todas las soluciones posibles a un
problema. El ejemplo clásico de lenguaje de
programación lógica es Prolog.
Programación orientada a objetos
El programa es una colección de objetos que
interactúan entre sí a través del paso de
mensajes, los cuales comúnmente transforman el
estado de los objetos. Ejemplos de lenguajes
orientados a objetos son Smalltalk, C, Eiffel y
Java.
73
Paradigmas de programación (IV)
Programación concurrente
La programación se basa en la ejecución
simultánea de procesos, ya sea en una misma
computadora con uno o varios procesadores, que en
un cluster de computadoras. El programa se define
como una colección de procesos cooperativos y
asíncronos. Ejemplos de lenguajes concurrentes
son Linda y Fortran de alto rendimiento.
Programación guiada por eventos
El programa responde a eventos externos generados
en un orden no predecible. Los eventos comúnmente
se generan a partir de acciones del usuario en la
pantalla (por ejemplo, clics del mouse o
pulsaciones de teclas), pudiendo existir también
otras fuentes generadoras de eventos. Ejemplos de
lenguajes de programación guida por eventos son
Visual Basic y Java.
74
Estrategias de construcción de programas (I)
Fases de construcción de un programa
75
Estrategias de construcción de programas (II)
Programación modular (I)
La filosofía subyacente de la programación
modular es la descomposición del programa en
módulos independientes, cada uno de los cuales
ejecuta una única actividad o función. Cada
módulo se analiza, se diseña, se codifica y se
verifica por separado. El programa es una
jerarquía de módulos, con un módulo principal
(también llamado programa principal) con una
función de controlador. El módulo principal
transfiere el control a los módulos
inmediatamente subordinados (o subprogramas), de
modo que éstos puedan ejecutar sus funciones. Una
véz que el módulo subordinado haya completado su
tarea, devolverá nuevamente el control al módulo
controlador. La descomposición de un módulo en
submódulos continúa hasta que se llegue a un
punto en que el módulo resultante tenga sólo una
tarea específica que ejecutar (lectura, salida de
resultados, procesamiento de datos o control de
otros módulos).
76
Estrategias de construcción de programas (III)
Programación modular (II)
77
Estrategias de construcción de programas (IV)
Programación modular (III)
Ejemplo de descomposición de un programa en
módulos programa para el cálculo de estadísticas
descriptivas
78
Estrategias de construcción de programas (V)
Programación estructurada (programación sin goto)
La programación estructurada es un conjunto de
técnicas que incorporan
Diseño modular
Diseño descendente (top-down)
Estructuras de control básico secuencia,
selección y repetición
Write a Comment
User Comments (0)
About PowerShow.com