CLASE01_LECTURA

11
ALGORITMOS ALGORITMOS OBJETIVO Aprender las diferentes técnicas para resolución de problemas mediante algoritmos, para luego tener la capacidad de plasmarlos mediante el uso de algún lenguaje de programación. CONCEPTOS PRELIMINARES A) Que es una computadora. B) Organización física de una computadora (hardware). C) Los programas (software). D) Los lenguajes de programación. A) ¿Que es una computadora? Es una maquina electrónica digital capaz de procesar datos a partir de un grupo de instrucciones denominado programa, proporcionando una información resultante. ¿Qué es un dato? Es un conjunto de símbolos utilizados para expresar: un valor numérico, un hecho, un objeto o una idea, para ser objeto de tratamiento. Ejemplo: 25, soltero, cuaderno, grande, etc. ¿Qué es información? Es la transformación de los elementos procesados. Los datos de entrada se convierten en información significativa. B) Organización Física de la Computadora - HARDWARE Una computadora necesita: •Aceptar la entrada y visualizar la salida. •Almacenar la información en un formato consistente. •Ejecutar las operaciones aritméticas o lógicas. •Monitorizar, controlar y dirigir las operaciones del sistema.

Transcript of CLASE01_LECTURA

Page 1: CLASE01_LECTURA

ALGORITMOSALGORITMOS

OBJETIVOAprender las diferentes técnicas para resolución de problemas mediante algoritmos, para luego tener la capacidad de plasmarlos mediante el uso de algún lenguaje de programación.

CONCEPTOS PRELIMINARESA) Que es una computadora.B) Organización física de una computadora (hardware).C) Los programas (software).D) Los lenguajes de programación.

A) ¿Que es una computadora?Es una maquina electrónica digital capaz de procesar datos a partir de un grupo de instrucciones denominado programa, proporcionando una información resultante.

¿Qué es un dato?Es un conjunto de símbolos utilizados para expresar: un valor numérico, un hecho, un objeto o una idea, para ser objeto de tratamiento. Ejemplo: 25, soltero, cuaderno, grande, etc.¿Qué es información? Es la transformación de los elementos procesados. Los datos de entrada se convierten en información significativa.

B) Organización Física de la Computadora - HARDWAREUna computadora necesita:•Aceptar la entrada y visualizar la salida.•Almacenar la información en un formato consistente.•Ejecutar las operaciones aritméticas o lógicas.•Monitorizar, controlar y dirigir las operaciones del sistema.

Page 2: CLASE01_LECTURA

Unidad Central de Proceso (Procesador)•Ejecuta instrucciones de programa. La potencia de una computadora depende completamente de la velocidad y fiabilidad de la CPU.•Dirige y controla el proceso de información realizado por la computadora.•En el se encuentra:

La Unidad Aritmética Lógica (ALU) La Unidad de Control

Periférico o Dispositivos de Entrada/Salida•Estos dispositivos permiten al usuario comunicarse con la computadora. Algunos dispositivos típicos de E/S son el teclado, la impresora, monitor, etc.Memoria Central•La información procesada por la UCP se almacena normalmente en la memoria central, hasta que se terminan los cálculos. Dispositivos de Almacenamiento Secundario•Usados para almacenar grandes cantidades de información. •Los datos se guardan en dispositivos de almacenamiento auxiliar y luego para ser procesados por la CPU, tienen que llevarse a la memoria central.

C) Los programas - SOFTWARE Clasificaciones del SW

1. Sistemas Operativos2. Lenguajes de programación3. Software de uso general.4. Software de aplicaciones.

1. Sistemas Operativos: Conjunto de programas que se emplean para operar una computadora. Estos programas deberán encontrarse grabados en un diskdrive o como es frecuente en el disco duro. •Si el S.O. no se encuentra presente, ningún otro programa puede ejecutarse. •El S.O. Es el vinculo entre el usuario y la computadora.

1.1 Tareas del Sistema Operativo:- Da inicio a la sesión del computador proporcionado una interfaz de

línea de comando o una interfaz gráfica.Administra los dispositivos de Hw.- Administra y mantiene los sistemas de archivo.

Page 3: CLASE01_LECTURA

- Apoyo a otros programas.1.2. Categorías del Sistema Operativo A)A) MULTITAREA:MULTITAREA: Correr más de un programa al mismo tiempo.B)B) MULTIUSUARIO:MULTIUSUARIO: Accesar más de un usuario a una computadora.C)C) MULTIPROCESO:MULTIPROCESO: Computadoras con más de un CPU.2. Lenguajes de Programación:Son SW que sirven para escribir programas que permiten la comunicación usuario/máquina.3. Sw de Uso General:Ofrecen su estructura para un gran numero de aplicaciones empresariales, científicas y personales.4. Sw de Aplicaciones: Diseñado para realizar tareas especificas.D) Los Lenguaje de ProgramaciónEs una técnica estándar de comunicación que permite expresar las instrucciones que han de ser ejecutadas en una computadora. Consiste en un conjunto de reglas sintácticas y semánticas que definen un programa informático. Tipos de LenguajesLENGUAJES DE MAQUINA

o LENGUAJE DE BAJO NIVEL (ENSAMBLADOR)o LENGUAJE DE ALTO NIVEL.

LENGUAJE DE MAQUINA:Son aquellos que están escritos en lenguajes directamente inteligibles por la maquina (computadora).Sus instrucciones son cadenas binarias (cadenas o series de caracteres dígitos 0 y 1) que especifican una operación.LENGUAJE DE BAJO NIVEL:Por excelencia es el ensamblador (assembly language). Las instrucciones en lenguaje ensamblador son instrucciones conocidas como nemotécnicos. Por ejemplo, nemotécnicos típicos de operaciones aritméticas son: en ingles add, sub, div, etc. En español, sum, res, div, etc. Una instrucción típica de suma seria: ADD M, N,P – 0110 1001 1010 1011LENGUAJE DE ALTO NIVEL:Son los mas utilizados por los programadores. Es independiente de la maquina, es decir, no dependen del diseño del Hw o de la computadora.Son portables o transportables. Lo que significa que pueden ser ejecutados con poca o ninguna modificación en diferentes tipos de computadora. Instrucciones tales como: READ, WRITE, PRINT, OPEN,ETC.

PROGRAMAEs un conjunto de instrucciones sencillas escritas en un lenguaje de programación, que al ser recogidas por un interprete son traducidas para poder ser ejecutadas.Conjunto de instrucciones que el computador debe ejecutar para solucionar un problema determinado.

PROG. FUENTE: Programa escrito en lenguaje de alto nivel que no a sido traducido a lenguaje máquina.PROG. OBJETO: Programa en lenguaje de máquina, que puede ser ejecutado.COMPILADOR: Traductor que convierte sentencias de código fuente a código objeto.INTERPRETE: Traductor que ejecuta un programa línea por línea no modificando la forma original.

Compilador Un compilador es un programa que lee el programa escrito en un lenguaje fuente y lo traduce a otro programa equivalente llamado lenguaje objeto.

PROGRAMA FUENTE

PROGRAMA OBJETO

PROGRAMA EJECUTABLE

COMPILACION ENLACE

Page 4: CLASE01_LECTURA

Es un traductor que convierte un texto escrito en un lenguaje fuente de alto nivel en un programa objeto en código máquina.

Intérprete Analiza una instrucción fuente y la ejecuta directamente sin generar código objeto. Es un traductor que realiza la operación de compilación paso a paso.

COMPILADOR vs. INTERPRETE

La principal ventaja del proceso de compilación frente al de interpretación es que los programas se ejecutan mucho más rápido una vez compilados.

Estructura del proceso de compilación

Lenguaje de Programa

Fuente

Programa en Lenguaje Objeto

CompiladorCompilador

ERROR Y DIAGNOSTICO

Lenguaje de Programa

Fuente

SalidaIntérpreteIntérprete

DATOS

Page 5: CLASE01_LECTURA

ANÁLISIS LEXICOGRÁFICO O LÉXICOSupongamos que un compilador tiene que analizar la siguiente preposición:

Preposición: A = B + C * 10

Análisis léxicoEl analizador léxico lee los caracteres del programa fuente, y verifica que correspondan a una secuencia lógica (identificador, palabra reservada, etc.).

A = B + C * 10

id1 = id2 + id3 * 10

ANÁLISIS SINTÁCTICOEl analizador sintáctico impone una estructura jerárquica a la cadena de componentes léxicos, generada por el analizador léxico, que es representada en forma de un árbol sintáctico.

id1 = id2 + id3 * 10 =

   / \id1  +

/ \ id2  * /   \      id3  10

ANÁLISIS SEMÁNTICO

Page 6: CLASE01_LECTURA

El analizador semántico verificara en este caso que cada operador tenga los operandos permitidos.

= /   \id1   +    /   \   id2   *         /   \      id3 tipo_ent               |             10

GENERADOR DE CÓDIGO INTERMEDIOEn esta etapa se lleva la preposición a una representación intermedia como un programa para una maquina abstracta.

temp1 = tipo_ent (10)temp2 = id3 * temp1temp3 = id2 + temp2 id1 = temp3

OPTIMIZACIÓN DE CÓDIGOEl código intermedio obtenido es representado de una forma mas optima y eficiente.

temp1 = id3 * 10id1 = id2 + temp1

GENERADOR DE CÓDIGOFinalmente lleva el código intermedio a un código objeto que en este caso es un código relocalizable o código ensamblador (también llamado código no enlazado).

MOVF id3, R2MULT #10, R2MOVF id2, R1ADDF R2, R1MOVF R1, id1

RESOLUCIÓN DE PROBLEMAS

Análisis del problema.

Diseño del algoritmo.

Codificación.

Compilación y ejecución.

Verificación y Depuración.

Documentación.

Análisis del problema- Se determina QUE hará el programa y cual será la solución

deseada.- oSe precisan las entradas y salidas a obtenerse.Diseño del algoritmo Se

determina COMO hace el programa la tarea solicitada.- Se emplea el método de Diseño Descendente o Modular, el cual

permite dividir un problema complejo en subproblemas y estos en otros de nivel mas bajo.

Codificación de un programa- Es la representación de un algoritmo en un lenguaje de

programación.- Debido a que el algoritmo es independiente al lenguaje de

programación, el código puede ser escrito con igual facilidad en un lenguaje u otro.

Page 7: CLASE01_LECTURA

Compilación y ejecución de un programa- Operación de convertir un programa fuente en programa objeto.- Cuando no existe errores en un programa fuente se instruye al

sistema operativo para que realice una fase de montaje o enlace del programa objeto con las librerías del programa del compilador produciendo un programa ejecutable.

Verificación y depuración de un programa- Proceso de encontrar errores corregirlos o eliminarlos.- Implica la ejecución de un programa con una amplia variedad de

datos de entrada.o Errores de compilacióno Errores de ejecucióno Errores lógicos

Documentación- Descripción de los pasos para la solución de un problema.- La documentación de un programa puede ser interna o externa.- Es importante para corregir posibles errores o realizar cambios al

programa.

ALGORITMO Método para resolver un problema, mediante una serie de pasos precisos, definidos y finitos. Produce un resultado en un tiempo finito. Existe diferentes formas de dar solución a un mismo problema. La palabra algoritmo se deriva de la traducción al latín de la palabra Al-khowariz-mi (algorismus), nombre de un matemático y astrónomo árabe que escribió un tratado sobre manipulación de números y ecuaciones en el siglo IX. Euclides, matemático griego, es considerado también el otro gran padre de la algoritmia.En las ciencias de la computación, los algoritmos son mas importantes que los lenguajes de programación o las computadoras.

CARACTERISTICAS DE UN ALGORITMO- Preciso: indica un orden de realización de cada paso a realizar.- Definido: Si se sigue un algoritmo mas de una vez se obtiene el

mismo resultado.- •Finito: todo algoritmo tiene un inicio y un fin, es decir debe tener un

número finito de pasos.PASOS A SEGUIR EN LA CONSTRUCCION DE UN ALGORITMO La definición de un algoritmo debe describir tres partes:Entrada

- Proceso- SalidaEjemplo: Hallar el área de un triángulo.Calculando el área de un

triángulo 1. Lo que voy a obtener es el área del triángulo, a ello le llamamos salida.2. Lo que necesito conocer para calcular el área del triángulo es mínimo la base y la altura, a ello le llamamos entrada.3. Para obtener la salida que buscamos (el área) gracias a los datos de entrada (base y altura) lo podemos calcular con la fórmula: A=(b*h)/2, a ello le llamamos proceso.HERRAMIENTAS PARA EL DISEÑO DE ALGORITMOSDiagrama de flujo (flowchart).

Diagrama N- S (Nassi-Schneiderman). Pseudocódigo.

Diagrama de Flujo

• Es la representación de algoritmos utilizando símbolos gráficos unidos por flechas, denominadas líneas de flujo, que indican la secuencia de ejecución.

Page 8: CLASE01_LECTURA

• Los símbolos utilizados han sido normalizados por el Instituto Norteamericano de Normalización (ANSI).

Símbolos de diagrama de flujo

•Terminal: Indica comienzo y final de todo programa.

•Entrada / Salida: Operaciones que tienen relación con los dispositivos de entrada/salida.

• Proceso: Operaciones aritméticas a realizarse.

•Decisión: Indica operaciones lógicas o de comparación, en función al resultado determina cual de los caminos debe seguir

•Decisión Múltiple: En función al resultado de la comparación seguirá uno de los diferentes caminos.

•Dirección del flujo o línea de flujo.

•Línea Conectora: sirve de unión entres dos símbolos

•Conector: Continuación del flujo dentro de la misma página.

•Conector: Continuación del flujo en páginas diferentes.•Subrutina: Modulo independiente del programa, que recibe una entrada, realiza una tarea y regresa al programa Principal.

•Comentarios: permite añadir comentarios en cualquier símbolo del diagrama de flujo.

•Pantall a: se utiliza en ocasiones en lugar del símbolo de Entrada/Salida

•Impresora: se utiliza en ocasiones en lugar del símbolo de Entrada/Salida

•Teclado: se utiliza en ocasiones en lugar del símbolo de Entrada/Salida

Fin

Inicio

LeerB, H

2

* HBA

EscribirA

No

Si

Page 9: CLASE01_LECTURA

Nassi-Schneiderman

• Es como un diagrama de flujo en el que se omiten las flechas de unión y las cajas son continuas.

• Un algoritmo se representa con un rectángulo en el que cada banda es una acción a realizar.

Inicio

Fin

Pseudocodigo

• Es un lenguaje de especificación de algoritmos.

• Representa el algoritmo en secuencias lógicas de actividades utilizando verbos expresivos.

• Utiliza un lenguaje de comunicación propio como el inglés, español entre otros.

• La ventaja del pseudocódigo es que en la planificación del programa, el programador se concentra en la lógica sin preocuparse en la reglas de un lenguaje de programación específico.

InicioLeer (Base, Altura)Calcular

Escribir AreaFin

EscribirArea

Calcular

LeerBase, Altura

2

* AlturaBaseArea