arreglos expresiones y control de flujo

Post on 26-May-2015

7.281 Views

Category:

Technology

1 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Arreglos, expresiones y control de Arreglos, expresiones y control de flujoflujo

Ing. Rolando Steep Quezada MartínezIng. Rolando Steep Quezada Martínez

rqm@upnorte.edu.perqm@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.

top related