SlideShare une entreprise Scribd logo
1  sur  78
Télécharger pour lire hors ligne
Curso de Programación
Estructurada
Parte I
Dr. Ana Lilia Laureano-Cruces
e-mail: clc@correo.azc.uam.mx
Departamento de Sistemas
UAM, Unidad Azcapotzalco
Objetivos (I)
• 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
Que al final del curso el estudiante sea capaz de:
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
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
Resolución de problemas y los
algoritmos
• Concepto de algoritmo
• Propiedades de un algoritmo
• El rol del algoritmo en la resolución de
problemas
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.
Concepto de algoritmo (II)
Algoritmo
Especificación
de las entradas
Acción o
procedimiento
Acción o
procedimiento
Acción o
procedimiento
Acción o
procedimiento
Descripción
del resultado o
efecto
. . .
Un primer ejemplo de algoritmo
El siguiente algoritmo calcula el área y el perímetro de un rectángulo
1. Inicio
2. Leer base y altura (b, a)
3. ar ← b*a
4. pe ← 2*(b + a)
5. Escribir “Área del rectángulo: ”, ar
6. Escribir “Perímetro del rectángulo: ”, pe
7. Fin
Datos de entrada: b y a (base y altura)
Datos de salida: ar y pe (área y perímetro)
Procesos: ar = b*a, pe = 2*(b + a)
Análisis resumido
del problema
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
Características de los algoritmos (II)
• Entrada
• Proceso
• Salida
Partes que debe describir la definición de un algoritmo:
Entrada SalidaProceso
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
Algoritmo
Código en C
Código en
Pascal
Código 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 resolución de
problemas (I)
Descripción y
análisis del
problema
Diseño del
algoritmo
Programa en un
lenguaje de
programación
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.
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)
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
análisis 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 (continuación):
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 programación estructurada:
• Estructura secuencial
• Estructura selectiva
• Estructura iterativa
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/operaciones y salida.
Escribir el algoritmo completo para todos los casos.
Diseño de algoritmos (I)
Diseño del
algoritmo
Diseño
descendente Refinamiento
Representación
gráfica
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.
Diseño de algoritmos (III)
Diseño descendente (II)
. . .
Problema
Subproblema Subproblema Subproblema Subproblema
Subproblema Subproblema Subproblema Subproblema SubproblemaSubproblema
Subproblema Subproblema
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.
X Y
P
P1
P2
P3
P4
X Y
U
V
P
Q
P31 P32 P33
V QR S
Diseño de algoritmos (V)
Diseño descendente (IV)
Ejemplo: el problema del cajero automático
Cajero
automático
Lectura y
validación
del NIP
Selección de
tipo de
cuenta
Selección de
tipo de
operación
Finalizar
Consulta de
saldo
Traspaso
entre cuentas
propias
Retiro de
efectivo
Pago de
servicios
. . .
. . .
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.
Diseño 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 cálculo de la media de la edad y peso de un grupo de
estudiantes (primer esbozo)
Diseño 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 cálculo de la media de la edad y peso de un grupo de
estudiantes (versión refinada)
Diseño 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 cálculo de la media y desviación estándar de la edad y
peso de un grupo de estudiantes (versión refinada)
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)
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.
Algoritmo
Especificación
en
pseudocódigo
Programa
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-until
end
Comúnmente, la
escritura del
pseudocódigo
requiere el uso de la
indentación de las
diferentes líneas
Diseño de algoritmos (XIII)
Especificación del algoritmo: pseudocódigo (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
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)
Diseño de algoritmos (XIV)
Especificación del algoritmo: pseudocódigo (IV)
ME ← SE/N
MP ← SP/N
write “La edad promedio es: ”, ME
write “El peso promedio es: ”, MP
end
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.
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.
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
Diseño de algoritmos (XVII)
Representación gráfica del algoritmo:
diagramas de flujo (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-MIENTRAS5. 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
Inicio
Leer N
NE <- 0
SE <- 0
SP <- 0
1
Diseño de algoritmos (XVIII)
Continuación (IV)
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-MIENTRAS5. 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
Fin
Leer E, P
SE <- SE+E
SP <- SP+P
NE <- NE+1
1
NE <N
Si
No
ME <- SE/N
MP <- SP/N
Escribir
ME, MP
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.
Diseño de algoritmos (XX)
Representación gráfica del algoritmo:
diagramas de Nassi-Schneiderman (N-S) (II)
Begin
End
<acción 1>
<acción 2>
<acción 3>
. . .
Begin
read
write
If-then-else
while-end
repeat-until
end
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)
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”
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 <lista de identificadores de variables>
Ejemplos:
leer edad, peso
leer deporte
Instrucción escribir
escribir <lista de variables y constantes>
Ejemplos:
escribir edadPromedio, pesoPromedio
escribir deporte
Diseño de algoritmos (XXIII)
Representación gráfica 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 “perímetro: ”, 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 “Perímetro: ”, pe
7. Fin
Diagrama N-SAlgoritmo para calcular el área y
perímetro de un rectángulo
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
condición
Sí No
<acciones> <acciones>
Algoritmo Diagrama N-S
si <condición> entonces
<acción 1>
si_no
<acción 2>
selector
otro 1 2 3 . . . n
Estructura
de control
condicional
CASE
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
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
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 REPITE-HASTA
Mientras (condición)
<acciones que se repiten>
HASTA (condición)
<acciones que se repiten>
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
Para Contador ← valor_inicial hasta valor_final
hacer
<acciones que se repiten>
Diseño de algoritmos (XXVIII)
Representación gráfica 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 <N
leer E, P
SE = SE + E
SP = SP + P
NE = NE + 1
NE = 0
SE = 0
SP = 0
Diseño de algoritmos (XXIX)
Representación gráfica del algoritmo:
diagramas de Nassi-Schneiderman (N-S) (XI)
ME = SE/N
MP = SP/N
Escribir “Edad promedio”, ME
Escribir “Peso promedio”, MP
ME <- SE/N
MP <- SP/N
write “Edad promedio: ”, ME
write “Peso promedio: ”, MP
end
Fin
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
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
Elementos, estructura y funcionamiento de
un sistema de cómputo (I)
CPU
Unidad Central de Proceso
CU
Unidad de control
ALU
Unidad
lógico-aritmética
RAM
Memoria
Dispositivos
de entrada
Dispositivos
de salida
Memoria externa
(almacenamiento
permanente)
Organización física de una computadora
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) 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)
La unidad central de proceso (del inglés, CPU)
Elementos, estructura y funcionamiento de
un sistema de cómputo (III)
Funcionamiento de una computadora (II)
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).
La unidad lógico-aritmética (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 decodificación,
ejecución 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 cómputo (IV)
Funcionamiento de una computadora (III)
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.
La memoria central (RAM)
Memoria
central
Memoria
caché
Procesador
Elementos, estructura y funcionamiento de
un sistema de cómputo (V)
Funcionamiento de una computadora (IV)
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.
Dispositivos de entrada/salida
Elementos, estructura y funcionamiento de
un sistema de cómputo (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) más comúnmente utilizados se encuentran:
La memoria externa
• El disco duro
• Disquetes magnéticos
• Unidad CD-ROM
• Unidad DVD
• Memoria USB
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.
Memoria central
Unidad de
control
Unidad lógico-
aritmética
Microprocesador
Lenguajes de programación: niveles,
sintaxis y semántica (I)
Niveles de lenguajes de programación (I)
Lenguajes de máquina
Lenguajes
ensambladores
Lenguajes de alto nivel
Lenguajes declarativos
Lenguajes de programación: niveles,
sintaxis y semántica (II)
Niveles de lenguajes de programación (II)
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 de máquina
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.
Lenguajes ensambladores
Lenguajes de programación: niveles,
sintaxis y semántica (III)
Niveles de lenguajes de programación (III)
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 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 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.
Lenguajes declarativos
Lenguajes de programación: niveles,
sintaxis y semántica (IV)
Lenguaje de programación =
Léxico + Sintaxis + Semántica
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
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.)
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)
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.
Sintaxis
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)
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.
Semántica
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.
Gestión de memoria
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)
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.
Manejo de excepciones
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)
Cómo se ejecutan los programas.
Implementación
Se refiere a los aspectos prácticos del uso de los programas.
Pragmática
Lenguajes de programación: niveles,
sintaxis y semántica (XI)
Contexto en el
que se ubican
los lenguajes de
programación
Lenguaje natural
Aplicación
Lenguaje de programación
Compilador/Intérprete
Máquina virtual
Sistema operativo
Lenguaje
de máquina
Lenguajes de programación: traductores de
lenguajes (I)
Traductores de
lenguaje
Intérpretes Compiladores
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.
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.
Programa fuente Intérprete
Traducción y
ejecución línea
a línea
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.
Programa fuente Compilador Programa objeto
Lenguajes de programación: traductores de
lenguajes (IV)
Fases de la compilación de un programa
Programa
fuente Compilador
Programa
objeto Linker
Programa
ejecutable
en lenguaje
de máquina
Analizador
léxico
Analizador
sintáctico
Analizador
semántico
Generador
de código
intermedio
Optimizador
de código
Generador
de código
objeto
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
Paradigmas de programación (II)
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 imperativa
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.
Programación funcional
Paradigmas de programación (III)
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 lógica
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.
Programación orientada a objetos
Paradigmas de programación (IV)
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 concurrente
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.
Programación guiada por eventos
Estrategias de construcción de
programas (I)
Fases de construcción de un programa
Descripción y
análisis del
problema
Diseño del
algoritmo
Codificación
del programa
Ejecución del
programa
Validación del
programa
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).
Estrategias de construcción de
programas (III)
Programación modular (II)
. . .
Módulo
principal
Módulo 1 Módulo 2 Módulo 3 Módulo N
Módulo 12 Módulo 31 Módulo 32 Módulo N1 Módulo N2Módulo 11
Módulo 311 Módulo 312
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
Cálculo de
estadísticas
Lectura de
datos
Cálculo de
medidas de
tendencia
central
Cálculo de
medidas de
dispersión
Generación de
tablas
resumen
Generación de
gráficos
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 e iteración

Contenu connexe

Tendances

Tema 1: Introducción a la programación funcional.
Tema 1: Introducción a la programación funcional.Tema 1: Introducción a la programación funcional.
Tema 1: Introducción a la programación funcional.José A. Alonso
 
Programación modular
Programación modularProgramación modular
Programación modularMenfy Morales
 
Estructuras básicas conceptos básicos de programación
Estructuras básicas  conceptos básicos de programaciónEstructuras básicas  conceptos básicos de programación
Estructuras básicas conceptos básicos de programacióncarlinauribe
 
Programación funcional
Programación funcionalProgramación funcional
Programación funcionalDamián Rotta
 
Algoritmos Y Diagramas De Flujo
Algoritmos Y Diagramas De FlujoAlgoritmos Y Diagramas De Flujo
Algoritmos Y Diagramas De FlujoJ Luis
 
Estructuras básicas conceptos básicos de programación
Estructuras básicas  conceptos básicos de programaciónEstructuras básicas  conceptos básicos de programación
Estructuras básicas conceptos básicos de programaciónkarinamompotes
 
Logica de la programacion i bimestre
Logica de la programacion i bimestreLogica de la programacion i bimestre
Logica de la programacion i bimestreUTPL UTPL
 
lenguaje de programación 1
lenguaje de programación 1lenguaje de programación 1
lenguaje de programación 1agustin rojas
 
Presentacion ip algoritmia_2012_i_v2_primera_parte
Presentacion ip algoritmia_2012_i_v2_primera_partePresentacion ip algoritmia_2012_i_v2_primera_parte
Presentacion ip algoritmia_2012_i_v2_primera_parteymendal
 
Programación lineal
Programación linealProgramación lineal
Programación linealFabiMalik
 
Tarea 1 act1-1 ej123
Tarea 1   act1-1 ej123Tarea 1   act1-1 ej123
Tarea 1 act1-1 ej123Edgar Mata
 
Actividad entregable 2 mate
Actividad entregable 2 mateActividad entregable 2 mate
Actividad entregable 2 mateNorberto Rafael
 

Tendances (14)

Tema 1: Introducción a la programación funcional.
Tema 1: Introducción a la programación funcional.Tema 1: Introducción a la programación funcional.
Tema 1: Introducción a la programación funcional.
 
Programación modular
Programación modularProgramación modular
Programación modular
 
Estructuras básicas conceptos básicos de programación
Estructuras básicas  conceptos básicos de programaciónEstructuras básicas  conceptos básicos de programación
Estructuras básicas conceptos básicos de programación
 
Programación funcional
Programación funcionalProgramación funcional
Programación funcional
 
Algoritmos Y Diagramas De Flujo
Algoritmos Y Diagramas De FlujoAlgoritmos Y Diagramas De Flujo
Algoritmos Y Diagramas De Flujo
 
Estructuras básicas conceptos básicos de programación
Estructuras básicas  conceptos básicos de programaciónEstructuras básicas  conceptos básicos de programación
Estructuras básicas conceptos básicos de programación
 
Logica de la programacion i bimestre
Logica de la programacion i bimestreLogica de la programacion i bimestre
Logica de la programacion i bimestre
 
lenguaje de programación 1
lenguaje de programación 1lenguaje de programación 1
lenguaje de programación 1
 
Presentacion ip algoritmia_2012_i_v2_primera_parte
Presentacion ip algoritmia_2012_i_v2_primera_partePresentacion ip algoritmia_2012_i_v2_primera_parte
Presentacion ip algoritmia_2012_i_v2_primera_parte
 
Unidad ii construiralgoritmos
Unidad ii construiralgoritmosUnidad ii construiralgoritmos
Unidad ii construiralgoritmos
 
Programación lineal
Programación linealProgramación lineal
Programación lineal
 
Tarea 1 act1-1 ej123
Tarea 1   act1-1 ej123Tarea 1   act1-1 ej123
Tarea 1 act1-1 ej123
 
Seminario de matlab
Seminario de matlabSeminario de matlab
Seminario de matlab
 
Actividad entregable 2 mate
Actividad entregable 2 mateActividad entregable 2 mate
Actividad entregable 2 mate
 

Similaire à Prog est 1

Programación estructurada
Programación  estructuradaProgramación  estructurada
Programación estructuradaPal Almaza
 
3 programacion estructurada
3 programacion estructurada3 programacion estructurada
3 programacion estructuradacortezbfajardo
 
Diseño de pseudocodigo
Diseño de pseudocodigoDiseño de pseudocodigo
Diseño de pseudocodigoANIMEFLV
 
Cuestionario de algoritmoss2
Cuestionario de algoritmoss2Cuestionario de algoritmoss2
Cuestionario de algoritmoss2Arazelii Puentez
 
Introducción a la Programación
Introducción a la ProgramaciónIntroducción a la Programación
Introducción a la ProgramaciónPablo Parola
 
Introducción A La Programación
Introducción A La ProgramaciónIntroducción A La Programación
Introducción A La ProgramaciónPablo Parola
 
01_IntroduccionAlgoritmos (1).pdf
01_IntroduccionAlgoritmos (1).pdf01_IntroduccionAlgoritmos (1).pdf
01_IntroduccionAlgoritmos (1).pdfcristianperez473965
 
Unidad 4 Metodología para el Análisis y Planteamiento de Problemas
Unidad 4 Metodología para el Análisis y Planteamiento de ProblemasUnidad 4 Metodología para el Análisis y Planteamiento de Problemas
Unidad 4 Metodología para el Análisis y Planteamiento de ProblemasYenny Salazar
 
Diagramas de-flujo.
Diagramas de-flujo.Diagramas de-flujo.
Diagramas de-flujo.Uriel Lopez
 
Carrera informatica uni1
Carrera informatica uni1Carrera informatica uni1
Carrera informatica uni1fabi1775
 
Metodología para la solución de problemas con el uso de algoritmos
Metodología para la solución de problemas con el uso de algoritmosMetodología para la solución de problemas con el uso de algoritmos
Metodología para la solución de problemas con el uso de algoritmosIEO Santo Tomás
 
Diagramas flujo
Diagramas flujoDiagramas flujo
Diagramas flujoinfobran
 
Fundamentos de programación - Introducción
Fundamentos de programación - IntroducciónFundamentos de programación - Introducción
Fundamentos de programación - IntroducciónManuelZambrano67
 
Concepto Básicos Algoritmia
Concepto Básicos Algoritmia Concepto Básicos Algoritmia
Concepto Básicos Algoritmia Daniel Gómez
 
Programación de nivel básico 1 y 2. c2.
Programación de nivel básico 1 y 2. c2.Programación de nivel básico 1 y 2. c2.
Programación de nivel básico 1 y 2. c2.DENIRAMIREZANDRADE
 

Similaire à Prog est 1 (20)

Programación estructurada
Programación  estructuradaProgramación  estructurada
Programación estructurada
 
Programacion estruturada
Programacion  estruturadaProgramacion  estruturada
Programacion estruturada
 
3 programacion estructurada
3 programacion estructurada3 programacion estructurada
3 programacion estructurada
 
Diseño de pseudocodigo
Diseño de pseudocodigoDiseño de pseudocodigo
Diseño de pseudocodigo
 
Algoritmos y programas estructuras
Algoritmos y programas estructurasAlgoritmos y programas estructuras
Algoritmos y programas estructuras
 
Cuestionario de algoritmoss2
Cuestionario de algoritmoss2Cuestionario de algoritmoss2
Cuestionario de algoritmoss2
 
Algoritmos
AlgoritmosAlgoritmos
Algoritmos
 
AlgoritmoSoluciondeProblema.pdf
AlgoritmoSoluciondeProblema.pdfAlgoritmoSoluciondeProblema.pdf
AlgoritmoSoluciondeProblema.pdf
 
Introducción a la Programación
Introducción a la ProgramaciónIntroducción a la Programación
Introducción a la Programación
 
Introducción A La Programación
Introducción A La ProgramaciónIntroducción A La Programación
Introducción A La Programación
 
01_IntroduccionAlgoritmos (1).pdf
01_IntroduccionAlgoritmos (1).pdf01_IntroduccionAlgoritmos (1).pdf
01_IntroduccionAlgoritmos (1).pdf
 
Unidad 4 Metodología para el Análisis y Planteamiento de Problemas
Unidad 4 Metodología para el Análisis y Planteamiento de ProblemasUnidad 4 Metodología para el Análisis y Planteamiento de Problemas
Unidad 4 Metodología para el Análisis y Planteamiento de Problemas
 
Diagramas de-flujo.
Diagramas de-flujo.Diagramas de-flujo.
Diagramas de-flujo.
 
Carrera informatica uni1
Carrera informatica uni1Carrera informatica uni1
Carrera informatica uni1
 
Metodología para la solución de problemas con el uso de algoritmos
Metodología para la solución de problemas con el uso de algoritmosMetodología para la solución de problemas con el uso de algoritmos
Metodología para la solución de problemas con el uso de algoritmos
 
Diagramas flujo
Diagramas flujoDiagramas flujo
Diagramas flujo
 
TEMA11.ppt
TEMA11.pptTEMA11.ppt
TEMA11.ppt
 
Fundamentos de programación - Introducción
Fundamentos de programación - IntroducciónFundamentos de programación - Introducción
Fundamentos de programación - Introducción
 
Concepto Básicos Algoritmia
Concepto Básicos Algoritmia Concepto Básicos Algoritmia
Concepto Básicos Algoritmia
 
Programación de nivel básico 1 y 2. c2.
Programación de nivel básico 1 y 2. c2.Programación de nivel básico 1 y 2. c2.
Programación de nivel básico 1 y 2. c2.
 

Dernier

1° GRADO UNIDAD DE APRENDIZAJE 0 - 2024.pdf
1° GRADO UNIDAD DE APRENDIZAJE 0 - 2024.pdf1° GRADO UNIDAD DE APRENDIZAJE 0 - 2024.pdf
1° GRADO UNIDAD DE APRENDIZAJE 0 - 2024.pdfdiana593621
 
La poesía del encarcelamiento de Raúl Zurita en el aula: una propuesta didáctica
La poesía del encarcelamiento de Raúl Zurita en el aula: una propuesta didácticaLa poesía del encarcelamiento de Raúl Zurita en el aula: una propuesta didáctica
La poesía del encarcelamiento de Raúl Zurita en el aula: una propuesta didácticaIGNACIO BALLESTER PARDO
 
plan espacios inspiradores para nivel primaria
plan espacios inspiradores para nivel primariaplan espacios inspiradores para nivel primaria
plan espacios inspiradores para nivel primariaElizabeth252489
 
U2_EA1_descargable TIC 2 SEM VIR PRE.pdf
U2_EA1_descargable TIC 2 SEM VIR PRE.pdfU2_EA1_descargable TIC 2 SEM VIR PRE.pdf
U2_EA1_descargable TIC 2 SEM VIR PRE.pdfJavier Correa
 
CIENCIAS SOCIALES SEGUNDO TRIMESTRE CUARTO
CIENCIAS SOCIALES SEGUNDO TRIMESTRE CUARTOCIENCIAS SOCIALES SEGUNDO TRIMESTRE CUARTO
CIENCIAS SOCIALES SEGUNDO TRIMESTRE CUARTOCEIP TIERRA DE PINARES
 
Herbert James Drape. Erotismo y sensualidad.pptx
Herbert James Drape. Erotismo y sensualidad.pptxHerbert James Drape. Erotismo y sensualidad.pptx
Herbert James Drape. Erotismo y sensualidad.pptxArs Erótica
 
Revista digital primer ciclo 2024 colección ediba
Revista digital primer ciclo 2024 colección edibaRevista digital primer ciclo 2024 colección ediba
Revista digital primer ciclo 2024 colección edibaTatiTerlecky1
 
21 MARZO DIA INTERNACIONAL DOS BOSQUES.pdf
21 MARZO DIA INTERNACIONAL DOS BOSQUES.pdf21 MARZO DIA INTERNACIONAL DOS BOSQUES.pdf
21 MARZO DIA INTERNACIONAL DOS BOSQUES.pdfceeabarcia
 
EL BRILLO DEL ECLIPSE (CUENTO LITERARIO). Autor y diseñador JAVIER SOLIS NOYOLA
EL BRILLO DEL ECLIPSE (CUENTO LITERARIO). Autor y diseñador JAVIER SOLIS NOYOLAEL BRILLO DEL ECLIPSE (CUENTO LITERARIO). Autor y diseñador JAVIER SOLIS NOYOLA
EL BRILLO DEL ECLIPSE (CUENTO LITERARIO). Autor y diseñador JAVIER SOLIS NOYOLAJAVIER SOLIS NOYOLA
 
Recursos Tecnológicos, página AIP-CRT 2 0 2 4.pdf
Recursos Tecnológicos, página  AIP-CRT 2 0 2 4.pdfRecursos Tecnológicos, página  AIP-CRT 2 0 2 4.pdf
Recursos Tecnológicos, página AIP-CRT 2 0 2 4.pdfNELLYKATTY
 
Tecnología educativa en la era actual .pptx
Tecnología educativa en la era actual .pptxTecnología educativa en la era actual .pptx
Tecnología educativa en la era actual .pptxJulioSantin2
 
Los escritos administrativos, técnicos y comerciales
Los escritos administrativos, técnicos y comercialesLos escritos administrativos, técnicos y comerciales
Los escritos administrativos, técnicos y comercialeshanda210618
 
GUÍA SIANET - Agenda - Tareas - Archivos - Participaciones - Notas.pdf
GUÍA SIANET - Agenda - Tareas - Archivos - Participaciones - Notas.pdfGUÍA SIANET - Agenda - Tareas - Archivos - Participaciones - Notas.pdf
GUÍA SIANET - Agenda - Tareas - Archivos - Participaciones - Notas.pdfNELLYKATTY
 
Programación Anual 2024 - CIENCIAS SOCIALES.docx
Programación Anual 2024  - CIENCIAS SOCIALES.docxProgramación Anual 2024  - CIENCIAS SOCIALES.docx
Programación Anual 2024 - CIENCIAS SOCIALES.docxJhordanBenitesSanche1
 
UNIDAD DE APRENDIZAJE MARZO 2024.docx para educacion
UNIDAD DE APRENDIZAJE MARZO 2024.docx para educacionUNIDAD DE APRENDIZAJE MARZO 2024.docx para educacion
UNIDAD DE APRENDIZAJE MARZO 2024.docx para educacionCarolVigo1
 
Presentación contribuciones socioeconómicas del SUPV 2023
Presentación contribuciones socioeconómicas del SUPV 2023Presentación contribuciones socioeconómicas del SUPV 2023
Presentación contribuciones socioeconómicas del SUPV 2023Ivie
 
CIENCIAS SOCIALES SEGUNDO TRIMESTRE TERCERO
CIENCIAS SOCIALES SEGUNDO TRIMESTRE TERCEROCIENCIAS SOCIALES SEGUNDO TRIMESTRE TERCERO
CIENCIAS SOCIALES SEGUNDO TRIMESTRE TERCEROCEIP TIERRA DE PINARES
 

Dernier (20)

Tema 6.- La identidad visual corporativa y el naming.pdf
Tema 6.- La identidad visual corporativa y el naming.pdfTema 6.- La identidad visual corporativa y el naming.pdf
Tema 6.- La identidad visual corporativa y el naming.pdf
 
1° GRADO UNIDAD DE APRENDIZAJE 0 - 2024.pdf
1° GRADO UNIDAD DE APRENDIZAJE 0 - 2024.pdf1° GRADO UNIDAD DE APRENDIZAJE 0 - 2024.pdf
1° GRADO UNIDAD DE APRENDIZAJE 0 - 2024.pdf
 
La poesía del encarcelamiento de Raúl Zurita en el aula: una propuesta didáctica
La poesía del encarcelamiento de Raúl Zurita en el aula: una propuesta didácticaLa poesía del encarcelamiento de Raúl Zurita en el aula: una propuesta didáctica
La poesía del encarcelamiento de Raúl Zurita en el aula: una propuesta didáctica
 
plan espacios inspiradores para nivel primaria
plan espacios inspiradores para nivel primariaplan espacios inspiradores para nivel primaria
plan espacios inspiradores para nivel primaria
 
U2_EA1_descargable TIC 2 SEM VIR PRE.pdf
U2_EA1_descargable TIC 2 SEM VIR PRE.pdfU2_EA1_descargable TIC 2 SEM VIR PRE.pdf
U2_EA1_descargable TIC 2 SEM VIR PRE.pdf
 
CIENCIAS SOCIALES SEGUNDO TRIMESTRE CUARTO
CIENCIAS SOCIALES SEGUNDO TRIMESTRE CUARTOCIENCIAS SOCIALES SEGUNDO TRIMESTRE CUARTO
CIENCIAS SOCIALES SEGUNDO TRIMESTRE CUARTO
 
Herbert James Drape. Erotismo y sensualidad.pptx
Herbert James Drape. Erotismo y sensualidad.pptxHerbert James Drape. Erotismo y sensualidad.pptx
Herbert James Drape. Erotismo y sensualidad.pptx
 
Power Point E. Sab: Adoración sin fin...
Power Point E. Sab: Adoración sin fin...Power Point E. Sab: Adoración sin fin...
Power Point E. Sab: Adoración sin fin...
 
Revista digital primer ciclo 2024 colección ediba
Revista digital primer ciclo 2024 colección edibaRevista digital primer ciclo 2024 colección ediba
Revista digital primer ciclo 2024 colección ediba
 
21 MARZO DIA INTERNACIONAL DOS BOSQUES.pdf
21 MARZO DIA INTERNACIONAL DOS BOSQUES.pdf21 MARZO DIA INTERNACIONAL DOS BOSQUES.pdf
21 MARZO DIA INTERNACIONAL DOS BOSQUES.pdf
 
EL BRILLO DEL ECLIPSE (CUENTO LITERARIO). Autor y diseñador JAVIER SOLIS NOYOLA
EL BRILLO DEL ECLIPSE (CUENTO LITERARIO). Autor y diseñador JAVIER SOLIS NOYOLAEL BRILLO DEL ECLIPSE (CUENTO LITERARIO). Autor y diseñador JAVIER SOLIS NOYOLA
EL BRILLO DEL ECLIPSE (CUENTO LITERARIO). Autor y diseñador JAVIER SOLIS NOYOLA
 
Recursos Tecnológicos, página AIP-CRT 2 0 2 4.pdf
Recursos Tecnológicos, página  AIP-CRT 2 0 2 4.pdfRecursos Tecnológicos, página  AIP-CRT 2 0 2 4.pdf
Recursos Tecnológicos, página AIP-CRT 2 0 2 4.pdf
 
Tecnología educativa en la era actual .pptx
Tecnología educativa en la era actual .pptxTecnología educativa en la era actual .pptx
Tecnología educativa en la era actual .pptx
 
Los escritos administrativos, técnicos y comerciales
Los escritos administrativos, técnicos y comercialesLos escritos administrativos, técnicos y comerciales
Los escritos administrativos, técnicos y comerciales
 
GUÍA SIANET - Agenda - Tareas - Archivos - Participaciones - Notas.pdf
GUÍA SIANET - Agenda - Tareas - Archivos - Participaciones - Notas.pdfGUÍA SIANET - Agenda - Tareas - Archivos - Participaciones - Notas.pdf
GUÍA SIANET - Agenda - Tareas - Archivos - Participaciones - Notas.pdf
 
Programación Anual 2024 - CIENCIAS SOCIALES.docx
Programación Anual 2024  - CIENCIAS SOCIALES.docxProgramación Anual 2024  - CIENCIAS SOCIALES.docx
Programación Anual 2024 - CIENCIAS SOCIALES.docx
 
UNIDAD DE APRENDIZAJE MARZO 2024.docx para educacion
UNIDAD DE APRENDIZAJE MARZO 2024.docx para educacionUNIDAD DE APRENDIZAJE MARZO 2024.docx para educacion
UNIDAD DE APRENDIZAJE MARZO 2024.docx para educacion
 
Presentación contribuciones socioeconómicas del SUPV 2023
Presentación contribuciones socioeconómicas del SUPV 2023Presentación contribuciones socioeconómicas del SUPV 2023
Presentación contribuciones socioeconómicas del SUPV 2023
 
Sesión de clase ES: Adoración sin fin...
Sesión de clase ES: Adoración sin fin...Sesión de clase ES: Adoración sin fin...
Sesión de clase ES: Adoración sin fin...
 
CIENCIAS SOCIALES SEGUNDO TRIMESTRE TERCERO
CIENCIAS SOCIALES SEGUNDO TRIMESTRE TERCEROCIENCIAS SOCIALES SEGUNDO TRIMESTRE TERCERO
CIENCIAS SOCIALES SEGUNDO TRIMESTRE TERCERO
 

Prog est 1

  • 1. Curso de Programación Estructurada Parte I Dr. Ana Lilia Laureano-Cruces e-mail: clc@correo.azc.uam.mx Departamento de Sistemas UAM, Unidad Azcapotzalco
  • 2. Objetivos (I) • 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 Que al final del curso el estudiante sea capaz de:
  • 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) Algoritmo Especificación de las entradas Acción o procedimiento Acción o procedimiento Acción o procedimiento Acción o procedimiento Descripción del resultado o efecto . . .
  • 8. Un primer ejemplo de algoritmo El siguiente algoritmo calcula el área y el perímetro de un rectángulo 1. Inicio 2. Leer base y altura (b, a) 3. ar ← b*a 4. pe ← 2*(b + a) 5. Escribir “Área del rectángulo: ”, ar 6. Escribir “Perímetro del rectángulo: ”, pe 7. Fin Datos de entrada: b y a (base y altura) Datos de salida: ar y pe (área y perímetro) Procesos: ar = b*a, pe = 2*(b + a) Análisis resumido del problema
  • 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) • Entrada • Proceso • Salida Partes que debe describir la definición de un algoritmo: Entrada SalidaProceso
  • 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 Algoritmo Código en C Código en Pascal Código en Fortran Computadora con los compiladores de C y Pascal Computadora con el compilador de Fortran Expresado en Ejecutado en
  • 12. El rol del algoritmo en la resolución de problemas (I) Descripción y análisis del problema Diseño del algoritmo Programa en un lenguaje de programación 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) 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 análisis del problema
  • 15. 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
  • 16. Ejemplos de algoritmos (I.d.) Algoritmo (continuación): 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 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/operaciones y salida. Escribir el algoritmo completo para todos los casos.
  • 18. Diseño de algoritmos (I) Diseño del algoritmo Diseño descendente Refinamiento Representación gráfica
  • 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) . . . Problema Subproblema Subproblema Subproblema Subproblema Subproblema Subproblema Subproblema Subproblema SubproblemaSubproblema Subproblema Subproblema
  • 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. X Y P P1 P2 P3 P4 X Y U V P Q P31 P32 P33 V QR S
  • 22. Diseño de algoritmos (V) Diseño descendente (IV) Ejemplo: el problema del cajero automático Cajero automático Lectura y validación del NIP Selección de tipo de cuenta Selección de tipo de operación Finalizar Consulta de saldo Traspaso entre cuentas propias Retiro de efectivo Pago de servicios . . . . . .
  • 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) 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 cálculo de la media de la edad y peso de un grupo de estudiantes (primer esbozo)
  • 25. Diseño 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 cálculo de la media de la edad y peso de un grupo de estudiantes (versión refinada)
  • 26. Diseño 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 cálculo de la media y desviación estándar de la edad y peso de un grupo de estudiantes (versión refinada)
  • 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. Algoritmo Especificación en pseudocódigo Programa
  • 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-until 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) 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 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) ME ← SE/N MP ← SP/N write “La edad promedio es: ”, ME write “El peso promedio es: ”, MP end 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.
  • 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) 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-MIENTRAS5. 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 Inicio Leer N NE <- 0 SE <- 0 SP <- 0 1
  • 35. Diseño de algoritmos (XVIII) Continuación (IV) 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-MIENTRAS5. 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 Fin Leer E, P SE <- SE+E SP <- SP+P NE <- NE+1 1 NE <N Si No ME <- SE/N MP <- SP/N Escribir ME, MP
  • 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) Begin End <acción 1> <acción 2> <acción 3> . . . Begin read write If-then-else while-end repeat-until end 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)
  • 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 <lista de identificadores de variables> Ejemplos: leer edad, peso leer deporte Instrucción escribir escribir <lista de variables y constantes> 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) Inicio Escribir “área: ”, ar real: b, a, ar, pe Leer b, a ar = b*a pe = 2(b + a) Escribir “perímetro: ”, 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 “Perímetro: ”, pe 7. Fin Diagrama N-SAlgoritmo para calcular el área y perímetro de un rectángulo
  • 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 condición Sí No <acciones> <acciones> Algoritmo Diagrama N-S si <condición> entonces <acción 1> si_no <acción 2> selector otro 1 2 3 . . . n Estructura de control condicional CASE
  • 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 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
  • 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 REPITE-HASTA Mientras (condición) <acciones que se repiten> HASTA (condición) <acciones que se repiten>
  • 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 Para Contador ← valor_inicial hasta valor_final hacer <acciones que se repiten>
  • 45. Diseño de algoritmos (XXVIII) Representación gráfica 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 <N leer E, P SE = SE + E SP = SP + P NE = NE + 1 NE = 0 SE = 0 SP = 0
  • 46. Diseño de algoritmos (XXIX) Representación gráfica del algoritmo: diagramas de Nassi-Schneiderman (N-S) (XI) ME = SE/N MP = SP/N Escribir “Edad promedio”, ME Escribir “Peso promedio”, MP ME <- SE/N MP <- SP/N write “Edad promedio: ”, ME write “Peso promedio: ”, MP end Fin 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) CPU Unidad Central de Proceso CU Unidad de control ALU Unidad lógico-aritmética RAM Memoria Dispositivos de entrada Dispositivos de salida Memoria externa (almacenamiento permanente) 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) 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) La unidad central de proceso (del inglés, CPU)
  • 50. Elementos, estructura y funcionamiento de un sistema de cómputo (III) Funcionamiento de una computadora (II) 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). La unidad lógico-aritmética (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 decodificación, ejecución y almacenamiento. Esta unidad controla y sincroniza todo el proceso que tiene lugar en la computadora. La unidad de control (CU)
  • 51. Elementos, estructura y funcionamiento de un sistema de cómputo (IV) Funcionamiento de una computadora (III) 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. La memoria central (RAM) Memoria central Memoria caché Procesador
  • 52. Elementos, estructura y funcionamiento de un sistema de cómputo (V) Funcionamiento de una computadora (IV) 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. Dispositivos de entrada/salida
  • 53. Elementos, estructura y funcionamiento de un sistema de cómputo (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) más comúnmente utilizados se encuentran: La memoria externa • 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. Memoria central Unidad de control Unidad lógico- aritmética Microprocesador
  • 55. Lenguajes de programación: niveles, sintaxis y semántica (I) Niveles de lenguajes de programación (I) Lenguajes de máquina Lenguajes ensambladores Lenguajes de alto nivel Lenguajes declarativos
  • 56. Lenguajes de programación: niveles, sintaxis y semántica (II) Niveles de lenguajes de programación (II) 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 de máquina 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. Lenguajes ensambladores
  • 57. Lenguajes de programación: niveles, sintaxis y semántica (III) Niveles de lenguajes de programación (III) 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 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 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. Lenguajes declarativos
  • 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) 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. Sintaxis
  • 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) 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. Semántica 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. Gestión de memoria
  • 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) 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. Manejo de excepciones
  • 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) Cómo se ejecutan los programas. Implementación Se refiere a los aspectos prácticos del uso de los programas. Pragmática
  • 65. Lenguajes de programación: niveles, sintaxis y semántica (XI) Contexto en el que se ubican los lenguajes de programación Lenguaje natural Aplicación Lenguaje de programación Compilador/Intérprete Máquina virtual Sistema operativo Lenguaje de máquina
  • 66. Lenguajes de programación: traductores de lenguajes (I) Traductores de lenguaje Intérpretes Compiladores 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. Programa fuente Intérprete Traducción y ejecución línea a línea
  • 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. Programa fuente Compilador Programa objeto
  • 69. Lenguajes de programación: traductores de lenguajes (IV) Fases de la compilación de un programa Programa fuente Compilador Programa objeto Linker Programa ejecutable en lenguaje de máquina Analizador léxico Analizador sintáctico Analizador semántico Generador de código intermedio Optimizador de código Generador de código objeto
  • 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) 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 imperativa 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. Programación funcional
  • 72. Paradigmas de programación (III) 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 lógica 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. Programación orientada a objetos
  • 73. Paradigmas de programación (IV) 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 concurrente 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. Programación guiada por eventos
  • 74. Estrategias de construcción de programas (I) Fases de construcción de un programa Descripción y análisis del problema Diseño del algoritmo Codificación del programa Ejecución del programa Validación del 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) . . . Módulo principal Módulo 1 Módulo 2 Módulo 3 Módulo N Módulo 12 Módulo 31 Módulo 32 Módulo N1 Módulo N2Módulo 11 Módulo 311 Módulo 312
  • 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 Cálculo de estadísticas Lectura de datos Cálculo de medidas de tendencia central Cálculo de medidas de dispersión Generación de tablas resumen Generación de gráficos
  • 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 e iteración