Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   PHP (https://www.clubdelphi.com/foros/forumdisplay.php?f=15)
-   -   Error En Bucle.. (https://www.clubdelphi.com/foros/showthread.php?t=31070)

ElCherchu 27-04-2006 04:47:55

Error En Bucle..
 
Hola a todos..

Estoy iniciandome en la programación PHP y probando los bucles me resulta el siguiente error:

Código PHP:

<?php
  
for ($num 1Snum <=5$num++) {
    echo 
$num;
    if (
$num == 3) {  
      echo 
"Aquí nos salimos \n";
      break
    }
  }
?>

error:

Parse error: syntax error, unexpected '}' in c:\appserv\www\webs\t7.php on line 7

bueno aunque esto sea extraordinariamente simple necesito saber como solucionarlo..

Cuento con su ayuda..

dec 27-04-2006 08:06:17

Hola,

Aparentemente falta un punto y coma luego de "break".

KeyMan 27-04-2006 09:28:16

:eek:
Si no me equivoco creo que debería ser de la siguiente manera
Te olvidaste el simbolo dolar en Snum <= 5
Código PHP:

<?php
  
for ($num 1$num<=5$num++) {
    echo 
$num;
    if (
$num == 3) {  
      echo 
"Aquí nos salimos \n";
      break;
    }
  }
?> 
 
 
Nota: procura no utilizar break te evitaras muchos quebraderos:)


kayetano 27-04-2006 10:57:25

Hola

Pues si te estas iniciando en PHP o en cualquier lenguje de programación, hazme el favor de olvidarte de ese ejemplo y realiza pruebas un poco más coherentes.
Aunque simplemente sea una prueba ¿Que sentido tiene ese script? si en tus primeras pruebas ya metes un BREAK dentro de un bucle pues ni te cuento cuando lleves un poco más. Menos mal que no existe el GOTO en PHP.
Hazte un favor y buscate ejemplos mas lógicos y menos cahoticos, el uso de break debes reservarlo para la sentencia SWITCH .. CASE y para trabajos de fontanería (apaños rapidos).

PD. Tengo una mala mañana ;)

roman 27-04-2006 14:32:27

Yo no estoy de acuerdo en esto. break es muy útil para terminar un ciclo. break y continue son, ciertamente, fomas escondidas de goto, pero se trata de dos casos en los que generalmente resulta más cómodo y claro su uso que sus contrapartidas con condicionales.

// Saludos

kayetano 27-04-2006 17:08:41

Hola
Cita:

Empezado por roman
Yo no estoy de acuerdo en esto. break es muy útil para terminar un ciclo.

Yo para terminar un bucle utilizo las condiciones, poniendolas donde se deben poner, dentro de la sentencia "for", "while", ... y el resto es fontanería.
Pienso yo que sin no fuera asi todo el mundo utilizaría
Código PHP:

  while ( true ) {
     ...
     if( 
$condicion ) break;
     ...
 } 

y para mi hacer culauquier cosa parecida a esta (siempre esta el caso escepcional) es FONTANERIA para el que sabe programar e ignorancia para el que no sabe.

Cita:

Empezado por roman
break y continue son, ciertamente, fomas escondidas de goto, pero se trata de dos casos en los que generalmente resulta más cómodo y claro su uso que sus contrapartidas con condicionales.

Un "continue" no te digo que no (este caso lo he utilizado en varios scripts) pero un "break" ...... roman no me creo que tu digas algo asin, QUE VES MAS CLARO EL USO DE BREAK, anda ya!!! que claridad tiene el romper una secuendia natural por las brabas, cuando es un pequeño código ... pues igual se ve claro, pero cuando tienes muchas líenas puede ser una locura.

Creo que el análisis y la metodología de la programación se estudian para algo, y seguro que no es para poner "breaks" a saco.

Bueno, queda claro que no soy partidario de "BREAK".

roman 27-04-2006 18:17:22

Me expresé muy mal. No pretendo decir que se use break como método regular para terminar un ciclo. Pero hay ocasiones en que las condiciones de salida de un ciclo pueden ser múltiples y no tan inmediatas de comprobar (que requieran llamadas a funciones por ejemplo) y ponerlas todas ellas como condiciones del ciclo puede ser muy engorroso.

Pienso también, sin embargo, que no es bueno ser tan dogmático. Un continue, por ejemplo, a fin de cuentas, también rompe una secuencia natural. Un switch con sus breaks no es sino una secuencia de

Código:

IF (TAL COSA)
{
  Codigo;

  GOTO FIN;
}

IF (TAL COSA)
{
  Codigo;

  GOTO FIN;
}

...

:FIN:

El dogmatismo nos llevaría a escribir

Código:

IF (TAL COSA)
{
  Codigo;
}
ELSE
{
  IF (TAL COSA)
  {
    Codigo;
  }
  ELSE
  {
    IF (TAL COSA)
    {
      Codigo;
    }
  }
}

Todos ellos, switch, break, continue, son usos escondidos del infame goto, que, no obstante, encuentran su justificación en algunas construcciones.

// Saludos

dec 27-04-2006 21:38:59

Hola,

Estoy con Román. No veo el porqué no se puede utilizar el "break", el "continue" e incluso el "goto" cuando esté disponible y se considere necesario, claro está. ;)

roman 27-04-2006 23:07:26

Cita:

Empezado por dec
e incluso el "goto" cuando esté disponible y se considere necesario

Bueno, no exageremos ;)

El goto tiende a crear un caos en el código, con saltos de aquí a allá y de regreso, perdiéndose todo posible orden y entendimiento.

// Saludos

KeyMan 28-04-2006 08:32:35

En primer lugar Señores, el ejemplo del bucle for no es mi pregunta, sólo he pretendido ayudar sobre lo que preguntó "ElCherchu". Simplemente y lo que yo entiendo sobre Break; no quiero decir que dejemos todos los programadores de utilizarlo.
En todo caso si no me equivoco no soy el único.

http://www.codigoescrito.com/archivos/000141.html


De cualquier modo: Cada uno que programe como le plazca.:)

kayetano 28-04-2006 12:09:18

Hola

A parte de querer dejar claro que no soy partidario de utilizar el "break" como algo cotidiano (yo lo utilizo en el SWITCH CASE) lo que he querido dar a entener con mi "critica" es que no se puede empezar a programar de esta forma, pienso que el que empieza de cero debe ser (como dice roman) más dogmático y aprender el funcionamiento correcto de cada estructura antes de aprender a romperlas a las brabas.
En mis años de esperiencia he aprendido que cuanto menos se complique un código mejor que mejor, uno puede controlar muy bien el "GOTO" o sus variantes pero siempre hay que pensar que ese código puede ser modificado o mantenido en un futuro por otra persona por lo que hay que intentar dejar las cosas lo más clarito posible.

Estoy planteandome empezar una campaña contra el BREAK ;)

PD. roman yo utilizo la version con "IF" o si es posible "SWITCH CASE" en esos casos

roman 28-04-2006 17:14:20

Cita:

Empezado por kayetano
PD. roman yo utilizo la version con "IF" o si es posible "SWITCH CASE" en esos casos

No entiendo qué quieres decir con esto. Si te refieres al pseudo código que puse con goto, no es que yo lo haga así (menos en php, que si mal no recuerdo no tiene goto); sólo era para mencionar que el switch no es, en esencia, más que un conjunto de rompimientos del orden natural. El break en un switch, al igual que en un ciclo, no es sino un uso disfrazado del goto.

Eso si, tales rompimientos en el switch son muy controlados y generalmente se sabe muy bien qué es lo que sucede al ver el código. Bueno, pues lo mismo sucede con los ciclos. En ocasiones es mucho más claro usar un break bien puesto que una retahíla de condicionales, banderas y demás para poder preservar el orden natural de las cosas.

// Saludos

Perberos 06-05-2006 07:23:14

a todo esto... miren lo que escribi :3
Código PHP:

 <?php
  
for ($num 1$num <= 5$num++) {
    echo 
$num.'<br />';
    if (
$num == 3) {  
      die(
"Aquí nos salimos");
    }
  }
?>


roman 06-05-2006 07:32:17

:confused: :confused:

Perberos 06-05-2006 08:11:44

Cita:

Empezado por roman
:confused: :confused:

jejeej, lo siento, solo queria distraer un poco.

En la programacion existen muchos caminos para llegar a un resultado. Algunos pueden verse mas sencillos y otros mas rebuscados.
La complejidad del proceso viene de la mano de la astucia del programador.

Eso es lo que caracteriza a cada programador, el estilo personal de escribir el codigo.

No se porque digo estas cosas, que alguien me heche un baldaso de agua fria :confused:

Mick 06-05-2006 10:17:13

Soy de la opinion de utilizar este tipo de instrucciones en contadas coasiones y solo cuando realmente sea necesario, pero no hay que irse al extremo de no usarlo jamas.
La teoria nos dice que no se deben usar, pero la teoria no es mas que eso, realmente casi todos los lenguajes han recuperado el GOTO y se empieza a utilizar precisamente para facilitar las cosas no para liarlas, claro que disfrazada de excepciones. Hasta en php 5 se ha añadido la posibilidad de usar excepciones y esto no son mas que GOTOs disfrazados.
Por ejemplo esto (realmente los "throw exception" deberian estar dentro de las funciones proceso?(), pero complicaria el ejemplo):
Código:

<?php
try {

  $error= proceso1(); 
  if($error) throw new Exception('Error');
 
 while(lo_que_sea) {
  if(($error=proceso1()) throw new Exception('Error');
 }

 $error= proceso3();
  if($error) throw new Exception('Error');

} catch (Exception $e) {
  echo 'Caught exception: ',  $e->getMessage(), "\n";
}
?>

Seria lo mismo que hacer:
Código:

<?php

  $error= proceso1(); 
  if($error) goto error;
 
 while(lo_que_sea) {
  if(($error=proceso1()) goto error;
 }

 $error= proceso3();
  if($error) goto error;

goto fin;

:error:
  echo 'Error';

:fin

?>

Es mas si lo pensamos bien, podriamos incluso considerar el uso de excepciones como algo todavia mas diabolico que el uso de gotos, ya que los gotos de las excepciones pueden saltar entre funciones, con lo que aparentemente se lia todavia mas el codigo.

Pero la realidad es la contraria, el uso de excepciones facilita enormente el control de errores en el desarrollo de software y su mantenimiento posterior, por esto se ha ido implementado en casi todos los lenguajes.

Saludos


La franja horaria es GMT +2. Ahora son las 06:54:34.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi