Normas del foro

Curso Hacker
Bienvenido(a), Visitante. Favor de ingresar o registrarse.
¿Perdiste tu email de activación? - Diciembre 03, 2008, 06:19:41
Inicio Ayuda Ingresar Registrarse
Visita: Articulos - Juegos Gratis - Da Foros

Comunidad Underground Hispana  |  Programacion  |  Programación  |  Carbide C/C#/C++ (Moderador: Fashion)  |  Tema: Una pregunta... 0 Usuarios y 1 Visitante están viendo este tema. « anterior próximo »
Páginas: [1] Ir Abajo Imprimir
Autor Tema: Una pregunta...  (Leído 133 veces)
MaDaRa S. W.
Habitual
*****
Desconectado Desconectado

Mensajes: 238


Al final solo queda la frialdad de los numeros...

dar_k_wish@hotmail.com
Ver Perfil
« en: Agosto 26, 2007, 11:29:31 »

juegos gratis
Pues veran... hace un par de semanas estaba tecleando un codigo en borland (ya no recuerdo para q era el programa  Huh) pero durante los teclazos cometi el siguiente error en un ciclo for

#define N 10
  .
  .
  .
  .
     for(i=0; i=N; i++)
  .
  .
  .

En lugar de hacer una comparacion de i<N le puse i=N sin darme cuenta y al momento de compilar para verificar q no tuviera errores el codigo, salto una ventana del antivirus señalandome q el archivo q estaba compilando era un codigo malicioso  Shocked Siguio apareciendome este mensaje hasta q me di cuenta del error y lo corregi, entonces el antivirus ya no detecto nada y el codigo compilo normalmente.

Pueden aclararme a q se debio esto?

s4lu2!
En línea


L4 V1D4 3S LUZ P4R4 N0S07R0S L0S HUM4N0S. P3R0 3ST4M0S 4C0STUM8R4D0S 4 P3NS4R K3 L4 LUZ BR1LL4 3N L4 08SKUR1D4D & K3 L4 08SKUR1D4D N0 K0MPR3ND3.
damn3dc0d3
Recien Llegado
*
Desconectado Desconectado

Mensajes: 2


Ver Perfil Email
« Respuesta #1 en: ſeptiembre 04, 2007, 06:35:17 »

recuerda que en el bucle for el segundo evaluador ó argumento si lo quieres llamar así obtiene el limite de iteraciones que se harán.
Fijate que for (i=1; i=N; i++) hace las iteraciones desde 1 hasta N veces donde al evaluar N encuentra verdadero y por lo tanto seguirá haciendo el bucle indefinidamente.
Por eso es importante recordar que la evaluación del limite se debe hacer comparando con limite-1 es decir for (i=0; i<N; i++). Con esto el bucle finalizará en el número anterior a N. Claro queda que si N tiene un valor de 9 las iteraciones serán 9 porque la variable i contará de 0 a 8.

Cuando un bucle se repite indefinidamente corre peligro de no terminar el proceso y no solo en tu programa sino en el hilo del SO. Esto pdría hacer agotar recursos en el procesador y la memoria llegando incluso a volcarla. Es por eso que chilla tu antivirus.

« Última modificación: ſeptiembre 04, 2007, 07:24:06 por damn3dc0d3 » En línea
DarkIker
Habitual
*****
Desconectado Desconectado

Mensajes: 272


Colombia Underground Team

dark_iker_reign@hotmail.com
Ver Perfil WWW Email
« Respuesta #2 en: ſeptiembre 04, 2007, 07:44:42 »

= es de asignacion paa la comparacion es "==". POor lo ue seria for(i=0;i == N;++i);.

Att: DarkIker
En línea


Necesitas ser usuario para ver los enlaces Crear Usuario  Hacer Sesion --> Colombia Underground Team

Necesitas ser usuario para ver los enlaces Crear Usuario  Hacer Sesion --> My Blog
FreakMind
Habitual
*****
Desconectado Desconectado

Mensajes: 194



Ver Perfil
« Respuesta #3 en: ſeptiembre 04, 2007, 08:58:29 »

Buenas

La sintaxis del for como todos saben es la siguiente:  for( expresion1; expresion2; expresion3) donde expresion1 y expresion3 son asignaciones y expresion2 es una relacion.

Por lo tanto, no es del todo cierto lo que dijo damn3dc0d3 sobre que la segunda expresion del for es el limite de iteraciones que se haran y que se debe comparar con limite - 1 (aunque es cierto que normalmente un for se utiliza de la forma que el dijo). 

Por ejemplo:
Código:
int strcmp(const char s[], const char t[])
{
    for(; *s == *t; s++, t++);

    return *s - *t;
}
Esta es una mala simulacion de la funcion strcmp de la biblioteca estandar. *s == *t  no da ningun "limite" sino que da la condicion para que las iteraciones sigan o se detengan.


Salu2, FreakMind
En línea

Connoisseurs of C semantics find C++ inferior to ++C

damn3dc0d3
Recien Llegado
*
Desconectado Desconectado

Mensajes: 2


Ver Perfil Email
« Respuesta #4 en: ſeptiembre 05, 2007, 09:27:08 »

FreakMind

Ten en cuenta que lo que dije del limite es la idea del control del for y se cumple cuando utilizas enteros y me refiero a la forma como lo usé. Tienes razón, porque las ecpresiones se evaluan para controlar el bucle y las expresiones lógicas que se utilizen para hacerlo pueden variar mucho lograr difernetes procesos resultantes. Sin embargo H4CK-SH1N081 todavía necesita saber cual es la idea de los argumentos del for y debe repasar primero la lógica de comparación.
En línea
Páginas: [1] Ir Arriba Imprimir 
Comunidad Underground Hispana  |  Programacion  |  Programación  |  Carbide C/C#/C++ (Moderador: Fashion)  |  Tema: Una pregunta... « anterior próximo »
Ir a:  


Ranking-Hits
Powered by SMF 1.1.7 | SMF © 2006-2007, Simple Machines LLC