Alguien que me explique esto ... ?
#1

Hola, se un poco de pawn pero a veces me complico yo mismo... hace unos dнas hice un post pidiendo ayuda con un cуdigo, y la respuesta nunca me la hubiese imaginado... y es que no se usar el ciclo for. Entonces me puse a buscar en internet, pero no me queda claro, sin embargo encontrй este cуdigo:

PHP код:
main()
{
    new 
0;
    for(new 
0!= 100i++)
    {
        
printf("%i", ++c);
        if(
== 10) return;
    }

Si alguien me explica estarнa muy agradecido.
Reply
#2

for() es bбsicamente una repeticiуn bajo ciertas condiciones. Todas y cada unas de los bucles for() tienen 3 partes: la definiciуn de una variable, la condiciуn, y la acciуn.

PHP код:
for(new 0;         != 100;       i++) 
     ^                        ^              ^ 
   
Definiciуn          Condiciуn      Acciуn 
Si la condiciуn se cumple, entonces se ejecuta la acciуn, y todo el bloque de cуdigo consiguiente tambiйn. En otras palabras, un bucle for es una declaraciуn de un lenguaje de programaciуn que permite que el cуdigo se ejecuta repetidamente. Un bucle for es una especie de control para especificar una iteraciуn.

El ejemplo que has colocado se puede resumir de la siguiente forma:
PHP код:
main() 

    new 
0;  // se crea variable "c"
    
for(new 0!= 100i++)  // se declara un bucle for, definiendose "i = 0" dentro del bucle, y si "i" no es 100, subir "i" por uno (i++)
    

        
printf("%i", ++c); // aqui, se imprime el valor de c incrementado, pues es incrementado aquн mismo, al mismo tiempo que "i" por lo que "c = i"
        
if(== 10) return; // si c llega a 10, retornar, es decir, que las 90 iteraciones restantes jamбs se ejecutarбn.
    


Ademбs, existen dos funciones especiales que pueden ser utilizadas dentro de for() (o while()), que son "continue" y "break". "continue" salta a la siguiente iteraciуn, y "break" rompe, como su nombre lo dice, el bucle.

Un ejemplo:

PHP код:
for(new 0!= 10i++)
{
    if(
== 5) continue;
    if(
== 8) break;
    
printf("Nъmero: %d"i);
}
/* Esto imprime
Nъmero: 0
Nъmero: 1
Nъmero: 2
Nъmero: 3
Nъmero: 4
Nъmero: 6   (Conste el salto de 4 a 6!)
Nъmero: 7
En 8 se rompe, no llega hasta el 9 (0..9)
*/ 
Reply
#3

Quote:
Originally Posted by admantis
Посмотреть сообщение
for() es bбsicamente una repeticiуn bajo ciertas condiciones. Todas y cada unas de los bucles for() tienen 3 partes: la definiciуn de una variable, la condiciуn, y la acciуn.

PHP код:
for(new 0;         != 100;       i++) 
     ^                        ^              ^ 
   
Definiciуn          Condiciуn      Acciуn 
Si la condiciуn se cumple, entonces se ejecuta la acciуn, y todo el bloque de cуdigo consiguiente tambiйn. En otras palabras, un bucle for es una declaraciуn de un lenguaje de programaciуn que permite que el cуdigo se ejecuta repetidamente. Un bucle for es una especie de control para especificar una iteraciуn.

El ejemplo que has colocado se puede resumir de la siguiente forma:
PHP код:
main() 

    new 
0;  // se crea variable "c"
    
for(new 0!= 100i++)  // se declara un bucle for, definiendose "i = 0" dentro del bucle, y si "i" no es 100, subir "i" por uno (i++)
    

        
printf("%i", ++c); // aqui, se imprime el valor de c incrementado, pues es incrementado aquн mismo, al mismo tiempo que "i" por lo que "c = i"
        
if(== 10) return; // si c llega a 10, retornar, es decir, que las 90 iteraciones restantes jamбs se ejecutarбn.
    


Muchas gracias admantis, al fin lo tengo claro.

Edito

Hay algo que todavнa no entiendo... en mi tema anterior el cуdigo al que me referнa era este:

PHP код:
for(new 0MAX_PLAYERS++)
{
    if(
IsPlayerConnected(i) && IsPlayerAdmin(i))
    {
        
SendClientMessage(i, -1duda);
        
GameTextForPlayer(i"New Question"50006);
    }

їPor que usar un ciclo en ese caso? si sуlo se va a enviar un GameTextForPlayer

Disculpen pero no querнa quedarme con la duda
Reply
#4

Quote:
Originally Posted by Guss
Посмотреть сообщение
Muchas gracias admantis, al fin lo tengo claro.

Edito

Hay algo que todavнa no entiendo... en mi tema anterior el cуdigo al que me referнa era este:

PHP код:
for(new 0MAX_PLAYERS++)
{
    if(
IsPlayerConnected(i) && IsPlayerAdmin(i))
    {
        
SendClientMessage(i, -1duda);
        
GameTextForPlayer(i"New Question"50006);
    }

їPor que usar un ciclo en ese caso? si sуlo se va a enviar un GameTextForPlayer

Disculpen pero no querнa quedarme con la duda
por que se esta enviando a todos los jugadores conectados y que sean administradores rcon.
saludos.
Reply
#5

Quote:
Originally Posted by Guss
Посмотреть сообщение
Muchas gracias admantis, al fin lo tengo claro.

Edito

Hay algo que todavнa no entiendo... en mi tema anterior el cуdigo al que me referнa era este:

PHP код:
for(new 0MAX_PLAYERS++)
{
    if(
IsPlayerConnected(i) && IsPlayerAdmin(i))
    {
        
SendClientMessage(i, -1duda);
        
GameTextForPlayer(i"New Question"50006);
    }

їPor que usar un ciclo en ese caso? si sуlo se va a enviar un GameTextForPlayer

Disculpen pero no querнa quedarme con la duda
Sino se ejecutara el ciclo, entonces solamente un jugador recibira el gametext y mensaje. El ciclo es necesario para mandarlo a un grugo de miembros; el cual es rcon administradores.
Reply
#6

Gracias!
Reply
#7

ej.

Код:
el bucle empieza en 0: chequea que el id 0 estй conectado (IsPlayerConnected) y que sea admin rcon (IsPlayerAdmin), si es asн, se envнa el mensaje al jugador que le corresponda ese ID (i).

el bucle avanza a 1: chequea que el id 1 estй conectado (IsPlayerConnected) y que sea admin rcon (IsPlayerAdmin), si es asн, se envнa el mensaje al jugador que le corresponda ese ID (i)

el bucle avanza a 2: chequea que el id 2 estй conectado (IsPlayerConnected) y que sea admin rcon (IsPlayerAdmin), si es asн, se envнa el mensaje al jugador que le corresponda ese ID (i).
Y asн sucesivamente seguirб activo el bucle si la condiciуn de йste sigue siendo true. (i < MAX_PLAYERS) i es menor a MAX_PLAYERS...
Reply
#8

Quote:
Originally Posted by aoEXE
Посмотреть сообщение
ej.

Код:
el bucle empieza en 0: chequea que el id 0 estй conectado (IsPlayerConnected) y que sea admin rcon (IsPlayerAdmin), si es asн, se envнa el mensaje al jugador que le corresponda ese ID (i).

el bucle avanza a 1: chequea que el id 1 estй conectado (IsPlayerConnected) y que sea admin rcon (IsPlayerAdmin), si es asн, se envнa el mensaje al jugador que le corresponda ese ID (i)

el bucle avanza a 2: chequea que el id 2 estй conectado (IsPlayerConnected) y que sea admin rcon (IsPlayerAdmin), si es asн, se envнa el mensaje al jugador que le corresponda ese ID (i).
Y asн sucesivamente seguirб activo el bucle si la condiciуn de йste sigue siendo true. (i < MAX_PLAYERS) i es menor a MAX_PLAYERS...
Muchнsimo mejor, gracias!
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)