Re: [Linux-programlama] Python - For Dongusu

---------

New Message Reply About this list Date view Thread view Subject view Author view Attachment view

From: Tonguc Yumruk (tongucyumruk@interaktif.gen.tr)
Date: Mon 28 Feb 2005 - 22:40:31 EET


Şöyle birşey önerebilir miyim? Bir for döngüsü yerine her mnemonic'e
denk gelecek bir fonksiyon yazarsınız. Ardından bu fonksiyonları bir
sözlük (dict) içerisine yerleştirip çağırmasını sağlarsınız. Örneğin:

satirlar = ["NOOP", "ADD1 42", "JMP 1"]

komut_tablosu = {"NOOP":noop, "ADD1":add_one, "JMP":jmp}

def noop():
        pass

def add_one(n):
        return int(n) + 1

def jmp(satir):
        calistir(satir)

def calistir(satir):
        global satirlar
        global komut_tablosu
        komut, parametreler = satirlar[satir].split(maxsplit=1)
        parametreler = parametreler.split()
        komut_tablosu[komut](*parametreler)

tabii bu bir dakikada uydurulmuş bir kod olduğu için kesin hataları
vardır, çalıştırmayı bile denemedim doğrusu... Ancak eğer üç beş
mnemonic'ten daha karmaşık bir yazım kuralı diziniz varsa en azından
basitte olsa bir parser kullanmanızı öneririm...

Mon, Feb 28, 2005 at 09:49:53PM +0200 Tarihinde Hasan Demişki :
> Merhaba, python'a yeni basladim, o yuzden sorum cok basit olabilir
> ama ben bulamadim.
> Burada kod diye bir listemiz var , programin icerisindeki editordeki
> satirlari koyuyorum icersine. Sonra o satirlardaki kodlara gore islemler
> yaptiriyorum. JMP komutunu gorunce ornegin JMP 14 ise for dongusu icinde
> 14. satira geri donmesini istiyorum,ordan tekrar okumaya devam etsin.
> Fakat for dongusunda surekli artan bir sekilde gittigi icin bunu
> yapamiyorum.Kisa bir yoldan bunu cozmeye calisiyorum,yardimci
> olabilirseniz sevinirim.
>
> Hasan
>
> --------------------------------------------------------------------------------------------------
> kod=text.get("1.0",END).split("\n")
>
> for mnemonic in kod:
> if Skip==0 :
> if mnemonic.find("IN")>(-1):
> doIN()
>
> if mnemonic.find("JMP")>(-1):
> harfNO=mnemonic.find("JMP")
> PK=mnemonic[harfNO+4:(harfNO+6)]
> doJMP(PK)
>
> if mnemonic.find("SKN")>(-1):
> if HesapMakinesi<0 :
> Skip=Skip+1
> msg="Negatif Deger, Atlama Yapildi\n\n"
> cikti.insert(END,msg)
>
> if ...
>
> else: Skip=Skip-1
>
> ----------------------------------------------------------------------------------------------

> _______________________________________________
> Linux-programlama mailing list
> Linux-programlama@liste.linux.org.tr
> http://liste.linux.org.tr/mailman/listinfo/linux-programlama

-- 
Sevgi Saygı GNU/Linux
########################################################################
It is much easier to suggest solutions when you know nothing about the problem.
########################################################################
Tonguç Yumruk


_______________________________________________
Linux-programlama mailing list
Linux-programlama@liste.linux.org.tr
http://liste.linux.org.tr/mailman/listinfo/linux-programlama


New Message Reply About this list Date view Thread view Subject view Author view Attachment view

---------

Bu arsiv hypermail 2.1.2 tarafindan uretilmistir.