desarrolla software utilizando programación estructurada
Post on 03-Apr-2018
239 Views
Preview:
TRANSCRIPT
-
7/28/2019 Desarrolla software utilizando programacin estructurada
1/78
Curso de ProgramacinEstructurada
Parte I
Dr. Ana Lilia Laureano-Crucese-mail: clc@correo.azc.uam.mx
Departamento de Sistemas
UAM, Unidad Azcapotzalco
http://www.uam.mx/ -
7/28/2019 Desarrolla software utilizando programacin estructurada
2/78
Objetivos (I)
Ubicar la importancia de la programacin en la ingenieradel software
Explicar el proceso de construccin de un programa
Disear algoritmos para resolver problemas simples
Disear y construir programas modulares bajo elenfoque de la programacin estructurada utilizandoeficazmente y eficientemente un entorno de desarrolloconvencional
Que al final del curso el estudiante sea capaz de:
-
7/28/2019 Desarrolla software utilizando programacin estructurada
3/78
Objetivos (II)
Explicar y aplicar algoritmos iterativos de bsqueda y
ordenamiento Conocer el papel de las etapas de anlisis, diseo y
programacin en el desarrollo estructurado del software
-
7/28/2019 Desarrolla software utilizando programacin estructurada
4/78
Contenido Sinttico
Resolucin deproblemas y los
algoritmos
De los algoritmos
a los programas
Constructores
fundamentales de
la programacinestructurada
Fundamentos del
diseo modular
Algoritmos
iterativos de
bsqueda y
ordenamiento
Archivos
Introduccin a los
tipos de datos
abstractos
Introduccin al
anlisis y diseo
estructurado delsoftware
-
7/28/2019 Desarrolla software utilizando programacin estructurada
5/78
Resolucin de problemas y losalgoritmos
Concepto de algoritmo
Propiedades de un algoritmo
El rol del algoritmo en la resolucin deproblemas
-
7/28/2019 Desarrolla software utilizando programacin estructurada
6/78
Concepto de algoritmo (I)
Un algoritmo es un procedimiento para resolver un problema.ste describe un conjunto finito y ordenado de pasos, reglas oinstrucciones para producir la solucin a un problema dado.
Un algoritmo puede ser definido como una secuencia deinstrucciones bien definidas y efectivas, y finaliza con laproduccin del resultado esperado a partir de las entradasdadas.
-
7/28/2019 Desarrolla software utilizando programacin estructurada
7/78
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
. . .
-
7/28/2019 Desarrolla software utilizando programacin estructurada
8/78
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*a4. 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 resumidodel problema
-
7/28/2019 Desarrolla software utilizando programacin estructurada
9/78
Caractersticas de los algoritmos (I)
Son precisos. Deben indicar el orden de realizacin decada paso, as como especificar con precisin lasentradas y cada paso o etapa
Estn bien definidos. Etapas bien definidas y concretas
Exactitud y correccin. Se debe demostrar que elalgoritmo resuelve el problema para el cual fue escrito
Son finitos. Deben tener un nmero finito de pasos ydeben terminar
Deben describir el resultado o efecto final. La salidaesperada del algoritmo debe estar completamenteespecificada
-
7/28/2019 Desarrolla software utilizando programacin estructurada
10/78
Caractersticas de los algoritmos (II)
Entrada
Proceso
Salida
Partes que debe describir la definicin de un algoritmo:
Entrada SalidaProceso
-
7/28/2019 Desarrolla software utilizando programacin estructurada
11/78
Caractersticas de los algoritmos (III)
Son independientes tanto del lenguaje de programacinen el que se expresan como del hardware en que seejecutan los programas
Algoritmo
Cdigo en C
Cdigo enPascal
Cdigo en
Fortran
Computadora con
los compiladores
de C y Pascal
Computadora con
el compilador de
Fortran
Expresado
en
Ejecutado
en
-
7/28/2019 Desarrolla software utilizando programacin estructurada
12/78
El rol del algoritmo en la resolucin deproblemas (I)
Descripcin y
anlisis delproblema
Diseo del
algoritmo
Programa en un
lenguaje deprogramacin
La resolucin de un problema en computadora requiere comopaso previo el diseo de un algoritmo que especifique elprocedimiento para resolver el problema. Es decir, antes de
codificar un programa se requiere disear el algoritmo.
-
7/28/2019 Desarrolla software utilizando programacin estructurada
13/78
Ejemplos de algoritmos (I.a.)
Definicin del problema
Calcular los porcentajes de hombres y mujeres en un grupo de Ndeportistas
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)
-
7/28/2019 Desarrolla software utilizando programacin estructurada
14/78
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 elanlisis del problema
-
7/28/2019 Desarrolla software utilizando programacin estructurada
15/78
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 04. 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 + 16.3 SI S = F, entonces CF CF + 16.4 Incrementar en 1 el contador: TP TP + 1
-
7/28/2019 Desarrolla software utilizando programacin estructurada
16/78
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: , PM10. Escribir Porcentaje de mujeres en el grupo: , PF
11. Fin
En este algoritmo se puede apreciar el uso de las tresestructuras de control de la programacin estructurada:
Estructura secuencial
Estructura selectiva
Estructura iterativa
-
7/28/2019 Desarrolla software utilizando programacin estructurada
17/78
Ejemplos de algoritmos (II)
1. Clculo de la media de N observaciones numricas
2. Determinar si un nmero es primo dada una lista de N
nmeros enteros3. Clculo del factorial de un nmero N
4. Retiro de efectivo en un cajero automtico
5. Receta para preparar spaghetti alla napoletana
Definir en cada caso: entrada, procesos/operaciones y salida.Escribir el algoritmo completo para todos los casos.
-
7/28/2019 Desarrolla software utilizando programacin estructurada
18/78
Diseo de algoritmos (I)
Diseo del
algoritmo
Diseo
descendente Refinamiento
Representacin
grfica
-
7/28/2019 Desarrolla software utilizando programacin estructurada
19/78
Diseo de algoritmos (II)
Diseo descendente (I)
El diseo descendente (top down) es un procedimiento derefinamiento iterativo de un problema, en el cual se parte del
mayor nivel de abstraccin del problema (sistema o tarea) yse prosigue hacia los niveles inferiores a travs de un procesode descomposicin del problema en subproblemas.
En el diseo descendente se parte de una visin estructural
del problema sin especificar detalles para ninguna de suspartes componentes. Cada componente del sistema esentonces refinado, mostrando ms detalles en cada nivel derefinamiento.
-
7/28/2019 Desarrolla software utilizando programacin estructurada
20/78
Diseo de algoritmos (III)
Diseo descendente (II)
. . .
Problema
Subproblema Subproblema Subproblema Subproblema
Subproblema Subproblema Subproblema Subproblema SubproblemaSubproblema
Subproblema Subproblema
-
7/28/2019 Desarrolla software utilizando programacin estructurada
21/78
Diseo de algoritmos (IV)
Diseo descendente (III)
El diseo descendente efecta una relacin entre lassucesivas etapas de refinamiento, de forma tal que stas se
relacionen unas con otras a travs de los flujos de entrada yde salida de informacin.X Y
P
P1
P2
P3
P4X Y
U
V
P
Q
P31 P32 P33
V QR S
-
7/28/2019 Desarrolla software utilizando programacin estructurada
22/78
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
efectivoPago de
servicios. . .
. . .
-
7/28/2019 Desarrolla software utilizando programacin estructurada
23/78
Diseo de algoritmos (VI)
Refinamiento del algoritmo (I)
Comnmente, la primera versin de un algoritmo noconstituye una versin completa ni especfica del mismo. El
refinamiento del algoritmo se refiere a la conversin delprimer esbozo/versin del algoritmo en una versin msdetallada y completa, haciendo los pasos del algoritmo msespecficos. Este proceso conduce a la obtencin de unalgoritmo claro, preciso y completo.
-
7/28/2019 Desarrolla software utilizando programacin estructurada
24/78
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 deestudiantes (primer esbozo)
-
7/28/2019 Desarrolla software utilizando programacin estructurada
25/78
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 deestudiantes (versin refinada)
-
7/28/2019 Desarrolla software utilizando programacin estructurada
26/78
Diseo de algoritmos (IX)
Refinamiento del algoritmo (IV)
5. Calcular la media de la edad: ME SE/N6. 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 ypeso de un grupo de estudiantes (versin refinada)
-
7/28/2019 Desarrolla software utilizando programacin estructurada
27/78
Diseo de algoritmos (X)
Especificacin y representacin grfica del
algoritmo
Pseudocdigo
Diagramas de flujo
Diagramas de Nassi-Schneiderman (N-S)
-
7/28/2019 Desarrolla software utilizando programacin estructurada
28/78
Diseo de algoritmos (XI)
Especificacin del algoritmo: pseudocdigo (I)
El pseudocdigo es un lenguaje de especificacin de
algoritmos, comnmente con una sintaxis para las estructurasde control similar a la expresada en el lenguaje deprogramacin al que ser traducido el algoritmo. Cuando unalgoritmo es expresado en pseudocdigo, entonces latraduccin de ste al lenguaje de programacin seleccionadoresultar relativamente fcil.
AlgoritmoEspecificacin
en
pseudocdigo
Programa
-
7/28/2019 Desarrolla software utilizando programacin estructurada
29/78
Diseo de algoritmos (XII)
Especificacin del algoritmo: pseudocdigo (II)
Las acciones y las estructuras de control se representan en elpseudocdigo con palabras reservadas del ingls, similares a las utilizadasen los lenguajes de programacin estructurada. Entre estas palabras
reservadas, las ms usadas son:
start
read
writeIf-then-else
while-end
repeat-until
end
Comnmente, la
escritura delpseudocdigorequiere el uso de laindentacin de lasdiferentes lneas
-
7/28/2019 Desarrolla software utilizando programacin estructurada
30/78
Diseo de algoritmos (XIII)
Especificacin del algoritmo: pseudocdigo (III)
Begin
read N
NE 0SE 0
SP 0
while NE < N
read E, PSE SE + E
SP SP + P
NE NE + 1
end while
Algoritmo para elclculo de la media ydesviacin estndarde la edad y peso deun grupo deestudiantes (versinen pseudocdigo)
-
7/28/2019 Desarrolla software utilizando programacin estructurada
31/78
Diseo de algoritmos (XIV)
Especificacin del algoritmo: pseudocdigo (IV)
ME SE/N
MP SP/Nwrite La edad promedio es: , ME
write El peso promedio es: , MP
end
Cuando se usa elpseudocdigo comolenguaje de
especificacin de unalgoritmo, elprogramador puedeconcentrarse en lalgica y en las
estructuras de controlsin preocuparse porla sintaxis y reglasdel lenguaje deprogramacin.
-
7/28/2019 Desarrolla software utilizando programacin estructurada
32/78
Diseo de algoritmos (XV)
Representacin grfica del algoritmo:diagramas de flujo (I)Un diagrama de flujo (flowchart, del ingls) es una tcnica derepresentacin grfica de la lgica o pasos de un algoritmo. El diagramade 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 puedenejecutar en un algoritmo (lectura, asignacin, decisin, escritura, etc.),mientras que las flechas muestran la progresin paso a paso a travsdel algoritmo.
Con la aparicin de los lenguajes de programacin estructurada el usode los diagramas de flujo ha disminudo considerablemente, dando pasoa otras tcnicas de representacin (como por ejemplo, diagramas N-S,tablas procesos-entidades, diagramas estructurales, diagramas deburbujas, etc. ) que capturan en un modo ms adecuado la esencia y
principios de la programacin estructurada.
-
7/28/2019 Desarrolla software utilizando programacin estructurada
33/78
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 deseleccin (decisin lgica)
Rectngulo redondeado Representa el inicio y fin del
diagrama
Crculo Se usa como conector entre
dos partes del diagrama
-
7/28/2019 Desarrolla software utilizando programacin estructurada
34/78
Diseo de algoritmos (XVII)
Representacin grfica del algoritmo:diagramas de flujo (III)1. Inicio
2. Leer cantidad de estudiantes (N)
3. NE
-
7/28/2019 Desarrolla software utilizando programacin estructurada
35/78
Diseo de algoritmos (XVIII)
Continuacin (IV)
1. Inicio
2. Leer cantidad de estudiantes (N)
3. NE
-
7/28/2019 Desarrolla software utilizando programacin estructurada
36/78
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 dealgoritmos que combina la especificacin en pseudocdigo con larepresentacin grfica del diagrama de flujo.
Cuando se usa el diagrama N-S un algoritmo es representado con unrectngulo dividido en franjas o bandas horizontales, donde cada banda
representa una accin a realizar.La especificacin de los pasos del algoritmo se hace utilizando laspalabras reservadas ya vistas en el pseudocdigo, mientras que lossmbolos utilizados en el diagrama corresponden a cada tipo deestructura de control: secuencia, seleccin, iteracin.
-
7/28/2019 Desarrolla software utilizando programacin estructurada
37/78
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 usadasen espaol)
-
7/28/2019 Desarrolla software utilizando programacin estructurada
38/78
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
-
7/28/2019 Desarrolla software utilizando programacin estructurada
39/78
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:
leeredad, peso
leerdeporte
Instruccin escribirescribir
Ejemplos:
escribiredadPromedio, pesoPromedio
escribirdeporte
-
7/28/2019 Desarrolla software utilizando programacin estructurada
40/78
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. Inicio2. Leer base y altura (b, a)3. ar b*a4. pe 2*(b + a)5. Escribir rea: , ar6. Escribir Permetro: , pe
7. Fin
Diagrama N-SAlgoritmo para calcular el rea y
permetro de un rectngulo
-
7/28/2019 Desarrolla software utilizando programacin estructurada
41/78
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 . . . nEstructura
de control
condicional
CASE
-
7/28/2019 Desarrolla software utilizando programacin estructurada
42/78
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
-
7/28/2019 Desarrolla software utilizando programacin estructurada
43/78
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)
-
7/28/2019 Desarrolla software utilizando programacin estructurada
44/78
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-Sde la estructura PARA
ParaContador valor_inicial hasta valor_finalhacer
-
7/28/2019 Desarrolla software utilizando programacin estructurada
45/78
Diseo de algoritmos (XXVIII)
Representacin grfica del algoritmo:diagramas de Nassi-Schneiderman (N-S) (X)
start
read N
NE 0SE 0
SP 0
while NE < N
read E, PSE SE + E
SP SP + P
NE NE + 1
end while
Inicio
real: SE, SP
entero: NE
Mientras NE
-
7/28/2019 Desarrolla software utilizando programacin estructurada
46/78
Diseo de algoritmos (XXIX)
Representacin grfica del algoritmo:diagramas de Nassi-Schneiderman (N-S) (XI)
ME = SE/N
MP = SP/NEscribir Edad promedio, ME
Escribir Peso promedio, MP
ME
-
7/28/2019 Desarrolla software utilizando programacin estructurada
47/78
De los algoritmos a los programas
Elementos, estructura y funcionamiento de unsistema de cmputo
Lenguajes de programacin: niveles, sintaxis ysemntica
Estrategias de contruccin de programas
El f i i d
-
7/28/2019 Desarrolla software utilizando programacin estructurada
48/78
Elementos, estructura y funcionamiento deun sistema de cmputo (I)
CPU
Unidad Central de Proceso
CU
Unidad de control
ALUUnidad
lgico-aritmtica
RAM
Memoria
Dispositivos
de entrada
Dispositivos
de salida
Memoria externa
(almacenamiento
permanente)
Organizacin fsica de una computadora
El t t t f i i t d
-
7/28/2019 Desarrolla software utilizando programacin estructurada
49/78
Elementos, estructura y funcionamiento deun 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)
El t t t f i i t d
-
7/28/2019 Desarrolla software utilizando programacin estructurada
50/78
Elementos, estructura y funcionamiento deun 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)
El t t t f i i t d
-
7/28/2019 Desarrolla software utilizando programacin estructurada
51/78
Elementos, estructura y funcionamiento deun sistema de cmputo (IV)
Funcionamiento de una computadora (III)
El papel de la memoria central (memoria RAM, Random Access Memory) esel almacenamiento de informacin: datos y programas. Para que unprograma se pueda ejecutar, debe ser almacenado en la memoria central
(carga o load del programa). Tambin los datos que sern usados por elprograma 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
cachProcesador
El t t t f i i t d
-
7/28/2019 Desarrolla software utilizando programacin estructurada
52/78
Elementos, estructura y funcionamiento deun 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
El t t t f i i t d
-
7/28/2019 Desarrolla software utilizando programacin estructurada
53/78
Elementos, estructura y funcionamiento deun 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 (omemorias auxiliares) ms comnmente utilizados se encuentran:
La memoria externa
El disco duro
Disquetes magnticos
Unidad CD-ROM Unidad DVD
Memoria USB
El t t t f i i t d
-
7/28/2019 Desarrolla software utilizando programacin estructurada
54/78
Elementos, estructura y funcionamiento deun sistema de cmputo (VII)
El microprocesador
El microprocesador es un chip, un circuito integrado electrnico que esutilizado como unidad central de proceso en una computadora. Lasfunciones del microprocesador son el clculo y control computacional.
Memoria centralUnidad de
control
Unidad lgico-
aritmtica
Microprocesador
Lenguajes de programacin: niveles
-
7/28/2019 Desarrolla software utilizando programacin estructurada
55/78
Lenguajes de programacin: niveles,sintaxis y semntica (I)
Niveles de lenguajes de programacin (I)
Lenguajes de mquina
Lenguajesensambladores
Lenguajes de alto nivel
Lenguajes declarativos
Lenguajes de programacin: niveles
-
7/28/2019 Desarrolla software utilizando programacin estructurada
56/78
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 queentiende 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
-
7/28/2019 Desarrolla software utilizando programacin estructurada
57/78
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
-
7/28/2019 Desarrolla software utilizando programacin estructurada
58/78
Lenguajes de programacin: niveles,sintaxis y semntica (IV)
Lenguaje de programacin =Lxico + Sintaxis + Semntica
Lenguajes de programacin: niveles
-
7/28/2019 Desarrolla software utilizando programacin estructurada
59/78
Lenguajes de programacin: niveles,sintaxis y semntica (V)
Aspectos a considerar en el diseo e implementacin de loslenguajes de programacin (I)
Lxico
Sintaxis Semntica
Gestin de memoria
Manejo de excepciones
Implementacin
Pragmtica
Lenguajes de programacin: niveles
-
7/28/2019 Desarrolla software utilizando programacin estructurada
60/78
Lenguajes de programacin: niveles,sintaxis y semntica (VI)
Aspectos a considerar en el diseo e implementacin de loslenguajes de programacin (II)
Lxico
Es el conjunto de categoras gramaticales que definen el vocabulario dellenguaje de programacin. Comnmente, el lxico de un lenguaje deprogramacin posee las siguientes categoras gramaticales:
Identifier(nombre de variables, nombre de constantes, nombre defunciones, etc.)
Literal(nmeros enteros y decimales)
Operator(+, -, *, /. etc.) Separator(; . , etc.) Keyword(while, read, write, if, for, case, int, real, etc.)
Lenguajes de programacin: niveles
-
7/28/2019 Desarrolla software utilizando programacin estructurada
61/78
Lenguajes de programacin: niveles,sintaxis y semntica (VII)
Aspectos a considerar en el diseo e implementacin de loslenguajes de programacin (III)
La sintaxis de un lenguaje de programacin es la definicin gramatical delo que constituye un programa en dicho lenguaje. La sintaxis se especificaen trminos de un conjunto de reglas que rigen la construccin de losprogramas. La definicin de la sintaxis de un lenguaje de programacindebe ser clara, concisa y formal. La sintaxis del lenguaje de programacin
se describe a partir de otros lenguajes, llamados metalenguajes. Uno delos metalenguajes ms difundidos es el formalismo BNF (Backus-NaurForm), una gramtica libre de contexto.
Sintaxis
Lenguajes de programacin: niveles
-
7/28/2019 Desarrolla software utilizando programacin estructurada
62/78
Lenguajes de programacin: niveles,sintaxis y semntica (VIII)
Aspectos a considerar en el diseo e implementacin de loslenguajes de programacin (IV)
Se refiere al significado de los programas. Es el conjunto de reglas quepermiten determinar el significado de cualquier construccin del lenguaje.La semntica asocia un significado a cada posible construccin gramaticaldel lenguaje.
Semntica
La gestin de memoria se refiere al proceso de asignar valores a lamemoria, considerando tanto las caractersticas estticas como dinmicasde dichos valores. Los valores pueden ser asignados a una de trescategoras de memoria: memoria esttica, la pila en tiempo de ejecucin yel montculo.
Gestin de memoria
Lenguajes de programacin: niveles
-
7/28/2019 Desarrolla software utilizando programacin estructurada
63/78
Lenguajes de programacin: niveles,sintaxis y semntica (IX)
Aspectos a considerar en el diseo e implementacin de loslenguajes de programacin (V)
Una excepcin es una condicin detectada por una operacin la cual no sepuede resolver en el contexto de la operacin. Dos procesos bsicos seasocian al manejo de excepciones: (1) lanzamiento de la excepcin y (2)captura de la excepcin. El lanzamiento de una excepcin es sealar quese ha producido una excepcin, mientras que la captura de la excepcinconsiste 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
-
7/28/2019 Desarrolla software utilizando programacin estructurada
64/78
Lenguajes de programacin: niveles,sintaxis y semntica (X)
Aspectos a considerar en el diseo e implementacin de loslenguajes 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
-
7/28/2019 Desarrolla software utilizando programacin estructurada
65/78
Lenguajes de programacin: niveles, sintaxisy semntica (XI)
Contexto en elque se ubicanlos lenguajes de
programacin
Lenguaje natural
Aplicacin
Lenguaje de programacin
Compilador/Intrprete
Mquina virtualSistema operativo
Lenguaje
de mquina
Lenguajes de programacin: traductores de
-
7/28/2019 Desarrolla software utilizando programacin estructurada
66/78
Lenguajes de programacin: traductores delenguajes (I)
Traductores de
lenguaje
Intrpretes Compiladores
Un traductor de lenguaje es un programa que traduce a cdigo demquina un programa fuente escrito en un lenguaje de alto nivel.
Lenguajes de programacin: traductores de
-
7/28/2019 Desarrolla software utilizando programacin estructurada
67/78
Lenguajes de programacin: traductores delenguajes (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 sonms lentos en ejecucin que los programas compilados.
Programa fuente IntrpreteTraduccin y
ejecucin lnea
a lnea
Lenguajes de programacin: traductores de
-
7/28/2019 Desarrolla software utilizando programacin estructurada
68/78
Lenguajes de programacin: traductores delenguajes (III)
Compiladores
Un compilador traduce un programa fuente escrito en lenguaje de altonivel 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
-
7/28/2019 Desarrolla software utilizando programacin estructurada
69/78
Lenguajes de programacin: traductores delenguajes (IV)
Fases de la compilacin de un programa
Programa
fuente CompiladorPrograma
objeto Linker
Programa
ejecutable
en lenguajede mquina
Analizador
lxico
Analizador
sintctico
Analizador
semntico
Generador
de cdigo
intermedio
Optimizador
de cdigo
Generador
de cdigo
objeto
-
7/28/2019 Desarrolla software utilizando programacin estructurada
70/78
Paradigmas de programacin (I)
Programacin imperativa Programacin funcional
Programacin lgica Programacin orientada a objetos Programacin concurrente Programacin guiada por eventos
-
7/28/2019 Desarrolla software utilizando programacin estructurada
71/78
Paradigmas de programacin (II)
El programa se define como una serie de acciones o pasos, cada uno delos cuales recibe una entrada, ejecuta un clculo, o produce comoresultado una salida. La programacin imperativa se basa en la asignacin
de valores, en la utilizacin de variables para almacenar valores y en larealizacin de operaciones con estos valores almacenados. Ejemplos delenguajes 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 defunciones. Las funciones interactan entre s utilizando condicionales,recursividad y composicin funcional. Ejemplos de lenguajes deprogramacin funcional son Lisp y Scheme.
Programacin funcional
-
7/28/2019 Desarrolla software utilizando programacin estructurada
72/78
Paradigmas de programacin (III)
Un lenguaje de programacin lgica es un tipo de lenguaje declarativo, enel 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 unproblema. El ejemplo clsico de lenguaje de programacin lgica esProlog.
Programacin lgica
El programa es una coleccin de objetos que interactan entre s a travsdel paso de mensajes, los cuales comnmente transforman el estado delos objetos. Ejemplos de lenguajes orientados a objetos son Smalltalk,C++, Eiffel y Java.
Programacin orientada a objetos
-
7/28/2019 Desarrolla software utilizando programacin estructurada
73/78
Paradigmas de programacin (IV)
La programacin se basa en la ejecucin simultnea de procesos, ya seaen una misma computadora con uno o varios procesadores, que en uncluster de computadoras. El programa se define como una coleccin de
procesos cooperativos y asncronos. Ejemplos de lenguajes concurrentesson Linda y Fortran de alto rendimiento.
Programacin concurrente
El programa responde a eventos externos generados en un orden nopredecible. Los eventos comnmente se generan a partir de acciones delusuario en la pantalla (por ejemplo, clics del mouse o pulsaciones deteclas), pudiendo existir tambin otras fuentes generadoras de eventos.Ejemplos de lenguajes de programacin guida por eventos son VisualBasic y Java.
Programacin guiada por eventos
Estrategias de construccin de
-
7/28/2019 Desarrolla software utilizando programacin estructurada
74/78
s a eg as de co s ucc deprogramas (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
-
7/28/2019 Desarrolla software utilizando programacin estructurada
75/78
gprogramas (II)
Programacin modular (I)La filosofa subyacente de la programacin modular es la descomposicindel programa en mdulos independientes, cada uno de los cuales ejecutauna nica actividad o funcin. Cada mdulo se analiza, se disea, se
codifica y se verifica por separado. El programa es una jerarqua demdulos, con un mdulo principal (tambin llamado programa principal) conuna funcin de controlador. El mdulo principal transfiere el control a losmdulos inmediatamente subordinados (o subprogramas), de modo questos puedan ejecutar sus funciones. Una vz que el mdulo subordinadohaya completado su tarea, devolver nuevamente el control al mdulocontrolador.
La descomposicin de un mdulo en submdulos contina hasta que sellegue a un punto en que el mdulo resultante tenga slo una tareaespecfica que ejecutar (lectura, salida de resultados, procesamiento de
datos o control de otros mdulos).
Estrategias de construccin de
-
7/28/2019 Desarrolla software utilizando programacin estructurada
76/78
gprogramas (III)
Programacin modular (II)
. . .
Mdulo
principal
Mdulo 1 Mdulo 2 Mdulo 3 Mdulo N
Mdulo 12 Mdulo 31 Mdulo 32 Mdulo N1 Mdulo N2Mdulo 11
Mdulo 311 Mdulo 312
Estrategias de construccin de
-
7/28/2019 Desarrolla software utilizando programacin estructurada
77/78
gprogramas (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
-
7/28/2019 Desarrolla software utilizando programacin estructurada
78/78
gprogramas (V)
Programacin estructurada (programacin sin goto)La programacin estructurada es un conjunto de tcnicas queincorporan:
Diseo modular
Diseo descendente (top-down)
Estructuras de control bsico:
top related