Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > PHP
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 27-04-2006
ElCherchu ElCherchu is offline
Miembro
 
Registrado: may 2003
Posts: 76
Poder: 21
ElCherchu Va por buen camino
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..

Última edición por dec fecha: 27-04-2006 a las 08:05:11.
Responder Con Cita
  #2  
Antiguo 27-04-2006
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Aparentemente falta un punto y coma luego de "break".
__________________
David Esperalta
www.decsoftutils.com

Última edición por dec fecha: 27-04-2006 a las 12:58:41.
Responder Con Cita
  #3  
Antiguo 27-04-2006
Avatar de KeyMan
KeyMan KeyMan is offline
Miembro
 
Registrado: oct 2005
Posts: 32
Poder: 0
KeyMan Va por buen camino

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:)
__________________
Saludos.. KeyMan
Responder Con Cita
  #4  
Antiguo 27-04-2006
[kayetano] kayetano is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Elche
Posts: 644
Poder: 21
kayetano Va por buen camino
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
__________________
Salu2
KAYETANO

Cómo hacer preguntas de manera inteligente
Responder Con Cita
  #5  
Antiguo 27-04-2006
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
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
Responder Con Cita
  #6  
Antiguo 27-04-2006
[kayetano] kayetano is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Elche
Posts: 644
Poder: 21
kayetano Va por buen camino
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".
__________________
Salu2
KAYETANO

Cómo hacer preguntas de manera inteligente
Responder Con Cita
  #7  
Antiguo 27-04-2006
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
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
Responder Con Cita
  #8  
Antiguo 27-04-2006
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
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á.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #9  
Antiguo 27-04-2006
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
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
Responder Con Cita
  #10  
Antiguo 28-04-2006
Avatar de KeyMan
KeyMan KeyMan is offline
Miembro
 
Registrado: oct 2005
Posts: 32
Poder: 0
KeyMan Va por buen camino
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.
__________________
Saludos.. KeyMan
Responder Con Cita
  #11  
Antiguo 28-04-2006
[kayetano] kayetano is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Elche
Posts: 644
Poder: 21
kayetano Va por buen camino
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
__________________
Salu2
KAYETANO

Cómo hacer preguntas de manera inteligente
Responder Con Cita
  #12  
Antiguo 28-04-2006
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
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
Responder Con Cita
  #13  
Antiguo 06-05-2006
Avatar de Perberos
Perberos Perberos is offline
Miembro
 
Registrado: may 2006
Posts: 17
Poder: 0
Perberos Va por buen camino
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");
    }
  }
?>
Responder Con Cita
  #14  
Antiguo 06-05-2006
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Responder Con Cita
  #15  
Antiguo 06-05-2006
Avatar de Perberos
Perberos Perberos is offline
Miembro
 
Registrado: may 2006
Posts: 17
Poder: 0
Perberos Va por buen camino
Cita:
Empezado por roman
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
Responder Con Cita
  #16  
Antiguo 06-05-2006
Mick Mick is offline
Miembro
 
Registrado: may 2003
Posts: 405
Poder: 21
Mick Va por buen camino
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
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
parar bucle Cosgaya Varios 11 11-02-2006 16:01:56
Problema en bucle CarmaZone Tablas planas 6 20-01-2006 09:51:20
bucle dentro de un bucle Cosgaya Varios 2 06-06-2005 07:05:16
problema con bucle while do acrophet Varios 1 16-09-2004 14:13:02
Detener un bucle lfidanza Varios 5 25-06-2003 00:36:14


La franja horaria es GMT +2. Ahora son las 09:06:03.


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
Copyright 1996-2007 Club Delphi