domingo, 21 de marzo de 2010

Aprendo Jugando

Una de las maneras de aprender a solucionar problemas, desarrollar algoritmos y procesos mentales es mediante algunos juegos que imprimen destrezas y esfuerzos para lograr un objetivo.

En esta oportunidad acudiremos al famoso juego de destreza mental "Canibales y Misioneros".

El objetivo de este juego es pasar de una orilla a la otra los 3 canibales y los 3 misioneros, pero tomando en cuenta las siguientes reglas:

1. Nunca puede haber en la misma orilla un mayor numero de canibales que de misioneros.

2. La barca se puede transportar con 1 o 2 personas en ella.

Disfrutenlo y aprendan.

juego cruza canivales


Leer Mas

miércoles, 17 de marzo de 2010

Recuperación Tecnicas de Programación I, Periodo II

En el transcurso de los dias Lunes 15 , Jueves 18 y Viernes 19 de Marzo de 2010, se sacaran 3 notas con las cuales el estudiante puede recuperar, ademas de la oportunidad que se les dara el dia Sabado 20 de Marzo a las 7:00 AM en el colegio al presentar una evaluacion escrita que comprende los temas vistos en el segundo periodo.

- Solucion de problemas
- Conceptos de Algoritmos
- Ciclo While - Do
- Ciclo For - To

Las 3 notas de cada salon seran las siguientes:

8A

1. Revisión de las 2 unidades en el blog.
2. Sustentación oral.
3. Taller

8B

1. Revisión de las 2 unidades en el blog.
2. Revision de cuaderno
3. Taller

8C

1. Revisión de las 2 unidades en el blog.
2. Sustentación oral.
3. Taller


En el siguiente link, podran descargar el taller que comprende la 3ra nota de recuperación.


RECUERDEN LLEVARLO
RESUELTO EL SABADO A LAS 7:00 AM, AL COLEGIO Y EN UNIFORME DE DIARIO.
Leer Mas

lunes, 15 de marzo de 2010

Diagrama de flujo de datos


Un diagrama de flujo de datos (DFD por sus siglas en español e inglés) es una representación gráfica del "flujo" de datos a través de un sistema de información. Un diagrama de flujo de datos también se puede utilizar para la visualización de procesamiento de datos (diseño estructurado). Es una práctica común para un diseñador dibujar un contexto a nivel de DFD que primero muestra la interacción entre el sistema y las entidades externas. Este contexto a nivel de DFD se "explotó" para mostrar más detalles del sistema que se está modelando.

Los diagramas de flujo de datos fueron inventados por Larry Constantine, el desarrollador original del diseño estructurado, basado en el modelo de computación de Martin y Estrin: "flujo gráfico de datos" . Los diagramas de flujo de datos (DFD) son una de las tres perspectivas esenciales de Análisis de Sistemas Estructurados y Diseño por Método SSADM. El patrocinador de un proyecto y los usuarios finales tendrán que ser informados y consultados en todas las etapas de una evolución del sistema. Con un diagrama de flujo de datos, los usuarios van a poder visualizar la forma en que el sistema funcione, lo que el sistema va a lograr, y cómo el sistema se pondrá en práctica. El antiguo sistema de diagramas de flujo de datos puede ser elaborado y se comparó con el nuevo sistema de diagramas de flujo para establecer diferencias y mejoras a aplicar para desarrollar un sistema más eficiente. Los diagramas de flujo de datos pueden ser usados para proporcionar al usuario final una idea física de cómo resultarán los datos a última instancia, y cómo tienen un efecto sobre la estructura de todo el sistema. La manera en que cualquier sistema es desarrollado puede determinarse a través de un diagrama de flujo de datos. El desarrollo de un DFD ayuda en la identificación de los datos de la transacción en el modelo de datos.

Leer Mas

lunes, 8 de marzo de 2010

Estructuras repetitivas (bucles)

(Este artículo forma parte del Curso de Programación en C)

Los ordenadores se diseñaron inicialmente para realizar tareas sencillas y repetitivas. El ser humano es de lo más torpe acometiendo tareas repetitivas: pronto le falla la concentración y comienza a tener descuidos. Los ordenadores programables, en cambio, pueden realizar la misma tarea muchas veces por segundo durante años y nunca se aburren (o, al menos, hasta hoy no se ha tenido constancia de ello)

La estructura repetitiva, por tanto, reside en la naturaleza misma de los ordenadores y consiste, simplemente, en repetir varias veces un conjunto de instrucciones. Las estructuras repetitivas también se llaman bucles, lazos o iteraciones. Nosotros preferiremos la denominación bucle.

(Recuerde que la estructura repetitiva o bucle es una de las estructuras permitidas en la programación estructurada)

Los bucles tienen que repetir un conjunto de instrucciones un número finito de veces. Si no, nos encontraremos con un bucle infinito y el algoritmo no funcionará. En rigor, ni siquiera será un algoritmo, ya que no cumplirá la condición de finitud.

El bucle infinito es un peligro que acecha constantemente a los programadores y nos toparemos con él muchas veces a lo largo de este curso. Para conseguir que el bucle se repita sólo un número finito de veces, tiene que existir una condición de salida del mismo, es decir, una situación en la que ya no sea necesario seguir repitiendo las instrucciones.

Por tanto, los bucles se componen, básicamente, de dos elementos:

  • un cuerpo del bucle o conjunto de instrucciones que se ejecutan repetidamente
  • una condición de salida para dejar de repetir las instrucciones y continuar con el resto del algoritmo

Dependiendo de dónde se coloque la condición de salida (al principio o al final del conjunto de instrucciones repetidas), y de la forma de realizarla, existen tres tipos de bucles, aunque hay que resaltar que, con el primer tipo, se puede programar cualquier estructura iterativa. Pero con los otros dos, a veces el programa resulta más claro y legible. Los tres tipos de bucle se denominan:

  • Bucle “mientras“: la condición de salida está al principio del bucle.
  • Bucle “repetir“: la condición de salida está al final del bucle.
  • Bucle “para“: la condición de salida está al principio y se realiza con un contador automático.

El bucle “mientras”

El bucle “mientras” es una estructura que se repite mientras una condición sea verdadera. La condición, en forma de expresión lógica, se escribe en la cabecera del bucle, y a continuación aparecen las acciones que se repiten (cuerpo del bucle):

mientras (condición) hacer
inicio
acciones (cuerpo del bucle)
fin

Cuando se llega a una instrucción mientras, se evalúa la condición. Si es verdadera, se realizan las acciones y, al terminar el bloque de acciones, se regresa a la instrucción mientras (he aquí el bucle o lazo). Se vuelve a evaluar la condición y, si sigue siendo verdadera, vuelve a repetirse el bloque de acciones. Y así, sin parar, hasta que la condición se haga falsa.

Por ejemplo, vamos a escribir un algoritmo que muestre en la pantalla todos los números enteros entre 1 y 100

algoritmo contar
variables
cont es entero
inicio
cont = 0
mientras (cont <= 100) hacer
inicio
cont = cont + 1
escribir (cont)
fin
fin

Aquí observamos el uso de un contador en la condición de salida de un bucle, un elemento muy común en estas estructuras. Observe la evolución del algoritmo:

  • cont = 0. Se le asigna el valor 0 a la variable cont (contador)
  • mientras (cont <= 100) hacer. Condición de salida del bucle. Es verdadera porque cont vale 0, y por lo tanto es menor o igual que 100.
  • cont = cont + 1. Se incrementa el valor de cont en una unidad. Como valía 0, ahora vale 1.
  • escribir(cont). Se escribe el valor de cont, que será 1.

Después, el flujo del programa regresa a la instrucción mientras, ya que estamos en un bucle, y se vuelve a evaluar la condición. Ahora cont vale 1, luego sigue siendo verdadera. Se repiten las intrucciones del bucle, y cont se incrementa de nuevo, pasando a valer 2. Luego valdrá 3, luego 4, y así sucesivamente.

La condición de salida del bucle hace que éste se repita mientras cont valga menos de 101. De este modo nos aseguramos de escribir todos los números hasta el 100.

Lo más problemático a la hora de diseñar un bucle es, por lo tanto, pensar bien su condición de salida, porque si la condición de salida nunca se hiciera falsa, caeríamos en un bucle infinito. Por lo tanto, la variable implicada en la condición de salida debe sufrir alguna modificación en el interior del bucle; si no, la condición siempre sería verdadera. En nuestro ejemplo, la variable cont se modifica en el interior del bucle: por eso llega un momento, después de 100 repeticiones, en el que la condición se hace falsa y el bucle termina.

El bucle “repetir”

El bucle de tipo “repetir” es muy similar al bucle “mientras”, con la salvedad de que la condición de salida se evalúa al final del bucle, y no al principio, como a continuación veremos. Todo bucle “repetir” puede escribirse como un bucle “mientras”, pero al revés no siempre sucede.

La forma de la estructura “repetir” es la que sigue:

repetir
inicio
acciones
fin

Cuando el ordenador encuentra un bucle de este tipo, ejecuta las acciones escritas entre inicio y fin y, después, evalúa la condición, que debe ser de tipo lógico. Si el resultado es falso, se vuelven a repetir las acciones. Si el resultado es verdadero, el bucle se repite. Si es falso, se sale del bucle y se continúa ejecutando la siguiente instrucción.Existe, pues, una diferencia fundamental con respecto al bucle “mientras”: la condición se evalúa al final. Por lo tanto, las acciones del cuerpo de un bucle “repetir” se ejecutan al menos una vez, cuando en un bucle “mientras” es posible que no se ejecuten ninguna (si la condición de salida es falsa desde el principio)

Ejemplo: Escribir un algoritmo que escriba todos los números enteros entre 1 y 100, pero esta vez utilizando un bucle “repetir” en lugar de un bucle “mientras”

algoritmo contar
variables
cont es entero
inicio
cont = 0
repetir
inicio
cont = cont + 1
escribir (cont)
fin
mientras que (cont <= 100)
fin

Observa que el algoritmo es básicamente el mismo que en el ejemplo anterior, pero hemos cambiado el lugar de la condición de salida.

El bucle “para”

En muchas ocasiones se conoce de antemano el número de veces que se desean ejecutar las acciones del cuerpo del bucle. Cuando el número de repeticiones es fijo, lo más cómodo es usar un bucle “para”, aunque sería perfectamente posible sustituirlo por uno “mientras”.

La estructura “para” repite las acciones del bucle un número prefijado de veces e incrementa automáticamente una variable contador en cada repetición. Su forma general es:

para cont desde valor_inicial hasta valor_final hacer
inicio
acciones
fin

cont es la variable contador. La primera vez que se ejecutan las acciones situadas entre inicio y fin, la variable cont tiene el valor especificado en la expresión valor_inicial. En la siguiente repetición, cont se incrementa en una unidad, y así sucesivamente, hasta alcanzar el valor_final. Cuando esto ocurre, el bucle se ejecuta por última vez y después el programa continúa por la instrucción que haya a continuación.El incremento de la variable cont siempre es de 1 en cada repetición del bucle, salvo que se indique otra cosa. Por esta razón, la estructura “para ” tiene una sintaxis alternativa:

para cont desde valor_inicial hasta valor_final inc|dec paso hacer
inicio
acciones
fin

De esta forma, se puede especificar si la variable cont debe incrementarse (inc) o decrementarse (dec) en cada repetición, y en qué cantidad (paso).

Ejemplo 1: Escribir un algoritmo que escriba todos los números enteros entre 1 y 100, utilizando un bucle “para”

algoritmo contar
variables
cont es entero
inicio
para cont desde 1 hasta 100 hacer
inicio
escribir (cont)
fin
fin

De nuevo, lo más interesante es observar las diferencias de este algoritmo con los dos ejemplos anteriores. Advierta que ahora no es necesario asignar un valor inicial de 0 a cont, ya que se hace implícitamente en el mismo bucle; y tampoco es necesario incrementar el valor de cont en el cuerpo del bucle (cont = cont + 1), ya que de eso se encarga el propio bucle “para”. Por último, no hay que escribir condición de salida, ya que el bucle “para” se repite hasta que cont vale 100 (inclusive)

Ejemplo 2: Escribir un algoritmo que escriba todos los números enteros impares entre 1 y 100, utilizando un bucle “para”:

algoritmo contar
variables
cont es entero
inicio
para cont desde 1 hasta 100 inc 2 hacer
inicio
escribir (cont)
fin
fin

Este ejemplo, similar al anterior, sirve para ver el uso de la sintaxis anternativa del bucle “para”. La variable cont se incrementará en 2 unidades en cada repetición del bucle.

Leer Mas