Şekildeki kodun kullanım amacı

BayramSldr

Üye
Katılım
12 Ocak 2019
Mesajlar
48
Puanları
1
Yaş
23
2020-12-09_20-33-47.png

Arduino Lcd ı2c ile birlikte menü projesi yapmak istedim ve internetten biraz araştırma yaptım. Ve şöyle bir kod buldum. kodu genel olarak kavradım fakat şu while olan yeri anlayamadım normalde while döngüsü oluştururken koşulun sağlanması durumunda altta yazılan kodlar devreye giriyor fakat buradakinin altında kod yok. Tam olarak kullanım amacını kavrayamadım.
 
Yani butona bastığımız zaman değer 1 azalıyor ardından while ile sonsuz döngüye mi giriyor ?
Tuşun basılı haliyle bırakılmış halinin ayrımı için otada bekleme konmuş. Aksi halde tuşa basıldığında kod sürekli basıl halde yspılacak işlemi tekrarlar. Mesela bir sayaç ise tuşa basıldığında sürekli artar, halbuki bu halde tek tek basarak saydırmak mümkün.
 
Tuşun basılı haliyle bırakılmış halinin ayrımı için otada bekleme konmuş. Aksi halde tuşa basıldığında kod sürekli basıl halde yspılacak işlemi tekrarlar. Mesela bir sayaç ise tuşa basıldığında sürekli artar, halbuki bu halde tek tek basarak saydırmak mümkün.
Yardımınız için teşekkürler anladım.
 
Herhalde düğmeye basılmadığı sürece boş boş bekle demek istemiş.

Ama derleyici en iyileştirme yapıp o bölümü çalıştırmayabilir. En azından 32 bitlik sistemler için öyle diye hatırlıyorum.

Zaten pek güzel bir örnek sayılmaz.

Kaynak kod paylaşımı yaparken, Ekran görüntüsü yerine kaynak kodun kendisini göndermeniz daha iyi olacaktır.

Üst tarafta kod ekleme bölümü var.

kod1.png

Buradan dili de seçersek daha iyi görüntülenecektir.
kod2.png


Örnek olsun diye basit bir C++ kodu ekledim.

C++:
#include "ogrenci.h"

using std::istream;    using std::vector;

bool karsilastir (const Ogrenci & ilk, const Ogrenci & ikinci)
{
    return ilk.isim < ikinci.isim;
}

istream & oku (istream & giris, Ogrenci & ogrenci)
{
    giris >> ogrenci.isim >> ogrenci.arasinav >> ogrenci.sonsinav;
    odevOku(giris, ogrenci.odevler);
    return giris;
}

istream & odevOku (istream & giris, vector<double> & odev)
{
    if (giris)
    {
        odev.clear();
        double girilen;

        while (giris >> girilen)
            odev.push_back(girilen);
        giris.clear();
    }
    return giris;
}
 
Genelde tuş basımı kontrollerinde, basılmada yapılmak istenen işlemin tuş basılı olduğu sürece sürekli tekrarlamaması için bir şekilde kontrol edilmesi gerekiyor. Mesela tuşa basışta bir değişkene bir değer atanıp o değer değilse işlem yaptırılır, tuşu bırakınca da değişkene tekrar ilk değer atanır. Kod biraz zor gelse de uygun, işlevsel kod bu şekilde olur. Kolayı ise böyle birşeyle uğraşmadan tuşa basma yerine tuşu bırakma olayında işlem yaptırılabilir.
 

Forum istatistikleri

Konular
129,864
Mesajlar
930,851
Kullanıcılar
452,726
Son üye
ugur Göktürk

Yeni konular

Çevrimiçi üyeler

Geri
Üst