Clasificación del Software

Anuncio
OBJETIVO EDUCACIONAL
Comprenderá los conceptos básicos de la programación, y
escribirá expresiones aritméticas y lógicas en un lenguaje de
programación.
ACTIVIDADES DE APRENDIZAJE
4.1
Realizar un mapa conceptual sobre los tipos de software y
posconceptos básicos de programación.
4.2
Realizar ejercicios de codificación de expresiones
aritméticas y lógicas en un lenguaje de programación.
4.3
Buscar la información necesaria para instalar y
configurar el compilador del lenguaje de programación a
utilizar.
4.4
Compilar y ejecutar un programa modelo.
4.5
Realizar cambios en expresiones lógicas y algebraicas de
un programa modelo y analizar los resultados obtenidos.
FUNDAMENTOS DE PROGRAMACIÓN
INTRODUCCIÓN A LA PROGRAMACIÓN
4.1 CLASIFICACIÓN DEL SOFTWARE
El software paulatinamente adquirió mayor importancia que el hardware. En un principio, la
proporción favorecía al equipo físico, pero progresivamente, el componente inmaterial adquirió
una mayor relevancia hasta hacerse el más importante. Para facilitar su análisis, el software se
clasifica generalmente en tres grandes rubros: sistemas operativos, lenguajes de programación y
programas de aplicación.
Clasificación del Software
Fig. 4.1 Evolución progresiva del software – hardware
Además de estas categorías basadas en tareas, varios tipos de software se describen
basándose en su método de distribución. Entre estos se encuentran los así llamados programas
enlatados, el software desarrollado por compañías y vendido principalmente por distribuidores, el
freeware y software de dominio público, que se ofrece sin costo alguno, el shareware, que es
similar al freeware, pero suele conllevar una pequeña tasa a pagar por los usuarios que lo utilicen
profesionalmente.
4.1.1 Software Del Sistema
Sistema operativo, software básico que controla una computadora. El sistema operativo tiene
tres grandes funciones: coordina y manipula el hardware del ordenador o computadora, como la
memoria, las impresoras, las unidades de disco, el teclado o el mouse; organiza los archivos en
diversos dispositivos de almacenamiento, como discos flexibles, discos duros, discos compactos
o cintas magnéticas, y gestiona los errores de hardware y la pérdida de datos.
Los sistemas operativos controlan diferentes procesos de la computadora. Un proceso importante
es la interpretación de los comandos que permiten al usuario comunicarse con el ordenador.
Algunos intérpretes de instrucciones están basados en texto y exigen que las instrucciones sean
tecleadas. Otros están basados en gráficos, y permiten al usuario comunicarse señalando y
haciendo clic en un icono. Por lo general, los intérpretes basados en gráficos son más sencillos de
utilizar.
62
CAPÍTULO 4
INTRODUCCIÓN A LA PROGRAMACIÓN
FUNDAMENTOS DE PROGRAMACIÓN
Los sistemas operativos pueden ser de tarea única o multitarea. Los sistemas operativos de
tarea única, más primitivos, sólo pueden manejar un proceso en cada momento. Por ejemplo,
cuando la computadora está imprimiendo un documento, no puede iniciar otro proceso ni
responder a nuevas instrucciones hasta que se termine la impresión.
Todos los sistemas operativos modernos son multitarea y pueden ejecutar varios procesos
simultáneamente. En la mayoría de los ordenadores sólo hay una UCP (Unidad Central de
Procesamiento); un sistema operativo multitarea crea la ilusión de que varios procesos se ejecutan
simultáneamente en la UCP. El mecanismo que se emplea más a menudo para lograr esta ilusión
es la multitarea por segmentación de tiempos, en la que cada proceso se ejecuta individualmente
durante un periodo de tiempo determinado. Si el proceso no finaliza en el tiempo asignado, se
suspende y se ejecuta otro proceso. Este intercambio de procesos se denomina conmutación de
contexto. El sistema operativo se encarga de controlar el estado de los procesos suspendidos.
4.1.2 Software De Aplicación
El Software de Aplicación es un programa informático diseñado para facilitar al usuario la
realización de un determinado tipo de trabajo. Posee ciertas características que le diferencia de un
sistema operativo (que hace funcionar al ordenador), de una utilidad (que realiza tareas de
mantenimiento o de uso general) y de un lenguaje (con el cual se crean los programas
informáticos). Suele resultar una solución informática para la automatización de ciertas tareas
complicadas como puede ser la contabilidad o la gestión de un almacén.
Dentro de las aplicaciones se pueden distinguir distintas versiones según su funcionalidad:
•
•
•
•
•
Freeware: son programas de libre distribución, gratuitos y no sujetos a ningún tipo de
limitación legal para su uso.
Shareware: tienen una funcionalidad limitada, es decir, se ejecutarán en nuestro
ordenador parcialmente. Así, puede que no tenga activas todas las opciones de menú o
que tenga un periodo de vigencia de un número de días concretos, tal lo cual dejará de
funcionar.
Beta: versiones previas de un programa, destinado a su comprobación de funcionamiento
real en ordenadores personales antes de su lanzamiento comercial.
Demo: software comercial destinado a mostrar al posible usuario sus características. Al
igual que los programas shareware, tienen limitadas las opciones de ejecución o el
periodo de validez.
Comerciales: son aquellas que se encuentran sujetas a su compra para poder usarlas en el
ordenador. Normalmente tras su adquisición debe procederse al registro del producto [1].
CAPÍTULO 4
63
Conceptos de la programación
Ciertas aplicaciones desarrolladas 'a medida' suelen ofrecer una gran potencia ya que están
exclusivamente diseñadas para resolver un problema específico. Otros, llamados paquetes
integrados de software, ofrecen menos potencia pero a cambio incluyen varias aplicaciones,
como un programa procesador de textos, de hoja de cálculo, base de datos, editor de imágenes,
reproductores de sonido y video, navegadores web, antivirus, compresores, seguridad, etc.
FUNDAMENTOS DE PROGRAMACIÓN
INTRODUCCIÓN A LA PROGRAMACIÓN
4.2 CONCEPTOS DE LA PROGRAMACION
Antes de iniciar con el proceso de programación, es conveniente tener claro algunos
conceptos preliminares respecto a ciertos conceptos relacionados con ella, que deben entenderse,
reconocerse y comprenderse.
Desde el punto de vista del usuario, un programa, son las especificaciones de un conjunto de
operaciones que debe llevar a cabo el computador para lograr resolver una determinada tarea.
Un programa se escribe en un lenguaje de programación, estos lenguajes permiten
simplificar la creación de programas debido a su fácil descripción de las instrucciones que ha de
ejecutar el procesador; en algunos casos, agrupando varias instrucciones y dando un solo nombre
al conjunto, de tal forma que la lista de operaciones se reduce considerablemente, resultando fácil
la comprensión y resolución de programas. También varios cientos de instrucciones simples se
pueden expresar con una lista de unas cuantas líneas. Finalmente, a la acción de realizar un
programa se le conoce como programación.
A menudo, el lenguaje de programación se denomina software de programación cuando se
emplea un término genérico, a fin de distinguirlo del hardware.
En conclusión, reuniendo estos tres conceptos podemos decir: Un programa se escribe en un
lenguaje de programación y a la actividad de expresar un algoritmo en forma de programa se le
denomina programación.
4.2.1 Definición De Programa
Un programa de ordenador o computadora (software) es una secuencia de instrucciones que
una computadora puede interpretar y ejecutar.
Para la elaboración de un programa se requiere de las siguientes fases:
•
•
•
•
•
•
Definición y análisis de problema.
Diseño de algoritmos.
Codificación
Depuración y verificación
Documentación.
Mantenimiento
Un programa al considerarse, como una secuencia de acciones (instrucciones) que manipulan
un conjunto de objetos (datos). Contendrá, por lo tanto, dos bloques para la descripción de estos
aspectos:
• Bloque de declaraciones: En él se especifican todos los objetos que utiliza el
programa (variables, constantes, tablas, registros, archivos, etcétera).
• Bloque de instrucciones: Constituido por el conjunto de operaciones que se han de
realizar para la obtención de los resultados deseados [2].
64
CAPÍTULO 4
INTRODUCCIÓN A LA PROGRAMACIÓN
FUNDAMENTOS DE PROGRAMACIÓN
4.2.2 Definición De Programación
Se llama programación a la creación de un programa de computadora, un conjunto concreto
de instrucciones que una computadora puede ejecutar. El programa se escribe en un lenguaje de
programación, aunque también se pueda escribir directamente en lenguaje de máquina, con cierta
dificultad. Un programa se puede dividir en diversas partes, que pueden estar escritas en
lenguajes distintos.
La programación de ordenadores debe perseguir tres objetivos fundamentales:
•
Corrección. Un programa es correcto si hace lo que debe hacer. Para determinar si un
programa hace lo que debe es muy importante especificar claramente qué debe hacer el
programa antes de desarrollarlo y una vez acabado compararlo con lo que realmente hace.
•
Claridad. Es muy importante que el programa sea lo más claro posible y legible posible
para mejorar el mantenimiento del software. Cuando se acaba de escribir el código del
programa, se deben buscar errores y corregirlos. Más concretamente, cuando el programa
está concluido, es necesario hacerle ampliaciones y/o modificaciones, según la demanda
de los usuarios, esta labor puede ser llevada acabo por el mismo programador que
implementó el programa o por otros.
•
Eficiencia, Debe consumir la menor cantidad de recursos posible. Normalmente al hablar
de eficiencia se suele hacer referencia al consumo de tiempo y/o memoria.
La eficiencia y la claridad de un programa pueden ser objetivos contrapuestos: se puede
conseguir mayor claridad sacrificando parte de la eficiencia o viceversa. Pero hay que tener en
cuenta que el tiempo del programador es caro, y que hoy en día el precio de los ordenadores es
razonable y cada vez son más baratos.
4.2.3 Definición De Lenguaje De Programación
Un lenguaje de programación es una técnica estándar de comunicación que permite expresar
las instrucciones que han de ser ejecutadas en una computadora. Consiste en un conjunto de
reglas sintácticas y semánticas que definen un programa informático.
Un lenguaje de programación permite a un programador especificar de manera precisa sobre
qué datos una computadora debe operar, cómo deben ser estos almacenados y transmitidos y, qué
acciones debe tomar bajo una variada gama de circunstancias. Todo esto, a través de un lenguaje
que intenta estar relativamente próximo al lenguaje humano o natural.
Un programa escrito en un lenguaje de programación necesita pasar por un proceso de
compilación, es decir, ser traducido al lenguaje de máquina, o ser interpretado para que pueda ser
ejecutado por el ordenador.
CAPÍTULO 4
65
FUNDAMENTOS DE PROGRAMACIÓN
INTRODUCCIÓN A LA PROGRAMACIÓN
4.3 DATOS
Todas las aplicaciones del software pueden colectivamente llamarse procesamiento de datos.
El software se construye para procesar datos: para transformar datos de una forma a otra, es
decir, para aceptar una entrada, manipularla de alguna forma y producir una salida.
4.3.1 Definición
Un dato es una representación simbólica (numérica, alfabética, etc.) de un atributo o
característica de una entidad. El dato no tiene valor semántico (sentido) en sí mismo, pero
convenientemente tratado (procesado) se puede utilizar en la realización de cálculos o toma de
decisiones.
Podemos definir un tipo de dato a partir de los valores permitidos y las operaciones que se
puedan llevar a cabo sobre estos valores.
4.3.2 Tipos De Datos
La tabla 4.1 lista los tipos de datos primitivos de Java. Los tipos primitivos son los bloques de
construcción de tipos más complicados. Al igual que sus lenguajes predecesores C y C++, Java
requiere que todas las variables tengan un tipo antes de que se puedan usar en un programa. Por
esta razón, caracterizamos a Java como un lenguaje de tipos estrictos.
resentación en memoria
A diferencia de C y C++, los tipos primitivos de Java son portátiles entre todas las
plataformas que reconocen a Java (Windows, Linux, Mac, etc.). Esto permite a los
programadores escribir los programas una sola vez sin saber en cuál plataforma de computadora
se ejecutará el programa [3].
Tipo
Bolean
Char
Valores
true o false
'\u0000' a '\uFFFF'
Byte
Short
Int
Long
-128 a +127
-32,768 a +32,767
-2,147,483,648 a +2,147,483,647
-9,223,372,036,854,775,808 a
+9,223,372,036,854,77 5 ,807
-3.40292347E+38 a +3.40292347E+38
-1.79769313486231570E+308 a
+ 1.79769313486231570E+308
Flota
Double
Estándar
(Conjunto de caracteres ISO Unicode)
(IEEE 754 de punto flotante)
(IEEE 754 de punto flotante)
Tabla 4.1 Los tipos de datos primitivos de Java.
66
CAPÍTULO 4
INTRODUCCIÓN A LA PROGRAMACIÓN
FUNDAMENTOS DE PROGRAMACIÓN
4.3.3 Identificadores
Un nombre de variable o de referencia es cualquier identificador válido. Un identificador es
una serie de caracteres que consiste en letras, dígitos, subrayados (_) y signos de dólar ($) que no
comienza con un dígito. Java permite identificadores de cualquier longitud, y es sensible a la
caja: las letras mayúsculas y minúsculas son diferentes, de modo que a2 y A2 son dos
identificadores distintos.
La selección de los nombres de variables o identificadores significativos ayuda a que los
programas se “autodocumenten”, es decir, es mas fácil entender los programas con solo leerlos,
sin tener que leer manuales o incluir demasiados comentarios.
Las palabras reservadas no pueden usarse como identificadores, es decir, como nombre de
variables. En la tabla 4.2 presentamos una lista completa de las palabras clave de Java [4].
Palabras Reservadas de Java
Abstract
boolean
Catch
char
Do
double
Final
finally
Implements
Import
Long
native
Private
protected
Static
super
Throw
throws
Void
volatile
break
class
else
float
instanceof
new
public
switch
transient
while
byte
continue
extends
for
int
null
return
synchronized
true
Palabras clave que están reservadas aunque Java no las usa
Byvalue
cast
const
future
Goto
Inner
operator
outer
Var
case
default
false
if
interface
package
short
this
try
generic
rest
Tabla 4.2 Palabras reservadas en Java
4.3.4 Almacenamiento, Direccionamiento Y Representación En Memoria
La memoria de ordenador es la parte del hardware que retiene durante cierto período de
tiempo información que necesita el sistema para funcionar correctamente.
En los programas en C y C++, los programadores a menudo tenían que escribir varias
versiones de los programas para trabajar con las numerosas plataformas de computadora porque
no se garantizaba que los tipos de datos primitivos serían idénticos en todas las computadoras.
Por ejemplo, un valor int en una máquina podría representarse con 16 bits (2 bytes) de memoria,
y un valor int en otra máquina podría representarse con 32 bits (4 bytes) de memoria. En Java, los
valores int siempre tienen 32 bits (4 bytes) [5].
CAPÍTULO 4
67
Sis
FUNDAMENTOS DE PROGRAMACIÓN
INTRODUCCIÓN A LA PROGRAMACIÓN
Tipo
Bolean
Char
Byte
Short
Int
Long
Flota
Double
Tamaño en bits
1
16
8
16
32
64
32
64
Tabla. 4.3 Tamaño de almacenamiento en memoria
Los nombres de variables como sum y number en realidad corresponden a posiciones en la
memoria de la computadora. Toda variable tiene un nombre, un tipo, un tamaño y un valor.
Ilustrémoslo con el siguiente enunciado:
number = Integer. parseInt ( o.toString () );
el valor tecleado por el usuario en el campo de texto se coloca en una posición de memoria a la
que el compilador asigna el nombre number. Supongamos que el usuario introduce el número 45
como valor para number. La computadora colocará 45 en la posición number como se muestra en
la figura 4.2 Siempre que un valor se coloca en una posición de memoria, este nuevo valor
sustituye al valor que estaba antes en esa posición. El valor anterior se destruye. Una vez que el
programa obtiene un valor, lo adiciona a la suma y coloca el resultado en la variable sum. El
enunciado:
sum = sum + number;
que realiza la suma también implica la destrucción de un valor. Esto ocurre cuando la suma
calculada de sum y number se coloca en la posición sum (sin considerar el valor que podría haber
estado ya en sum). Una vez calculada sum, la memoria queda como se ilustra en la figura 4.3.
Observe que el valor de la variable number aparece exactamente igual que antes de que lo usáramos en el cálculo de sum, Usamos el valor, pero no lo destruimos, cuando la computadora realizó
el cálculo. Por tanto, cuando se lee un valor de una posición de memoria, el proceso no es destructivo [6].
number
45
Fig. 4.2 Posición de memoria en la que se puede ver el nombre y el valor de una variable.
68
CAPÍTULO 4
INTRODUCCIÓN A LA PROGRAMACIÓN
FUNDAMENTOS DE PROGRAMACIÓN
Number
45
Sum
45
Fig. 4.3 Posiciones de memoria después de un cálculo
4.3.5 Sistema De Numeración Binaria Y Hexadecimal
En esta sección presentaremos los sistemas de numeración más importantes que usan los
programadores en Java, sobre todo cuando trabajan en proyectos de software que requieren una
interacción íntima con hardware en el "nivel de máquina". Entre los proyectos de esta índole
podemos mencionar los sistemas operativos, el software para trabajo con redes de computadoras,
compiladores, sistemas de bases de datos y aplicaciones que requieren alto rendimiento.
Cuando escribimos un entero como 227 o -63 en un programa en Java, se da por sentado que
el número está en el sistema de numeración decimal (base 10). Los dígitos del sistema de
numeración digital son 0, 1, 2, 3, 4, 5, 6, 7, 8 y 9. El dígito más bajo es 0 y el dígito más alto es 9,
uno menos que la base (10). Internamente, las computadoras usan el sistema de numeración
binario (base 2). El sistema de numeración binario tiene sólo dos dígitos, 0 Y l. El dígito más
bajo es 0 y el más alto es 1, uno menos que la base (2).
Como veremos, los números binarios tienden a ser mucho más largos que sus equivalentes
decimales. Para los programadores que trabajan con lenguajes de ensamblador y con lenguajes de
alto nivel como Java que permiten a los programadores bajar hasta el "nivel de máquina" resulta
laborioso trabajar con números binarios. Es por ello que se ha popularizado el uso de otros dos
sistemas, el sistema de numeración octal (base 8) y el sistema de numeración hexadecimal (base
16), pues permiten abreviar los números binarios.
En el sistema de numeración octal, los dígitos van del 0 al 7. Dado que tanto el sistema de
numeración binario como el octal tienen menos dígitos que el sistema decimal, sus dígitos son los
mismos que los dígitos correspondientes en el sistema decimal.
El sistema de numeración hexadecimal presenta un problema porque requiere 16 dígitos: un
dígito inferior de 0 y un dígito superior con un valor equivalente al 15 decimal (uno menos que la
base, 16). Por convención, usamos las letras de la A a la F para representar los dígitos
hexadecimales que corresponden a los valores decimales del 10 al 15. Así, en hexadecimal
podemos tener números como 876 que consisten exclusivamente en dígitos tipo decimal,
números como 8A55F que consisten en dígitos y letras y números como FFE que consisten
exclusivamente en letras. Ocasionalmente, un número hexadecimal deletreará una palabra común
como CABE o FABADA; esto puede parecer extraño a programadores acostumbrados a trabajar
con números.
CAPÍTULO 4
69
FUNDAMENTOS DE PROGRAMACIÓN
INTRODUCCIÓN A LA PROGRAMACIÓN
Todos estos sistemas de numeración emplean notación posicional: cada posición en la que se
escribe un dígito tiene un valor de posición distinto. Por ejemplo, en el número decimal 937
(llamamos al 9, el 3 y el 7 valores de símbolo) decimos que el 7 está escrito en la posición de las
unidades, el 3 está escrito en la posición de las decenas y el 9 está escrito en la posición de las
centenas. Observe que cada una de estas posiciones es una potencia de la base (base 10) y que
estas potencias comienzan en 0 y aumentan en 1 conforme nos movemos hacia la izquierda en el
número [7].
Dígito Binario
0
1
Digito Octal
0
1
2
3
4
5
6
7
Dígito Decimal
0
1
2
3
4
5
6
7
8
9
Dígito Hexadecimal
0
1
2
3
4
5
6
7
8
9
A (Valor decimal del 10)
B (Valor decimal del 11)
C (Valor decimal del 12)
D (Valor decimal del 13)
E (Valor decimal del 14)
F (Valor decimal del 15)
Tabla 4.4 Dígitos de los Sistemas de Numeración Binario, Octal, Decimal y Hexadecimal.
Atributo
Base
Dígito inferior
Dígito superior
Binario
2
0
1
Octal
8
0
7
Decimal
10
0
9
Hexadecimal
16
0
F
Tabla 4.5 Comparación de los Sistemas de Numeración Binaria, Octal, Decimal y Hexadecimal
Valores de posición en el Sistema de numeración Decimal
Dígito decimal
9
Nombre de posición
centenas
Valor de posición
100
Valor de posición como potencia de la base (10)
102
3
decenas
10
101
7
unidades
1
100
Tabla 4.6 Valores de posición en el Sistema de Numeración Decimal
En el caso de números decimales más grandes, las siguientes posiciones a la izquierda serían
la posición de los millares (10 a la tercera potencia), la posición de las decenas de millar (10 a la
cuarta potencia), la posición de las centenas de millar (10 a la quinta potencia), la posición de los
millones (10 a la sexta potencia), la posición de las decenas de millones (10 a la séptima
potencia), y así sucesivamente.
70
CAPÍTULO 4
INTRODUCCIÓN A LA PROGRAMACIÓN
FUNDAMENTOS DE PROGRAMACIÓN
En el número binario 101, decimos que el 1 de la extrema derecha está escrito en la posición
de las unidades, el 0 está escrito en la posición de los doses y el 1 de la izquierda está escrito en
la posición de los cuatros. Observe que cada una de estas posiciones es una potencia de la base
(base 2) y que dichas potencias comienzan en 0 y aumentan en 1 conforme nos movemos a la
izquierda en el número [8].
Valores de posición en el Sistema de numeración Binario
Dígito binario
1
Nombre de posición
cuatros
Valor de posición
4
Valor de posición como potencia de la base (2)
22
0
doses
2
21
1
unos
1
20
Tabla 4.7 Valores de posición en el Sistema de numeración Binario
En el caso de números binarios más grandes, las siguientes posiciones a la izquierda serían la
posición de los ochos (2 a la tercera potencia), la posición de los dieciseises (2 a la cuarta
potencia), la posición de los treinta y doses (2 a la quinta potencia), la posición de los sesenta y
cuatros (2 a la sexta potencia), y así sucesivamente.
En el número octal 425, decimos que el 5 está escrito en la posición de las unidades, el 2 está
escrito en la posición de los ochos y el 4 en la posición de los sesenta y cuatros. Observe que
cada una de estas posiciones es una potencia de la base (base 8) y que dichas potencias
comienzan en 0 y aumentan en 1 conforme nos movemos a la izquierda en el número [9].
Valores de posición en el Sistema de numeración Octal
Dígito Octal
4
Nombre de posición
sesenta y cuatros
Valor de posición
64
Valor de posición como potencia de la base (8)
82
2
ochos
8
81
5
unos
1
80
Tabla 4.8 Valores de posición en el Sistema de numeración octal
En el caso de números octa1es más grandes, las siguientes posiciones a la izquierda serían la
posición de los quinientos doces (8 a la tercera potencia), la posición de los cuatro mil noventa y
seises (8 a la cuarta potencia), la posición de los treinta y dos mil setecientos sesenta y ochos (8 a
la quinta potencia), y así sucesivamente.
En el número hexadecimal 3DA, decimos que la A está escrita en la posición de las unidades,
la D está escrita en la posición de los dieciseises y el 3 está escrito en la posición de los
doscientos cincuenta y seises. Observe que cada una de estas posiciones es una potencia de la
base (base 16) y que dichas potencias comienzan en 0 y aumentan en 1 conforme nos movemos a
la izquierda en el número [10].
Valores de posición en el Sistema de numeración Hexadecimal
Dígito Hexadecimal
3
Nombre de posición
doscientos
cincuenta y seises
Valor de posición
256
Valor de posición como potencia de la base (16) 162
D
dieciseises
A
unos
16
161
1
160
Tabla 4.9 Valores de posición en el sistema de numeración hexadecimal.
CAPÍTULO 4
71
FUNDAMENTOS DE PROGRAMACIÓN
INTRODUCCIÓN A LA PROGRAMACIÓN
En el caso de números hexadecimales más grandes, las siguientes posiciones a la izquierda
serían la posición de los cuatro mil noventa y seises (16 a la tercera potencia), la posición de los
sesenta y cinco mil quinientos treinta y seises (16 a la cuarta potencia), y así sucesivamente.
4.4 OPERADORES, OPERANDOS Y EXPRESIONES
Operadores Aritméticos.
Casi todos los programas realizan cálculos aritméticos. Los operadores aritméticos se
resumen en la Tabla 4.10. Tome nota del uso de varios símbolos especiales que no se emplean en
álgebra. El asterisco (*) indica multiplicación y el signo de porcentaje (%) es el operador de
residuo que veremos un poco más adelante. Los operadores aritméticos de la Tabla 4.10 son
operadores binarios. Por ejemplo, la expresión sum. + value contiene el operador binario + y los
dos operandos sum y value.
La división entera produce un cociente entero; por ejemplo, la evaluación de la expresión 7 /
4 produce 1, y la evaluación de la expresión 17 / 5 produce 3. Observe que cualquier parte
fraccionaria en la división entera simplemente se desecha (es decir, el cociente se trunca); no hay
redondeo. Java cuenta con el operador de residuo, %, que produce el residuo de la división
entera. El operador de residuo es un operador entero que sólo puede usarse con operadores
enteros. La expresión x % y produce el residuo que queda después de dividir x entre y. Así, 7
% 4 produce 3, y 17 % 5 produce 2.
Operación de Java
Suma
Resta
Multiplicación
División
Residuo
Operador
Aritmético
+
*
/
Expresión
Algebraica
f+7
P–c
bm
x/y o
%
x
y
o x÷y
r mod s
Expresión en Java
f+7
p–c
b*m
x/y
r%s
Tabla 4.10 Operadores aritméticos.
Operadores de asignación.
Java proporciona varios operadores de asignación cuyo propósito es abreviar las expresiones
de asignación. Por ejemplo, el enunciado:
J = J + 3;
se puede abreviar con el operador de suma y asignación += así:
J += 3;
El operador += suma el valor de la expresión que está a la derecha del operador al valor de la
variable que está a la izquierda del operador y almacena el resultado en la variable que está a la
izquierda del operador. Cualquier enunciado de la forma:
72
CAPÍTULO 4
INTRODUCCIÓN A LA PROGRAMACIÓN
FUNDAMENTOS DE PROGRAMACIÓN
variable = variable operador expresión;
donde operador es uno de los operadores binarios +, -, *, / o % (u otros que veremos más
adelante), se puede escribir en la forma:
variable operador= expresión;
Por tanto, la asignación J += 3 suma 3 a J. En la figura 4.11 se muestran los operadores de
asignación aritmética, expresiones de ejemplo de uso de dichos operadores, y explicaciones [11].
Operador de
asignación
Expresión de
muestra
Explicación
Suponga int C=3, D=5, E=4, F=6, G=12;
+=
C += 7
-=
D -= 4
*=
E *= 5
/=
F /= 3
%=
G %= 9
Asigna
C=C+7
D=D–4
E=E*5
F=F/3
G=G%9
10 a C
1aD
20 a E
2aF
3aG
Tabla 4.11 Operadores de asignación aritmética.
Operadores de incremento y decremento.
Java ofrece el operador de incremento unario ++, y el operador de decremento unario --,
que se resumen en la tabla 4.12. Si una variable c se incrementa en 1, se puede utilizar el
operador de incremento ++ en lugar de las expresiones c = c + 10 c += 1. Si el operador de
incremento o decremento se coloca antes de una variable, decimos que es un operador de
preincremento o de predecremento, respectivamente. Si el operador de incremento o decremento
se coloca después de la variable, decimos que es un operador de postincremento o de
postdecremento, respectivamente. Cuando preincrementamos (o predecrementamos) una
variable, hacemos que se sume (reste) 1 a la variable y luego se use el nuevo valor de la variable
en la expresión en la que aparece. Cuando postincrementamos (postdecrementamos) una variable,
hacemos que se use el valor actual de dicha variable en la expresión en la que aparece, y luego se
sume (reste) 1 al valor de la variable.
Operador
++
Llamado
Preincremento
Expresión de muestra
++A
++
Posincremento
A++
--
Predecremento
--B
--
Posdecremento
B--
Explicación
Incrementar A en 1 y luego usar el nuevo
valor de A en la expresión en la que A reside.
Usar el valor actual de A en la expresión en la
que reside y luego incrementar A en l.
Decrementar B en 1 y luego usar el nuevo
valor de B en la expresión en la que B reside.
Usar el valor actual de B en la expresión en la
que reside y luego decrementar B en l.
Tabla 4.12 Operadores de incremento y decremento
Operadores de igualdad y relaciónales.
Todos los operadores relacionales tienen le mismo nivel de precedencia y se asocian de
izquierda a derecha. Ambos operadores de igualdad tienen el mismo nivel de precedencia, que es
CAPÍTULO 4
73
FUNDAMENTOS DE PROGRAMACIÓN
INTRODUCCIÓN A LA PROGRAMACIÓN
mas bajo que la precedencia de los operadores relaciónales. Los operadores de igualdad también
se asocian de izquierda a derecha [12].
Operador de igualdad
o relacional
algebraico estándar
Operador de igualdad
o relacional en Java
Ejemplo de
condición en Java
Significado de la
condición en Java
Operadores de Igualdad
=
≠
==
!=
x == y
x != y
x es igual a y
x no es igual a y
Operador Relacionales
>
<
≥
≤
>
<
>=
<=
x>y
x>y
x >= y
x<= y
x es mayor que y
x es menor que y
x es mayor o igual que y
x es menor e igual que y
Tabla 4.13 Operadores de igualdad y relacionales
Operador condicional ?:
Este operador, tomado de C/C++, permite realizar bifurcaciones condicionales sencillas. Su
forma general es la siguiente:
booleanExpression ? res1 : res2
donde se evalúa booleanExpression y se devuelve res1 si el resultado es true y res2 si el
resultado es false. Es el único operador ternario (tres argumentos) de Java. Como todo operador
que devuelve un valor puede ser utilizado en una expresión. Por ejemplo las sentencias:
x=1 ; y=10; z = (x<y) ? x+3 : y+8;
asignarían a z el valor 4, es decir x+3.
Operadores lógicos.
nes
Los operadores lógicos se utilizan para construir expresiones lógicas, combinando valores
lógicos (true y/o false) o los resultados de los operadores relacionales. La Tabla 4.14 muestra los
operadores lógicos de Java. Debe notarse que en ciertos casos el segundo operando no se evalúa
porque no es necesario (si ambos tienen que ser true y el primero es false ya se sabe que la
condición de que ambos sean true no se va a cumplir). Esto puede traer resultados no deseados y
por eso se han añadido los operadores (&) y (|) que garantizan que los dos operandos se evalúan
siempre [13].
74
CAPÍTULO 4
INTRODUCCIÓN A LA PROGRAMACIÓN
FUNDAMENTOS DE PROGRAMACIÓN
Operador
&&
Nombre
AND
Utilización
op1 && op2
||
OR
Op1 || op2
!
&
|
Negación
AND
OR
! op
Op1 & op2
Op1 | op2
Resultado
true si op1 y op2 son true. Si op1 es false ya no se
evalúa op2
true si op1 u op2 son true. Si op1 es true ya no se
evalúa op2
true si op es false y false si op es true
true si op1 y op2 son true. Siempre se evalúa op2
true si op1 u op2 son true. Siempre se evalúa op2
Tabla 4.14 Operadores lógicos
Operador de concatenación de cadenas de caracteres (+).
El operador más (+) se utiliza también para concatenar cadenas de caracteres. Por ejemplo,
para escribir una cantidad con un rótulo y unas unidades puede utilizarse la sentencia:
System.out.println("El total asciende a " + result + " unidades");
donde el operador de concatenación se utiliza dos veces para construir la cadena de caracteres
que se desea imprimir por medio del método println(). La variable numérica result es convertida
automáticamente por Java en cadena de caracteres para poderla concatenar. En otras ocasiones se
deberá llamar explícitamente a un método para que realice esta conversión.
Operadores que actúan a nivel de bits.
Java dispone también de un conjunto de operadores que actúan a nivel de bits. Las
operaciones de bits se utilizan con frecuencia para definir señales o flags, esto es, variables de
tipo entero en las que cada uno de sus bits indican si una opción está activada o no. La Tabla 4.15
muestra los operadores de Java que actúan a nivel de bits [14].
Operador
>>
<<
>>>
&
|
^
~
Utilización
op1>>op2
op1<<op2
op1>>>op2
op1&op2
op1|op2
op1^op2
~op2
Resultado
Desplaza los bits de op1 a la derecha una distancia op2
Desplaza los bits de op1 a la izquierda una distancia op2
Desplaza los bits de op1 a la derecha una distancia op2 (positiva)
Operador AND a nivel de bits
Operador OR a nivel de bits
Operador XOR a nivel de bits
Operador complemento
Tabla 4.15 Operadores a nivel de bits.
En binario, las potencias de dos se representan con un único bit activado. Por ejemplo, los
números (1, 2, 4, 8, 16, 32, 64, 128) se representan respectivamente de modo binario en la forma
(00000001, 00000010, 00000100, 00001000, 00010000, 00100000, 01000000, 10000000),
utilizando sólo 8 bits. La suma de estos números permite construir una variable flags con los bits
activados que se deseen. Por ejemplo, para construir una variable flags que sea 00010010 bastaría
hacer flags=2+16. Para saber si el segundo bit por la derecha está o no activado bastaría utilizar la
sentencia [15],
if (flags & 2 == 2) {...}
CAPÍTULO 4
75
P
FUNDAMENTOS DE PROGRAMACIÓN
INTRODUCCIÓN A LA PROGRAMACIÓN
La Tabla 4.16 muestra los operadores de asignación a nivel de bits.
Operador
&=
|=
^=
<<=
>>=
>>>=
Utilización
Op1 &= op2
Op1 |= op2
Op1 ^= op2
Op1 <<= op2
Op1 >>= op2
Op1 >>>= op2
Equivalente a
Op1 = op1 & op2
Op1 = op1 | op2
Op1 = op1 ^ op2
Op1 = op1 << op2
Op1 = op1 >> op2
Op1 = op2 >>> op2
Tabla 4.16. Operadores de asignación a nivel de bits.
4.5 PRIORIDAD DE OPERADORES, EVALUACIÓN DE EXPRESIONES
Las expresiones aritméticas en Java deben escribirse en forma de línea recta para facilitar la
introducción de programas en la computadora. Así, las expresiones como “a dividido entre b” se
deben escribir como a / b de modo que todas las constantes, variables y operadores aparezcan en
una línea recta. La notación algebraica
a
b
generalmente no es aceptable para los compiladores, aunque existen algunos paquetes de
software de aplicación especial que reconocen una notación más natural para las expresiones
matemáticas complejas.
Usamos paréntesis en las expresiones Java de la misma forma que en las expresiones
algebraicas. Por ejemplo, si queremos multiplicar a por la cantidad b + c, escribimos:
a * (b + c)
Java aplica los operadores de las expresiones aritméticas en un orden preciso determinado
por las siguientes reglas de precedencia de operadores, que generalmente son las mismas que se
siguen en álgebra:
1. Los operadores de expresiones contenidas dentro de pares de paréntesis se evalúan primero.
Así, el programador puede usar paréntesis para forzar la evaluación en cualquier orden
que desee. Se dice que los paréntesis están en "el nivel de precedencia más alto". En caso de
haber paréntesis anidados, o incrustados, se aplican primero los operadores del par de
paréntesis más interno.
2. A continuación se aplican las operaciones de multiplicación, división y residuo. Si una expresión contiene varias operaciones de multiplicación, división y residuo, los operadores se
aplican de izquierda a derecha. Decimos que la multiplicación, la división y el residuo están
en el mismo nivel de precedencia.
es
76
CAPÍTULO 4
INTRODUCCIÓN A LA PROGRAMACIÓN
FUNDAMENTOS DE PROGRAMACIÓN
3. Las operaciones de suma y resta se aplican al final. Si una expresión contiene varias operaciones de suma y resta, los operadores se aplican de izquierda a derecha. La suma y la resta
también tienen el mismo nivel de precedencia.
Las reglas de precedencia de operadores permiten a Java aplicar los operadores en el orden
correcto. Cuando decimos que los operadores se aplican de izquierda a derecha, nos estamos
refiriendo a la asociatividad de los operadores. Veremos que algunos operadores se asocian de
derecha a izquierda. En la tabla 4.17 se resumen estas reglas de precedencia de operadores [16].
Operador(es)
()
Operador(es)
Paréntesis
* / %
Multiplicación
División
Residuo
Suma
Resta
+-
Orden de Evaluación (Precedencia)
Se evalúan primero. Si los paréntesis están
anidados, la expresión dentro del par más
interno se evalúa primero. Si hay varios pares
de paréntesis "en el mismo nivel" (es decir,
no anidados), se evalúan de izquierda a
derecha. Se evalúan en segundo lugar. Si hay
varios, se evalúan de izquierda a derecha
Se evalúan en segundo lugar. Si hay varios,
se evalúan de izquierda a derecha.
Se evalúan al último. Si hay varios, se
evalúan de izquierda a derecha.
Tabla 4.17 Precedencia de los operadores aritméticos.
Consideremos ahora varias expresiones a la luz de las reglas de precedencia de operadores.
Cada ejemplo presenta una expresión algebraica y su equivalente en Java.
El siguiente es un ejemplo de media aritmética (promedio) de cinco términos:
Álgebra:
m=
a + b + c + d + e
5
Java:
m=
( a + b + c + d + e ) / 5
los paréntesis son necesarios porque la división tiene mayor precedencia que la suma.
Necesitamos dividir la cantidad completa (a + b + c + d + e) entre 5. Si omitimos erróneamente
los paréntesis, obtendremos a + b + c + d + e / 5, que se evalúa así:
a + b + c + d +
e
5
el siguiente es un ejemplo de la ecuación de una línea recta:
Álgebra: y = mx + b
Java: y = m * x + b;
no necesitamos paréntesis. La multiplicación se aplica primero porque tiene mayor precedencia
que la suma.
CAPÍTULO 4
77
FUNDAMENTOS DE PROGRAMACIÓN
INTRODUCCIÓN A LA PROGRAMACIÓN
El siguiente ejemplo contiene operaciones de residuo (%), multiplicación, división, suma y
resta:
Álgebra:
z = p r % q + w / x - y
Java: z = p
*
r
%
q
2
1
+
w
4
/
x
3
-
y;
5
Los números encerrados en círculos bajo el enunciado indican el orden en que Java aplica los
operadores. La multiplicación, el residuo y la división se evalúan primero en orden de izquierda a
derecha (esto es, se asocian de izquierda a derecha) puesto que tienen mayor precedencia que la
suma y la resta. A continuación se aplican la suma y la resta, también de izquierda a derecha.
a * (b + c) + c * (d + e)
no contiene paréntesis anidados. Más bien, decimos que los paréntesis están "en el mismo nivel".
A fin de entender mejor las reglas de precedencia de operadores, consideremos la evaluación
de un polinomio de segundo grado.
y = a
*
1
x
*
2
x
+
4
b
*
3
x
+
c;
5
Los números encerrados en círculos bajo el enunciado indican el orden en que Java aplica los
operadores. No existe un operador aritmético para la exponenciación en Java, de modo que
representamos x2 como x * x.
Al igual que en álgebra, es aceptable colocar paréntesis innecesarios en una expresión para
hacerla más clara. Estos paréntesis innecesarios también se llaman paréntesis redundantes [17].
Por ejemplo, la expresión de asignación anterior podría escribirse con paréntesis así:
y = (a * x * x) + (b * x) + c;
78
CAPÍTULO 4
Estructura básica de un programa
No todas las expresiones con varios pares de paréntesis contienen paréntesis anidados. Por
ejemplo, la expresión:
Proceso de creación de un ejecutable
INTRODUCCIÓN A LA PROGRAMACIÓN
FUNDAMENTOS DE PROGRAMACIÓN
4.6 ESTRUCTURA BÁSICA DE UN PROGRAMA
Los nombres de Java son sensibles a las letras mayúsculas y minúsculas. Así, las variables
masa, Masa y MASA son consideradas variables completamente diferentes. Las reglas del
lenguaje respecto a los nombres de variables son muy amplias y permiten mucha libertad al
programador, pero es habitual seguir ciertas normas que facilitan la lectura y el mantenimiento de
los programas de ordenador. Se recomienda seguir las siguientes instrucciones:
1. En Java es habitual utilizar nombres con minúsculas, con las excepciones que se
indican en los puntos siguientes.
2. Cuando un nombre consta de varias palabras es habitual poner una a continuación de
otra, poniendo con mayúscula la primera letra de la palabra que sigue a otra
(Ejemplos: elMayor(), VentanaCerrable, RectanguloGrafico).
3. Los nombres de clases e interfaces comienzan siempre por mayúscula (Ejemplos:
Geometría, Rectángulo, Dibujable, Graphics, Vector, Enumeration).
4. Los nombres de objetos, los nombres de métodos y variables miembro, y los
nombres de las variables locales de los métodos, comienzan siempre por minúscula
(Ejemplos: main(), dibujar(), numRectangulos, x, y, r).
5. Los nombres de las variables finales, es decir de las constantes, se definen siempre
con mayúsculas (Ejemplo: PI)
Estructura general de un programa Java.
Un fichero fuente (*.java) puede contener más de una clase, pero sólo una puede ser public.
El nombre del fichero fuente debe coincidir con el de la clase public (con la extensión *.java). Si
por ejemplo en un fichero aparece la declaración (public class MiClase {...}) entonces el nombre
del fichero deberá ser MiClase.java. Es importante que coincidan mayúsculas y minúsculas ya
que MiClase.java y miclase.java serían clases diferentes para Java. Si la clase no es public, no es
necesario que su nombre coincida con el del fichero. Una clase puede ser public o package
(default), pero no private o protected. Estos conceptos se explican posteriormente. De ordinario
una aplicación está constituida por varios ficheros *.class. Cada clase realiza unas funciones
particulares, permitiendo construir las aplicaciones con gran modularidad e independencia entre
clases. La aplicación se ejecuta por medio del nombre de la clase que contiene la función main()
(sin la extensión *.class). Las clases de Java se agrupan en packages, que son librerías de clases.
Si las clases no se definen como pertenecientes a un package, se utiliza un package por defecto
(default) que es el directorio activo. Los packages se estudian con más detenimiento en siguientes
apartados [18].
4.7 PROCESO DE CREACIÓN DE UN EJECUTABLE
El aprendizaje de todo lenguaje de programación pasa por la etapa obligatoria de realizar un
primer programa, lo más sencillo posible, que muestre:
•
•
•
La estructura sintáctica mínima a la que obliga el lenguaje.
La manera de introducir, traducir y ejecutar el programa.
La validez del entorno en el que se sustentarán los desarrollos (para nosotros el SDK).
CAPÍTULO 4
79
FUNDAMENTOS DE PROGRAMACIÓN
INTRODUCCIÓN A LA PROGRAMACIÓN
Nuestro programa únicamente escribirá el texto "Hola mundo", pero servirá para asentar
cada uno de los puntos expuestos en el párrafo anterior. '
Pasos detallados:
Paso 1. Abrir un editor de texto (por ejemplo el Block de Notas):
Paso 2. Introducir el código (sin incluir los números de línea):
1
2
3
4
5
public class HolaMundo {
public static void main (String[] args) {
System.out.println(“Hola Mundo”);
}
}
Es necesario respetar la condición mayúscula/minúscula de cada letra del programa, puesto
que en este lenguaje una letra en minúscula es diferente a su correspondiente en mayúsculas.
La línea 1 define la clase (objeto) HolaMundo. Java es un lenguaje orientado a objetos, donde
todas las aplicaciones se estructuran en grupos de objetos (clases en Java). La clase se define
como public (pública), indicando que será accesible a cualquier otra clase. El último carácter de
la línea 1 es una llave de comienzo; indica el comienzo de la clase. La clase termina en la línea 5
(con la llave de fin).
El contenido del método main, en nuestro ejemplo, se encuentra delimitado entre la llave de
inicio situada en la línea 2 y la llave de fin situada en la línea 4. Únicamente contiene la
instrucción situada en la línea 3, que imprime el literal (texto) que aparece entre comillas y como
parámetro de la llamada al método println. Obsérvese el carácter ";" que se debe utilizar
obligatoriamente para separar instrucciones.
El sangrado de cada una de las líneas no es necesario, pero resulta muy conveniente para
hacer más legible los programas. Su función principal es facilitar la identificación visual de cada
bloque de código.
Paso 3. Grabar el código en el fichero HolaMundo.java y con formato de texto:
80
CAPÍTULO 4
Proceso de creación de un ejecutable
La línea 2 define un método (procedimiento, subrutina) de la clase HolaMundo. Este método
es especial, le indica al entorno de Java el comienzo de nuestra aplicación. Su nombre
(identificador) es main (método principal). Este método siempre lleva un parámetro String[] que
identifica un conjunto de literales (textos); por ahora, no emplearemos esta característica, aunque
debemos respetar su sintaxis. El método es público y estático (atributos que veremos en detalle en
los temas siguientes).
Proceso de creación de un ejecutable
INTRODUCCIÓN A LA PROGRAMACIÓN
FUNDAMENTOS DE PROGRAMACIÓN
Fig. 4.4 Guardar archivo HolaMundo.java
Es absolutamente necesario que la extensión del archivo sea .java, es decir, que esté grabado
con formato de texto y que el nombre de la clase coincida EXACTAMENTE con el nombre del
archivo (en nuestro caso HolaMundo). Finalmente, en el Block de Notas nos quedará una ventana
similar a la siguiente:
Fig. 4.5 Código fuente archivo HolaMundo.java
Paso 4. Compilar el programa:
En la ventana de MS-DOS, en el directorio donde hemos grabado el fichero
HolaMundo.java, debemos ejecutar el compilador (javac) poniendo como argumento el nombre
del fichero CON LA EXTENSIÓN .java (javac HolaMundo.java). Si existen errores, se obtendrá
un listado de ellos. Si no los hay, como en nuestro caso, no aparece nada:
Tras la compilación con éxito del programa, obtenemos el fichero objeto HolaMundo.class:
Paso 5. Ejecutar el programa:
En el directorio en el que estamos trabajando, ejecutar el intérprete de Java (java)
suministrando como parámetro el nombre de la clase (HolaMundo) SIN la extensión .class (java
CAPÍTULO 4
81
FUNDAMENTOS DE PROGRAMACIÓN
INTRODUCCIÓN A LA PROGRAMACIÓN
HolaMundo) [19]. Nos aparecerá el texto "Hola Mundo" correspondiente a la impresión de datos
por consola que codificamos en la línea 3 de nuestro programa:
Fig. 4.6 Compilación y ejecución de archivo HolaMundo.java
82
CAPÍTULO 4
INTRODUCCIÓN A LA PROGRAMACIÓN
FUNDAMENTOS DE PROGRAMACIÓN
REFERENCIAS BIBLIOGRÁFICAS
[1]
[2]
[3]
[4]
[5]
[6]
[7]
[8]
[9]
[10]
[11]
[12]
[13]
[14]
[15]
[16]
[17]
[18]
[19]
http://www.educa.aragob.es/cursoryc/ordenador1/modulo4/unidad4.htm
http://www.fing.uach.mx/examenes/DisAlgoritmos/investiga/tema1.html
Deitel y Deitel. 1998. Como programar en Java. Prentice Hall. p. 94-95.
Deitel y Deitel. 1998. Como programar en Java. Prentice Hall. p. 66.
Deitel y Deitel. 1998. Como programar en Java. Prentice Hall. p. 94-95.
Deitel y Deitel. 1998. Como programar en Java. Prentice Hall. p. 34.
Deitel y Deitel. 1998. Como programar en Java. Prentice Hall. Anexos pp. 977-978.
Deitel y Deitel. 1998. Como programar en Java. Prentice Hall. Anexos pp. 979.
Deitel y Deitel. 1998. Como programar en Java. Prentice Hall. Anexos p. 979.
Deitel y Deitel. 1998. Como programar en Java. Prentice Hall. Anexos p. 980.
Deitel y Deitel. 1998. Como programar en Java. Prentice Hall. p. 91
Deitel y Deitel. 1998. Como programar en Java. Prentice Hall. p. 39
García de Jalón, J. 1999. Aprenda Java como si estuviera en primero. Universidad
Navarra. p.27.
García de Jalón, J. 1999. Aprenda Java como si estuviera en primero. Universidad
Navarra. p.27.
García de Jalón, J. 1999. Aprenda Java como si estuviera en primero. Universidad
Navarra. p.28
Deitel y Deitel. 1998. Como programar en Java. Prentice Hall. p. 36
Deitel y Deitel. 1998. Como programar en Java. Prentice Hall. p. 37-38
García de Jalón, J. 1999. Aprenda Java como si estuviera en primero. Universidad
Navarra. p.19.
Bobadilla. Java a través de ejemplos. p. 8
CAPÍTULO 4
de
de
de
de
83
Descargar