Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Problema con condicionales "compuestos" (https://www.clubdelphi.com/foros/showthread.php?t=70900)

Parabol77 18-11-2010 13:16:46

Problema con condicionales "compuestos"
 
Buenas a todos.

En un programa tengo que incluir un condicional If "compuesto". No sé si es así como se llama técnicamente, pero me explico.

Tengo tres variables, dos de entrada y una de salida. La variable de salida adquiere un valor dependiendo de los valores que alcancen las dos de entrada. Copio y pego lo que tengo hecho, para que se entienda mejor:
Código:

  If Ze<=17 Then
      If Zn<=17 Then J:=0.3
      Else If Zn<=20 Then J:=0.32
      Else If Zn<=24 Then J:=0.34
      Else If Zn<=30 Then J:=0.36
      Else If Zn<=35 Then J:=0.37
      Else If Zn<=40 Then J:=0.38
      Else If Zn<=45 Then J:=0.39
      Else If Zn<=50 Then J:=0.4
      Else If Zn<=60 Then J:=0.41
      Else If Zn<=80 Then J:=0.42
      Else If Zn<=125 Then J:=0.43
      Else J:=0.45

  Else If Ze<=25 Then
      If Zn<=17 Then J:=0.3
      Else If Zn<=20 Then J:=0.32
      Else If Zn<=24 Then J:=0.35
      Else If Zn<=30 Then J:=0.37
      Else If Zn<=35 Then J:=0.38
      Else If Zn<=40 Then J:=0.39
      Else If Zn<=45 Then J:=0.4
      Else If Zn<=50 Then J:=0.41
      Else If Zn<=60 Then J:=0.42
      Else If Zn<=80 Then J:=0.44
      Else If Zn<=125 Then J:=0.45
      Else J:=0.47

  Else If Ze<=35 Then
      If Zn<=17 Then J:=0.31
      Else If Zn<=20 Then J:=0.33
      Else If Zn<=24 Then J:=0.35
      Else If Zn<=30 Then J:=0.38
      Else If Zn<=35 Then J:=0.39
      Else If Zn<=40 Then J:=0.4
      Else If Zn<=45 Then J:=0.41
      Else If Zn<=50 Then J:=0.42
      Else If Zn<=60 Then J:=0.43
      Else If Zn<=80 Then J:=0.44
      Else If Zn<=125 Then J:=0.46
      Else J:=0.48

  Else If Ze<=50 Then
      If Zn<=17 Then J:=0.31
      Else If Zn<=20 Then J:=0.33
      Else If Zn<=24 Then J:=0.36
      Else If Zn<=30 Then J:=0.39
      Else If Zn<=35 Then J:=0.4
      Else If Zn<=40 Then J:=0.41
      Else If Zn<=45 Then J:=0.42
      Else If Zn<=50 Then J:=0.43
      Else If Zn<=60 Then J:=0.44
      Else If Zn<=80 Then J:=0.46
      Else If Zn<=125 Then J:=0.48
      Else J:=0.49

  Else If Ze<=85 Then
      If Zn<=17 Then J:=0.32
      Else If Zn<=20 Then J:=0.34
      Else If Zn<=24 Then J:=0.36
      Else If Zn<=30 Then J:=0.39
      Else If Zn<=35 Then J:=0.41
      Else If Zn<=40 Then J:=0.42
      Else If Zn<=45 Then J:=0.43
      Else If Zn<=50 Then J:=0.44
      Else If Zn<=60 Then J:=0.45
      Else If Zn<=80 Then J:=0.47
      Else If Zn<=125 Then J:=0.49
      Else J:=0.51

  Else If Ze>85 Then
      If Zn<=17 Then J:=0.32
      Else If Zn<=20 Then J:=0.35
      Else If Zn<=24 Then J:=0.37
      Else If Zn<=30 Then J:=0.4
      Else If Zn<=35 Then J:=0.42
      Else If Zn<=40 Then J:=0.43
      Else If Zn<=45 Then J:=0.44
      Else If Zn<=50 Then J:=0.45
      Else If Zn<=60 Then J:=0.47
      Else If Zn<=80 Then J:=0.48
      Else If Zn<=125 Then J:=0.5
      Else J:=0.52
  ;

Las variables de entrada son Zn y Ze. Si Ze tiene un valor determinado, Zn tendrá otra serie de valores, y el resultado (la variable J) dependerá de ambos. Una vez explicado, más o menos, lo que quiero, explico mi problema.

Luego escribo una operación usando la variable J, pero cuando ejecuto el programa me dice que la variable J no se inicializa, con lo que supongo que hay algún error en el código de los condicionales.

¿Cómo podría introducir condicionales dentro de otros condicionales?

Muchas gracias de antemano.
Un saludo.

ecfisa 18-11-2010 16:05:54

Hola.

Aunque no comentas si es un error, por lo que veo en el código sólo debería salirte una advertencia de que la variable 'j'
podría no estar inicializada.

Eso sucede por que existen valores no contemplados, para los cuales el valor de 'j' quedaría indeterminado.

Bastaría con que inicialices la variable j antes de la primera condición: j:= 0; por ejemplo, para que desaparezca la advertencia.


Saludos. :)

Caro 18-11-2010 16:27:33

Hola Parabol77, seguramente tu variable J es una variable local, por lo que no se inicializa automaticamente como lo hacen las variables globales a excepción de algunas como los String. Has lo que te dice ecfisa y ya no te saldra la advertencia.

Saluditos


La franja horaria es GMT +2. Ahora son las 10:29:43.

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