Estructuras de control condicional y ciclos

Slides:



Advertisements
Presentaciones similares
If anidados y Switch Prof. Lillian Bras.
Advertisements

Capítulo 1 “Elementos de Programación”
CICLOS por Profesora Lillian Bras
Telling Time.
Chapter 6 Looping Dale/Weems/Headington. 2 Chapter 6 Topics l While Statement Syntax l Count-Controlled Loops l Event-Controlled Loops l Using the End-of-File.
Verbos con Cambio de Raiz en el Subjuntivo.
COMP 250.  Ejemplo:  Suponer que se necesita codificar un programa donde se muestre como resultado el string “Bienvenidos al mundo de JAVA!!!” cien.
Write the letter of the correct definition or sentence next to the word below. 1.________ Algebraic Expression 2.________ Equation 3.________ Exponent.
Estructuras de control condicional
Estructuras de Decisión
Ciclos en Visual Basic Yaimira Pérez. Los ciclos son estructuras de repetición que ejecutan una o varias instrucciones durante la cantidad de veces que.
Applications Development I 6.1 Foro Tomas Anzalotta Alvarado.
Ciclos disponibles en Visual Basic Nury Capera Tovar.
ESTRUCTURAS DE DATOS Y ALGORITMOS Samuel Peñaló
Affirmative and Negative Words P. 31 Realidades 2.
CICLOS CONDICIONALES DINÁMICOS Y CICLOS CONDICIONALES FIJOS Aixa Sosa Colón NE: Programación 2250 – 3240 ONL Profesora. Rebecca Acevedo Rivera.
Asignación 6.1 Foro. Ciclos condicionales dinámicos  Estos ciclos deben ser del tipo booleano, es decir que se evaluara una expresión con un resultado.
Estructuras de control Por Diego Caro A. udec.cl}
Ciclos Condicionales Joel R. Almodóvar Rivera Tarea 6-1 PROG2310L.
Ciclos en Visual Basic Elena Lopez National University College Online Agosto 3, 2010.
Control, adquisición y monitoreo con Arduino y Visual Basic .net
Ingeniero en Computación José Alfredo Cobián Campos
SERIES Y SUMATORIAS.
Tema 6: Elementos de programación adicionales
Introducción a JAVA COMP 250.
Estructuras de Control en Visual Basic.net
Operadores Java es un lenguaje rico en operadores, que son casi idénticos a los de C/C++.
TECNOLOGICO DE ESTUDIOS SUPERIORES DE COACALCO
ESTRUCTURAS CONDICIONALES
Introducción a la Programación Multimedial
ROBERTO PINEDA FLORES. ALEXIS JULIAN VELAZQUEZ NAVA.
Ciclos condicionales y exactos Estructura de control de ciclos
Olimpiadas Chilenas de Informática - Formación
Anexo Chame-San Carlos
8 de febrero de 2017.
8 de febrero de 2017.
Estructuras de Control en Visual Basic.net
Las clases de Sra. Schwarz Realidades 1
PREGUNTAS: Questions and Question Words
Select Case Visual Basic.
Bucles y estructuras de decisión
Fundamentos del lenguaje de programación Condicionales, ciclos, Métodos, enumeraciones Escuela Técnica Superior Kinal Instructor Edwin Tumax.
Teclado y Pantalla (Java estándar)
First Grade Dual High Frequency Words
LÓGICA DE PROGRAMACIÓN
Unidad 2. Algoritmos Unidad 4. Control de flujo
Unidad 3. Introducción a la programación
Programación Orientada a Objetos
Estructuras de control en PHP
Programación en Java..
ESTRUCTURAS DE CONTROL EN VISUAL BASIC.NET Prof.: Rafael Mourglia.
Estructuras de control Resolución de problemas y algoritmos
HERRAMIENTAS DE PROGRAMACIÓN
Fundamentos de programación
Estructuras de Repetición Pseudocodigo1 Estructuras de Repetición Algoritmos Mientras Hacer-Mientras Para.
Fundamentos de programación
Metodología de la Programación
Tema 9. Estructuras de repetición. Clase 3
PREGUNTAS: Questions and Question Words
Quasimodo: Tienes que hacer parte D de la tarea..
Bucles y estructuras de decisión
PROGRAMACIÓN (2).
INTRODUCCIÓN A LA PROGRAMACIÓN ABRAHAM SOPLA MASLUCÁN MAESTRO EN CIENCIAS DE LA COMPUTACIÓN INSTITUTO TECNOLÓGICO DE MONTERREY.
CICLOS EN JAVA FOR, WHILE, DO WHILE Un ciclo en Java o bucle en Java (como prefieras llamarlo) permite repetir una o varias instrucciones cuantas veces.
Informática Ingeniería en Electrónica y Automática Industrial
Estructuras de Repetición Algoritmos
Antes de empezar contesta las preguntas sólo escribe las respuestas
Problema Un programa debe leer 2 números desde un objeto Console. El primero es el monto que un cliente debe pagar por una compra y el segundo la cantidad.
Tema 8. Estructuras de decisión. Clases 1 y 2.
Tema 9. Estructuras de repetición. Clase 2
Transcripción de la presentación:

Estructuras de control condicional y ciclos M.C Alejandro Castellanos Lopez 1

Operadores relacionales Los operadores relacionales permiten construir expresiones booleanas es decir, expresiones cuyo valor es 1 o 0. Los operadores relacionales permiten comparar valores o expresiones aritméticas. En C el valor 1 se interpreta como verdadero y el 0 como falso. Operador Significado == igualdad != Diferente > Mayor que < Menor que >= Mayor o igual <= Menor o igual M.C Alejandro Castellanos Lopez

M.C Alejandro Castellanos Lopez Ejemplos 1 > 2 = 0 falso 3 < 5 = 1 verdadero (7 – 4) == 3 = 1 verdadero 17 >= (5 + 12) = 1 verdadero i = 3; j = 7; i * j != 21 = 0 falso float a=0.1; (3*a – 0.3) == 0 = 0 falso (OJO con los reales) 3 > 1 > 0 = 1 verdadero Asignar a una variable la mayor de otras dos: a = 17; b = 15; c = a*(a>=b) + b*(b>=a); c = 17 a>=b = 1 y b>=a = 0 M.C Alejandro Castellanos Lopez

M.C Alejandro Castellanos Lopez Ejercicio Encuentre el valor de las siguientes expresiones relacionales 2 != 7 3 > 2 -1 <= -2 (5 – 7) > (3 – 4) (3*2 + 5*4) == (8*5/2 + 4*4 – 10) Encuentre el valor asignado a la variable x, suponga a = 3, b = 4, c = 12 x = (2*a > c – b)*c + (c == 2*b + 2*a – 2)*a; x = (a <= b)*(a – b) + (c > 2*a + 5)*(c – 2*a); M.C Alejandro Castellanos Lopez

M.C Alejandro Castellanos Lopez Sentencia if La sentencia if permite decidir ejecutar o no una instrucción o un bloque de instrucciones. Sintaxis if (condición) Instrucción o bloque; Un bloque es una secuencia de instrucciones englobadas entre llaves (“{}”). La condición esta formada por una expresión booleana. M.C Alejandro Castellanos Lopez

Logic of an if statement condition evaluated false statement true M.C Alejandro Castellanos Lopez

M.C Alejandro Castellanos Lopez An example of an if statement: if (sum > MAX) delta = sum - MAX; System.out.println ("The sum is " + sum); First the condition is evaluated -- the value of sum is either greater than the value of MAX, or it is not If the condition is true, the assignment statement is executed -- if it isn’t, it is skipped. Either way, the call to println is executed next M.C Alejandro Castellanos Lopez

M.C Alejandro Castellanos Lopez Indentation The statement controlled by the if statement is indented to indicate that relationship The use of a consistent indentation style makes a program easier to read and understand Although it makes no difference to the compiler, proper indentation is crucial M.C Alejandro Castellanos Lopez

M.C Alejandro Castellanos Lopez Sentencia if - else La sentencia if – else permite decidir entre ejecutar una instrucción (o un bloque de instrucciones) y otra instrucción (o un bloque de instrucciones) Sintaxis if (condición) Instrucción o bloque; else M.C Alejandro Castellanos Lopez

Logic of an if-else statement condition evaluated false statement2 statement1 true M.C Alejandro Castellanos Lopez

Indentation Revisited Remember that indentation is for the human reader, and is ignored by the computer if (total > MAX) System.out.println ("Error!!"); errorCount++; M.C Alejandro Castellanos Lopez

M.C Alejandro Castellanos Lopez Block Statements Several statements can be grouped together into a block statement delimited by braces A block statement can be used wherever a statement is called for in the Java syntax rules if (total > MAX) { System.out.println ("Error!!"); errorCount++; } M.C Alejandro Castellanos Lopez

M.C Alejandro Castellanos Lopez Block Statements In an if-else statement, the if portion, or the else portion, or both, could be block statements if (total > MAX) { System.out.println ("Error!!"); errorCount++; } Else { System.out.println ("Total: " + total); current = total*2; M.C Alejandro Castellanos Lopez

M.C Alejandro Castellanos Lopez Laboratorio Se desea resolver un sistema de ecuaciones de 2x2 de la forma a x + b y = c d x + e y = f El sistema puede resolverse con las fórmulas x = (c e – b f) / (a e – b d) y = (a g – c e) / (a e – b d) El sistema tiene solución si el denominador de estas fracciones es diferente de cero. El algoritmo es: si (a f – b e ) != 0 calcular solución mostrar resultado sino informar que no hay solución M.C Alejandro Castellanos Lopez

Operadores lógicos Existen 4 operadores lógicos en C: and = &&, or = ||, not = !, xor = ^. Los operadores lógicos tienen una prioridad más baja que los operadores relacionales. expresión1 expresión2 expresión1 && expresión2 1 expresión1 expresión2 expresión1 || expresión2 1 expresión ! expresión 1 expresión1 expresión2 expresión1 ^ expresión2 1 Prioridad de evaluación ! && || M.C Alejandro Castellanos Lopez

ejemplos de operadores lógicos x > 5 || x == 3 verdadero para x = 3, 6, 7, ... ! (x == 7) && x % 2 != 0 verdadero para x = 1, 3, 5, 9, 11, ... x <= -1 || x > 5 || x ==2 verdadero para x = …, -2, -1, 2, 6, 7, 8, ... En el siguiente fragmento se despliegan solo los múltiplos de 7 o cuadrados perfectos if(num % 7 == 0 || sqrt(num)-floor(sqrt(num))==0) M.C Alejandro Castellanos Lopez

M.C Alejandro Castellanos Lopez Discusión Escriba sentencias que sean verdaderas para: x = 1, 2, 4, 8 x = 7, 14, 21, …, 49 x = 1, 2, 3, 6, 7, 8, 9 x = …, - 5, -3, -1, 0, 2, 4, 6, … M.C Alejandro Castellanos Lopez

M.C Alejandro Castellanos Lopez Anidamiento Una sentencia if puede tener en su parte verdadera o falsa otra sentencia if. O sea if(condición1) if(condición2) if(condición3) sentencias; else ... M.C Alejandro Castellanos Lopez

M.C Alejandro Castellanos Lopez Laboratorio Se desea un programa para imprimir un letrero dependiendo de la siguiente tabla: condición letrero cal < 6 “Reprobado” 6 <= cal < 7 “Suficiente” 7 <= cal < 8 “Bien” 8 <= cal < 9 “Muy bien” 9 <= cal < 10 “Excelente” M.C Alejandro Castellanos Lopez

M.C Alejandro Castellanos Lopez Laboratorio Se desea comparar 3 números leídos desde el teclado, imprimiendo el mayo de ellos. Se puede resolver comparando el primero con el segundo, luego si el primero es mayor, se compara el primero con el tercero. Si el primero no es mayor que el segundo, entonces se compara el segundo con el tercero. verdadero a>b verdadero falso verdadero b>c falso a>c “b mayor” “c mayor” “c mayor” “a mayor” M.C Alejandro Castellanos Lopez

Solución con condiciones compuestas Utilizando condiciones compuestas, primero comparamos el primero con los dos restantes, si es mayor que los otros dos, imprimimos el primero, sino, comparamos el segundo con los otros dos, etc. Note que debe usar >= para que se imprime forzosamente un resultado. falso a>=b && a>=c verdadero verdadero “a mayor” falso b>=a && b>=c “b mayor” c>=a && c>=b verdadero “c mayor” M.C Alejandro Castellanos Lopez

M.C Alejandro Castellanos Lopez Laboratorio Rescriba las siguientes sentencias de if anidados sin usar ningún anidamiento: if ( a < c ) if ( a < b ) if ( b < c ) if ( a >= b ) x = y; x = z; else else x = z; x = y; else else x = z; x = z; M.C Alejandro Castellanos Lopez

The Conditional Operator Java has a conditional operator that uses a boolean condition to determine which of two expressions is evaluated Syntax: condition ? express_1 : express_2 If the condition is true, express_1 is evaluated; if the condition is false express_2 is evaluated; The value of the entire conditional operator is the value of the selected expression M.C Alejandro Castellanos Lopez

The Conditional Operator The conditional operator is similar to an if-else statement, except that it is an expression that returns a value For example: larger = ((num1 > num2) ? num1 : num2); If num1 is greater than num2, then num1 is assigned to larger; otherwise, num2 is assigned to larger The conditional operator is ternary because it requires three operands M.C Alejandro Castellanos Lopez

The Conditional Operator Another example: System.out.println ("Your change is " + count + ((count == 1) ? "Dime" : "Dimes")); If count equals 1, then "Dime" is printed If count is anything other than 1, then "Dimes" is printed M.C Alejandro Castellanos Lopez

M.C Alejandro Castellanos Lopez Sentencia switch La sentencia switch permite elegir entre varias alternativas. switch and case are reserved words switch ( expression ){ case value1 : statement-list1 case value2 : statement-list2 case value3 : statement-list3 case ... } If expression matches value2, control jumps to here M.C Alejandro Castellanos Lopez

M.C Alejandro Castellanos Lopez Sentencia switch caso a caso b Acción del break; caso z Acción por omisión M.C Alejandro Castellanos Lopez

M.C Alejandro Castellanos Lopez The switch Statement The switch statement provides another way to decide which statement to execute next The switch statement evaluates an expression, then attempts to match the result to one of several possible cases Each case contains one value (a constant) and a list of statements The flow of control transfers to statement associated with the first case value that matches M.C Alejandro Castellanos Lopez

M.C Alejandro Castellanos Lopez The switch Statement Often a break statement is used as the last statement in each case's statement list A break statement causes control to transfer to the end of the switch statement If a break statement is not used, the flow of control will continue into the next case Sometimes this may be appropriate, but often we want to execute only the statements associated with one case M.C Alejandro Castellanos Lopez

M.C Alejandro Castellanos Lopez The switch Statement Ejemplo: switch (option){ case 'A': aCount++; break; case 'B': bCount++; case 'C': cCount++; } M.C Alejandro Castellanos Lopez

M.C Alejandro Castellanos Lopez The switch Statement A switch statement can have an optional default case The default case has no associated value and simply uses the reserved word default If the default case is present, control will transfer to it if no other case value matches If there is no default case, and no other value matches, control falls through to the statement after the switch M.C Alejandro Castellanos Lopez

M.C Alejandro Castellanos Lopez ejemplo de switch int main(String[] args){ int dia; System.out.println("teclee el número del día:»); dia= leer.nextInt(); switch(dia){ case 1: System.out.println("Lunes «);break; case 2: System.out.println("Martes«» );break; case 3: System.out.println("Miércoles" ;break; case 4: System.out.println("Jueves«);break case 5: System.out.println("Viernes«);break; case 6: System.out.println("Sabado»);break; case 7: System.out.println(« Domingo»);break; default:System.out.println(" dia no válido»); } Programa para leer un número de día (1 – lunés,… 7 – domingo) SIEMPRE PONGA break AL FINAL DE CADA OPCIÓN EN LA SENTENCIA SWITCH. M.C Alejandro Castellanos Lopez

M.C Alejandro Castellanos Lopez Laboratorio Calcular el sueldo mensual de un empleado que trabaja por horas, el pago de cada hora trabajada depende de su categoría: categoria     pago x hora A               26.90 B               24.30 C               21.50 Además si el empleado trabaja mas de 150 horas mensuales tiene una bonificación del 5 % de sueldo. M.C Alejandro Castellanos Lopez

M.C Alejandro Castellanos Lopez Algoritmo Se ingresara el nombre del empleado, seguido de su categoría y al final el número de horas trabajadas. Algoritmo 1. Leer datos 2. Determinar sueldo en base a su categoría 3. Determinar monto de bonificación 4. Imprimir nombre, categoría y sueldo total Variables (entrada) nombre – cadena de caracteres categoria – carácter horas - entero Variables (salida) pagoHora – real (float) bono – real (float) sueldo – real (float) M.C Alejandro Castellanos Lopez

M.C Alejandro Castellanos Lopez Tarea casera La ecuación cuadrática en forma general es ax2 + bx +c = 0 La solución puede encontrarse con la fórmula: Hay tres casos posibles dependiendo del valor del radicando > 0 Dos raíces diferentes = 0 Una raíz repetida < 0 Raíces complejas conjugadas b2 – 4ac M.C Alejandro Castellanos Lopez

M.C Alejandro Castellanos Lopez Diseño de un programa para resolver una cuadrática. Algoritmo 1. Leer valores de los coeficientes 2. Determinar el valor del discriminante 3. Si el discriminante es mayor que cero encontrar las 2 raíces diferentes y mostrarlas en la pantalla, sino 4. Si el discriminante es igual a cero determinar la raíz doble y mostrarla en la pantalla, sino 5. Determinar las raíces complejas conjugadas y mostrarlas en la pantalla. M.C Alejandro Castellanos Lopez

M.C Alejandro Castellanos Lopez Variables Coeficientes: a – coeficiente de x2, real (float) b – coeficiente de x, real (float) c – término independiente, real (float) d – discriminante, real (float) Declaración: float a, b, c, d; Lectura: cout << “Teclee los coeficientes a, b, c: ”; cin >> a >> b >> c; Determinación del discriminante: d = b*b – 4*a*c; M.C Alejandro Castellanos Lopez

M.C Alejandro Castellanos Lopez Variables para almacenar las raíces: x1, x2 – raíces diferentes, reales (float) xdoble – raíz doble (float) xreal, ximg – parte reala e imaginaria de la raíz compleja Declaración: float x1,x2,x, xreal, ximag; M.C Alejandro Castellanos Lopez

M.C Alejandro Castellanos Lopez Comparing Characters In Unicode, the digit characters (0-9) are contiguous and in order Likewise, the uppercase letters (A-Z) and lowercase letters (a-z) are contiguous and in order Characters Unicode Values 0 – 9 48 through 57 A – Z 65 through 90 a – z 97 through 122 M.C Alejandro Castellanos Lopez

M.C Alejandro Castellanos Lopez Comparing Strings Remember that in Java a character string is an object The equals method can be called with strings to determine if two strings contain exactly the same characters in the same order The equals method returns a boolean result if (name1.equals(name2)) System.out.println ("Same name"); M.C Alejandro Castellanos Lopez

M.C Alejandro Castellanos Lopez Comparing Strings We cannot use the relational operators to compare strings The String class contains a method called compareTo to determine if one string comes before another A call to name1.compareTo(name2) returns zero if name1 and name2 are equal (contain the same characters) returns a negative value if name1 is less than name2 returns a positive value if name1 is greater than name2 M.C Alejandro Castellanos Lopez

M.C Alejandro Castellanos Lopez Comparing Strings if (name1.compareTo(name2) < 0) System.out.println (name1 + "comes first"); else if (name1.compareTo(name2) == 0) System.out.println ("Same name"); System.out.println (name2 + "comes first"); Because comparing characters and strings is based on a character set, it is called a lexicographic ordering M.C Alejandro Castellanos Lopez

Lexicographic Ordering Lexicographic ordering is not strictly alphabetical when uppercase and lowercase characters are mixed For example, the string "Great" comes before the string "fantastic" because all of the uppercase letters come before all of the lowercase letters in Unicode Also, short strings come before longer strings with the same prefix (lexicographically) Therefore "book" comes before "bookcase" M.C Alejandro Castellanos Lopez

M.C Alejandro Castellanos Lopez CICLOS M.C Alejandro Castellanos Lopez

M.C Alejandro Castellanos Lopez Ciclos Un ciclo es una estructura de control para repetir una o más instrucciones. Se le llama cuerpo del ciclo al grupo de instrucciones que se repiten. La ejecución del cuerpo del ciclo es controlada por una expresión lógica. M.C Alejandro Castellanos Lopez

M.C Alejandro Castellanos Lopez Ciclos… La evaluación de la expresión lógica puede estar antes o después del cuerpo del ciclo. Los ciclos que tienen la evaluación de la expresión lógica antes del cuerpo se conocen como “pre-test loops” y los que la tienen después se conocen como “post test loops”. M.C Alejandro Castellanos Lopez

M.C Alejandro Castellanos Lopez Ciclo while La sintáxis del ciclo while es como sigue: while(condition) { //loop body statements; } Como puede ver la condición es evaluada al principio, antes de ejecutar el cuerpo del ciclo. Al evaluar la condición, si ésta es cierta, se ejecuta el cuerpo del ciclo y si es falsa, se procede a la siguiente instrucción después del ciclo. Decimos que un while se ejecuta de 0 a n veces ya que cabe la posibilidad que la primera vez la condición sea falsa y el ciclo no se ejecute ni siquiera una vez. M.C Alejandro Castellanos Lopez

Flujograma de Ciclo while statement(s) true boolean expression false statement(s) true boolean expression? false M.C Alejandro Castellanos Lopez

M.C Alejandro Castellanos Lopez Un ejemplo de while x=1 True Display ‘*’ x = x +1 x<=10 // En Java int x = 1; while (x <= 10) { System.out.println(‘*’); x = x + 1; } False M.C Alejandro Castellanos Lopez

Un ciclo que no se ejecuta El siguiente es un ejemplo de un ciclo que se ejecuta 0 veces: int x = 1; while(x >= 10) { System.out.println(‘*’); x = x + 1; } El cuerpo del ciclo nunca se ejecuta ya que la condición es falsa la primera vez que se evalúa. M.C Alejandro Castellanos Lopez

Ciclos controlados por un contador Cuando el cuerpo se debe repetir un número específico de veces decimos que el ciclo está controlado por un contador. En este caso la variable de control trabaja contando las veces que se ejecuta el ciclo. M.C Alejandro Castellanos Lopez

M.C Alejandro Castellanos Lopez Ciclos... La mayor parte de las veces la condición que se utiliza para controlar un ciclo depende del valor de una variable y a ésta la llamamos variable de control. Para que un ciclo sea diseñado correctamente debemos: Inicializar la variable de control correctamente antes del ciclo Usar una expresión lógica adecuada para evaluar la variable de control Actualizar la variable de control dentro del ciclo. M.C Alejandro Castellanos Lopez

M.C Alejandro Castellanos Lopez En Java… int x = 1; //Inicialización de variable de control: x while(x < = 10) //Evaluación de la variable de control { System.out.println(‘*’); x = x + 1; //Actualización de la variable de control } M.C Alejandro Castellanos Lopez

M.C Alejandro Castellanos Lopez Ciclos Infinitos Si dentro del ciclo no hay una instrucción que logre que en algún momento la condición sea falsa, tendremos un ciclo infinito. Por ejemplo si en el ejercicio anterior olvidamos incrementar x, ocurre un ciclo infinito: int x = 1; while (x <= 10) { System.out.println(‘*’); } // La x SIEMPRE será menor o igual a 10 Si se nos olvidan las llaves como en el siguiente ejemplo podemos obtener un ciclo infinito: while (x <= 10) x = x + 1; // Esta instrucción NO es parte del ciclo M.C Alejandro Castellanos Lopez

Enunciados en bloque en los ciclos Como usted ya sabe, las llaves se utilizan para agrupar un número de instrucciones para que sean ejecutadas en bloque. Igual que en los if, en el ciclo while solo hace falta las llaves si el cuerpo del ciclo contiene mas de una instrucción. Esto implica que si se olvida incluir las llaves y queríamos que se ejecutaran más de una instrucción como cuerpo del ciclo, sólo se va a ejecutar una. M.C Alejandro Castellanos Lopez

M.C Alejandro Castellanos Lopez Flujograma para acumular la suma de 10 números usando ciclo controlado por contador sum = 0.0 count = 1 count=count+1 sum = sum + num count<=10 Display ”Enter a number: ” Get num T F M.C Alejandro Castellanos Lopez

M.C Alejandro Castellanos Lopez …en Java //Ejemplo para sumar 10 números entrados // por el teclado Scanner keyboard = new Scanner(System.in); double num, sum = 0.0; int count = 1; while (count <= 10) { System.out.print("Enter a number: "); num = keyboard.nextDouble(); sum = sum + num; count = count + 1; } System.out.println("The sum is: " + sum); Ver la ejecución con el debugger. M.C Alejandro Castellanos Lopez

M.C Alejandro Castellanos Lopez Acumuladores de suma… Un acumulador de suma es una variable donde se van sumando valores utilizando la suma anterior. La variable que se va a usar para acumular la suma se tiene que inicializar en 0 o el primer valor a ser sumado. La instrucción que logra este proceso es una instrucción de asignación donde la variable que acumula aparece en los dos lados del operador de asignación. Por ejemplo: sum = sum + num; En Java podemos usar el operador compuesto de += para acumular. Por ejemplo: sum += num; M.C Alejandro Castellanos Lopez

M.C Alejandro Castellanos Lopez Validación El proceso de asegurarse que el usuario entre un dato válido se conoce como validación. M.C Alejandro Castellanos Lopez

Validación… num < 0 T F Display “Enter a positive number: ” Get num “Invalid number.” Display “Enter a positive number: ” F M.C Alejandro Castellanos Lopez

M.C Alejandro Castellanos Lopez En Java System.out.print("Enter a positive number: ”); number = keyboard.nextInt(); // Validate the input. while ( number < 0 ) { System.out.println("Invalid number.”); System.out.print("Enter a positive number: "); } M.C Alejandro Castellanos Lopez

Otro Ejemplo de Validación de datos Ejemplo en Java System.out.print("Enter a number in the " + "range of 1 through 100: "); number = keyboard.nextInt(); // Validate the input. while (number < 1 || number > 100) { System.out.println("That number is invalid."); } M.C Alejandro Castellanos Lopez

Ciclo controlado por variable lógica (Flag) //Ciclo controlado por bandera countGoodReadings = 0; int thisBP; boolean isSafe = true; // Inicialización de bandera while (isSafe) { System.out.print("Enter blood pressure “); thisBP = keyboard.nextInt(); if (thisBP >= 200) isSafe = false; //Actualizar bandera else countGoodReadings++; } M.C Alejandro Castellanos Lopez

M.C Alejandro Castellanos Lopez Centinela Centinela: valor en la lista de datos que indica el final de la entrada de datos. Debe ser un valor que no pueda confundirse con un valor real, pero del mismo tipo. Debe informarse al usuario cual es el valor que va a usarse como centinela. Se utiliza cuando no se puede determinar cuantos datos se van a entrar o leer. M.C Alejandro Castellanos Lopez

M.C Alejandro Castellanos Lopez Ejemplo de la Técnica del Centinela: Leer y sumar una cantidad indefinida de medidas de presión sanguínea int total = 0; int thisBP; Scanner keyboard = new Scanner(System.in); //Inicialización de la variable de control por lectura System.out.print(“Enter a blood pressure or -1 to stop: ”); thisBP = keyboard.nextInt(); // Lectura primaria while (thisBP != -1) // Evaluación para centinela { total = total + thisBP; System.out.print(“Enter a blood pressure or -1” + “to stop: ”); thisBP = keyboard.nextInt(); // Lectura de actualización } System.out.print(“El total de las presiones “ + “sanguineas entradas es : “ + total); M.C Alejandro Castellanos Lopez

M.C Alejandro Castellanos Lopez Otro ciclo : for El ciclo for evalúa la condición antes de ejecutar el cuerpo del ciclo, por esto es también un “pretest loop”. Este tipo de ciclo le permite al programador inicializar la variable de control, evaluar la condición y actualizar la variable de control en la misma línea( el encabezado del for). Típicamente la variable de control de un for es un contador. Este ciclo es equivalente a la estructura de un ciclo while controlado por un contador. La sintáxis del for es la siguiente: for(initialization; test; update) { statement(s); } M.C Alejandro Castellanos Lopez

Los tres componentes del for Inicialización La sección de inicialización permite que el ciclo inicialize su propia variable de control. Después de esta va un punto y coma. Las variables declaradas en esta sección solo pueden ser utilizadas dentro del for. Está permitido inicializar mas de una variable en esta sección. La segunda sección es la de la evaluación de la variable de control del for. De ser esta falsa el cuerpo del for no se ejecuta, igual que en el caso del while.(Después de esta sección también va un punto y coma.) M.C Alejandro Castellanos Lopez

Los tres componentes del for… Actualización La última sección o componente es la actualización de la variable de control Esta sección se utiliza típicamente para incrementar o decrementar los contadores declarados en la sección de inicialización. Esta sección se ejecuta al final, después del cuerpo y antes de regresar a evaluar la variable de control. En esta sección también se pueden actualizar múltiples variables Se debe evitar el actualizar la variable de control dentro del cuerpo del ciclo, para esto está la sección de actualización en el encabezado del for. M.C Alejandro Castellanos Lopez

M.C Alejandro Castellanos Lopez Ejemplo de For public class UserSquares { public static void main(String[] args) { int number; // Loop control variable int maxValue; // Maximum value to display Scanner keyboard = new Scanner(System.in); System.out.println("I will display a table of numbers" + " and their squares."); System.out.print("How high should I go? "); maxValue = keyboard.nextInt(); System.out.println("Number Number Squared"); System.out.println("-----------------------"); for (number = 1; number <= maxValue; number++) { System.out.println(number + "\t\t“ + number * number); } M.C Alejandro Castellanos Lopez

M.C Alejandro Castellanos Lopez Ciclos anidados Igual que podemos anidar los if’s también podemos anidar los ciclos. Ciclos anidados significa que hay un ciclo dentro de otro, cuando esto sucede el ciclo interior se ejecuta completo( todas sus iteraciones) para cada iteración del ciclo exterior. El siguiente es un ejemplo de ciclos for anidados: for(int i = 1; i < = 5; i++) { System.out.println(“i: ” + i); System.out.print(“j: ”); for(int j = 1; j < = 3 ; j++) System.out.print(j); System.out.println(); } Fíjese que, por cada vez que se ejecuta el cuerpo del ciclo externo, se ejecuta 3 veces el cuerpo del ciclo interno. M.C Alejandro Castellanos Lopez

Las instrucción de break y continue La instrucción de break termina por completo con la ejecución de un ciclo en forma anormal. El uso del break rompe con las normas y mecanismos adecuados para controlar un ciclo y no se considera una forma adecuada de terminar un ciclo. La instrucción continue ocasiona que se termine la ejecución de la iteración del ciclo que se está llevando acabo y que se continúe con la siguiente iteración. Igual que sucede con la instrucción break, puede hacer que el código sea mas difícil de entender y depurar por esto es aconsejable limitar su uso a situaciones muy particulares. M.C Alejandro Castellanos Lopez

M.C Alejandro Castellanos Lopez Ciclo do-while La estructura de repetición do-while es un ejemplo de ciclo “post-test” . En este tipo de ciclo, el cuerpo se ejecuta y luego se evalúa la condición. La sintáxis en java para este tipo de ciclo es como sigue: do { statement(s); } while (condition); Note el punto y coma después de los paréntesis y la llave de cerrar antes de la palabra while M.C Alejandro Castellanos Lopez

Flujograma de ciclo do-while Cuerpo del ciclo cierto Evaluación de condición falso M.C Alejandro Castellanos Lopez

Validación : while versus do-while Usando while: System.out.print("Enter number in the range of 1 through 100: "); number = keyboard.nextInt(); while (number < 1 || number > 100) { System.out.println("That number is invalid."); System.out.print("Enter number in the range of 1 through 100: ”); } Usando do-while: do { System.out.print("Enter number in the range of 1 through 100: "); number = keyboard.nextInt(); if (number < 1 || number > 100) System.out.println("That number is invalid."); } while (number < 1 || number > 100); M.C Alejandro Castellanos Lopez

M.C Alejandro Castellanos Lopez Qué tipo de ciclo usar while Use siempre que quiera cubrir la posibilidad de que el ciclo no se ejecute si la condición es falsa de entrada Si va a usar la técnica del centinela Puede usarse con técnica de respuesta Puede usarse para validar datos entrados do-while Use siempre que quiera que el ciclo se ejecute por lo menos una vez Ideal para técnica de menú for Use siempre que sepa la cantidad de veces que quiere que se ejecute el ciclo o que le pueda preguntar al usuario la cantidad de datos que va a procesar M.C Alejandro Castellanos Lopez

M.C Alejandro Castellanos Lopez ¿Preguntas? M.C Alejandro Castellanos Lopez