Apunte__U1_2014 RESOLUCION DE PROBLEMAS Y ALGORITMOS

download Apunte__U1_2014 RESOLUCION DE PROBLEMAS Y ALGORITMOS

of 13

Transcript of Apunte__U1_2014 RESOLUCION DE PROBLEMAS Y ALGORITMOS

  • 8/18/2019 Apunte__U1_2014 RESOLUCION DE PROBLEMAS Y ALGORITMOS

    1/13

     

     

    ! "

    # $

    % %

  • 8/18/2019 Apunte__U1_2014 RESOLUCION DE PROBLEMAS Y ALGORITMOS

    2/13

     

    Resolución de Problemas y Algoritmos 1/13

     && ' '   

    Objetivos:

    •  Analizar el concepto de resolución de problemas

    •  Comprender los conceptos introductorios a la programación•  Conocer como funciona una computadora•  Presentar los diferentes tipos de lenguajes de programación

    •  Conocer el concepto de algoritmo.•  Entender la necesidad del diseño de algoritmos.•  Familiarizarse con las distintas estructuras de control que se utilizan para el diseño de un

    algoritmo.

    1. Características de los problemas

    En cualquier ámbito de la vida hablamos de problemas,  pero si queremos encontrar unadefinición de cuál es su significado nos encontramos con que no es una tarea simple. Podemoscoincidir con muchos autores que no han dado ninguna defincidión, sino que se han remitido adescribir las características de un problema.

    Es asi que se puede decir que:

    Un problema existe cuando hay tres elementos, cada uno claramente definido,

    •  Una situación inicial.

    •  Una situación final u objetivo a alcanzar.

    •  Restricciones o pautas respecto de métodos, actividades, tipos de operaciones, etc.,

    sobre los cuales hay acuerdos previos

    1.1. ¿Qué implica resolver un problema?

    La expresión "Resolución de Problemas" fue introducida por matemáticos pero actualmenteno se limita tan solo al ámbito de la matemática, sino que constituye algo mucho más abarcativo.

    Los problemas son situaciones nuevas que requieren que la gente responda concomportamientos nuevos. Casi permanentemente enfrentamos "problemas" en nuestra vida cotidiana.Resolver un problema implica realizar tareas que demandan procesos de razonamientos más omenos complejos y no simplemente una actividad asociativa y rutinaria.

    1.2. ¿Cómo resolver problemas?

    Esta pregunta no es de fácil respuesta como lo marca nuestra experiencia. A diario nosenfrentamos a la difícil tarea de resolver problemas y por mas sencillo que sea nos cuesta encontrarla manera de resolverlos.

    La simbolización de un problema es un aprendizaje constructivo, por lo tanto individual ydistinto, en el cual cada uno utiliza sus propias estrategias. Muchas veces, la incorporación de nuevasformas de resolución de problemas crea un conflicto con los viejos conocimientos, y por ello se tiendea rechazarlas.

  • 8/18/2019 Apunte__U1_2014 RESOLUCION DE PROBLEMAS Y ALGORITMOS

    3/13

     

    Resolución de Problemas y Algoritmos 2/13

    La tarea de ayudar a desarrollar capacidades y aptitudes para que puedan resolver con éxitosituaciones problemáticas de distinta índole es en cierta forma, uno de los objetivos que trataremosde alcanzar en el transcurso de esta asignatura.

    Dada entonces una situación problemática en particular, el objetivo radica en establecer cómose la puede caracterizar, con el propósito de intentar modelizarla; cómo se la puede definir entérminos de problemas y cómo, encontrada la metodología de la resolución específica, se llega al

    modelo.

    Cuando los problemas que se resuelven son matemáticos o juegos, se tiene la posibilidad deadquirir metodologías de razonamiento permanentes, explicitadas mediante estrategias queconducen a modelizar tales situaciones. Esto permite aprovechar los mecanismos de resolución yreutilizarlos en nuevas problemáticas.

    Por lo tanto, resulta de valorable importancia disponer de un gran número de estrategias osaber generarlas, tales que, conocidas y comprendidas las disciplinas implícitas, se intentetransferirlas a los efectos de poder hallar solución al problema.

    1.3. Las partes de un problema

    Básicamente, podemos decir que la resolución de problemas consta de tres etapas o procesos.

      Etapa inicial o inicio de presentación :

    Consiste en comprender el problema familiarizándose con él lo más posible. Supone laidentificación, el análisis y la interpretación de los datos disponibles inicialmente. Requiere deuna suficiente atención dedicada al problema para activar y estimular la memoria y prepararlapara recoger los puntos importantes en pos de una idea útil. Supone la determinación de estaidea.

      Momento de Producción:

    Se trata de la ejecución de un plan, aquel al que la idea dio inicio y que, en principio, permite laobtención de la solución al problema. Comprende un conjunto de operaciones otransformaciones diversas a saber: recuperación de la información almacenada en la memoria alargo plazo, exploración de la información ambiental, transformaciones en la memoria a cortoplazo, almacenamiento de información intermedia en la memoria a largo plazo, eventual alcancede una solución.

      Etapa de Enjuiciamiento, Verificación o Contrastación :

    En esta etapa se evalúa la solución generada contrastándola con el criterio de soluciónempleado, estableciendo el correcto enlace de todos los operadores, desde el Inicio depresentación , pasando por la Producción  hasta llegar a la Verificación .

    Así, "resolver problemas" equivale a incorporar modos de búsqueda para la satisfacción desituaciones particularmente comprendidas, las cuales pueden corresponder a la vida cotidiana o aproblemas que no tengan, directamente, que ver con ésta.

    Al hablar de inteligencia se suele frasear que "quien más sabe más posibilidades de aprendertiene". La explicación de esta frase permite conciliar el aprendizaje de metodologías (estrategias) deresolución de problemas con situaciones particulares, pues el concepto de "quien más sabe" estáligado a métodos de razonamiento y no a particulares estados.

    2. Introducción

    Para familiarizarnos con algunos términos, comenzaremos conociendo algunas definicionesque permitirán ubicarte hacia donde vamos.

  • 8/18/2019 Apunte__U1_2014 RESOLUCION DE PROBLEMAS Y ALGORITMOS

    4/13

  • 8/18/2019 Apunte__U1_2014 RESOLUCION DE PROBLEMAS Y ALGORITMOS

    5/13

     

    Resolución de Problemas y Algoritmos 4/13

    •  Unidad aritmético-lógica: es la parte donde se realizan todos los procesos, a travésde las indicaciones de la unidad de control . Realiza operaciones matemáticas o derelación lógica con los datos suministrados.

    Memoria principal:   es el almacén donde se registran y quedan a disposición de la unidadcentral de procesamiento  de datos (CPU), los datos y los programas.

    Periféricos:   son elementos que forman parte del sistema físico del equipo y que cumplen

    funciones adicionales, pero necesarias. Existen muchos tipos de periféricos y dependiendo de lafunción que cumplan, se los puede clasificar en:

    •  Periféricos de almacenamiento masivo  (discos duros, discos flexibles, CDs, zip, pendrive)

    •  Periféricos de entrada:  (teclados, mouse, escáner, joysticks).

    •  Periféricos de salida: (impresoras, monitores, plotter)

    Como vimos anteriormente, la tarea principal de las computadoras es la de ejecutarprogramas. En general, ¿qué hacen estos programas? La respuesta es que procesan información.

    Deberíamos conocer ¿a que llamamos información?

    Esta información representa una abstracción de una parte del mundo real. La información quepuede utilizar la computadora, debe ser una selección de datos de la realidad que se consideranrelevantes para el problema que se espera resolver. Es muy importante hacer una adecuadaselección de los datos, considerar aquellos que representen ciertas propiedades y características delos objetos del mundo real que son relevantes e ignorar aquellos que no interesan para el problemaconcreto que se estudia. Estos datos, como veremos mas adelante, deben estar organizados dentrode la computadora, de manera tal que puedan ser utilizados dependiendo de la finalidad que sedesee.

    Por ej:   Un archivo de alumnos de una universidad. Cada alumno se representa (en formaabstracta) en este archivo, por un conjunto de datos. Esta información puede incluir datos deidentificación del alumno que sean de interés para la universidad: su nombre, su legajo, carrera quecursa; pero seguramente, no contendrá datos que no son de interés para la universidad tales como el

    color de pelo, peso y estatura.

    Hasta aquí, vamos teniendo en claro que la computadora es una máquina cuya funciónprincipal es ejecutar programas que permitan procesar información. Pero algo que no está muy claropor el momento es saber, ¿Cómo funcionan las computadoras?

    Desde el momento que se enciende una computadora, ésta sólo se dedicará a ejecutar unprograma. Son los programas en definitiva, los que le dicen a la CPU como debe ejecutar una a unalas instrucciones, qué debe hacer no sólo con los datos que tenga, sino también con las distintaspartes y dispositivos de la computadora; si no existieran los programas no habría actividad.

    El programa más común y necesario que debe estar en una computadora, es el sistemaoperativo, que es el encargado de administrar y hacer funcionar adecuadamente los distintosdispositivos y partes de la computadora y además permitir que otros programas o sistemas puedan

    servirse de ellas. Sin un programa que se encargue de estas tareas seria imposible que lacomputadora pudiese funcionar en forma útil.

    Existen otros programas que tienen funciones básicas como los programas de comunicacióny redes, que permiten a las computadoras comunicarse entre sí; de diagnostico de error; etc.También están los compiladores, que son programas encargados de traducir los programas escritosen un lenguaje de programación, al lenguaje que entiende la CPU, para que de esta manera, elprograma pueda ser ejecutado. A todos estos programas se los conoce como programas de base.

    Existen también otros programas que se conocen con el nombre de utilitarios que permitenrealizar distintas tareas: editores de texto, planillas de cálculo, administradores de base de datos yotros que también pueden encuadrarse en esta categoría.

  • 8/18/2019 Apunte__U1_2014 RESOLUCION DE PROBLEMAS Y ALGORITMOS

    6/13

     

    Resolución de Problemas y Algoritmos 5/13

    3.1. Lenguajes de Programación

    Para que un programa pueda ser ejecutado por la computadora, debe estar escrito en unlenguaje que pueda ser entendido por la CPU, que en definitiva es la encargada de ejecutar las

    instrucciones que componen el programa. Los lenguajes utilizados para escribir programas decomputadora son los lenguajes de programación. Existen tres tipos principales de lenguajes:

    3.2. Lenguajes de máquina

    Son aquellos que están escritos en lenguajes directamente inteligibles por la computadora, yaque sus instrucciones son cadenas binarias (dígitos 0 y 1). Esto hace que las instrucciones maquinasean difíciles de interpretar y corregir, lo que supone grandes esfuerzos por parte del programadorpara la modificación o actualización de las mismas. Las instrucciones en lenguaje máquina dependendel hardware de la computadora y por lo tanto, difieren de una computadora a otra.

    3.3. Lenguajes de bajo nivel

    Son más fáciles de utilizar que los lenguajes máquina, pero al igual que ellos dependen de lamáquina en particular. Están basados en el uso de mnemotécnicos (palabras abreviadas procedentesdel ingles formadas por letras y números). La programación en lenguaje ensamblador precisa de unamplio conocimiento sobre la constitución, estructura y funcionamiento interno de la máquina, asícomo un hábil manejo de los códigos y sistemas de numeración, en especial el binario y elhexadecimal. Un programa escrito en lenguaje ensamblador no puede ser ejecutado directamente porla computadora (a diferencia del anterior), sino que requiere de una fase de traducción al lenguajemáquina.

    3.4. Lenguajes de alto nivel

    Están diseñados para que las personas escriban y entiendan los programas de un modomucho más fácil que los escritos en los tipos de lenguajes anteriores. Un programa escrito en unlenguaje de alto nivel es independiente de la máquina; es decir que es portable. Al igual que sucedecon los lenguajes ensambladores, los programas escritos con un lenguaje de alto nivel deben sertraducidos a lenguaje máquina. Algunos de los lenguajes de alto nivel son por ejemplo: C, C++,Pascal, Visual Basic, Clipper, Ada, Smalltalk, Delphi, Java.

    El único lenguaje que entiende la CPU es el lenguaje de máquina, o sea que cuando seprograma en un lenguaje distinto a éste, los programas deben ser traducidos a código binario, para

    que así las instrucciones del programa puedan ser entendidas y ejecutadas por la CPU. Para estatarea existen los traductores de lenguajes que pueden ser:

    Ensambladores Son los encargados de transformar o traducir directamente los programasescritos en ensamblador a su equivalente en código de máquina o código binario para que puedanser ejecutados por la CPU.

    Interprete Es un programa encargado de procesar y traducir cada instrucción de un programaescrito en un lenguaje de alto nivel a código de maquina y después ejecutarla. Estas dos tareas serealizan en una misma operación e instrucción por instrucción, lo que hace mucho mas lento elproceso, ya que debe traducir y ejecutar cada una de las instrucciones del programa, repitiendo asítodo el proceso de traducción y ejecución.

    Compilador Es un programa cuyo objetivo es traducir el correspondiente programa fuente

    (escrito en un lenguaje de alto nivel) a su equivalente en código de máquina, también denominadoprograma objeto. La diferencia más destacable entre un compilador y un interprete radica en que,mientras que un interprete acepta un programa fuente que traduce y ejecuta simultáneamente

  • 8/18/2019 Apunte__U1_2014 RESOLUCION DE PROBLEMAS Y ALGORITMOS

    7/13

     

    Resolución de Problemas y Algoritmos 6/13

    analizando cada sentencia por separado, un compilador efectúa dicha operación en dos fasesindependientes: primero traduce completamente el programa fuente a código maquina y luego ejecutael programa.

    4. Resolución de Problemas en la Computadora

    Para que la computadora resuelva un problema, se debe diseñar un algoritmo en un lenguajeentendible por la máquina, para que pueda ser ejecutado en ella. Las computadoras no puedenentender, por lo menos por el momento, los lenguajes naturales utilizados en el diseño de algoritmos.Por esta razón, es necesario escribir el algoritmo utilizando un lenguaje de programación de alto nivel.Este proceso se denomina codificación y el resultado de este proceso es un programa.

    En el siguiente dibujo podrás observar el proceso de desarrollo de un programa, dondepodrás ver los pasos que se ejecutan desde el momento que abstraemos el problema del mundo real,hasta que efectivamente es ejecutado en la computadora.

    La programación es, por consiguiente, un proceso de solución de problemas, y el desarrollode un programa requiere las siguientes fases:

    •  Definición y análisis del problema

      Diseño del algoritmo•  Codificación del algoritmo

    •  Depuración y verificación del programa

    •  Documentación y mantenimiento.

    5. Resolución de Problemas

    Como vimos en el punto anterior, el objetivo básico fundamental de una computadora esejecutar programas que resuelven problemas. Pero antes de conocer las herramientas que nos van apermitir construir el programa que se va a ejecutar en la computadora, es necesario que aprendamos

    a analizar el problema que debemos resolver encontrando la solución adecuada.

     

     

     

     

     

  • 8/18/2019 Apunte__U1_2014 RESOLUCION DE PROBLEMAS Y ALGORITMOS

    8/13

  • 8/18/2019 Apunte__U1_2014 RESOLUCION DE PROBLEMAS Y ALGORITMOS

    9/13

     

    Resolución de Problemas y Algoritmos 8/13

    •  Ser finito: si se sigue un algoritmo, se debe terminar en algún momento; o sea sedebe tener un número finito de pasos.

    7. Estructuras de Control

    Las instrucciones representan las operaciones que ejecutará la computadora al implementarel algoritmo. Estas instrucciones utilizan cierta información en forma de constantes o variables, que sedenominan datos.

    Todos los lenguajes de programación tienen un conjunto mínimo de instrucciones quepermiten especificar el control propio del algoritmo que se requiere implementar. El concepto de flujode control a través de un algoritmo, se refiere al orden en el cual deben ejecutarse los pasosindividuales del algoritmo.

    Las estructuras de control son programas o construcciones algorítmicas que afectandirectamente el flujo de control del algoritmo. Generalmente el flujo de control es lineal, o sea unasecuencia de pasos, desde el primero hasta el último. Sin embargo es posible apartarse del flujonormal lineal mediante el uso de selección e iteración para resolver aquellas aplicaciones que hastaahora son imposibles de solucionar solamente con un flujo lineal de control.

    8. Estructuras de control básicas

    Las estructuras básicas que cualquier lenguaje de programación debe contener, son las quese enumeran a continuación, pero podrás encontrar en distinta bibliografía, diferentes nombres paradefinir a estas mismas estructuras:

    •  Secuenciación

    •  Selección

    •  Repetición

    8.1. Secuenciación

    La secuenciación es un algoritmo o una parte de un algoritmo, formado por una serie deinstrucciones que se ejecutan una a continuación de otra.

    Ejemplo:  Lavarse el cabello. 

    Mojar el cabello.Aplicar shampoo.

    Masajear.Enjuagar.

    Mojar elcabello

    Aplicarsham oo

    Masajear

    Enjuagar

  • 8/18/2019 Apunte__U1_2014 RESOLUCION DE PROBLEMAS Y ALGORITMOS

    10/13

     

    Resolución de Problemas y Algoritmos 9/13

    8.2. Selección

    A través de esta estructura se permite seleccionar el sentido de la acción evaluando posiblesalternativas de una condición que es necesario evaluar. La toma de decisión está tomada en funciónde los datos del problema. Esta estructura puede subdividirse en tres categorías, considerando lacantidad de alternativas a evaluar: selección simple, selección doble y selección múltiple.

    8.2.1. Selección simple

    En este caso se debe analizar una condición, y si esta es verdadera se deberán ejecutar lasacciones que se requieran. Esto significa que hay algunos casos en los que puede no haber unaacción específica a realizar si la condición es falsa.

    Ejemplo:  Tomar un libro de la biblioteca  

    Ubicar el libro, es decir, determinar en que estante está.

    Si (el libro se encuentra a más de 1.70m de altura)entonces

    Traer la escaleraSubir hasta alcanzar el libro

    Tomar el libro buscado.

    En el ejemplo, si el libro se encuentra a menos de 1.70m de altura, se toma directamente (noes necesario utilizar la escalera).

    8.2.2. Selección doble

    En esta opción de la estructura de selección, se debe decidir entre dos alternativas.

    Se evalua la condición y si esta es verdadera se deberán ejecutar las acciones que serequieran, las mismas se encuentran ubicadas después del “entonces”. Y si es falsa se ejecutaran lasacciones que se encuentren adentro del “sino”.

    Evalúa lacondición

    Se procesa laalternativaverdadera

    Verdadero

    Falso

    Salida a la siguiente acción

  • 8/18/2019 Apunte__U1_2014 RESOLUCION DE PROBLEMAS Y ALGORITMOS

    11/13

     

    Resolución de Problemas y Algoritmos 10/13

    Ejemplo:  Colgar un cuadro, incluyendo la colocación del clavo

    Tomar martillo y clavo.Pararse frente al lugar donde se desea colgar el cuadro.Colocar el clavo.

    Si (el clavo quedó firme)entonces

    Traer el cuadroPonerlo en su sitio

    sinoRetirar el clavoMasillar el agujero

    Guardar las herramientas

    En este ejemplo aparece un elemento nuevo, la evaluación de una condición. Una condiciónes una expresión que puede tomar dos valores: verdadero o falso. Por lo tanto, nuestro algoritmodebe considerar las dos alternativas, es decir, qué hacer en caso de que la condición sea verdadera yqué hacer si es falsa. Es importante destacar que no se realizan ambas alternativas simultáneamente,sino que la selección de cual se llevará a cabo se decidirá una vez que los pasos anteriores se hayanrealizado. En nuestro ejemplo, la selección tendrá lugar, una vez que el clavo haya sido colocado.Antes de este instante, el valor de la condición "el clavo quedó firme" no puede ser determinada.

    8.2.3. Selección múltiple

    Esta estructura está contemplada para aquellos casos en donde las alternativas que se

    pueden seleccionar, son más de dos. En este caso lo que se debe evaluar es una variable dedecisión y dependiendo del valor que esta tenga, se realizarán las acciones que correspondan.

    Ejemplo:  Mostrar el nombre de la vocal que se ingresó por teclado

    Leer una vocal por tecladoSegún_valor (vocal)

    ‘a’: Informar que el nombre de la vocal es a‘e’: Informar que el nombre de la vocal es e ‘i’: Informar que el nombre de la vocal es i ‘o’: Informar que el nombre de la vocal es o

    ‘u’: Informar que el nombre de la vocal es uFin Según_valor

    Se evalúa la

    condición

    Se procesa laalternativaverdadera

    Verdadero

    Salida a la siguiente acción

    Se procesa laalternativa falsa

    Falso

  • 8/18/2019 Apunte__U1_2014 RESOLUCION DE PROBLEMAS Y ALGORITMOS

    12/13

  • 8/18/2019 Apunte__U1_2014 RESOLUCION DE PROBLEMAS Y ALGORITMOS

    13/13

     

    Resolución de Problemas y Algoritmos 12/13

    8.3.2. Estructura Repetir-Mientras

    Esta estructura se caracteriza porque su diseño permite repetir un bloque de instrucciones de1 a n, es decir que sea verdadera o falsa la condición, el bloque se ejecutará una vez como mínimo y

    n veces como máximo, después de evaluar la condición n veces. En este caso y a diferencia de laanterior, la condición se analiza al final del ciclo, el bloque de instrucciones se ejecuta mientras lacondición todavía no es evaluada y cuando se evalua la condición, al final, la salida se efectúacuando la condición es falsa; siempre que se evalue la condición y esta sea verdadera se va aejecutar el bloque de instrucciones del ciclo.

    Ejemplo : Registrar Apellido y DNI de los postulantes a un puesto de trabajo

    Formar una fila con todos los postulantesRepetir 

    Registrar apellido del postulante

    Registrar DNI del postulanteMientras (haya mas postulantes)

    8.3.3. Estructura Para

    En este tipo de estructura, el numero n de veces que se deben ejecutar las acciones, es fijo yconocido de antemano. De esta estructura participan otros elementos que reemplazarían.

    Ejemplo: Colocar 10 libros de una biblioteca, dentro de una caja

    Para  contador de 1 a 10  Tomar un libro de la bibliotecaColocar el libro dentro de la caja

    FinPara  

    Se evalúa lacondición

    Ejecutar el bloque de

    instrucciones del ciclo

    falsaverdadera

    A la siguiente acción

    Ejecutar el bloquede instrucciones del

    ciclo 

    Vcont = Vi, VfPara Vcont de Vi  a Vf

    Instrucción 1

    Vcont variable contador del bucleVi   valor inicial que toma VcontVf   valor final para Vcont