sábado, 30 de abril de 2016

El flujo de un programa

Comparto fragmento de libro "APRENDA A PROGRAMAR COMO SI ESTUVIERA EN PRIMERO PRIMERO" de IKER AGUINAGA, GONZALO MARTÍNEZ Y JAVIER DÍAZ

Ver libro completo

Para cualquier tarea que desee realizarse es necesario, en primer lugar, entender qué ha que hacer. En este sentido, la inteligencia humana es capaz de interpretar instrucciones vagas o incompletas y hacerse cargo de qué hay que hacer realmente, observando el contexto.

Una vez entendida la tarea, hay que establecer los pasos a seguir para llegar al objetivo propuesto. Un algoritmo es un conjunto de pasos que al ser seguidos se consigue realizar una tarea o resolver un problema. Para realizar algoritmos fácilmente entendibles los programadores utilizan diagramas de flujo. Los diagramas de flujo son diagramas para expresar los pasos de un algoritmo por medio de símbolos conectados por líneas. Es como un "mapa" donde aparecen simultáneamente: 

  • Las rutas que puede seguir el flujo de datos al ejecutar un algoritmo. En algún punto es posible que el camino se divida en varios, en ese caso, el diagrama indica que si se cumplen unas determinadas condiciones, se escoger· un camino, si se cumplen otras, se escoger· otro, etc. 
  • Las acciones y operaciones que hay que realizar en puntos concretos del camino que se recorre.

Casi cualquier proceso se puede representar mediante un diagrama de flujo, también los procesos cotidianos. Cuando se planea algo, ese plan también se puede representar mediante un diagrama en el que se describen los pasos a dar y las decisiones a tomar dependiendo de las condiciones que se estén dando en cada etapa. 

La siguiente figura representa un ejemplo de como se podría representar un proceso de la vida cotidiana, el hecho de levantarse una mañana cualquiera e ir a trabajar, mediante un diagrama de flujo. Al fin y al cabo, para mucha gente levantarse e ir a trabajar es como ejecutar un programa de ordenador, con sus rutinas y subrutinas.

El símbolo "COMIENZO" indica el estado inicial del proceso, el punto de partida: el individuo se encuentra en su cama, durmiendo placenteramente. Al comenzar a ejecutarse el programa lo primero que se hace es realizar un Chequeo, en el que se comprueba si ha sonado el despertador o no. En caso negativo, se ejecuta la Instrucción de continuar durmiendo y se regresa al estado inicial del proceso. En caso afirmativo, hay que hacer un nuevo Chequeo: ¿Es hoy día de trabajo? Si no lo es, hay que seguir el camino indicado por el diagrama, que consta de varias Instrucciones: apagar la alarma, acordarse de que dejar la alarma encendida un fin de semana es un grave error, y seguir durmiendo. Una vez llegado a este punto se habría acabado el proceso de levantarse e ir al trabajo, se llega a un símbolo de "FIN". En este caso concreto no se habría realizado el proceso de levantarse e ir a trabajar, porque tras los sucesivos chequeos se ha comprobado que no se cumplían las condiciones necesarias para ello.

Pero volvamos al punto en el que se chequea si es día de trabajo. En caso de que sí lo sea, hay que continuar por el camino indicado. Hay que obedecer a la Instrucción de levantarse y vestirse. Tras hacerlo, parece que se esté en condiciones de continuar con el proceso, pero antes (sobre todo en una ciudad como San Sebastián), hay que Chequear si está lloviendo o no. Si no llueve, el proceso se puede hacer más rápido, directamente habrá que seguir la Instrucción de ir a trabajar. En caso contrario, hay que obedecer una Instrucción previa, que es la de coger un paraguas, antes de irse al trabajo. Una vez cumplidas estas instrucciones, termina el proceso representado por el diagrama, se llega al símbolo de "FIN", que indica el estado final, en el que el individuo se encuentra de camino al trabajo.

Share:

domingo, 16 de octubre de 2011

CRIBA DE ERATOSTENES

La criba de Eratóstenes es un algoritmo que permite hallar todos los números primos menores que un número natural dado N. Se forma una tabla con todos los números naturales comprendidos entre 2 y N y se van tachando los números que no son primos de la siguiente manera: Cuando se encuentra un número entero que no ha sido tachado, ese número es declarado primo, y se procede a tachar todos sus múltiplos. El proceso termina cuando el cuadrado del mayor número confirmado como primo es mayor que N.


Fuente: http://es.wikipedia.org/wiki/Criba_de_Erat%C3%B3stenes
Share:

INICIALIZAR MATRIZ EN LA DECLARACION (JAVA)

Inicializar matriz en la declaración


En Java es posible inicializar una matriz al declararla, tal y como sucede con los arreglos; esto se hace sin definir el número de renglones y columnas, colocando un operador de asignación y después entre llaves la lista de valores para cada renglón del arreglo, el arreglo separando con llaves para cada valor por columna, separado por comas, veamos los siguientes ejemplos:


double arreglo[][] = { {3.5, 5.4, -2.3 }, {22.3, 78.5, -9.4}};
char cadena[][] = {{‘a’, ‘g’, ‘u’, ‘a’}, {‘r’, ‘o’, ‘j’, ‘a’}} ;


En Java es posible saber el número de renglones de una matriz, solo escribiendo el nombre de la matriz un punto y la palabra length, también se puede saber el número de elementos de un renglón, dando el nombre del arreglo , el renglón entre corchetes y un punto y la palabra length, como se muestra en el siguiente ejemplo:



public class AplicacionMatrices2 {
    
    public static void main(String[] args) {
        int arreglo[][] = {{1,2,3}, {4,5,6}, {7,8,9}};
        
        for (int i=0; i<arreglo.length; i++) {
        for (int j=0; j<arreglo[0].length; j++) {
            System.out.print(" " + arreglo[i][j]  + " ");
        }
        System.out.println();
        }
    }
 }

El cual al ejecutar mostrará lo siguiente:
Es importante observar como se escriben los renglones por columna, recordando que se utiliza el print() para desplegar el valor, esto permitirá no cambiar de renglón, pero tampoco saldrá a la pantalla hasta encontrar un println(), el cual se hace después del ciclo de adentro que despliega todos los renglones de una columna.
Share:

domingo, 9 de octubre de 2011

ARREGLOS DE DOS DIMENSIONES I (JAVA)

¿Que es un arreglo de dos dimensiones?


Un arreglo de dos dimensiones es una colección de datos para una misma variable en dos dimensiones comúnmente llamados renglones y columnas.
Arreglo

12 -4 0 28 -3
-3 -5 2 189 -2
1 0 9 -4 12
Para poder guardar un valor u obtener alguno del arreglo de dos dimensiones (también llamado matriz) es ahora necesario utilizar dos dimensiones, el renglón y la columna.


Declaración de arreglos de dos dimensiones


Para declarar un arreglo de dos dimensiones se utiliza el siguiente formato:

tipo nombre_arreglo [][] = new tipo[ numero renglones][ numero columnas];

Donde tipo es el tipo de los datos que almacenará el arreglo de dos dimensiones. Es importante recordar que se pueden declarar arreglos de los tipos primitivos de Java (int, double, char, etc) o bien de tipos definidos por el usuario (Cuenta, Alumno, etc).

Tamaño representa la cantidad de casillas que se reservan para el arreglo. En Java todos los arreglos empiezan en el subíndice 0 y llegan al subíndice tamaño-1.


Por ejemplo:
int arr[][] = new int[5] [6]; // arreglo de 5 renglones y 6 columnas enteros
char cad[][] = new char[10] [5]; /* arreglo de 10 renglones por 5 columnas tipo                                                                               carácter*/


Uso e inicialización de los elementos del arreglo de dos dimensiones


Para usar los elementos individuales de un arreglo se usa el siguiente formato:

arreglo[subíndice-renglon] [subíndice-columna]

Como un elemento de un arreglo de dos dimensiones es también un dato, se puede usar como cualquier variable de ese tipo, debemos recordar que tanto el índice de renglón como el índice de columna toman como base el primer elemento cero:

int arr[][] = new int [2][5];
arr[3][4] = 12;
arr[1][0]= Integer.parseInt(t1.getText());
t2.setText("" + arr[0][1]);
arr[0][0] = arr[0][1] + arr[0][2];
int k = 2;


int l = 3
arr[k+1][l] = 20;


Ejemplo:
En este siguiente ejemplo, tenemos una aplicación que define un arreglo de enteros de dos dimensiones, con 3 renglones y 5 columnas, y los inicializa con el valor de 1 a 15, de acuerdo a cada renglón, empezando por 1 en el renglón 1, luego por 6 en el renglón 2 y 11 en el renglón 3. Después de inicializar la matriz, la despliega, desplegando los valores de un mismo renglón en la misma línea, como lo muestra la figura:
(/En construcción)

La aplicación es como se muestra a continuación:

 
public class AplicacionMatrices1 {
    
    public static void main(String[] args) {
        int arreglo[][] = new int [3][5];
        
        for (int i=0; i<3; i++) {
            for (int j=0; j<5; j++) {
                        arreglo [i][j] = i*5+j+1;                            
            }
        }
        
        for (int i=0; i<3; i++) {
            for (int j=0; j<5; j++) {
                        System.out.print(" " + arreglo[i][j]  + " ");
            }
            System.out.println();
        }
    }
 }
Share:

Ipod


BTemplates.com