Equipo 1 Fundamentos De Programacion

BITACORA DEL EQUIPO 1

Sunday, December 03, 2006

5.3.5 EL DESTRUCTOR

Un destructor es un método que se invoca automáticamente cuando el objeto se destruye. JAVA no posee destructores, porque tiene recolección de basuras. C++ posee destructores. Un destructor es un método que es ejecutado cada vez que se destruye (se elimina de RAM) un objeto, el objetivo de este método es el de eliminar toda la memoria que ocupó un objeto. En JAVA no es necesaria la definición de destructores (es más no existen), pues el mismo lenguaje se encarga de la eliminación y liberación de la memoria ocupada por un objeto, esto se realiza cada vez que un objeto pierde todas sus referencias. En resumen es un método de clase que sirve para realizar ciertas operaciones necesarias al dejar de existir un objeto, por ejemplo, cerrar conexiones de una comunicación, cerrar ficheros, etc. Java dispone de un elemento denominado recolector de basura (garbage collector) que se encarga de liberar memoria asignada a objetos que ya no se utilizan, aún así en ocasiones será necesario disponer de una función que realice operaciones adicionales a la mera liberación de memoria.

5.3.4 EL CONSTRUCTOR DE UNA CLASE
Un constructor es una función especial que sirve para construir o inicializar objetos. En C++ la inicialización de objetos no se puede realizar en el momento en que son declarados; sin embargo, tiene una característica muy importante y es disponer de una función llamada constructor que permite inicializar objetos en el momento en que se crean.
Un constructor es una función que sirve para construir un nuevo objeto y asignar valores a sus miembros dato. Se caracteriza por:- Tener el mismo nombre de la clase que inicializa- Puede definirse inline o fuera de la declaración de la clase- No devuelve valores- Puede admitir parámetros como cualquier otra función- Puede existir más de un constructor, e incluso no existir
Si no se define ningún constructor de una clase, el compilador generará un constructor por defecto. El constructor por defecto no tiene argumentos y simplemente sitúa ceros en cada byte de las variables instancia de un objeto. Si se definen constructores para una clase, el constructor por defecto no se genera.
Un constructor del objeto se llama cuando se crea el objeto implícitamente: nunca se llama explícitamente a las funciones constructoras. Esto significa que se llama cuando se ejecuta la declaración del objeto. También, para objetos locales, el constructor se llama cada vez que la declaración del objeto se encuentra. En objetos globales, el constructor se llama cuando se arranca el programa.
El constructor por defecto es un constructor que no acepta argumentos. Se llama cuando se define una instancia pero no se especifica un valor inicial.

5.3.3 PARAMETROS DE ENTRADA Y SALIDA

a.) System.in
Este objeto implementa la entrada estándar (normalmente el teclado). Los métodos que nos proporciona para controlar la entrada son: • read(): Devuelve el carácter que se ha introducido por el teclado leyéndolo del buffer de entrada y lo elimina del buffer para que en la siguiente lectura sea leído el siguiente carácter. Si no se ha introducido ningún carácter por el teclado devuelve el valor −1. • skip(n): Ignora los n caracteres siguientes de la entrada.
b.) System.out
Este objeto implementa la salida estándar. Los métodos que nos proporciona para controlar la salida son: • print(a): Imprime a en la salida, donde a puede ser cualquier tipo básico Java ya que Java hace su conversión automática a cadena. • println(a): Es idéntico a print(a) salvo que con println() se imprime un salto de línea al final de la impresión de a. • flush(a): vacia el buffer de salida escribiendo su contenido
c.) System.err
Este objeto implementa la salida en caso de error. Normalmente esta salida es la pantalla o la ventana del terminal como con System.out, pero puede ser interesante redirigirlo, por ejemplo hacia un fichero, para diferenciar claramente ambos tipos de salidas.

ANTONIO DE JESUS MONTOYA.

5.3.2 CONCEPTO DE PARAMETRO

Un parametro es una variable que puede pasar su valor a un procedimiento desde el principal o desde otro procedimiento. Existen ocasiones en que es necesario mandar al procedimiento ciertos valores para que los use en algún proceso. Estos valores que se pasan del cuerpo principal del programa al procedimiento se llaman parametros. Entonces una declaracion completa es: Static void Nom Proc? (lista de parametros) { cuerpo de instrucciones; }; import java.lang.*; import java.io.*; class prog13 { public static void main(String[] args) {
// llamando procedimiento1 y pasando algunos parametros double beta=3.1416; proc1(8+4 , beta, “Jesus” ); }; // cierra main public static void proc1(int a, double b, String nom ) { double c = a + b; System.out.println(nom+ “ la suma fue =“ + c); }; // cierra proc } // cierra clase
REGLAS PARA EL USO DE PARAMETROS
1.- Cuando se usan variables como parametros, la variable que se manda debe ser declarada dentro del principal o del procedimiento de donde se esta enviando. 2.- La variable que se manda tiene un nombre, la que se recibe puede tener otro nombre. 3.- La cantidad de variables que se envian deben ser igual en cantidad, orden y tipo a las variables que reciben. 4.- La variable que recibe tiene un ambito local dentro del procedimiento, es decir solo la puede usar ese procedimiento. Y se pueden mandar datos, valores (excepto decimales), expresiones algebraicas, pero siempre se recibe en variables.



CELIA RUBÍ NÁFATE VELÁZQUEZ.


5.3.1 SINTAXIS DEL METODO

El lenguaje se basa en pensar que hay en el mundo real objetos y esos objetos tienen un tipo, o clase. Por ello el lenguaje se basa en clases, que describen como son los objetos. Por ejemplo, el lenguaje tiene una clase que describe ficheros, una que describe cadenas de texto, o bien nosotros podemos crear clases, como por ejemplo la clase Persona, que describe los datos que interesan de una persona. Por ello siempre para comenzar a trabajar con un programa java hay que crear una clase: public class Tabla multiplicar{ } Además se deben de cumplir las siguientes características: La clase se debe de llamar exactamente igual que el fichero que la contiene. La clase que se llama igual que el fichero debe de estar precedida de la palabra public. Cuando se intenta ejecutar una clase java, la máquina virtual lo que hace es llamar a un método especial llamado main que debe estar dentro de la clase a ejecutar: Public class Tabla Multiplicar? { Public static void main (String arg[]){ } } Y es dentro de la función main donde escribiremos el código que queremos que se ejecute: Public class Tabla Multiplicar? { public static void main(String arg[]){ int numero = Integer.parseInt(arg[0]); for(int i = 1 ; i<=10 ; i++){ System.out.println(“”+numero+” * “+i+” = “+(i*numero)); } } }
antonio de jesús montoya.


5.3 EL METODO COMO ELEMENTO DE LA COMUNICACION

Una operación que realiza acceso a los datos. Podemos definir método como un programa procedimental o procedural escrito en cualquier lenguaje, que está asociado a un objeto determinado y cuya ejecución sólo puede desencadenarse a través de un mensaje recibido por éste o por sus descendientes.
Son sinónimos de ‘método’ todos aquellos términos que se han aplicado tradicionalmente a los programas, como procedimiento, función, rutina, etc. Sin embargo, es conveniente utilizar el término ‘método’ para que se distingan claramente las propiedades especiales que adquiere un programa en el entorno OOP, que afectan fundamentalmente a la forma de invocarlo (únicamente a través de un mensaje) y a su campo de acción, limitado a un objeto y a sus descendientes, aunque posiblemente no a todos.
Si los métodos son programas, se deduce que podrían tener argumentos, o parámetros. Puesto que los métodos pueden heredarse de unos objetos a otros, un objeto puede disponer de un método de dos maneras diferentes:
-Métodos propios. Están incluídos dentro de la cápsula del objeto.
-Métodos heredados. Estan definidos en un objeto diferente, antepasado de éste (padre,”abuelo”, etc.). A veces estos métodos se llaman métodos miembro porque el objeto los posee por el mero hecho de ser miembro de una clase .


ANTONIO MONTOYA LOPEZ.


5.2 ENCAPSULAMIENTO DE LA CLASE


Definición previa: un paquete es una colección de clases que se encuentran en el mismo directorio.
Las clases permiten implementar tipos de datos abstractos. El problema que se presenta es que desde cualquier clase se puede accesar los campos de un objeto perteneciente a otra clase. Esto es una violación al principio de abstracción que dice que un tipo de datos abstracto sólo puede ser manipulado a través de las operaciones que se definen para éste.
Visibilidad de Campos y Métodos
En java al definir una clase se puede controlar la visibilidad que tendrán sus campos y métodos al exterior de la clase. Este control se efectúa de la siguiente forma:
class A
{
private int privx;
protected int protb;
public int pubc;
int paqd;
private void MetPriv() { ... }
protected void MetProt() { ... }
public void MetPub(A a)
{
// Un campo siempre es visible
// en la clase en donde se define
... privx ... a.privx ...
... protb ... a.protb ...
... pubc ... a.pubc ...
// Un método siempre es visible
// en la clase en donde se define
MetPriv(); a.MetPriv();
}
void MetPaq() { ... }
}
Las palabras private, protected y public son atributos de un campo o un método y su significado es el siguiente:
private: El campo o método sólo es visible dentro de la clase donde se define.
protected: El campo o método es visible en la clase en donde se define y en cualquiera de sus subclases.
public: El campo o método es visible en cualquier clase.
Ninguna de las anteriores: El campo o método es visible en cualquiera de las clases pertenecientes al paquete en donde se define. Ejemplo:
class B
{
public void MetB()
{
A a= new A();
a.pubc= 1; // Ok
a.priva= 2; // error, privado
a.protb= 3; // error, B no es
// subclase de A
a.MetPub(); // Ok
a.MetPriv(); // error, privado
}
}
Visibilidad de Clases
Al declarar una clase se puede especificar que es pública usando el atributo public. De este modo la clase podrá ser usada por cualquier otra clase. Si la clase no es pública entonces la clase sólo puede ser usada dentro del paquete que la contiene.
public class Box extends GraphObj
{ ... }
Podemos hacer un resumen de los atributos que pueden tener campos, métodos o clases:
Campo: {private public protected} {final} {static}
Método: {private public protected} {final abstract} {static}
Clase: {public} {final abstract} Sólo se puede especificar uno de los atributos puestos en la misma llave.

by: Celia Rubí Náfate Velázquez.

5.1 MODIFICADORES DE ACCESO

¿QUE SON LOS MODIFICADORES?
Modificadores
Los modificadores son elementos del lenguaje que se colocan delante de la definición de variables locales, datos miembro, métodos o clases y que alteran o condicionan el significado del elemento.


Modificadores de acceso
Los modificadores de acceso permiten al diseñador de una clase determinar quien accede a los datos y métodos miembros de una clase.
Los modificadores de acceso preceden a la declaración de un elemento de la clase (ya sea dato o método), de la siguiente forma:
[modificadores] tipo_variable nombre;
[modificadores] tipo_devuelto nombre_Metodo ( lista_Argumentos );
Existen los siguientes modificadores de acceso:
public - Todo el mundo puede acceder al elemento. Si es un dato miembro, todo el mundo puede ver el elemento, es decir, usarlo y asignarlo. Si es un método todo el mundo puede invocarlo.
private - Sólo se puede acceder al elemento desde métodos de la clase, o sólo puede invocarse el método desde otro método de la clase.
protected - Se explicará en el capítulo dedicado a la herencia
.
sin modificador - Se puede acceder al elemento desde cualquier clase del package donde se define la clase.
Pueden utilizarse estos modificadores para cualquier tipo de miembros de la clase, incluidos los constructores (con lo que se puede limitar quien puede crear instancias de la clase).
En el ejemplo los datos miembros de la clase Punto se declaran como private, y se incluyen métodos que devuelven las coordenadas del punto. De esta forma el diseñador de la clase controla el contenido de los datos que representan la clase e independiza la implementación de la interface.
class Punto { private int x , y ; static private int numPuntos = 0; Punto ( int a , int b ) { x = a ; y = b; numPuntos ++ ; } int getX() { return x; } int getY() { return y; } static int cuantosPuntos() { return numPuntos; }}
Si alguien, desde una clase externa a Punto, intenta:
. . .Punto p = new Punto(0,0);p.x = 5;. . .
obtendrá un error del compilador.

by...CELIA RUBI NAFATE VELAZQUEZ.


Saturday, December 02, 2006

4.7.- Proceso de creación de un ejecutable

4.7.- PROCESO DE CREACIÓN DE UN EJECUTABLE

Normalmente la creación de un programa ejecutable (un típico .exe para Windows) conlleva dos pasos:

1.-El primer paso se llama compilación (propiamente dicho) y traduce el código fuente escrito en un lenguaje de programación almacenado en un archivo a código en bajo nivel, (normalmente en código objeto no directamente al lenguaje máquina).

2.- El segundo paso se llama enlazado (del inglés link o linker) se junta el código de bajo nivel generado de todos los ficheros que se han mandado compilar y se añade el código de las funciones que hay el las bibliotecas del compilador para que el ejecutable pueda comunicarse con el sistemas operativo y traduce el código objeto a código máquina.

Estos dos pasos se pueden mandar hacer por separado, almacenando el resultado de la fase de compilación en archivos objetos (un típico .obj para Microsoft Windows, .o para Unix), para enlazarlos posteriormente, o crear directamente el ejecutable con lo que la fase de compilación se almacena sólo temporalmente. Un programa podría tener partes escritas en varios lenguajes (generalmente C, C++ y Asm), que se podrían compilar de forma independiente y enlazar juntas para formar un único ejecutable.

4.6.- Estructura Básica de un Programa

Estructura básica de un programa en C

La mejor forma de aprender un lenguaje es programando con él. El programa más sencillo que se puede escribir en C es el siguiente:

main( )

{

}

Como nos podemos imaginar, este programa no hace nada, pero contiene la parte más importante de cualquier programa C y además, es el más pequeño que se puede escribir y que se compile correctamente. En el se define la función main, que es la que ejecuta el sistema operativo al llamar a un programa C. El nombre de una función C siempre va seguida de paréntesis, tanto si tiene argumentos como si no. La definición de la función está formada por un bloque de sentencias, que esta encerrado entre llaves {}.



todo programa sin embargo consta de:

1.-una cabeza o inicio

2.-la declaración de variables

3.-declaracion de sentencias u operaciones

4.- un fin

4.5.- Priorirdad de operadores, evaluación de expresiones.

A continuación se muestra una pequeña tabla donde se ilustra el orden de prioridad:

OPERADOR

PRIORIDAD

^

Alta

*, /, Div

+, -, Mod

Relaciones

Baja


Nota: sobre todos estos operadores, se encuentran los paréntesis en la maxima prioridad, sin embargo por no considerarse un operador no se incluye en la tabla de prioridades.

En caso de coincidir varios operadores deigual prioridad en una expresión o subexpresión encerrada entre paréntesis, el orden de prioridad en este caso es de izquiera a derecha.

Cuando se realiza una operación con baja prioridad por adelantado, debe agruparse a los operativos involucrados.
ejemplos:

4 + 12 / 2 = 10 (sin agrupar)

(4 + 12) / 2 = 8 (con agrupador)


*Evaluación de expresiones

las expresiones se clasifican en tres grupos:
  1. expresión fija
  2. expresión postfija
  3. expresión prefija

Expresión postfija:

  • Utilizada para que los compiladores puedan traducir expresiones.
  • Si e es una expresión con operadores y operandos, la forma habitual de escritura se conoce como “infix” porque los operadores van entre (in) los operandos ( los operadores unarios preceden sus operandos).
  • La forma “postfix” consiste en colocar cada operador inmediatamente después de los operandos


Ventajas:

  • No son necesarios los paréntesis
  • La prioridad de los operadores no es relevante
  • La expresión se puede evaluar realizando un recorrido de izquierda a derecha, apilando los operandos y evaluando los operadores utilizando los operandos adecuados extraídos de la pila y apilando el resultado intermedio para repetir el proceso.
    • Este método es más simple que los necesarios cuando se trabaja con la notación “infija”

Conversión postfija - infija

El orden de los operandos es el mismo

1.- Colocar todos los paréntesis de la expresión

2.- Reemplazar los paréntesis derechos con los operadores correspondientes

3.- Eliminar todos los paréntesis

Ejemplo:

A / B - C + D * E - A * C

1.- ( ( ( ( A / B ) - C ) + ( D * E ) ) - (A * C ) )

2.-( ( ( ( AB/C- (DE*+(AC*-

3.- AB/C- DE*+AC*-


Conversión infija - postfija

1.- Pasamos todos los operandos a la salida

2.- Almacenamos los operadores en una pila hasta que se tengan que pasar a la salida

Ejemplos

A + B * C => ABC*+

Siguiente token pila salida

------- vacía ---------

A vacía A

+ + A

B + AB

El algoritmo debe determinar si * ingresa a la pila o si se retira el +.

Como la prioridad de * es mayor se debe almacenar

* +* AB

C +* ABC

La expresión ha finalizado. Se retiran los operadores de la pila: ABC*+




4.4.- Operadores, Operandos y Expresiones

*Operando:
Referente a la parte de la instrucción de lenguaje máquina de la computadora que designa la dirección de los datos con los que se debe operar.

*Expresion:
Una expresión es una secuencia de operadores y operandos que describe un cálculo. Normalmente una expresión se evalúa en tiempo de ejecución.


*OPERADORES:


operadores: un operador es el símbolo que determina el tipo de operación o relación que habrá que establecerse entre los operandos de una expresión para alcanzar un resultado.
Los operadores se clasifican en tres grupos:
  1. Aritméticos
  2. Relacionales
  3. Lógicos
1.-Operadores aritméticos: son aquellos que permiten la realización de cálculos aritméticos. Utilizan operandos numéricos y proporcionan resultados numéricos.

operadores aritmeticos
+ ------- suma
- -------resta
* -------Multiplicación
/ -------División real
Div -----División entera
Mod ----Residuo
^ -------Exponenciación

Ejemplos:

7+3 = 10
7-3 = 4
20 Mod 3 = 2
10/4 = 2.5
2^3 = 8

en la expresión 7+3, los valores 7 y 3 se denominan operandos, que son los valores que se evaluan o relacionan. El valor de la expresión 7 + 3 se conoce como resultado de la expresión , que es el producto de la relacion entre los operandos condicionados por el operador.


*Operadores Relacionales:

Los operadores relacionales, también denominados operadores binarios lógicos y de comparación, se utilizan para comprobar la veracidad o falsedad de determinadas propuestas de relación (en realidad se trata respuestas a preguntas). Las expresiones que los contienen se denominan expresiones relacionales. Aceptan diversos tipos de argumentos, y el resultado, que es la respuesta a la pregunta, es siempre del tipo cierto/falso, es decir, producen un resultado booleano.

Tabla: Operadores relacionales.

Operador

Acción

>

Mayor que

>=

Mayor o igual que

<

Menor que

<=

Menor o igual que

=

Igual

<>

Distinto

Si la propuesta es cierta, el resultado es true (un valor distinto de cero), si es falsa false (cero).

Ejemplos:
Si a = 10, b = 20, c = 30

a + b > c


Falso

a - b <>


Verdadero

a - b = c


Falso

a * b < > c


Verdadero


*Operadores lógicos
son aquellos que permiten la combinacion de condiciones para formar una sola expresion lógica. Utilizan operandos lógicos y proporcionan resultados lógicos también.

Operadores
not -------------negación (no)
and -------------conjunción (y)
or --------------disyunción (o)
xor -------------disyunción exclusiva (o/solo)

Se obtiene verdadero si:
NOT-----el operando el falso
AND-----ambos operandos son verdaderos
OR------Al menos un operando es verdadero
XOR----solo uno de los operandos es verdadero.

ejemplos: (5+3 and 4-2) > 1 , (5 or 6) < 50

Friday, December 01, 2006

4.3.- Datos

4.3.1.- DEFINICION

Un dato puede considerarse como la materia prima de la cual se deriva la información y son representaciones de los hechos que por si sólos carecen de importancia.

4.3.2.- TIPOS DE DATOS

Enfocado a la programación, un dato se define como la expresión general que describe los objetos ocn los cuales opera una computadora.
Los datos se clasifican en diversas categorias, segun el tipo de máquina o del lenguaje en uso. Generalmente podemos encontrar las siguientes categorías:
  1. Nuéricos
  2. Lógicos
  3. Cadenas
*Datos Numéricos:
son aquellos que representan una cantidad o valor determinado. su representación se lleva a cabo en los formatos ya conocidos (enteros, punto y fracciones decimales si estas existen).
Estos pueden representarse en dor formas distintas:
*Tipo Numérico Entero (integer)
*Tipo Numérico Real (real).

--Numerico entero: los enteros son números completos, no tienen componentes fraccionarios o decimales y pueden ser positivos o negativos. ejemplos: 37, -109, 50.

--Numerico Real: siempre tienen un punto decimal y pueden ser positivos y negativos. ejemplos: 0.52, -9.3, 6.579, 8.0


Datos tipo Lógicos:
También conocidos como booleanos, son aquellos que sólo pueden tomar dos valores: verdadero o falso. Se utilizan para representar las alternativas (si/no) a determinadas condiciones.
se clasifican en:

*tipos simples: puesto que no poseen una estructura compleja.


*tipos compuestos: dependiendo de cada lenguaje, se proporcionan su utilización, siendo estos, datos que tienen una estructura predeterminada.
Estos a su vez se subdividen en tres grupos:

a) subrango: aquellos en lso que se especifícan con precision el intervalo de valores válidos para un dato. Ejemplos; 0...100 (enumerativos tipo entero), 'A'...'Z' (enumerativos tipo cadena). los numeros reales no son validos para el tipo subrango.

b)Enumerativos: son aquellos en los que se definen individualmente los valores para un dato.
ejemplos: (0,25,40,52) siempre deben ponerse entre paréntesis.

c) Definidos por el usuario: son aquéllos que el programador crea para satisfacer las necesidades


*Datos tipo Cadena:

son los datos que representan finformacion textual (palabras, frases, símbolos, etc). no representan valor alguno para efectos numéricos. Pueden disinguirse porque son delimitados por apostrofes o comillas.
se clasifica en dos categorías:
*Datos tipo caracter (char)
*Datos tipo cadena (string)

--Dato tipo caracter: es un conjunto finito y ordenado de caracteres que la computadora reconoce. Un dato de este tipo contiene sólo un caracter. Ejemplos: (A,B,C,D) ó (1,2,3,4) ó (+, -, *, ^, $, etc).

--Dato tipo cadena: es una sucesión de caracteres delimitados por comillas o apóstrofes según el tipo de lenguaje de programación. Ejemplos: 'Hola Mundo', "12 de octubre de 1942".


4.3.3.- IDENTIFICADORES

Un identificador es el nombre utilizado para referenciar variables, constantes, tipos, funciones y otros objetos definidos por el usuraio.

Un identificador puede tener uno o mas caracteres (letras, digitos y caracter de subrayado), siendo significativos los primeros 32. Este tipo de datos son creados por el programador de acuerdo a sus necesidades de diseño.

Dentro de los identificadores se encuentran las constantes y las variables.

Constantes y variables;

Una constante es aquella que no cambia de valor durante la ejecucion de un programa, se representa en la forma descrita para cada categoría.

las Variables son aquellas que pueden modificar su valor durante la ejecución de un programa. Su representación se da a través de letras y símbolos generalmete de tipo numéricos a los que se les asigna un valor.

ejemplos:


Constantes

Variables

Numéricos

36

450.35

0.58

A

Nom

Edad

Ciudad

Estatura

Cadena

‘A’

‘Juan’

‘La Paz’

“capital”

Lógicos

Falso

Verdadero























4.3.5.- SISTEMA DE NUMERACIÓN BINARIA Y HEXADECIMAL


*Sistema Binario:

Es el sistema digital por excelencia debido a su sencillez, aunque no el único. Su base es 2 y
Emplea 2 caracteres: 0 = desactivado y 1 = activado. Estos valores reciben el nombre de bits (dígitos binarios). Así, podemos decir que la cantidad 10011 está formada por 5 bits.

Este sistema es de especial importancia en la electrónica digital, donde sólo son posibles dos valores.


*Sistema Hexadecimal:

Está compuesto por 16 símbolos: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F. Su base es 16. Es uno de los sistemas más utilizados en electrónica, ya que además de simplificar la escritura de los números binarios, todos los números del sistema se pueden expresar en cuatro bits binarios al ser 16 = 24.

La conversión de un número hexadecimal a uno binario es muy sencilla al igual que en el sistema octal.

La conversión entre binario y hexadecimal es igual al de la conversión octal y binario, pero teniendo en cuenta los caracteres hexadecimales, ya que se tienen que agrupar de 4 en 4. La conversión de binario a hexadecimal se realiza según el ejemplo siguiente:

Sistema binario Sistema Hexadecimal
0000 0
0001 1
0010 2
0011 3
0100 4
0101 5
0110 6
0111 7
1000 8
1001 9
1010 A
1011 B
1100 C
1101 D
1110 E
1111 F

Ejemplo: 1011111,1100012

Agrupando obtenemos el siguiente resultado:
0101 1111, 1100 01002

Sustituyendo según la tabla logramos la conversión esperada:

5F, C4



4.2 .- Conceptos de Programación

4.2.1. DEFINICION DE PROGRAMA:

Esta defición ya se acerca a una conceptualización más formal y dice que un progrma es un conjunto de instrucciones escritas en un lenguaje de programación que indican a la computadora la secuencia de pasos para resolver un problema.

4.2.2 DEFINICION DE PROGRAMACIÓN:

la programación es aquel conjunto de reglas de sintaxis y métodos que dirigen en la elaboración de un programa en específico.

con esta defición se pretende aclarar la diferencia entre porgrama y programación. En mi opinion la programación es el camino, el método, todo lo necesario para llegar a un objetivo, que es el programa, la aplicación, la culminacion del proceso y el producto que cumple con una función o funciones particulares.

4.2.3 DEFINICION DE LENGUAJE DE PROGRAMACIÓN:

Es un conjunto de palabras, símbolos y reglas sintácticas mediante los cuales puede indicarse a la computadora los pasos a seguir para resolver un problema.

Estos lenguajes se clasifican en tres grandes categorías :

Lenguaje Máquina

Lenguaje de Bajo nivel (ensamblador)

Lenguaje de Alto nivel.



a) lenguaje máquina:

Son aquéllos que están escritos en lenguajes directamente inteligibles por la máquina (computadora), ya que sus instrucciones son cadenas binarias (cadenas o series de caracteres de dígitos 0 y 1) que especifican una operación y las posiciones (dirección) de memoria implicadas en la operación se denominan instrucciones de máquina o código máquina. El código máquina es el conocido código binario el cual esta estrechamente relacionado con el algebra booleana y las matematicas discretas.


Las instrucciones en lenguaje máquina dependen del hardware de la computadora y, por tanto, diferirán de una computadora a otra, sin lugar a dudad programar en codigo binario era extremadamente tedioso y dificil de depurar.

b) lenguaje de bajo nivel:

Son más fáciles de utilizar que los lenguajes máquina, pero al igual que ellos, dependen de la máquina en particular. El lenguaje de bajo nivel por excelencia es el ensamblador. Las instrucciones en lenguaje ensamblador son instrucciones conocidas como nemotécnicos.

- Por ejemplo, nemotécnicos típicos de operaciones aritméticas son : en inglés : ADD, SUB, DIV, etc. ; en español : SUM, RES, DIV, etc.


Un programa escrito en lenguaje ensamblador, requiere de una fase de traducción al lenguaje máquina para poder ser ejecutado directamente por la computadora. El programa original escrito en lenguaje ensamblador se denomina programa fuente y el programa traducido en lenguaje máquina se conoce como programa objeto, el cual ya es directamente entendible por la computadora.

d) Lenguaje de alto nivel:

Estos lenguajes son los más utilizados por los programadores. Están diseñados para que las personas escriban y entiendan los programas de un modo mucho más fácil que los lenguajes máquina y ensambladores. Un programa escrito en lenguaje de alto nivel es independiente de la máquina (las instrucciones no dependen del diseño del hardware o de una computadora en particular), por lo que estos programas son portables o transportables. Los programas escritos en lenguaje de alto nivel pueden ser ejecutados con poca o ninguna modificación en diferentes tipos de computadoras.

actualmente, como estudiantes nosotros nos dedicamos principalmente al aprendizaje del uso de los lenguajes de alto nivel, especificamente los lenguajes orientados a objetos.

a continuación se muestra una lista de los lenguajes de alto nivel más importantes:

Ada, ALGOL, Basic, C++, C#, Clipper, COBOL, Fortran, Java, Lexico, Logo, Object Pascal, Pascal, Perl, PHP, PL/SQL, Python, Ruby, Modula-2.





4. Introducción a la programacion. 4.1 Clasificación del Software

Antes que todo, es conveniente dar una defición general de software para poder introducirnos en este tema.


Software:
el software es el que determina la tarea a realizar por la computadora, pues en el están contenidas todas las instrucciones electrónicas, las cuales generalmente residen en un dispositivo de almacenamiento.

debido al desarrollo en el ámbito de la informatica, surgieron también varias clases de software, ahora se muestra su clasificación:

4.1.1.- SOFTWARE DE SISTEMA

se le llama programa a un cojunto específico de instrucciones
y son este conjunto de instrucciones los que le dicen a los componente físicos de la maquina como deben actuar.

El software de sistema le indica a la computadora como usar sus propios componentes. este tipo de software actua en la máquina desde que es encendida, y lo hace en los siguientes pasos:

1.- la autoprueba: sirve para identificar los dispositivos que están conectados a la máquina, cuenta la memoria disponible y si está trabajando bien.
Es decir, sin el software de sistema permite cargar los componentes de manera segura.

2.- busqueda del sistema operativo el cual indica como interactuar con el usuario, como usar los dispositivos (disco duro, monitor, teclado, etc) y cargar el sistema en la memoria RAM.

3.- En este punto la computadora ya se encuentra en condiciones de recibir comandos.

entre los sistemas operativos más populares hoy en día se encuetran: windows, macos, las diversas distribuciones de Linux, entre otros.

4.2.2 SOFTWARE DE APLICACIÓN:

son el software que hacen de la computadora una herramienta util para el usuario. De estos existen varios tipos:

1.- Aplicaciones de negocio
2.- aplicaciones de utilerias
3.- aplicaciones personales
4.- aplicaciones de entretenimiento

1.- APLICACIONES DE NEGOCIOS:


a)en esta categoria podemos encontrar los procesadores de palabras, muy utilizados en todo el mundo que te permiten crear prácticamente cualquier tipo de documento. ejemplos de estos programas son word, word perfect, abiword, writer de openoffice, lyx, entre muchos otros.



b) hojas de calculo: éstas despliegan una matriz muy grande de columnas y renglones, las que al ser interceptadas forman celdas que son las zonas en las que se almacenan texto, números, fórmulas, etc. este tipo de programas tienen las capacidad de formar bases de datos de cierto tamaño, útil para todo tipo de negocio. Algunos ejemplos de hojas de calculo son: microsoft excel, Gnumeric, Calc de openoffice, KSpread, entre otros.



c) bases de datos:
te permiten la organización de los datos guardados en la computadora así como la búsqueda de datos específicos. A diferencia de las hojas de cálculo que tambien pueden generar bases de datos, es que los programas especificos para bases de datos pueden generar archivos de gran tamaño, casi sin limite, lo cual no pueden hacer las hojas de calculo. Un ejemplo de estas aplicaciones es el famoso oracle.


d) Los gráficos: son usados para crear ilustraciones, gráficas y tablas con calidad profesional basadas en datos numéricos generalmente importados de otro programa. con este programa se pueden hacer presentaciones multiproposito e incorporar en ellas imagenes, graficas, audio, video, etc. de los más populares esta el powerpoint de Microsoft.





2.- APLICACIONES DE UTILERIAS:

Ayudan a administrar y dar mantenimiento a la computadora, te ayudan a correr los diferentes programas, recuperar información, aumentar la eficiencia de la máquina y organizar la información del sistema. tales como la herramienta desfragmentadora de disco, o el skandisk, etc.

3.- APLICACIONES PERSONALES:

Son programas diseñados para quitar lo tedioso a las tareas personales. Ej. el control de cheques, agenda de direcciones, operaciones bancarias, envío de correo electrónico, etc, se puede decir que son aplicaciones que se adaptan a las necesidades especificas de cada tipo de personas segun sus actividades.

4.- APLICACIONES DE ENTRETENIMIENTO:

Aquí se encuentran todas las aplicaciones como los videojuegos, los cuales existen aquellos que vienen por defecto junto con el sistema operativo de la máquina, como cartablanca, solitario, buscaminas, etc. y aquellos que se pueden descargar de internet o comprarse, todos ellos son muy populares, especialmente entre la gente joven y los estudiantes.












Thursday, November 16, 2006

3.2 Diseño algoritmico de las funciones

En este se explica detalladamente lo que realiza el algoritmo para resolver el problema planteado. en un diseño de algoritmo que sea complejo puede subdividirse en subprogramas para el estudio o la revision de los pasos que lleven a la solucion y sea menos el indice de errores que tenga al momento de la prueba, y a este diseño se le conoce como diseño modular pues es sencillo revisar cada proceso ya antes dividido para su rapida especificacion y prueba.
un algoritmo cuenta con un inicio y sus subprogramas llamado tambien diseño modular.

3.1.2 Implementacion de algoritmos secuenciales

Los algoritmos no se implementan sólo como programas, algunas veces en una red neuronal biológica (por ejemplo, el cerebro humano implementa la aritmética básica o, incluso, una rata sigue un algoritmo para conseguir comida), también en circuitos eléctricos, en instalaciones industriales o maquinaria pesada. Se puede decir en pocas palabras que nuestra vida es un ejemplo de algoritmo, pues al desarrollar nuestros quehacer diarios desarrollamos una serie de pasos ordenados, así podremos quedar satisfechos con los resultados.

El ingreso de la notación algebraica en el desarrollo de algoritmos logró un gran avance para los programadores ya que fue una forma mas tangible de desarrollar sus programas, por medio de la lógica.

Un algoritmo puede adoptar una de las estructuras siguientes o combinaciones de ellas: lineal o secuencial, alternativa o selectiva y repetitiva o cíclica.

*Un algoritmo secuencial es aquel en el que se necesita que un paso anterior haya concluido para continuar con otro. De esta forma, en este tipo de algoritmos se requiere de datos de la etapa anterior, como una cadena o secuencia de información.
ejemplo:





















*Un algoritmo selectivo es aquel en el que se establecen condiciones para poder realizar una acción específica, en los lenguajes de programación se implementan las sentencias if o select case para llevar a cabo este tipo de algoritmos. Ejemplo:




















*Un algoritmo repetitivo o cíclico es aquel en el que el programador establece un rango de repetición para una acción dada, o en el que se determina que una acción se repita de forma cíclica mientras se cumpla alguna condición. En los lenguajes de programación se usan las sentencias while y for para llevar a cabo este tipo de algoritmos.
ejemplo:





















El algoritmo más sencillo de todos es el lineal pues es solo la que realiza un determinado proceso y no tiene variaciones ni complicaciones. pues solo realiza una accion y sus pasos son seguidos o secuenciales.

3.1.1 Elementos y Reglas de la Representacion grafica de los algoritmos

a) Descripción Narrada
b) Pseudocódigo
c) Diagramas de Flujo
d) Diagramas N- S (Nassi-Schneiderman o de Chapin)


A) DESCRIPCION NARRADA:

se caracteriza porque sigue su secuencia de pasos logicos escribiendo textualmente los procesoso que realiza dicho algoritmo.

B) PSEUDOCODIGO:

este permite definir lo que realmente hara el algoritmo y la solucion a la que se desea llegar pues solo es una representacion como un borrador para saber en que posible paso se puede modificar o pueda este tener errores digamos que es una prueba de escritorio.

C)DIAGRAMAS DE FLUJO


es una representacion con simbolos de un algoritmo este sirve solo para diseñar los procesos con simbologia propia de una diagrama de flujo pues es muy util su estructura para que el algoritmo tenga un cierto orden para su elaboracion.

D) DIAGRAMAS NS:

este consta de cuadros o cajas que especifican un proceso realizado de la estructura de un algoritmo. pues represneta de manera especifica las acciones que realizara el proceso y son claramente detallados los procesos que sean por ejemplo de seleccion, o decision y otros que se realizan dentro de un algoritmo.

Las reglas son:
  • se escirben de arriba hacia abajo y de izquierda a derecha
  • siempre se usan flechas verticales u horizontales y no curvas
  • se tiene que eviatr el cruce de flujo
  • en cada paso se tiene que especificar una accion concreta

En otros tipos de representacion se escribe asi_:

  • tiene un inicio
  • lectura de datos
  • proceso realizado
  • salida o impresion de resultados
  • un final


LAS VENTAJAS DE USAR FUJOGRAMAS:

estos se utilizan para representar y diseñar un algoritmo y pues son una prueba de escritorio el cual nos sirve para tener una nocion de lo que puede llegar a realizar dicho procedimiento.

son usados como modelos de estructura para saber lo que hara futuramente y tienen que diseñarse y comprenderse todos los pasos de su elaboracion.


DESVENTAJAS DE USAR FLUJOGRAMAS:

los diagrmas que lleven muchos pasos es decir los mas complejos suelen ser muy laborioso y se puede tornar tedioso para el diseñador de algortimos.

en un proceso de decision puede seguirse varios caminos y puede llegar a ser que se pierda informacion o no se elabore adecuadamente.

en estos no se puede incluir detalles que ayuden al buen seguimiento de un proceso.

3.- Tecnicas de Diseño Detallado

3.1 Diseño Algoritmico

Antes que nada debemos tener la nocion de lo que es un algoritmo,

Un algoritmo es una secuencia de pasos finitos, es decir un determinado numero de instrucciones seguidas para realizar cierta funcion o tarea que a este se le haya asigando puesto que en su terminacion lleva la solucion de una problematica que se haya asigando.

Los algoritmos son utilizados como guías o modelos para poder realizar un programa, debido a que representa de forma efectiva y simple las instrucciones y las acciones que se llevarian a cabo en el, por lo que se recomienda realizar siempre primero el algoritmo antes de tratar de programar directamente.

Un algotimo puede ser representado de dos formas:
  • pseudocodigo
  • diagrama de flujo

PSEUDOCODIGO: No es mas que escribir lo que realiza un algoritmo de forma entendible con instrucciones regularmente en ingles o en su defecto en otro idioma, ya que contiene su estructura y este es:

1.-inicio
2.-introduce las variables
3.-proceso realizado para el resultado
4.-impresion en pantalla del resultado
5.-fin

por ejemplo el pseudocodigo de un algoritmo que dado un numero x me diga si es menor o mayor que cero. seria:

inicio

leer valor

decision mayor que cero

imprime en pantalla el resultado

fin


DIAGRAMA DE FLUJO: Se dice que es la representacion grafica de los algoritmos en si, este consta de una simbologia como es proceso, entrada, salida, monitor, decision, conector, teclado y otros simbolos que nos ayudan a representar los diferentes estados de un algoritmo, esto facilita la representacion de un algoritmo asi es como la realizacion del pseudocodigo se reconoce por su simbologia empleada en estos diagramas para su entendimiento.




























a continuación un ejemplo de diagrama de flujo:

Tuesday, October 17, 2006

viSion mas profunda al diSeño

Las etapas del proceso son seis: Modelado del Negocio, Modelado de Requisitos, Modelado del Análisis, Modelado del Diseño, Implementación y Validación.


En la primera etapa del Modelado del Negocio identifican los procesos del negocio, se definen los casos de uso del negocio, se identifican los roles (diagrama de roles) y se modelan los flujos de tareas asociado a cada proceso de negocio, mediante escenarios y diagramas de procesos que muestran la interacción entre roles para conseguir el objetivo. Dado la pequeña magnitud de la aplicación a construir, no ha sido necesario realizar el Modelado del Negocio para esta práctica.


En la segunda etapa, por la que comenzamos directamente, se define el Modelado de Requisitos mediante los Casos de Uso (CdU) y el Modelo Conceptual.


Un CdU es creado para cada actividad que es soportada por el sistema, y proporciona un buen nivel de granuralidad para el desarrollo posterior. En ellos se describen principalmente los pasos que va a seguir la interacción con el sistema que el CdU representa.


En las etapas de Modelado del Análisis y Diseño se define para cada CdU un diagrama de secuencia del sistema, que muestra los eventos que un actor genera durante la interacción con el sistema. Cada evento da origen a una operación del sistema. Los contratos describen los efectos de cada una de las operaciones; suponen pues, una descripción más detallada sobre el comportamiento del sistema en términos de cambios de estado a los objetos del Modelo Conceptual tras la ejecución de una actividad con el sistema. Es por esto que la parte principal de un contrato sean las Pre y sobre todo, las Post condiciones, en las que se indican los objetos o asociaciones creadas o eliminadas, así como la modificación de atributos.


Se ha organizado el documento de manera que cada CdU se engloba en un apartado, en el que se muestra la siguiente información:

La especificación textual del CdU, siguiendo la plantilla recomendada por Larman para la descripción de CdU. Cualquier suposición al margen del enunciado original de la práctica se incluirá antes de cada especificación.

Diagrama de secuencia del sistema para ese CdU, en el que, como ya hemos comentado, se muestra los eventos que el actor genera al interactuar con el sistema para ejecutar ese CdU.

Los contratos de cada una de las operaciones que aparecen en el diagrama de secuencia, junto con sus correspondientes diagramas de colaboracion. Para todos ellos se ha intentado aplicar lo máximo posible los patrones GRASP, logrando así un mejor diseño.


Finalmente se realiza la etapa de generación de Código e Implementación. En este Proyecto sólo realizamos la generación de Código de forma automática, pero no se lleva a cabo ninguna implementación concreta, ni por tanto, el proceso de Validación.

Author: Antonio Montoya López

Diagrama de Interaccion

Representacion Grafica de Clases

La representación de una clase cualquiera en un diagrama de UML lleva una estructura determinada, llevando en la parte de arriba, el nombre de la clase siempre con la primera letra mayúscula.
En la parte de abajo se agregan todos los atributos o datos de la clase, siempre con letras minuscula, y tambien se puede escribir al lado de cada atributo el tipo de datos que se debera utilizar en el programa, para mayor facilidad de identificación.
Por ultimo, en la parte inferior, se agreagan los métodos de la clae, en minusculas y con dos parentesis al final para identificar que son procesos.
El diagrama de clases que representamos para nuestra problemática es el siguiente:Author: Antonio Montoya López

2.6 Introduccion al diseño de la solucion

El diseño de la solución llama al equipo de trabajo a planter multiples soluciones posibles a la problemática, para analizarlas y determinar cual es la mejor opción, partiendo de eso, se procede a desarrollar a diseñarla y representarla, en esta caso, usando UML.

Definición de la problemática:

Un videoclub se encuentra en un estado en el que es dificil atender a los clientes, ya que se los atiende de forma lenta, y tambien es dificil llevar un control de todas las peliculas que tienen y que van en aumento.
Es decir, el negocio se encuentra en una rápida expansión, y requiere de cambios estructurales para poder resolver su problema.

En base a la problematica del videoclub propuesta por nuestro equipo, definimos las siguientes posibles soluciones:

1.- CONTRATACION Y CAPACITACION
DE EMPLEADOS.

3.- CLASIFICAR Y ETIQUETAR LOS
PRODUCTOS EN VENTA.

3.- CREACION DE UN SISTEMA
DE INFORMACION
.


JUSTIFICACION DE LA DECISION DE DISEÑO

De las tres posibles soluciones propuestas, determinamos que la más efectiva seria la creacion de un sistema de información, a continuacion planteamos nuestras razones:


•Creación de un sistema de información
•Mayor eficiencia en el manejo del inventario de los productos (Base de datos)
•Procesos automatizados
•Actualización
•Control en las reservas
•Mayor rapidez al momento de atender al cliente

Autor: Antonio Montoya López y Gerardo Aguilar

2.3 El UML como una herramienta de modelado de objetos

El Lenguaje de Modelamiento Unificado (UML - Unified Modeling Language)
es un lenguaje gráfico para visualizar, especificar y documentar cada una de las partes que comprende el desarrollo de software. UML entrega una forma de modelar cosas conceptuales como lo son procesos de negocio y funciones de sistema, además de cosas concretas como lo son escribir clases en un lenguaje determinado, esquemas de base de datos y componentes de software reusables.

En UML existen de forma general dos tipos de diagramas:

  1. Diagramas estáticos (estos diagramas le interesan al cliente)
  2. Diagramas dinámicos (son de mayor utilidad al desarrollador del sistema)



UML representa la información de un sistema en forma gráfica y pretende ser un estándar mundial de modelado.










Es importante especificar detalles importantes sobre UML:

  • NO es una metodología .- debido a que no esta determinado como una serie de pasos a seguir o un reglamento definido.
  • NO es un lenguaje, es mas bien una herramienta de modelado.- en UML no se ve codigo de programación, sino que es más general, eh ahi su flexibilidad y practicidad.
  • Las representaciones en UML deben ser "simples", pero "potentes" o expresivas, es decir, que lo representado en diagramas UML debe ser entendible para el cliente, y ademas potente porque debe contener información importante que pueda convencerlo y asi poder desarrollar un proyecto.















aquello que se presente debe convencer al cliente



Autor: Gerardo Aguilar Hernández

2.2 El Modelo como resultado de la abstracción.

Cuando abstraemos algo, se sabe que ese algo se vuelve menos complejo y que se forma una imagen general del mismo. Cada persona puede tener una imagen abstracta diferente a las demás acerca del mismo objeto. Un modelo tambiés es sinónimo de un conjunto de características, es como una plantilla o un patrón. El modelo nos puede servir para desarrollar o crear algo de forma precisa y estándar.
Se puede decir que todo lo visto como abstracto puede llegar a servir como un modelo determinado.


un ejemplo de modelo puede ser un molde para hacer galletas


Ahora bien, un modelo en programación sirve para lo mismo, el modelo nos sirve para englobar la estructura de un sistema de información, todos sus componentes y elementos funcionales. la ventaja principal y el uso práctico de los modelos es el poder mostrar al cliente que pidio el sistema de información un "demo", que es una muestra o una demostración del sistema en su estructura y funcionalidad, esto es importante para que el cliente vea el avance del trabajo y evalue si lo que se esta desarrollando realmente cumple con sus espectativas o si le es útil, de tal manera que si el cliente queda convencido, el equipo de desarrollo del software sigue adelante con una idea más clara para afinar los detalles del mismo, incluso en ocasiones al cliente le agrada tanto el demo del software, que prefiere quedarse con el y trabajar con el que esperar a que lo terminen o afinen los detalles, puesto que en ese momento le es completamente funcional.




pero si el cliente no queda convencido con el demo, pueden pasar dos cosas, o el equipo desarrollador trata de arreglar aquello que esta mal, realizando un análisis nuevamente para aclarar los puntos en los que cometio el error, lo cual tomaria mas tiempo y dinero, o simplemente el cliente cancela el pedido y busca a otro equipo de desarrolladores de software, que pueda desarrollar un sistema que cumpla con sus necesidades al cien porciento. E aquí la importancia de los modelos, por lo que se deben tener muy en cuenta.
















aceptacion del proyecto



ó















rechazo del proyecto




a continuación algunos pequeños ejemplos de modelos en el mundo real:


1.- la receta para preparar un pastel.

2.- los planos de una casa.

3.- el boceto de un vestido hecho por un diseñador.

4.- un formato para elaborar un examen.
5.- el organigrama de una empresa.


Autor: Gerardo Aguilar Hernández