arreglos expresiones y control de flujo

19
Arreglos, expresiones y Arreglos, expresiones y control de flujo control de flujo Ing. Rolando Steep Quezada Martínez Ing. Rolando Steep Quezada Martínez [email protected] [email protected] Programación Básica en Java y Programación Orientada a Objetos Programación Básica en Java y Programación Orientada a Objetos

Upload: rolando-steep-quezada-martinez

Post on 26-May-2015

7.281 views

Category:

Technology


1 download

TRANSCRIPT

Page 1: Arreglos Expresiones y Control de Flujo

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

Page 2: Arreglos Expresiones y Control de Flujo

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];

Page 3: Arreglos Expresiones y Control de Flujo

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 ;

Page 4: Arreglos Expresiones y Control de Flujo

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 ] ;

Page 5: Arreglos Expresiones y Control de Flujo

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];

Page 6: Arreglos Expresiones y Control de Flujo

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

Page 7: Arreglos Expresiones y Control de Flujo

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

Page 8: Arreglos Expresiones y Control de Flujo

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 ;

Page 9: Arreglos Expresiones y Control de Flujo

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

Page 10: Arreglos Expresiones y Control de Flujo

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

Page 11: Arreglos Expresiones y Control de Flujo

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.

Page 12: Arreglos Expresiones y Control de Flujo

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

Page 13: Arreglos Expresiones y Control de Flujo

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

Page 14: Arreglos Expresiones y Control de Flujo

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.

Page 15: Arreglos Expresiones y Control de Flujo

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.

Page 16: Arreglos Expresiones y Control de Flujo

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.

Page 17: Arreglos Expresiones y Control de Flujo

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.

Page 18: Arreglos Expresiones y Control de Flujo

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

Page 19: Arreglos Expresiones y Control de Flujo

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.