Análisis de problemas La resolución de problemas implica el desarrollo de habilidades del pensamiento. Nuestra capacidad d de enfrentar problemas aumenta con la práctica. Existen algunos textos con problemas que se consideran clásicos. Uno de estos textos de fácil lectura es El hombre que Uno de estos textos de fácil lectura es El hombre que calculaba de Malba Tahan.
Introducción Una computadora que al igual que una calculadora sirve para hacer operaciones con números. Logra trabajar bj con otro tipo de información ió al asignarle un código numérico a los datos. Históricamente las máquinas para realizar cálculos son antiguas como el uso del ábaco. La gran utilidad de las computadoras consiste en que estas realizan cálculos repetitivos con precisión y rapidez.
Algoritmo Las computadoras necesitan algoritmos para procesar la información. Un algoritmo es un conjunto ordenado d de instrucciones que sirven para transformar los datos en información que nos resulte útil. Las instrucciones de un algoritmo deben ser precisas para ofrecer resultados consistentes. Además para que un algoritmo sea útil se pide que el conjunto de instrucciones sea finito para obtener respuestas en tiempos razonables.
Teorema de Bohm Jacopini Todo programa propio puede ser expresado utilizando únicamente tres estructuras de control básicas. Secuenciales Selectivas Repetitivas t Un programa propio es aquel que tiene al menos un camino de ejecución para cada instrucción en el mismo. Un programa propio no contiene bucles infinitos y tiene solo un punto de inicio y de finalización.
Estructura secuencial La estructura secuencial es la más simple de todos e implica seguir el orden de izquierda derecha arriba abajo. Este orden puede verse alterado por la precedencia de los operadores involucrados en algunas instrucciones. Típicamente entre los operadores aritméticos, la multiplicación/división tienen prioridad sobre la suma/resta.
Estructura secuencial(cont). Asignación se refiere a la asignación de un valor a una variable, por medio de una constante o como resultado de una operación. Entrada/salida estas operaciones sirven para ingresar datos y mostrar los resultados. Las instrucciones secuenciales son la base de todo algoritmo y de la combinación de estas se pueden muchas veces encontrar soluciones distintas.
Estructura selectiva La estructura selectiva permite romper el orden estrictamente secuencial de un algoritmo y condicionar la ejecución de alguna o algunas de sus instrucciones. Por lo general implican una instrucción de salto para el caso en que el resultado de la condición sea negativo. La más simple es si condición entonces Implica que la siguiente instrucción deberá ejecutarse si la condición se cumple, en caso contrario deberemos saltarla. l
Estructura selectiva(cont). Una variación permite elegir entre dos opciones que se realizarán dependiendo de si el resultado de la condición es falso o verdadero. Si condición entonces instrucción1 en caso contrario instrucción2. En la estructura anterior el algoritmo ejecutará o bien la instrucción 1 o 2 pero no ambas, dado que la condición es verdadera o bien falsa. Existe la posibilidad de que la estructura elija entre un conjunto definido id de valores de una variable.
Estructura selectiva(cont). La estructura de selección múltiple ejecuta la instrucción que hace que la variable de control coincida con algún valor particular. En caso de que x sea Valor1: instrucción1 Valor2: instrucción2 ValorN: instrucciónn En algunos casos puede admitirse que el control sea un rango de valores.
Estructura de repetición La idea de repetir significa romper el orden secuencial para regresar a una instrucción previamente ejecutada. Db Debe existir i un control cuidadoso d con este tipo de estructuras para evitar que el algoritmo entre en un ciclo infinito de repeticiones al no cumplirse nunca la condición de paro. Existen dos variantes para este tipo de estructuras: las de condición previa y las de condición posterior. Una variante que puede implementarse a partir de las anteriores es aquella controlada ld por un contador.
Estructura de repetición(cont). La estructura de condición previa es de la forma mientras condición repetir instrucción La estructura de condición ió posterior es de la forma repetir instrucción hasta condición Si se permite en el lenguaje elegido la estructura controlada por contador es de la forma para contador desde valor inicial hasta valor final con incrementos de valor. Por defecto los incrementos son de uno en uno en sentido creciente.
Ejemplo1 cont = 0 Suma = 0 Mientras cont < 11 hacer suma = suma + x(cont) cont = cont + 1 Fin mientras Promedio = suma / 10 Mostrar promedio
Ejemplo2 Grupo1 = 0 Grupo2 = 0 Para i desde 1 hasta 100 hacer si x(i) >= 5 y x(i) < 10 entonces grupo1 = grupo1 + 1 fin si si x(i) >= 10 y x(i) < 20 entonces grupo2 = grupo2 + 1 fin si Fin para Mostrar grupo1 Mostrar grupo2
Ejemplo3 Factorial = 1 N = 5 Repetir Factorial = factorial *n n = n 1 Mientras n > 0 Mostrar factorial
Herramientas para programar Existen una enorme cantidad de lenguajes de programación por lo que elegir el más apropiado no es una tarea fácil ni trivial. Muchas veces depende de la preferencia y la experiencia, sin embargo de la elección adecuada de la herramienta depende d el esfuerzo para programar alguna tarea determinada. En el caso de los algoritmos, estos pueden escribirse en un seudocódigo usando el Rockefer Basic. También pueden probarse con dfd usando diagramas de flujo.
Conceptos generales Variable es un nombre que se le asigna a un lugar en la memoria. En una variable ibl es posible almacenar datos de los siguientes tipos básicos: enteros, números de punto flotante y cadenas de caracteres. Un entero puede tener o no signo como 8 o -5. Un numero de punto flotante puede ser 1.5 e-3. Una cadena puede ser hola mundo
Operadores Además de las variables los algoritmos contienen operadores que trabajan sobre esos datos. Los más conocidos son los operadores aritméticos, i los relacionales y los lógicos. Los aritméticos son +,, *, / y en algunos casos ^. Los relacionales son =, >, <, >=, <=,!=. Los lógicos son y, o y no. Con operadores, variables y constantes se pueden construir expresiones aritméticas o lógicas.
Expresiones Una expresión aritmética da como resultado una constante de tipo numérico ya sea entero o de punto flotante. Ej. x = 2*y + 5 Una expresión relacional o lógica da como resultado los valores de falso o verdadero. Ej. x < 5yx> 0
Pruebas de escritorio Estas consisten en corridas de prueba hechas a mano para el algoritmo con el fin de comprobar que este sea correcto. Por lo regular se construye una tabla con todos los elementos importantes del algoritmo como la evaluación de las expresiones lógicas y de las variables. Lo anterior se hace con el fin de seguir con mayor facilidad la ejecución del algoritmo.
Conclusión En estos apuntes se han resumido los principales puntos, temas y conceptos relacionados con la escritura de algoritmos para computadora. En las siguientes lecciones se irán introduciendo cada uno de estos elementos por medio de ejemplos y ejercicios.