Sei sulla pagina 1di 12

Divertimento:

Pepe y Pepa dan una fiesta en su casa e invitan a otras 4 parejas. Al llegar, cada
persona abraza a todas las otras que conoce, aunque nadie abraza a su pareja y
nadie abraza más de una vez a otra persona. Al final de la fiesta, Pepe pregunta a
Pepa y a cada uno de sus ocho invitados cuántos abrazos ha dado y obtiene
nueve respuestas diferentes. ¿A cuántas personas abrazó Pepa?

Solución:

Dado que son 4 parejas invitadas y que hay que contar a Pepe y a Pepa, tenemos
10 personas en la fiesta. Por tanto, procedemos a modelizar el problema, es decir,
a representar los datos del enunciado, por medio de los grafos. En este caso,
asignamos un vértice a cada una de las 10 personas y las aristas representarán
los abrazos que da cada uno. Denotaremos a los 10 vértices por P0, P1,…, P8
(uno de los cuales tiene que representar a Pepa) y el propio Pepe.

Como sabemos que son 9 las respuestas distintas que recibe Pepe, las
denotaremos por 0, 1, 2,…, 8. Vemos que entre las posibles respuestas
descartamos el que una persona haya abrazado a 9 personas, pues eso implicaría
que esa persona habría saludado también a su pareja.

Llamaremos P0 al asistente que no haya dado ningún abrazo, P1 al que solo haya
dado un abrazo, P2 al que solo haya dado 2 y así hasta el P8, que habrá dado 8
abrazos.

Se tiene entonces este grafo:


Ahora, viendo el grafo, nos centramos en la adyacencia de cada vértice, ya que
una característica de cada pareja es que las dos personas que la forman no se
abrazan entre sí, es decir, que los vértices correspondientes a cada una de ellas
no son adyacentes.

Sabemos que P8 abraza a 8 personas (que no pueden ser ni su pareja ni él


mismo), luego el único vértice no adyacente con él (es decir, al único invitado al
que quien dio 8 respuestas no ha abrazado) es P0 (que no ha dado ningún
abrazo). Por tanto, P0 es la pareja de P8.

P7 abraza a 7 personas, que no pueden ser ni él mismo, ni su pareja, ni P0. Por


tanto, P7 es pareja de P1 (que ya había abrazado a P8).

Análogamente, P6 sólo puede ser pareja de P0, P1 y P2 y como los dos primeros
ya están emparejados, resulta que P6 es pareja de P2.

Continuando con este razonamiento, deducimos que P5 es la pareja de P3 y que


P4 tiene que ser necesariamente Pepa, la pareja de Pepe.

Por tanto, Pepa dio 4 abrazos.


 
MARIA
  DIANA
PEDRO

ISMAEL

MARIO

CECILIA
THALIA

EDUARDO
JOSE
ANGELA
 
MARIA
  DIANA
PEDRO

ISMAEL

MARIO

CECILIA
THALIA

EDUARDO
JOSE
ANGELA
4.4.7 Matrices, arrays o vectores en java.

Java posee la capacidad de definir un conjunto de variables del mismo tipo


agrupadas todas ellas bajo un mismo nombre, y distinguiéndolas mediante un
índice numérico.

Para definir un array en java es como definir una variable o atributo, pero al
especificar el tipo lo que hacemos es colocar un par de corchetes [] para indicar
que lo que estamos definiendo es un array.

Por ejemplo:

public int [] losValores;

En la cuál definimos un array de enteros llamado losValores. Vamos a intentar


realizar un ejemplo para ver como funciona:

Práctica:

Crear el fichero Array.java

Agregar el siguiente código en el fichero:

public class Array

public static void main(String arg[])

int [] losValores = null;

losValores[4] = 100;

System.out.println(losValores[4]);

} }

Compilamos el código, ejecutemos y error!!! Parece extraño que el error sea


NullPointerException, pero tiene sentido, recordemos que una variable java, que
no sea de tipo básico es una referencia que puede apuntar a objetos y por tanto
losValores también es una referencia y debe de apuntar a objetos de tipo array de
enteros. Es decir el código de la función main es necesario modificarlo:

int [] losValores = new int[10];

losValores[4] = 100;
4.4.7 Matrices, arrays o vectores en java.

La modificación consiste básicamente en asignar a la variable losValores un objeto


de tipo array de enteros. La sintaxis para crear un objeto de tipo array es:

new tipo[cantidad]

Donde tipo es el tipo de datos que contendrá el array. cantidad es el número


máximo de elementos que podemos almacenar dentro del array. A la hora de
acceder a las posiciones del array hay que tener en cuenta que la primera posición
es 0 y la última cantidad-1.

Ahora vamos a tratar de escribir el mismo código pero empleando en lugar del tipo
int el tipo Persona:

Práctica:

Crear el fichero Array2.java

Agregar el siguiente código en el fichero:

public class Array2

public static void main(String arg[])

Persona [] lasPersonas = new Persona[10];

lasPersonas[4].setNombre("Luis");

System.out.println(lasPersonas [4].getNombre());

Veamos: definimos un array de 10 objetos de tipo Persona y lo asignamos a la


variable lasPersonas. Accedemos a la persona 4 del array y la asignamos un
nombre al objeto 4 mediante el método setNombre de la clase Persona.
Posteriormente mostramos por pantalla el nombre del objeto Persona 4.
Compilemos y ejecutemos: ERROR!!! Al ejecutar genera el error
NullPointerException. La explicación es sencilla: Al crear un array de objetos en
realidad el array no contiene objetos, sino que contiene variables de tipo referencia
para apuntar a los objetos. Arreglemos nuestro código para poder ejecutarlo de
nuevo:
4.4.7 Matrices, arrays o vectores en java.

Persona [] lasPersonas = new Persona[10];

lasPersonas[4] = new Persona();

lasPersonas[4].setNombre("Luis");

System.out.println(lasPersonas [4].getNombre());

Si es necesario se puede averiguar el tamaño de cualquier array java, mediante de


un atributo público que poseen todos los objetos de tipo array,
independientemente del tipo de objetos que almacene dicho array en su interior.
Este atributo se denomina length y para usarlo:

miArray.length

En la siguiente práctica usaremos dicho atributo para crear un bucle ( los veremos
más adelante) que permita mostrar por pantalla todos los elementos que hay en
un array llamado arg.

Práctica:

Crear el fichero Array3.java

Lo que vamos a hacer es tratar de ejecutar nuestra clase Array3, pero en lugar de
ejecutarla mediante: "java Array3" vamos a ejecutarla mediante "java Array3 Esto
es una prueba", es decir, vamos a pasar argumentos a nuestro programa. Dichos
argumentos son recibidos dentro del array llamado arg que existe en la definición
del método main.

Agreguemos el siguiente código dentro del fichero Array3.java:

public class Array3

public static void main(String arg[])

System.out.println("Hay " + arg.length + " parametros.");

System.out.println("Los parámetros son: ");

int i = 0;

while(i
Introducción.

Los diagramas de flujo son una manera de representar visualmente el flujo de datos a travéz de
sistemas de tratamiento de información. Los diagramas de flujo describen que operaciónes y en que
secuencia se requieren para solucionar un problema dado.

Un diagrama de flujo u organigrama es una representación diagramática que ilustra la secuencia de


las operaciones que se realizarán para conseguir la solución de un problema. Los diagramas de flujo
se dibujan generalmente antes de comenzar a programar el código frente a la computadora. Los
diagramas de flujo facilitan la comunicación entre los programadores y la gente del negocio. Estos
diagramas de flujo desempeñan un papel vital en la programación de un problema y facilitan la
comprensión de problemas complicados y sobre todo muy largos. Una vez que se dibuja el
diagrama de flujo, llega a ser fácil escribír el programa en cualquier idióma de alto nivel. Vemos a
menudo cómo los diagramas de flujo nos dan ventaja al momento de explicar el programa a otros.
Por lo tanto, está correcto decir que un diagrama de flujo es una necesidad para la documentación
mejor de un programa complejo.

Reglas para dibujar un diagramas de flujo.

Los Diagramas de flujo se dibujan generalmente usando algunos símbolos estándares; sin embargo,
algunos símbolos especiales pueden también ser desarrollados cuando séan requeridos. Algunos
símbolos estándares, que se requieren con frecuencia para diagramar programas de computadora se
muestran a continuación:

Inicio o fin del programa

Pasos, procesos o líneas de instruccion de programa de computo

Operaciones de entrada y salida

Toma de desiciónes y Ramificación

Conector para unir el flujo a otra parte del diagrama

Cinta magnética

Disco magnético

Conector de pagina

Líneas de flujo
Anotación

Display, para mostrar datos

Envía datos a la impresora

Observación: Para obtener la correcta elaboración de los símbolos, existen plantillas. Las puedes
conseguir en Papelerías.

Simbolos gráficos

Dentro de los simbolos fundamentales para la creaación de diagramas de flujo, los símbolos gráficos
son utilizádos especificamente para para operaciónes aritméticas y relaciónes condicionales. La
siguiente es una lista de los símbolos más comunmente utilizados:

+ Sumar
- Menos
* Multiplicación
/ División
± Mas o menos
= Equivalente a
> Mayor que
< Menor que
³ Mayor o igual que
£ Menor o igual que
¹ o <> Diferente de
Si
No
True
False

Reglas para la creacion de Diagramas

1. Los Diagramas de flujo deben escribirse de arriba hacia abajo, y/o de izquierda a derecha.
2. Los símbolos se unen con líneas, las cuales tienen en la punta una flecha que indica la
dirección que fluye la información procesos, se deben de utilizar solamente líneas de flujo
horizontal o verticales (nunca diagonales).
3. Se debe evitar el cruce de líneas, para lo cual se quisiera separar el flujo del diagrama a un
sitio distinto, se pudiera realizar utilizando los conectores. Se debe tener en cuenta que solo
se vana utilizar conectores cuando sea estrictamente necesario.
4. No deben quedar líneas de flujo sin conectar
5. Todo texto escrito dentro de un símbolo debe ser legible, preciso, evitando el uso de muchas
palabras.
6. Todos los símbolos pueden tener más de una línea de entrada, a excepción del símbolo final.
7. Solo los símbolos de decisión pueden y deben tener mas de una línea de flujo de salida.

Ejemplos de diagramas de flujo

Diagrama de flujo que encuentra la suma de los primeros 50 numeros naturales

Bueno, y ahora la descripción del diagrama anterior

Suma, es la variable a la que se le va agregando la valor de cada número natural. N, es el contador.


Éste recorrerá lo números hasta llegar al 50.

 El primer bloque indica el inicio del Diagrama de flujo

 El segundo bloque, es un Símbolo de procesos En este bloque se


asume que las variables suma y N han sido declaradas previamente y las inicializa en 0 para
comenzar a el conteo y la suma de valores (Para declararlas existe el bloque Tarjeta
perforada).

 El tercer bloque, es también un Símbolo de procesos En éste


paso se incrementa en 1 la variable N (N = N + 1). Por lo que, en la primera pasada esta N
valdrá 1, ya que estaba inicializada en 0.
 El cuarto bloque es exactamente lo mismo que el anterior

Pero en éste, ya se le agrega el valor de N a la variable


que contendrá la suma (En el primer caso contendrá 1, ya que N = 1).
 El quinto bloque es uno Símbolo de Toma de decisiones y Ramificación Lo que hay dentro
del bloque es una pregunta que se le hace a los valores que actualmente influyen en el

proceso (Por decir algo, no se como decirlo, soy muy sope )


¿Es N=50?, Obviamente la respuesta es no, ya que N todavía es 1. por lo que el flujo de
nuestro programa se dirigirá hacía la parte en donde se observa la palabra no: Tercer Bloque,
éste le sumará 1 (N=N+1) y vuelve a llegar a éste bloque, donde preguntará ¿Es N=50?...
¡No!, todavía es 2. Ha pues, regresa al Tercer bloque y vuelve hacer lo mismo. Y así hasta
llegar a 50, obteniendo así la suma de los primeros 50 primeros números naturales.
 Por último indicamos que el resultado será mostrado en la impresora (Este lo puedes

cambiarlo por el display para mostrar datos).

 Fin del programa (o diagrama)

Mi super adorada bibliografía

 http://www.google.com/search?q=flowcharting
 http://www.google.com.mx/search?q=flowcharting+template
 http://www.mis-algoritmos.com/diagramas-flujo.html
 http://www.nos.org/htm/basic2.htm
 http://www.tpub.com/neets/book22/93c.htm
 http://www.timelytemplates.com/f_computer/Tcomputer.htm

Potrebbero piacerti anche