View
16
Download
0
Category
Preview:
DESCRIPTION
programacion
Citation preview
Programacin Estructurada
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 solucin a un problema dado.
Un algoritmo puede ser definido como una secuencia de
instrucciones bien definidas y efectivas, y finaliza con la
produccin del resultado esperado a partir de las entradas
dadas.
Concepto de algoritmo (II)
Algoritmo
Especificacin
de las
entradas
Accin o
procedimiento
Accin o
procedimiento
Accin o
procedimiento
Accin o
procedimiento
Descripcin
del resultado o
efecto
. . .
Un primer ejemplo de algoritmo
El siguiente algoritmo calcula el rea y el permetro de un rectngulo
1. Inicio
2. Leer base y altura (b, a)
3. ar b*a
4. pe 2*(b + a)
5. Escribir rea del rectngulo: , ar
6. Escribir Permetro del rectngulo: , pe
7. Fin
Datos de entrada: b y a (base y altura)
Datos de salida: ar y pe (rea y permetro)
Procesos: ar = b*a, pe = 2*(b + a)
Anlisis resumido
del problema
Caractersticas de los algoritmos (I)
Son precisos. Deben indicar el orden de realizacin de cada paso, as como especificar con precisin las
entradas y cada paso o etapa
Estn bien definidos. Etapas bien definidas y concretas
Exactitud y correccin. Se debe demostrar que el algoritmo resuelve el problema para el cual fue escrito
Son finitos. Deben tener un nmero finito de pasos y deben terminar
Deben describir el resultado o efecto final. La salida esperada del algoritmo debe estar completamente
especificada
Caractersticas de los algoritmos (II)
Entrada
Proceso
Salida
Partes que debe describir la definicin de un algoritmo:
Entrada Salida Proceso
Caractersticas de los algoritmos (III)
Son independientes tanto del lenguaje de programacin en el que se expresan como del hardware en que se
ejecutan los programas
Algoritmo
Cdigo en C
Cdigo en
Pascal
Cdigo en
Fortran
Computadora con
los compiladores
de C y Pascal
Computadora con
el compilador de
Fortran
Expresado
en
Ejecutado
en
El rol del algoritmo en la resolucin de
problemas (I)
Descripcin y
anlisis del
problema
Diseo del
algoritmo
Programa en un
lenguaje de
programacin
La resolucin de un problema en computadora requiere como
paso previo el diseo de un algoritmo que especifique el
procedimiento para resolver el problema. Es decir, antes de
codificar un programa se requiere disear el algoritmo.
Ejemplos de algoritmos (I.a.)
Definicin del problema
Calcular los porcentajes de hombres y mujeres en un grupo de N
deportistas
Anlisis del problema
Datos a considerar:
Sexo de la persona (S)
Nmero de personas del sexo masculino (CM)
Nmero de personas del sexo femenino (CF)
Total de deportistas (N)
Porcentaje de hombres (PM)
Porcentaje de mujeres (PF)
Ejemplos de algoritmos (I.b.)
Datos de entrada:
Total de deportistas (N)
Sexo de la persona (S)
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/N*100)
Calcular el porcentaje de mujeres en el grupo (PF = CF/N*100)
Continuamos con el
anlisis del problema
Ejemplos de algoritmos (I.c.)
Algoritmo:
1. Inicio
2. Inicializar en cero el total de personas del sexo masculino: CM 0
3. Inicializar en cero el total de personas del sexo femenino: CF 0
4. Inicializar en cero el total de personas procesadas: TP 0
5. Leer total de deportistas (N)
6. MIENTRAS TP < N
FIN-MIENTRAS
6.1 Leer sexo de la persona (S)
6.2 SI S =M, entonces CM CM + 1 6.3 SI S = F, entonces CF CF + 1 6.4 Incrementar en 1 el contador: TP TP + 1
Ejemplos de algoritmos (I.d.)
Algoritmo (continuacin):
7. Calcular porcentaje de hombres en el grupo: PM CM/N*100
8. Calcular porcentaje de mujeres en el grupo: PF CF/N*100
9. Escribir Porcentaje de hombres en el grupo: , PM
10. Escribir Porcentaje de mujeres en el grupo: , PF
11. Fin
En este algoritmo se puede apreciar el uso de las tres
estructuras de control de la programacin estructurada:
Estructura secuencial
Estructura selectiva
Estructura iterativa
Diseo de algoritmos (I)
Diseo del
algoritmo
Diseo
descendente Refinamiento Representacin
grfica
Diseo de algoritmos (II)
Diseo descendente (I)
El diseo descendente (top down) es un procedimiento de
refinamiento iterativo de un problema, en el cual se parte del
mayor nivel de abstraccin del problema (sistema o tarea) y
se prosigue hacia los niveles inferiores a travs de un proceso
de descomposicin del problema en subproblemas.
En el diseo descendente se parte de una visin estructural
del problema sin especificar detalles para ninguna de sus
partes componentes. Cada componente del sistema es
entonces refinado, mostrando ms detalles en cada nivel de
refinamiento.
Diseo de algoritmos (III)
Diseo descendente (II)
. . .
Problema
Subproblema Subproblema Subproblema Subproblema
Subproblema Subproblema Subproblema Subproblema Subproblema Subproblema
Subproblema Subproblema
Diseo de algoritmos (IV)
Diseo descendente (III)
El diseo descendente efecta una relacin entre las
sucesivas etapas de refinamiento, de forma tal que stas se
relacionen unas con otras a travs de los flujos de entrada y
de salida de informacin.
X Y P
P1
P2
P3
P4 X Y
U
V
P
Q
P31 P32 P33 V Q R S
Diseo de algoritmos (V)
Diseo descendente (IV)
Ejemplo: el problema del cajero automtico
Cajero
automtico
Lectura y
validacin
del NIP
Seleccin de
tipo de
cuenta
Seleccin de
tipo de
operacin
Finalizar
Consulta de
saldo
Traspaso
entre cuentas
propias
Retiro de
efectivo Pago de
servicios . . .
. . .
Diseo de algoritmos (VI)
Refinamiento del algoritmo (I)
Comnmente, la primera versin de un algoritmo no
constituye una versin completa ni especfica del mismo. El
refinamiento del algoritmo se refiere a la conversin del
primer esbozo/versin del algoritmo en una versin ms
detallada y completa, haciendo los pasos del algoritmo ms
especficos. Este proceso conduce a la obtencin de un
algoritmo claro, preciso y completo.
Diseo de algoritmos (VII)
Refinamiento del algoritmo (II)
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
Algoritmo para el clculo de la media de la edad y peso de un grupo de
estudiantes (primer esbozo)
Diseo de algoritmos (VIII)
Refinamiento del algoritmo (III)
1. Inicio
2. Leer cantidad de estudiantes (N)
3. NE 0, SE 0, SP 0
4. MIENTRAS NE < N
4.1 Leer edad y peso del estudiante (E, P)
4.2 SE SE + E
4.3 SP SP + P
4.4 Incrementar el contador: NE NE + 1
FIN-MIENTRAS
Algoritmo para el clculo de la media de la edad y peso de un grupo de
estudiantes (versin refinada)
Diseo de algoritmos (IX)
Refinamiento del algoritmo (IV)
5. Calcular la media de la edad: ME SE/N
6. Calcular la media del peso: MP SP/N
7. Escribir La edad promedio es: , ME
8. Escribir El peso promedio es: , MP
9. Fin
Algoritmo para el clculo de la media y desviacin estndar de la edad y
peso de un grupo de estudiantes (versin refinada)
Diseo de algoritmos (X)
Especificacin y representacin grfica del
algoritmo
Pseudocdigo
Diagramas de flujo
Diagramas de Nassi-Schneiderman (N-S)
Diseo de algoritmos (XI)
Especificacin del algoritmo: pseudocdigo (I)
El pseudocdigo es un lenguaje de especificacin de
algoritmos, comnmente con una sintaxis para las estructuras
de control similar a la expresada en el lenguaje de
programacin al que ser traducido el algoritmo. Cuando un
algoritmo es expresado en pseudocdigo, entonces la
traduccin de ste al lenguaje de programacin seleccionado
resultar relativamente fcil.
Algoritmo Especificacin
en
pseudocdigo
Programa
Diseo de algoritmos (XII)
Especificacin del algoritmo: pseudocdigo (II)
Las acciones y las estructuras de control se representan en el
pseudocdigo con palabras reservadas del ingls, similares a las utilizadas
en los lenguajes de programacin estructurada. Entre estas palabras
reservadas, las ms usadas son:
start
read
write
If-then-else
while-end
repeat-until
end
Comnmente, la
escritura del
pseudocdigo
requiere el uso de la
indentacin de las
diferentes lneas
Diseo de algoritmos (XIII)
Especificacin del algoritmo: pseudocdigo (III)
Begin
read N
NE 0
SE 0
SP 0
while NE < N
read E, P
SE SE + E
SP SP + P
NE NE + 1
end while
Algoritmo para el
clculo de la media y
desviacin estndar
de la edad y peso de
un grupo de
estudiantes (versin
en pseudocdigo)
Diseo de algoritmos (XIV)
Especificacin del algoritmo: pseudocdigo (IV)
ME SE/N
MP SP/N
write La edad promedio es: , ME
write El peso promedio es: , MP
end
Cuando se usa el
pseudocdigo como
lenguaje de
especificacin de un
algoritmo, el
programador puede
concentrarse en la
lgica y en las
estructuras de control
sin preocuparse por
la sintaxis y reglas
del lenguaje de
programacin.
Diseo de algoritmos (XV)
Representacin grfica del algoritmo:
diagramas de flujo (I) Un diagrama de flujo (flowchart, del ingls) es una tcnica de
representacin grfica de la lgica o pasos de un algoritmo. El diagrama
de flujo consiste de un conjunto de smbolos (tales como rectngulos,
paralelogramos, rombos, etc.) y flechas que conectan estos smbolos.
Los smbolos representan las diferentes acciones que se pueden
ejecutar en un algoritmo (lectura, asignacin, decisin, escritura, etc.),
mientras que las flechas muestran la progresin paso a paso a travs
del algoritmo.
Con la aparicin de los lenguajes de programacin estructurada el uso
de los diagramas de flujo ha disminudo considerablemente, dando paso
a otras tcnicas de representacin (como por ejemplo, diagramas N-S,
tablas procesos-entidades, diagramas estructurales, diagramas de
burbujas, etc. ) que capturan en un modo ms adecuado la esencia y
principios de la programacin estructurada.
Diseo de algoritmos (XVI)
Representacin grfica del algoritmo:
diagramas de flujo (II)
Smbolo Representacin Significado
Flechas o lneas de flujo Indica el sentido de
ejecucin de las acciones
Rectngulo Proceso o accin a realizar
(por ejemplo, asignacin)
Paralelogramo Representa una entrada o
salida
Rombo Representa el constructor de
seleccin (decisin lgica)
Rectngulo redondeado Representa el inicio y fin del
diagrama
Crculo Se usa como conector entre
dos partes del diagrama
Diseo de algoritmos (XVII)
Representacin grfica del algoritmo:
diagramas de flujo (III) 1. Inicio
2. Leer cantidad de estudiantes (N)
3. NE
Diseo de algoritmos (XVIII)
Continuacin (IV)
1. Inicio
2. Leer cantidad de estudiantes (N)
3. NE
Diseo de algoritmos (XIX)
Representacin grfica del algoritmo:
diagramas de Nassi-Schneiderman (N-S) (I)
El diagrama de Nassi-Schneiderman (N-S) (tambin conocido como
diagrama de Chapin) es una tcnica de representacin grfica de
algoritmos que combina la especificacin en pseudocdigo con la
representacin grfica del diagrama de flujo.
Cuando se usa el diagrama N-S un algoritmo es representado con un
rectngulo dividido en franjas o bandas horizontales, donde cada banda
representa una accin a realizar.
La especificacin de los pasos del algoritmo se hace utilizando las
palabras reservadas ya vistas en el pseudocdigo, mientras que los
smbolos utilizados en el diagrama corresponden a cada tipo de
estructura de control: secuencia, seleccin, iteracin.
Diseo de algoritmos (XX)
Representacin grfica del algoritmo:
diagramas de Nassi-Schneiderman (N-S) (II)
Begin
End
. . .
Begin
read
write
If-then-else
while-end
repeat-until
end
Representacin grfica N-S de un algoritmo Palabras reservadas
comnmente usadas en la
especificacin de las acciones
(pueden ser tambin usadas
en espaol)
Diseo de algoritmos (XXI)
Representacin grfica del algoritmo:
diagramas de Nassi-Schneiderman (N-S) (III)
Representacin de la estructura de control secuencial
Declaracin de variables
tipo : nombre_variable
Ejemplos:
entero: edad
real: edadPromedio,
pesoPromedio
caracter: sexo
cadena: deporte
Asignacin
Variable = expresion
Ejemplos:
edadPromedio = sumaEdad/N
pesoPromedio = sumaPeso/N
sexo = M
Deporte = atletismo
Diseo de algoritmos (XXII)
Representacin grfica del algoritmo:
diagramas de Nassi-Schneiderman (N-S) (IV)
Representacin de la estructura de control secuencial
Instruccin leer
leer
Ejemplos:
leer edad, peso
leer deporte
Instruccin escribir
escribir
Ejemplos:
escribir edadPromedio, pesoPromedio
escribir deporte
Diseo de algoritmos (XXIII)
Representacin grfica del algoritmo:
diagramas de Nassi-Schneiderman (N-S) (V)
Inicio
Escribir rea: , ar
real: b, a, ar, pe
Leer b, a
ar = b*a
pe = 2(b + a)
Escribir permetro: , pe
Fin
1. Inicio
2. Leer base y altura (b, a)
3. ar b*a 4. pe 2*(b + a) 5. Escribir rea: , ar 6. Escribir Permetro: , pe 7. Fin
Diagrama N-S Algoritmo para calcular el rea y
permetro de un rectngulo
Diseo de algoritmos (XXIV)
Representacin grfica del algoritmo:
diagramas de Nassi-Schneiderman (N-S) (VI) Representacin de la estructura de control condicional
condicin
S No
Algoritmo Diagrama N-S
si entonces
si_no
selector
otro 1 2 3 . . . n Estructura
de control
condicional
CASE
Diseo de algoritmos (XXV)
Representacin grfica del algoritmo:
diagramas de Nassi-Schneiderman (N-S) (VII)
Representacin de la estructura de control condicional
S = M
S No
CM = CM + 1 CF = CF + 1
Leer sexo de la persona (S)
SI S =M, entonces CM CM + 1 SI S = F, entonces CF CF + 1 Incrementar el contador: TP TP + 1
Algoritmo Diagrama N-S
Diseo de algoritmos (XXVI)
Representacin grfica del algoritmo:
diagramas de Nassi-Schneiderman (N-S) (VIII)
Representacin de la estructura de control de iteracin
Representacin en el diagrama N-S
de la estructura MIENTRAS
Representacin en el diagrama N-S
de la estructura REPITE-HASTA
Mientras (condicin)
HASTA (condicin)
Diseo de algoritmos (XXVII)
Representacin grfica del algoritmo:
diagramas de Nassi-Schneiderman (N-S) (IX)
Representacin de la estructura de control de iteracin
Representacin en el diagrama N-S
de la estructura PARA
Para Contador valor_inicial hasta valor_final hacer
Diseo de algoritmos (XXVIII)
Representacin grfica del algoritmo:
diagramas de Nassi-Schneiderman (N-S) (X)
start
read N
NE 0
SE 0
SP 0
while NE < N
read E, P
SE SE + E
SP SP + P
NE NE + 1
end while
Inicio
real: SE, SP
entero: NE
Mientras NE
Diseo de algoritmos (XXIX)
Representacin grfica del algoritmo:
diagramas de Nassi-Schneiderman (N-S) (XI)
ME = SE/N
MP = SP/N
Escribir Edad promedio, ME
Escribir Peso promedio, MP
ME
De los algoritmos a los programas
Elementos, estructura y funcionamiento de un sistema de cmputo
Lenguajes de programacin: niveles, sintaxis y semntica
Estrategias de contruccin de programas
Elementos, estructura y funcionamiento de
un sistema de cmputo (I)
CPU
Unidad Central de Proceso
CU
Unidad de control
ALU
Unidad
lgico-aritmtica
RAM
Memoria
Dispositivos
de entrada
Dispositivos
de salida
Memoria externa
(almacenamiento
permanente)
Organizacin fsica de una computadora
Elementos, estructura y funcionamiento de
un sistema de cmputo (II)
Funcionamiento de una computadora (I)
La unidad central de proceso (del ingls, CPU) es el cerebro de la computadora. La CPU dirige y controla el proceso de informacin 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 informacin almacenada
en la memoria, puede recuperar informacin desde la memoria (datos o
programas) y almacenar nueva informacin o informacin procesada en la
memoria. La CPU est compuesta por dos componentes: la unidad de
control (CU) y la unidad lgico-aritmtica (ALU)
La unidad central de proceso (del ingls, CPU)
Elementos, estructura y funcionamiento de
un sistema de cmputo (III)
Funcionamiento de una computadora (II)
Como su nombre lo indica, la unidad lgico-aritmtica es la encargada de
realizar operaciones artimticas y lgicas (suma, resta, multiplicacin,
divisin y comparaciones) sobre datos que provienen de la memoria
principal (RAM).
La unidad lgico-aritmtica (ALU)
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 decodificacin,
ejecucin y almacenamiento. Esta unidad controla y sincroniza todo el
proceso que tiene lugar en la computadora.
La unidad de control (CU)
Elementos, estructura y funcionamiento de
un sistema de cmputo (IV)
Funcionamiento de una computadora (III)
El papel de la memoria central (memoria RAM, Random Access Memory) es
el almacenamiento de informacin: datos y programas. Para que un
programa se pueda ejecutar, debe ser almacenado en la memoria central
(carga o load del programa). Tambin los datos que sern usados por el
programa durante su ejecucin deben ser situados en la memoria. Es decir,
la memoria RAM se usa para mantener los programas mientras se estn
ejecutando y los datos mientras se estn procesando.
La memoria central (RAM)
Memoria
central
Memoria
cach Procesador
Elementos, estructura y funcionamiento de
un sistema de cmputo (V)
Funcionamiento de una computadora (IV)
Los dispositivos de entrada/salida establecen la comunicacin entre la
computadora y el usuario. Los dispositivos de entrada (teclado, mouse,
unidad CD-ROM, unidad DVD, escaner, cmara, etc.) permiten la
introduccin de datos y programas en la computadora para su
procesamiento. Una vez que los datos son ledos 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 ejecucin de los
programas.
Dispositivos de entrada/salida
Elementos, estructura y funcionamiento de
un sistema de cmputo (VI)
Funcionamiento de una computadora (V)
La memoria externa es un medio de almacenamiento permanente tanto para
programas como para datos. Entre los dispositivos de almacenamiento (o
memorias auxiliares) ms comnmente utilizados se encuentran:
La memoria externa
El disco duro
Disquetes magnticos
Unidad CD-ROM
Unidad DVD
Memoria USB
Elementos, estructura y funcionamiento de
un sistema de cmputo (VII)
El microprocesador
El microprocesador es un chip, un circuito integrado electrnico que es
utilizado como unidad central de proceso en una computadora. Las
funciones del microprocesador son el clculo y control computacional.
Memoria central Unidad de
control
Unidad lgico-
aritmtica
Microprocesador
Lenguajes de programacin: niveles,
sintaxis y semntica (I)
Niveles de lenguajes de programacin (I)
Lenguajes de mquina
Lenguajes
ensambladores
Lenguajes de alto nivel
Lenguajes declarativos
Lenguajes de programacin: niveles,
sintaxis y semntica (II)
Niveles de lenguajes de programacin (II)
Fue el primer lenguaje utilizado en la programacin de computadoras.
Constituye la capa ms interna en los niveles de lenguaje en la
computacin. Se podra decir que el lenguaje de mquina es el nico que
entiende directamente la computadora. Este lenguaje se expresa a travs
del alfabeto binario, el cual consta solo de los smbolos 0 y 1. El lenguaje de
mquina es dependiente de la computadora.
Lenguajes de mquina
El lenguaje ensamblador es una representacin simblica del lenguaje de
mquina asociado. Es decir, cada computadora tiene un lenguaje
ensamblador propio. El lenguaje ensamblador usa palabras nemotcnicas
para representar cada instruccin (cadenas de bits) del lenguaje de
mquina asociado.
Lenguajes ensambladores
Lenguajes de programacin: niveles,
sintaxis y semntica (III)
Niveles de lenguajes de programacin (III)
Constituyen los lenguajes de programacin ms 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 cuestin. Los
programas pueden ser escritos y comprendidos de una forma ms sencilla,
dada la aproximacin de estos lenguajes con el lenguaje natural. Se
caracterizan por proporcionar libreras de uso frecuente (entrada/salida,
funciones matemticas, manejo de cadenas, etc.). Ejemplos de estos
lenguajes son: Pascal, Fortran, C, C++, Java, Ada, Lisp y Prolog.
Lenguajes de alto nivel
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 comnmente lenguajes de rdenes, donde se expresa lo
que hay que hacer en lugar de cmo hacerlo. Ejemplos de lenguajes
declarativos son SQL y Prolog.
Lenguajes declarativos
Lenguajes de programacin: niveles,
sintaxis y semntica (IV)
Lenguaje de programacin =
Lxico + Sintaxis + Semntica
Lenguajes de programacin: niveles,
sintaxis y semntica (V)
Aspectos a considerar en el diseo e implementacin de los
lenguajes de programacin (I)
Lxico
Sintaxis
Semntica
Gestin de memoria
Manejo de excepciones
Implementacin
Pragmtica
Lenguajes de programacin: niveles,
sintaxis y semntica (VI)
Aspectos a considerar en el diseo e implementacin de los
lenguajes de programacin (II)
Lxico
Es el conjunto de categoras gramaticales que definen el vocabulario del
lenguaje de programacin. Comnmente, el lxico de un lenguaje de
programacin posee las siguientes categoras gramaticales:
Identifier (nombre de variables, nombre de constantes, nombre de funciones, etc.)
Literal (nmeros enteros y decimales) Operator (+, -, *, /. etc.) Separator (; . , etc.) Keyword (while, read, write, if, for, case, int, real, etc.)
Lenguajes de programacin: niveles,
sintaxis y semntica (VII)
Aspectos a considerar en el diseo e implementacin de los
lenguajes de programacin (III)
La sintaxis de un lenguaje de programacin es la definicin gramatical de
lo que constituye un programa en dicho lenguaje. La sintaxis se especifica
en trminos de un conjunto de reglas que rigen la construccin de los
programas. La definicin de la sintaxis de un lenguaje de programacin
debe ser clara, concisa y formal. La sintaxis del lenguaje de programacin
se describe a partir de otros lenguajes, llamados metalenguajes. Uno de
los metalenguajes ms difundidos es el formalismo BNF (Backus-Naur
Form), una gramtica libre de contexto.
Sintaxis
Lenguajes de programacin: niveles,
sintaxis y semntica (VIII)
Aspectos a considerar en el diseo e implementacin de los
lenguajes de programacin (IV)
Se refiere al significado de los programas. Es el conjunto de reglas que
permiten determinar el significado de cualquier construccin del lenguaje.
La semntica asocia un significado a cada posible construccin gramatical
del lenguaje.
Semntica
La gestin de memoria se refiere al proceso de asignar valores a la
memoria, considerando tanto las caractersticas estticas como dinmicas
de dichos valores. Los valores pueden ser asignados a una de tres
categoras de memoria: memoria esttica, la pila en tiempo de ejecucin y
el montculo.
Gestin de memoria
Lenguajes de programacin: niveles,
sintaxis y semntica (IX)
Aspectos a considerar en el diseo e implementacin de los
lenguajes de programacin (V)
Una excepcin es una condicin detectada por una operacin la cual no se
puede resolver en el contexto de la operacin. Dos procesos bsicos se
asocian al manejo de excepciones: (1) lanzamiento de la excepcin y (2)
captura de la excepcin. El lanzamiento de una excepcin es sealar que
se ha producido una excepcin, mientras que la captura de la excepcin
consiste en proporcionar una forma de manipular dicha excepcin,
transfirindose el control del programa al manipulador de la excepcin.
Manejo de excepciones
Lenguajes de programacin: niveles,
sintaxis y semntica (X)
Aspectos a considerar en el diseo e implementacin de los
lenguajes de programacin (VI)
Cmo se ejecutan los programas.
Implementacin
Se refiere a los aspectos prcticos del uso de los programas.
Pragmtica
Lenguajes de programacin: niveles, sintaxis
y semntica (XI)
Contexto en el
que se ubican
los lenguajes de
programacin
Lenguaje natural
Aplicacin
Lenguaje de programacin
Compilador/Intrprete
Mquina virtual
Sistema operativo
Lenguaje
de mquina
Lenguajes de programacin: traductores de
lenguajes (I)
Traductores de
lenguaje
Intrpretes Compiladores
Un traductor de lenguaje es un programa que traduce a cdigo de
mquina un programa fuente escrito en un lenguaje de alto nivel.
Lenguajes de programacin: traductores de
lenguajes (II)
Intrpretes
Un intrprete es un traductor que recibe como entrada un programa fuente,
lo traduce y lo ejecuta. Un intrprete traduce y ejecuta una instruccin en
cdigo fuente, a la vez. Los programas interpretados generalmente son
ms lentos en ejecucin que los programas compilados.
Programa fuente Intrprete
Traduccin y
ejecucin lnea
a lnea
Lenguajes de programacin: traductores de
lenguajes (III)
Compiladores
Un compilador traduce un programa fuente escrito en lenguaje de alto
nivel al lenguaje de mquina de la computadora. El programa traducido a
lenguaje de mquina es almacenado como cdigo objeto.
Programa fuente Compilador Programa objeto
Lenguajes de programacin: traductores de
lenguajes (IV)
Fases de la compilacin de un programa
Programa
fuente Compilador Programa
objeto Linker
Programa
ejecutable
en lenguaje
de mquina
Analizador
lxico
Analizador
sintctico
Analizador
semntico
Generador
de cdigo
intermedio
Optimizador
de cdigo
Generador
de cdigo
objeto
Paradigmas de programacin (I)
Programacin imperativa Programacin funcional Programacin lgica Programacin orientada a objetos Programacin concurrente Programacin guiada por eventos
Paradigmas de programacin (II)
El programa se define como una serie de acciones o pasos, cada uno de
los cuales recibe una entrada, ejecuta un clculo, o produce como
resultado una salida. La programacin imperativa se basa en la asignacin
de valores, en la utilizacin de variables para almacenar valores y en la
realizacin de operaciones con estos valores almacenados. Ejemplos de
lenguajes de programacin imperativa son los lenguajes de alto nivel
(Fortran, C, Pascal, etc.) y los lenguajes ensambladores.
Programacin imperativa
Los programas estn formados por una coleccin de definiciones de
funciones. Las funciones interactan entre s utilizando condicionales,
recursividad y composicin funcional. Ejemplos de lenguajes de
programacin funcional son Lisp y Scheme.
Programacin funcional
Paradigmas de programacin (III)
Un lenguaje de programacin lgica es un tipo de lenguaje declarativo, en
el cual el programa est formado por un conjunto de declaraciones lgicas
(predicados, hechos). La ejecucin de un programa consiste en aplicar
estas declaraciones para obtener todas las soluciones posibles a un
problema. El ejemplo clsico de lenguaje de programacin lgica es
Prolog.
Programacin lgica
El programa es una coleccin de objetos que interactan entre s a travs
del paso de mensajes, los cuales comnmente transforman el estado de
los objetos. Ejemplos de lenguajes orientados a objetos son Smalltalk,
C++, Eiffel y Java.
Programacin orientada a objetos
Paradigmas de programacin (IV)
La programacin se basa en la ejecucin simultnea 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 coleccin de
procesos cooperativos y asncronos. Ejemplos de lenguajes concurrentes
son Linda y Fortran de alto rendimiento.
Programacin concurrente
El programa responde a eventos externos generados en un orden no
predecible. Los eventos comnmente se generan a partir de acciones del
usuario en la pantalla (por ejemplo, clics del mouse o pulsaciones de
teclas), pudiendo existir tambin otras fuentes generadoras de eventos.
Ejemplos de lenguajes de programacin guida por eventos son Visual
Basic y Java.
Programacin guiada por eventos
Estrategias de construccin de
programas (I)
Fases de construccin de un programa
Descripcin
y anlisis del
problema
Diseo del
algoritmo
Codificacin
del programa
Ejecucin del
programa
Validacin del
programa
Estrategias de construccin de
programas (II)
Programacin modular (I)
La filosofa subyacente de la programacin modular es la descomposicin
del programa en mdulos independientes, cada uno de los cuales ejecuta
una nica actividad o funcin. Cada mdulo se analiza, se disea, se
codifica y se verifica por separado. El programa es una jerarqua de
mdulos, con un mdulo principal (tambin llamado programa principal) con
una funcin de controlador. El mdulo principal transfiere el control a los
mdulos inmediatamente subordinados (o subprogramas), de modo que
stos puedan ejecutar sus funciones. Una vz que el mdulo subordinado
haya completado su tarea, devolver nuevamente el control al mdulo
controlador.
La descomposicin de un mdulo en submdulos contina hasta que se
llegue a un punto en que el mdulo resultante tenga slo una tarea
especfica que ejecutar (lectura, salida de resultados, procesamiento de
datos o control de otros mdulos).
Estrategias de construccin de
programas (III)
Programacin modular (II)
. . .
Mdulo
principal
Mdulo 1 Mdulo 2 Mdulo 3 Mdulo N
Mdulo 12 Mdulo 31 Mdulo 32 Mdulo N1 Mdulo N2 Mdulo 11
Mdulo 311 Mdulo 312
Estrategias de construccin de
programas (IV)
Programacin modular (III)
Ejemplo de descomposicin de un programa en mdulos:
programa para el clculo de estadsticas descriptivas
Clculo de
estadsticas
Lectura de
datos
Clculo de
medidas de
tendencia
central
Clculo de
medidas de
dispersin
Generacin de
tablas
resumen
Generacin de
grficos
Estrategias de construccin de
programas (V)
Programacin estructurada (programacin sin goto)
La programacin estructurada es un conjunto de tcnicas que
incorporan:
Diseo modular
Diseo descendente (top-down)
Estructuras de control bsico:
secuencia, seleccin e iteracin
Recommended