Forum: Diğer Konular RSS
GtkD Modül özellikleri
Sayfa:  önceki  1  2  3  4  5  6  7  sonraki 
cos00kun #61
Üye Kas 2014 tarihinden beri · 207 mesaj
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
Yanıtlanan mesaj ID 13174
Ali Bey sizin dediklerinizi de hafızama katarak şimdilik kod şu şekilde oldu ;
import gtk.Main;
import gtk.MainWindow;
import gtk.Layout;
import gtk.Label;
import gtk.Entry;
import gtk.Button;
import std.stdio : writeln;
import std.string : format;
import std.conv;
 
class Pencere : MainWindow {
    Layout düzen;
    Entry giriş1,giriş2,giriş3;
    Label etiket1;
    Button[] düğmeler;
 
    this() {
        super("İlkel Hesap Makinası..");
 
        struct DüğmeBilgisi {
            string isim;
            int x;
            int y;
        }
 
        DüğmeBilgisi[] düğmeBilgileri = [
            { "0", 10, 210 },
            { "1", 10, 165 },
            { "2", 70, 165 },
            { "3", 130, 165 },
            { "4", 10, 120 },
            { "5", 70, 120 },                    
            { "6", 130, 120 },
            { "7", 10, 75 },
            { "8", 70, 75 },
            { "9", 130, 75 },
            { "+", 190, 75 },    
            { "-", 190, 120 },
            { "*", 190, 165 },
            { "/", 190, 210 },
            { ".", 70, 210 },
            { "=", 130, 210 },
        ];
 
        düzen = new Layout(null, null);
        etiket1 = new Label("İLKEL HESAPLAMA YAPIYORUZ..");
        giriş1 = new Entry();
 
        foreach (d; düğmeBilgileri) {
            düğmeler ~= new Button(d.isim);
            düzen.put(düğmeler[$-1], d.x, d.y);
        }
 
        // Bileşen Ayarları..
        setSizeRequest(250, 275);
        move(100, 100);
        giriş1.setAlignment(1);
        düzen.setSizeRequest(50, 50);
        düzen.put(etiket1, 5, 5);
        düzen.put(giriş1, 10, 25);
 
        add(düzen);  
        showAll();
 
        düğmeler[1].addOnClicked(&topla);
    }
 
    void topla(Button düğme1) {
        writeln("Tıklama oldu"); // fonksiyonun çalışıp çalışmadığının konrolünü sağlamak için vardır.
        etiket1.setLabel("Hesap Makinası v.1.0");
        try {
            int ilk = to!int(giriş1.getText());
            giriş1.setText(to!string(ilk));
 
        } catch (ConvException hata) {
            // Hatayı bildiriyoruz 
            etiket1.setLabel("HATA: İki tamsayı girmelisiniz");
            writeln("Uyarı!! Hata fırlatıldı!!");
 
        } catch (Exception hata) {
            // Başka çeşit bir hata oluştu
            etiket1.setText(format("HATA: %s", hata.msg));
        }
    }
}
 
void main(string[] args)
{
    Main.init(args);
    Pencere pencere= new Pencere();
    Main.run();
}
Erdem hocam bugün kendimi biraz övebilirim çünkü hem Ali Hocam hemde sizin yazdıklarınızı aşağı yukarı önceden düşünebilmem sanırım iyi yolda olduğumun bir göstergesi (Gösterge lafı da programlama dilime uydu galiba:-) )

   Ufak bir hatırlatma yaparak devam edeyim;

Benim şimdiki sorunum yukarıdaki mesajlarda yazdığım gibi sadece ve sadece (Şimdilik) tıklanmayı nasıl algılayacağım konusu ? Aslında ben her bir düğme için ayrı bir işlevle bunları yaptırabiliyorum ancak benim amacım her bir düğmeye düğme1 sen 1 rakamını temsil ediyosun düğme2 sen 2 rakamını temsil ediyosun diye tanımlamak değil , direk olarak hangi düğmeye basıldığının tespiti konusu!.. Yani anladığım kadarıyla bir Event var ortada belkide sinyal diyelim.. Burda diyelimki düğme4 tıklandı işte bana bir şey o veriyi vermeli ki bende tek işlevle konuyu halledeyim :-). gtkd.org sitesine baktığımda onButtonClicked(), addOnButtonClicked() gibi işlevler var ama bunu kullanmayı şimdilik başaramadım ..
bu arada resim ve açıklama güzel oldu bunun için ayrıca sağol varol ..
E=mc^2
erdem (Moderatör) #62
Üye Tem 2009 tarihinden beri · 1047 mesaj · Konum: Eskişehir
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
cos00kun:
Benim şimdiki sorunum yukarıdaki mesajlarda yazdığım gibi sadece ve sadece (Şimdilik) tıklanmayı nasıl algılayacağım konusu ?

Aslında önceki örnekte de göstermiştim ama daha açık olarak senin yazdığın örnek üzerinde göstereyim. düğmeler isminde bir dizi yerine sadece bir Button düğme ekleyeceğiz.
        foreach (d; düğmeBilgileri)
        {
            düğme = new Button(d.isim);
            düzen.put(düğme, d.x, d.y);
            düğme.addOnClicked(&hesapla);
        }

        // düğmeler[1].addOnClicked(&topla);
    void hesapla (Button düğme)
    {
        giriş1.setText(düğme.getLabel());
    }

Böylece bir düğmeye basıldığı zaman hesapla işlevini çalıştıracağız. Ama senin şimdi yapman gereken sayılarla işleçleri tespit etmek. Örneğin kullanıcı 23 sonra + girdi.

Bu durumda ilk durumda ekranı 2 yapacağız. Sonra 23. Daha sonra bir işleç girildiği için önceki iletide bahsettiğim şekilde sayılar bir tarafta işleçler bir tarafta olacak şekilde çift uçlu kuyruğa atıp, kullanıcı hesapla = düğmesine bastığında ilk eklenen önce olacak şekilde çıkartıp hesaplama yaptıracağız.
cos00kun #63
Üye Kas 2014 tarihinden beri · 207 mesaj
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
Anladım..
şimdi şöyle yaptım ve oldu :-)
        foreach (d; düğmeBilgileri) {
            düğmeler ~= new Button(d.isim);
            düzen.put(düğmeler[$-1], d.x, d.y);
        }
 
        for(int say=0;say<16;say++) {
        düğmeler[say].addOnClicked(&hesapla);
        }
Şimdi sırada hangi butonun tıklandığını ve seninde bahsettiğin üzere tanımlamaları işlevleri planlayacağım ..
E=mc^2
erdem (Moderatör) #64
Üye Tem 2009 tarihinden beri · 1047 mesaj · Konum: Eskişehir
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
İstersen ilk döngünün içine bu satırı ekleyerek de yapabilirsin.
            düğmeler[$-1].addOnClicked(&hesapla);
Böylece ikinci döngüye gerek kalmaz.

Hatta bir ipucu daha ekleyeyim.
    void hesapla (Button düğme)
    {
        auto ekran = giriş1.getText();
        giriş1.setText(ekran ~ düğme.getLabel());
    }
cos00kun #65
Üye Kas 2014 tarihinden beri · 207 mesaj
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
Süper oldu bu sağol :) gerisini getirmeye çalışacağım bu haftasonuna kadar artık..
E=mc^2
cos00kun #66
Üye Kas 2014 tarihinden beri · 207 mesaj
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
Evet şimdilik Bir D dili acemisinin oluşturabileceği kadarıyla kafamda bir algoritma geliştirdim.. Sizlerle paylaşıp kısmetse bu haftasonu programın geri kalanını yani hesap makinasının çalışır şeklini bitireceğimi umuyorum.
tasarladığım algoritma kısaca şöyle (Belkide uzunca bilemedim  :-p )

öncelikle programı çalıştırıp rakamları girerken program rutin çalışacak ancak "+", "-", "/" yada "*" ya basıldığı anda program bir işleve yönelecek orda yukardaki işlemlerden hangisinin olduğu tespit edilecek ve o andaki giriş kutusundaki değer bir değişkene atanacak.. ardından giriş kutusunun hafızası silinecek ama yazısal yani görsel durum kalacak.. sonra program işlevin çağrıldığı yerden devam edecek.. ardından geri dönüp ikinci sayı için rutin işlem devam edecek.

Bu yeni tanımladığımız işlevde 4 işlem kontrolünden hemen önce "=" kontrolü yapılacak ve eğer önceden bir sayı girilmiş ise ona göre sonucu hesaplatan bir işleve yönlenip hafızadaki iki sayı bu 4 işlevden hangisi tanımlandıysa ona göre sonuş üretip Giriş kutusuna yazılacak..
Bu aşamayı bitirdikten sonrada Giriş kutusunda 2 sayımı girildi ? 4 işlemden önce ya "=" girildiyse ne olacak? hata kontrolleri ? gibi konuları çözüp ardından float double gibi üst düzeye geçeceğim..

Daha fazlasını kimse benden beklemesin çünkü daha önceden bahsettiğim dosyalardan verileri alıp okumak vesaire gibi konulara geri dönmem gerekiyor  :-p

ekleyeceğiniz düzelteceğiniz yada hatalı buldüğunuz herşeyi yazabilirsiniz arkadaşlar.. Şimdiden teşekkür ederim

Not: Erdem hocam bu not size! bu bahsettiğim yeni işlevi tanımlarken en çok sıkıntı çektiğim konu olan hangi parametrenin tanımlanacağı konusunu biraz daha açarsanız sevinirim.. Örneğin yeniİşlev (Button düğme); burda Button modülü bu işlevin içinde hiç kullanılmasada neden parametre olarak giriliyor mantığını biraz anlasamda tam çözemedim.. daha açıklayıcısı yukarda bahsettiğim yeni işlevi tanımlarken ben "auto ekran = giriş1.getText();" ifadesindeki ekran değişkenini parametre olarak yollamam gerekecek bu durumdada yeni işleve yine yeniİşlev(Button düğme); gibi bir parametremi yollamalıyım ?
E=mc^2
erdem (Moderatör) #67
Üye Tem 2009 tarihinden beri · 1047 mesaj · Konum: Eskişehir
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
https://github.com/erdemoncel/gtkd/blob/master/import/gtk/…

Buradan kaynak koduna bakıp da görebileceğin üzere aslında parametre olarak gönderdiğimiz düğme kullanılıyor. Burada dlg.

    gulong addOnClicked(void delegate(Button) dlg, ConnectFlags connectFlags=cast(ConnectFlags)0)
    {
        auto wrapper = new OnClickedDelegateWrapper(dlg);
        wrapper.handlerId = Signals.connectData(
            this,
            "clicked",
            cast(GCallback)&callBackClicked,
            cast(void*)wrapper,
            cast(GClosureNotify)&callBackClickedDestroy,
            connectFlags);
        return wrapper.handlerId;
    }

Aslında bu işleve bir delegate gönderiyoruz.

http://ddili.org/ders/d/kapamalar.html

Ya da bir fonksiyonun adresi gibi düşünülebilir sanırım.

Algoritma kısmı ise kolay. Hatta ben bazen öyle yapıyorum. Uzun bir programın takıldığım kısmını ilkönce çok basit bir örnek üzerinde kodluyorum sonra programa ekliyorum.

Yapman gereken kullanıcı sayısal, işleç ve = karakterleri girecek. İlkönce girilen karakter sayısal mı, işleç mi, eşittir mi bunu bulan konsolda bir d programı yazabilirsin. Sonra programa eklersin.
cos00kun #68
Üye Kas 2014 tarihinden beri · 207 mesaj
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
Erdem hocam cevap güzel ama henüz yazdıklarınızı anlayabilecek düzeyde değilim.. Yavaş yavaş bakıyorum dediğiniz konulara..  Bu arada kodda biraz karalama birşeyler yaptım ancak aşağıda belirttiğim yerde bi ufak tıkanıklık yaşadım;

import gtk.Main;
import gtk.MainWindow;
import gtk.Layout;
import gtk.Label;
import gtk.Entry;
import gtk.Button;
import std.stdio : writeln;
import std.string : format;
import std.conv;
 
class Pencere : MainWindow {
    Layout düzen;
    Entry giriş1,giriş2,giriş3;
    Label etiket1;
    Button[] düğmeler;
 
    this() {
        super("İlkel Hesap Makinası..");
 
        struct DüğmeBilgisi {
            string isim;
            int x;
            int y;
        }
 
        DüğmeBilgisi[] düğmeBilgileri = [
                        { "0", 10, 210 },
                        { "1", 10, 165 },
                        { "2", 70, 165 },
                        { "3", 130, 165 },
                        { "4", 10, 120 },
                        { "5", 70, 120 },                    
                        { "6", 130, 120 },
                        { "7", 10, 75 },
                        { "8", 70, 75 },
                        { "9", 130, 75 },
                        { "+", 190, 75 },    
                        { "-", 190, 120 },
                        { "*", 190, 165 },
                        { "/", 190, 210 },
                        { ".", 70, 210 },
                        { "=", 130, 210 },
                                          ];
 
        düzen = new Layout(null, null);
        etiket1 = new Label("İLKEL HESAPLAMA YAPIYORUZ..");
        giriş1 = new Entry();
 
        foreach (d; düğmeBilgileri) {
            düğmeler ~= new Button(d.isim);
            düzen.put(düğmeler[$-1], d.x, d.y);
            düğmeler[$-1].addOnClicked(&işle);
        }
 
        // Bileşen Ayarları..
        setSizeRequest(250, 275);
        move(100, 100);
        giriş1.setAlignment(1);
        düzen.setSizeRequest(50, 50);
        düzen.put(etiket1, 5, 5);
        düzen.put(giriş1, 10, 25);
 
        add(düzen);  
        showAll();
 
        düğmeler[1].addOnClicked(&işle);
    }
 
    void işle(Button düğme) {   // Bu işlevde girilen değerler sayımı değilmi ve giriş kutusuna gelen değerler yan yana eklenerek yazılıyor..
        if(düğme.getLabel()=="+"||düğme.getLabel()=="-"||düğme.getLabel()=="*"||düğme.getLabel()=="/"||düğme.getLabel()=="=") {
            işlemYap();
        } 
        else {
            writeln("Tıklama oldu",düğme.getLabel()); // fonksiyonun çalışıp çalışmadığının konrolünü sağlamak için vardır. Program bitimikaldırılacak!
            auto ekran = giriş1.getText();
            giriş1.setText(ekran ~ düğme.getLabel());
            try {
                int ilk = to!int(giriş1.getText());
                giriş1.setText(to!string(ilk));
            } catch (ConvException hata) {
                // Hatayı bildiriyoruz 
                etiket1.setLabel("HATA: İki tamsayı girmelisiniz");
                writeln("Uyarı!! Hata fırlatıldı!!");
 
            } catch (Exception hata) {
                // Başka çeşit bir hata oluştu
                etiket1.setText(format("HATA: %s", hata.msg));
            }
        }
    }
 
    void işlemYap() {  // Bu işlevde  4 işlem ve "=" işlemleri komtrol edilecek böylece 4 işlem yapılabilecek 
        writeln("işlemYap Tıklandı işlem yapıyorum..."); // fonksiyonun çalışıp çalışmadığının konrolünü sağlamak için vardır. Program bitimikaldırılacak!
        switch (düğme.getLabel()) {
            case "+":
                writeln("+ Tıklandı");
                break;
            case "-":
                writeln("- Tıklandı");
                break;
            case "*":
                writeln("* Tıklandı");
                break;
            case "/":
                writeln("/ Tıklandı");
                break;
            case "=":
                writeln("= Tıklandı");
                break;
            default:
                break;
        }
    }
}
 
void main(string[] args)
{
    Main.init(args);
    Pencere pencere= new Pencere();
    Main.run();
}
Bu kod da switch (düğme.getLabel()) { ifadesinde hata alıyorum.. Sanırım bir işlevden diğer işleve giderken bir parametre hatası yapıyorum..
E=mc^2
acehreli (Moderatör) #69
Kullanıcı başlığı: Ali Çehreli
Üye Haz 2009 tarihinden beri · 4583 mesaj
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
Hata mesajını göstermeyi unutmuşsun ;) ama herhalde düğme'nin ne olduğu bilinmiyor, değil mi?

işle() işlevine parametre olarak gelen düğme çağrılan başka her işleve otomatik olarak gitmez. Eğer aynı değişkeni işlemYap() içinde de kullanmak gerekiyorsa işlemYap'ın bir Button alması ve işle'nin de işlemYap'ı buna uygun olarak çağırması gerekir: işlemYap(düğme)

Ali
cos00kun #70
Üye Kas 2014 tarihinden beri · 207 mesaj
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
acehreli:
işle() işlevine parametre olarak gelen düğme çağrılan başka her işleve otomatik olarak gitmez.
Ali
püf noktası bu ..tamamdır Ali hocam ;-)
Aslında bu noktada D diline dönüp  biraz daha sınıf ve işlevlere yoğunlaştıktan sonra tekrar kaldığım yerden devam etmek işin özünü kavramak için belkide daha iyi olacak.. Hazmetmeden işin özünü çok kavramadan birşeyi yapmak pek bana göre değil  :blush: Yinede temelim sağlam az biraz daha kurcalarsam 1 haftaya Sınıf ve İşlev parametreleri ve kullanımlarını iyi öğrenirim sanırım..
E=mc^2
erdem (Moderatör) #71
Üye Tem 2009 tarihinden beri · 1047 mesaj · Konum: Eskişehir
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
Yanıtlanan mesaj #68
cos00kun:
Erdem hocam cevap güzel ama henüz yazdıklarınızı anlayabilecek düzeyde değilim.

Benim de temsilciler delegates konusunda henüz anlamadığım noktalar olabilir. Basitçe bilmemiz gereken bir düğmeye tıklandığında hangi düğmeye tıklandığını ayırt edebilmemiz için addOnClicked işlevini yazıyorsak düğmeyi de parametre olarak gönderiyoruz.

Senin yapacağın şey çok basit.

Bir tane program yazmanı istediler. Bu programda kullanıcı sayılar işleçler ve = karakteri giriyor. Örneğin :

> Bilgi giriniz :
> 3
> Bir rakam girdiniz
> /
> Bir işleç girdiniz
> =
> Eşittir tuşuna bastınız.

Bunu konsolda D ile yazmanı istediler. Gtkd kullanmadan. Soru bu.

Ben de bu yöntemi özellikle kod miktarı artıp program karmaşıklaştıkça kullanıyorum. Çünkü parçaları birbirini etkileyen bir programda sonucunu tam kestiremediğimiz bir değişiklik yaparsak bu sefer düzeltmek de zor olabilir. Ya git'le eski bir sürüme almak gerekecek. Ama bu durumda da yaptığımız son eklemeler kaybolabilir.

Örneğin merak ettim baktım kodladığım programlama sayfası için kaç satır kod yazmışım diye.
    $ find . -path ./venv -prune -o -name '*.py' | xargs wc -l
    919 ./programlama.py
     97 ./yanıtoyla.py
    129 ./soruoyla.py
wc: ./venv: Bir dizin
      0 ./venv
    228 ./identicon.py
   1373 toplam
Gene de 1000 satırın üzerine geçmiş. (identicon'u hazır kullandım. Sanırım sadece Python3'le çalışacak şekilde düzenledim)

Örneğin bu programda çalışırken kullanıcı oy verdikten sonra 5 dakika kadar verdiği oyu değiştirme özelliğini nasıl eklerim diye düşündüm.

Sonra programın bu bölümüne odaklandım ve çalışabilecek en basit programı yazdım. Takıldığım nokta oturum değişkenlerinin Flask'ta iş parçacıkları arasında paylaşılamıyor olmasından kaynaklanıyordu. Ben de bunun yerine geçici bellekleme (caching) kullandım.

Gene iletileri bir biri altına yazdırmak için bir ağaç yapısını MongoDB ile nasıl gösterebilirim onu bulmam gerekti. Bunu da ayrı bir program olarak yazdım sonra asıl programla birleştirdim.

Demek istediğim programlar geliştikçe ben programı alt programlara bölüp, sonra parçaları birleştirmeyi faydalı buluyorum.

Eğer programın basit diyebileceğimiz ve diğer kısımları etkilemeyecek değişiklikler yapıyorsam ana programa yazmaya devam ediyorum. Takıldığım noktalarda ise problemi alt parçalara bölmek kolaylık sağlıyor.
cos00kun #72
Üye Kas 2014 tarihinden beri · 207 mesaj
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
Çok faydalı oldu Erdem hocam bu yazdıklarınız.. Ali Hocam ve sizin tecrübeerinizin haklı olduklarını hobi olarak yaptığım her kodlama da dahada iyi anlıyorum.. Buton ve parametre olayını da tam olarak anladım bu arada..
şimdilik kod şu şekilde oldu.
import gtk.Main;
import gtk.MainWindow;
import gtk.Layout;
import gtk.Label;
import gtk.Entry;
import gtk.Button;
import std.stdio : writeln;
import std.string : format;
import std.conv;
 
class Pencere : MainWindow {
    int rakam1,rakam2,işlem;
    Layout düzen;
    Entry giriş1,giriş2,giriş3;
    Label etiket1;
    Button[] düğmeler;
 
    this() {
        super("İlkel Hesap Makinası..");
 
        struct DüğmeBilgisi {
            string isim;
            int x;
            int y;
        }
 
        DüğmeBilgisi[] düğmeBilgileri = [
            { "0", 10, 210 },
            { "1", 10, 165 },
            { "2", 70, 165 },
            { "3", 130, 165 },
            { "4", 10, 120 },
            { "5", 70, 120 },                    
            { "6", 130, 120 },
            { "7", 10, 75 },
            { "8", 70, 75 },
            { "9", 130, 75 },
            { "+", 190, 75 },    
            { "-", 190, 120 },
            { "*", 190, 165 },
            { "/", 190, 210 },
            { ".", 70, 210 },
            { "=", 130, 210 },
        ];
 
        düzen = new Layout(null, null);
        etiket1 = new Label("İLKEL HESAPLAMA YAPIYORUZ..");
        giriş1 = new Entry();
 
        foreach (d; düğmeBilgileri) {
            düğmeler ~= new Button(d.isim);
            düzen.put(düğmeler[$-1], d.x, d.y);
            düğmeler[$-1].addOnClicked(&işle);
        }
 
        // Bileşen Ayarları..
        setSizeRequest(250, 275);
        move(300, 200);
        giriş1.setAlignment(1);
        düzen.setSizeRequest(50, 50);
        düzen.put(etiket1, 5, 5);
        düzen.put(giriş1, 10, 25);
    
        add(düzen);  
        showAll();
 
        düğmeler[1].addOnClicked(&işle);
    }
 
    void işle(Button düğme) {   // Bu işlevde girilen değerler sayımı değilmi ve giriş kutusuna gelen değerler yan yana eklenerek yazılıyor..
        if(düğme.getLabel()=="+"||düğme.getLabel()=="-"||düğme.getLabel()=="*"||düğme.getLabel()=="/"||düğme.getLabel()=="=") {
            işlemYap(düğme);
        } 
        else {
            writeln("Tıklama oldu",düğme.getLabel()); // fonksiyonun çalışıp çalışmadığının konrolünü sağlamak için vardır. Program bitimikaldırılacak!
            auto ekran = giriş1.getText();
            giriş1.setText(ekran ~ düğme.getLabel());
            try {
                int ilk = to!int(giriş1.getText());
                giriş1.setText(to!string(ilk));
            } catch (ConvException hata) {
                // Hatayı bildiriyoruz 
                etiket1.setLabel("HATA: İki tamsayı girmelisiniz");
                writeln("Uyarı!! Hata fırlatıldı!!");
 
            } catch (Exception hata) {
                // Başka çeşit bir hata oluştu
                etiket1.setText(format("HATA: %s", hata.msg));
            }
        }
    }
 
    void işlemYap(Button düğme) {  // Bu işlevde  4 işlem ve "=" işlemleri komtrol edilecek böylece 4 işlem yapılabilecek
            
        
        if (rakam1!=0) {
            rakam2=to!int(giriş1.getText());
            if (işlem==1) rakam1+=rakam2;
            if (işlem==2) rakam1-=rakam2;
            if (işlem==3) rakam1*=rakam2;
            if (işlem==4) rakam1/=rakam2;
 
            writeln("şimdi yeni hafıza",rakam1);
            giriş1.setText(to!string(rakam1));
            işlem=0;
 
            }
 
        else {
            rakam1=to!int(giriş1.getText());
            giriş1.setText(to!string(""));
 
            switch (düğme.getLabel()) {
                case "+":
                    writeln("+ Tıklandı");
                    işlem=1;
                    break;
                case "-":
                    writeln("- Tıklandı");
                    işlem=2;
                    break;
                case "*":
                    writeln("* Tıklandı");
                    işlem=3;
                    break;
                case "/":
                    writeln("/ Tıklandı");
                    işlem=4;
                    break;
                case "=":
                    writeln("= Tıklandı");
                    işlem=5;
                    break;
                default:
                    break;
            }
        }
 
        writeln("işlemYap Tıklandı işlem yapıyorum... ilk rakam=",rakam1); // fonksiyonun çalışıp çalışmadığının konrolünü sağlamak için vardır. Program bitimikaldırılacak!
            
    }
}
 
void main(string[] args)
{
    Main.init(args);
    Pencere pencere= new Pencere();
    Main.run();
}
bi noktaya geldi ama henüz tam olarak çalışmıyor.. hafta sonunu bekleyemeden birşeyler yaptım.. şimdi ilk rakkam deilde ikinci rakamdan sonra herhangi bir 4 işlem tıklandığında önceki tıklanan ile karışan switch() işlevini düzenleyeceğim.. şu haliyle doğru çalışmıyor ama kafaya taktım bu programı öyle yada böyle bitireceğim  :-p  Bu arada çok iyileştirme olacak onun farkındayım ancak bi kabasını alayım sonra ince işlerine bakacağım
E=mc^2
erdem (Moderatör) #73
Üye Tem 2009 tarihinden beri · 1047 mesaj · Konum: Eskişehir
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
Bence şimdilik işlemleri bir tarafa bırak sonra yaparsın.

Bir ipucu daha vereyim. Girilen işlecin türünü anlamak için canFind kullanabilirsin.
import std.stdio;
import std.algorithm;
 
void main()
{
    auto sayılar = ['0', '1', '2' ];
 
    if (canFind(sayılar, '1'))
    {
        writeln("Sayıyı buldum");
    }
    else
    {
        writeln("Sayıyı bulamadım");
    }
}
cos00kun #74
Üye Kas 2014 tarihinden beri · 207 mesaj
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
süper oldu bu  :-)  Teşekkürler..
işlemleri bi tarafa bırak demişsin Erdem hocam da o zaman ne yapayım peki program bu hale geldi zaten ?
E=mc^2
cos00kun #75
Üye Kas 2014 tarihinden beri · 207 mesaj
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
Erdem Hocam ayrıca söylediğin parçalama işi çok mantıklı.. Ben tek D kodunda bunu anlamış oldum.. Yanlışım varsa düzelt hocam;
Bundan sonraki kodlarda ilk önce yapacağım iş; ne yapacağımı planlamak ardından kabaca bi akış diyagramını kağıda dökmek daha sonra bunları iş parçacıklarına bölerek dediğiniz gibi ayrı ayrı çalıştırarak ve çözümlemek en sonunda da bunları birleştirmek..
E=mc^2
Doğrulama Kodu: VeriCode Lütfen resimde gördüğünüz doğrulama kodunu girin:
İfadeler: :-) ;-) :-D :-p :blush: :cool: :rolleyes: :huh: :-/ <_< :-( :'( :#: :scared: 8-( :nuts: :-O
Özel Karakterler:
Sayfa:  önceki  1  2  3  4  5  6  7  sonraki 
Bağlı değilsiniz. · Şifremi unuttum · ÜYELİK
This board is powered by the Unclassified NewsBoard software, 20100516-dev, © 2003-10 by Yves Goergen
Şu an: 2018-01-18, 01:23:34 (UTC -08:00)