Şimdi Ara

Arduino ile ilgili sorularım var

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
2 Misafir - 2 Masaüstü
5 sn
6
Cevap
0
Favori
200
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 1
Giriş
Mesaj
  • Coşkun taşdemirin kitabından çalışıyorum ve şu örneği tam anlayamadım.Öncelikle long int ne oluyor?Longu biliyorum ama long int???Ve neden başta 0 a eşitledik???Sonra neden loopun içinde tamsayilara yeni değer atadık???Ve neden tamsayisonuc=tamsayi1*tamsayi2 diye yazdık ????

    Tip dönüşümü yapılmadan yazan kısımdan sonrasını hiç anlamadım zaten.
    Son olarak while döngüyü durdurmaya yarıyor anşadığım kadarıyla.İçine bir değer yazınca ne farkediyor?? Arduino ile ilgili sorularım var Arduino ile ilgili sorularım var Arduino ile ilgili sorularım var



    < Bu mesaj bu kişi tarafından değiştirildi quax77 -- 22 Eylül 2020; 9:52:58 >
    < Bu ileti DH mobil uygulamasından atıldı >







  • "long" kelime anlamı olarak uzun demek. Bir değişken tanımlaması yapılırken kullanıldığında yazılan değişkenin sınırlarının genişlemesini sağlıyor. Mesela:

    int x;

    yazdığımızda x değişkeni 16 bitlik yer kaplıyor. Bu da x'in en fazla 2^16 = 32.767 değerini alabileceğini gösteriyor.

    long int x;

    yazıldığında x değişeni yerine 32 bit yani 2.147.483.647 tane farklı değer veya pozitif sayılarda maksimum bu değer yazılabilir. X değerine daha büyük bir sayı yazamazsınız çünkü hafızada x değişkeni için ayırılmış olan yere sığmaz.

    Bir int tipi değişkeni başlangıçta 0'a eşitlemek bir güvenlik önlemi aslında. Tabi istediğiniz bir başka sayıya da eşitleyebilirsiniz ihtiyacınıza göre. Ben boş bırakılmasına karşıyım ama. Programlama dili eğer int tipinde belirlediğiniz x değişkeni için otomatik olarak 0 değerini atamıyorsa x'in değeri null yani boşluk, hiçbir şey, tanımsız olarak kalacaktır. Siz yazdığınız kodda x'i çağırıp işleme katmak istediğinizde eğer x'in değeri null ise işlem yapılamayacak, program çökecektir. Bu nedenle genellikle int tipi değişkenlere en başta bir değer ataması yapılır.

    Şimdi şu attığınız fotoğrafı inceleyip ne yapıldığını yazayım.

    Önce int tipinde tamsayi1, tamsayi2 ve tamsayisonuc değişkenleri oluşturulmuş. Sonra long int tipinde uzuntamsayi değişeni oluşturulmuş. Bu değişkenin long tipinde oluşturulmasının sebebi ileriki adımlarda yapılacak çarpma işlemi sonucunda ortaya çıkan sayının 16bitlik hafızaya sığmama ihtimali. 2 tane 16Bit yani 2^16 yani 32.767 sayısı çarpıldığında ortaya 32Bit yani 2^32 sayısı ortaya çıkar. Bu nedenle sonuç long tipi bir int değişkenine kaydedilecek.
    Döngü içerisine girildi. Şimdi konsolda 12+5= yazıyor. Bu sayılar tamsayı1 ve tamsayı2 değişkenlerine atadığımız sayılarla aynı. Sonuç hesaplanıp ekrana sonucu yazdırılıyor.
    Şimdi değişkenlere 1000 ve 1400 değerli atanmış. Toplama işlemi yapılıp ekrana yazdırılıyor.
    Evet sıra geldi tip dönüşümü yapılmayan kısma. tamsayı1 ve tamsayı2 çarpılıp long tipinde oluşturduğumuz uzuntamsayı değişkenine atanıyor. Burada bir sorun yok. Aslında farklı tipteki değişkenleri birbirine eşitleyemezsiniz. Mesela bir string değişkeni int değişkenine atanamaz. Fakat burda durum farklı. İkiside int değişkeni. Fakat birisi daha geniş aralıklı değer alabiliyor o kadar. Yapılan işlem sonucu uzuntamsayı değişkenine sığdığı için sorun yok. Fakat siz 2 tane long tipi değişkeni çarpıp normal bir int değişkenine atmak isteseydiniz yine hatayla karşılaşacakstınız. Çünkü işlem sonucu normal bir int değişkeni içerisine sığmayacaktı.
    Son olarak tip değişimine geldik. Burada işlem yaparken normal boyutlu int değişkenleri önce long boyutuna çevriliyor. Sonrasında çarpılıp uzuntamsayıya atama yapılıyor. Değişen bir şey olmayacak. Daha kolay anlaşılması açısından şöyle düşünebiliriz. Mesela 3 ve 4 sayısını toplayacağız. Sonuç 7 çıkar. Eğer 03 ve 07 sayılarını toplasaydık sonuç 07 olurdu. Yani yine 7 olurdu. Kitabın bu örnepinde yapılan tip değişimi de tam olarak böyle bir şey.
    En son while(1) denilmiş ve bu haliyle sizin kafanızı karıştırmış. While kelimesinin türkçesi "iken"dir. Mesela while(1) = 1ken demek. Bu da şu anlama geliyor 1 olduğu sürece while fonksiyonunun parantezleri içinde ne yazıyorsa onu yap. Bu örnekte parantezler içinde hiçbir şey yok. O yüzden program hiçbir şey yapmıyor bir nevi bekliyor. Aslında while fonksiyonu kullanılırken while(x=1) gibi yazılır ki siz sonra x değişkeninin değerini değiştirip döngü içinden çıkabilin. Burada kısır (sonsuz) döngü oluşturulmak istendiğinden 1 yazılmış sadece.

    Ekstra bir bilgi vereyim size. Bu kitabın yazarı arduinoyu c veya c++ dili öğretmeye çalışır gibi bir örnekle hazırlamış. Bu bence yanlış bir örnek ve sizin de kafanızı karıştırmış. Arduino bir yazılım dili değil. Haliyle toplama çarpma yaptırmak için kullanılmayacak. Sanki bir komut satırı kullanıyor gibi seri monitörü böyle cambazlıklarla bir arayüz haline getirmeyi yanlış buluyorum. Ha illa yapılacaksa detaylı bir şekilde açıklaması yapılmalı. Kısır döngü yazıp geçilmemeli ki daha işin başında olan arkadaşların kafası karışmasın. Size tavsiyem kitabı elinize alıp roman okur gibi okumayın. Bu şekilde yazılım öğrenilmez. Bilgisayarın başın geçin tek tek yazın kodları. Mesela while bloğunu silin. Bakın bakalım ne oluyor. Yazar onu niye oraya eklemiş? Merak edin, deneyin ve öğrenin. Kolay gelsin, başarılar diliyorum.

    < Bu ileti DH mobil uygulamasından atıldı >




  • zwanzig kullanıcısına yanıt
    Sizin önereceğiniz bir kaynak var mı?

    < Bu ileti DH mobil uygulamasından atıldı >
  • muratseker M kullanıcısına yanıt
    Ben bu tip konularda basılı yayınları kullanmayı sevmiyorum. Zaten şimdiye dek gördüğüm tüm kitaplar benzer formatta hazırlanmıştı. Bu nedenle kitap önerisinde bulunamıyorum. Ancak linkini paylaştığım kaynakları okur, izler, uygularsanız daha kolay ve keyifli bir şekilde arduino'yu kullanmayı ve kodlamayı öğrenebilirsiniz.
    Meraklı Maymunyoutube
    Arduino Nedir? - Çağan'la Arduino'ya Giriş 1
    https://www.youtube.com/watch?v=poBIqdAofxY&list=PL-U_jBeM2gfBvzPVdERtv5As-cm7y9FzW
    https://www.youtube.com/c/LezzetliRobotTarifleriTv/playlistshttps://maker.robotistan.com/arduino-yazilim-kurulum/
    devreokulu.com
    ARDUINO DERS-1
    https://devreokulu.com/ArduinoDers1.html


    Udemy üzerinde şuan ücretsiz olan Arduino eğitimleri
    https://www.udemy.com/course/ardunio-ile-robotik-egitimi/https://www.udemy.com/course/arduino-ile-robotik-kursu/https://www.udemy.com/course/sezerduino/https://www.udemy.com/course/proteus-ile-arduino-dersleri/https://www.udemy.com/course/proteus-ile-arduino-dersleri-2/https://www.udemy.com/course/arduino-ile-robotik-kursu/



    < Bu mesaj bu kişi tarafından değiştirildi zwanzig -- 24 Eylül 2020; 16:32:22 >




  • zwanzig kullanıcısına yanıt
    Teşekkür ederim hocam.

    < Bu ileti DH mobil uygulamasından atıldı >
  • Yapay Zeka’dan İlgili Konular
    Berserk (ile ilgili bir sorum var)
    10 yıl önce açıldı
    Sabit Kamera ile İlgili Sorum
    12 yıl önce açıldı
    Daha Fazla Göster
    
Sayfa: 1
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.