sábado, 5 de abril de 2014

¿Cómo guarda el ordenador la información? (1)

En este artículo vamos a ver cómo un ordenador almacena la información que utiliza. Es importante para comprender qué son las variables en los lenguajes de programación.

Este tema es muy importante porque cuando una persona se inicia en el aprendizaje de la programación, al principio no entiende bien que significan las variables, la memoria que ocupan, el uso que se les da etc. Si este tema se entiende bien, tendremos mucho ganado a la hora de dar nuestros primeros pasos en la programación.

Toda la información que se almacena en un ordenador se debe guardar en última instancia, en código binario/lenguaje máquina, que es el único idioma que entiende el ordenador. Esto es así porque el ordenador almacena la información mediante pequeños biestables o componentes electrónicos que solo pueden adoptar dos posiciones: que tengan corriente o que no la tengan.
Un ordenador no puede guardar un carácter o letra como la B o un símbolo como el *. La memoria del ordenador, y ahí incluimos el resto de componentes internos que forman el pc, no comprende las letras ni los números, sólo entiende los impulsos de corriente eléctrica. Así, cuando un usuario quiere guardar una letra o cualquier información, mediante un procesador de textos por ejemplo, el sistema operativo y los componentes hardware del pc transforma la letra o el texto en un conjunto de impulsos eléctricos.
Las celdas de memoria del ordenador pueden adoptar dos posiciones:
1 Indica presencia de corriente eléctrica
0 No hay presencia de corriente eléctrica.
Así pues, tanto los datos con los que opera el ordenador como los programas que utiliza tienen que estar codificados en binario (con unos y ceros).

Con un ordenador podemos usar diferentes tipos de datos: datos numéricos, datos alfanuméricos, imágenes, vídeos, sonidos etc; todos estos datos tienen que convertirse, para ser almacenados y utilizados por el ordenador, a código binario. Dependiendo del tipo de dato que se quiera utilizar, el ordenador emplea un sistema de codificación diferente, que facilita el paso de la información a código binario

¿Cómo transforma un ordenador información numérica a código binario?
Cuando se trata de convertir códigos numéricos a binario, se utilizan las leyes matemáticas básicas de conversión entre sistemas de numeración. Se hace así porque, de esta forma, el ordenador puede utilizar las leyes de la aritmética matemática para operar con los valores numéricos (sumar, restar, multiplicar, dividir...). De hacer estas operaciones matemáticas básicas se encarga una parte del procesador que es la unidad aritmética/lógica (un procesador está compuesto por dos miembros: la unidad de control y la unidad aritmético/lógica. La primera se encarga de buscar, controlar y ejecutar las instrucciones de los programas mientras que la segunda hace operaciones aritméticas y lógicas).
Antes de ver el proceso de conversión de números a binario conviene saber un par de cosas:
Los sistemas de numeración que se utilizan en informática son normalmente el decimal, el octal y el hexadecimal. El primero porque es el que usamos normalmente para representar los números, los otros dos porque es muy fácil convertirlos a binario.
Primero de todo, ¿qué es un sistema de numeración?
Bueno, un sistema de numeración es un conjunto de símbolos y reglas que utilizamos para representar cantidades o datos numéricos. Tienen una base que es a la que referencian y que determina el número de símbolos diferentes que componen el sistema de numeración. Así, el sistema decimal tiene base 10 y está compuesto por los números del 0 al 9. El octal tiene de base el 8 y está compuesto por los números del 0 al 7 y el hexadecimal tiene de base el 16 pero a diferencia de los otros dos sistemas no está compuesto por los números del 0 al 15 sino por los números del 0 al 9 y las letras A,B,C,D,E y F, siendo la letra A el equivalente en decimal al 10, la letra B sería el 11 y así hasta el 15 que sería la F.

Todos los sistemas de numeración que se utilizan son sistemas posicionales, es decir, el valor relativo que cada símbolo representa viene determinado por su valor absoluto y la posición que este ocupa. Por ejemplo, el número 1050 en decimal está formado por los siguientes números:
1 * 103 + 0 * 102 + 5 * 101 + 0 * 100 = 1000 + 0 + 50 + 0 = 1050
o el 358: 3*102 + 5*101 + 8*100 = 300 + 50 + 8 = 358


Convertir un número decimal  a binario (o cualquier otra base)
Para convertir un número decimal a binario se puede hacer de dos maneras: mediante multiplicaciones y divisiones o mediante restas sucesivas.
El primer método consiste en hacer la división entera de la parte entera del número que queramos convertir a binario (o cualquier otra base) entre la base a la que lo queramos convertir. Luego cogemos como dividendo el cociente de la anterior división y seguimos haciendo este paso hasta que el resto sea menor que la base. El último cociente y todos los restos forman la parte entera del número decimal en la base a convertir. En este caso vamos a convertir el número 589 en decimal a binario:
Hacemos la división sucesiva entre dos:
Una vez hecha la división cogemos el último cociente y todos los restos desde el último al primero y el número quedaría así:
1001001101  que es la representación en binario del número 589 en decimal. Dicho número al tener 10 dígitos ocupa 10 bits en memoria (recordad que cada dígito binario es un bit de información)
Si queremos pasar un número en decimal con parte fraccionaria o decimales, separamos la parte entera del número y hacemos la división exactamente igual. Luego cogemos la parte decimal y la multiplicamos por la base hasta que el resultado sea cero o se repita, en cuyo caso significaría que el número es periódico. Como ejemplo, vamos a convertir en binario el número 589,25.
Primero convertimos la parte entera, que es la que hemos hecho arriba: 1001001101.
Ahora cogemos la parte decimal que sería 0,25 y la multiplicamos por 2 hasta que tengamos como resultado cero o se repita el resultado:
0,25 * 2 = 0,5  (Nos quedamos con la parte entera, en este caso es cero, y seguimos multiplicando la parte decimal) --> 0
0,5 * 2 = 1,0 --> 1 (Como la parte fraccionaria aquí es cero terminamos)
La parte fraccionaria del número es 01 por tanto el número completo en binario es 1001001101,01
Si en vez de pasar el número a binario lo queremos pasar a octal se hace lo mismo pero dividiendo la parte entera por 8 en vez de por 2 y multiplicando la parte fraccionaria también por 8.

A parte de este método existe el de restas sucesivas: 
Aquí lo que hay que hacer es buscar la potencia de la base más grande que se pueda restar al número que queremos convertir, luego tomamos como nuevo número el resultado de la resta y así hasta que el resultado sea cero o se repita. Para ver esto vamos a convertir a binario el número anterior 589 pero esta vez con las restas sucesivas:
Lo primero es averiguar que potencia de 2 podemos restarle primero:
Hacemos una tabla de potencias de 2:
Tenemos el número 589, en este caso, la potencia más grande de 2 que podemos restar es 512 que es 29.
Hacemos la resta:
589 - 512 = 77 (hemos restado 29)
Ahora seguimos restando el nuevo resultado por la mayor potencia de 2 posible:
77 - 64 = 13 (hemos restado 26)
13 - 8 = 5 (hemos restado 23)
5 - 4 = 1 (hemos restado 22)
1 - 1 = 0 (hemos restado 20)
Una vez hecho esto, ya podemos escribir el número en binario, poniendo un 1 en las posiciones donde hayamos restado una potencia de 2 y un cero en las que no:
posición             10  9  8  7  6  5  4  3  2  1  0
dígito en binario  0   1  0  0  1  0  0  1  1  0  1
¿Qué significa esa tabla?
Hemos restado el número por las potencias de 2 siguientes: 29, 26, 23, 22 y 20, por tanto, en esas posiciones ponemos un 1, en las demás un cero, así queda el siguiente número: 1001001101 que es exactamente el mismo que salió cuando lo convertimos por el método de división y multiplicación.

Convertir cualquier número en cualquier base a decimal
Para hacer esto, solamente tenemos que calcular el polinomio que consiste en multiplicar cada dígito del número por la base del sistema de numeración que tengamos elevado a su posición en el número.
Como ejemplo, vamos a convertir el número anterior en binario a decimal: 1001001101
Empezamos a contar desde el último dígito hasta el primero para ver las potencias, como son 10 dígitos, van del 0 al 9, como el número es binario, la base es 2 así pues queda el siguiente polinomio:
(1 * 29) + (0 * 28) + (0 * 27) + (1 * 26) + (0 * 25) + (0 * 24) + (1 * 23) + (1 * 22) + (0 * 21) + (1 * 20) nota: pongo paréntesis para que se vea más claro.
Si calculamos eso nos queda:
(1*512) + 0 + 0 + (1*64)+0+0+(1*8)+(1*4)+0+1
Haciendo la suma tenemos: 512 + 64 + 8 + 4 + 1 = 589
que es la representación en decimal del número 1001001101.
Si el número fuera en octal se haría lo mismo pero multiplicando por potencias de 8 en vez de dos y si fuera hexadecimal por potencias de 16 teniendo en cuenta que las letras A-F son los números del  10 al 15 en decimal.
En el próximo artículo, veremos cómo se realizan operaciones aritméticas con los números binarios y como se representan las cantidades negativas.

viernes, 7 de marzo de 2014

PSeInt

Normalmente, cuando se empieza a estudiar fundamentos o inicios de la programación, siempre se está durante un corto periodo de tiempo haciendo programas (algoritmos) en pseudocódigo. Digo que es corto el tiempo, porque enseguida se pasa a estudiar un lenguaje de programación específico, normalmente C o C++ (en mi caso fue C). La razón es sencilla, primero porque no suele haber tiempo suficiente en la asignatura para estar dando programas en pseudocódigo y la otra razón y supongo que la más importante es que los programas en pseudocódigo no se pueden probar. La única manera que tienen los alumnos de saber que el programa es correcto es que el profesor les dice que está bien. Por tanto, se pasa pronto a escribir los programas en un lenguaje de programación, y es ahí, donde el estudiante puede probar lo que escribe y ver sus fallos, amén de ver los conceptos más importantes de la programación desde el propio lenguaje que se estudia.

En mi caso particular, estuve el primer año de estudios dando pseudocódigo durante dos semanas, para luego pasar al lenguaje de programación C, y fue aquí donde aprendí los conceptos fundamentales de la programación orientadas a ese lenguaje, estructuras básicas de control (secuencial, iterativa y repetitiva), tipos de datos, estructuras de datos, búsquedas, ordenación etc. Creo que en mi caso al menos, el hecho de hacerlo de esta manera dificultó mi aprendizaje, pues tienes que aprender la sintaxis del lenguaje C a la vez que aprendes los conceptos básicos de programación (contadores, acumuladores, arrays o arreglos, algoritmos de ordenación, búsquedas etc.). El alumno se enfrenta a dos dificultades añadidas: aprender un lenguaje en concreto y los fundamentos o teoría de la programación. 

Con PSeInt, el aprendizaje de la programación se hace más sencilla, puesto que el estudiante puede centrarse directamente en los conceptos importantes de la programación usando su idioma, sin preocuparse de la sintaxis de un lenguaje en concreto. Una vez conocido y dominado dichos conceptos, es relativamente fácil aprender un lenguaje y usar esos conceptos en él.

Pues bien, después de esta introducción, pasaremos a ver lo que es PSeInt. PSeInt es un interprete de pseudocódigo. Con esta aplicación el estudiante de programación puede crear algoritmos usando el lenguaje español de una forma fácil y sencilla y luego ver el resultado del algoritmo en una ventana de DOS, igual que si lo hiciera en un lenguaje de programación como C o Pascal, por decir un par de ellos.

PSeInt nos proporciona un editor de texto con realzado de sintaxis igual que cualquier IDE (entorno de desarrollo integrado) y ayudas a la escritura en tiempo real. Nos proporciona verificación de sintaxis en tiempo real, esto es, si escribimos una sentencia incorrecta o nos falta algo, el propio programa nos lo avisa señalándolo en el editor de código mediante un subrayado rojo.

Además también incluye herramientas de explicación y comprobación de los algoritmos que escribamos. Tiene una opción para ejecutar el algoritmo paso a paso y ver si realmente hace lo que se supone tiene que hacer. Comprobar el valor de las variables y las expresiones que escribamos en tiempo de ejecución del algoritmo y un sistema de ejecución explicado sentencia a sentencia , en el que podemos ver linea a linea lo que hace cada instrucción que hemos escrito.

El programa no solo permite escribir el algoritmo en pseudocódigo, sino que también nos deja hacerlo en diagramas de flujos de datos, y añade una opción para cambiar el dfd a diagrama n-s. Pintar el dfd es muy fácil, en una ventana tenemos un panel donde elegir las estructuras que queramos usar (bucles, elecciones, etc), lecturas por consola, instrucciones etc.


Una vez terminado podemos guardarlo como un archivo de imagen, a la vez que el propio dfd se inserta en el editor de código como un algoritmo en pseudocódigo. 
El programa cuenta con los siguientes menús:
  • Archivo:
    • Nuevo: Abre una nueva pestaña de código para escribir un nuevo algoritmo.
    • Abrir: Abre un archivo grabado anteriormente en pseudocódigo (extensión psc).
    • Guardar: Guarda el pseudocódigo actual (si no se ha guardado antes, muestra el cuadro de diálogo guardar como).
    • Guardar como: Abre el cuadro de diálogo para guardar el archivo en una ubicación con un nombre.
    • Editar diagrama de flujo: Desde aquí se abre la ventana del diagrama de flujo para crear el algoritmo en dfd o editar uno usando el pseudocódigo que tengamos hecho.
    • Imprimir: imprime el pseudocódigo.
    • Exportar: Desde esta opción podemos pasar nuestro algoritmo en pseudocódigo a un lenguaje de programación en concreto de una lista desplegable, entre ellos están java, C,C++, visual basic, php, javascript...
    • Cerrar: Cierra la pestaña actual de pseudocódigo.
    • Salir: Cierra el programa.
  • Editar: Este es el típico menú para editar nuestro texto, tiene las siguientes opciones: 
    • Deshacer
    • Rehacer
    • Cortar
    • Copiar
    • Pegar
    • Mover hacia arriba 
    • Mover hacia abajo (esto es útil mover lineas o bloques de código, para organizar nuestro algoritmo)
    • Buscar
    • Buscar siguiente
    • Buscar anterior
    • Reemplazar (para buscar palabras, reemplazar una palabra por otra que pongamos y buscar adelante o atrás del cursor)
    • Seleccionar todo
    • Duplicar lineas
    • Eliminar lineas
    • Comentar lineas: Marca las líneas como comentarios
    • Descomentar lineas: Quita la marca de comentario en las líneas seleccionadas.
    • Corregir indentado: Indenta el pseudocódigo 
  • Configurar: 
    • Asistencias: Despliega una lista de opciones para activar o desactivar varias ayudas durante la escritura de pseudocódigo tales como auto completado, cierre de estructuras automáticamente, ayudas emergentes al escribir, resaltado de bloques lógicos, comprobación de sintaxis mientras se escribe etc.
    • Presentación: Despliega otra lista para elegir efectos visuales del programa como animar paneles, utilizar colores al probar el pseudocódigo etc. 
    • Configuración del lenguaje: Desde aquí podemos elegir el perfil que queremos que el programa utilice. Cuando instalas el programa por primera vez, te pregunta que tipo de perfil quieres usar, esto es como quieres que el programa sea de estricto al escribir el código del algoritmo. Vienen muchos perfiles que el desarrollador del programa introduce en las actualizaciones de la aplicación que le van mandando los distintos centros donde se usa el programa para que sus alumnos puedan elegirlo al instalarlo. Yo voy a hacer los ejercicios en los vídeos que subiré más adelante al canal con el perfil estricto, que es el más parecido a la sintaxis de los lenguajes de programación a los que luego daremos el salto. Así que aconsejo elegir esa opción.
    • Cambiar a diagrama de N-S: Esta lo que hace es que cuando quieras editar el dfd en vez de salirte en formato dfd te sale en n-s.

  • Ejecutar:
    • Ejecutar: Interpreta el pseudocódigo o el dfd en una ventana DOS.
    • Ejecutar paso a paso: Ejecuta el algoritmo línea a línea, podemos controlar la ejecución gracias a un panel lateral que se abrirá y donde podremos avanzar el algoritmo.
    • Ejecución explicada: Gracias a esta opción podemos ver cada paso del algoritmo explicado en una ventana abajo en el programa. Nos explica todo lo que pasa en el algoritmo y lo que ello implica.
    • Verificar sintaxis: Si no está configurado para verificar la sintaxis en tiempo real (es decir, simultáneamente con la escritura) verifica si el pseudocódigo es sintácticamente correcto.
    • Predefinir entrada: Con esta opción podemos darle valores al algoritmo sin tener que hacerlo cada vez que el algoritmo se ejecute.
  • Ayuda: Este menú cuenta con la ayuda del programa, así como con ejemplos de pseudocódigo que muestran algunas funciones del programa. También tiene una opción para buscar actualizaciones manualmente del programa.

Lo podéis descargar desde aquí: PSeInt

sábado, 22 de febrero de 2014

Herramientas de programación (3)

Este artículo es continuación de este.
En el último artículo vimos lo que eran los Diagramas de flujos de datos. Expliqué los principales símbolos y vimos un ejemplo de dfd. En este nuevo artículo hablaré de las otras dos herramientas que me quedan:
Pseudocódigo y Diagrama de N-S.

PseudoCódigo:
     El pseudocódigo es un lenguaje de descripción de algoritmos. Es el paso final antes de escribir el algoritmo en un lenguaje de programación. Se creó usando palabras reservadas similares a los lenguajes de programación en inglés y es un buen medio para interpretar las estructuras de control y bucles que se usan en la programación estructurada.
Esta herramienta separa la lógica del programa de los lenguajes de programación, de modo que una vez hecho el algoritmo en pseudocódigo es relativamente fácil portarlo a cualquier lenguaje. El pseudocódigo no puede ejecutarse en el ordenador. Es solo una herramienta que facilita el desarrollo del algoritmo en un lenguaje de programación. El pseudocódigo original utilizaba palabras muy parecidas a las que se utilizan en lenguajes de programación estructurada como C o Pascal, tales como start, end, if,while, do-while, break, continue etc, haciendo por tanto, el paso a estos lenguajes muy sencillo. En los últimos tiempos, la comunidad hispana a tenido un fuerte crecimiento, y en la actualidad, en las facultades y ciclos de grado superior se da el pseudocódigo con palabras en español: inicio, fin, parada, continue, si,mientras, hacer-mientras etc. Esto hace que los estudiantes de programación aprendan más rápido a desarrollar algoritmos y a entenderlos mejor sin necesidad de preocuparse de aprender las reglas de un lenguaje en concreto.

En próximos artículos mostraré como se hacen los algoritmos en pseudocódigo, veremos sus palabras claves y podremos probarlos gracias a un programa llamado PSeInt, del cual hablaré más detalladamente en otro artículo. 

La estructura de un programa en pseudocódigo tiene esta forma:
Inicio
     instrucción1
     instrucción2
     instrucción3
     instrucciónN
Fin

Como veis, cada instrucción del programa se escribe en una línea entre las palabras inicio y fin y se indentan las instrucciones para clarificar su lectura.

Básicamente, el pseudocódigo es una herramienta que se da en las universidades y ciclos de grado superior de informática de forma muy leve porque todos los conceptos fundamentales de programación (estructuras de control, bucles, variables, tipos de datos, funciones, listas, pilas etc) se enseñan directamente en un lenguaje de programación (normalmente C o C++).Supongo que porque el pseudocódigo no se puede probar en un ordenador directamente, es mejor que el estudiante vea las cosas desde el lenguaje de programación. Pero ahora los alumnos tienen a su disposición una herramienta muy útil que de hecho se está usando ya en muchas universidades y ciclos. Esta herramienta es un interprete de pseudocódigo, permite escribir el algoritmo usando un pseudocódigo en español, fácil de entender para cualquiera y probarlo en una terminal de consola (ventana DOS). Como ya dije, hablaré en otro artículo del programa y veremos todos los conceptos fundamentales desde él. 

Ahora veremos un ejemplo de un algoritmo en pseudocódigo:
Análisis del problema:
     Objetivo del  programa: Elaborar un programa que permita ordenar dos números enteros de mayor a menor usando pseudocódigo.
     Entrada que se necesita (fuente): Dos números enteros (fuente: el teclado)
     Proceso sobre la entrada: Comprobar los dos números, si el segundo es mayor que el primero, mostrarlos por pantalla en orden inverso. Si ya están ordenados al introducirlos por teclado, escribirlos en pantalla tal cual.
     Salida que se necesita: Escribir los dos números ordenados de mayor a menor.

El algoritmo en pseudocódigo quedaría de la siguiente forma:

Inicio OrdenarNumeros // Nombre del algoritmo 
     // Algoritmo que ordena dos números de mayor a menor
    
     //  Declaración de variables
     Definir num1 como Entero; // Variable que guarda el valor del primer número
     Definir num2 como Entero; // Variable que guarda el valor del segundo número
    
     // Lectura de datos por teclado
     Escribir "Introduzca el primer número que desee ordenar: ";
     Leer num1; // Leemos con el teclado el primer número y lo guardamos en la variable num1
     Escribir "Introduzca el segundo número:";
     Leer num2; // Leemos con el teclado el segundo número y lo guardamos en la variable num2

     // Ordenamos los números
     Si num1 < num2 entonces
          // Si el primer número es más pequeño hay que invertir el orden al mostrarlos
          Escribir "Los números ordenados de mayor a menor son: ", num2,num1;
     Sino 
          // Si ya están ordenados al introducirlos por teclado se muestran normal
          Escribir "Los números ordenados de mayor a menor son: ",num1,num2;
     FinSi
Fin

Aquí está el primer programa escrito en pseudocódigo, como veis es fácil de entender por cualquier persona. Utilizamos palabras clave como Escribir para indicar que vamos a mostrar texto en pantalla, leer para indicar que vamos a guardar un dato en memoria etc. (Ahora mimos no os preocupéis si no sabéis que es una variable ni otras partes porque es solo un ejemplo, luego veremos ya entrados en materia lo que es cada cosa y aprenderemos a hacer algoritmos en pseudocódigo más complejos.
De aquí podemos destacar varias cosas: 

  • Todo algoritmo en pseudocódigo tiene que empezar por inicio y acabar con fin.
  • Están en negrita las palabras clave que realizan acciones en el algoritmo (crear variables, escribir en pantalla, leer valores de teclado etc)
  • Las palabras escritas después de los símbolos // indican comentarios en programación (son aclaraciones para entender el código, el ordenador siempre las ignora.
  • Los bloques siempre se cierran (inicio-fin, Si-FinSi, Mientras-FinMientras. Todo esto lo veremos más detalladamente en otros artículos.)
  • Las líneas de código están indentadas para una fácil comprensión. Si os fijáis lo que hay en el bloque  está indentado para destacar que lo que viene después pertenece a ese bloque.

Por último veremos el Diagrama de N-S

Diagrama de N-S (Nassi-Schneiderman)
Este diagrama, también conocido como diagrama de chapin, es una mezcla entre pseudocódigo y el diagrama de flujo de datos. Consiste en escribir en cajas las instrucciones del programa pero eliminando las flechas de fujo de los dfds quedando por tanto así:

Aquí podéis ver también como se escribe en este tipo de diagramas una estructura de decisión Si-No (veremos todos los tipos de estructuras en un próximo artículo, por ahora no os preocupéis de eso). Este bloque lo que hace es que se evalúa una expresión, si se cumple se ejecutan las instrucciones del bloque Si, de lo contrario se ejecutan las del bloque No.

domingo, 9 de febrero de 2014

Herramientas de Programación (2)

Este artículo es una continuación de este.

El algoritmo se debe representar de forma que se separe totalmente del lenguaje de programación empleado, de forma que luego éste se pueda escribir en cualquier lenguaje. Para ello vamos a utilizar unas herramientas que permiten representar el algoritmo gráficamente (Diagramas de flujos de datos o diagrama de N-S) o en un formato muy similar al código de un programa escrito en un lenguaje de programación (Pseudocódigo).

Diagramas de Flujos de Datos (DFD).
     Un diagrama de flujos de datos (de ahora en adelante le llamaremos DFD) es una representación gráfica de un algoritmo mediante una serie de símbolos que explicaré después  que representan los pasos del algoritmo unidos por flechas denominadas líneas de flujo, que indican el orden en el que se deben ejecutar los pasos. Este sistema de representación era muy empleado antiguamente, y de hecho, se sigue usando en los inicios de los cursos de programación, pero se suele usar poco, puesto que se va sustituyendo por el pseudocódigo o  directamente por la programación estructurada, como por ejemplo en C.

Los símbolos que se usan para crear un dfd son los siguientes:



Como ejemplo vamos a representar en un dfd el algoritmo que hicimos en el artículo anterior sobre el cálculo de la hipotenusa de un triángulo:

Los dfds se pueden dibujar a mano en un papel o usar alguno de los programas que existen para estos casos. Yo siempre he utilizado dos de ellos que son muy buenos: Dia y DFD. 

El primero es un editor de diagramas de flujo completamente gratuito que te permite diseñar cualquier tipo de diagrama. Cuenta con herramientas suficientes para dibujar cualquier representación gráfica (dfds, diagramas N-S, UML, Bases de datos y multitud de plantillas más). Además permite usar capas. 
La dirección donde podéis descargarlo es esta: http://dia-installer.de/download/index.html.en 
Os lo recomiendo si sois estudiantes de informática y tenéis que hacer algún proyecto documentado.

DFD es otro programa gratuito más limitado que Dia a la hora de dibujar los diagramas pero que te permite ejecutar el dfd para ver como resultaría; te permite introducir los valores, hace las operaciones y te da el resultado en base a lo que hayas puesto en tu dfd. Es algo muy útil las primeras veces que empiezas a hacer dfds pues te permite ver y probar el programa en este formato de representación de algoritmos. Podéis descargarlo desde esta dirección: http://www.descargarsoft.com/descargar-dfd-para-crear-diagramas-de-flujo/
Estos programas también están disponibles desde softonic, pero no he querido poner esos enlaces porque últimamente softonic te obliga a instalar sus programas a través de un instalador que te mete si no te das cuenta programas no deseados como barras de navegación, anuncios etc. Así que mejor usar estos enlaces que os facilito si queréis probarlos. Más adelante subiré un vídeo en el que hago un diagrama de flujos de datos con el programa dfd.

viernes, 7 de febrero de 2014

Evernote

Con este artículo, inauguro una nueva sección en el blog dedicada a programas y utilidades informáticas y para empezar me gustaría hablaros de una aplicación que utilizo muchísimo últimamente y que se llama Evernote.

Evernote es un programa gratuito que está presente en multitud de plataformas: Windows, Mac, Android, Ios, tablets, blackberry, Ipod touch, windows phone y en la web.
El concepto de la aplicación es muy simple, sirve para almacenar notas. Al principio puede parecer que no tiene mucha utilidad, además ya hay algunos programas por ahí que hacen algo parecido (OneNote de Microsoft por ejemplo) , pero la verdad es que es una herramienta muy potente que tiene infinidad de usos y prácticamente sus límites están en tu imaginación.
Una vez que  has instalado el programa, para empezar a utilizarlo, debes crearte una cuenta de usuario. Las hay de dos tipos:
una cuenta gratuita y una premium que es de pago (tiene una suscripción anual de 40 euros o mensual de 5). La diferencia entre una y otra es, entre otras cosas, la cantidad de notas al mes que puedes subir, estando la gratuita limitada a 60 megas y la premium a 1 Gb, en ciclos de 30 días. Una vez pasado ese periodo de tiempo volvemos a tener la misma cantidad para volver a subir más notas. Puede parecer que 60 megas es muy poco, pero la verdad yo llevo usando este programa más de un año y jamas he llenado el cupo de la cuenta gratuita en un mes, así que el espacio no es ningún problema. Otra de las diferencias que hay entre la cuenta gratuita y de pago es que la de pago tiene un motor de búsqueda más potente que la gratuita y además te permite crear libretas en modo local, es decir, en tu propio dispositivo. Por  otro lado, la cuenta gratuita, solo deja crear libretas en la nube.
Pero antes de nada, vamos a ver en que consiste el programa y que usos se le pueden dar.

Una vez creada la cuenta, ya podemos empezar a guardar nuestras notas. Lo primero que tenemos que hacer es crear libretas (son como las carpetas) donde guardar las notas según nuestro propio criterio de ordenación. Yo por ejemplo tengo una libreta para mis cosas de Java, otra para el trabajo, .NET etc. Además las libretas se pueden agrupar en pilas, que sería algo así como una carpeta que guarda las libretas (Yo tengo una pila que se llama programación, donde guardo las libretas con esta temática). Todo ello está guardado en tu cuenta y se puede  acceder a ellas desde cualquier  dispositivo. Esto hace la herramienta algo muy potente, ya que podéis guardar una nota en vuestro pc y verla desde cualquier otro aparato que tenga instalado el programa. Y es que está prácticamente para cualquier plataforma, smartphones, tablets, mac etc. Las notas se crean de maneras muy diversas, desde el Pc se crean igual que cualquier documento de texto, tiene una interfaz con lo típico para editar, elegir tipos de letra, tamaño, maquetación de texto, creación de  tablas, añadir fotos, enlaces, incluso un botón para guardar una nota de audio a través del micrófono. Pero la cosa no acaba aquí. Si tenéis un smartphone con android por ejemplo, la aplicación tiene muchas funciones, como almacenar una nota de audio, imaginad que vais por la calle y se os ocurre una idea, con esa función la grabáis con el móvil y se sincroniza en todos los dispositivos que tengáis con el programa instalado. A parte de esa función, la aplicación para móviles también incorpora transcripción de audio a texto, fotos rápidas, la cual hace una foto con la cámara del teléfono y la almacena en una nota, además cuenta con un potente buscador en la aplicación para pcs que permite buscar hasta las palabras que pueda tener la imagen. Cuenta también la versión para móviles con una función de escaneo de documentos que digitaliza el texto para que podáis editarlo cuando queráis. Se puede guardar casi cualquier tipo de cosa, archivos de texto, pdfs, imágenes, audios, vídeos etc. Además también existen extensiones para google chrome que permiten capturar como una nota cualquier página web que visitéis para poder tenerla disponible en todos los dispositivos. Si navegáis con el móvil, tenéis la opción de enviar la página a evernote a través del menú del navegador en la opción compartir --> evernote. 

Como decía antes, las posibilidades de la aplicación son infinitas. Yo por ejemplo, la uso para hacer la lista de la compra (puedes crear notas como tareas con el icono de marcar o desmarcar la tarea al realizarla), almacenar las facturas de la casa (gracias al buscador las tengo localizadas enseguida, y se acabó el tenerlas en distintas carpetas del ordenador. Todas guardadas en evernote.). Al crear las notas también podéis agregar una etiqueta que catalogue la nota, una opción más de ordenación y fácil acceso luego.  Los programadores pueden crear notas con las funciones que más utilicen y tenerlas accesibles para copiarlas  y pegarlas en sus códigos. Si eres periodista, puedes usarla para guardar noticias o cualquier cosa que te pueda servir en tu trabajo. Si eres blogero evernote también es de gran ayuda, todos los artículos de este blog están escritos primero en evernote y luego pegados en el blog. El programa también permite poner alarmas en las notas o recordatorios para que nos avisen cuando queramos.
Si quereis más información sobre el programa su dirección es ésta: http://evernote.com/intl/es/evernote/
También la tenéis disponible en google play y applet store. 
Por último decir que para móviles también está la aplicación evernote widget que es una barra que se coloca en el escritorio del teléfono con accesos directos a varías de las funciones que consideréis más útiles para vosotros (la lista de botones es configurable). Si los instaláis en el teléfono es una buena idea instalar también el widget.