TEMA 2: ALGORITMOS Y PROGRAMAS

Documentos relacionados
Tema 2. Algoritmos y Programas. Informática Grado en Física

TEMA 4: ALGORITMOS Y PROGRAMAS

TEMA 1: Algoritmos y programas

Control de Flujo. Estructuras de Control! Experiencia Educativa de Algorítmica CONTROL DE FLUJO

Algoritmos. Medios de expresión de un algoritmo. Diagrama de flujo

RECORDAR TIPOS DE DATOS

Control de Flujo. Estructuras de Control! Experiencia Educativa de Algorítmica CONTROL DE FLUJO

La resolución de un problema

TEMA 4: Programación estructurada

Métodos para escribir algoritmos: Diagramas de Flujo y pseudocódigo

Tema 2 Conceptos básicos de programación. Fundamentos de Informática

Tema 5. Diagramas de flujo. Computacion - FA.CE.NA.

Introducción a la programación

Constante: Una constante es un dato numérico o alfanumérico que no cambia durante la ejecución del programa.

CONTENIDO 1 Diagrama de flujo 2 Pseudocodigo 3 Diagrama estructurado (nassi-schneiderman)

Introducción a la programación: Contenido. Introducción

TEMA 1. PROGRAMACIÓN DE UN COMPUTADOR

Objetivo específico: Maneja los elementos básicos de algoritmos utilizados para resolver un problema por computadora.

2.1 METODOLOGÍA PARA LA SOLUCIÓN DE PROBLEMAS

Capítulo 13 INSTRUCCIONES DE CONTROL REPETITIVAS. Presentación resumen del libro: "EMPEZAR DE CERO A PROGRAMAR EN lenguaje C"

Introducción a la programación: Algoritmos

Algoritmos y solución de problemas. Fundamentos de Programación Otoño 2008 Mtro. Luis Eduardo Pérez Bernal

Programación Estructurada

PRÁCTICA FUNDAMENTOS DE ALGORITMOS (Estructuras de Repetición II) Objetivos

INFORMATICA TECNICATURA DE NIVEL SUPERIOR ALGUNOS EJERCICIOS DE SELECCIÓN E ITERACION

Titulo de hoy 25/09/2017 COLEGIO SAN ANTONIO MARIA CLARET 1

Álgebra y Matemática Discreta

Herramientas de Programación. M.C. Juan Carlos Olivares Rojas

PRÁCTICA FUNDAMENTOS DE ALGORITMOS I. Objetivos

PRESENTACIÓN DEL ALGORITMO

Programación Estructurada. Complementos de Informática Tema 2: Programación Estructurada y Programación Modular. Números Amigos

Principios de Algoritmia

Algoritmos. Diagramas de Flujo. Informática IV. L. S. C. Heriberto Sánchez Costeira

TECNICO SUPERIOR EN INFORMÁTICA EMPRESARIAL MÓDULO INTRUCCIONAL

Y alternativamente se presentarán soluciones de problemas donde se utilicen:

Departamento de Informática Universidad Técnica Federico Santa María. Tema 1: Algoritmos

INSTITUTO NACIONAL SUPERIOR DEL PROFESORADO TÉCNICO - TÉCNICO SUPERIOR EN INFORMÁTICA APLICADA - PROGRAMACIÓN I

2.3 DEFINICIÓN DE LENGUAJES ALGORÍTMICOS

Programación MODULAR: Subalgoritmos - funciones y procedimientos

1. PRINCIPIOS BÁSICOS DE PROGRAMACIÓN

Fundamentos de programación y Bases de Datos

PROGRAMACIÓN. UNIDAD II. ALGORITMO PROFA : HAU MOY

Ejemplo de Palabras reservadas del lenguaje C

ALUMNA: GRADO: MODALIDAD-10. PROFESOR: Hugo Nelson Ramírez Cárdenas

Tema 2. Concepto de Algoritmo

Dobles: Es el caso de la instrucción if-else (punto 1.2).

ALGORÍTMICA. Dpto. Ingeniería de Sistemas y Automática Facultad de Ciencias Universidad de Valladolid.

Tema 2 Introducción a la Programación en C.

Estructura Selectiva Múltiple

Capítulo 3. Sentencias condicionales

Universidad Autónoma del Estado de México Facultad de Medicina

CLASIFICACION DE LAS ESTRUCTURAS DE CONTROL

Las características fundamentales que debe cumplir todo algoritmo son:

SISTEMAS INFORMÁTICOS PROGRAMACION I - Contenidos Analíticos Ing. Alejandro Guzmán M. TEMA 2. Diseño de Algoritmos

Bloque 2. Algoritmos y pseudocódigo

Conceptos Programa Programa objeto Pseudocódigo Algoritmos y Diagramas de flujo 1) Finitud 2) Definición 3) Entrada

Taller de Resolución de Problemas Computacionales

INICIACIÓN A LA PROGRAMACIÓN 1ª parte

Qué es un Diagrama de Flujo?

GLOSARIO 1. Qué es bit y byte? Bit: Es la unidad mínima de información. Puede ser 0 o 1. Byte: Es el conjunto de 8 bits. Ejemplo:

Tipos De Datos. Numéricos. Alfanuméricos (string) Arreglos (Vectores, Matrices) Estructurados Registros (Def. Por el Archivos Usuario) Apuntadores

LENGUAJE DE PROGRAMACION UNO.

Técnicas de Programación Estructurada Página 1 de 8

Tema 06: Recursividad

Lógica de programación

Diagramas. En computación existen básicamente dos tipos de diagramas: diagramas de entradaproceso salida

ESTRUCTURA DE ASIGNACIÓN

Aritmética modular. AMD Grado en Ingeniería Informática. AMD Grado en Ingeniería Informática (UM) Aritmética modular 1 / 16

Variables, expresiones y sentencias

ESTRUCTURAS DE CONTROL

Área: INFORMÁTICA. Saber- Saber: Identificar DFD como herramienta para escribir los algoritmos de forma lógica.

Unidad 4. Lógica de Programación. Prof. Eliana Guzmán U.

Números Complejos. Presentación 1 Precalculus Sec. 1.5

Pseudocódigo. La forma en que se escribe un pseudocódigo es la siguiente:

Acción que el procesador puede ejecutar sin necesidad de información suplementaria

Tema II: Metodología para la construcción de programas. Profesora: Nelly García Mora

UNIVERSIDAD DON BOSCO FACULTAD DE ESTUDIOS TECNOLÓGICOS ESCUELA DE COMPUTACION

FACULTAD DE INGENIERIA

UNIVERSIDAD NACIONAL DE SAN ANTONIO ABAD DEL CUSCO

Actividad de Evaluación Brandon Emmanuelle Cuevas Rangel GPO: 303 Carrera: Informática 3er Semestre Joel Rocha Barocio Cienega de Flores N.L.

TEMA 2. CONCEPTOS BÁSICOS DE ALGORÍTMICA

Análisis de algoritmos. Recursividad

Guía práctica de estudio 05: Diagramas de flujo

La eficiencia de los programas

TEMA 4. ESTRUCTURAS DE CONTROL

Diseño estructurado de algoritmos. Sesión 8: Estructuras Algorítmicas

Diseño Estructurado de Algoritmo

INSTITUTO POLITECNICO NACIONAL UNIDAD PROFESIONAL INTERDISCIPLINARIA DE BIOTECNOLOGIA DEPARTAMENTO DE CIENCIAS BASICAS

INDICE Prologo Capitulo 1. Algoritmos y programas Capitulo 2. La resolución de los problemas con computadoras y las herramientas de programación

DEFINICIONES BÁSICAS DE LAS ESTRUCTURAS DE DATOS

Instituto José Manuel Estrada - Villa de Soto. Asignatura: Desarrollo de Soluciones Informáticas. Curso: 5to I. Docente: Contreras, María Elena

Un algoritmo es una serie de pasos lógicos y organizados que describe el proceso que se debe seguir, para dar solución a un problema específico.

Mientras (expresión lógica) Instrucciones a repetir mientras la expresión lógica es verdadera Fin Mientras

5. ESTRUCTURAS DE REPETICIÓN

Transcripción:

TEMA 2: ALGORITMOS Y PROGRAMAS TEMA 2: ALGORITMOS Y PROGRAMAS. 1 INTRODUCCIÓN 1 Análisis del problema.. 1 Búsqueda del algoritmo.. 1 Programación del algoritmo. 3 ESTRUCTURAS DE CONTROL. 4 Estructuras secuenciales. 4 Estructuras selectivas.. 4 Estructuras repetitivas (o bucles).. 8 PROGRAMACIÓN MODULAR.. 9 Ambito de las variables. 10 Paso de parámetros 10 PROGRAMACIÓN ESTRUCTURADA 10 RECURRENCIAS (O RECURSIVIDAD) 10 Introducción Un algoritmo es una sucesión finita de pasos no ambiguos, que se ejecutan en un tiempo finito, que le dicen al ordenador lo que hay que hacer en cada momento para llegar a la resolución del problema. Resaltar que: es una cantidad finita de pasos que se llevan a cabo en un tiempo finito (los bucles infinitos no son algoritmos.) es una sucesión de pasos no ambiguos, es decir cada paso especifica una tarea determinada a ser realizada en cada momento por el ordenador. Los pasos a seguir en la resolución de cualquier problema mediante un ordenador son los siguiente: 1. Análisis del problema. 2. Búsqueda del algoritmo. 3. Programación de algoritmo. 4. Traducción y comprobación del programa. Análisis del problema a.- b.- c.- Acotar y especificar el problema con total precisión (obtener el máximo de información acerca de lo que debemos resolver y las soluciones a determinar.) Definir los datos iniciales o de partida (que datos necesitamos proporcionar al problema para resolverlo.) Definir que datos o resultados debe proporcionar el algoritmo. Búsqueda del algoritmo Búsqueda de una sucesión finita de pasos no ambiguos que nos lleven a la resolución del problema: a.- Selección del mejor algoritmo. b.- Mejora del algoritmo. Apuntes realizados por Ricardo Ferrís Departamento de Informática. Universidad de Valencia 1

La selección y la mejora se hacen, habitualmente, en función del tiempo de ejecución (aproximadamente la cantidad de instrucciones que se tienen que ejecutar para resolver correctamente el problema.) Ejemplo 1: Búsqueda de números primos entre 2 y un cierto valor MAX 1.- Análisis del problema. Qué es un número primo? Qué entradas tenemos? Qué queremos obtener como resultado? 2.- Búsqueda del algoritmo. Método 1.1. X = 2.2. I = 2.3. Hacer ( X/I ).4. Si I es menor que X y la división es entera entonces X no es primo y pasar a 7.5. Si I es igual que X entonces X es primo y pasar a 7.6. Incrementar I y pasar a.3..7. Si X es más pequeño que MAX entonces incrementar X y pasar a.2. Mejora del algoritmo: parar la división si la I es mayor que X/2 Método 2: Criba de Eratóstenes.1. Poner todos los números entre 2 y MAX uno detrás de otro..2. Si hay números sin tachar, el primero de ellos es primo.3. Tachar de la lista todos los múltiplos del primer número.4. Borrar el primer número.5. Borrar los tachados y pasar a.2. Ejemplo 2: Suma de una sucesión aritmética 1.- Análisis del problema. Descripción del problema: a 1 + a 2 + a 3 + + a n donde a 2 = a 1 + d y en general a n = a 1 + (n-1)*d Entrada: Primer término (a 1 ) Distancia (d) Número de términos (n) Salida: Suma de todos los términos a i S n 2.- Búsqueda del algoritmo. Método 1 n i 1 Calcular los términos e ir sumándolos poco a poco:.1. S n 0.2. i 1.3. X a 1.4. Si i es más grande que n saltar a.9..5. S n S n + X.6. X X + d.7. i i + 1.8. Volver a.4..9. Mostrar el resultado (S n ) Apuntes realizados por Ricardo Ferrís Departamento de Informática. Universidad de Valencia 2

Método 2: Aplicación de la fórmula n ( n 1).1. S n n a1 d 2.2. Mostrar el resultado (S n ) Para la obtención de los algoritmos utilizaremos normalmente dos métodos: Diseño descendente o modular: El problema se divide en subprogramas de más fácil resolución. Representación gráfica de funciones. La representación como un solo problema es difícil de resolver, sin embargo podemos calcular los cortes con los ejes, máximos, mínimos y puntos de inflexión, asíntotas, Una vez obtenidos los resultados podemos proceder a juntarlos y obtener la representación gráfica. Diseño por refinamiento por pasos: 2 4 x x Resolución de la serie de Taylor: cos( x ) 1 2! 4! Solución parcial x n Solución parcial n! Generalmente la utilización de los dos métodos es complementaria. Programación del algoritmo Se va buscando la solución y se va especificando hasta llegar a una solución concreta que sí sabemos resolver. Una vez determinado el algoritmo hay que escribirlo en un lenguaje de alto nivel. Por eso lo mejor es escribir el algoritmo en un lenguaje restringido que sea fácil de traducir a un lenguaje de alto nivel. Existen dos formas básicas de escribir los algoritmos para conseguir esto: El pseudocódigo y los organigramas (o diagramas de flujo.) El pseudocódigo es una manera de escribir algoritmos de forma poco estricta (con una sintaxis relajada) o estructuras de datos poco detalladas, pero intentando acercar las ideas del algoritmos a estructuras y sintaxis parecidas a las de los lenguajes de alto nivel en los que vamos a programar el algoritmo. Los organigramas o diagramas de flujo son dibujos que representan de manera gráfica tanto las tareas como la sucesión de tareas del algoritmo. Las tareas se representan mediante rectángulos, rombos y romboides y el flujo de tareas mediante flechas que enlazan las diferentes tareas. Las instrucciones se representan en rectángulos: Las entradas y salidas en romboides: Las condiciones en rombos: El inicio, el final y los puntos de reunión de flujo en círculos: Ejercicios: 1. Calcular la tabla del dos. 2. Calcular el cuadrado de los 10 primeros números. 3. Calcular el factorial de un número. Apuntes realizados por Ricardo Ferrís Departamento de Informática. Universidad de Valencia 3

Estructuras de control Llamaremos estructuras de control a las acciones que tienen como objeto marcar el orden de ejecución de las instrucciones y que van a servirnos para escribir concisamente y sin ambigüedades los algoritmos. Todas las estructuras de control que estudiaremos estarán compuestas de unos elementos básicos (léxico) y una estructura (sintaxis.) Estructuras secuenciales En una estructura secuencial una instrucción sigue a otra en una secuencia lineal. tarea1 tarea2 tarean Ejemplo: Producto escalar de dos vectores bidimensionales. Leer (ax) Leer (ay) Leer (bx) Leer (by) prod_esc ax*bx + ay*by Escribir (prod_esc) (ax, ay) (bx, by) = ax*bx + ay*by Estructuras selectivas Son las que toman una cierta dirección dentro del flujo del programa en función de una condición o el valor de una variable. Apuntes realizados por Ricardo Ferrís Departamento de Informática. Universidad de Valencia 4

Alternativas simples Se realiza una acción o conjunto de acciones si se cumple una determinada condición. Si ( condición ) entonces acciones _si Ejemplo: Ordenar dos números (Leidos dos números escribir por pantalla primero el menor y luego el mayor) Leer (a) Leer (b) Si (a > b) Entonces aux a a b b aux _si Escribir (a) Escribir (b) Alternativas dobles Si una condición se cumple se realizan unas acciones, si no se cumple la condición se realizan otras. Si ( condición ) entonces acciones1 sino acciones2 _si Apuntes realizados por Ricardo Ferrís Departamento de Informática. Universidad de Valencia 5

Ejemplo sencillo: Dado un número, decir si es positivo o negativo. Algoritmo Positivo_Negativo Variables x: Entero Leer (x) Si (x<0) entonces Escribir ( Numero negativo ) sino Escribir ( Numero positivo ) _si Ejemplo: Cálculo de las soluciones de una ecuación de segundo grado. x b 2 b 4 a c 2 a Algoritmo ecuación_segundo_grado Variables a, b, c: entero x1, x2: real discriminante: entero Leer (a, b, c) Si 1 (a = 0) entonces Si 2 (b = 0) entonces Si 3 (c = 0) entonces Escribir ( La solución es cualquier valor real ) Sino 3 Escribir ( No existe ningún valor que cumpla la ecuación ) _si 3 Sino 2 x1 -c / b Escribir (x1) _si 2 Sino 1 discriminante b * b - 4 * a * c Si 4 (discriminate < 0) entonces Escribir ( Soluciones complejas ) Sino 4 x1 (-b + sqrt (discriminante) ) / ( 2 * a) x2 (-b + sqrt (discriminante) ) / ( 2 * a) Escribir (x1, x2) _si 4 _si 1 Apuntes realizados por Ricardo Ferrís Departamento de Informática. Universidad de Valencia 6

Alternativas múltiples Dependiendo del valor de una variable se realizan unas acciones u otras. Según_sea (variable) hacer Caso valor1: acciones1 Caso valor2: acciones2 Caso valorn: accionesn Default: accionesx _según_sea Este tipo de estructuras se utiliza especialmente cuando se programan menús de selección. Ejemplo: Calculadora infantil. Realizar un programa que pida dos números y una operación (suma, resta, multiplicación o división) y nos de el resultado de operar los números con esa operación. Apuntes realizados por Ricardo Ferrís Departamento de Informática. Universidad de Valencia 7

Algoritmo Calculadora Variables a, b, op: Entero res: Real Escribir ( Dame números ) Leer (a, b) Escribir ( Dame operación: ) Escribir ( (1-Suma/2-Resta ) Escribir( (3-Multiplic./4-División ) Leer (op) Según_sea (op) hacer Caso 1: res a + b Escribir (res) Caso 2: res a - b Escribir (res) Caso 3: res a * b Escribir (res) Caso 4: res a / b Escribir (res) Default: Escribir ( Operación no válida ) _según_sea Estructuras repetitivas (o bucles) Un bucle es un conjunto de instrucciones del programa que se ejecutan repetidamente o bien un número determinado de veces, o bien mientras se cumpla una determinada condición (hay que tener cuidado con los bucles infinitos) Todo bucle contiene los siguientes elementos (aunque no necesariamente en ese orden): Iniciación de las variables referentes al bucle. Decisión (seguimos con el bucle o terminamos.) Cuerpo del bucle. Existen tres tipos de bucles en programación estructurada: Bucle Desde Hasta Este bucle se utiliza cuando sabemos el número de veces que queremos que se realice una cierta tarea. Desde variable v_ini hasta v_fin hacer acciones _desde Apuntes realizados por Ricardo Ferrís Departamento de Informática. Universidad de Valencia 8

Bucle Hacer Mientras Este bucle lo utilizaremos si sabemos la condición que hace que se repita la tarea varias veces. Las acciones se realizan al menos una vez, antes de realizar la comprobación de la condición Hacer acciones Mientras (condición) Bucle Mientras Hacer Es muy parecido al anterior, pero en este caso la comprobación de la condición se realiza antes de ejecutar la tarea, de manera que la tarea puede no llegar a hacerse. Mientras (condición) Hacer acciones _Mientras Bucles anidados e independientes. Existen dos maneras básicas de utilizar varios bucles: De forma anidada y de forma independiente. De forma independiente nos limitaremos a ir haciendo los bucles de manera que al finalizar uno empezará el siguiente. De esta forma las tareas entre bucles son independientes (cálculo del número combinatorio) Otra forma es mediante la utilización de bucles anidados. Los bucles anidados son bucles que están dentro de otros bucles de manera que la ejecución de los bucles internos depende de la ejecución de los bucles externos (algoritmo que muestre las tablas de multiplicar del 1 al 10.) Programación modular Cuando realizamos ciertos programas (por ejemplo el programa de números combinatorios) podemos darnos cuenta que existen ciertas partes del programa que se repiten de forma muy similar, de manera que cambiando pocos elementos quedarían realmente iguales. Estas partes del programa que se repiten podríamos hacerlas depender de unos valores para que sirviesen para cualquier propósito. A estas partes de los programas es a lo que llamaremos módulos o subprogramas. Con esta separación podemos reutilizar ciertas partes del código de forma más sencilla, y podemos escribir más fácilmente los programas utilizando el diseño descendente para la resolución de algoritmos. Las características básicas que deben cumplir los subprogramas o módulos son: a.- Realización de una tarea específica. b.- Parametrización para caracterizar la actuación de los módulos (parámetros) Apuntes realizados por Ricardo Ferrís Departamento de Informática. Universidad de Valencia 9

c.- Existen básicamente dos tipos distintos de subprogramas: las funciones y los procedimientos (las funciones devuelven uno o más valores, mientras que los procedimientos devuelven ninguno o más.) Ambito de las variables Variables Locales Son propias de cada módulo y sólo existen mientras dura la ejecución del módulo. Cuando la ejecución del módulo desaparece, las variables locales desaparecen. Variables Globales Son variables que existen durante toda la ejecución del algoritmo, de manera que se puede acceder a ellas en cualquier momento de la ejecución del algoritmo. Paso de parámetros Por valor Sólo se tiene en cuenta el valor del parámetro pasado al módulo, de manera que durante la ejecución del módulo se reserva un espacio para ese parámetro y se copia el valor pasado en ese nuevo espacio. Cuando acaba la ejecución del módulo, el espacio para el parámetro desaparece. Por referencia Lo que pasamos a la función es una referencia al parámetro que se pasa, de manera que no existe un espacio reservado para ese parámetro durante la ejecución del módulo. Cualquier modificación que realicemos del parámetro quedará reflejado en el punto desde el que se hizo la llamada al módulo. Programación estructurada Diremos que estamos realizando una programación estructurada si empleamos para el diseño de los algoritmos el diseño descendente y/o modular. descomponemos, en función del diseño descendente, el programa en módulos independientes (prohibida la utilización de variables globales.) en cualquier caso, sólo utilizamos en la escritura de los algoritmos (y los programas) los tres tipos de estructuras de control vistas. Recurrencias (o recursividad) Es la propiedad de llamar a una función desde sí misma o desde otra que ha sido llamada por ésta. En matemáticas la recursividad es una forma sencilla y habitual de definir una función a partir de ella misma (por ejemplo la definición de factorial o de los números de Fibonacci.) Una característica muy importante de la recursividad es que, igual que en las estructuras repetitivas, debe de existir un punto o condición de fin, que en algún momento detenga la recursividad. Apuntes realizados por Ricardo Ferrís Departamento de Informática. Universidad de Valencia 10