IF THEN Kullanımı beni ÖLDÜRECEK :-[

Başlatan . Kağan, 20 Şubat 2015, 10:55:12

. Kağan


ANA:
 
    ortalama = 0
    FOR I = 0 TO 24         
      ADCIN 5 , OLCUM   
      ORTALAMA = ORTALAMA + OLCUM
    NEXT I
      SNC = ORTALAMA/25
     
               
      IF 2>SNC>0 THEN GOTO PART1 'hepsi kapalı
      IF 140>SNC>128 THEN GOTO PART2  'A YI AÇ
      IF 127>SNC>110 THEN GOTO PART3  'B Yİ AÇ
      IF 109>SNC>94 THEN GOTO PART4    'D Yİ AÇ
      IF 95>SNC>65 THEN GOTO PART5     'E Yİ AÇ
      IF 64>SNC>45 THEN GOTO PART6     'F Yİ AÇ
      IF 45>SNC>2 THEN GOTO PART7     'G Yİ AÇ
     

' LCDOUT $FE,$80, " SNC: "         
' LCDOUT $FE,$84, DEC2 SNC
' PAUSE 100
     
     
     
     
GOTO ANA

PART1:
  LCDOUT $FE,1
  LCDOUT $FE,$80, " hepsi "         
  LCDOUT $FE,$C0, " kapalı "     
  PAUSE 100
GOTO ANA

PART2:
  LCDOUT $FE,1
  LCDOUT $FE,$80, " A"         
  LCDOUT $FE,$C0, "AÇIK"     
  PAUSE 100
GOTO ANA

PART3:
  LCDOUT $FE,1
  LCDOUT $FE,$80, "B "         
  LCDOUT $FE,$C0, "AÇIK"     
  PAUSE 100
GOTO ANA

.
.
.


Yukarıdaki kodda  SNC değeri değişsede
IF 140>SNC>128 THEN GOTO PART2  'A YI AÇ
satırından sonraki satırlar görüntülenmiyor.

Neden acaba?
:(

Teşekkürler

Mucit23

IF komutunu yanlış kullanıyorsun. Birden fazla şart vereceksen AND(&&) komutunu veya OR(||) komutunu kullanmalısın

İlk şartta demişsinki SNC değeri 0 dan büyükse ve 2 den küçükse PART1'e git. IF 2>SNC>0 THEN.. Böyle bir kullanım yok
Doğrusu şöyle olacak

IF SNC>0 && SNC<2 THEN GOTO ....

Diğerleri içinde aynısı geçerli.

IF SNC>128 && SNC<140 THEN GOTO....
IF SNC>110 && SNC<127 THEN GOTO....
IF SNC>94 && SNC<109 THEN GOTO....
IF SNC>65 && SNC<95 THEN GOTO....
IF SNC>45 && SNC<64 THEN GOTO....
IF SNC>2 && SNC<45 THEN GOTO....

Doğrusu böyle olmalı.

Bir ulusu yok etmenin En iyi yolu o ulusun dilini yok etmektir.

www.arectron.com/

. Kağan

Mucit çok teşekkür ederim "&&" kullanımını bilmiyordum.
:D

Teşekkür
Teşekkür
Teşekkür

ete

#3
Bir iki şey de ben ekleyeyim.
Verdiğin if'li  kontrol satırlarına bir bakalım ;
 IF 2>SNC>0 THEN GOTO PART1 'hepsi kapalı
      IF 140>SNC>128 THEN GOTO PART2  'A YI AÇ
      IF 127>SNC>110 THEN GOTO PART3  'B Yİ AÇ
      IF 109>SNC>94 THEN GOTO PART4    'D Yİ AÇ
      IF 95>SNC>65 THEN GOTO PART5     'E Yİ AÇ
      IF 64>SNC>45 THEN GOTO PART6     'F Yİ AÇ
      IF 45>SNC>2 THEN GOTO PART7     'G Yİ AÇ

SNC isimli değişkenin aldığı değere bağlı olarak programı değişik yerlere yönlendirmeye çalışıyorsun. Bu gibi durumlarda çok dikkatli olmak gerekir. Tercihler kararsızlık yaratmayacak şekilde düzenlenmelidir.
Programın şekline bağlı olarak küçükten büyüğe doğru sıralama yapmalı ve değişkenin değerinin başlangıç bitiş değerleri tereddüte mahal vermeyecek şekilde seçilmelidir.
Komutlara baktığımızda;
IF 2>SNC>0 THEN GOTO PART1 'hepsi kapalı  şeklindeki komut satırı aslında SNC değerinin 1 olduğu konumu işaret ediyor. Bu nedenle buraya IF SNC=1 THEN PART1 yazman yeterli olacaktır.
İlla yazdığına benzer bir şey yazacaksan önce büyük olma sonra küçük olma durumunu yazmak lazım. Şöyle;
IF SNC>0 AND SNC<2 THEN PART1

İkinci satıra bu sefer ,       IF 45>SNC>2 THEN GOTO PART7     'G Yİ AÇ  komutunu yazmak gerekir. Bu satırıda şöyle yazmalıyız;  IF SNC>2 AND SNC<45 THEN PART7  senşin komut satırının doğru yazılmış şekli bu ancak hemen bir şey dikkatimi çekiyor, ilk satırda SNC=1 ise değerlendirdik  . İkinci satır şunu söylüyor IF SNC>2 ise bu demektirki SNC=2 konumunu atlamış oluyoruz. Sence doğrumudur bu?. Bütün satırlarda birer konum atlamış oluyorsun aslında yeri gelince onuda açıklayacağım. Üçüncü satıra bakarsak;  IF 64>SNC>45 THEN GOTO PART6     'F Yİ AÇ olacak Bu satırı şöyle yazmamız gerek, IF SNC>45 AND SNC<64 THEN PART6  . Burada da benzer durum var bir önceki satır SNC=44 de kadar değerlendirecek . Çünki IF SNC<45 diyoruz. Burada da IF SNC>45 diyoruz ve bu durumda SNC=45 konumu değerlendirme dışı kalmış oluyor.!!!!!.  Önce satırların doğru halini verip sonra olması gerektiği şekilde yazacağım.
Bir sonraki satır IF 95>SNC>65 THEN GOTO PART5     'E Yİ AÇ  olacak ve bu satırı IF SNC>65 AND SNC<95 THEN PART5 şeklinde yazacağız. Burada da SNC=64 ve 65 değerleri kontrol dışında kalmış olacak!!!!!.
Gerisini kendin halledersin sanırım. Ancak olması gerekn şeklini ben vereyim;
IF SNC=1 THEN PART1                 ' 1
      IF SNC>1 AND SNC<45 THEN PART7      '2-44
      IF SNC>44 AND SNC<65 THEN PART6    '45-64
      IF SNC>64 AND SNC<95 THEN PART5    '65-94
      IF SNC>94 AND SNC<110 THEN PART4  '95-109
      IF SNC>109 AND SNC<128 THEN PART3 '110-127
      IF SNC>127 AND SNC<140 THEN PART2 '128-139


Ete




. Kağan

Teşekkürler ETE,

Bende farkettim ve değer atlamasın diye şöyle yazdım.

IF SNC>=146 THEN GOTO PART4      
        IF SNC>=128 && SNC<=145 THEN GOTO PART2    '
        IF SNC>=110 && SNC<=127 THEN GOTO PART3    '
        IF SNC>=94 && SNC<=109 THEN GOTO PART4    '
        IF SNC>=65 && SNC<=93 THEN GOTO PART5     '
        IF SNC>=45 && SNC<=64 THEN GOTO PART6    '
        IF SNC>=3 && SNC<=44 THEN GOTO PART7   '
        IF SNC>=0 && SNC<=2 THEN GOTO PART1    '



Powered by EzPortal