• Domingo 15 de Diciembre de 2024, 08:46

Autor Tema:  Re: Estilo de programación: sentencia break.  (Leído 2126 veces)

desorden

  • Miembro activo
  • **
  • Mensajes: 57
    • Ver Perfil
Re: Estilo de programación: sentencia break.
« en: Viernes 28 de Marzo de 2003, 00:44 »
0
¿Sois partidarios de su uso para forzar la salida en un bucle?

A veces lo hago -la última vez en una práctica de clase- y me recordaron los principios de la programación estructurada... ya sabéis, un bloque de código se recorre completo: de arriba a abajo.
desorden

José D

  • Miembro MUY activo
  • ***
  • Mensajes: 235
    • Ver Perfil
Re: Estilo de programación: sentencia break.
« Respuesta #1 en: Viernes 28 de Marzo de 2003, 01:34 »
0
Citar
¿Sois partidarios de su uso para forzar la salida en un bucle?


Pues yo he usado la sentencia break de C principalmente no tanto con bucles sino con Switch con los Case sólo para que al ser True un Case no se meta en los que le vienen por debajo, de resto, hasta no lo uso para los Case y
en bucles While, for y do...while pues lo he usado muy poco.

Pues para salir así violentamente o abortar la operación del bucle con break, pues a mi me parece bien y continue para nuevas iteraciones, pues también lo he usado muy poco, menos que lo que he usado break.

Si, eso se apega a la secuencia de los pasos lógicos de un Algoritmo, en lo que respeta a la selección y la iteración (bucles) de los mismos.
Saludos

gothmog

  • Miembro activo
  • **
  • Mensajes: 84
    • Ver Perfil
Re: Estilo de programación: sentencia break.
« Respuesta #2 en: Viernes 28 de Marzo de 2003, 14:47 »
0
como sales de un case sin el break? No se puede q yo sepa.

Eso si, en bucles no tiene sentido usarlo pq ya le puedes poner las condiciones de salida de bucle.

José D

  • Miembro MUY activo
  • ***
  • Mensajes: 235
    • Ver Perfil
Re: Estilo de programación: sentencia break.
« Respuesta #3 en: Viernes 28 de Marzo de 2003, 15:15 »
0
Citar
cómo sales de un case sin el break? No se puede q yo sepa.


El break se utiliza normalmente en un case como cierre del mismo, el break después de cada case no es obligatorio, pero casi siempre aparece para evitar que la ejecución pase al siguiente case.  En un case en dónde podría no ir sería en el último, porque no le sigue ningún otro case por lo que lo ejecuta y termima.

Bueno, al menos yo he hecho case así, y me ha servido bien sin dar problemas, es decir, el break no es siempre algo obligatorio.

 
Citar
Eso si, en bucles no tiene sentido usarlo pq ya le puedes poner las condiciones de salida de bucle.

Si, por eso en bucles casi no lo he usado, a lo mucho un par de veces, de resto, los bucles los hago como se normalmente se aplican.
Saludos

desorden

  • Miembro activo
  • **
  • Mensajes: 57
    • Ver Perfil
Re: Estilo de programación: sentencia break.
« Respuesta #4 en: Viernes 28 de Marzo de 2003, 16:05 »
0
El mismo bucle de dos maneras:

 
Código: Text
  1. while (lista != NULL)
  2. {
  3.    if (lista->campo == patron)
  4.       break;
  5.    else
  6.       lista = lista->siguiente;
  7. }
  8.  
  9. while ((lista != NULL) && (lista->campo != patron))
  10.    lista = lista->siguiente;
  11.  
  12.  

¿Cuál es mejor? ¿Cuál es más clara? ¿Es mejor poner todas las condiciones de salida en una misma instrucción? Quizás el ejemplo que he puesto yo es muy sencillo pero he visto más de cinco condiciones en una misma instrucción; me volvía loco con tanto paréntesis:P
desorden

gmantil

  • Miembro MUY activo
  • ***
  • Mensajes: 121
    • Ver Perfil
Re: Estilo de programación: sentencia break.
« Respuesta #5 en: Viernes 28 de Marzo de 2003, 17:33 »
0
Las sentencias TextTextbreakTextText y TextTextcontinueTextText se encuentran definidas en el C estandar por lo que su utilización es permitida.

En lo personal, considero que estas sentencias son heredadas de la tendencia de programación anterior a la programación estructurada. Yo en mis programas evito colocar sentencias que rompan el flujo normal del programa. Considero que la programación estructurada y modular será mas clara y manejable mientras siga correctamente una secuencialidad.

Yo a mis alumnos los encamino a no utilizar estas sentencias: goto, label, break (salvo en los switch) y continue. Pero eso es mas una cultura personal.

gmantil

gothmog

  • Miembro activo
  • **
  • Mensajes: 84
    • Ver Perfil
Re: Estilo de programación: sentencia break.
« Respuesta #6 en: Domingo 30 de Marzo de 2003, 16:57 »
0
hombre, no es obligatorio pero entonces pierde la esencia de la finalidad de un switch, q es elegir entre varias opciones. Si al final se ejecutan todas, no sirve para nada. Lo que no entiendo es como no se modifico esto en c++ igual que en otros lenguajes, en los cuales solo identifica una rama case y el resto las pasa por alto, sin necesidad de poner el break.

Supongo que alguna razon importante habra, pq en java tp se modifico la sintaxis switch..case pero la verdad, sin el break, no le veo sentido a esta sentencia. :think:

chuidiang

  • Miembro MUY activo
  • ***
  • Mensajes: 123
  • Nacionalidad: es
    • Ver Perfil
    • http://www.chuidiang.com
Estilo de programación: sentencia break.
« Respuesta #7 en: Viernes 29 de Agosto de 2003, 14:24 »
0
Hay veces que el break dentro de un bucle es necesario para no complicar demasiado el codigo.

Imaginad lo siguiente

bucle (condicion del bucle)
{
   "codigo 1" que se ejecuta
   if (tengo que salir del bucle)
      break;
   "codigo 2" que no se ejecuta
}

En este caso no puedo ponerlo en la condicion, necesito que se ejecute "codigo 1", pero si salgo, "codigo 2" no se ejecuta. Ademas, la condicion de salida puede depender del resultado de "codigo 1"

Se pueden hacer cosas como esta

if (tengo que salir)
{
  fijo condicion de salida del bucle
}
else
{
   "codigo 2"
}

pero lo veo mas liado.

Suponed tambien un bucle for para buscar algo y quiero saber el indice en el que se encuentra

for (i=0; i<n; i++)
{
   if (encontrado)
     break;
}
if (i==n)
   no se ha encontrado
else
   Se ha encontrado en posicion i

Si no ponemos el break, hay que declarar otra variable, cuando lo encontremos guardar la posicion y luego hacer i=n. Es algo mas liado. Tampoco me parece muy elegante tocar a pelo la i de un bucle for.

De todas formas un break no es un salto tan aleatorio como goto, que puede saltar desde cualquier lado a cualquier lado, asi que yo no veo mal utilizar break para abortar bucles.

Sed buenos.