martes, 10 de junio de 2014

BLOQUE 1: DISEÑAS Y ELABORAS ALGORITMOS PARA LA SOLUCION DE PROBLEMAS

PROBLEMA
se refiere a una determinada cuestión o asunto que requiere de una solución. se trata de algún asunto en particula, que en el momento en que se solucione aportara beneficion.

METODOLOGIA DE SOLUCION
La solución de un problema en informática requiere de cinco pasos, dispuestos de tal forma que cada uno es dependiente de los anteriores, lo cual indica que se trata de un proceso complementario y porlo tanto cada paso exige el mismo cuidado en su elaboración.
FASES DE LA METODOLOGIA

1- identificación del problema
2- planteamiento de alternativas de solución
3- elección de una alternativa
4- desarrollo de la solución
5- evaluación de la solución.
QUE ES LA PRUEBA DE ESCRITORIO?
 es seguir uno a uno de los pasos, verificando que se llegue siempre a resultados validos, si nos encontramos con ambigüedades es necesario revisar nuestra PROPUESTA DE SOLUCION.
CODIFICACION
consiste en escribir la solución del problema en una serie de instrucciones detalladas en un código reconocible por la computadora; es decir, en un lenguaje de programación. a esta serie de instrucciones se le conoce como PROGRAMA
PRUEBA DE DEPURACION
es el preoceso de identificar los errores qu se presenten durante la ejecución del programa, consiste en eliminar los errores que se hayan detectado durante la prueba para dar paso a una solución adecuada y sin errores..
ALGORITMO
 es un conjunto de pasos, instrucciones, acciones, u ordenes orientados ala resolución de un problema. para que un algoritmo pueda ser considerado como tal, debe ser una secuencia ordenada, definida y finita de instrucciones.
el concepto de algoritmo, aunque similar y obviamente relacionado, no debe confundirse con el concepto de programa.
DIAGRAMAS DE FLUJO
los diagramas de flujo son descripciones qraficas de algoritmos; usan símbolos conectados con flechas para indicar la secuencia de instrucciones. Los diagramas de flujo son usados para representar algoritmos. sn la reprsentacion grafica de los pasos de un proceso que se realiza para  entenderlo mejor.
VENTAJAS DE LOS DIAGRAMAS DE FLUJO
favorecen la comprensión del proceso al mostrarlo como un dibujo. el cerebor humano reconoce fácilmente los dibujos, un buen diagrama de flujo reemplaza varias paginas.
REGLAS PARA LA CONSTRUCCION DE DIAGRAMAS DE FLUJO
-Cualquier diagrama de flujo debe tener un inicio y un fin.
- Las lineas utilizadas para indicar la direccion del flujo deben ser rectas, verticales y horizontales. - todasd las lineas utilizadas para indicar la direccion del flujo deben estar conectadas.
- El diagrama de flujo debe ser construido de arriba hacia abajo y de izquierda a derecha.
-No pueden llegar mas de una linmea a un simbolo.
SOLUCION DE PROBLEMAS
 la finalidad de la solucion de problemas es poder codificar en un lenguaje de programacion los algoritmos que previamente se desarrollaon y se esquematizaron en un diagrama de flujo.

viernes, 23 de mayo de 2014


software ludico

Software educativo es el software destinando a la enseñanza y el auto aprendizaje y además permite el desarrollo de ciertas habilidades congnitivas. Así como existen profundas diferencias entre las filosofías pedagógicas, así también existe una amplia gama de enfoques para la creación de software educativo atendiendo a los diferentes tipos de interacción que debería existir entre los actores del proceso de enseñanza aprendizaje: educador, aprendiz, conocimiento, computadora. Como software educativo tenemos desde programas orientados al aprendizaje hasta sistemas operativos completos destinados a la educación, como por ejemplo las distribuciones Linux orientadas a la enseñanza.
Link de software ludico

ALGORITMOS







Algoritmo es un conjunto prescrito de instrucciones o reglas bien definidas, ordenadas y finitas que permite realizar una actividad mediante pasos sucesivos que no generen dudas a quien deba realizar dicha actividad.2 Dados un estado inicial y una entrada, siguiendo los pasos sucesivos se llega a un estado final y se obtiene una solución. Los algoritmos son el objeto de estudio de la algoritmia.
En la vida cotidiana, se emplean algoritmos frecuentemente para resolver problemas. Algunos ejemplos son los manuales de usuario, que muestran algoritmos para usar un aparato, o las instrucciones que recibe un trabajador por parte de su patrón. Algunos ejemplos en matemática son el algoritmo de multiplicación, para calcular el producto, el algoritmo de la división para calcular el cociente de dos números, el algoritmo de Euclidespara obtener el máximo común divisor de dos enteros positivos, o el método de Gauss para resolver un sistema lineal de ecuaciones.


¿Cómo se Diseña un Algoritmo?

En programación, un algoritmo establece, de manera genérica e informal, la secuencia de pasos o acciones que resuelve un determinado problema y, para representarlo, se utiliza, fundamentalmente, dos tipos de notación: pseudocódigo y diagramas de flujo.

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:
Introduzca un número entero: 3
Ha introducido 1 número(s)
La suma es 3

¿Desea introducir otro (s/n)?: s
Introduzca un número entero: 7
Ha introducido 2 número(s)
La suma es 10

¿Desea introducir otro (s/n)?: s
Introduzca un número entero: 6
Ha introducido 3 número(s)
La suma es 16

¿Desea introducir otro (s/n)?: s
Introduzca un número entero: 13
Ha introducido 4 número(s)
La suma es 29

¿Desea introducir otro (s/n)?: n
La media aritmética es 7.25
Introduzca un número entero: 8
Ha introducido 1 número(s)
La suma es 8

¿Desea introducir otro (s/n)?: n
La media aritmética es 8.000000
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
instruccciones 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 pseudocódigo:
algoritmo Media_aritmetica_de_numeros_introducidos

inicio

...

fin
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:
Ejemplo Ordinograma Paso 2
· 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:
algoritmo Media_aritmetica_de_numeros_introducidos

inicio

   escribir( "Introduzca un número entero: " )
   leer( numero )
   ...

fin
Se tiene que declarar la variable numero, así escribimos:
algoritmo Media_aritmetica_de_numeros_introducidos

variables
   entero numero

inicio

   escribir( "Introduzca un número entero: " )
   leer( numero )
   ...

fin
En ordinograma:
Ejemplo Ordinograma Paso 3
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:
algoritmo Media_aritmetica_de_numeros_introducidos

variables
   entero numero

inicio

   escribir( "Introduzca un número entero: " )
   leer( numero )
   ...

   escribir( "Ha introducido ", contador, " número(s)" )
   escribir( "La suma es ", acumulador )
   ...

fin
Y declaramos las nuevas variables: contador y acumulador.
algoritmo Media_aritmetica_de_numeros_introducidos

variables
   entero acumulador, contador, numero

inicio

   escribir( "Introduzca un número entero: " )
   leer( numero )
   ...

   escribir( "Ha introducido ", contador, " número(s)" )
   escribir( "La suma es ", acumulador )
   ...

fin
En ordinograma:
Ejemplo Ordinograma Paso 4
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.
algoritmo Media_aritmetica_de_numeros_introducidos

variables
   entero acumulador, contador, numero

inicio
   acumulador ← 0
   contador ← 0

   escribir( "Introduzca un número entero: " )
   leer( numero )

   acumulador ← acumulador + numero
   contador ← contador + 1

   escribir( "Ha introducido ", contador, " número(s)" )
   escribir( "La suma es ", acumulador )
   ...

fin
En ordinograma:
Ejemplo Ordinograma Paso 4
· 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:
algoritmo Media_aritmetica_de_numeros_introducidos

variables
   caracter seguir
     entero acumulador, contador, numero

inicio
   acumulador ← 0
   contador ← 0

   escribir( "Introduzca un número entero: " )
   leer( numero )

   acumulador ← acumulador + numero
   contador ← contador + 1

   escribir( "Ha introducido ", contador, " número(s)" )
   escribir( "La suma es ", acumulador )

   escribir( "¿Desea introducir otro número (s/n)?: " )
   leer( seguir )
   ...

fin
En ordinograma:
Ejemplo Ordinograma Paso 5
· 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 
¿Cuándo usar un bucle u otro? del Curso de Diseño de Algoritmos:

* ¿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:
algoritmo Media_aritmetica_de_numeros_introducidos

variables
   caracter seguir
     entero acumulador, contador, numero

inicio
   acumulador ← 0
   contador ← 0

   hacer
     escribir( "Introduzca un número entero: " )
     leer( numero )

     acumulador ← acumulador + numero
     contador ← contador + 1

     escribir( "Ha introducido ", contador, " número(s)" )
     escribir( "La suma es ", acumulador )

     escribir( "¿Desea introducir otro número (s/n)?: " )
     leer( seguir )
   mientras ( seguir <> 'n' )
   ...

fin
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:
Ejemplo Ordinograma Paso 6
· 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:
algoritmo Media_aritmetica_de_numeros_introducidos

variables
   caracter seguir
     entero acumulador, contador, numero

inicio
   acumulador ← 0
   contador ← 0

   hacer
     escribir( "Introduzca un número entero: " )
     leer( numero )

     acumulador ← acumulador + numero
     contador ← contador + 1

     escribir( "Ha introducido ", contador, " número(s)" )
     escribir( "La suma es ", acumulador )

     escribir( "¿Desea introducir otro número (s/n)?: " )
     leer( seguir )
   mientras ( seguir <> 'n' )

   escribir( "La media aritmética es ", acumulador / contador )
fin
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á:
Ejemplo Ordinograma Paso 7
Puede consultar la codificación de este algoritmo en lenguaje C y en Pascal. No obstante, téngase en cuenta que en Pascal se hace uso del bucle "repetir...hasta" en vez de "repetir...mientras

No hay comentarios.:

Publicar un comentario