Arreglos Expresiones y Control de Flujo
-
Upload
rolando-steep-quezada-martinez -
Category
Technology
-
view
7.281 -
download
1
Transcript of Arreglos Expresiones y Control de Flujo
![Page 1: Arreglos Expresiones y Control de Flujo](https://reader038.fdocuments.es/reader038/viewer/2022103000/5563a52dd8b42a2d538b5587/html5/thumbnails/1.jpg)
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](https://reader038.fdocuments.es/reader038/viewer/2022103000/5563a52dd8b42a2d538b5587/html5/thumbnails/2.jpg)
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](https://reader038.fdocuments.es/reader038/viewer/2022103000/5563a52dd8b42a2d538b5587/html5/thumbnails/3.jpg)
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](https://reader038.fdocuments.es/reader038/viewer/2022103000/5563a52dd8b42a2d538b5587/html5/thumbnails/4.jpg)
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](https://reader038.fdocuments.es/reader038/viewer/2022103000/5563a52dd8b42a2d538b5587/html5/thumbnails/5.jpg)
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](https://reader038.fdocuments.es/reader038/viewer/2022103000/5563a52dd8b42a2d538b5587/html5/thumbnails/6.jpg)
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](https://reader038.fdocuments.es/reader038/viewer/2022103000/5563a52dd8b42a2d538b5587/html5/thumbnails/7.jpg)
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](https://reader038.fdocuments.es/reader038/viewer/2022103000/5563a52dd8b42a2d538b5587/html5/thumbnails/8.jpg)
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](https://reader038.fdocuments.es/reader038/viewer/2022103000/5563a52dd8b42a2d538b5587/html5/thumbnails/9.jpg)
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](https://reader038.fdocuments.es/reader038/viewer/2022103000/5563a52dd8b42a2d538b5587/html5/thumbnails/10.jpg)
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](https://reader038.fdocuments.es/reader038/viewer/2022103000/5563a52dd8b42a2d538b5587/html5/thumbnails/11.jpg)
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](https://reader038.fdocuments.es/reader038/viewer/2022103000/5563a52dd8b42a2d538b5587/html5/thumbnails/12.jpg)
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](https://reader038.fdocuments.es/reader038/viewer/2022103000/5563a52dd8b42a2d538b5587/html5/thumbnails/13.jpg)
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](https://reader038.fdocuments.es/reader038/viewer/2022103000/5563a52dd8b42a2d538b5587/html5/thumbnails/14.jpg)
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](https://reader038.fdocuments.es/reader038/viewer/2022103000/5563a52dd8b42a2d538b5587/html5/thumbnails/15.jpg)
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](https://reader038.fdocuments.es/reader038/viewer/2022103000/5563a52dd8b42a2d538b5587/html5/thumbnails/16.jpg)
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](https://reader038.fdocuments.es/reader038/viewer/2022103000/5563a52dd8b42a2d538b5587/html5/thumbnails/17.jpg)
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](https://reader038.fdocuments.es/reader038/viewer/2022103000/5563a52dd8b42a2d538b5587/html5/thumbnails/18.jpg)
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](https://reader038.fdocuments.es/reader038/viewer/2022103000/5563a52dd8b42a2d538b5587/html5/thumbnails/19.jpg)
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.