domingo, 22 de mayo de 2011
lunes, 16 de mayo de 2011
lunes, 25 de abril de 2011
como hacer un algoritmo?
| Así pues, en este artículo, voy a explicar, con un ejemplo, los pasos que "mentalmente" se pueden seguir para diseñar el algoritmo, en Pseudocódigo CEE (C En Español) y ordinograma, de un programa que dé solución a un problema de programación. En concreto, vamos a ver, desmenuzadamente, cómo se puede diseñar el algoritmo para resolver el ejercicio 1, "Media aritmética de números introducidos", de la sección Repetitiva hacer...mientras del listado de ejercicios de programación resueltos en diferentes lenguajes. De forma que, los pasos a seguir (siete en este caso) son los siguientes: | |
| · Paso 1 | |
| Comprender qué es lo que se nos está pidiendo. En este caso, el enunciado del ejercicio es: "Diseñe el algoritmo de un programa que: 1º) Pida por teclado un número (dato entero). 2º) Muestre por pantalla los mensajes: * Ha introducido <cantidad_de_números> número(s) * La suma es <suma> 3º) Pregunte al usuario si desea introducir otro o no. 4º) Repita los pasos 1º, 2º y 3º, mientras que, el usuario no responda 'n' de (no). 5º) Muestre por pantalla la media aritmética (dato real) de los números introducidos. Nota: Utilice un bucle hacer...mientras." En pantalla: | |
| |
| |
| Simplemente, al leer el enunciado del problema, ya podemos hacernos una idea de algunas características importantes del algoritmo que vamos a diseñar: * Exiten 5 instrucciones de salida para mostrar por pantalla: Introduzca un número entero: Ha introducido X número(s) La suma es Y ¿Desea introducir otro (s/n)?: La media aritmética es Z * Exiten 2 instrucciones de entrada. Una para recoger un dato númerico entero después de mostrar por pantalla: Introduzca un número entero: y, otra, para recoger un dato de tipo carácter después de mostrar por pantalla: ¿Desea introducir otro (s/n)?: * En algún momento, se deberá calcular: la cantidad de números introducidos, la suma de los mismos y la media aritmética de dichos números, por tanto, seguramente, emplearemos 2 ó 3 instrucciones de asignación. * Tendremos que utilizar varias variables para: recoger el o los números que introduzca el usuario por teclado (numero), contar los números introducidos (contador), almacenar la suma de dichos números (acumulador), preguntar al usuario si desea introducir otro número o no (seguir), ¿calcular la media aritmética (media_aritmetica)? * Necesitaremos un bucle para que el usuario pueda introducir los números que desee (solamente uno o más), de hecho, ya se nos especifica, en la "Nota" del enunciado, que debemos hacer uso de un bucle hacer...mientras. En los pasos siguientes, vamos a ver cómo combinar los elementos detectados e integrarlos en la estructura de un algoritmo. No obstante, lo vamos a hacer, poco a poco, a medida que vayamos construyendo dicho algoritmo. | |
| · Paso 2 | |
| Escribir la estructura básica del algoritmo en pseodocódigo: | |
| |
| Obsérvese que, ya podemos nombrar al algoritmo mediante un identificador, en este caso, podemos escribir: Media_aritmetica_de_numeros_introducidos En ordinograma, comenzaremos escribiendo el inicio y fin del cuerpo: | |
| · Paso 3 | |
| Según se nos indica en el primer punto del ejercicio, el algoritmo debe: 1º) Pedir por teclado un número (dato entero). Mostrándose por pantalla: Introduzca un número entero: <número> Por consiguiente, en el algoritmo hay que escribir una instrucción de salida y otra de entrada. En pseudocódigo: | |
| |
| Se tiene que declarar la variable numero, así escribimos: | |
| |
| En ordinograma: | |
| Recordemos que, en los ordinogramas no se representa la declaración de variables. | |
| · Paso 4 | |
| A continuación, en el segundo punto del ejercicio se nos indica que: 2º) El programa debe mostrar por pantalla los mensajes: * Ha introducido <cantidad_de_números> número(s) * La suma es <suma> De modo que, incorporamos dos nuevas instrucciones de salida al algoritmo, en las que vamos a mostrar el valor de una variable contador para mostrar la cantidad de números introducidos por el usuario y, por otra parte, el valor de una variable acumulador, para mostrar la suma de dichos números. En pseudocódigo: | |
| |
| Y declaramos las nuevas variables: contador y acumulador. | |
| |
| En ordinograma: | |
| Pero, ¿qué valores tienen las variables contador y acumulador? Inicialmente, almacenarán un cero (0) cada una de ellas y, después de leer un número, habrá que incrementar el valor de contador en uno (1) y sumar el valor de dicho número a acumulador. | |
| |
| En ordinograma: | |
| · Paso 5 | |
| Atendiendo al tercer punto del ejercicio: 3º) Preguntar al usuario si desea introducir otro número o no. al algoritmo le añadimos una nueva instrucción de salida, otra de entrada y declaramos una nueva variable (seguir). En pseudocódigo: | |
| |
| En ordinograma: | |
| · Paso 6 | |
| Teniendo en cuenta el cuarto punto del ejercicio: 4º) Repetir los pasos 1º, 2º y 3º, mientras que, el usuario no responda 'n' de (no). es necesario hacer uso de una instrucción de control repetitiva que, como se especifica en la "Nota" del ejercicio, será un bucle hacer...mientras. En cualquier caso, también podríamos habernos hecho las preguntas del apartado 10.3 Repetitiva para del Curso de Diseño de Algoritmos acerca de cuándo usar un bucle u otro: * ¿Se conoce, de antemano, el número de veces (iteraciones) que tiene que ejecutarse un determinado bloque de instrucciones? No, por tanto, descartamos el bucle para. * ¿El bloque de instrucciones debe ejecutarse al menos una vez? Sí, de forma que, optamos por hacer uso de un bucle hacer...mientras. En pseudocódigo: | |
| |
| Fíjese que, la inicialización de las variables contador y acumulador no están dentro del bloque de instrucciones del bucle, ya que, ello provocaría un error de lógica. En ordinograma: | |
| · Paso 7 | |
| Y, finalmente, para el quinto punto: 5º) Mostrar por pantalla la media aritmética (dato real) de los números introducidos. añadimos una última instrucción. En pseudocódigo: | |
| |
| Nótese que, para mostrar la media aritmética no hemos utilizado una nueva variable y, de esta forma, también nos ahorramos escribir una nueva instrucción de asignación: media_aritmética ← acumulador / contador En ordinograma, la solución final será: | |
algoritmo
Podemos encontrar muchas definiciones de algoritmo en los textos de programacion, todas ellas muy similares:
Las definiciones mas completas o formales:
Caracteristicas:
Las características fundamentales que debe cumplir todo algoritmo son:
Historia:
La palabra algoritmo proviene del nombre del matemático llamado Abu Abdullah Muhammad bin Musa al-Khwarizmi (hay muchas variantes para el nombre al usar el alfabeto latin, tales como Al-Khorezmi, Al-Khwarizmi, Al-Khawarizmi, Al-Khawaritzmi o Al-Khowarizmi) que vivió entre los siglos VIII y IX.
Su trabajo consistió en preservar y difundir el conocimiento de la antigua Grecia y de la India. Sus libros eran de fácil comprensión, de ahí que su principal valor no fuera el de crear nuevos teoremas o nuevas corrientes de pensamiento, sino el de simplificar las matemáticas a un nivel lo suficientemente bajo para que pudiera ser comprendido por un amplio público. Cabe destacar cómo señaló las virtudes del sistema decimal indio (en contra de los sistemas tradicionales árabes) y cómo explicó que, mediante una especificación clara y concisa de cómo calcular sistemáticamente, se podrían definir algoritmos que fueran usados en dispositivos mecánicos similares a un ábaco en vez de las manos. También estudió la manera de reducir el numero de operaciones necesarias que formaban el cálculo.
Por esta razón, aunque no haya sido él el inventor del primer algoritmo, merece que este concepto esté asociado a su nombre. Al-Khorezmi fue sin duda el primer pensador algorítmico.
Ya en el siglo XIX, se produjo el primer algoritmo escrito para un computador. La autora fue Ada Byron, en cuyos escritos se detallaban la máquina analítica en 1842. Por ello que es considerada por muchos como la primera programadora aunque, desde Charles Babbage, nadie completó su máquina, por lo que el algoritmo nunca se implementó.
La idea de resolver un problema o de disponer de un algoritmo es bastante antigua, tal es así, que existía la errada creencia que no había problema que no se pudiera resolver y en base a ello, el matemático David Hilbert quiso descubrir un algoritmo para los algoritmos. Hoy en dia gracias a los trabajos de Kurt Gödel, Alonzo Church (calculo lamba), Alan Turing (maquina de turing), se sabe que dentro del universo de problemas, una pequeña parte es computable, luego que el objetivo que perseguia David Hilbert no era computable, es lo que se ha denominado como la computabilidad de los algoritmos.
- Conjunto ordenado y finito de pasos que permite hallar la solución de un problema.
- Una secuencia de pasos que conducen a la realización de una tarea.
- Descripción exacta de la secuencia en que se ha de realizar un conjunto de actividades tendientes a resolver un determinado tipo de problema o procedimiento.
- Conjunto de sentencias / instrucciones en lenguaje nativo, los cuales expresan la lógica de un programa.
- Es un sistema por el cual se llega a una solución, teniendo en cuenta que debe de ser definido, finito y preciso.
- Toda receta, proceso, rutina, método, procedimiento, técnica, formula que resuelven un determinado problema.
- Conjunto de instrucciones concretas y detalladas mediante el cual se consigue una acción determinada.
- Conjunto de reglas que permiten obtener un resultado determinado a partir de ciertas reglas definidas.
- Descripción precisa de una sucesión de instrucciones que permite llevar a cabo un trabajo en un número finito de pasos.
- Un conjunto de símbolos y procedimientos usados en la realización de un cálculo.
Las definiciones mas completas o formales:
- Secuencia finita de instrucciones, reglas o pasos que describen de forma precisa las operaciones de un ordenador debe realizar para llevar a cabo un tarea en un tiempo mas finito. [Donald E. Knuth, 1968]
- Descripcion de un esquema de comportamiento expresado mediante un reportorio finito de acciones y de informaciones elementales, identificadas, bien comprendidas y realizables a priori. Este repertorio se denomica lexico [Pierre Scholl, 1988]
- Un algoritmo es un conjunto finito de pasos definidos, estructurados en el tiempo y formulados con base a un conjunto finito de reglas no ambiguas, que proveen un procedimiento para dar la solución o indicar la falta de esta a un problema en un tiempo determinado. [Rodolfo Quispe-Otazu, 2004]
Caracteristicas:
Las características fundamentales que debe cumplir todo algoritmo son:
- Ser definido: Sin ambigüedad, cada paso del algoritmo debe indicar la acción a realizar sin criterios de interpretación.
- Ser finito: Un número específico y numerable de pasos debe componer al algoritmo, el cual deberá finalizar al completarlos.
- Tener cero o más entradas: Datos son proporcionados a un algoritmo como insumo (o estos son generados de alguna forma) para llevar a cabo las operaciones que comprende.
- Tener una o más salidas: Debe siempre devolver un resultado; de nada sirve un algoritmo que hace algo y nunca sabemos que fue. El devolver un resultado no debe ser considerado como únicamente “verlos” en forma impresa o en pantalla, como ocurre con las computadoras. Existen muchos otros mecanismos susceptibles de programación que no cuentan con una salida de resultados de esta forma. Por salida de resultados debe entenderse todo medio o canal por el cual es posible apreciar los efectos de las acciones del algoritmo.
- Efectividad: El tiempo y esfuerzo por cada paso realizado debe ser preciso, no usando nada más ni nada menos que aquello que se requiera para y en su ejecución.
Historia:
La palabra algoritmo proviene del nombre del matemático llamado Abu Abdullah Muhammad bin Musa al-Khwarizmi (hay muchas variantes para el nombre al usar el alfabeto latin, tales como Al-Khorezmi, Al-Khwarizmi, Al-Khawarizmi, Al-Khawaritzmi o Al-Khowarizmi) que vivió entre los siglos VIII y IX.
Su trabajo consistió en preservar y difundir el conocimiento de la antigua Grecia y de la India. Sus libros eran de fácil comprensión, de ahí que su principal valor no fuera el de crear nuevos teoremas o nuevas corrientes de pensamiento, sino el de simplificar las matemáticas a un nivel lo suficientemente bajo para que pudiera ser comprendido por un amplio público. Cabe destacar cómo señaló las virtudes del sistema decimal indio (en contra de los sistemas tradicionales árabes) y cómo explicó que, mediante una especificación clara y concisa de cómo calcular sistemáticamente, se podrían definir algoritmos que fueran usados en dispositivos mecánicos similares a un ábaco en vez de las manos. También estudió la manera de reducir el numero de operaciones necesarias que formaban el cálculo.
Por esta razón, aunque no haya sido él el inventor del primer algoritmo, merece que este concepto esté asociado a su nombre. Al-Khorezmi fue sin duda el primer pensador algorítmico.
Ya en el siglo XIX, se produjo el primer algoritmo escrito para un computador. La autora fue Ada Byron, en cuyos escritos se detallaban la máquina analítica en 1842. Por ello que es considerada por muchos como la primera programadora aunque, desde Charles Babbage, nadie completó su máquina, por lo que el algoritmo nunca se implementó.
La idea de resolver un problema o de disponer de un algoritmo es bastante antigua, tal es así, que existía la errada creencia que no había problema que no se pudiera resolver y en base a ello, el matemático David Hilbert quiso descubrir un algoritmo para los algoritmos. Hoy en dia gracias a los trabajos de Kurt Gödel, Alonzo Church (calculo lamba), Alan Turing (maquina de turing), se sabe que dentro del universo de problemas, una pequeña parte es computable, luego que el objetivo que perseguia David Hilbert no era computable, es lo que se ha denominado como la computabilidad de los algoritmos.
martes, 12 de abril de 2011
solo para nosotras
ola te damos la bienvenida a este tu espacio donde podras conseguir conseguir todo lo que deseas desde los mejores consejos en el amor y en la belleza hasta los chismes de los famosos mas lindos del mundo..........
estaremos actualizandonos cada semana para que siempre estes al dia con lo que necesites
asi que llama a tus amigas para que todas tengan algo nuevo de que hablar.
Suscribirse a:
Comentarios (Atom)


