Sie sind auf Seite 1von 51

Recopilado por: Juan Manuel Ucan Cih

1




Apuntes
Fundamentos de Programacin
Ingeniera en Sistemas Computacionales
2014

Recopilado por: Juan Manuel Ucan Cih
i
Tabla de contenido
1. Conceptos bsicos ....................................................................................................................... 1
1.1 Clasificacin del software ...................................................................................................... 1
1.1.1 Software de sistemas ....................................................................................................... 1
1.1.2 Software de aplicacin .................................................................................................... 1
1.2 Conceptos de programacin ................................................................................................... 1
1.2.1 Definicin de programa ................................................................................................... 1
1.2.2 Definicin de programacin ............................................................................................ 1
1.2.3 Definicin de lenguaje de programacin.......................................................................... 1
2.- Algoritmos ................................................................................................................................. 2
2.1 Terminologa empleada en algoritmos ............................................................................. 2
2.1.1 Definicin de problema. .............................................................................................. 2
2.1.2 Definicin de algoritmo ............................................................................................... 2
2.1.3 Caractersticas de los algoritmos: .............................................................................. 2
2.2 Metodologa de solucin de problemas............................................................................ 2
2.2.1 Identificacin del problema ......................................................................................... 3
2.2.2 Planteamiento de alternativas de solucin ............................................................... 3
2.2.3 Eleccin de una alternativa ........................................................................................ 3
2.2.4 Desarrollo de la solucin ............................................................................................ 3
2.2.5 Evaluacin de la solucin ........................................................................................... 3
2.3 Diagramas ........................................................................................................................... 3
2.3.1 Diagramas de entrada-proceso-salida ...................................................................... 3
2.3.2 Diagramas de flujo ...................................................................................................... 4
2.3.3 Ejemplos de uso de los diagramas de flujo .............................................................. 5
2.4 Pseudocdigo ......................................................................................................................... 8
2.5 Diseo algortmico de las funciones ....................................................................................... 8
3. Introduccin a la programacin .................................................................................................... 9
3.1 Datos ..................................................................................................................................... 9
3.1.1 Definicin ....................................................................................................................... 9
3.1.2 Tipos de datos ................................................................................................................. 9
3.1.3 Identificadores ...............................................................................................................10
3.2 Operadores, operandos y expresiones. ...................................................................................11
3.3 Prioridad de operadores, evaluacin de expresiones ..............................................................14
3.4 Estructura bsica de un programa ..........................................................................................14
3.5 Compilacin .........................................................................................................................15
3.6 Entrada y salida de datos .......................................................................................................16
4. Control de flujo ..........................................................................................................................17
Recopilado por: Juan Manuel Ucan Cih
ii
4.1 Estructuras secuenciales ........................................................................................................17
4.2 Estructuras selectivas ............................................................................................................18
4.2.1 Selectiva simple .............................................................................................................18
4.2.2. Selectiva doble ..............................................................................................................19
4.2.3 Selectiva anidada ...........................................................................................................21
4.2.4 Selectiva mltiple ...........................................................................................................22
4.2.5 try/catch .........................................................................................................................23
4.3. Estructuras de repeticin. .....................................................................................................25
4.3.1 while ..............................................................................................................................25
4.3.2 do-while .........................................................................................................................27
4.3.3 for ..................................................................................................................................29
5. Arreglos ..................................................................................................................................31
5.1 Arreglos unidimensionales, bidimensionales y multidimensionales .......................................31
5.1.1 Arreglos de una dimensin .............................................................................................31
5.1.2 Arreglos bidimensionales ...............................................................................................32
5.1.3 Arreglos multidimensionales ..........................................................................................34
5.2 Cadenas de caracteres ...........................................................................................................34
Ejercicios .......................................................................................................................................37
Unidad 3: Introduccin a la Programacin ..................................................................................37
Unidad 4: Control de flujo ..........................................................................................................38
Unidad 5: Arreglos .....................................................................................................................43
Bibliografa ....................................................................................................................................48









Recopilado por: Juan Manuel Ucan Cih
1
1. Conceptos bsicos
1.1 Clasificacin del software
1.1.1 Software de sistemas
Al resultado de la programacin de sistemas se le conoce como software de base o software de
sistemas. Al software de sistemas pertenecen los programas cuya finalidad es servir a otros
programas y ejecutar funciones comunes para todos los usuarios de la computadora.
El software de sistemas implementa funciones de control que permiten al software de aplicacin
comunicarse con otros elementos del software.
Entre los programas que pertenecen al software de sistemas se encuentran: los sistemas operativos,
compiladores, ensambladores, cargadores, manejadores de bases de datos, etc.
1.1.2 Software de aplicacin
El software de aplicacin implementa los procedimientos requeridos para realizar las funciones de
procesamiento de la informacin. El software de aplicacin es el software especfico para
aplicaciones particulares de los usuarios de un sistema de cmputo. Su utilizacin se restringe a
cierto mbito (a diferencia del software de sistemas). Normalmente, en la codificacin del software
de aplicacin no se utiliza un lenguaje de bajo nivel, sino que se codifican en lenguajes de alto nivel
y se traducen ya sea por compiladores o por intrpretes (los cuales forman parte del software de
sistemas). Se puede decir que el software de aplicacin se apoya en el software de sistemas, lo cual
no puede decirse en sentido inverso.
1.2 Conceptos de programacin
1.2.1 Definicin de programa
Un programa es un conjunto de instrucciones internas, utilizadas para ejecutarse en una
computadora y producir un resultado concreto.
1.2.2 Definicin de programacin
La programacin es el proceso de escribir programas para computadora. Generalmente, los
programas para computadora se escriben en lenguajes de alto nivel o en lenguaje ensamblador (bajo
nivel).
1.2.3 Definicin de lenguaje de programacin
Se puede definir a un lenguaje de programacin como un lenguaje que est formado por un
subconjunto de smbolos y palabras pertenecientes a un lenguaje natural. Aunque el lenguaje natural
comnmente utilizado para crear lenguajes de programacin es el ingls, con UNICODE es posible
usar caracteres de todos los lenguajes naturales existentes.

Recopilado por: Juan Manuel Ucan Cih
2
2.- Algoritmos
El eje central de la metodologa para resolver problemas es el algoritmo. Un algoritmo es un mtodo
para resolver un problema. La resolucin de un problema exige el diseo de un algoritmo que
resuelva el problema, como lo muestra la siguiente figura:

Pasos para la resolucin de un problema
1. Diseo del algoritmo que describe la secuencia ordenada de pasos sin ambigedades, que
conducen a la solucin de un problema dado. (Anlisis del problema y desarrollo del
algoritmo).
2. Expresar el algoritmo como un programa en un lenguaje adecuado. (Fase de codificacin).
3. Ejecucin y validacin del programa por la computadora.
2.1 Terminologa empleada en algoritmos
2.1.1 Definicin de problema.
Conjunto de hechos o circunstancias que dificultan la consecucin de algn objetivo.
2.1.2 Definicin de algoritmo
Conjunto ordenado y finito de operaciones que permite hallar la solucin de un problema.
2.1.3 Caractersticas de los algoritmos:
1. Preciso. Indicar el orden de realizacin de cada paso.
2. Definido. Si se sigue un algoritmo dos veces, se debe obtener el mismo resultado
cada vez.
3. Finito. Si se sigue un algoritmo se debe terminar en algn momento; es decir, debe
tener un nmero finito de pasos.
2.2 Metodologa de solucin de problemas
El trmino mtodo se define como un conjunto de operaciones ordenadas con que se
pretende obtener un resultado. La metodologa es la ciencia que aplica este mtodo.
Existen muchos tipos de metodologas, como la metodologa de la investigacin, la
metodologa de enseanza-aprendizaje, etc. Sin embargo, en estos apuntes se habla
especficamente de la solucin de problemas mediante el uso de la computadora.

La resolucin de problemas consta de cinco etapas:
Recopilado por: Juan Manuel Ucan Cih
3
2.2.1 Identificacin del problema
Entender exactamente en que consiste el problema y qu tipo de resultado se solicita.
Adems, se debe identificar los datos de entrada.
2.2.2 Planteamiento de alternativas de solucin
Se deben plantear varias posibles soluciones ya que la solucin de un problema puede
obtenerse por distintas vas.
2.2.3 Eleccin de una alternativa
Analizar cada alternativa para elegir la ms adecuada tomando en cuenta qu
caractersticas tiene el problema y qu caractersticas debe tener la solucin, as como los
elementos, datos e informacin con la que se cuenta.
2.2.4 Desarrollo de la solucin
A partir de los datos relacionados con la alternativa elegida, se aplican las operaciones
necesarias para solucionar el problema. Las operaciones deben llegar a la solucin por el
camino ms corto para garantizar la mayor eficiencia en el funcionamiento. Se pueden
emplear diagramas de flujo y luego escribirse de forma clara y precisa para que sea
entendida por todos.
2.2.5 Evaluacin de la solucin
Consiste en determinar que la solucin obtenida es lo que se esperaba lograr
comprobando que el resultado sea correcto. Es posible que la experiencia obtenida al
resolver el problema permita obtener nuevas ideas para resolverlo de forma ms sencilla o
eficiente; en este caso lo que se hace es optimizar la solucin.
2.3 Diagramas
Los algoritmos se pueden representar mediante diagramas y para ello se utilizan smbolos
que representan determinadas operaciones. En computacin existen bsicamente dos
tipos de diagramas: diagramas de entrada-proceso-salida y diagramas de flujo.
2.3.1 Diagramas de entrada-proceso-salida
Son un esquema muy general que muestra la entrada, el proceso y la salida de un
algoritmo.


a) Entrada. Cules son los datos que se procesarn?
b) Proceso. Cules son las operaciones que se realizarn con los datos?
c) Salida. Cul es la informacin o resultados que se obtendrn?
Recopilado por: Juan Manuel Ucan Cih
4
2.3.2 Diagramas de flujo
Diagrama que muestra detalladamente la secuencia de pasos o actividades a realizar para
solucionar un problema o ejecutar un procedimiento. En el siguiente cuadro se muestra la
simbologa que se utilizar en esta asignatura para resolver problemas mediante
diagramas de flujo.
Diagramas de flujo
Smbolo Significado

Inicio/Fin. Determina el inicio y fin de un algoritmo.



Entrada. Representa el ingreso de los datos en un programa.

Proceso. Representa las operaciones que se efectan para obtener el
resultado.


Salida por impresora / pantalla. Se utiliza cuando se desea obtener el
resultado en papel o en pantalla.

Decisin. Representa las operaciones de tipo lgico (comparacin) que
contenga el algoritmo.
Los smbolos matemticos ms comunes a utilizar son:
> Mayor
< Menor
= Igual
Diferente
>= Mayor o igual
<= Menor o igual

Conector. Se utiliza para conectar bloques del diagrama cuando la
solucin es grande y es necesario dividirlo.

Lneas de flujo/direccin. Indican la secuencia del flujo de operacin del
diagrama.

Recopilado por: Juan Manuel Ucan Cih
5
2.3.3 Ejemplos de uso de los diagramas de flujo
1. Diagrama de flujo que permiten calcular el rea de un tringulo y luego mostrar el
resultado en pantalla.

1. Inicio
2. Obtener la base y la altura del tringulo
3. El rea del tringulo es igual al producto de la
base y la altura dividido entre dos
4. Mostrar en pantalla el rea del tringulo
5. Fin




2. Diagrama de flujo que permitan determinar al mayor de dos nmeros y luego mostrarlo
en pantalla.

1. Inicio
2. Obtener los valores de X y de Y
3. Si X>Y entonces
Mostrar X en pantalla
Sino Si X<Y entonces
Mostrar Y en pantalla
Sino
Mostrar en pantalla Son iguales
4. Fin


Inicio
Base
Altura
Area=base*altura/2
Area
Fin
S
I
S
I
NO
NO
Inicio
X
Y
X Es el
mayor
Fin
X>Y X<Y
Y Es el
mayor
Son iguales
Recopilado por: Juan Manuel Ucan Cih
6
N
O
S
I
Inicio
#Alumnos
Promedio =
sumaDeEdades /
#Alumnos
promedio
Fin
sumaDeEdades=0
alumnosConsultados=0
Edad
sumaDeEdades =
sumaDeEdades+Edad
alumnosConsultados =
alumnosConsultados+1

alumnosConsultados
<# Alumnos
3. Diagrama de flujo que permiten calcular y mostrar en pantalla el promedio de edad de
un grupo de alumnos.

1. Inicio
2. Obtener el nmero de alumnos
3. La suma de edades y la cantidad de alumnos consultados inician con cero
4. Repetir
Obtener la edad de un alumno
Incrementar la suma de edades con la edad del alumno consultado
Incrementar en uno la cantidad de alumnos consultados
Mientras la cantidad de alumnos consultados sea menor al nmero total de alumnos
5. El promedio de edad es igual a la suma de edades divido entre el nmero total de alumnos
6. Mostrar el promedio de edad en pantalla
7. Fin










Recopilado por: Juan Manuel Ucan Cih
7

4. Diagrama de flujo que permite calcular y mostrar en pantalla el promedio de
calificaciones de un grupo de 30 alumnos.

Recopilado por: Juan Manuel Ucan Cih
8
2.4 Pseudocdigo
El pseudocdigo es una herramienta de programacin en la que las instrucciones se escriben en
palabras similares al ingls o al espaol, que facilita tanto la escritura como la lectura de programas.
En esencia, el pseudocdigo se puede definir como un lenguaje para la especificacin de algoritmos.
Ejemplo:
Una versin en pseudocdigo para el algoritmo del promedio de calificaciones de 30 alumnos, sera:
Inicio del algoritmo
Num toma 1
Suma toma 0
Etiqueta A:
Lee Calif
Suma toma Suma + Calif
Si Num es menor que 30
Num toma Num + 1
Ir a Etiqueta A
Si no
Escribe Suma / 30
Fin del algoritmo
2.5 Diseo algortmico de las funciones
A los segmentos de cdigo que implementan el comportamiento de los objetos se les denomina de
diferentes maneras, dependiendo del lenguaje de programacin que se utilice para hacer la
implementacin. Por ejemplo, en C++ se les conoce como funciones miembro, en Java y C# como
mtodos.
La implementacin de los mtodos se basa en el diseo algortmico explicado anteriormente, slo
que en este caso no se trata de algoritmos que resuelven completamente un problema dado, sino de
algoritmos que realizan una tarea especfica, la cual representa el comportamiento que manifestar el
objeto, cuando reciba el mensaje correspondiente.

Recopilado por: Juan Manuel Ucan Cih
9
3. Introduccin a la programacin
3.1 Datos
3.1.1 Definicin
Tcnicamente, los datos son hechos y cifras en bruto que se utilizan como entrada. Los datos se
procesan para construir informacin. En el uso cotidiano, los trminos datos e informacin se toman
como sinnimos.
3.1.2 Tipos de datos
Una variable es un nombre que contiene un valor que puede cambiar a lo largo del programa. De
acuerdo con el tipo de informacin que contienen, en Java hay dos tipos principales de variables:
1. Variables de tipos primitivos. Estn definidas mediante un valor nico que puede ser entero,
de punto flotante, carcter o booleano.
2. Variables referencia. Las variables referencia son referencias o nombres de una informacin
ms compleja: arreglos u objetos de una determinada clase.
Desde el punto de vista del papel o misin en el programa, las variables pueden ser:
1. Variables miembro de una clase: Se definen en una clase, fuera de cualquier mtodo; pueden
ser tipos primitivos o referencias.
2. Variables locales: Se definen dentro de un mtodo o ms en general dentro de cualquier
bloque entre llaves {}. Se crean en el interior del bloque y se destruyen al finalizar dicho
bloque. Pueden ser tambin tipos primitivos o referencias.
Tipos Primitivos de Variables
Se llaman tipos primitivos de variables de Java a aquellas que contienen los tipos de informacin
ms habituales: valores boolean, caracteres y valores numricos enteros o de punto flotante. Los
rangos y la memoria que ocupa cada uno de estos tipos se muestran en la siguiente tabla.
Tipo de variable Descripcin
boolean 1 byte. Valores true y false
char 2 bytes. Unicode. Comprende el cdigo ASCII
byte 1 byte. Valor entero entre -128 y 127
short 2 bytes. Valor entero entre -32768 y 32767
int 4 bytes. Valor entero entre -2.147.483.648 y 2.147.483.647
long 8 bytes. Valor entre -9.223.372.036.854.775.808 y 9.223.372.036.854.775.807
float 4 bytes (entre 6 y 7 cifras decimales equivalentes). De -3.402823E38 a -
1.401298E-45 y de 1.401298E-45 a 3.402823E38
double 8 bytes (unas 15 cifras decimales equivalentes). De -1.79769313486232E308
a -4.94065645841247E-324 y de 4.94065645841247E-324 a
1.79769313486232E308
Recopilado por: Juan Manuel Ucan Cih
10
Los tipos primitivos de Java tienen algunas caractersticas importantes que se resumen a
continuacin:
1. El tipo boolean no es un valor numrico: slo admite los valores true o false. El tipo boolean
no se identifica con el igual o distinto de cero, como en C/C++. El resultado de la expresin
lgica que aparece como condicin en un bucle o en una bifurcacin debe ser boolean.
2. El tipo char contiene caracteres en cdigo UNICODE (que incluye el cdigo ASCII), y
ocupan 16 bits por carcter. Comprende los caracteres de prcticamente todos los idiomas.
3. Los tipos byte, short, int y long son nmeros enteros que pueden ser positivos o negativos,
con distintos valores mximos y mnimos. A diferencia de C/C++, en Java no hay enteros
unsigned.
4. Los tipos float y double son valores de punto flotante (nmeros reales) con 6-7 y 15 cifras
decimales equivalentes, respectivamente.
5. Se utiliza la palabra void para indicar la ausencia de un tipo de variable determinado.
6. A diferencia de C/C++, los tipos de variables en Java estn perfectamente definidos en todas
y cada una de las posibles plataformas. Por ejemplo, un int ocupa siempre la misma memoria
y tiene el mismo rango de valores, en cualquier tipo de ordenador.
7. Existen extensiones de Java 1.2 para aprovechar la arquitectura de los procesadores Intel, que
permiten realizar operaciones de punto flotante con una precisin extendida de 80 bits.
3.1.3 Identificadores
Los nombres de variables pueden ser cualquier conjunto de caracteres numricos y alfanumricos,
sin algunos caracteres especiales utilizados como operadores o separadores (.+-*/ etc.).
Existe una serie de palabras reservadas las cuales tienen un significado especial y por lo tanto no se
pueden utilizar como nombres de variables. Dichas palabras son:
abstract boolean break byte case catch
char class const* continue default do
doubl else extends final finally float
for goto* if implements import instanceof
int interface long native new null
package prvate protected public return short
static super switch synchronized this throw
throws transient try void volatile while
(*) son palabras reservadas, pero no se utilizan en la actual implementacin del lenguaje Java.
Recopilado por: Juan Manuel Ucan Cih
11
Definicin e inicializacin de las variables
Una variable se define especificando el tipo y el nombre de dicha variable. Estas variables pueden
ser tanto de tipos primitivos como referencias a objetos de alguna clase perteneciente al API de Java
o generada por el usuario. Si no se especifica un valor en su declaracin, las variable primitivas se
inicializan a cero (salvo boolean y char, que se inicializan a false y '\0'). Anlogamente las variables
de tipo referencia son inicializadas por defecto a un valor especial: null.
Es importante distinguir entre la referencia a un objeto y el objeto mismo. Una referencia es una
variable que indica dnde est guardado un objeto en la memoria de la computadora. Al declarar una
referencia todava no se encuentra apuntando a ningn objeto en particular (salvo que se cree
explcitamente un nuevo objeto en la declaracin), y por eso se le asigna el valor null. Si se desea
que esta referencia apunte a un nuevo objeto es necesario crear el objeto utilizando el operador new.
Este operador reserva en la memoria de la computadora espacio para ese objeto (variables y
funciones). Tambin es posible igualar la referencia declarada a otra referencia a un objeto existente
previamente.
Un tipo particular de referencias son los arreglos, sean stos de variables primitivas (por ejemplo, un
vector de enteros) o de objetos. En la declaracin de una referencia de tipo arreglo hay que incluir
los corchetes [].
3.2 Operadores, operandos y expresiones.
Java es un lenguaje rico en operadores, que son casi idnticos a los de C/C++. Estos operadores se
describen brevemente en los apartados siguientes.
Operadores aritmticos
Son operadores binarios (requieren siempre dos operandos) que realizan las operaciones aritmticas
habituales: suma (+), resta (-), multiplicacin (*), divisin (/) y resto de la divisin (%).
Operadores de asignacin
Los operadores de asignacin permiten asignar un valor a una variable. El operador de asignacin
por excelencia es el operador igual (=). La forma general de las sentencias de asignacin con este
operador es:
variable = expression;
Java dispone de otros operadores de asignacin. Se trata de versiones abreviadas del operador (=)
que realizan operaciones acumulativas sobre una variable. La siguiente tabla muestra estos
operadores y su equivalencia con el uso del operador igual (=).
Operador Utilizacin Expresin equivalente
+= op1 += op2 op1 = op1 + op2
-= op1 -= op2 op1 = op1 - op2
*= op1 *= op2 op1 = op1 * op2
/= op1 /= op2 op1 = op1 / op2
%= op1 %= op2 op1 = op1 % op2
Recopilado por: Juan Manuel Ucan Cih
12
Operadores unarios
Los operadores ms (+) y menos (-) unarios sirven para mantener o cambiar el signo de una
variable, constante o expresin numrica. Su uso en Java es el estndar de estos operadores.
Operador instanceof
El operador instanceof permite saber si un objeto pertenece o no a una determinada clase. Es un
operador binario cuya forma general es, objectName instanceof ClassName y que devuelve true o
false segn el objeto pertenezca o no a la clase.
Operador condicional ? :
Este operador, tomado de C/C++, permite realizar bifurcaciones condicionales sencillas. Su forma
general es la siguiente:
booleanExpression ? res1 : res2
donde se evala 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 expresin. Por ejemplo las sentencias:
x=1 ; y=10; z = (x<y)?x+3:y+8; asignaran a z el valor 4, es decir x+3.
Operadores incrementales
Java dispone del operador incremento (++) y decremento (--). El operador (++) incrementa en una
unidad la variable a la que se aplica, mientras que (--) la reduce en una unidad. Estos operadores se
pueden utilizar de dos formas:
1. Precediendo a la variable (por ejemplo: ++i). En este caso primero se incrementa la variable
y luego se utiliza (ya incrementada) en la expresin en la que aparece.
2. Siguiendo a la variable (por ejemplo: i++). En este caso primero se utiliza la variable en la
expresin (con el valor anterior) y luego se incrementa.
En muchas ocasiones estos operadores se utilizan para incrementar una variable fuera de una
expresin. En este caso ambos operadores son equivalentes. Si se utilizan en una expresin ms
complicada, el resultado de utilizar estos operadores en una u otra de sus formas ser diferente. La
actualizacin de contadores en bucles for es una de las aplicaciones ms frecuentes de estos
operadores.
Operadores relacionales
Los operadores relacionales sirven para realizar comparaciones de igualdad, desigualdad y relacin
de menor o mayor. El resultado de estos operadores es siempre un valor boolean (true o false) segn
se cumpla o no la relacin considerada. La siguiente tabla muestra los operadores relacionales de
Java. Estos operadores se utilizan con mucha frecuencia en las bifurcaciones y en los bucles.
Operador Utilizacin El resultado es true
> op1 > op2 si op1 es mayor que op2
>= op1 >= op2 si op1 es mayor o igual que op2
< op1 < op2 si op1 es menor que op2
<= op1 <= op2 si op1 es menor o igual que op2
== op1 == op2 si op1 y op2 son iguales
Recopilado por: Juan Manuel Ucan Cih
13
!= op1 != op2 si op1 y op2 son diferentes
Operador de concatenacin de cadenas de caracteres (+)
El operador ms (+) se utiliza tambin para concatenar cadenas de caracteres. Por ejemplo, para
escribir una cantidad con un rtulo y unas unidades puede utilizarse la sentencia:
System.out.println("El total asciende a " + result + " unidades");
donde el operador de concatenacin se utiliza dos veces para construir la cadena de caracteres que se
desea imprimir por medio del mtodo println(). La variable numrica result es convertida
automticamente por Java en cadena de caracteres para poderla concatenar. En otras ocasiones se
deber llamar explcitamente a un mtodo para que realice esta conversin.
Operadores lgicos
Los operadores lgicos se utilizan para construir expresiones lgicas, combinando valores lgicos
(true y/o false) o los resultados de los operadores relacionales. La tabla siguiente muestra los
operadores lgicos de Java. Debe notarse que en ciertos casos el segundo operando no se evala
porque ya no es necesario (si ambos tienen que ser true y el primero es false, ya se sabe que la
condicin de que ambos sean true no se va a cumplir). Esto puede traer resultados no deseados y por
eso se han aadido los operadores (&) y (|) que garantizan que los dos operandos se evalan
siempre.
Operador Nombre Utilizacin Resultado
&& AND (cortocircuito)

op1 &&
op2
true si op1 y op2 son true. Si op1 es false ya no se
evala op2
|| OR (cortocircuito) op1 || op2 true si op1 u op2 son true. Si op1 es true ya no se
evala op2
! negacin ! op true si op es false y false si op es true
& AND op1 & op2 true si op1 y op2 son true. Siempre se evala op2
| OR op1 | op2 true si op1 u op2 son true. Siempre se evala op2
Operadores que actan a nivel de bits
Java dispone tambin de un conjunto de operadores que actan a nivel de bits. Las operaciones de
bits se utilizan con frecuencia para definir seales o flags, esto es, variables de tipo entero en las que
cada uno de sus bits indica si una opcin est activada o no. La tabla siguiente muestra los
operadores de Java que actan a nivel de bits.
En binario, las potencias de dos se representan con un nico bit activado. Por ejemplo, los nmeros
(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 slo 8
bits. La suma de estos nmeros permite construir una variable flags con los bits activados que se
deseen. Por ejemplo, para construir una variable flags que sea 00010010 bastara hacer flags=2+16.
Para saber si el segundo bit por la derecha est o no activado bastara utilizar la sentencia,
if (flags & 2 == 2) {...}
Operador Utilizacin Equivalente a
&= op1 &= op2 op1 = op1 & op2
|= op1 |= op2 op1 = op1 | op2
Recopilado por: Juan Manuel Ucan Cih
14
^= op1 ^= op2 op1 = op1 ^ op2
<<= op1 <<= op2 op1 = op1 << op2
>>= op1 >>= op2 op1 = op1 >> op2
>>>= op1 >>>= op2 op1 = op1 >>> op2
3.3 Prioridad de operadores, evaluacin de expresiones
El orden en que se realizan las operaciones es fundamental para determinar el resultado de una
expresin. Por ejemplo, el resultado de x/y*z depende de qu operacin (la divisin o el producto)
se realice primero. La siguiente lista muestra el orden en que se ejecutan los distintos operadores en
un sentencia, de mayor a menor precedencia:
[] . (params) expr++ expr--
++expr --expr +expr -expr ~ !
new (type)expr
* / %
+ -
<< >> >>>
< > <= >= instanceof
== !=
&
^
|
&&
||
? :
= += -= *= /= %= &= ^= |= <<= >>= >>>=

En Java, todos los operadores binarios, excepto los operadores de asignacin, se evalan de
izquierda a derecha. Los operadores de asignacin se evalan de derecha a izquierda, lo que
significa que el valor de la derecha se copia sobre la variable de la izquierda.
3.4 Estructura bsica de un programa
Ejemplo:
// Mi primer programa en Java
class MiPrimerPrograma
{
public static void main(String arg[])
{
System.out.println("Hola, A Todos!");
}
}
Una aplicacin puede definir tantas clases como sea necesario y tambin utilizar clases predefinidas.
La nica condicin es que una de las clases contenga al mtodo main ( ). El cdigo del mtodo main
( ) marca el inicio para la ejecucin de toda aplicacin.
Recopilado por: Juan Manuel Ucan Cih
15
3.5 Compilacin
Una vez que se crea el cdigo fuente en Java, se procede a la creacin del cdigo ejecutable. Para la
creacin de un ejecutable, primero debe compilarse el cdigo fuente. Para compilar una aplicacin
existen dos formas:
1. Desde la lnea de comandos del DOS
2. Utilizando el IDE de Java
Compilacin y ejecucin desde la lnea de comandos
Compilacin: El compilador de Java se invoca con el comando javac, y traduce el cdigo fuente en
un archivo que contiene los byte-codes que pueden ser ejecutados por una mquina virtual de Java:
C:\javac MiPrimerPrograma
Este comando crea un archivo con el mismo nombre, pero con la extensin .class
Ejecucin : El archivo class contiene los byte-codes que pueden ser interpretados por una mquina
virtual de Java. Para ejecutar esta aplicacin, se debe invocar el programa java con el nombre de la
clase como argumento (sin extensin):
C:\java MiPrimerPrograma
El entorno de desarrollo de Java
Existen distintos programas comerciales que permiten desarrollar cdigo Java. La compaa Sun,
creadora de Java, distribuye gratuitamente el Java(tm) Development Kit (JDK). Se trata de un
conjunto de programas y libreras que permiten desarrollar, compilar y ejecutar programas en Java.
Incorpora adems la posibilidad de ejecutar parcialmente el programa, deteniendo la ejecucin en el
punto deseado y estudiando en cada momento el valor de cada una de las variables (con el
denominado Debugger). Existe tambin una versin reducida del JDK, denominada JRE (Java
Runtime Environment) destinada nicamente a ejecutar cdigo Java (no permite compilar).
Los IDEs (Integrated Development Environment), tal y como su nombre indica, son entornos de
desarrollo integrados. En un mismo programa es posible escribir el cdigo Java, compilarlo y
ejecutarlo sin tener que cambiar de aplicacin. Algunos incluyen una herramienta para realizar
Debug grficamente, frente a la versin que incorpora el JDK basada en la utilizacin de una
consola (denominada habitualmente ventana de comandos de MS-DOS, en Windows NT/95/98)
bastante difcil y pesada de utilizar. Estos entornos integrados permiten desarrollar las aplicaciones
de forma mucho ms rpida, incorporando en muchos casos libreras con componentes ya
desarrollados, los cuales se incorporan al proyecto o programa. Como inconvenientes se pueden
sealar algunos fallos de compatibilidad entre plataformas, y archivos resultantes de mayor tamao
que los basados en clases estndar.
Recopilado por: Juan Manuel Ucan Cih
16
Las variables PATH y CLASSPATH
El desarrollo y ejecucin de aplicaciones en Java exige que las herramientas para compilar
(javac.exe) y ejecutar (java.exe) se encuentren accesibles. La computadora, desde una ventana de
comandos, slo es capaz de ejecutar los programas que se encuentran en los directorios indicados en
la variable PATH (o en el directorio activo). Si se desea compilar o ejecutar cdigo en Java, el
directorio donde se encuentran estos programas (java.exe y javac.exe) deber encontrarse en el
PATH.
Java utiliza adems una nueva variable de entorno denominada CLASSPATH, la cual determina
dnde buscar tanto las clases o libreras de Java (el API de Java) como otras clases de usuario. A
partir de la versin 1.1.4 del JDK no es necesario indicar esta variable, salvo que se desee aadir
conjuntos de clases de usuario que no vengan con dicho JDK.
3.6 Entrada y salida de datos
La entrada de datos consiste en colocar en la memoria principal datos provenientes desde algn
dispositivo de entrada (teclado, disco, etc.) para que la computadora, de acuerdo a un programa,
realice una tarea.
La salida de datos consiste en enviar datos (que, generalmente, son el resultado de un
procesamiento) desde la memoria principal hacia un dispositivo de salida (pantalla, impresora,
disco, etc.).
La entrada desde teclado y la salida a pantalla estn reguladas a travs de la clase System. Esta clase
pertenece al package java.lang y agrupa diversos mtodos y objetos que tienen relacin con el
sistema local. Contiene, entre otros, tres objetos static que son:
- System.in: Objeto de la clase InputStream preparado para recibir datos desde la entrada
estndar del sistema (habitualmente el teclado).
- System.out: Objeto de la clase PrintStream que imprimir los datos en la salida estndar del
sistema (normalmente asociado con la pantalla).
- System.err: Objeto de la clase PrintStream. Utilizado para mensajes de error que salen
tambin por pantalla por defecto.
Estas clases permiten la comunicacin alfanumrica con el programa a travs de lo mtodos,
mostrados en la siguiente tabal, a un nivel elemental.
Mtodos de System.in Funcin que realizan
int read() Lee un carcter y lo devuelve como int.
Mtodos de System.out y System.err Funcin que realizan
int print(cualquier tipo) Imprime en pantalla el argumento que se le pase. Puede
recibir cualquier tipo primitivo de variable de Java.
int println(cualquier tipo) Como el anterior, pero aadiendo '\n' (nueva lnea) al
final.

Recopilado por: Juan Manuel Ucan Cih
17
4. Control de flujo
4.1 Estructuras secuenciales
Una estructura secuencial consiste de una secuencia de instrucciones, como se muestra en el
siguiente diagrama de flujo.

Donde un Bloque consiste de una o ms instrucciones.
Ejemplo:
class Circulo
{
int x, y ;
public Circulo( int a, int b)
{
x = a;
y = b;
}
public int getX( )
{
return x;
}
public int getY( )
{
return y;
}
}
Recopilado por: Juan Manuel Ucan Cih
18

class AplicacionCirculo
{
public static void main(String arg[])
{
Circulo circ = new Circulo( 10,15); // Crea e inicializa a circ.
System.out.println ("X =" + circ.getX());
System.out.println ("Y =" + circ.getY());
}
}
4.2 Estructuras selectivas
Las estructuras selectivas sirven para seguir una sola de entre varias lneas de ejecucin disponibles.
4.2.1 Selectiva simple
La estructura selectiva simple sirve para seguir una lnea de ejecucin cuando se cumple una
condicin.
Diagrama de flujo:

Sintaxis:
Caso 1)
if(condicin) instruccin ; // Una sola instruccin

Caso 2)
if(condicin)
{
Bloque // Varias instrucciones
}
Recopilado por: Juan Manuel Ucan Cih
19
Ejemplo 1:
if(calificacin >= 70) estatus = "Acreditado" ;
Ejemplo 2:
if(credito == true)
{
clave = 1200 ;
adeudo += compra ;
}
4.2.2. Selectiva doble
La estructura selectiva doble sirve para seguir una lnea de ejecucin cuando se cumple la condicin,
o seguir otra lnea cuando no se cumple la condicin.
Diagrama de flujo:

Sintaxis:
Caso 1)
if(condicin) instruccin1 ; // Una sola instruccin
else instruccin2 ;
Recopilado por: Juan Manuel Ucan Cih
20
Caso 2)
if(condicin)
{
Bloque1 // Varias instrucciones
}
else
{
Bloque2 // Varias instrucciones
}

Ejemplo 1:
if(calificacin >= 70) estatus = "Acreditado";
else estatus = "No Acreditado";
Ejemplo 2:
if(credito == true)
{
clave = 1200 ;
adeudo += compra ;
}
else
{
clave = 1000 ;
adeudo += 0.0 ;
}
Recopilado por: Juan Manuel Ucan Cih
21
4.2.3 Selectiva anidada
La estructura selectiva anidada es una cadena de estructuras selectivas que se conectan de la parte
else de la actual con la parte if de la siguiente.
Diagrama de flujo:

Sintaxis:
if(condicin1) Bloque 1 ;
else if(condicin2) Bloque 2 ;
else Bloque 3;
Ejemplo:
if(edad < = 2 )
System.out.println("Beb" ) ;
else if(edad < 12)
System.out.println ("Nio" ) ;
else if( edad < 18)
System.out.println ("Adolescente" ) ;
else System.out.println (" Adulto" ) ;
Recopilado por: Juan Manuel Ucan Cih
22
4.2.4 Selectiva mltiple
La estructura selectiva mltiple es similar a la selectiva anidada, salvo que las condiciones deben ser
de alguno de los tipos enteros o de tipo carcter.
Diagrama de flujo:

Sintaxis:
switch(Expresion)
{
case Cte1: Bloque 1 ; break;
case Cte2: Bloque 2 ; break;
case CteN: Bloque N ; break;
default: Bloque X ; break;// Opcional.
}
Ejemplo:
switch(opcion)
{
case 'A': System.out.println("Altas"); break;
case 'B': System.out.println ("Bajas") ; break;
case 'C': System.out.println ("Cambios") ; break;
Recopilado por: Juan Manuel Ucan Cih
23
default: System.out.println ("Opcin invlida") ; break;
}
4.2.5 try/catch
La estructura try/catch se utiliza para atrapar excepciones. Aunque es una estructura de uso
especializado, vale la pena describirla brevemente aqu para compararla con alguna de las otras
estructuras aqu estudiadas.
Diagrama de flujo:

Recopilado por: Juan Manuel Ucan Cih
24
Sintaxis:
try
{
// Bloque de instrucciones que pueden generar una o ms
// situaciones excepcionales.
}
catch(Excepcin1)
{
// Bloque alternativo para el caso de existir la Excepcin 1
}
...
catch(ExcepcinN )
{
// Bloque alternativo para el caso de existir la Excepcin N
}
finally // Opcional
{
// Bloque de instrucciones que siempre se ejecutan
}
Ejemplo:
import javax.swing.JOptionPane;
public class Excepcion
{
public static void main(String[] args)
{
int i[]={1,2,3,4,5};
try{
i[0]=Integer.parseInt(JOptionPane.showInputDialog(null,"escribe un numero entero"));
i[5]=10;
}
catch(NumberFormatException e){System.out.println("Error1="+e.toString());}
catch(ArrayIndexOutOfBoundsException e){System.out.println("Error2="+e.toString());}
finally
{
System.out.println("El bloque finally siempre se ejecuta.");
}
JOptionPane.showMessageDialog(null,"i[0]="+i[0]);
System.exit(0);
}
}
Recopilado por: Juan Manuel Ucan Cih
25
4.3. Estructuras de repeticin.
Las estructuras de repeticin sirven para formar bucles o ciclos en los que se ejecuta repetidamente
un bloque de instrucciones.
4.3.1 while
En esta estructura, de entrada se evala una condicin. En caso de que el resultado de tal evaluacin
sea true, se ejecuta un bloque de instrucciones, en el cual debe existir una instruccin que modifique
la condicin. De no existir esa instruccin, se ejecutar un ciclo infinito (loop). Si el resultado de la
evaluacin es false, el bloque de instrucciones no se ejecuta y finaliza la ejecucin de la estructura.
Diagrama de flujo:

Sintaxis:
while (condicin)
{
bloque;
}
Recopilado por: Juan Manuel Ucan Cih
26
Ejemplo:
import javax.swing.JOptionPane;
class Capturador
{
public String leeClave( )
{
String c="";
while(c.equalsIgnoreCase(""))
{
c = JOptionPane.showInputDialog(null,"Escribe la clave" ) ;
}
return c ;
}
}

class AplicacionCapturadorWhile
{
public static void main(String arg[])
{
String clave= "";
Capturador objeto = new Capturador();
clave = objeto.leeClave();
System.out.println("Clave = " + clave );
System.exit(0);
}
}

Recopilado por: Juan Manuel Ucan Cih
27
4.3.2 do-while
La estructura do-while tiene un comportamiento similar a while, slo que en este caso primero se
ejecuta el bloque de instrucciones y despus se evala la condicin. Con esto se asegura que el
bloque se ejecutar al menos una vez.
Diagrama de flujo:

Sintaxis:
Do
{
bloque ;
} while(condicin) ;
Recopilado por: Juan Manuel Ucan Cih
28
Ejemplo:
import javax.swing.JOptionPane;
class Capturador
{
public String leeClave( )
{
String c="";
do
{
c = JOptionPane.showInputDialog(null,"Escribe la clave");
} while(c.equalsIgnoreCase(""));
return c ;
}
}

class AplicacionCapturadorDoWhile
{
public static void main(String arg[])
{
String clave= "";
Capturador objeto = new Capturador();
clave = objeto.leeClave();
System.out.println("Clave = " + clave );
System.exit(0);
}
}
Recopilado por: Juan Manuel Ucan Cih
29
4.3.3 for
Entre las estructuras de iteracin, for es la ms verstil ya que, entre otras caractersticas, permite la
declaracin de variables dentro de su estructura.
Diagrama de flujo:

Recopilado por: Juan Manuel Ucan Cih
30
Sintaxis:
for( Inicializacin ; Condicin ; Control) Bloque ;
donde:
- Inicializacin es un bloque de instrucciones que puede incluir la declaracin de las variables
involucradas y la asignacin de valores iniciales.
- Condicin es una instruccin que puede evaluarse de tal forma que se obtenga como
resultado un valor de verdad ( false o true). Mientras se cumpla la condicin, se ejecutar el
Bloque.
- Control es un conjunto de instrucciones, separadas por comas, que controlan la variacin de
los valores de las variables utilizadas.
Los bloques de inicializacin, condicin y control no son obligatorios, pero s los dos puntos y coma
que los separan, por lo que la forma mnima de una estructura for quedara as:
for ( ; ; ) ; // ciclo infinito que no realiza tarea alguna.
Ejemplo:
for(int i = 1 ; i <= 10 ; i++)
{
System.out.println("Soy la lnea: "+ i ) ;
}
Recopilado por: Juan Manuel Ucan Cih
31
5. Arreglos
5.1 Arreglos unidimensionales, bidimensionales y
multidimensionales
Un arreglo es una coleccin de datos del mismo tipo referenciados por una variable. Los datos se
llaman elementos del arreglo y ocupan una posicin denominada ndice.
Un arreglo es un objeto con caractersticas propias.
Los arreglos se crean con el operador new seguido del tipo y nmero de elementos.
Los arreglos poseen un atributo que permite determinar cuntos elementos contiene. Se trata de
length.
5.1.1 Arreglos de una dimensin
Los arreglos de una dimensin son conocidos como listas o vectores con una cantidad definida de
elementos.
Declaracin. La sintaxis de declaracin de arreglos es:
1. tipo [] identificador
2. tipo identificador []
Ejemplos:
char s[];
int [] v, w;

Creacin. La sintaxis para definir arreglos de un nmero determinado de elementos es:
1. tipo nombreArreglo[] = new tipo [numeroDeElementos]
2. tipo nombreArreglo[];
nombreArreglo = new tipo[numeroDeElementos];
Ejemplos:
float f = new float [25];
int a [];
a = new int[10]

Inicializacin. Se deben asignar valores a los arreglos antes de utilizarlos. Ejemplos:
int numeros[]={10, 20, 30, 40, 50, 60};
char c[]={'J','u','a',n'};

final int ENE=31, FEB=28, MAR=31,ABR=30;
int meses[]={ENE, FEB, MAR, ABR};
Recopilado por: Juan Manuel Ucan Cih
32

int i, numeros[];
numeros = new int [5];
for(int i=0; i<numeros.length; i++)
numeros[i] = -1;

Ejemplo de creacin y uso de un arreglo unidimensional:
import java.io.*;
import javax.swing.JOptionPane;
class ArregloUnidimensional {
public static void main(String[] args) throws IOException {
String dato="";
int nElementos, numero;
nElementos=Integer.parseInt(JOptionPane.showInputDialog(null,"Nmero de elementos del arreglo ?"));
int v[] = new int[nElementos]; // crear el vector v
int i = 0; // ndice
JOptionPane.showMessageDialog(null,"Introduce los valores del vector");
for (i = 0; i < v.length; i++) {
numero=Integer.parseInt(JOptionPane.showInputDialog("Elemento v[" + i + "]"));
v[i] = numero;
}
// Visualizar los elementos del vector
dato="";
for (i = 0; i < nElementos; i++)
dato=dato+(v[i] + "\n");
JOptionPane.showMessageDialog(null,"Datos almacenados en el vector:\n"+dato);
System.exit(0);
}
}
5.1.2 Arreglos bidimensionales
Los arreglos bidimensionales son conocidos como tablas o matrices. En general todas las filas
tienen la misma cantidad de columnas; sin embargo es posible que las filas tengan una cantidad
diferente de elementos.
Declaracin. La sintaxis de declaracin es:
3. tipo [][] identificador
4. tipo identificador [][]
Ejemplos:
char m[];
int [][] v, w;

Creacin. La sintaxis para la creacin es:
3. tipo nombreArreglo[][] = new tipo [numeroDeFilas][numeroDeColumnas]
4. tipo nombreArreglo[][];
nombreArreglo = new tipo[numeroDeFilas] [numeroDeColumnas];
Recopilado por: Juan Manuel Ucan Cih
33
Ejemplos:
float f [][]= new float [5][10];
int a [][];
a = new int [5][10];

Inicializacin. Se deben asignar valores a los arreglos antes de utilizarlos. Ejemplos:
int matriz[][]={ {1, 2, 3, 4, 5}, {6, 7, 8, 9, 10}, {11, 12, 13, 14, 15} };

int filas=3,columnas=5, i, j, a[][];
a=new int [filas][columnas];
for(i=0; i < filas; i++)
for (j=0; j < a[0].length; j++)
a[i][j] = i+j;

Ejemplo de creacin y uso de un arreglo Bidimensional:
import java.io.*;
import javax.swing.JOptionPane;
class ArregloBidimensional {
public static void main(String[] args) throws IOException {
String dato="";
int filas, cols, numero;
filas=Integer.parseInt(JOptionPane.showInputDialog(null,"Nmero de filas ?"));
cols=Integer.parseInt(JOptionPane.showInputDialog(null,"Nmero de columnas ?"));
int m[][]= new int[filas][cols]; // crear la matriz m
int i, j; // ndices: i=fila, j=columna
JOptionPane.showMessageDialog(null,"Introduce los valores de la matriz");
for (i=0; i < filas; i++)
for (j = 0; j < m[0].length; j++) {
numero=Integer.parseInt(JOptionPane.showInputDialog("Elemento m[" + i + "]["+j+"]"));
m[i][j] = numero;
}
// Visualizar los elementos de la matriz
dato="";
for (i=0; i < filas; i++){
for (j = 0; j < m[0].length; j++)
dato=dato+(m[i][j] + " ");
dato=dato+"\n";
}
JOptionPane.showMessageDialog(null,"Datos almacenados en la matriz:\n"+dato);
System.exit(0);
}
}
Recopilado por: Juan Manuel Ucan Cih
34
5.1.3 Arreglos multidimensionales
Los arreglos multidimensionales son aquellos que tienen varias dimensiones (incluyendo las
bidimensionales); es decir son arreglos de arreglos.
Los arreglos multidimensionales se pueden inicializar de forma ms creativa, como por ejemplo que
cada fila tenga una cantidad diferente de elementos.
int calif[][]=new int[4][];//Hay 5 arreglos de enteros
calif [0]=new int[50]; //El primer arreglo es de 50 enteros
calif [1]=new int[40]; //El segundo de 40
calif [2]=new int[45];
calif [3]=new int[48];
5.2 Cadenas de caracteres
Las clases String y StringBuffer estn orientadas a manejar cadenas de caracteres. La clase String
est orientada a manejar cadenas de caracteres constantes, es decir, que no pueden cambiar. La clase
StringBuffer permite que el programador cambie la cadena insertando, borrando, etc.
Todas las cadenas, como por ejemplo hola, son implementadas como instancias de la clase String.
No confundir un String con un arreglo de caracteres !Son cosas diferentes!

public class DemoString{
public static void main (String args[])
{
System.out.println ("Ejemplo de uso de getchars");
// public void getChars(int srcBegin,int srcEnd,char dst[],int dstBegin)
char valor[]={'a','b','c','d'}; String str="hola mundo";
str.getChars(2,4,valor,1); // Se copia del string str, de la posicin 2 a la 4-1
// al arreglo valor, empezando desde la posicin 1
System.out.println(valor[0]); // retorna a
System.out.println(valor[1]); // retorna l
System.out.println(valor[2]); // retorna a
System.out.println(valor[3]); // retorna d

/*******************/
System.out.println ("Ejemplo de uso de equals ignorando mayusculas");
// public boolean equalsIgnoreCase(String anotherString)
boolean resp; str="HoLa MuNdo";
resp=str.equalsIgnoreCase("hOLa mUnDO"); // retorna true,pues compara los caracteres
if (resp==true) // ignorando las mayusculas
System.out.println("son iguales");
else
System.out.println("son diferentes");

/*********************/
System.out.println ("Ejemplo de uso de compareTo");
// public int compareTo(String anotherString)
str="Hola"; int i;
i=str.compareTo("hola"); // retorna un valor negativo pues Hola es menor
System.out.println(i); // lexicograficamente que hola ya que los valores
// de los caracteres con mayuscula son menores
Recopilado por: Juan Manuel Ucan Cih
35
// que los caracteres en minuscula.
i=str.compareTo("Hola"); // retorna 0 pues son iguales
System.out.println(i);
i=str.compareTo("Chao"); // retorna un valor positivo.
System.out.println(i);
i=str.compareTo("Mesa"); // retorna negativo.
System.out.println(i);

/*********************/
System.out.println ("Ejemplo de uso de substring");
// public String substring(int beginIndex)
str="Hola Mundo"; String s;
s= str.substring(2); // retorna "la Mundo"
System.out.println(s);
s=str.substring(5); // retorna "Mundo"
System.out.println(s);

/*********************/
System.out.println ("Ejemplo de uso de toCharArray");
//public char[] toCharArray()
str="Hola Mundo";
valor=str.toCharArray(); // el arreglo valor se llena con el string
for (i=0;i<str.length();i++)
System.out.print(valor[i]);
}
}


La clase StringBuffer es para objetos de cadena que son posibles de modificar. Un objeto
StringBuffer implementa una secuencia de caracteres dinmicos. Las principales operaciones que se
realizan son append e insert, las cuales pueden recibir varios tipos de entrada; cada uno de estos
mtodos convierte su entrada en String y posteriormente realiza la insercin o concatenacin segn
corresponda.
public class DemoStringBuffer{
public static void main (String args[]){
//public synchronized void setLength(int newLength)
int i;
StringBuffer str;
str=new StringBuffer("hola");
str.setLength(50);//modifica el largo del Stringbuffer de 4 a 50
i=str.length();//retorna 50
System.out.println(i);

/****************/
System.out.println ("Ejemplo de uso de getchars");
// public synchronized void getChars(int srcBegin,int srcEnd,char dst[],int dstBegin)
char valor[]={'a','b','c','d'};
str=new StringBuffer("Hola Mundo");
str.getChars(2,4,valor,1); // Se copia del StringBuffer str, de la posicion 2 a la 4-1
// al arreglo valor, empezando desde la posicion
System.out.println(valor[0]); // retorna a
System.out.println(valor[1]); // retorna l
System.out.println(valor[2]); // retorna a
System.out.println(valor[3]); // retorna d

/**********************/
Recopilado por: Juan Manuel Ucan Cih
36
System.out.println("Ejemplo de uso de append");
// valor[]={'a','l','a','d'};
char ch='O'; boolean f=true; int a=1; long b=3; double g=7;
str=new StringBuffer("hola");
str=str.append(" Mundo");//str queda como "hola Mundo"
System.out.println(str.toString());
str=str.append(valor);//str queda como "hola Mundoalad"
System.out.println(str.toString());
str=str.append(ch);//str queda como "hola MundoaladO"
System.out.println(str.toString());
str=str.append(f);//str queda como "hola MundoaladOtrue"
System.out.println(str.toString());
str=str.append(a);//str queda como "hola MundoaladOtrue1"
System.out.println(str.toString());
str=str.append(b);//str queda como "hola MundoaladOtrue13"
System.out.println(str.toString());
str=str.append(g);//str queda como "hola MundoaladOtrue137.0"
System.out.println(str.toString());
str=str.append(valor,0,1);//str queda como "hola MundoaladOtrue137.0a"
System.out.println(str.toString());

/**********************/
System.out.println("Ejemplo de uso de insert");
// valor[]={'a','l','a','d'};
//char ch='O'; boolean f=true; int a=1; long b=3; double g=7;
str=new StringBuffer("hola");
str=str.insert(2,"Mundo");//str queda como "hoMundola"
System.out.println(str.toString());
str=str.insert(0,valor);//str queda como "aladhoMundola"
System.out.println(str.toString());
str=str.insert(3,ch);//str queda como "aladOhoMundola"
System.out.println(str.toString());
str=str.insert(0,f);//str queda como "truealadOhoMundola"
System.out.println(str.toString());
str=str.insert(1,a);//str queda como "t1ruealadOhoMundola"
System.out.println(str.toString());
str=str.insert(1,b);//str queda como "t31ruealadOhoMundola"
System.out.println(str.toString());
str=str.insert(1,g);//str queda como "t7.031ruealadOhoMundola"
System.out.println(str.toString());
}
}

Recopilado por: Juan Manuel Ucan Cih
37
Ejercicios
Unidad 3: Introduccin a la Programacin
1. Escribe un programa que calcule la distancia que recorre la luz en N das. La velocidad de la luz en el "vaco"
es por definicin una constante universal de valor 299.792.458 m/s (aproximadamente 300.000 km/s).
2. Sean los datos a, b, c, d. Elabora un programa para leer los datos, resolver y mostrar el resultado de cada uno
de los siguientes incisos:
- Calcular: a + b - c
d
- Calcular: (a - b)
2
(a - b)
3

c d
a
3. Un sistema de ecuaciones lineales:
ax + by = c
dx + ey = f
se puede resolver con las siguientes frmulas:

bd ae
bf ce
x

=
bd ae
cd af
y

=
Elabora un programa que lea dos conjuntos de coeficientes (a, b, y c; d, e, y f) y visualice los valores de x e y.
4. Una persona recibe un prstamo de un banco y desea saber cunto pagar de inters al terminar el mes si el
banco le cobra una tasa (%) mensual. Generaliza este problema para un monto cualquiera de capital y para una
tasa cualquiera.
5. Sean los datos: x, a
1
, a
2
, a
3
, a
4
; Elabora un programa para calcular: a
1
x
3
+ a
2
x
2
+ a
3
x + a
4 sin usar el mtodo
Math.pow().
6. Una temperatura Celsius (centgrado) puede ser convertida a una temperatura Fahrenheit equivalente de
acuerdo a la siguiente frmula F=1.8C+32. Escribe un programa que dada una temperatura Celsius la convierta
a la temperatura Fahrenheit equivalente.
7. Una temperatura Fahrenheit puede ser convertida a una temperatura Celsius equivalente de acuerdo a la
siguiente frmula C=(F-32)/1.8. Escribe un programa que dada una temperatura Fahrenheit la convierta a la
temperatura Celsius equivalente.
8. Elabora un programa que resuelva y luego muestre en pantalla el resultado de la siguiente frmula:
) )( ( * ) ( c p b p a p p rea = donde p=(a+b+c)/2.
9. El inters simple se calcula mediante la frmula A=P(i/100*n), donde A=monto de Inters, P=capital,
n=nmero de aos e i=tasa de inters (en %). Elabora un programa que lea P, i, y N; a continuacin calcule y
muestre en pantalla el monto de inters a travs del nmero de aos ledo.
Recopilado por: Juan Manuel Ucan Cih
38
10. Elabora un programa que solicite un nmero entre 0 y 9,999 y luego lo muestre con las cifras al revs.
Unidad 4: Control de flujo
11. Elabora un programa que solicite una nota de 0 a 10 y luego lo muestre de la siguiente forma: Insuficiente,
Suficiente, Bien...
12. Elabora un programa que solicite el da, mes y ao de una fecha correcta y luego muestre la fecha del da
siguiente. Suponer que todos los meses tienen 30 das.
13. Elabora un programa que solicite un nmero de 0 a 99 y luego lo muestre escrito. Por ejemplo, para 56
mostrar: cincuenta y seis.
14. Una empresa desea conocer el monto de comisin correspondiente a una venta realizada por un vendedor
bajo las siguientes condiciones. Si la venta es menor a $1,000.00, se le otorga el 3% de comisin. Si la venta
es de $1,000.00 o ms, el vendedor recibe el 5% de comisin.
15. Elabora un programa que solicite un nmero entre 0 y 9.999 y luego indique cuantas cifras tiene.
16. El precio de un boleto de viaje redondo en tren se calcula tomando en cuenta el nmero de kilmetros que
se van a recorrer, siendo el precio $60.00 por Km. Este precio puede tener un descuento del 30% si el viaje
de regreso se hace despus de 7 das del viaje de ida, o si el recorrido supera los 800 Km. Elabora un programa
para calcular cunto se debe pagar por un boleto de tren dando como datos el total de Km recorridos y el
nmero de das entre el viaje de ida y el viaje de vuelta.
17. Una agencia automotriz ofrece planes de crdito para la adquisicin de los diferentes modelos de
automviles. Si el automvil vale ms de $250,000.00 la agencia solicita un 35% de enganche y el resto debe
cubrirse en 24 mensualidades sin intereses. Si el automvil tiene un valor mximo de $250,000.00 se requiere
un enganche del 25% y el resto se debe pagar en 18 mensualidades sin intereses. La agencia desea saber, en base
al precio de un automvil que un determinado cliente elija, cul es el monto del enganche; y cul es el nmero
y el monto de las mensualidades que ste debe cubrir.
18. El ndice de Masa Corporal (IMC) es un ndice del peso de una persona en relacin con su altura. El IMC se
calcula con la siguiente frmula IMC=Peso (Kg)/Estatura2 (Metro). Elabora un programa que posibilite
calcular el IMC de una persona y luego indique cul es el resultado as como el tipo de peso, de acuerdo a la
siguiente tabla:
Resultado Tipo de Peso
< 18.5 Kg/m2 Insuficiente
Entre 18.5 y 24.9 Kg/m2 Normal
Entre 25 y 29.9 Sobrepeso
Entre 30 y 34.9 Obesidad leve
Entre 35 y 39.9 Obesidad moderada
Entre 40 y 49.9 Obesidad mrbida
> 50 Obesidad extrema

Recopilado por: Juan Manuel Ucan Cih
39
19. Dado un valor de x calcular el valor de y segn la siguiente funcin:

s < +
s <
s +
= =
x de valores dems los para
x si x
x si x
x si x
x f y
0
64 33 6
33 11 10
11 36 3
) (
2


20. En una empresa, se darn aumentos a los empleados segn la categora de su contrato actual de la siguiente
forma:
Clave de categora Categora Aumento %
S Sindicalizado 20
C Confianza 10
D Directivo 5
E Ejecutivo 0
Elabora un programa que solicite la clave de la categora y el sueldo actual de un empleado y calcule y muestre
en pantalla el nuevo salario.
21. Dados los nmeros enteros a, b y c; elabora un programa para que halle al mayor de ellos y luego lo
muestre en pantalla.
22. Escribe un programa que determine si un ao es bisiesto. Un ao es bisiesto si es mltiplo de 4. Los aos
mltiplos de 100 no son bisiestos salvo si ellos son tambin mltiplos de 400 (200 es bisiesto, 1800 no lo es).
23. Escribe un programa que permita introducir un nmero entre 1 y 12 y muestre en pantalla el nmero de
das de ese mes, as como su nombre.
24. Dado un valor de x calcular el valor de y segn la siguiente funcin:

= +
=
=
=
= =
3 4 mod x si 5
2 4 mod x si x
1 4 mod x si
6
0 4 mod x si
) (
3
2
x
x
x
x f y

25. Escribe un programa que permita introducir un carcter y luego determine si es o no una vocal.
Recopilado por: Juan Manuel Ucan Cih
40
26. Escribe un programa que permita introducir un nmero entre 1 y 7 y luego muestre en pantalla el nombre
del da de la semana que le corresponda.
27. Escribir un programa que permita jugar a adivinanzas. El usuario tiene que introducir un nmero de un solo
dgito. El programa tiene que preguntar si el nmero es par o impar, y el resto cuando el nmero se divide
entre 5. A partir de esta informacin se debe determinar el nmero.
Ejemplo donde se adivina el nmero 6:
Es par o impar (par=0, impar=1) :0
Resto de dividir el nmero entre 5 :1
Anlisis:
0%5=0
Organizando la informacin

Impares:
5%5=0
1%5=1
7%5=2
3%5=3
9%5=4
1%5=1
2%5=2
3%5=3
4%5=4
5%5=0 Pares:
0%5=0
6%5=1
2%5=2
8%5=3
4%5=4
6%5=1
7%5=2
8%5=3
9%5=4

28. Elabora un programa para que, dados dos nmeros enteros a, b y una clave, realice la operacin aritmtica
indicada por medio de la clave. Por ejemplo, si los datos son: 8 4 +, el algoritmo debe calcular la suma de 8
+ 4. Las claves vlidas son: + - * /.
29. Elabora un programa para leer una serie de enteros positivos, contar los valores introducidos y calcular su
promedio. El final de los datos se indicar con un nmero negativo.
30. Elabora un programa que encuentre la suma de los primeros N nmeros enteros pares positivos.
31. Elabora un programa que lea un nmero N entero positivo y luego muestre en pantalla todos sus divisores.
32. Escribe un programa que lea las calificaciones de 10 exmenes y muestre en pantalla cuntos de ellos son
mayores o iguales a 70.
33. Una compaa de alquiler de automviles sin conductor desea un programa para emitir las facturas de sus
clientes, teniendo en cuenta los siguientes puntos:
- Cantidad fija de $500 si no se rebasan los 300km
- Distancia recorrida mayor a 300km y menor o igual a 1000km; $500 ms los km excedentes a razn de
$2 por km.
- Distancia recorrida mayor a 1000km:
o $500 los primeros 300km
o Los km excedentes mayores a 300 y menores o iguales a 1000 a razn de $2
o Los km restantes a razn de $1.
Recopilado por: Juan Manuel Ucan Cih
41
34. Escribe un programa que lea los montos de las N ventas hechas por una tienda en un da y luego muestre en
pantalla el monto total de ventas y el monto promedio.
35. Elabora un programa, que calcule m x n (m > 0 , n > 0, ambos enteros) sin utilizar la operacin de
multiplicacin.
36. Escribe un programa que pida N nmeros y nos diga cul es el mayor y cul es el menor y la posicin en que
fueron ledos cada uno.
37. Escribe un programa que presente en pantalla la tabla de multiplicar de los nmeros entre 1 y 10,
determinada por el usuario.
38. Elabora un programa que calcule mn (n > 0 y entero) sin utilizar el mtodo de potencia (Math.pow()).
39. Elabora un programa que dado un valor n entero con n > 1, calcule y muestre en pantalla la siguiente
sumatoria:

=
n
i
i
i
1

40. Elabora un programa que reciba un valor n entero y
- si n>0 calcule n! (factorial de n)
- si n<0 escriba un mensaje de error y no calcule nada.
41. Escribe un programa que solicite una clave de acceso indefinidamente hasta que el usuario proporciona una
que coincida con el valor almacenado en una variable denominada contrasea.
42. Elabora un programa que calcule e muestre en pantalla los 15 primeros nmeros de la serie de Fibonacci.
Recuerda que los dos primeros nmeros de la serie son 0 y 1. El resto se calcula como la suma de los dos
nmeros que lo preceden.
Ejemplo: 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, . . .
43. Elabora un programa que calcule y muestre en pantalla el nmero de la serie de Fibonacci que se encuentra
en la posicin N, donde N>=3. Recuerda que los dos primeros nmeros de la serie son 0 y 1; y se encuentran
en las posiciones 1 y 2 respectivamente. El resto se calcula como la suma de los dos nmeros que lo preceden.
Por ejemplo, si N=8, entonces el nmero en dicha posicin es el 13
Serie: 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, . . .
Posiciones-> 1, 2, 3, 4, 5, 6, 7, 8, 9, 10,
44. Escribe un programa que lea nmeros hasta que se ingrese el cero. El segundo nmero se sumar al
primero, luego el tercero se restar, el cuarto se sumar, y as se deber seguir alternado hasta que llegue el
cero. Cuando se llegue a esta condicin deber mostrarse en pantalla el resultado de las operaciones
Recopilado por: Juan Manuel Ucan Cih
42
45. Elabora un programa para calcular cuntas veces se puede dividir un nmero X entre un nmero Y de tal
manera que el resultado de la divisin sea un nmero entero (no utilizar el operador /). Por ejemplo, si X=16
y Y=3 entonces Y divide a X 5 veces.
46. Realiza un programa que calcule y visualice en pantalla la suma de los mltiplos de 7 comprendidos entre
dos valores X e Y.
47. Elabora un programa que genere la siguiente secuencia de dgitos:
1
2 3 2
3 4 5 4 3
4 5 6 7 6 5 4
5 6 7 8 9 8 7 6 5
6 7 8 9 0 1 0 9 8 7 6
7 8 9 0 1 2 3 2 1 0 9 8 7
8 9 0 1 2 3 4 5 4 3 2 1 0 9 8
9 0 1 2 3 4 5 6 7 6 5 4 3 2 1 0 9
48. Escribir un programa que calcule la suma de la serie +2/22+3/23++n/2n y muestre el resultado en
pantalla.
49. Escribir un programa que calcule la suma 1+1/2+1/3++1/n y muestre el resultado en pantalla.
50. Escribe un programa que visualice la siguiente figura:
*
**
***
****
*****

51. Escribe un programa que visualice la siguiente figura:
*
**
***
****
*****
****
***
**
*

Recopilado por: Juan Manuel Ucan Cih
43
52. Elabora un programa que dado un entero n > 1, calcule e muestre en pantalla los elementos
correspondientes a la conjetura de Ullman, que consiste en lo siguiente:
Empieza con cualquier entero positivo.
Si es par, divdelo entre 2; si es impar multiplcalo por 3 y agrguele 1.
Obtn enteros sucesivamente repitiendo el proceso.
Al final se obtendr el nmero 1, independientemente del entero inicial. Por ejemplo, cuando el entero inicial
es 26, la secuencia ser: 26 13 40 20 10 5 16 8 4 2 1
53. Considera la siguiente propiedad descubierta por Nicmaco de Gerasa: sumando el primer impar, se
obtiene el primer cubo. Sumando los dos siguientes se obtiene el segundo cubo. Sumando los tres siguientes, se
obtiene el tercer cubo, etc.
Es decir:
1 = 1
3
,
3 + 5 = 2
3
= 8,
7 + 9 + 11 = 3
3
= 27,
13 + 15 + 17 + 19 = 4
3
= 64.
Elabora un programa que dado un nmero n entero positivo, muestre en pantalla los n primeros cubos
utilizando esta propiedad.
54. Escribe un programa que lea un nmero entero positivo y determine si es o no perfecto. Un nmero
perfecto es aquel cuya suma de sus divisores es igual a l mismo. Ejemplo: 6=1+2+3.
55. Escribe un programa que muestre en pantalla todos los nmeros perfectos comprendidos en un rango
determinado.
56. Escribe un programa que lea un nmero entero positivo y determine si es o no primo. Un nmero primo es
aquel que solo es divisible entre s mismo y la unidad.
57. Escribe un programa que muestre en pantalla todos los nmeros primos comprendidos en un rango
determinado.
Unidad 5: Arreglos
58. Elabora un programa que solicite 5 nmeros enteros y luego los muestre en orden inverso al introducido.
59. Elabora un programa que solicite 10 nmeros enteros luego los muestre en el siguiente orden: el primero,
el ltimo, el segundo, el penltimo, el tercero, etc.
60. Elabora un programa que solicite los datos de dos arreglos de 10 nmeros enteros y luego los mezcle en un
tercer arreglo de la forma: el 1 de A, el 1 de B, el 2 de A, el 2 de B, etc.
61. Elabora un programa que posibilite ingresar dos series de 5 nmeros enteros, que estarn ordenados
crecientemente. A continuacin, copiar (fusionar) los dos arreglos en un tercero, de forma que sigan
ordenados.
Recopilado por: Juan Manuel Ucan Cih
44
62. Escribe un programa que averige si dos vectores de N nmeros enteros son iguales. (La comparacin
deber detenerse en cuanto se detecte alguna diferencia.)
63. Escribe un programa que desplace todos los elementos de un arreglo de N nmeros enteros un lugar a la
derecha, teniendo en cuenta que el ltimo elemento se ha de desplazar al primer lugar. Por ejemplo, si el
arreglo original es:
5 8 4 20 15 12 30 35 2 7
Entonces, el arreglo resultante quedara as:
7 5 8 4 20 15 12 30 35 2

64. Generaliza el programa anterior para desplazar los elementos k lugares. Por ejemplo, si k=3, para el
siguiente arreglo
5 8 4 20 15 12 30 35 2 7
Entonces, el arreglo resultante quedara as:
35 2 7 5 8 4 20 15 12 30

65. Escribe un programa que halle el mximo elemento de un vector de N nmeros enteros.
66. Un tren consta de 10 vagones con una capacidad mxima de 50 personas por vagn, elabora un programa
que indique en cual vagn se encuentra la mayor cantidad de personas.
67. Dados dos arreglos de una dimensin (nmeros enteros), A y B, elabora un programa que permita unirlos
en un tercer arreglo y luego muestre el resultado en la pantalla. Por ejemplo,
Sea A

Sea B

El arreglo resultante quedara as:

68. En una guardera hay N nios de 1, 2 y 3 aos. Los nios de 1 ao consumen 6 paales al da, los nios de 2
aos consumen 3 paales diarios y los nios de 3 aos consumen 2 paales diarios. Se desea conocer el consumo
total de paales diarios.
Datos: edad1
edad2
. . . . .
edadN
donde edadi representa la edad del isimo nio en aos cumplidos (1, 2 3).
6 10 5
2 8 3 25 41
6 10 5 2 8 3 25 41
Recopilado por: Juan Manuel Ucan Cih
45
69. Una empresa tiene n empleados, por los que aporta al INFONAVIT el 3% de la nmina y al IMSS el 4%.
Donde los datos son:
n, s1, s2,..., sn
Donde:
n representa el nmero de empleados
si representa el sueldo del empleado i
Elabora un programa que calcule y muestre en pantalla:
El sueldo-empresa de cada empleado que consiste en el sueldo del empleado ms las aportaciones mencionadas;
El monto total de la nmina
El total de aportaciones al INFONAVIT y al IMSS
70. Las elecciones presidenciales estn prximas a realizarse en Mxico y solamente hay tres partidos diferentes
(1, 2 y 3). Uno de los partidos desea realizar una encuesta a N personas para saber la estrategia a seguir. A cada
persona entrevistada se le pregunta: Si va a votar; en caso de que vote, por qu partido votar. Elabora un
programa para procesar esta encuesta.
Los datos son:
n
resp1 (partido1)
resp2 (partido2)
. . .
respn (partidon)

Donde:
n es el nmero de personas a entrevistar
resp indica si la persona votar o no (0 = no votara, 1 = si votara)
partido indica la clave del partido por el que votar (Por ejemplo: 1=PAN, 2=PRI, 3=PRD)
Nota: el dato partido solamente se lee si la persona entrevistada ha contestado que s votar.

Se desea contestar las siguientes preguntas:
Cul es el porcentaje de abstenciones?
Cul es el porcentaje de votos a favor de cada partido en base al total de personas que van a votar?
Cul es el partido favorito?

71. Con base a un arreglo de N nmeros enteros aleatorios, comprendidos entre 4 y 12; elabora un programa
que construya un histograma a partir de dichos nmeros. Por ejemplo, si el arreglo incluyera los siguientes
valores [4,8,5,10,7,6,10,12] entonces el histograma queda as:
****
********
*****
**********
*******
******
**********
************

Recopilado por: Juan Manuel Ucan Cih
46
72. Una empresa que cuenta con k empleados desea realizar algunos clculos para la nueva nmina. Los datos
con que cuenta son los sueldos de los k empleados:
k, s1, s2, s3, ..., sk.
El aumento correspondiente a cada empleado se da segn el siguiente criterio:
15% si el sueldo es inferior a $5,000
10% si el sueldo est entre $5,000 y $15,000
5% si el sueldo es superior a $15,000
Elabora un programa para leer los datos y contestar a las siguientes preguntas:
Cul es el nuevo sueldo para cada empleado?
Cul es el total de la nueva nmina?

73. Elabora un programa que posibilite crear un arreglo de 10 nmeros enteros. A continuacin, el programa
debe mostrar el arreglo y solicitar un nmero y una posicin, insertando en dicha posicin el nmero ingresado,
desplazando a los dems hacia la derecha. Por ejemplo, si el arreglo est conformado de los siguientes nmeros
[4, 6, 2, 8, 9, 10, 3, 5, 8, 7] y se ingresa el 20 posicin 5, el arreglo resultante queda as: [4, 6, 2, 8, 9, 20, 10,
3, 5, 8]

74. Crea un arreglo de tamao MxM y luego indica si es simtrica o no, es decir si se obtiene la misma tabla al
cambiar las filas por columnas.

75. Dada una matriz cuadrada, elabora un programa que muestre en pantalla los elementos que se encuentran:
en la diagonal principal, debajo de la diagonal principal y encima de la diagonal principal.

76. Escribe un programa que determine el mximo valor de una matriz de M * N nmeros enteros.

77. En una clase hay 10 alumnos y cada uno de ellos tiene 4 calificaciones, correspondientes a 6 diferentes
asignaturas. Elabora un programa que calcule el promedio de cada alumno y, adems, el promedio general de
la clase.

78. Escribe un programa que genere y muestre en pantalla un cuadrado mgico, conformado por un nmero
impar de filas y columnas.

79. Elabora un programa que permita ingresar los datos de una matriz de m X n y cree otra matriz escribiendo
las columnas como renglones y los renglones como columnas.

80. Elabora un programa que genere las tablas de multiplicar del 1 al 10 en un solo arreglo de dos dimensiones
y posteriormente muestre dicho arreglo.

81. Una tabla de estadsticas muestra la produccin de barriles de petrleo de 5 pases petroleros (Mxico,
Venezuela, Arabia Saudita, Libia y Argelia), durante el segundo semestre de 2010. La tabla tiene el siguiente
formato:
bm, bv, bas, bl, ba: No de barriles/pas en enero.
bm, bv, bas, bl, ba: No de barriles/pas en febrero.
. . .
bm, bv, bas, bl, ba: No. de barriles/pas en junio.
Elabora un programa que calcule la produccin total de barriles en el semestre y la de cada uno de los pases
involucrados.
Recopilado por: Juan Manuel Ucan Cih
47
82. Elabora un programa que posibilite crear una tabla bidimensional de tamao MxN y rellenarla de la
siguiente forma: la posicin tabla[i][j] debe contener i+j. Despus, mostrar en pantalla el contenido de dicho
arreglo.

83. Elabora un programa que posibilite crear una tabla bidimensional de tamao MxN donde todos sus
elementos deben ser 0 salvo los de los bordes que deben ser 1. Mostrar en pantalla el contenido de dicha tabla.
Por ejemplo, si el arreglo es de 5 filas y 4 columnas, entonces el resultado es el siguiente:
1 1 1 1
1 0 0 1
1 0 0 1
1 0 0 1
1 1 1 1

84. Elabora un programa que permita crear un arreglo de MxM y lo rellene de forma que los
elementos de la diagonal principal sean 1 y el resto 0.
85. Elabora un programa que permita crear dos arreglos de 12 valores numricos enteros y luego los
mezcle en un tercer arreglo de la siguiente forma: 3 de la tabla A, 3 de la B, otros 3 de A, otros 3 de
la B, etc.
86. Elabora un programa que permita ingresar de forma creciente y ordenada 5 valores numricos
enteros en un arreglo. A continuacin, el programa debe solicitar el ingreso de un nmero entero
para luego insertarlo en el lugar adecuado de modo que el arreglo contine ordenado. El programa
debe mostrar en pantalla los valores almacenados en el arreglo as como el valor reemplazado.
87. Elabora un programa que permita crear un arreglo de 10 elementos numricos enteros. A
continuacin, el programa debe solicitar una posicin entre 0 y 9 de modo que elimine el elemento
situado en la posicin dada sin dejar huecos. El programa debe mostrar los valores del arreglo
original as como los valores del arreglo resultante.
88. Elabora un programa que permita crear un arreglo de MxN con valores numricos enteros
mayores que cero. A continuacin, almacene en otro arreglo (de una dimensin) primero los valores
pares y luego los impares. Mostrar en pantalla los valores de los dos arreglos.
Recopilado por: Juan Manuel Ucan Cih
48

Bibliografa
1.- Bernd Bruegge , Allen H. Dutoit ; "Ingeniera de software orientado a objetos "; Pearson
Educacin de Mxico; Mxico; 2002.
2.- Eric J. Braude; "Ingeniera de Software: Una perspectiva orientada a objetos"; Alfaomega Grupo
Editor; Mxico; 2003.
3.- Perdita Stevens, Rob Pooley; "Utilizacion del UML en Ingenieria de Software con Objetos y
Componentes", Primera edicion; Addison Wesley; Madrid;2002.
4.- Grady Booch, JAmes Rumbauch, Ivar Jacobson; "El Lenguaje Uniicado de Modelado"; Primera
edicin; Addison Wesley; Madrid; 1999.
5.- Joseph Schmuller; "Aprendiendo UML en 24 horas "; Prentice Hall; Mxico ; 2000.
6.- Lus Joyanes Aguilar; "Fundamentos de Programacin: Algoritmos, Estructuras de Datos y
Objetos ",Tercera edicin; McGraw-Hill; Mxico; 2004.
7.- Miguel Rodrguez Gmez-Stern, Marco Antonio Besteiro Gorostizaga; "Desarrollo de
aplicaciones .NET con Visual C# "; McGraw-Hill; Espaa; 2002.
8. Javier Garca de Jaln, Jos Ignacio Rodrguez, Iigo Mingo. Aprenda Java como si estuviera en
primero; Escuela Superior de Ingenieros Industriales Universidad de Navarra; Espaa: 1999.
9. Jorge Snchez. Java2 incluye Swing, Threads, programacin en red, JavaBeans, JDBC y JSP /
Servlets.
10. Gustavo Guillermo Prez. Aprendiendo Java y Programacin Orientada a Objetos.
http://compunauta.com/forums/linux/programacion/java/ebook.html (Consultado en Agosto del
2010)

Direcciones Web
http://www.oracle.com/technetwork/java/javase/downloads/index.html
http://www.oracle.com/technetwork/java/download-138590.html
http://docs.oracle.com/javase/tutorial/java/index.html
http://sistemas.itlp.edu.mx/tutoriales/fundamentosdeprog/
http://computacion.itam.mx/matAP-AyP/agodic04/APdiagramas-024.doc

Das könnte Ihnen auch gefallen