Anda di halaman 1dari 27

https://sites.google.

com/site/progestructuradauam2018/

sistemas.azc.uam.mx/nube

Algoritmos y Computabilidad
Definición de algoritmo.
• Describe el método para realizar una tarea.

• Es una secuencia de instrucciones lógicas y finitas que,


ejecutadas adecuadamente, dan lugar al resultado deseado.

• Es un proceso de solución a un problema informático

• Nos permiten implementar un programa informático

Ejemplos de algoritmos no informáticos:


a) Receta de cocina
b) Una partitura musical
c) El cálculo de los promedios,, etc.

2
Las propiedades de un Algoritmo

• Finitud: Número finito de pasos

• Definibilidad: Cada paso definido de un modo preciso

• Conjunto de Entradas: Datos iniciales del algoritmo

• Conjunto de Salidas: Respuesta que obtenemos del


algoritmo

• Efectividad: Las operaciones a realizar deben ser básicas,


para que el procesador pueda realizarlas
de modo exacto y en tiempo finito.

3
Estructura general: Ejemplo:

- Introduzca su fecha de nacimiento.


Datos Entrada
- Introduzca la fecha de hoy.

Procesamiento - Calcular la diferencia de años.

Datos Salida - Imprime la edad calculada.

4
Diagramas de flujo

inicio

fin
Pseudocódigo

Es una descripción de alto nivel de un algoritmo


informático de programación, compacto e
informal, que utiliza las convenciones
estructurales de un lenguaje de programación
verdadero,

pero que está diseñado para la lectura humana


en lugar de la lectura mediante máquina, y con
independencia de cualquier otro lenguaje de
programación.

El pseudocódigo omite detalles que no son


esenciales para la comprensión humana del
algoritmo (declaraciones de variables, código
específico del sistema y algunas subrutinas).
Ejemplo

Calcular la suma de 10 números impares


¿Como decírselo a la máquina?
Ejemplo

Calcular la suma de 10 números impares


¿Como decírselo a la máquina?


Un algoritmo alternativo:
¿Qué es computabilidad?
Consiste en ser capaz de encontrar la representación
adecuada para la descripción de un problema o
fenómeno.

Para tal representación es necesario:


- Un conjunto finito de símbolos.
- Hacer asociaciones entre conceptos y elementos del lenguaje
(de símbolos)
- Encontrar las combinaciones adecuadas de símbolos para
evitar ambigüedad.
- Definir una manera de confirmar tal descripción para que
terceros puedan reproducirla y llegar a los mismos resultados.

9
El concepto de modelo
Modelo: es una especificación, generalmente en términos de un
lenguaje matemático, de los pasos necesarios para reproducir un
subconjunto determinado de la realidad. La representación del
modelo surge siempre a partir de su descripción.

¿Es posible siempre pasar de la descripción de un modelo a su


representación? ¿Todo lo que es descriptible puede ser
representable?
- Aparentemente la exactitud de la descripción hace depender a la
exactitud de la representación.
- Existen procesos que pueden ser descritos con gran exactitud, pero
su representación o modelado no es posible.

10
Teoría de la computabilidad
La Teoría de la Computabilidad consiste en encontrar
maneras de representar descripciones de procesos,
de tal manera que se pueda asegurar si existe o no
una representación.

Se dice que un algoritmo es una manera formal y


sistemática de representar la descripción de un
proceso.

11
La máquina de Turing
La máquina de Turing es el primer modelo teórico de lo que
luego sería una computadora programable (1936).

Con el tiempo a este tipo de máquina se la conoció como


máquina de estado finito, debido a que en cada etapa de un
cálculo, la siguiente acción de la máquina se contrastaba con
una lista finita de instrucciones de estado posibles.

* La “máquina” no se debe confundir con un aparato físico. Se trata más bien


de una construcción matemática.
12
Contenido

Una cinta de longitud infinita dividida en celdas (cada celda
puede tener solamente un símbolo tomado de un diccionario de
símbolos predefinido).


Un control finito que tiene la capacidad de examinar el algún
símbolo de alguna celda y tomar una decisión que depende del
símbolo observado y del estado en que se encuentre el control
finito.
El control es finito porque puede estar solamente en alguno de
los estados posibles, habiendo solamente un número finito de ellos.


Se supone un diccionario de símbolos finto.

13
https://es.wikihow.com/convertir-de-decimal-a-binario

Sistema Binario
Utiliza solo dos dígitos, 0 y 1. Un número en binario
representa una suma de potencias de 2. Ejemplo:
1101002 = 1*25+ 1*24+ 0*23+ 1*22+ 0*21+ 0*20
= 32 + 16 + 0 + 4 + 0 + 0 = 5210
Para convertir de decimal a binario se sigue el siguiente
esquema (el número 210):
105 52 26 13 6 3 1 0
2 210 105 52 26 13 6 3 1
0 1 0 0 1 0 1 1
El binario se obtiene de la secuencia reversa de los residuos
14
El número binario equivalente es: 11010010
Ejemplo de máquina de 3 cintas

https://es.wikipedia.org/wiki/Máquina_de_Turing

15
Ejemplo funcionamiento
de CPU

16
EJEMPLO DE PROCESADOR
El procesador contiene un acumulador para
almacenar uno de los operandos antes de realizar
las operaciones binaria y almacenar el resultado
después de éstas. Memoria
dir contenido
Acumulador
00000 00000000
00000000

00001 00000000
CPU
00010 00000000

... ...

17
11111 00000000
Formato de las instrucciones

Las instrucciones constan de secuencias de 8 bits.


Los primeros tres bits se utilizan para el código de la
operación.
Los últimos cinco bits representan la dirección del operando.

0 1 1 0 1 1 0 1

Código de la instrucción Dirección del operando


18
CONJUNTO DE INSTRUCCIONES
Código Significado
de operación
001 Load (carga): cópiese el valor de la palabra direccionada en el
acumulador
010 Store (almacena): cópiese el valor del acumulador en la palabra
direccionada
011 Add (suma): reemplácese el valor actual del acumulador por la
suma del valor actual y el valor de la palabra direccionada.
100 Substract (resta): reemplácese el valor actual del acumulador
por el resultado que se obtiene al restar, del valor actual, el
valor de la palabra direccionada.
101 Branch (salta): Pásese a ejecutar la
instrucción contenida en la palabra direccionada.
110 Branch if not 0 (salta si no 0): Pásese a ejecutar la
instrucción contenida en la palabra direccionada solamente si
el valor actual del acumulador es diferente de cero.
111 Halt (alto): termina ejecución.
19
EJEMPLO DE PROGRAMA

Dirección de la instrucción Código de la operación Operando


00000 001 01010
00001 010 01100
00010 001 01110
00011 011 01011
00100 010 01110
00101 001 01100
00110 100 01101
00111 010 01100
01000 110 00010
01001 111 00000

20
Programa con mnemónicos
Direccion Mnemónico Operando
00 carga 10
01 almacena 12
02 carga 14
03 suma 11
04 almacena 14
05 carga 12
06 resta 13
07 almacena 12
08 salta si no 0 02
09 alto

21
CONTENIDO DE LA MEMORIA ANTES DE LA
EJECUCIÓN

Programa

Datos

22
CONTENIDO DE LA MEMORIA DESPUÉS DE
LA EJECUCIÓN
Dirección
en binario Contenido
00000 00101010
00001 01001100
00010 00101110
00011 01101011
00100 01001110
00101 00101100
00110 10001101
00111 01001100
01000 11000010
01001 11100000
01010 00000011
01011 00000100
01100 00000000
Datos 01101 00000001
01110 00001100 Resultado
01111 00000000
23
Problema de ejemplo
Se desea evaluar la fórmula 3A + 2B – C, con A = 5, B = 8, C = 3.
Se requieren al menos 3 localidades de memoria, una para A, otra para B
y otra para C. Elegimos las localidades con direcciones 10, 11 y 12 para
ese propósito. Para guardar el resultado se usará la dirección 13.

Para evaluar la fórmula se harán los siguientes pasos:

}
1. Cargar el valor de A en el acumulador Calcula 3A
2. Sumarle el valor de A al acumulador
3. Sumarle el valor de A al acumulador
4. Sumarle el valor de B al acumulador
5. Sumarle el valor de B al acumulador } Calcula 3A + 2B
6. Restarle el valor de C al acumulador
7. Almacenar resultado
8. Terminar
Calcula 3A + 2B – C
24
Programa Dirección Contenido

00000 00101010

00001 01101010
Dir Mnemónico Operando
00 carga 10
01 suma 10 00010 01101010
02 suma 10
03 suma 11 00011 01101011
04 suma 11
05 resta 12
06 almacena 13 00100 01101011
07 alto
00101 10001100

00100 01001101

00111 25 11100000
Tarea 2
Escriba un programa para la CPU que evalúe la siguiente expresión:
4*A – 3*B + 10
Pruebe el programa para a) A = 5 y B = 4 b) A = 3 y B = 6 explique los
resultados.

001 – load: cargar en el acumulador


010 – store: almacena en memoria
011 – add: suma al acumulador
100 – substract: resta al acumulador
101 – branch: salta a la instrucción direccionada
110 – branch if not 0: salsa si no cero a la instrucción direccionada
111 – halt: detiene 26
discusión
Discuta y defina los siguientes conceptos
CPU Bit
Memoria Byte
Dirección de memoria Número binario
Contenido de una localidad Programa
Instrucción Mnemónico
Código de instrucción Operando de una instrucción
Acumulador Salto condicional

27

Anda mungkin juga menyukai