Arreglos, expresiones y control de Arreglos, expresiones y control de flujoflujo
Ing. Rolando Steep Quezada MartínezIng. Rolando Steep Quezada Martínez
[email protected]@upnorte.edu.pe
Programación Básica en Java y Programación Orientada a Objetos Programación Básica en Java y Programación Orientada a Objetos
Copyright © 2007, Universidad Privada del Norte S.A.C. – Ing. Rolando Steep Quezada MartínezCopyright © 2007, Universidad Privada del Norte S.A.C. – Ing. Rolando Steep Quezada Martínez 4-4-22
ArreglosArreglos
• En Java, un Array es un tipo de objeto. Este objeto puede contener objetos (por ejemplo, un array de String o de int).
• Se declara una variable de tipo Array mediante [ ]:
tipo_basico[] nombre_variable ;
• Por ejemplo: int[] values;• Como un Array es una clase dinámica, se tiene que construir un
objeto de este tipo mediante el operador new:
nombre_variable = new tipo_basico[numero_de_elementos];
Copyright © 2007, Universidad Privada del Norte S.A.C. – Ing. Rolando Steep Quezada MartínezCopyright © 2007, Universidad Privada del Norte S.A.C. – Ing. Rolando Steep Quezada Martínez 4-4-33
Declaración y asignación de un arregloDeclaración y asignación de un arreglo
• Primera Posibilidad (Declarar y luego Asignar)
int miArreglo[ ] ;miArreglo = new int[100] ;
• Segunda Posibilidad (Declarar y Asignar)
int miArreglo[ ] = new int[100];
• Tercera Posibilidad (Declarar e Inicializar con Valores)
int miArreglo[ ] = {1,2,5,6,7,3,4} ;
• Cuarta Posibilidad (Declaración de múltiples arreglos en una línea)
Int [ ] miArreglo1, miarreglo2 ;
Copyright © 2007, Universidad Privada del Norte S.A.C. – Ing. Rolando Steep Quezada MartínezCopyright © 2007, Universidad Privada del Norte S.A.C. – Ing. Rolando Steep Quezada Martínez 4-4-44
Arreglos bi-dimensionalesArreglos bi-dimensionales
• Un arreglo puede contener otro arreglo, ej. Si se desea almacenar la información en forma de una tabla (filas x columnas):
int tabla[ ][ ] = new int[ 3 ][ 3 ] ;
Copyright © 2007, Universidad Privada del Norte S.A.C. – Ing. Rolando Steep Quezada MartínezCopyright © 2007, Universidad Privada del Norte S.A.C. – Ing. Rolando Steep Quezada Martínez 4-4-66
Arreglos desigualesArreglos desiguales
• Al contrario que otros lenguajes, Java no le fuerza a especificar el mismo número de columnas por cada fila
int [ ][ ] x = new int [ 5 ][ ];
x [0] = new int [3];
x [1] = new int [2];
x [2] = new int [3];
x [3] = new int [5];
x [4] = new int [1];
Copyright © 2007, Universidad Privada del Norte S.A.C. – Ing. Rolando Steep Quezada MartínezCopyright © 2007, Universidad Privada del Norte S.A.C. – Ing. Rolando Steep Quezada Martínez 4-4-77
Algunas consideracionesAlgunas consideraciones
Mientras la manipulación de un arreglo es muy sencilla, tiene ciertas limitaciones:• Su tamaño no puede cambiar. No podemos reducirlo si ya no
queremos un elemento o aumentarlo si queremos más elementos.• Tenemos que recordar nosotros mismos el numero de elementos
que tenemos en el array (que puede ser <= length), por ejemplo con un contador.
• Los elementos son del mismo tipo.
Error Común:• Intentar manipular un elemento con un índice no válido, ej. Si índice
es negativo o si índice >= length, se lanzará la excepción ArrayIndexOutOfBoundsException
Copyright © 2007, Universidad Privada del Norte S.A.C. – Ing. Rolando Steep Quezada MartínezCopyright © 2007, Universidad Privada del Norte S.A.C. – Ing. Rolando Steep Quezada Martínez 4-4-88
ExpresionesExpresiones
• Literales y variables son expresiones primarias:
1.7 // Literal real de tipo double
sum // Variable
Los literales se evalúan a sí mismos.
Las variables se evalúan a su valor.
• Los operadores nos permiten combinar expresiones primarias y otras expresiones formadas con operadores:
1 + 2 + 3*1.2 + (4 +8)/3.0
Copyright © 2007, Universidad Privada del Norte S.A.C. – Ing. Rolando Steep Quezada MartínezCopyright © 2007, Universidad Privada del Norte S.A.C. – Ing. Rolando Steep Quezada Martínez 4-4-99
Sentencias de asignaciónSentencias de asignación
• Las sentencias de asignación constituyen el ingrediente básico en la construcción de programas con lenguajes imperativos.
Sintaxis:
<variable> = <expresión> ;
• Ejemplos
x = x + 1 ;int miVariable = 20 ;otraVariable = miVariable ;
Copyright © 2007, Universidad Privada del Norte S.A.C. – Ing. Rolando Steep Quezada MartínezCopyright © 2007, Universidad Privada del Norte S.A.C. – Ing. Rolando Steep Quezada Martínez 4-4-1010
¿Qué es el flujo de un programa?¿Qué es el flujo de un programa?
• Secuencia de Sentencias con un inicio y un final.
• Los delimitadores usados en Java son “{” para el inicio y “}” para el fin del bloque
Sentencia1 ;
Sentencia2 ;
Sentencia3 ;
Bloque
Copyright © 2007, Universidad Privada del Norte S.A.C. – Ing. Rolando Steep Quezada MartínezCopyright © 2007, Universidad Privada del Norte S.A.C. – Ing. Rolando Steep Quezada Martínez 4-4-1111
Bifurcaciones – Sentencia de control de Bifurcaciones – Sentencia de control de saltos (if-else)saltos (if-else)
Flujo de Eventos
Al evaluar el algoritmo, si se encuentra una sentencia if-else, se evalúa la expresión booleana, si el resultado es “true” o verdadero, se ejecuta las sentencias siguientes al término de la expresión; en caso contrario, el resultado será “false” o falso y se ejecuta las sentencias que siguen a la palabra reservada else.
if( expresión-booleana )
{
sentencias;
}
[else {
sentencias;
}]
Sintanxis
Copyright © 2007, Universidad Privada del Norte S.A.C. – Ing. Rolando Steep Quezada MartínezCopyright © 2007, Universidad Privada del Norte S.A.C. – Ing. Rolando Steep Quezada Martínez 4-4-1212
Bifurcaciones - Sentencias de control de Bifurcaciones - Sentencias de control de saltos (switch)saltos (switch)
switch(expresión) {
case valor1:
sentencias;
break;
case valor2:
sentencias;
break;
[default:
sentencias;]
}
Flujo de EventosSintaxis
Al evaluar el algoritmo si entra en una bifurcación switch el valor de la expresión se va comparando con cada uno de los casos “case” válidos hasta encontrar su identidad, si un caso coincide con el valor de la expresión se ejecutan las sentencias seguidas a éste hasta encontrar un break. Se puede definir un caso opcional “default” el cual evalúa todos los casos no válidos o los valores no coincidente con la expresión.
Copyright © 2007, Universidad Privada del Norte S.A.C. – Ing. Rolando Steep Quezada MartínezCopyright © 2007, Universidad Privada del Norte S.A.C. – Ing. Rolando Steep Quezada Martínez 4-4-1313
Bucles - Sentencias repetitivas (for)Bucles - Sentencias repetitivas (for)
for( inicialización; exp-booleana; iteración ) {
sentencias;
}
Flujo de Eventos
Cuando se evalúa el algoritmo al entrar a una sentencia for, se ejecuta por única vez la sección de inicialización, luego se evalúa la expresión booleana; si el resultado es verdadero o “true” se ejecutan las sentencias contenidas en el cuerpo de la instrucción, por último se ejecuta el bloque de iteración y se evalúa nuevamente la expresión booleana hasta que el resultado sea falso o “false”.
Sintáxis
Copyright © 2007, Universidad Privada del Norte S.A.C. – Ing. Rolando Steep Quezada MartínezCopyright © 2007, Universidad Privada del Norte S.A.C. – Ing. Rolando Steep Quezada Martínez 4-4-1414
Bucles - Sentencias repetitivas (while)Bucles - Sentencias repetitivas (while)
while( expresión-booleana ) {
sentencias;
}
Cuando se evalúa el algoritmo al entrar a una sentencia while, se evalúa la expresión booleana, si el resultado es verdadero o true, se ejecutan las sentencias contenidas en el cuerpo del bloque while y se evalúa nuevamente la expresión booleana “mientras” que el resultado no sea falso o false.
Flujo de Eventos
Sintáxis
Copyright © 2007, Universidad Privada del Norte S.A.C. – Ing. Rolando Steep Quezada MartínezCopyright © 2007, Universidad Privada del Norte S.A.C. – Ing. Rolando Steep Quezada Martínez 4-4-1515
Bucles - Sentencias repetitivas (do-while)Bucles - Sentencias repetitivas (do-while)
do {
sentencias;
}while(expresión-booleana );
Flujo de Eventos
Sintáxis
Cuando se evalúa el algoritmo al entrar a una sentencia do, se ejecuta las sentencias contenidas en el bloque, luego se evalúa la expresión booleana que sigue a la instrucción while, si el resultado es verdadero o true, se ejecutan nuevamente las sentencias contenidas en el cuerpo del bloque “mientras” que el resultado no sea falso o false.
Copyright © 2007, Universidad Privada del Norte S.A.C. – Ing. Rolando Steep Quezada MartínezCopyright © 2007, Universidad Privada del Norte S.A.C. – Ing. Rolando Steep Quezada Martínez 4-4-1616
Bucles - Sentencias repetitivas (for In) : Bucles - Sentencias repetitivas (for In) : Sólo en JDK 1.5 ó TiggerSólo en JDK 1.5 ó Tigger
for ( declaración var : expresión ){
sentencias;
}
Flujo de Eventos
Sintáxis
Cuando se evalúa el algoritmo al entrar a una sentencia for-in, se ejecuta el bloque de declaración por única vez el cuál establece una variable que tomará el valor de un elemento de la expresión (arreglo o colección) en cada iteración del ciclo hasta recorrer todos los elementos; Por cada iteración se evalúan las sentencias contenidas en el cuerpo del bloque.
Copyright © 2007, Universidad Privada del Norte S.A.C. – Ing. Rolando Steep Quezada MartínezCopyright © 2007, Universidad Privada del Norte S.A.C. – Ing. Rolando Steep Quezada Martínez 4-4-1717
Instrucciones Instrucciones breakbreak y y continuecontinue dentro de un dentro de un buclebucle
• Break: se utiliza para forzar una terminación anormal de un bucle.
• Continue: hace que la ejecución prosiga con la siguiente iteración saltando las sentencias que están a continuación.
• Break/Continue son instrucciones que hay que utilizar con mucho cuidado, pues, cambian el flujo normal de un bucle.
Copyright © 2007, Universidad Privada del Norte S.A.C. – Ing. Rolando Steep Quezada MartínezCopyright © 2007, Universidad Privada del Norte S.A.C. – Ing. Rolando Steep Quezada Martínez 4-4-1818
Bugs al utilizar buclesBugs al utilizar bucles
– Bucles Infinitos cuando la condición para continuar el ciclo es una estructura while, for, do/while nunca deja de cumplirse o cuando existe un punto y coma “;” después de la cabecera de la estructura while.
– Olvidar el enunciado break cuando se usa una estructura switch
– Falta de agrupación en expresiones condicionales
– Uso de valores de punto flotante para controlar ciclos de conteo
– Colocar un punto y coma “;” inmediatamente después del paréntesis derecho de una cabecara for.
Copyright © 2007, Universidad Privada del Norte S.A.C. – Ing. Rolando Steep Quezada MartínezCopyright © 2007, Universidad Privada del Norte S.A.C. – Ing. Rolando Steep Quezada Martínez 4-4-1919
ResumenResumen
• Los arreglos son construcciones de objetos del mismo tipo de datos que tiene una dimensión fija.
• La sentencias if/else y switch permiten adicionar control condicional en nuestra aplicación.
• Los bucles permite crear aplicaciones iterativas• La sentencia break detiene la ejecución de un bucle.• El bucle for/In sólo esta disponible en el JDK 1.5 o superior
Copyright © 2007, Universidad Privada del Norte S.A.C. – Ing. Rolando Steep Quezada MartínezCopyright © 2007, Universidad Privada del Norte S.A.C. – Ing. Rolando Steep Quezada Martínez 4-4-2020
Práctica 3Práctica 3
• Objetivos:
– Escribir aplicaciones secuenciales simples en Java.– Entender las estructuras de control de flujo if, if/else,
while, do/while, for y for/in.– Entender la repetición controlada por contador y la
repetición controlada por centinela.