Introduccion a los algoritmos

Preview:

Citation preview

INTRODUCCION A LOS ALGORITMOS

Institución educativa Cristóbal ColónGrado 9

Montería, CórdobaColombia

SISTEMAS DE PROCESAMIENTO DE INFORMACION

Computadora: Maquina o aparato electrónico capaz de ejecutar operaciones repetitivas a muy alta velocidad.

Entrada = Datos Salida = InformaciónPROCESADOR

Representación de algún hecho, concepto o entidad real (los datos pueden tomar diferentes formas; por ejemplo palabras escritas o habladas, números y dibujos).

Datos procesados y organizados.

COMPONENTES DE UN SISTEMA DE PROCESAMIENTO DE INFORMACION

PREGUNTA

¿Cuáles son los roles de cada de uno de estos actores

respecto a los sistemas de procesamiento y

automatización de la información?

Desarrolladores

Usuarios

Técnicos

¿QUÉ ES PROGRAMACIÓN?

Definiciones de Programación en la web:

• Programación es el acto de crear un programa de computadora, un conjunto concreto de instrucciones que una computadora puede ejecutar. El programa se escribe en un lenguaje de programación, aunque también se pueda escribir directamente en lenguaje de máquina, con cierta dificultad. Un programa se puede dividir en diversas partes, que pueden estar escritas en lenguajes distintos. es.wikipedia.org/wiki/Programaci%C3%B3n

• La acción de escribir un programa de computación.www.laopinion.com/glossary/p.html

SOFTWARE DE DESARROLLO: LENGUAJES DE PROGRAMACIÓN

• El software o programas de desarrollo se utilizan para crear aplicaciones, para resolver problemas científicos, comerciales, administrativos o de cualquier tipo.

• Estos programas se denominan lenguajes de programación y están integrados por programas y utilerías que facilitan la construcción para los usuarios del sistema informático.

• El ordenador solo es capaz de procesar en lenguaje maquina o lenguaje nativo, binario.

• Debido a la dificultad para usar este lenguaje, se inventaron otros lenguajes que permitieron crear programas en cualquier computadora y traducirlos al lenguaje de una máquina en particular.

SOFTWARE DE DESARROLLO

• Un lenguaje de programación es un conjunto de símbolos, instrucciones y enunciados que están sujetos a una serie de reglas.

Utilizan un léxico, una sintaxis y una semántica.• Léxico: conjunto de símbolos conocido como

vocabulario

• Sintaxis: reglas para construir el lenguaje

• Semántica: conjunto de significados de un lenguaje

1. Lenguaje máquina (lenguaje de bajo nivel)

Categorías de los Lenguajes de Programación

2. Lenguaje Ensamblador (lenguaje de nivel medio)

• Emplea representación simbólica y utiliza procedimientos mnemotécnicos de funciones matemáticas. Los datos se identifican con nombres y permiten la introducción de comentarios para entender el programa con mayor facilidad y optimiza los recursos del hardware.

Categorías de los Lenguajes de Programación

3. Lenguaje de alto nivel

• Lenguajes más acorde con el lenguaje humano.• Utilizan palabras y frases (por lo general en inglés). • Permiten modificar los códigos de los programas con

facilidad.• Son independientes de la estructura física de la

computadora, contando con instrucciones de uso frecuente como las funciones matemáticas.

• Son lenguajes de programación alejados del lenguaje máquina lo cual necesitan ser traducidos antes de ejecutarse y esta tarea se realiza por medio de los intérpretes o los compiladores.

Categorías de los Lenguajes de Programación

• INTÉRPRETES: traducen el programa instrucción por instrucción y este proceso se realiza cada vez que se ejecuta el programa. Permiten al programador realizar correcciones durante el proceso de compilación.

• COMPILADORES: funciona en dos etapas: en la primera traducen el programa y en la segunda crean un programa objeto en lenguaje máquina. Indican antes de su ejecución si existen errores para que el programador realice sus correcciones.

SOFTWARE DE APLICACIÓN

• Conjunto de aplicaciones que realizan las funciones más comunes dentro de la casa, escuela u oficina. Son aplicaciones básicas que todo usuario debe conocer.

• Procesador de textos: Word, WordPad, Block de Notas, Edit Pad, Ultra Edit 32, …

• Hoja de Cálculo: Excel, Quattro Pro, GS-Calc, yCode, …• Programa de Presentaciones: PowerPoint, Freelance Graphics,

Corel Presentations, …• Editor de gráfico: Corel Draw, Publisher, PageMaker,

QuarkXpress, …• Administrador de base de datos: dBase, Access, MySQL,

FoxPro, …• Navegador de Internet: Explorer, Netscape Navigator, Mozilla,…• Correo electrónico: Outlook, CC-Mail, Eudora,…• Agenda Electrónica: Outlook, PDA´S,…

EVOLUCIÓN DE LOS LENGUAJES DE PROGRAMACIÓN

• Primera Generación: se relacionan con las máquinas integradas por bulbos. Se programaban con base en instrucciones en lenguaje máquina.

• Segunda Generación: se desarrollan los lenguajes ensambladores.

• Tercera Generación: aparecen los primero lenguajes de alto nivel, algunos de los cuales están vigentes hasta la fecha como BASIC, PASCAL, FORTRAN, C++ y COBOL entre otros.

• Cuarta Generación: son los lenguajes orientados a objetos y gestión de base de datos, tales son los casos de Visual Basic o SQL

• Quinta Generación: son los lenguajes orientados hacia las aplicaciones de inteligencia artificial. Algunos ejemplos son: LISP y PROLOG.

CARACTERÍSTICAS DE LOS LENGUAJES DE ALTO NIVEL

• Los programas creados con ellos se pueden ejecutar en computadoras de distinta arquitectura.

• El programa escrito debe ser traducido a lenguaje máquina.

• Al traducir una instrucción del programa fuente, genera varias instrucciones en lenguaje máquina.

• Las instrucciones se parecen al lenguaje natural de las personas. (inglés)

• Incluyen funciones matemáticas, de texto y lógicas.• No aprovechan completamente los recursos

internos de la máquina.

LENGUAJES DE PROGRAMACION

;Lenguaje ensamblador, sintaxis Intel para procesadores x86mov eax,1 ;mueve a al registro eax el valor 1 xor ebx, ebx ;pone en 0 el registro ebx int 80h ;llama a la interrupción 80h (80h = 128 sistema decimal)

{Lenguaje Pascal} program suma;

var x,s,r:integer; {declaración de las variables} begin {comienzo del programa principal} writeln('Ingrese 2 números enteros');{imprime el texto} readln(x,s); {lee 2 números y los coloca en las variables x y s} r:= x + s; {suma los 2 números y coloca el resultado en r} writeln('La suma es ',r); {imprime el resultado} readln; end.{termina el programa principal}

HABLEMOS DE ALGORITMOS…

La palabra Programación resulta muy cercana y familiar; se puede relacionar con un programa de televisión, con un programa político, con la programación de horas de estudio, etc.

Al fijarnos en los ejemplos anteriores, vemos que todos ellos tienen algo en común: intentan realizar una actividad de un modo ordenado.

Cuando se especifican y determinan los pasos que se deben dar, así como el orden en que han de realizarse para poder llevar a cabo cualquier actividad, estamos especificando lo que se define como algoritmo.

EJEMPLO

• Supongamos que queremos escuchar un disco de música. Para hacer esto necesitamos definir

una serie de pasos que constituirán el algoritmo:

• 1. Dirigirnos a la estantería.• 2. Seleccionar el CD a escuchar.• 3. Sacar el CD seleccionado de la estantería.• 4. Abrir la funda y extraer el CD.• 5. Abrir la bandeja del reproductor de CD.• 6. Introducir en la bandeja el CD seleccionado.• 7. Cerrar la bandeja del reproductor.• 8. Pulsar play.

SISTEMAS DE PROCESAMIENTO DE INFORMACION

Algoritmo: Conjunto de instrucciones que especifica la secuencia de operaciones a realizar, en orden, para resolver un problema especifico, en otras palabras un algoritmo es una formula para la resolución de un problema.

Un programa es similar a un algoritmo: la gran diferencia es que los pasos que permiten resolver el problema deben escribirse en un determinado lenguaje de programación para que el ordenador pueda ejecutarlos y encontrar así la solución.

Un programa de computadora se escribe en un lenguaje de programación, un algoritmo representa una solución a un problema. Cuando escribimos un programa codificamos un algoritmo.

GENERALIDADES SOBRE LOS ALGORITMOS

Metodología de programación: Consiste en la metodología aplicada para la resolución de problemas mediante programas.

Descripción ordenada de la secuencia de pasos (sin ambigüedades) que conducen a la solución de problema dado (Análisis del problema y desarrollo del algoritmo).

Expresar el algoritmo como un programa en el lenguaje de programación adecuado.

Ejecución y validación del programa de computadora.

Tarea que se desea resolver.

La definición de un algoritmo debe describir tres partes: Entrada, proceso y salida. Ejemplo: La receta de un sancocho.

SOLUCIÓN DE PROBLEMAS APLICANDO MODELOS MATEMÁTICOS

FÓRMULASDATOS RESULTADOS

Entrada SalidaProceso

Básicamente en esto consiste la solución de un problema según el Modelo matemático. Véase la similitud con el esquema de un sistema de representación de información. La identificación de las entradas (datos que tenemos para solucionar el problema), procesos ( formulas, mensajes, procedimientos) y salidas (la solución) es indispensable cuando queremos formular algoritmos.

ANALISIS ALGORITMO

¿Qué datos necesito?

(ENTRADA)

Capturar el numero 1

Capturar el numero 2

¿Qué formulas voy a utilizar?

(PROCESO)

Algoritmo de la suma:

Suma = numero 1 + numero 2

¿Qué resultados voy a obtener?

(SALIDA)

Imprimir el resultado de la suma.

CARACTERÍSTICAS Y FORMAS DE LOS ALGORITMOS

Tres características básicas:1. Preciso: debe ser concreto, no tener pasos de

mas y la solución tiene que ser clara y concreta.2. Congruente: al probarse varias veces los

resultados deben ser los mismos.3. Finito: al seguir los pasos deben llegar a la

solución, es decir, debe tener termino.

Los algoritmos pueden ser creados (representados) de dos formas distintas:

1. Pseudo-código: es un conjunto pequeño y claro de instrucciones; en secuencia, que permite llevar a cabo una tarea.

2. Diagrama de flujo: es la representación de la secuencia, a través de símbolos, de la tarea que se va a realizar.

CARACTERÍSTICAS Y FORMAS DE LOS ALGORITMOS

En pseudo-código: Lenguaje natural-alg.

Inicio

Escribe: (“calcula el area de cualquier rectángulo”)

Escribe: (“de largo mide”)

Captura: (largo)

Escribe: (“de ancho mide”)

Captura: (“ancho”)

Formula: área = largo x ancho

Escribe: (“ el area mide:” , area)

fin

CARACTERÍSTICAS Y FORMAS DE LOS ALGORITMOS

En diagrama de flujo

inicio ancho largo

Área = largo x anchoáreafin

Entrada (in) Entrada (in)

Salida (out)

PROCESO

GENERALIDADES SOBRE LOS ALGORITMOS

• Describir los pasos para cruzar la calle.

• Describa los pasos para llevar a una amiga a cine.

• Describa los pasos para cambiar la llanta pinchada de una cicla.

• Describa los pasos para cambiar un bombillo quemado.

Algoritmo Programa

ATENCIÓN!

• Hasta aquí vana escribir en sus cuadernos. Estudien para la próxima clase.

¿Cómo resuelvo un problema?

Para entender como resolver un problema debemos entender el siguiente esquema, según Polya.

Inicio

Entender el problemaBásicamente es poner a prueba nuestra comprensión de lectura (también puede ser oral) del problema.

Debemos seguir estos pasos:

1.Leer y re leer el problema

2.Entender la pregunta, es decir, tener claro cual es el resultado esperado.

3.Identificar los datos importantes

4.Organizar y clasificar los datos e información

5.Realizar un esquema o figura.

Trazar (configurar) un plan

Esto quiere decir que acciones debemos hacer con los datos y verificar nuestros datos, por lo que debemos tener presente estas preguntas:

•¿Qué operaciones (acciones) necesito?•¿Qué datos que poseo no son importantes?•¿Será mejor descomponer el problema en otros más

pequeños?•¿Tengo más alternativas?

Ejecutar Plan• Ahora que entendemos el problema y hemos elegido

nuestras operaciones debemos ejecutarlo, esto quiere decir seguir paso a paso nuestra traza (configuración) y verificar si vamos llegando al resultado esperado.

• Debemos ejecutar las operaciones y preguntarnos ¿vamos por camino correcto? si es así seguimos con las siguientes operaciones y comprobar si nos acercamos a la solución.

Recuerda en apoyarte con dibujos o diagramas.

Revisar• Luego de ejecutar nuestro plan y al comprobar

que hemos llegado al resultado esperado debemos entregar una respuesta completa.

• Podemos preguntarnos si existe otra forma de resolver el problema y comenzamos el ciclo de nuevo. Ver si podemos hacerlo más genérico para casos similares.

• Tener en la mente el problema porque puede servir de ayuda en un caso similar.

Manos a la obra!En un juego, el ganador obtiene una ficha roja; el segundo, una ficha azul; y el tercero, una amarilla. Al final de varias rondas, el puntaje se calcula de la siguiente manera: Al cubo de la cantidad de fichas rojas se adiciona el doble de fichas azules y se descuenta el cuadrado de las fichas amarillas. Si Andrés llegó 3 veces en primer lugar, 4 veces de último y 6 veces de intermedio, ¿Qué puntaje obtuvo?

(Adaptado de Melo (2001), página 30).

Primera reacciónEsto es lo que pensamos... o ¿no?

¿Qué dijo?!¿Cómo fue?AAAAAH!!!!

Respiramos y continuamosEntonces ahora comenzamos aplicar nuestro ciclo.

Primero ENTENDER el problema, leamos de nuevo pero más lento y por partes.

Parte 1 del enunciadoEn un juego, el ganador obtiene una ficha roja; el segundo, una ficha azul; y el tercero, una amarilla.

¿Tenemos datos importantes?

Así es, debemos entender que existen 3 tipos de fichas para cada lugar

Ayudas:Subrayar y

colorear

Parte 2 del enunciadoAl final de varias rondas, el puntaje se calcula de la siguiente manera: Al cubo de la cantidad de fichas rojas se adiciona el doble de fichas azules y se descuenta el cuadrado de las fichas amarillas.

¿Tenemos datos importantes?

Sí! tenemos una fórmula para calcular el puntaje final.

Parte 3 del enunciadoSi Andrés llegó 3 veces en primer lugar, 4 veces de último y 6 veces de intermedio, ¿Qué puntaje obtuvo?

¿Tenemos datos importantes?

Sí, tenemos la cantidad de veces que Andrés ha ganado en los 3 distintos lugares.

Además tenemos la pregunta, es decir, sabemos que debemos tener un resultado concreto.

¿Y ahora?Hemos leído el enunciado y re leído, obtuvimos los datos de acuerdo a cada parte del enunciado, por lo que ahora pasamos a TRAZAR un plan según los datos que tenemos.

Es decir ordenarlos según por cada parte del enunciado y verificar que operaciones necesito para resolver el problema.

Trazando nuestro planParte 1:

Roja para el primer lugar

Azul para el segundo lugar

Amarilla para el tercer lugar

Parte 2:

Armamos la fórmula para calcular puntaje final:

PF = (R3)+ (2 x Az) - (Am2)

Parte 3:

Andrés tiene: 3 fichas rojas (R), 6 azules (Az) y 4 amarillas (Am).

Continuamos...Nuestro tercer paso es EJECUTAR nuestra traza según los datos obtenidos al entender el problema.

Quiere decir unir las operaciones elegidas y aplicar los datos en dichas operaciones.

Ejecutando el planPor lo que tenemos:

Andrés tiene: 3 fichas rojas (R), 6 azules (Az) y 4 amarillas (Am).

Y la fórmula obtenida:

PF = (R3)+ (2 x Az) - (Am2)

Reemplazando tenemos:

PF = (33) + (2x6) - (42)

Continuando cada operación:

PF = 27 + 12 - 16

Nuestro resultado final es: PF = 23

RevisandoAl ejecutar nuestro plan ahora debemos REVISAR, para ello debemos comprobar que nuestro resultado es correcto, quiere decir que debemos revisar los cálculos y verificar con la solución estimada.

Tenemos que dar una solución completa, en nuestro caso sería como respuesta según la pregunta del problema:

El puntaje final que obtuvo Andrés fue de 23

ResumiendoEntonces para resolver un problema debemos:

Entender Trazar EjecutarRevisar

¿Cómo resuelvo un algoritmo?Ahora que entendemos un poco más de cómo resolver un problema ahora llevemos el mismo teorema para resolver un algoritmo en computación.

Cuyas fases serían entonces:

Analizar el problemaEsta etapa sería Entender el problema por lo que aquí debemos:

•Formular el problema•Conocer el resultado esperado•Identificar datos e información•Definir las operaciones•Restricciones del problema

Diseñar un algoritmo (I)Es la representación gráfica mediante un diagrama la secuencia de las operaciones de forma lógica.

Esta etapa sería Trazar el problema.

Diseñar un algoritmo (II)El diagrama para diseñar un algoritmo es conocido como Diagrama de Flujo, representa la secuencia lógica de nuestro análisis.

Cuya simbología es:

Diseñar un algoritmo (III)

Traducir un algoritmoEs Ejecutar el problema, es decir que debemos pasar nuestro diagrama a un lenguaje (idioma), en donde cada lenguaje posee su propia gramática y sintaxis:

•Comenzar y terminar un programa: INICIO, FIN•Declarar los tipos de los datos: entero, decimal, letra, texto.•Entrada por teclado: leer•Desición: si - sino•Iteración: mientras•Mostrar por pantalla: imprimir

Depurar un programa• Esta etapa es Revisar.• Aquí revisamos y se corrigen los errores de nuestra

traducción mediante el resultado obtenido que debemos probar y validar.

• Para depurar nuestro programa debemos asignar valores a nuestras variables y seguir el flujo (secuencia) de nuestro diseño y nuestra traducción.

• Nos podemos ayudar haciendo una tabla para seguir el flujo de nuestro programa y anotar los valores de las variables a medida se vayan modificando.

Manos a la obra!• Tenemos el mismo enunciado del ejercicio ya

visto anteriormente.

• En un juego, el ganador obtiene una ficha roja; el segundo, una ficha azul; y el tercero, una amarilla. Al final de varias rondas, el puntaje se calcula de la siguiente manera: Al cubo de la cantidad de fichas rojas se adiciona el doble de fichas azules y se descuenta el cuadrado de las fichas amarillas. Si Andrés llegó 3 veces en primer lugar, 4 veces de último y 6 veces de intermedio, ¿Qué puntaje obtuvo?

Análisis del problemaPara nuestro ejercicio tenemos en esta etapa, según lo entendido al leer el problema:

•Existen 3 tipos de fichas para cada lugaro Rojas, Azules y Amarillas

•Fórmula para calcular el puntaje final.o PF = (R3)+ (2 x Az) - (Am2)

•cantidad de veces que Andrés ha ganado en los 3 distintos lugares

o 3 fichas rojas, 6 azules y 4 amarillas•Debemos tener un resultado concreto.

Diseñar un algoritmo• Quiere decir que debemos utilizar la simbología de

Diagrama de Flujo (ir a diapositiva) para diseñar nuestra solución.

• Básicamente es "dibujar" el análisis realizado anteriormente utilizando Diagrama de Flujo (ir a diapositiva).

• Debemos definir nuestros datos, las operaciones y el resultado a mostrar

Diseñar un algoritmo (II)

Traducir un algoritmo (I)• Ahora es el momento de escribir nuestro diagrama en

un lenguaje de programación el cual es conocido como Pseudo - código

• Para ello escribiremos con las palabras reservadas mencionadas anteriormente (ver diapositiva Traducir un algoritmo)

Traducir un algoritmo (II)//Indicamos el inicio del programa

INICIO

//Declaramos las variables y las iniciamos

ENTERO fichas_rojas = 3;

ENTERO fichas_azules = 6;

ENTERO fichas_amarillas = 4;

ENTERO puntaje_final = 0;

//Escribirmos la operación a utilizar

puntaje_final = fichas_rojas^3 + 2*fichas_azules - fichas_amarillas^2;

//Imprimimos por pantalla el texto que queremos mostrar

IMPRIMIR "El puntaje final de Andres es de "

//Imprimimos por pantalla la variable que queremos mostrar

IMPRIMIR puntaje_final;

//Indicamos el fin del programa

FINAyudas:

// indica comentario

Depurar el programaPara hacer la depuración debemos ir reemplazando los valores de las variables en nuestro programa.•Tenemos los valores ya dados por el enunciado: f_rojas = 3, f_azules = 6 y f_amarillas = 4, estos valores debemos reemplazarlos en nuestra fórmula inicial:

puntaje_final = 3^3 + 2*6 - 4^2;•Realizando el cálculo nos da como resultado:

puntaje_final = 39;•Impresión por pantalla:

El puntaje final de Andres es de 39

FIN

Recommended