Sunum yükleniyor. Lütfen bekleyiniz

Sunum yükleniyor. Lütfen bekleyiniz

Algoritmalar ve Programlama I Ders 5: Operatörler

Benzer bir sunumlar


... konulu sunumlar: "Algoritmalar ve Programlama I Ders 5: Operatörler"— Sunum transkripti:

1 Algoritmalar ve Programlama I Ders 5: Operatörler
Doç. Dr. Cemil Öz Algoritmalar ve Programlama I Ders 5: Operatörler   SAÜ Bilgisayar Mühendisliği Dr. Cemil Öz

2 Operatörler Operatörler, değişkenler ve sabitler üzerinde matematiksel, karşılaştırma ve mantıksal işlemlerin yapılmasını sağlayan işlemcilerdir. Operatörler bakımından en zengin dillerden biri C/C++ dilidir. Operatörler mikroişlemci tarafından bir faaliyete neden olurlar ve bu faaliyet sonunda da bir değer üretilmesini sağlarlar. Programlama dillerindeki her operatör bir yada birden fazla makine komutuna karşılık gelir. Operatörlerin Sınıflandırılması  Operatörler işlevlerine göre:   Aritmetik operatörler (Arithmetic op.) İlişkisel operatörler (Relational op.) Mantıksal operatörler (Logical op.) Bit operatörler (Bitwise op.) Gösterici operatörler (Pointer op.) Özel amaçlı operatörler (Special purpose op.)

3 Aritmetiksel operatörler
Değişkenler ve sabitler üzerinde temel aritmetik işlemleri gerçekleyen operatörlerdir. C/C++ dilinde bulunan aritmetiksel operatörler; + : toplama - : çıkarma * : çarpma / : bölme % : modül adını taşıyan bölme işleminde kalanı verir -- : bir azaltma ++ : bir artırma

4 Aritmetiksel operatörler
   int a,b,c; a=10; /*a değişkenine 10 sayısı*/ b=5; /*b değişkenine 5 sayısı */ c=a+b; /*c değişkenine 15 sayısı*/ printf(“%d C’nin değeri : \n”, c ); /*ekrana 15 yazılır*/ c++; /*c’nin değeri 1 artırılır*/ printf(“%d C’nin değeri : \n”, c ); /*ekrana 16 yazılır*/ c--; /*c’nin değeri 1 eksiltilir*/

5 Aritmetiksel operatörler
   Aritmetik işlemler için örnek C/C++ programı; #include <stdio.h> void main(void) { int m=10, n=2, t,a,a2,b; t=m+n; a=m++; /*once a=m sonra m=m+1*/ a2=--m; /*once m=m-1 sonra a2=m*/ b=m/2; ++m; /*m=m+1*/ printf("m=%d, t=%d, a=%d, a2=%d, b=%d,",m,t,a,a2,b); }

6 Aritmetiksel operatörler
   #include <stdio.h> main() { int x, y; x=10; y=3; printf(“%d”,x/y); /*ekrana 3 yazdırılır*/ printf(“%d”,x%y); /*ekrana 1 yazdırılır*/ x=1; y=2; printf(“%d %d”,x/y, x%y); /*ekrana yazdırılır*/ Return 0; }

7 Aritmetiksel operatörler
   // Haftalık gelirinizi hesaplar #include <stdio.h> main() { float weekly, yearly; printf( “Yıllık gelirin nedir?’\” ); // kullanıcıya mesaj scanf(“%f ”,&yearly); Weekly= yearly/52; // Haftalık gelir hesaplanır printf(“\n\n Haftalık geliriniz %.2f YTL”, weekly); Return 0; } Yıllık gelirin nedir? Haftalık geliriniz YTL

8 Aritmetiksel operatörler
 C programlama dili önce çarpma, bölme ve mod işlemlerini, daha sonra toplama ve çıkarma işlemlerini gerçekleştirir. Bu bizim ilk okulda öğrenmediğimiz işlemlerdir.  6+2*3-4/2 6+6-4/2 6+6-2 12-2 10 3*4/2+3-1 12/2+3-1 6+3-1 9-1 8 20/3+5%2 6+5%2 6+1 7 Eğer biz var olan sıranın değişmesini istiyorsak parantezler kullanırız. Parantezlerin çarpma, bölme ve mod işlemine göre önceliği vardır. 6+2*(3-4)/2 6+2*-1/2 6+-2/2 6-1 10 3*4/2+(3-1) 3*4/2+2 12/2+2 6+2 8

9 Aritmetiksel operatörler
Örneklerin çalıştırılması sonucunda üreteceği değerleri tahmin edebiliyormuyuz? // Üç notun ortalamasını hesaplama #include <stdio.h> main() { float avg, grade1, grade2, grade3; grade1=87.5; grade2=92.4; grade3=79.6; avg=garade1+grade2+grade3/3.0; printf(“\n Ortalama %.1f”, avg); Return 0; } // Üç notun ortalamasını hesaplama #include <stdio.h> main() { float avg, grade1, grade2, grade3; grade1=87.5; grade2=92.4; grade3=79.6; avg=(garade1+grade2+grade3)/3.0; printf(“\n ortalama %.1f”, avg); Return 0; }

10 Aritmetiksel operatörler
 #include<stdio.h> #include<math.h> #include<conio.h> int a,b,c; main() { printf(“İlk sayı: "); scanf("%d",&a); printf(“\n İkinci sayı:"); scanf("%d",&b); printf("menu\n"); printf(“1- Toplama \n"); printf(“2- Carpma \n"); printf(“3- Çıkarma \n"); printf(“4- Bölme \n"); scanf("%d",&c); switch (c) { case 1:printf(“Toplam=%d",a+b);break; case 2:printf(“Fark=%d",a-b); break; case 3:printf(“Çarpım=%d",a*b);break; case 4:printf(“Bölüm=%d",a/b);break; }

11 İlişkisel (karşılaştırma) operatörler
   İlişkisel operatörler aynı tipten olan değişken veya sabit değerleri birbirleri ile karşılaştırmak için kullanılırlar. İlişkisel operatörleri, genel olarak, döngü deyimlerinde dönme koşulu ifadesi veya karşılaştırma deyimlerinde koşul ifadesinde kullanılır. C/C++ dilinde bulunan ilişkisel operatörler; > : büyük >= : büyük eşit < : küçük <= : küçük eşit == : eşit != : eşit değil İlişkisel operatörler C/C++ dilinde sayısal, karakter ve mantıksal değerler üzerinde kullanılır. Söz dizisi (string) için kullanılmaz {bu amaçla strcmp() gibi kütüphane fonksiyonları mevcuttur}.

12 İlişkisel (karşılaştırma) operatörler
   İlişkisel operatörler sırası ile <, >, <=, >= ve ==, != öncelik sırasına sahiptir.Ayrıca ilişkisel operatörler aritmetik operatörlerden öncelik sırası olarak sonra gelir. C programlama dilinde ilişkisel operatörlerin ürettiği değerler koşul sağlanması durumunda 1, sağlanmaması durumunda 0 (int) değeri üretir. Örnek 1  a=5; b=4; c=b<=a; /* c=1 */ c=a!=b; /* c=1 */ c=b>a; /* c=0 */ Örnek 2 a=10; b=5; c=a<b+3; Burada b+3  8 a<8  0 c=0 olur. Genellikle if vb fonksiyonlarla kullanılırlar if (x<15) ... if(z==12) … if(x<=y) …

13 Mantıksal operatörler
 Mantıksal operatörler genel olarak birden çok karşılaştırma ifadesinin birleştirilip tek bir koşul ifadesi haline getirilmesi veya koşulun tümleyenini (değil) almak için kullanılır. Yani, İki olay arasındaki mantıksal bağıntı değerlendirmek için kullanılır. C/C++ dilinde bulunan mantıksal operatörler; && : ve (and) || : veya (or) ! : değil (not) Mantıksal işlemlerin yürütülmesi sonucunda doğru veya yanlış değeri döndürülür

14 Mantıksal operatörler
 Mantıksal operatörler için örnek C/C++ kodu; if (x<15 && 20<y) if (!(m<5))

15 #include<stdio.h>
#include<conio.h> int a,b,c; float fx, x; void main() { printf(“a,b,c değişkenleri için üç integer değer giriniz :”) scanf(“ %d %d %d”,&a,&b,&c); printf(“ \n x değerini giriniz:” scanf(“ %f”,&x); fx=a*x*x+b*x+c printf(“ fx fonksiyon sonucu: %f”,fx); getch(); }

16 fx=a*(b*x*x+c*x/(d*x+e)-10);

17 Bit düzeyinde işlem yapan operatörler
Bit düzeyinde işlem yapmak, bir tamsayı veya karakter değişkenin değeri yerine doğrudan bitler (0,1) üzerinde sınama, değiştirme veya öteleme/kaydırma (shift) yapmak için kullanılır. Örneğin, bilgisayarın iletişim kanalından alınan 8 bitlik bir kısa tamsayının düşük öncelikli üçüncü bitinin ne olduğunu öğrenmek istiyorsak bu operatörleri kullanmamız gerekir. Bu operatörler, kullanıcıya işlemcinin birleştirici dili (assembly) düzeyinde, bitler üzerinde çalışma olanağı verir. C/C++ dilinde bulunan bit düzeyinde işlem yapan operatörler; & : bit düzeyinde ve (bitwise and) | : bit düzeyinde veya (bitwise or) ^ : bit düzeyinde ya da (bitwise xor) ~ : bir’e tümleme (one’s complement) << : sola kaydırma (shift left) >> : sağa kaydırma (shift right)

18 += : ekleyerek atama {t+=m+n  t=t+(m+n)}
Diğer operatörler  Atama operatörleri: bir değişkene bir bağıntının sonucunu veya bir değeri eşitlemek için kullanılırlar. C/C++ dilinde bulunan temel basit atama operatörü “=” dir. Ayrıca C/C++ dilinde aşağıda verilen diğer bitişik operatörler de kullanılabilir; += : ekleyerek atama {t+=m+n  t=t+(m+n)} -= : çıkararak atama {t-=m+n  t=t-(m+n)} *= : çarparak atama {t*=m+n  t=t*(m+n)} /= : bölerek atama {t/=m+n  t=t/(m+n)} %= : bölüp kalanını atama {t%=m+n  t=kalan(t/(m+n))} <<= : sola öteleyerek atama >>= : sağa öteleyerek atama &= : bit düzeyinde ve işlemi yaparak atama |= : bit düzeyinde veya işlemi yaparak atama ^= : bit düzeyinde ya da işlemi yaparak atama ~= : bir’e tümleme işlemi yaparak atama

19 Diğer operatörler   ? karşılaştırma operatörü: C/C++ dilinde if-else karşılaştırma deyiminin yaptığı işi sınırlı olarak yapan bir operatördür. Genel yazılım biçimi; (koşul deyimi) ? deyim1 : deyim2 Örnek 1: {m = (a>b) ? a : b;  a>b ise m=a, değilse m=b} Örnek 2: {(m>5) ? a++ : b++;  m>5 ise a=a+1, değilse b=b+1} & ve * işaretçi operatörleri: İşaretçi, bir değişkenin bellekteki adresidir. İşaretçi değişken bu adresin saklanacağı özel bir değişkendir. Bu tip değişkenlere yalnızca bellek adresleri veya diğer işaretçi değişkenler atanabilir. İşaretçiler önümüzdeki dönem verilecek olan C programlama dersinde detaylı olarak verilecektir. Burada sadece bu operatörlerin C/C++ dilinde bildirimini ve kullanımını gösteren basit bir örnek program verilecek;

20 p=&n; /* n 'nin adresi p' ye ataniyor */
Diğer operatörler  #include <stdio.h> void main(void) { int *p,*q, n=5, m=10, g; g=n; p=&n; /* n 'nin adresi p' ye ataniyor */ q=&m; /* m 'nin adresi q' ye ataniyor */ *p=m; /* adresi p ile gösterilen yere (yani n) m' in degeri ataniyor */ *q=g; /* adresi q ile gösterilen yere (yani m) g' in degeri ataniyor */ clrscr(); printf("p=%p,n=%d,q=%p,m=%d",p,n,q,m); }

21 sizeof operatörü: daha önce de örnek ile bahsedildiği gibi bir değişkenin veya veri tipinin bellekte kaç byte yer kapladığını verir. Örnekler: {sizeof a, sizeof (int), vb.}

22 İşlem öncelikleri  C/C++ dilinde yazılan işlemlerin istenildiği şekilde doğru olarak sonuçlana bilmesi için ifadeler işlem öncelikleri dikkate alınarak yazılmalıdır. Aşağıdaki tabloda operatörlerin C/C++ dilindeki öncekikleri görülmektedir. Ayrıca aynı önceliğe sahip operatörlerin peşi sıra yazılması halinde hangisinin ilk önce değerlendirileceği de aynı tabloda görülmektedir {Bu operatörlerden “->”, “.”, vb. bahsedilmeyen bir kısmı C Programlama dersinde yeri geldiğinde detaylıca ele alınacaktır};

23


"Algoritmalar ve Programlama I Ders 5: Operatörler" indir ppt

Benzer bir sunumlar


Google Reklamları