Está en la página 1de 13

Facultad de Ciencias de la Administración

Carrera: Ingenieria de Sistemas


Materia: Introduccion a la Informatica
Comisión: 20-2-INF-COR-DIST-A-sperez
Alumno: Gustavo Bahamonde

Gustavo Bahamonde
Actividad Obligatoria N° 2

Criterios de Evaluación

● Reconocimiento de los elementos básicos del lenguaje Java. 


● Transferencia de conceptos de los algoritmos al lenguaje java en situaciones prácticas.
● Presentación del trabajo en los formatos correspondientes. 

Consignas

Preguntas teóricas

1. Explique la estructura general de un programa Java (Creación, ejecución, depuración y prueba de un


programa en Java). Agregue imágenes o gráficos que ayuden a la explicación.

2. Explique los tipos de errores. Ejemplifique.

3. Mencione los tipos de datos y los operadores. Ejemplifique.

Actividades prácticos

1. Escribir y ejecutar un programa que simule una calculadora simple. Lee dos enteros y un carácter. Si
el carácter es un "+", se imprime la suma; si es un "-", se imprime la diferencia; si es un "*", se
imprime el producto; si es "/", se imprime el cociente; y si es "%", se imprime el resto. Nota: Utilizar la
sentencia switch. 

2. Ingrese los lados de un triángulo y determine de qué triangulo se trata. Si tiene todos los lados
diferentes es escaleno, todos los lados iguales es equilátero y si tiene dos lados iguales y uno desigual
es isósceles.

3. Escribir un programa que pida ingresar coordenadas (x,y) que representan puntos en el plano.
Informar cuántos puntos se han ingresado en el primer, segundo, tercer y cuarto cuadrante. Al
comenzar el programa se pide que se ingrese la cantidad de puntos a procesar.

Formas de entrega

Las preguntas teóricas serán entregadas en un archivo de Word o Libre Office bajo el nombre
"Respuestas_Apellido_nombre" y los ejercicios prácticos se entregarán los archivos .java.

Todos los archivos se comprimirán en un .zip llamado "AO2_Apellido_Nombre".

Gustavo Bahamonde
1.Explique la estructura general de un programa Java (Creación, ejecución, depuración y prueba de un
programa en Java). Agregue imágenes o gráficos que ayuden a la explicación.

Figura 2.1 - Estructura Tipica de un Programa de Java


Creación de un Programa:
Para crear un programa en Java se puede utilizar Netbeans o Eclipse, en mi caso uso Netbeans.
El archivo java es el código fuente de un programa.
Compilar el código fuente. Se traduce el código fuente en un código entendible por la computadora, en lenguaje
máquina. El compilador Java traduce el código fuente de un programa no exactamente en código máquina, sino
en un código intermedio llamado Byte Code, y lo guarda con el mismo nombre del programa y la extensión class
(.class). Un archivo .class con código Byte Code es independiente de la arquitectura del computador y contiene
instrucciones del programa en forma empaquetada, para que pueda ser ejecutado en una máquina que tenga
un intérprete Java, en lo que se denomina Máquina Virtual de Java.

Gustavo Bahamonde
Figura 2.2 - Compilación en Java

Ejecución de un Programa:
La Máquina Virtual interpreta el archivo .class con código Byte Code. Primero carga en memoria el archivo
.class. En segundo lugar se encarga de verificar que el código cargado no va a violar las restricciones de
seguridad de Java (violación de memoria…). Por último, ejecuta cada una de las instrucciones generadas en
Byte Code.

Figura 2.3 - Ejecución de un programa Java

.Depuración de un Programa:

Gustavo Bahamonde
El proceso de ejecución de un programa no suele funcionar a la primera vez; es decir, siempre hay errores de
sintaxis o errores en tiempo de ejecución. El proceso de detectar y corregir errores se denomina depuración o
puesta a punto de un programa.

Figura 2.4 - Pantalla de depuración de un programa Java

Prueba de un programa en Java:


Los errores de ejecución ocurren después de que el programa se ha compilado con éxito y aún se está
ejecutando. Existen ciertos errores que la computadora sólo puede detectar cuando se ejecuta el programa.
Para determinar si un programa contiene un error lógico se debe ejecutar utilizando datos de muestra y
comprobar la salida verificando su exactitud. Esta prueba (testing) se debe hacer varias veces utilizando
diferentes entradas, preparadas – en el caso ideal – por personas diferentes al programador, que puedan
indicar suposiciones no evidentes en la elección de los datos de prueba. Si cualquier combinación de entradas
produce salida incorrecta, entonces el programa contiene error lógico.

2. Explique los tipos de errores. Ejemplifique.

Errores de sintaxis:
Los errores de sintaxis son aquellos que se producen cuando el programa viola la sintaxis, es decir, las reglas
de gramática del lenguaje. Errores de sintaxis típicos son: escritura incorrecta de palabras reservadas, omisión
de signos de puntuación (comillas, punto y coma …).
Los errores de sintaxis son los más fáciles de fijar, ya que ellos son detectados y aislados por el compilador.
Estos errores se suelen detectar por el compilador durante el proceso de compilación. A medida que se produce
el proceso de traducción del código fuente (por ejemplo, programa escrito en Java) a Byte Code, el compilador
verifica si el programa que se está traduciendo cumple las reglas de sintaxis del lenguaje. Si el programa viola
alguna de estas reglas, el compilador genera un mensaje de error (o diagnóstico) que explica el problema
(aparente). Algunos errores típicos (ya citados anteriormente):
• Punto y coma después de la cabecera main ( ).
• Omisión de punto y coma al final de una sentencia.
• Olvido de la doble barra inclinada antes de un comentario.
• Olvido de las dobles comillas al cerrar una cadena.

Gustavo Bahamonde
• Utilización de palabras reservadas como identificadores.
• Si una sentencia tiene un error de sintaxis no se traducirá completamente y el programa no se podrá ejecutar.
Así, por ejemplo, si una línea de programa es:

Este código, si x = 3 System.out.println("Hello.")--tiene tres errores de sintaxis:

En primer lugar, el comando no termina en un punto y coma. En segundo lugar, la comparación que se
produce después del "si" debe estar rodeada por paréntesis. Por último, la comparación utiliza el
operador de asignación "=" en lugar de la comparación operador "==." Alguno de ellos generará un
error de sintaxis de Java. Aquí está el comando escrito correctamente:

Si (x == 3) System.out.println("Hello.");

Figura 2.5 Anuncio del IDE sobre error de sintaxis

Errores Lógicos:
Los errores lógicos representan errores del programador en el diseño del algoritmo que se implementa. Los
errores lógicos son más difíciles de encontrar y aislar, ya que no suelen ser detectados por el compilador.
Por ejemplo, que una línea de programa contiene la sentencia:

double peso = densidad * 5.25 * Math.PI * Math.pow (longitud, 5) / 4.0


pero resulta que el tercer asterisco (operador de multiplicación) es en realidad un signo +
(operador suma). El compilador no produce ningún mensaje de error de sintaxis, ya que no
se ha violado ninguna regla de sintaxis y por tanto el compilador no detecta error y el
programa se compilará y ejecutará bien, aunque producirá resultados de valores incorrectos,
ya que la fórmula utilizada para calcular el peso contiene un error lógico.

Gustavo Bahamonde
• Errores de regresión
Los errores de regresión son aquellos que se crean accidentalmente cuando se intenta
corregir un error lógico. Siempre que se corrige un error se debe comprobar totalmente la
exactitud (corrección) para asegurarse que se fija el error que se está tratando y no produce
otro error. Los errores de regresión son comunes, pero son fáciles de leer y corregir.

• Mensajes de error
Los compiladores emiten mensajes de error o de advertencia durante las fases de
compilación o de ejecución de un programa.
Los mensajes de error producidos durante la compilación se suelen producir, normalmente,
por errores de sintaxis, y suelen variar según los compiladores; pero, en general, se agrupan
en tres grandes bloques:

1. Errores fatales. Son raros. Algunos de ellos indican un error interno del compilador. Cuando ocurre un
error fatal, la compilación se detiene
inmediatamente, se debe tomar la acción apropiada y a continuación se vuelve a iniciar la compilación.

2. Errores de sintaxis. Son los errores típicos de sintaxis, errores de línea de


órdenes y errores de acceso a memoria o disco. El compilador terminará la fase actual de compilación y se
detiene.

3. Advertencias (warning). No impiden la compilación. Indican condiciones que son sospechosas, pero
son legítimas como parte del lenguaje.

• Errores en tiempo de ejecución: excepciones


Existen dos tipos de errores en tiempo de ejecución: aquellos que son detectados por el
sistema en tiempo de ejecución de Java y aquellos que permiten la terminación del programa
pero producen resultados incorrectos.

Un error en tiempo de ejecución puede ocurrir como resultado de que una sentencia obliga
a la computadora a realizar una operación ilegal, tal como dividir un número por cero o
manipular datos no válidos o no definidos. Cuando ocurre este tipo de error, el programa
lanza una excepción, Java proporciona un mecanismo para tratar estos errores o
excepciones que ocurren durante la ejecución; si no se trata la excepción, la computadora
detendrá la ejecución de su programa y emitirá (visualizará) un mensaje de diagnóstico tal
como:
Divide error, line number * * *
Si se intenta manipular datos no válidos o indefinidos, su salida puede contener resultados
extraños. Por ejemplo, se puede producir un desbordamiento aritmético cuando un programa
intenta almacenar un número que es mayor que el tamaño máximo que puede manipular su
computadora.

El programa Depurar.java se compila con éxito, pero contiene una sentencia que asigna un
valor a la variable y para el cual el logaritmo no tiene definición.

Gustavo Bahamonde
Figura 2.6 Depurar.java

En el programa anterior, su ejecución va a terminar con un resultado no esperado, ya que el logaritmo de


valores negativos no está definido, en este caso no se detiene la ejecución, sino
que log ( ) devuelve NaN, que puede ser tomado como indicación de error en ejecución.
Otra fuente de errores en tiempo de ejecución se suele producir por errores en la entrada de
datos producidos por la lectura del dato incorrecto en una variable u objeto de entrada.

3. Mencione los tipos de datos y los operadores. Ejemplifique.

Tipos de datos fundamentales en Java son:


• Enteros números enteros: de tipo int.
• Variantes de enteros: tipos byte, short y long.
• Reales: números decimales: tipos float, double.
• Caracteres: letras, dígitos, símbolos y signos de puntuación.

• Boolean: true o false.

Enteros y variantes de enteros: int, byte,short, long


Probablemente el tipo de dato más familiar es el entero, o tipo int.
Los enteros son adecuados para aplicaciones que trabajen con datos numéricos.
En Java se puede considerar que hay cuatro tipos de datos enteros, estos son:
byte, short, int y long, enumerados de menor a mayor rango. El tipo más utilizado,
por semejanza de nombre, es int. Los valores de este tipo entero se almacenan internamente
en cuatro bytes ( o 32 bits) de memoria.

Figura 2.7 Tipos de datos enteros

Reales: números decimales: tipos float, double.

Gustavo Bahamonde
Los tipos de datos de coma (punto) flotante representan números reales que
contienen una coma (un punto) decimal, tal como 3.14159, o números muy
grandes, tales como 1.85*1015 .
La declaración de las variables de coma flotante, es igual que la de variables
enteras. Así, un ejemplo:

Figura 2.8 Tipos de datos flotantes

Java soporta dos formatos de coma flotante (Figura 2.9). El tipo float requiere
cuatro bytes de memoria, double requiere ocho bytes.

Figura 2.9 Double vs Float

Caracteres:

Un carácter es cualquier elemento de un conjunto caracteres predefinido o alfabeto.


Java fue diseñado con el objetivo de poder ser utilizado en cualquier país, con
independencia del tipo de alfabeto. Para poder reconocer cualquier tipo de carácter,
los elementos de este tipo utilizan 16 bits, dos bytes, en vez de los ocho bits que
utilizan la mayoría de los lenguajes de programación. De esta forma Java puede
representar el estándar Unicode, que recoge más de 30000 caracteres distintos
procedentes de las distintas lenguas escritas. La mayoría de las computadoras
utilizan el conjunto de caracteres ASCII, que se almacenan en el byte de menor peso
de un char; el valor inicial de los caracteres ASCII y también Unicode es ´\u0000´
y el último carácter ASCII, ´\u00FF´.
Java procesa datos carácter (tales como texto) utilizando el tipo de dato char. En
unión con la clase String, que se verá posteriormente, se puede utilizar para almacenar
cadenas de caracteres (grupos de caracteres). Se puede definir una variable de carácter escribiendo:

Figura 2.10 Char ejemplo 1

Internamente, los caracteres se almacenan como números. La letra A, por ejemplo,


se almacena internamente como el número 65, la letra B es 66, la letra C es 67, etc.
Puesto que los caracteres se almacenan internamente como números, se pueden
realizar operaciones aritméticas con datos tipo char. Por ejemplo, se puede convertir
una letra minúscula a a una letra mayúscula A, restando 32 del código ASCII y
convirtiendo el entero a char. Así, para realizar la conversión, restar 32 del tipo de
dato char, como sigue:

Figura 2.11 Char ejemplo 2

Esto convierte a (código ASCII 97) a A (código ASCII 65). De modo similar, añadiendo
32 convierte el carácter de letra mayúscula a minúscula:

‘\’’

y el carácter de nueva línea

‘\n’

Boolean:

Los compiladores de Java incorporan el tipo de dato boolean cuyos valores


son «verdadero» (true) y «falso» (false). Las expresiones lógicas devuelven
valores de este tipo.

Gustavo Bahamonde
Figura 2.12 Boolean ejemplo 1

Dadas estas declaraciones, las siguientes asignaciones son todas válidas:

Figura 2.13 Boolean ejemplo 2

Las expresiones lógicas dan como resultado true o false; se forman con operandos y operandos y operadores
racionales o lógicos. Así, se pueden hacer estas asignaciones:

Figura 2.14 Boolean ejemplo 3

Las variables de tipo boolean se pueden inicializar a la vez que se definen,


como el resto de las variables. Así, se puede definir boolean sw = true ;
La mayoría de las expresiones lógicas aparecen en estructuras de control que
sirven para determinar la secuencia en que se ejecutan las sentencias Java.
Raramente se tiene la necesidad de leer valores boolean como dato de entrada
o de visualizar valores boolean como resultados de programa. Si es necesario,
se puede visualizar el valor de la variable boolean utilizando el método print ( ):

Figura 2.15 Boolean ejemplo 4

Visualizará:

El valor de estaEnRango es false

Operadores:
1. Operador de asignación
El operador = asigna el valor de la expresión derecha a la variable situada a su izquierda.

codigo = 3467 ;
fahrenheit = 123.456 ;
coordX = 525 ;
coordY = 725 ;

Este operador es asociativo por la derecha, eso permite realizar asignaciones múltiples. Así:

a = b = c = 45 ;

equivale a

a = (b = (c = 45)) ;
o dicho de otro modo, a las variables a, b y c se les asigna el valor 45. Esta propiedad
permite inicializar varias variables con una sola sentencia:

int a, b, c ;
a=b=c=5; / / se asigna 5 a las variables a, b y c.

Además del operador de asignación =, Java proporciona cinco operadores de asignación


adicionales. En la Tabla 2.6 aparecen los seis operadores de asignación.

Gustavo Bahamonde
Estos operadores de asignación actúan como una notación abreviada para expresiones
utilizadas con frecuencia. Así, por ejemplo, si se desea multiplicar 10 por i, se puede escribir

i = i * 10 ;

Figura 2.16 Operadores de asignación Java

2. Operadores aritméticos

Los operadores aritméticos sirven para realizar operaciones aritméticas básicas. Los
operadores aritméticos Java siguen las reglas algebraicas típicas de jerarquía o prioridad.
Estas reglas especifican la precedencia de las operaciones aritméticas.
Considere la expresión

x+t*2

De acuerdo a las citadas reglas, la multiplicación se realiza antes que la suma.


Por consiguiente, la expresión anterior equivale a:

x + (t * 2)

En Java, como en la mayoría de los lenguajes, las expresiones interiores a paréntesis se


evalúan primero; a continuación, se realizan los operadores unitarios, seguidos por los
operadores de multiplicación, división, resto, suma y resta.

Precedencia de operadores matemáticos básicos

Figura 2.17 Operadores aritméticos Java

Figura 2.18 Jerarquía de operadores en Java

Ejemplo:

¿Cuál es el resultado de la expresión: 6 + 2 * 3 - 4 / 2?

6+2*3-4/2

Gustavo Bahamonde
6+6-4/2
6+6-2
12 - 2
10

3. Operadores de incrementación y decrementación

De las muchas características de Java heredadas de C ++ y de C, una de las


más útiles son los operadores de incremento ++ y decremento --. Los operadores ++ y -- ,
de nominados de incrementación y decrementación, suman o restan 1 a su argumento, respectivamente, cada
vez que se aplican a una variable.

Por consiguiente, a ++ es igual que a = a + 1. Las sentencias


++ n ;
n ++ ;

tienen el mismo efecto; así como


--n;
n--;

Sin embargo, cuando se utilizan como expresiones tales como


m = n ++ ;

o bien,
System.out.print ( - - n) ;
++ n produce un valor que es mayor en uno que el de n ++, y - - n produce un valor que es
menor en uno que el valor de n - -.

int a = 1, b ;
b = a ++ ; / / b vale 1 y a vale 2

int a = 1, b ;
b = ++ a ; / / b vale 2 y a vale 2

Ejemplo del funcionamiento de los operadores de incremento/decremento.

Figura 2.19 Ejemplo con operadores de incremento y decermento

4. Operadores relacionales

En Java, el tipo de datos boolean tiene dos valores: true y false. Una expresión
booleana es por consiguiente una secuencia de operandos y operadores que
se combinan para producir uno de los valores true y false.
Operadores tales como > = y == que comprueban una relación entre dos operandos
se llaman operadores relacionales y se utilizan en expresiones de la forma:

Gustavo Bahamonde
Figura 2.20 Operadores relacionales Java

Los operadores relacionales se usan normalmente en sentencias de selección (if) o de


iteración (while, for), que sirven para comprobar una condición. Utilizando operadores
relacionales se realizan operaciones de igualdad, desigualdad y diferencias relativas.
La tabla 2.12 muestra los operadores relaciones que se pueden aplicar a operandos de
cualquier tipo de dato estándar: char, int, float, double, etc.
Cuando se utilizan los operadores relacionales en una expresión, la evaluación produce
como resultado true o false, dependiendo del resultado de la condición. Por ejemplo, si se
escribe:

boolean c ;
c=3<7;

la variable c pone a true, dado que 3 es menor que 7, entonces la operación < devuelve un
valor de true, que asigna a c.

Gustavo Bahamonde

También podría gustarte