MATLAB GUİ PROGRAM YAZMA

pasta_hazirlama_kodu

 

gui_pasta

Bir program, bilgisayarın ne yapacağını söyleyeceğimiz bir emir topluluğu olarak görebiliriz. Özel durumları bir kenara bırakırsak, bilgisayar sistemi:

  1. verileri geçici kaydecek birime(RAM),
  2. verileri kalıcı kaydecek birime(HARD DİSK),
  3. işlem yapacak birime(CPU),
  4. kullanıcıdan girdi alacak input birimine(Klavye ve mouse gibi),
  5. işlem sonuçlarını veya programın etkileşimini kullanıcıya aktaracak output birimine(monitör ve yazıcı gibi) sahiptir.

Tüm teknik bilgileri bir kenara bırakarak bilgisayar sistemini gündelik bir olayla somutlayabiliriz. Kendinimizi bir aşçı olarak hayal edelim ve bir mutfakta lezzetli pastalar yapalım :)

Programcılığın temellini oturtuğumuza göre artık biz de matlabın yapması gereken emirleri listesini(Program) yazabiliriz. yani bilgisayarın anlayacağı dilden konuşamaya başlayabiliriz. Yukarıdaki senaryoya uygun program yazalım ;)

  1. önceden sabit diskte sakladığımız verileri(pasta bilgisi ve malzeme bilgisi) gecici belleğe(RAM) yüklendiğinde "Malzemeler Yüklendi" mesajı verme
  2. veriler işlendiğinde "Pastalar Hazırlandı" mesajı verme
  3. textbox kullanılarak kullanıcıdan bilgi alma(özel sos ekleme)
  4. pasta ve özel sos bilgisini listbox içerisinde gösterme (pastalar servise hazır)
  5. listbox içerisinde silme(servis etme) veya sabit diske kaydetme(pastalar sonra kullanılmak üzere saklanması)

 matlab gui program yazmanız için size yardımcı olacak bilgiler için tıklayınız.

  1. listbox yüklenirken pencere kapatıldığındaki veriler kaydedilmişse onları yükleme fonksiyonu:
    % önceden oluşturulmuş verileri yükleme
    load('pastalari_sakla.mat')
    % sakla.list içindeki verileri servise_hazir_pasta_listbox içine yükleme
    set(hObject,'string',sakla.list)
    Inspector ekranından uyari_txt için String değerini "Malzemeler Yüklendi"
     olarak düzenleyerek yükleme sonrası mesaj gösterebiliriz.
  2. "10 Tane Pasta Hazırla" buttonu tıklanarak 10 tane yeni pasta "firindan_cikmis_pastalar_listbox" içerine eklenmektedir:
    function pasta_hazirla_Callback(hObject, eventdata, handles)
    %mevcut pasları al
    tum_firindan_cikmis_pastalar = get(handles.firindan_cikmis_pastalar_listbox,'string');
    %pastaların benzersiz olabilmesi için rastgele sayi üret
    rastgele_bir_sayi = num2str(rand());
    %10 tane pasta adı bir dizi oluştur
    for sayi=1:10
     pasta = ['Pasta_',rastgele_bir_sayi,'_',int2str(sayi)];
     %firindan_cikmis_pastalar_listbox boş ise
     if isempty(tum_firindan_cikmis_pastalar)
     tum_firindan_cikmis_pastalar = pasta;
     %firindan_cikmis_pastalar_listbox tek pasta var ise
     elseif ~iscell(tum_firindan_cikmis_pastalar)
     tum_firindan_cikmis_pastalar = {tum_firindan_cikmis_pastalar pasta};
     %firindan_cikmis_pastalar_listbox birden fazla pasta var ise
     else
     tum_firindan_cikmis_pastalar = {tum_firindan_cikmis_pastalar{:} pasta};
     end
    end
    %oluşturulan yeni ve eski pastaları firindan_cikmis_pastalar_listbox yükle
    set(handles.firindan_cikmis_pastalar_listbox,'string',tum_firindan_cikmis_pastalar);
    %kullanıyıca bilgi ver
    set(handles.uyari_txt,'string','10 tane pasta hazırlandı seçerek sos ekleyebilirsiniz.');
    set(handles.uyari_txt,'BackgroundColor','green');
  3. textbox içerisinde yazılan yazıyla seçilen pasta adını "+" ile birleştirme ve aktarma fonksiyonu:
    %özel sos ekle tıkladığında seçilen pastaya sos ekleyerek
    %servise hazır hale getirme
    function sos_ekle_btn_Callback(hObject, eventdata, handles)
    %tüm pastalar alınmakta
    tum_firindan_cikmis_pastalar = get(handles.firindan_cikmis_pastalar_listbox,'string')
    %seçilen pasta sırası alınmakta
    secilen_index = get(handles.firindan_cikmis_pastalar_listbox,'value')
    %seçilen pasta adı alınmakta
    secilen_pasta = tum_firindan_cikmis_pastalar{secilen_index};
    %seçilen pasta listbox silinecek
    tum_firindan_cikmis_pastalar(secilen_index)=[];
    %yeni firindan_cikmis_pastalar_listbox güncelle
    set(handles.firindan_cikmis_pastalar_listbox,'string',tum_firindan_cikmis_pastalar,'Value',1);
    %sos ekleme işlemi
    pasta_sosu = get(handles.sos_edit,'string');
    secilen_pasta = [secilen_pasta,'+',pasta_sosu];
    tum_servise_hazir_pastalar = get(handles.servise_hazir_pasta_listbox,'string');
    if isempty(tum_servise_hazir_pastalar)
     tum_servise_hazir_pastalar = secilen_pasta; 
    elseif ~iscell(tum_servise_hazir_pastalar)
     tum_servise_hazir_pastalar = {tum_servise_hazir_pastalar secilen_pasta};
    else
     tum_servise_hazir_pastalar = {tum_servise_hazir_pastalar{:} secilen_pasta};
    end
    %servise hazır pastalar eklenmiş hali güncellenmektedir.
    set(handles.servise_hazir_pasta_listbox,'string',tum_servise_hazir_pastalar);
  4. servise hazır pasta bilgisini servise_hazir_pasta_listbox  silinmekte ve uyari_txt bilgi gösterilmektedir.
    % seçilen pastayı servis etmektedir
    function servis_et_btn_Callback(hObject, eventdata, handles)
    %tüm servise hazır pastalar alınıp 
    %seçilen pasta bilgisi alınmaktadır ve silinmektedir.
    tum_servise_hazir_pastalar = get(handles.servise_hazir_pasta_listbox,'string')
    secilen_index = get(handles.servise_hazir_pasta_listbox,'value')
    secilen_pasta = tum_servise_hazir_pastalar{secilen_index};
    %seçilen pasta listbox silinecek
    tum_servise_hazir_pastalar(secilen_index)=[];
    set(handles.servise_hazir_pasta_listbox,'string',tum_servise_hazir_pastalar,'Value',1);
    servis_edildi = [secilen_pasta,' Servis Edildi...'];
    set(handles.uyari_txt,'string',servis_edildi);
    set(handles.uyari_txt,'BackgroundColor','red')
  5. pencere kapandığında  servise_hazir_pasta_listbox içerisindeki bilgiler sonradan yüklenmek üzere sabit diske kaydedilmektedir:
    %kapatma sırasında çalışır
    function figure1_CloseRequestFcn(hObject, eventdata, handles)
    %servise_hazir_pasta_listbox içerisindeki bilgiler alınıp
    %program çalıştırma sırasında geçici belleğe(RAM)yüklemek üzere
    %sabit diske kaydedilmektedir
     sakla.list = get(handles.servise_hazir_pasta_listbox,'string');
     save('pastalari_sakla.mat','sakla');
    % geçici bellekteki tüm objeler silinmektedir.
    delete(hObject);
  6. pasta hazirlama kodunu buradan indirebilirsiniz.
barcode
Destek İçin Buradaki Reklamları Tıklayabilirsiniz.
Destek İçin Buradaki Reklamları Tıklayabilirsiniz.

Ses Kontrolleri

Tam Ekran Yap