INFORMATICAS PARA INGENIEROS...Diseño de algoritmos PARA INGENIEROS Representación gráfica del...
Transcript of INFORMATICAS PARA INGENIEROS...Diseño de algoritmos PARA INGENIEROS Representación gráfica del...
CARRERA DE
INGENIERÍADE LA INFORMACION
HERRAMIENTAS
INFORMATICAS
PARA INGENIEROS
AlgoritmosIntroducción
HERRAMIENTAS
INFORMATICAS PARA INGENIEROS
Semana 1
CARRERA DE
INGENIERÍADE LA INFORMACION
HERRAMIENTAS
INFORMATICAS
PARA INGENIEROS
Objetivos:
• Comprender la estructura de un computador
• Diferenciar entre un Algoritmo un código fuente
• Conocer la estructura de un algoritmo
• Especificar un Algoritmo
CARRERA DE
INGENIERÍADE LA INFORMACION
HERRAMIENTAS
INFORMATICAS
PARA INGENIEROS
CARRERA DE
INGENIERÍADE LA INFORMACION
HERRAMIENTAS
INFORMATICAS
PARA INGENIEROS
CARRERA DE
INGENIERÍADE LA INFORMACION
HERRAMIENTAS
INFORMATICAS
PARA INGENIEROS
Estructura de una computadora
Una computadora consta de Unidad Central de Proceso (UCP/CPU), memoria y
almacenamiento, dispositivos perifericos (incluyendo algun tipo de conexion de red). Una
computadora ejecuta cuatro operaciones que se realizan en un ciclo conocido por EPSA
(o IPSO, input, processing, output, storage):
1 2 3
4
CARRERA DE
INGENIERÍADE LA INFORMACION
HERRAMIENTAS
INFORMATICAS
PARA INGENIEROS
Estructura de una computadora
CARRERA DE
INGENIERÍADE LA INFORMACION
HERRAMIENTAS
INFORMATICAS
PARA INGENIEROS
Unidades de medida de almacenamiento.
Bit: un dígito binario 0 o 1.Byte: una secuencia de ocho bits.
CARRERA DE
INGENIERÍADE LA INFORMACION
HERRAMIENTAS
INFORMATICAS
PARA INGENIEROS
Software de aplicaciones
El software de aplicacion tiene como funcion principal asistir y ayudar a un
usuario de una computadora para ejecutar tareas especificas. Los programas
de aplicacion se pueden desarrollar con diferentes lenguajes y herramientas de
software.
CARRERA DE
INGENIERÍADE LA INFORMACION
HERRAMIENTAS
INFORMATICAS
PARA INGENIEROS
Proceso de transformación …
CARRERA DE
INGENIERÍADE LA INFORMACION
HERRAMIENTAS
INFORMATICAS
PARA INGENIEROS
Algoritmos
¿Que es un algoritmo?
– “Una secuencia de instrucciones donde se
especifica un conjunto de operaciones necesarias
para resolver cualquier problema de un tipo dado”.
– Ejemplo sumar dos números
CARRERA DE
INGENIERÍADE LA INFORMACION
HERRAMIENTAS
INFORMATICAS
PARA INGENIEROS
Algoritmos
• Sirven para resolver un tipo de problema
especifico.
• Son secuencias de pasos concretos.
• Requiere la definición de la entrada y la salida.
• Adecuados para ser ejecutados por un
computador
CARRERA DE
INGENIERÍADE LA INFORMACION
HERRAMIENTAS
INFORMATICAS
PARA INGENIEROS
CARRERA DE
INGENIERÍADE LA INFORMACION
HERRAMIENTAS
INFORMATICAS
PARA INGENIEROS
Muchos programadores cuando empezamos a
programar, utilizamos la típica frase de :
“lo importante es que funcione”
claro que es importante que el programa
funcione. Pero si hay n programas que cumplen
con el objetivo, seguramente los n no afronten el
problema de la misma manera.
CARRERA DE
INGENIERÍADE LA INFORMACION
HERRAMIENTAS
INFORMATICAS
PARA INGENIEROS
Algoritmos1. 5+1=6
2. Anotar 6
3. 2+9=11
4. Anotar 1 y guardar 1
5. 4+0=4
6. 4+1=5
7. Anotar 5
8. El resultado es 516
491+ 25
516
CARRERA DE
INGENIERÍADE LA INFORMACION
HERRAMIENTAS
INFORMATICAS
PARA INGENIEROS
Algoritmos
Tipos de datos : Números: enteros, reales, complejos
Texto: letras, palabras, frases…
CARRERA DE
INGENIERÍADE LA INFORMACION
HERRAMIENTAS
INFORMATICAS
PARA INGENIEROS
Algoritmos
¿Qué tiene que ver con la programación?
– La programación consiste en crear programas de
computador que resuelvan problemas específicos.
– Un programa de computador es la implementación
de un algoritmo.
CARRERA DE
INGENIERÍADE LA INFORMACION
HERRAMIENTAS
INFORMATICAS
PARA INGENIEROS
Características de los algoritmos
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
Phyton
Código en
Java
Computadora con
los
compiladores/interp
retes de C y PHyton
Computadora con
el compilador de
Fortran
Expresado en Ejecutado en
CARRERA DE
INGENIERÍADE LA INFORMACION
HERRAMIENTAS
INFORMATICAS
PARA INGENIEROS
El rol del algoritmo en la resolución de problemas
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.
CARRERA DE
INGENIERÍADE LA INFORMACION
HERRAMIENTAS
INFORMATICAS
PARA INGENIEROS
Análisis del ProblemaDiseño del Algoritmo
Problema
CARRERA DE
INGENIERÍADE LA INFORMACION
HERRAMIENTAS
INFORMATICAS
PARA INGENIEROS
Diseño de algoritmos
Diseño descendente
. . .
Problema
Subproblema Subproblema Subproblema Subproblema
Subproblema Subproblema Subproblema Subproblema SubproblemaSubproblema
Subproblema Subproblema
CARRERA DE
INGENIERÍADE LA INFORMACION
HERRAMIENTAS
INFORMATICAS
PARA INGENIEROS
Diseño de algoritmos
Diseño descendente
Ejemplo: el problema del cajero automático
Cajero
automático
Lectura y
validación
del PIN
Selección de
tipo de
cuenta
Selección de
tipo de
operación
Finalizar
Consulta de
saldo
Traspaso
entre cuentas
propias
Retiro de
efectivoPago de
servicios. . .
. . .
CARRERA DE
INGENIERÍADE LA INFORMACION
HERRAMIENTAS
INFORMATICAS
PARA INGENIEROS
Diseño de algoritmos
Especificación del algoritmo: pseudocódigo
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:
Comúnmente, la
escritura del
pseudocódigo
requiere el uso de la
indentación de las
diferentes líneas
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
CARRERA DE
INGENIERÍADE LA INFORMACION
HERRAMIENTAS
INFORMATICAS
PARA INGENIEROSDiseño de algoritmos Representación gráfica del algoritmo: diagramas de flujo
Un diagrama de flujo 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
• flechas que conectan estos símbolos
Los símbolos representan las diferentes acciones que se pueden
ejecutar en un algoritmo mientras que las flechas muestran la
progresión paso a paso a través del algoritmo.
CARRERA DE
INGENIERÍADE LA INFORMACION
HERRAMIENTAS
INFORMATICAS
PARA INGENIEROS
Diseño de algoritmos
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
Representación gráfica del algoritmo:
diagramas de flujo
CARRERA DE
INGENIERÍADE LA INFORMACION
HERRAMIENTAS
INFORMATICAS
PARA INGENIEROSDiseño de algoritmos Representación gráfica del algoritmo:
diagramas de flujo
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
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
Inicio
Leer N
NE 0
SE 0
SP 0
1
CARRERA DE
INGENIERÍADE LA INFORMACION
HERRAMIENTAS
INFORMATICAS
PARA INGENIEROS
Diseño de algoritmos
Continuación …
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
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 Fin
Leer E, P
SE SE+E
SP SP+P
NE NE+1
1
NE <NSi
No
ME SE/N
MP SP/N
Escribir
ME, MP
CARRERA DE
INGENIERÍADE LA INFORMACION
HERRAMIENTAS
INFORMATICAS
PARA INGENIEROSDiseño de algoritmos Representación gráfica del algoritmo:
diagramas de Nassi-Schneiderman (N-S)
El diagrama de Nassi-Schneiderman (N-S) 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.
CARRERA DE
INGENIERÍADE LA INFORMACION
HERRAMIENTAS
INFORMATICAS
PARA INGENIEROS
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 Representación gráfica del algoritmo:
diagramas de Nassi-Schneiderman (N-S)
CARRERA DE
INGENIERÍADE LA INFORMACION
HERRAMIENTAS
INFORMATICAS
PARA INGENIEROS
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 Representación gráfica del algoritmo:
diagramas de Nassi-Schneiderman (N-S)
CARRERA DE
INGENIERÍADE LA INFORMACION
HERRAMIENTAS
INFORMATICAS
PARA INGENIEROS
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 Representación gráfica del algoritmo:
diagramas de Nassi-Schneiderman (N-S)
CARRERA DE
INGENIERÍADE LA INFORMACION
HERRAMIENTAS
INFORMATICAS
PARA INGENIEROS
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
Inicio
Escribir “área: ”, ar
real: b, a, ar, pe
Leer b, a
ar = b*a
pe = 2(b + a)
Escribir “perímetro: ”, pe
Fin
Diagrama N-SAlgoritmo para calcular el área y
perímetro de un rectángulo
Diseño de algoritmos Representación gráfica del algoritmo:
diagramas de Nassi-Schneiderman (N-S)
CARRERA DE
INGENIERÍADE LA INFORMACION
HERRAMIENTAS
INFORMATICAS
PARA INGENIEROS
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 Representación gráfica del algoritmo:
diagramas de Nassi-Schneiderman (N-S)
CARRERA DE
INGENIERÍADE LA INFORMACION
HERRAMIENTAS
INFORMATICAS
PARA INGENIEROS
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
AlgoritmoDiagrama N-S
Diseño de algoritmos Representación gráfica del algoritmo:
diagramas de Nassi-Schneiderman (N-S)
CARRERA DE
INGENIERÍADE LA INFORMACION
HERRAMIENTAS
INFORMATICAS
PARA INGENIEROS
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 Representación gráfica del algoritmo:
diagramas de Nassi-Schneiderman (N-S)
CARRERA DE
INGENIERÍADE LA INFORMACION
HERRAMIENTAS
INFORMATICAS
PARA INGENIEROS
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 Representación gráfica del algoritmo:
diagramas de Nassi-Schneiderman (N-S)
CARRERA DE
INGENIERÍADE LA INFORMACION
HERRAMIENTAS
INFORMATICAS
PARA INGENIEROS
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 Representación gráfica del algoritmo:
diagramas de Nassi-Schneiderman (N-S)
CARRERA DE
INGENIERÍADE LA INFORMACION
HERRAMIENTAS
INFORMATICAS
PARA INGENIEROS
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
endFin
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
Diseño de algoritmos Representación gráfica del algoritmo:
diagramas de Nassi-Schneiderman (N-S)
CARRERA DE
INGENIERÍADE LA INFORMACION
HERRAMIENTAS
INFORMATICAS
PARA INGENIEROS
Ejemplo:
Tenemos 8 bolas de metal. Las 8 bolas tienen la misma apariencia y forma, pero una de ellas pesa mas que las otras.
Con una balanza de dos brazos, tenemos que conseguir en 2 pesadas averiguar cuál es la bola que pesa mas al resto.
CARRERA DE
INGENIERÍADE LA INFORMACION
HERRAMIENTAS
INFORMATICAS
PARA INGENIEROS
Ejemplo:
Tenemos 12 bolas de metal. Las 12 bolas tienen la misma apariencia y forma, pero una de ellas pesa mas que las otras 11 .
Con una balanza de dos brazos, tenemos que conseguir en tres pesadas averiguar cuál es la bola que pesa mas al resto.
CARRERA DE
INGENIERÍADE LA INFORMACION
HERRAMIENTAS
INFORMATICAS
PARA INGENIEROS
Ejemplo:
Tenemos 12 bolas de metal. Las 12 bolas tienen la misma apariencia y forma, pero una de ellas pesa distinto que las otras 11 (mas o menos).
Con una balanza de dos brazos, tenemos que conseguir en tres pesadas averiguar cuál es la bola que pesa distinto al resto. Y si pesa más o menos que el resto.
CARRERA DE
INGENIERÍADE LA INFORMACION
HERRAMIENTAS
INFORMATICAS
PARA INGENIEROS
Como cada año, un rey espera que cada uno de
sus 30 vasallos le entregue sacos con 30
monedas de oro. Pero sabe que uno de ellos ha
adoptado la triste costumbre de darle monedas
de 9 gr. y no de 10 como él ordena.
Ejemplo:
¿Cómo se podrá averiguar cuál es el saco de las monedas
falsas haciendo una sola pesada?”
CARRERA DE
INGENIERÍADE LA INFORMACION
HERRAMIENTAS
INFORMATICAS
PARA INGENIEROS
CARRERA DE
INGENIERÍADE LA INFORMACION
HERRAMIENTAS
INFORMATICAS
PARA INGENIEROS
CARRERA DE
INGENIERÍADE LA INFORMACION
HERRAMIENTAS
INFORMATICAS
PARA INGENIEROS
Construcción de un algoritmo
1. Definir el problema a resolver
2. Identificar las entradas del algoritmo
3. Identificar la salida del algoritmo
4. Definir los pasos a seguir para convertir las entradas en la salida
5. Seguir los pasos y comprobar que el algoritmo sea correcto analizando la salida.
6. Revisar los pasos y hacer las correcciones.
7. Resolver el problema.
CARRERA DE
INGENIERÍADE LA INFORMACION
HERRAMIENTAS
INFORMATICAS
PARA INGENIEROS
Construcción de un programa
1. Definir el problema a resolver
2. Definir el algoritmo que lo resuelve
3. Escribir el programa
● Escribir cada uno de los pasos del algoritmo en el lenguaje de programación
4. Ejecutar el programa en el computador
5. Verificar que las salidas sean correctas
6. Hacer correcciones al programa
7. Resolver el problema
CARRERA DE
INGENIERÍADE LA INFORMACION
HERRAMIENTAS
INFORMATICAS
PARA INGENIEROS
Construcción de un algoritmo
Operaciones básicas
– Entrada de datos
– Salida de datos
– Utilización de variables
– Utilización de constantes
– Aplicación de operadores
– Asignación de valores
Combinación de operaciones básicas
– Secuencial
– Selectiva
– Repetitiva
CARRERA DE
INGENIERÍADE LA INFORMACION
HERRAMIENTAS
INFORMATICAS
PARA INGENIEROS
Utilización de variables
Durante la ejecución del algoritmo, es importante
recordar los resultados parciales de cada paso.
Estos resultados se etiquetan con un nombre.
Al invocar con posterioridad ese nombre,
recuperamos el resultados parcial.
CARRERA DE
INGENIERÍADE LA INFORMACION
HERRAMIENTAS
INFORMATICAS
PARA INGENIEROS
Utilización de variables
G=K/1000
Esta variable se denomina G y se utiliza para recordar el valor de un gramo de manzana.
K es un dato de entrada, y tambiénSe considera una variable
CARRERA DE
INGENIERÍADE LA INFORMACION
HERRAMIENTAS
INFORMATICAS
PARA INGENIEROS
Utilización de variables
La principal característica de una variable es que su valor puede cambiar en el tiempo.
Usualmente se compara con una caja donde se puede almacenar una sola “cosa”.
Por lo general, las variables se definen con un tipo de dato.
El tipo de dato restringe que tipo de “cosas” se pueden guardar en las “cajas”.
CARRERA DE
INGENIERÍADE LA INFORMACION
HERRAMIENTAS
INFORMATICAS
PARA INGENIEROS
Utilización de constantes
Además de las variables, un algoritmo requiere
de constantes.
A diferencia de las variables, su valor no puede
cambiar en el tiempo.
Las constantes también pueden recibir nombres
para mayor claridad.
– Ej.: PI = 3.1415
CARRERA DE
INGENIERÍADE LA INFORMACION
HERRAMIENTAS
INFORMATICAS
PARA INGENIEROS
Utilización de constantes
G=K/1000
La constante “1000” sirva para transformar el valor Por kilo a un valor por gramo
CARRERA DE
INGENIERÍADE LA INFORMACION
HERRAMIENTAS
INFORMATICAS
PARA INGENIEROS
Aplicación de operadores
Para obtener resultados, generalmente es necesario “transformar” las entradas en la salida.
Para esto se aplican operadores de distinta índole
– Aritméticos ( + , - , * , / )
– Lógicos (igual que, mayor que, menor que, y, o, no)
– Etc.
Los operadores requieren de operandos y entregan un resultado.
Por lo general, los operadores son unarios o binarios.
CARRERA DE
INGENIERÍADE LA INFORMACION
HERRAMIENTAS
INFORMATICAS
PARA INGENIEROS
Aplicación de operadores
M=G * P
operandos
operador
CARRERA DE
INGENIERÍADE LA INFORMACION
HERRAMIENTAS
INFORMATICAS
PARA INGENIEROS
Asignación de valores
El resultado de un operador se puede almacenar
en una variable.
Para esto se utiliza un tipo especial de operador.
Este es el operador de asignación.
Solo se pueden asignar valores a variables, no a
constantes
CARRERA DE
INGENIERÍADE LA INFORMACION
HERRAMIENTAS
INFORMATICAS
PARA INGENIEROS
Asignación de valores
M=G * P
Operador de asignación
El resultado de GxP se asigna a la variable M
CARRERA DE
INGENIERÍADE LA INFORMACION
HERRAMIENTAS
INFORMATICAS
PARA INGENIEROS
ANEXO
CARRERA DE
INGENIERÍADE LA INFORMACION
HERRAMIENTAS
INFORMATICAS
PARA INGENIEROSElementos, estructura y funcionamiento de un
sistema de cómputo
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
La CPU es el “cerebro” de la computadora
CU controla, secuencia de
operaciones a realizar, y sincroniza
todo el proceso que tiene lugar en la
computadora. ALU es la encargada de realizar
operaciones artiméticas y lógicas
CARRERA DE
INGENIERÍADE LA INFORMACION
HERRAMIENTAS
INFORMATICAS
PARA INGENIEROS
Funcionamiento de una computadora
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)
CARRERA DE
INGENIERÍADE LA INFORMACION
HERRAMIENTAS
INFORMATICAS
PARA INGENIEROS
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)
Funcionamiento de una computadora
CARRERA DE
INGENIERÍADE LA INFORMACION
HERRAMIENTAS
INFORMATICAS
PARA INGENIEROS
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
Funcionamiento de una computadora
CARRERA DE
INGENIERÍADE LA INFORMACION
HERRAMIENTAS
INFORMATICAS
PARA INGENIEROS
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
Funcionamiento de una computadora
CARRERA DE
INGENIERÍADE LA INFORMACION
HERRAMIENTAS
INFORMATICAS
PARA INGENIEROS
El disco duro
Disquetes magnéticos
Unidad CD-ROM
Unidad DVD
Memoria USB
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
Funcionamiento de una computadora
CARRERA DE
INGENIERÍADE LA INFORMACION
HERRAMIENTAS
INFORMATICAS
PARA INGENIEROS
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 centralUnidad de
control
Unidad lógico-
aritmética
Microprocesador
Funcionamiento de una computadora
CARRERA DE
INGENIERÍADE LA INFORMACION
HERRAMIENTAS
INFORMATICAS
PARA INGENIEROSNiveles de lenguajes programación
Lenguajes de máquina
Lenguajes
ensambladores
Lenguajes de alto nivel
Lenguajes declarativos
CARRERA DE
INGENIERÍADE LA INFORMACION
HERRAMIENTAS
INFORMATICAS
PARA INGENIEROS
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
Niveles de lenguajes programación
CARRERA DE
INGENIERÍADE LA INFORMACION
HERRAMIENTAS
INFORMATICAS
PARA INGENIEROS
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, Python,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
Niveles de lenguajes programación
CARRERA DE
INGENIERÍADE LA INFORMACION
HERRAMIENTAS
INFORMATICAS
PARA INGENIEROS
Lenguajes de programación
= Léxico + Sintaxis + SemánticaLenguaje de programación
CARRERA DE
INGENIERÍADE LA INFORMACION
HERRAMIENTAS
INFORMATICAS
PARA INGENIEROSAspectos a considerar en el diseño e
implementación de los lenguajes de programación
• Léxico
• Sintaxis
• Semántica
• Gestión de memoria
• Manejo de excepciones
• Implementación
• Pragmática
CARRERA DE
INGENIERÍADE LA INFORMACION
HERRAMIENTAS
INFORMATICAS
PARA INGENIEROS
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.)
Aspectos a considerar en el diseño e
implementación de los lenguajes de programación
CARRERA DE
INGENIERÍADE LA INFORMACION
HERRAMIENTAS
INFORMATICAS
PARA INGENIEROS
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
Aspectos a considerar en el diseño e
implementación de los lenguajes de programación
CARRERA DE
INGENIERÍADE LA INFORMACION
HERRAMIENTAS
INFORMATICAS
PARA INGENIEROS
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
Aspectos a considerar en el diseño e
implementación de los lenguajes de programación
CARRERA DE
INGENIERÍADE LA INFORMACION
HERRAMIENTAS
INFORMATICAS
PARA INGENIEROS
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
Aspectos a considerar en el diseño e
implementación de los lenguajes de programación
CARRERA DE
INGENIERÍADE LA INFORMACION
HERRAMIENTAS
INFORMATICAS
PARA INGENIEROS
Cómo se ejecutan los programas.
Implementación
Se refiere a los aspectos prácticos del uso de los programas.
Pragmática
Aspectos a considerar en el diseño e
implementación de los lenguajes de programación
CARRERA DE
INGENIERÍADE LA INFORMACION
HERRAMIENTAS
INFORMATICAS
PARA INGENIEROS
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
CARRERA DE
INGENIERÍADE LA INFORMACION
HERRAMIENTAS
INFORMATICAS
PARA INGENIEROS
Traductores de lenguajes
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.
CARRERA DE
INGENIERÍADE LA INFORMACION
HERRAMIENTAS
INFORMATICAS
PARA INGENIEROS
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
Traductores de lenguajes
CARRERA DE
INGENIERÍADE LA INFORMACION
HERRAMIENTAS
INFORMATICAS
PARA INGENIEROS
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
Traductores de lenguajes
CARRERA DE
INGENIERÍADE LA INFORMACION
HERRAMIENTAS
INFORMATICAS
PARA INGENIEROS
Fases de la compilación de un programa
Programa
fuente CompiladorPrograma
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
Traductores de lenguajes
CARRERA DE
INGENIERÍADE LA INFORMACION
HERRAMIENTAS
INFORMATICAS
PARA INGENIEROS
Paradigmas de programación
• Programación imperativa
• Programación funcional
• Programación lógica
• Programación orientada a objetos
• Programación concurrente
• Programación guiada por eventos
CARRERA DE
INGENIERÍADE LA INFORMACION
HERRAMIENTAS
INFORMATICAS
PARA INGENIEROS
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
CARRERA DE
INGENIERÍADE LA INFORMACION
HERRAMIENTAS
INFORMATICAS
PARA INGENIEROS
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
CARRERA DE
INGENIERÍADE LA INFORMACION
HERRAMIENTAS
INFORMATICAS
PARA INGENIEROS
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
Paradigmas de programación