Veri Tipleri ve Operatörler (for Arduino)


Veri Tipi Nedir?

Programlama yaparken, programımızda kullanacağımız değişkenleri tanımlarız. Bu tanımlamalar için programımız belli bir yer ayırır. Yani Arduino için konuşacak olursak 32KB’lık Arduino UNO hafızasının belli bir bölümü bu değişkenlere ayrılır. Bu tanımlamaları yaparken, tanımlayacağımız sayının veya karakterin hangi sayı aralığında yer aldığına göre bir veri tipi seçmeliyiz.

Veri Tipi Neden Önemli?

Atadığımız her değişkenin hafızada belli bir yer tuttuğunu söylemiştik. Belli sayı aralıkları belli yerler tutar. Daha büyük sayıları kullanmamıza imkân veren veri tipleri hafızada daha çok yer kaplar. Dolayısıyla gerekmediği takdirde hafızada fazladan yer kaplamamızın anlamı yok. Arduino için konuşacak olursak, her ne kadar alternatifleri olsa da, UNO’nun 32KB’lık hafızası için her bir değişkenin harcadığı alan bizim için “büyük projelerde” çok önemli.
Şimdi gelelim veri tiplerine,

1) boolean

Tek bitlik bir değişkendir. İçerisinde sadece 0 veya 1 verilerini barındırabilir. Yani TRUE veya FALSE. Eğer bir yerde yalnızca iki ihtimal varsa bu veri tipini kullanabiliriz. Kısaca bool şeklinde de tanımlama yapılabilir. Kişinin isteğine bağlıdır.
bool durum;
bool led1=TRUE;

2) byte

8-bit negatif işaretsiz sayıyı içerisinde tutar. Bu da 0-225 arasına denk gelir.
Not: 1 byte 8 bitlik veri tutar. Makine dilinde veriler 0 ve 1’ler ile saklanır. Mesela, 01101001 verisi aslında bir sayının makine dilinde karşılığıdır. Buradaki 0 ve 1’lerin her biri bir bittir.
Byte kullanımına örnek verecek olursak;
byte x=21;

3) int

Uzun ismi Integer’dır ve tamsayı anlamına gelir.
16-bit yani 2 byte’lık alan kaplar. Byte veri tipine göre çok daha büyük sayılar barındırabilir. Tutabildiği sayı aralığı ise -32,768 ile 32,767‘dir.
Tam sayıları saklamak için en sık kullanılan veri tipidir. Arduino Due gibi 32-bit sistemlerde 32 bit yani 4 byte’lık veri tutarak -2,147,483,648 ile 2,147,483,647 arasındaki sayıları içinde barındırabilir.
int deger=96;  // deger adında, int türündeki değişkene 96 atansın

4) unsigned int

Integer veri tipi ile aynı özelliklere sahiptir. Yalnız negatif değerlere yer vermediği için, negatif değer için ayırdığı hafızayı pozitif değere ekleyerek 0 ile 65,535 arası değer alabilir. 32-bit sistemlerde ise 0 ile 4,294,967,295 arasında değer alabilir.
unsigned int sayi=146798;


5) char

Bir byte yani 8-bit genişliğindedir. İçinde karakter verisi bulundurur. -128’den 127‘ye kadar sayı verisi alabilir. Karakter değerleri numara şeklinde saklanmaktadır. Bunun anlamı da karakter değerleri üzerinde aritmetik işlem yapabileceğinizdir. Herhangi bir karakterin sayı değerini öğrenmek isterseniz ASCII tablosuna bakmalısınız. char değişkenine değer harf veya sayı olarak verilebilir.
char karakter = 'T';
char karakter = 84;
Bu kod satırlarının ikisi de aynı anlama gelmektedir.
ascii table4.xlsxASCII Tablosu


6) unsigned char

Negatif işareti olmayan char değişkeni tanımlar. Karakter verileri negatif değerler almazlar. Dolayısıyla char değişkeni sadece 127’ye kadar değer alabilir. unsigned char ile farklı karakter verilerine erişim olsa da Arduino dilinde byte verisiyle aynı anlama gelir ve 0 ile 255 arasında değer alır.
unsigned char karakter3 = 247;

7) word

Uno ve Atmega mikrodenetleyici bulunduran kartlarda unsigned int ile aynı özelliğe sahiptir. Fakat Due ve Zero kartlarda 32 bitlik negatif işaretsiz veri depolayabilir.
word deger=1200;

8) long

Tanımlayacağımız sayı çok uzunda bu tip bir değişken işimizi görecektir. 32 bitlik yani 4 byte’lık yer kaplayan bu veri tipi -2,147,483,648 ile 2,147,483,647 arasında değer alabilir.
long uzunsayi;

9) unsigned long

long veri tipinin negatif işareti kaldırılmış versiyonu da diyebiliriz. Yine long gibi 32 bitlik yer kaplar fakat negatif işaret için ayrılmış kısmı pozitifte de kullanabileceğimiz için 0 ve 4,294,967,295 arası bir tamsayı değeri atayabiliriz.
unsigned long cokuzunsayi=4325283;


10) short

Bütün sistemlerde kapladığı alan 16 bittir. Bu da -32,768 ile 32,767 arasına tekabül etmektedir.
short deger=7000;

11) float

Bu veri tipi ondalık sayıları da içinde barındırır. Eğer bir işlemde virgülden sonra da sayı varsa değişkenimizi bu veri tipiyle atamak zorundayız. float değişkeni -3.4028235E+38 ile 3.4028235E+38 arasında ondalık değer alabilir. Bu değer hafızada 32 bitlik yer tutar. float değişkeninde en fazla 6 veya 7 hane bulunabilir. Daha uzunu için double kullanmak lazımdır.
float sensor=3.2354;

12) double

Arduino’nun ATMEGA tabanlı kartlarında float değişkeninden farksızdır. Due kartında 64 bitlik yer tutar ve saklayabildiği ondalık sayı çok daha yüksek olabilir.
double ondalikdeger=2.4323;

Önemli Olan Veri Tipleri :

1)Boolean (mantıksal)
2)int (tam sayılarda)
3)long (tam sayılarda)
4)float (ondalık sayılarda)


Arduino Operatörler

Bir operatör, derleyiciye belirli matematiksel veya mantıksal işlevleri gerçekleştirmesini söyleyen bir semboldür. C dili yerleşik operatör açısından zengindir ve aşağıdaki operatör türlerini sağlar.
·         Aritmetik Operatorler
·         Karşılaştırma Operatorleri
·         Mantıksal Operatorleri
·         Bitsel Operatorler
·         Bileşik Operatorler

Aşağıdaki operatör işlemlerini A ve B değişkenleri üzerinden yapacağız. A değişkeni 10 ve B değişkeni 20 olduğunu varsayarak operatör işlemleri ve sonuçları gösterilmiştir.

Arduino Aritmetik Operatörler

Operator adı
Operator sembolü
Tanımı
Örnek
atama operatörü
=
Operatörün sağındaki değeri solundaki değişkene aktarır.
A = B
toplama
+
İşlenen iki değeri toplar
A + B sonuç: 30
fark
İlk değerden ikincisini çıkarır
A – B sonuç: -10
çarpma
*
iki değeri çarpar
A * B sonuç: 200
bölme
/
Bölme işlemi yapar
B / A sonuç:  2
mod
%
Kalan alma operatörüdür. B’nin A’ya bölümünden kalını verir.
B % A sonuç: 0
Örnek:
1
2
3
4
5
6
7
8
void loop () {
   int a = 9,b = 4,c;
   c = a + b;
   c = a - b;
   c = a * b;
   c = a / b;
   c = a % b;
}


Arduino Karşılaştırma Operatörleri

Operator adı
sembolü
Tanımı
Örnek
eşitlik
==
İki değerin bir birine eşit olup olmadığına bakar. Değeler bir birine eşitse sonuç trueolur.
(A == B) sonuç: false
eşitsizlik
!=
İki değerin bir birinden farklı olup olmadığını bakar. Değerler bir birindenf farklı ise sonuç true olur.
(A != B) sonuç: true
küçüktür
< 
Soldaki değerin sağdakinden küçük olup olmadığına bakar. Soldaki değer küçükse sonuç true olur.
(A < B) sonuç: true
büyüktür
> 
Soldaki değerin sağdakinden büyük olup olmadığına bakar. Soldaki değer büyükse sonuç true olur.
(A > B) sonuç: false
küçük eşittir
<=
Soldaki değerin sağdakinden küçük-eşit  olup olmadığına bakar. Soldaki değer küçük-eşitse sonuç true olur.
(A <= B) sonuç: true
büyük eşittir
>=
Soldaki değerin sağdakinden büyük-eşit  olup olmadığına bakar. Soldaki değer büyük-eşitse sonuç true olur.
(A >= B) sonuç: false
Karşılaştırma operatörleri
Karşılaştırma operatörleri genellikle döngülerin içinde kullanılır. Mesela şu değer bu değer eşitse şunu yap gibi. Bu operatörler aşağıdaki gibidir.


x == y; // x eşittir y
x != y;  // x eşit değildir y
x < y;   // x değeri y değerinden küçük
x > y;   // x değeri y değerinden büyük
x <= y; // x değeri y değerinden eşit veya küçük
x >= y; // x değeri y değerinden eşit veya büyük



Örnek:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
void loop () {
   int a = 9,b = 4
   bool c = false;
   if(a == b)
      c = true;
   else
      c = false;

   if(a != b)
      c = true;
   else
      c = false;
  
   if(a < b)
      c = true;
   else
      c = false;
  
   if(a > b)
      c = true;
   else
      c = false;
  
   if(a <= b)
      c = true;
   else
      c = false;
  
   if(a >= b)
      c = true;
   else
      c = false;
}



Arduino Mantıksal Operatörler

Operator adı
Operator sembolü
Tanımı
Örnek
ve
&&
Lojik VE işlemi yapar. İşlenen iki değer de sıfırdan farklı ise sonuç true olur.
(A && B) true
veya
||
Lojik VEYA işlemi yapar.  İşlenen iki değerden biri sıfırdan farklı ise sonuç true döner.
(A || B)
true
Örnek:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
int a = 9,b = 4
   bool c = false;
   if((a > b)&& (b < a))
      c = true;
     else
      c = false;

   if((a == b)|| (b < a))
      c = true;
   else
      c = false;

   if( !(a == b)&& (b < a))
      c = true;
   else
      c = false;
Mantık Operatörleri: 

Mantık Ve Operatörü :

if ( x > 0 &&  x < 5 )  
Yukarıdaki kodun gerçekleşebilmesi için 2 şart vardır . Bunların ikisininde sağlanması durumunda istenen komuta geçilir. Yani x sayısı 0 ile 5 arasında ise kod bir alt satıra geçebilir.

Mantık Veya Operatörü :

if ( x > 0 || y > 0 )
Mantık veya komutunda şartlardan biri sağlanması kodun devam etmesi sağlanır. Yani x değeri sıfırdan büyükse veya y değeri sıfırdan büyükse şart sağlanır.

Hiç yorum yok:

Yorum Gönder

Katkılarınız için şimdiden teşekkür ederim.