lunes, 24 de abril de 2017

Estructuras De Control

¿Qué son las estructuras de control?
Las estructuras de control nos permiten controlar el flujo del programa: tomar decisiones, realizar acciones repetitivas etc, dependiendo de unas condiciones que nosotros mismos establezcamos. Así podemos hacer un script que nos salude cada día de la semana de una manera diferente. O por ejemplo hacer un script que nos pida la contraseña una y otra vez hasta que suministremos la opción correcta.

Con las estructuras de control se puede:
  • De acuerdo con una condición, ejecutar un grupo u otro de sentencias (If-Then-Else)
  • De acuerdo con el valor de una variable, ejecutar un grupo u otro de sentencias (Select-Case)
  • Ejecutar un grupo de sentencias mientras se cumpla una condición (Do-While)
  • Ejecutar un grupo de sentencias hasta que se cumpla una condición (Do-Until)
  • Ejecutar un grupo de sentencias un número determinado de veces (For-Next)


Todas las estructuras de control tienen un único punto de entrada. Las estructuras de control se pueden clasificar en: secuenciales, iterativas y de control avanzadas. Esta es una de las cosas que permiten que la programación se rija por los principios de la programación estructurada.

Los lenguajes de programación modernos tienen estructuras de control similares. Básicamente lo que varía entre las estructuras de control de los diferentes lenguajes es su sintaxis; cada lenguaje tiene una sintaxis propia para expresar la estructura.



Las instrucciones de un programa se ejecutan en forma secuencial, comenzando por la primera instrucción y siguiendo en orden hasta la última, ejecutándose todas ellas, una sola vez. Las estructuras de selección e iteración permiten modificar el flujo de ejecución de las instrucciones del programa.

Selección
Se chequean condiciones para decidir qué instrucciones ejecutar. Esto implica que algunas instrucciones pueden no ejecutarse.

if-then:
Se evalúa una condición de tipo booleana, si ésta se cumple entonces se ejecuta el bloque, de lo contrario se continúan ejecutando las instrucciones que siguen a la estructura if-then.



if-then-else:
Se evalúa una condición de tipo booleana, si ésta se cumple entonces se ejecuta el bloque 1, de lo contrario se pasa a ejecutar el bloque 2.




Iteración
Algunas instrucciones se ejecutan varias veces. Tenemos iteraciones definidas (for), e iteraciones condicionales (while y repeat) para resolver problemas que requieren que se repita una secuencia de instrucciones.


for:
Si sabemos de antemano cuántos elementos tiene la lista, iteramos con for indicando cuántos pasos de iteración debemos dar.

while:
Si no sabemos cuántos elementos tiene la lista, iteramos con while poniendo como condición de terminación de la iteración llegar al final de la lista o a un valor especial que indica el fin de los datos (centinela).


repeat:

La iteración con repeat es similar al while, ya que se utiliza una condición que marca la terminación del bucle, la diferencia es que la condición es evaluada al final del bucle, lo que determina que al menos una vez se ejecutará el cuerpo del bucle.





domingo, 23 de abril de 2017

Tipos de Datos en programación

Tipos de Datos

El tipo de dato informático es un atributo de una parte de los datos que indica al ordenador (y/o al programador) algo sobre la clase de datos sobre los que se va a procesar. Esto incluye imponer restricciones en los datos, como qué valores pueden tomar y qué operaciones se pueden realizar. Tipos de datos comunes son: enteros, cadenas alfanuméricas, fechas, horas, colores, coches o cualquier cosa que se nos ocurra. Por ejemplo, el tipo "int" representa un conjunto de enteros. Éste es un concepto propio de la informática, más específicamente de los lenguajes de programación, aunque también se encuentra relacionado con nociones similares de las matemáticas y la lógica.

Debido a que las variables contienen o apuntan a valores de tipos determinados, las operaciones sobre las mismas y el dominio de sus propios valores están determinadas por el tipo de datos en cuestión.
Algunos tipos de datos usados:
Tipo de dato lógico:
El tipo de dato lógico o booleano es en computación aquel que puede representar valores de lógica binaria, esto es 2 valores, que normalmente representan falso o verdadero. Se utiliza normalmente en la programación, estadística, electrónica, matemáticas (álgebra booleana) y otras.

Una vez que se dispone de uno o varios datos de tipo booleano, estos se pueden combinar en expresiones lógicas mediante los operadores lógicos (and, or, not). Un ejemplo de este tipo de expresiones sería:
verdadero AND falso --> falso
falso OR verdadero --> verdadero
NOT verdadero --> falso

Tipo de dato entero:
El tipo de dato entero en computación se usa para representar un subconjunto finito de los números enteros. El mayor número que se puede representar depende del tamaño del espacio usado por el dato y la posibilidad (o no) de representar números negativos. Los tipos de dato entero disponibles y su tamaño dependen del lenguaje de programación usado así como la arquitectura en cuestión.

Tipo de dato carácter:
En terminología informática y de telecomunicaciones, un carácter es un símbolo que representa cada carácter de un lenguaje natural. Un ejemplo de carácter es una letra, un número o un signo de puntuación.

Cadena de caracteres:
En programación, una cadena de caracteres o frase (string en inglés) es una secuencia ordenada de longitud arbitraria (aunque finita) de elementos que pertenecen a un cierto alfabeto. En general, una cadena de caracteres es una sucesión de caracteres (letras, números u otros signos o símbolos).
Desde el punto de vista de la programación, si no se ponen restricciones al alfabeto, una cadena podrá estar formada por cualquier combinación finita de todo el juego de caracteres disponibles (las letras de la 'a' a la 'z' y de la 'A' a la 'Z', los números del '0' al '9', el espacio en blanco ' ', símbolos diversos '!', '@', '%', entre otros). Un caso especial de cadena es la que contiene cero caracteres, a esta cadena se le llama cadena vacía.

Algunas operaciones con cadenas de caracteres:

Asignación: Consiste en asignarle una cadena a otra.
Concatenación: Consiste en unir dos cadenas o más (o una cadena con un carácter) para formar una cadena de mayor tamaño.
Comparación: Se utiliza para comparar dos cadenas.


¿Que es una variable y una constante en programación?



¿Qué son las Variables?

Una variable es un espacio de la memoria del ordenador a la que asignamos un contenido que puede ser un valor numérico (sólo números, con su valor de cálculo) o alfanumérico (sólo texto o texto con números). Cada variable tiene un único nombre el cual no puede ser cambiado. Dos o más variables pueden tener el mismo contenido, pero no el mismo nombre. El nombre de una variable comenzará siempre por una letra, pudiendo contener a continuación tanto letras como números.


En programación, una variable como su nombre indica, pueden cambiar de contenido a lo largo de la ejecución de un programa. Una variable corresponde a un área reservada en la memoria principal del ordenador.

Para que nuestro código sea más entendible y claro, el identificador de la variable debe ser mnemotécnico, es decir que debe reflejar el uso dentro del programa de la misma.


¿Qué es una constante?
En programación, una constante es un valor que no puede ser alterado/modificado durante la ejecución de un programa, únicamente puede ser leído.

Una constante corresponde a una longitud fija de un área reservada en la memoria principal del ordenador, donde el programa almacena valores fijos.

Por ejemplo:

· El valor de PI = 3.1416

Por conveniencia, el nombre de las constantes suele escribirse en mayúsculas en la mayoría de lenguajes.



Constantes

Son los datos que no cambien durante la ejecución de un programa


ejemplos:
a=3.141516
b=2
5=40
h=543
suma=2342+3434
resta=234-35
multi=34*34
div=345/667
u=345
total=2.500

Variables
Son los datos que pueden tomar cualquier valor dado por el usuario, durante la ejecución del programa en el ejemplo siguiente "m" esta almacenando el valor de "r", "r" puede tomar cualquier valor que el usuario ingrese, puede ser 1,2,4,5,5,443,35,12,3,123,14, etc y "m" tomara este valor

m=r

Otros ejemplos de variables:

color=color1
sueldo=s
numerodecarros=nc
personas=pers
casas=numerodecasas
total=t+u
gps=ubi
monedas=totalmonedas
países=totpaises




¿Que es el pseudocódigo?





Definición

En ciencias de la computación, y análisis numérico el pseudocódigo (o falso lenguaje) es una descripción de un algoritmo informático de programación de alto nivel compacto e informal que utiliza las convenciones estructurales de un lenguaje de programación verdadero, pero que está diseñado para la lectura humana en lugar de la lectura en computadora, y con independencia de cualquier otro lenguaje de programación. Normalmente, el pseudocódigo omite detalles que no son esenciales para la comprensión humana del algoritmo, tales como declaraciones de variables, código específico del sistema y algunas subrutinas.

¿Que es el pseudocódigo?
El pseudocódigo, en este sentido, está considerado como una descripción de un algoritmo que resulta independiente de otros lenguajes de programación. Para que una persona pueda leer e interpretar el código en cuestión, se excluyen diversos datos que no son clave para su entendimiento.

Un pseudocódigo, por lo tanto, se emplea cuando se pretende describir un algoritmo sin la necesidad de difundir cuáles son sus principios básicos. De esta manera, un ser humano encontrará mayores facilidades para comprender el mensaje, a diferencia de lo que ocurriría si estuviese frente a un lenguaje de programación real.
El principal objetivo del pseudocódigo es el de representar la solución a un algoritmo de la forma más detallada posible, y a su vez lo más parecida posible al lenguaje que posteriormente se utilizara para la codificación del mismo.

Las principales características de este lenguaje son:

  • Se puede ejecutar en un ordenador.
  • Es una forma de representación sencilla de utilizar y de manipular.
  • Facilita el paso del programa al lenguaje de programación.
  • Es independiente del lenguaje de programación que se vaya a utilizar.
  • Es un método que facilita la programación y solución al algoritmo del programa.


Todo documento en pseudocódigo debe permitir la descripción de:
  • Instrucciones primitivas
  • Instrucciones de proceso
  • Instrucciones de control
  • Instrucciones compuestas
  • Instrucciones de descripción




Estructura a seguir en su realización: 

Cabecera: 
  • Programa
  • Modulo
  • Tipos de datos
  • Constantes
  • Variables


Cuerpo:
  • Inicio
  • Instrucciones
  • Fin




Ejemplo 1:
Realizar el pseudocódigo de un programa que permita calcular el área de un rectángulo. Se debe introducir la base y la altura para poder realizar el cálculo.

Programa; área
Entorno: BASE, ALTURA, AREA son número enteros
Algoritmo:
            escribir “Introduzca la base y la altura”
            leer BASE, ALTURA
            calcular AREA = BASE * ALTURA
            escribir “El área del rectángulo es “AREA
 Finprograma



Ejemplo 2:
Realizar el pseudocódigo de un programa que permita saber si un número es mayor, menor o igual a cero.

    Programa: CompararNúmeros
       Entorno: NUMERO es un número entero
Algoritmo:
Escribir “Introduzca un número “
leer NUMERO
SI NUMERO>0  ENTONCES
          escribir “El número introducido es positivo”
SI NO
          SI NUMERO<0 ENTONCES
                 escribir “El número introducido es negativo”
          SI NO
                 escribir “El número es cero”
          FINSI
FINSI
Finprograma



Una vez que tenemos preparado un diagrama de flujos (ordinograma u organigrama) y un pseudocódigo ya podemos comenzar con la codificación del programa en nuestro ordenador. A partir de aquí todo varía dependiendo del lenguaje de programación que utilicemos, pero en todos los programas tendremos que definir los tipos de datos que utilizaremos.

Pseudocódigo

domingo, 16 de abril de 2017

Programación Modular




Consiste en la descomposición de un programa en partes más pequeñas denominados módulos o subprogramas, en el que cada uno de ellos se encargara de llevar a cabo una tarea concreta y bien definida, y se agrupara según su funcionalidad. Cada uno de estos módulos se analizara y codificara por separado.



La estructura de un programa modular constara de un módulo principal desde el que se llamara al resto de los módulos. El módulo principal recibe el control al inicio de la ejecución del programa. Cuando se invoca un módulo concreto (a través de su nombre y parámetros), el control del programa se pasara al módulo. Este módulo mantendrá el control hasta que no se finalice su ejecución en cuyo momento devolverá el control a la instrucción siguiente a la que realizo la llamada.

Cada uno de estos módulos puede hacer a su vez llamadas a otros módulos que siempre devolverán el control al módulo desde el que fueron llamados, pone freno a la redundancia del código, ya que aíslan las secuencias de instrucciones más usadas y que se repiten, se les da un nombre y cuando se quieran usar, simplemente se invocara dicho nombre en el lugar donde sea necesario.


Las características que definen estos módulos son las siguientes:


  • Cada módulo deberá tener asignado un nombre propio que le diferencie de los otros y que será usado para invocarlos. 
  • Cada módulo puede ser programado y compilado por separado, y almacenado posteriormente en librerías. 
  • Cada módulo consta de dos partes: la cabecera, que es donde aparece el nombre y los datos que se le pasan o genera, y el cuerpo o estructura interna, que es donde se desarrolla el código. 
  • Permite trabajar en equipo. Cada programador puede desarrollar un módulo diferente y posteriormente enlazarlos. 
  • El tamaño del módulo debe encontrarse entre 20 y 200 líneas de código. 
  • Los módulos con menos de 20 líneas de código pueden disminuir la eficiencia del programa. 
  • Los módulos que contienen as de 200 líneas de código son difíciles de verificar y mantener. 
  • Un módulo debe realizar una sola tarea y contenerla en su totalidad. 
  • Un requisito necesario para el desarrollo de código modular es la existencia de un mecanismo que permita el intercambio de datos entre módulos. En ensamblador existen técnicas que permiten este intercambio. 
  • Se puede transmitir información entre el módulo principal y el resto de los módulos a través de parámetros.



   Ejemplo de Programación Modular





domingo, 9 de abril de 2017

Qué es Java

                                                               



Java es un lenguaje originalmente desarrollado por un grupo de ingenieros de Sun, utilizado por Netscape posteriormente como base para Javascript. Si bien su uso se destaca en el Web, sirve para crear todo tipo de aplicaciones (locales, intranet o internet).

Java es un lenguaje:


                 De objetos 
                 Independiente de la plataforma




Algunas características notables:


  • Robusto
  • Gestiona la memoria automáticamente
  • No permite el uso de técnicas de programación inadecuadas
  • Multithreading
  • Cliente-servidor
  • Mecanismos de seguridad incorporados
  • Herramientas de documentación incorporadas

Lenguaje de Objetos
Por qué puse "de" objetos y no "orientado a" objetos? Para destacar que, al contrario de otros lenguajes como C++, no es un lenguaje modificado para poder trabajar con objetos sino que es un lenguaje creado para trabajar con objetos desde cero. De hecho, todo lo que hay en Java son objetos.

¿Qué es un objeto?
Bueno, se puede decir que todo puede verse como un objeto. Pero seamos más claros. Un objeto, desde nuestro punto de vista, puede verse como una pieza de software que cumple con ciertas características:


  • Encapsulamiento
  • Herencia

Encapsulamiento significa que el objeto es auto-contenido, o sea que la misma definición del objeto incluye tanto los datos que éste usa (atributos) como los procedimientos (métodos) que actúan sobre los mismos. Cuando se utiliza programación orientada a objetos, se definen clases (que definen objetos genéricos) y la forma en que los objetos interactúan entre ellos, a través de mensajes. Al crear un objeto de una clase dada, se dice que se crea una instancia de la clase, o un objeto propiamente dicho. Por ejemplo, una clase podría ser "autos", y un auto dado es una instancia de la clase.

La ventaja de esto es que como no hay programas que actúen modificando al objeto, éste se mantiene en cierto modo independiente del resto de la aplicación. Si es necesario modificar el objeto (por ejemplo, para darle más capacidades), esto se puede hacer sin tocar el resto de la aplicación… lo que ahorra mucho tiempo, inclusive, ni siquiera existen las variables globales! (Aunque parezca difícil de aceptar, esto es una gran ventaja desde el punto de vista del desarrollo).

En cuanto a la herencia, simplemente significa que se pueden crear nuevas clases que hereden de otras preexistentes; esto simplifica la programación, porque las clases hijas incorporan automáticamente los métodos de las madres. Por ejemplo, nuestra clase "auto" podría heredar de otra más general, "vehículo", y simplemente redefinir los métodos para el caso particular de los automóviles… lo que significa que, con una buena biblioteca de clases, se puede reutilizar mucho código inclusive sin saber lo que tiene adentro.

Un ejemplo simple para ir teniendo una idea, vamos a poner un ejemplo de una clase Java:

 public class Muestra extends Frame {
// atributos de la clase
Button si;
 Button no;
// métodos de la clase:
 public Muestra () {
 Label comentario = new Label("Presione un botón", Label.CENTER);
si = new Button("Sí");
no = new Button("No");
add("North", comentario);
 add("East", si);
add("West", no); } }

Esta clase no está muy completa así, pero da una idea… Es una clase heredera de la clase Frame (un tipo de ventana) que tiene un par de botones y un texto. Contiene dos atributos ("si" y "no"), que son dos objetos del tipo Button, y un único método llamado Muestra (igual que la clase, por lo que es lo que se llama un constructor).

Independiente de la plataforma
Esto es casi del todo cierto… En realidad, Java podría hacerse correr hasta sobre una Commodore 64! La realidad es que para utilizarlo en todo su potencial, requiere un sistema operativo multithreading (como Unix, Windows95, OS/2…).

¿Cómo es esto?
Porque en realidad Java es un lenguaje interpretado… al menos en principio. Al compilar un programa Java, lo que se genera es un seudocódigo definido por Sun, para una máquina genérica. Luego, al correr sobre una máquina dada, el software de ejecución Java simplemente interpreta las instrucciones, emulando a dicha máquina genérica. Por supuesto esto no es muy eficiente, por lo que tanto Netscape como Hotjava o Explorer, al ejecutar el código por primera vez, lo van compilando (mediante un JIT: Just In Time compiler), de modo que al crear por ejemplo la segunda instancia de un objeto el código ya esté compilado específicamente para la máquina huésped. Además, Sun e Intel se han puesto de acuerdo para desarrollar procesadores que trabajen directamente en Java, con lo que planean hacer máquinas muy baratas que puedan conectarse a la red y ejecutar aplicaciones Java cliente-servidor a muy bajo costo. El lenguaje de dicha máquina genérica es público, y si uno quisiera hacer un intérprete Java para una Commodore sólo tendría que implementarlo y pedirle a Sun la aprobación (para que verifique que cumple con los requisitos de Java en cuanto a cómo interpreta cada instrucción, la seguridad, entre otros.)


Algunas características
Entre las características que nombramos nos referimos a la robustez. Justamente por la forma en que está diseñado, Java no permite el manejo directo del hardware ni de la memoria (inclusive no permite modificar valores de punteros, por ejemplo); de modo que se puede decir que es virtualmente imposible colgar un programa Java. El intérprete siempre tiene el control. Inclusive el compilador es suficientemente inteligente como para no permitir un montón de cosas que podrían traer problemas, como usar variables sin inicializarlas, modificar valores de punteros directamente, acceder a métodos o variables en forma incorrecta, utilizar herencia múltiple, entre otros. Además, Java implementa mecanismos de seguridad que limitan el acceso a recursos de las máquinas donde se ejecuta, especialmente en el caso de los Applets (que son aplicaciones que se cargan desde un servidor y se ejecutan en el cliente). También está diseñado específicamente para trabajar sobre una red, de modo que incorpora objetos que permiten acceder a archivos en forma remota (via URL por ejemplo). Además, con el JDK (Java Development Kit) vienen incorporadas muchas herramientas, entre ellas un generador automático de documentación que, con un poco de atención al poner los comentarios en las clases, crea inclusive toda la documentación de las mismas en formato HTML.