Mostrando las entradas con la etiqueta Fundamentos de programación. Mostrar todas las entradas
Mostrando las entradas con la etiqueta Fundamentos de programación. Mostrar todas las entradas

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.




domingo, 12 de marzo de 2017

Clase String


La clase String clase String representa una cadena de caracteres. Todos los literales de la cadena tales como “abc” son implementados como instancias de ésta clase.
La clase String incluye métodos que permiten examinar los caracteres individuales de una cadena para compararlos, ubicarlos extraerlos como subcadenas y para crear copias de una cadena convirtiendo todos sus caracteres a mayúsculas o minúsculas. 
Java provee un soporte especial para la concatenación (unión) de cadenas con el operador (+). y para convertir otros objetos a cadenas. La concatenación de cadenas es implementada a través de la clase StringBuffer y su método append(). Las conversiones son implementadas a través del método toString() definido en la clase Object la cual es heredada por todas las clases en Java.

La clase String pertenece al paquete java.lang.
Existen diferentes formas para crear objetos String como las siguientes: 

String str =”abc”;
char str[] = {‘a’,’b’,’c’};  //arreglo de caracteres
String str = new String (“abc”) ;  //objeto con valor inicial “abc”

El lenguaje java proporciona el operador “+” para concatenar (unir) objetos String.

Un objeto String representa una cadena de caracteres no modificable; por lo tanto, una operación como convertir a mayúsculas o minúsculas no modificará el objeto original sino que devolverá un nuevo objeto con la cadena resultante de esa operación el cual deberá ser guardado en otro objeto string.



JERARQUÍA DE CLASES
ES cualquier clasificación u ordenación de abstracciones en una estructura de árbol. Algunos tipos de Jerarquía son: Jerarquía de agregación, jerarquía de clases, jerarquía de herencia, jerarquía de partición, jerarquía de especialización, jerarquía de tipo. Éste concepto es sumamente importante ya que con ello conocemos la importancia de dividir los problemas en una jerarquía de ideas. 
Los dos tipos importantes de jerarquía son: la de generalización/especialización y la de todo/parte.
La jerarquía de generalización/especialización se basa en que las propiedades de una categoría general se transmiten a todas las categorías que se especializan o subcategorías. En la programación, la Jerarquía de clases significa un conjunto de clases relacionadas por la jerarquía de generalización/especialización.

MÉTODOS

String (String valor) .- Se usa cuando se desea crear una cadena de caracteres : 

String cadena = “Hola”
String cadena = new String (“Hola”); //Constructor de la clase String


cadena.concat(string txt) .- Devuelve como resultado un nuevo objeto String resultado de concatenar dos cadena: 



1
2
String cadena = “Hola”        
String result= cadena.concat(" Mundo");//El resultado será Hola mundo

cadena.compareTo(String otra cadena) .- Compara lexicográficamente la cadena con otra cadena , esta comparación es carácter por carácter  teniendo en cuenta que las mayúsculas son mayores que las minúsculas – esto es de acuerdo al código ASCII o UNICODE – según esto devuelve : 



< 0 : si cadena < otra cadena
= 0 : si cadena = otra cadena
> 0 : si cadena > otra cadena

Ejemplo :
ANA > ana
ana > Sofia
ANA > ANA
abcde > abcdefg 

cadena.toIgnoreCase(String otra cadena) .- Hace lo mismo que compareTo pero con la única diferencia que no se hace diferencia entre mayúsculas y minúsculas ; es decir : ANA= ana
cadena.length() .- Devuelve la longitud o número de caracteres de la cadena :

String cad="Hola Mundo";
int cant = cad.length();// El valor de cant será 10
cadena.toLowerCase() .- Convierte a minúsculas las letras mayúsculas de la cadena
cadena.toUpperCase().- Convierte en mayúsculas las letras minúsculas de la cadena.


1
2
String cad1="Esto Es Una Prueba";
String cad2=cad1.toUpperCase();//cad2 será igual a : ESTO ES UNA PRUEBA.

cadena.trim () .- Elimina los espacios en blanco que puedan haber al principio o al final de la cadena.


1
2
String cad1="     Esto Es Una Prueba   ";
String cad2=cad1.toLowerCase();//cad2=Esto Es Una Prueba.


CONSTRUCTORES
Constructor
Descripción
String( )
Crea un nuevo objeto String vacío sin caracteres.
String (byte[ ] bytes)
Crea un nuevo objeto String inicializado con los caracteres equivalentes a cada número guardado en el arreglo de bytes.
String (char[ ] value)
Crea un nuevo objeto String inicializado con los caracteres contenidos en el arreglo dado como parámetro.
String (String cadena)
Crea un nuevo objeto String inicializado con el valor dado como parámetro.
MÉTODOS
Tipo de retorno
Método
Descripción
char
charAt(int index)
Retorna el carácter correspondiente al índice dado como parámetro.
int
compareTo(String otraCadena)
Retorna como entero el resultado de la comparación entre la cadena que lo llama con otraCadena. Si el parámetro devuelto es "0" significa que las dos cadenas son iguales; realizándose la comparación carácter con carácter diferenciándose las mayúsculas con las minúsculas.
int
compareToIgnoreCase(String otraCadena)
Retorna como entero el resultado de la comparación de la cadena que lo llama con otraCadena. Si éste entero es 0 significa que ambas cadenas son iguales; siendo la comparación carácter con carácter pero ignorando la diferencias entre mayúsculas y minúsculas.
String 
concat(String otraCadena)
Retorna el resultado de la concatenación de la cadena con otraCadena dada como parámetro.
boolean
equals(Object otroObjeto )
Retorna true si la cadena que lo llama es igual al objeto enviado como parámetro.
boolean
equalsignoreCase(String otraCadena)
Retorna true si la cadena que lo llama es igual a la cadena dad  como parámetro ignorando las diferencias entre mayúsculas y minúsculas.
int
indexOf (String cad)
Retorna la posición de la primera ocurrencia encontrada de la cadena dada como parámetro dentro de la cadena que llama al método.
int
indexOf (String cad, int ini)
Retorna la posición de la primera ocurrencia encontrada de la cadena dada como parámetro pero comenzando la búsqueda desde la posición ini dada como parámetro.
int
lastIndexOf (String cad) 
Retorna la posición de la ultima ocurrencia de la cadena dada como parámetro.
int
lastIndexOf (String cad,int ini)
Retorna la posición de la última ocurrencia de la cadena dada como parámetro buscando en retroceso a partir de la posición dada como parámetro.
int
length ( )
Retorna el número de caracteres que contiene la cadena.
String
replace (char car1,char car2)
Retorna una nueva cadena como resultado de reemplazar todas las ocurrencias del carácter "car1" por el carácter "car2" dados como parámetros.
String
replaceAll (String cad1,String cad2)
Retorna una nueva cadena como resultado de reemplazar todas las concurrencias de la sub cadena cad1 por la sub cadena cad2 dada como parámetro.
boolean
startsWith (String cad)
Retorna true si la cadena que llama al método empieza con la subcadena cad dada como parámetro.
String
subString(int posIni)
Retorna una subcadena cuyo primer carácter empieza en la posición posIni dada como parámetro.
String
subString(int posIni,int posFin)
Retorna una subcadena cuyo primer carácter empieza en la posición posIni y  termina con el carácter de la posición  posFin.
String
toLowerCase( )
Retorna una nueva cadena como resultado de convertir todos los caracteres a minúsculas.
String
toUpperCase ( ) 
Retorna una nueva cadena como resultado de convertir todos los caracteres a mayúsculas.
String
trim ( )
Retorna una nueva cadena como resultado de omitir los espacios en blanco al inicio y al final de la cadena.




martes, 7 de marzo de 2017

Conceptos de fundamentos de programación


¿Qué es programación?
Programación es el proceso a través del cual un programa o aplicación informática es desarrollado.
Se conoce como programación en ciencias de la computación a los pasos que se abordan para crear el código fuente de un programa informático. De acuerdo con estos pasos, el código se escribe, se prueba y se perfecciona.

¿Qué es un programa?
Un programa es un conjunto de instrucciones u órdenes basadas en un lenguaje de programación que una computadora interpreta para resolver un problema o una función específica.
Conjunto secuenciado de instrucciones que quedan escritas en un lenguaje determinado con unos fines específicos.

Tipos de programación


  • Programación declarativa: mantiene un paradigma de programación el cual se basa en el desarrollo de programas que están especificando un conjunto de determinadas condiciones, proposiciones, afirmaciones, restricción, ecuaciones o transformaciones las cuales pueden mostrar, describir y detallar un problema y su solución. Esta solución se obtiene mediante diversos mecanismos internos de control. Las mismas no son específicas en cuanto a su localización, solo se le pide a la computadora que busque algo.


  • Programación estructurada: conocido también como un paradigma de la programación el cual se encuentra orientado a mejorar la calidad, claridad y el tiempo que tarde en se desarrollado un programa de computadora.
Para esto utiliza solamente subrutinas y tres estructuras: secuencia, selección e iteración.


  • Programación modular: este tipo de programación consiste principalmente en dividir los programas en partes llamadas subprogramas o módulos, los cuales son más legibles y manejables, es decir, tienen como fin facilitar su uso. Es el resultado evolutivo de la programación estructura para solucionar algunos problemas más grandes y difíciles de lo que la primera puede llegar a resolver.
Una vez aplicada la programación modular, un problema de índole complejo se divide en varios subproblemas mucho más simples los cuales son divididos, a su vez, en otros subproblemas más simples todavía. Este proceso se continúa hasta que se encuentra un subproblema lo suficientemente simple como para poder ser resuelto fácilmente. Esta técnica es conocida como refinamiento sucesivo o análisis descendente.
Un módulo es considerado cada una de las partes de un programa que puede resolver uno de los subproblemas encontrados, en los que se divide el problema original. Todos estos módulos contienen una tarea específica y definida diferente una de otra por lo que es posible que unos necesiten de otros para poder operar y concretar la finalización de un subproblema.
En los casos en los que un módulo necesita de otro, pueden comunicarse a través de una interfaz de comunicación la cual también se encuentra bien definida. En la práctica el módulo es considerado un proceso y función, muy diferente a la parte teórica el cual puede entenderse como una parte del programa. Sin embargo, no debe ser confundido el término procedimiento o función con el término módulo ya que el mismo puede contener muchos de ellos por lo que se debe tener cuidado.


  • Programación orientada a objetos: puede ser encontrado bajo las siglas POO, y se refiere a un paradigma de la programación el cual utiliza los objetos resultantes en sus interacciones para poder diseñar aplicaciones y programas informáticos.
Para esto basa sus conceptos en varias técnicas como la herencia, la cohesión, la abstracción, el polimorfismo, el encapsulamiento y el acoplamiento. Comienza su utilización en la década de los años 1990 y se mantiene hasta hoy, donde pueden encontrarse grandes variedades de lenguajes de programación que soportan la orientación a objetos

¿Qué es un paradigma de la programación?
Un paradigma de programación es una propuesta tecnológica adoptada por una comunidad de programadores y desarrolladores cuyo núcleo central es incuestionable en cuanto que únicamente trata de resolver uno o varios problemas claramente delimitados.

¿Qué es un intérprete en programación?
Analiza el programa fuente y lo ejecuta directamente, o sea en el ejemplo del traductor humano, éste sería un traductor humano que conforme a lo que está escuchando va ejecutando, sin generar ningún escrito, es decir que sobre la marcha va traduciendo.



¿Qué es un compilador?


Un compilador es un programa informático que traduce un programa escrito en un lenguaje de programación a otro lenguaje diferente. Usualmente el segundo lenguaje es lenguaje de máquina, pero también puede ser un código intermedio (bytecode), o simplemente texto. Este proceso de traducción se conoce como compilación.