9 Haziran 2015 Salı

C Programlama Ders 4 - Operatörler

Bir önceki derste vermiş olduğumuz soruların cevapları : 1-
#include <stdio.h>
#include <conio.h>

int main(){

printf("\t\\\\Bu bir programdir//\n\t\tMENU\n1- Oyunu Baslat\n2- Kayitli Oyuna Gir\n3- Cikis");

getch();
return 0;
}
2-
  a) printf("%d %f",xy); .......Y........... // x ile y arasinda virgül bulunmalı ve adres operatoru kullanımalıdır.
  b) puts("Programlama yazarak ogrenilir."); .....D............ 
  c) scanf("%d",x); ..........Y   ......//  &x şeklinde kullanımalıdır
  d) gets(&x); ..........Y...... // gets de adres operatörune gerek yoktur.



3-
#include <stdio.h>
#include <conio.h>
int main(){
int x=3,y;
printf("x= %c\n",x); \\ Bu bir yorum satırıdır. // x int olduğundan %d kullanılmalı
scanf("%d",y); // y nin başına & kulanılmalıdır
printf("y= %d\n",); // virgülden sonra y yazılmalıdır
puts("Sayilar yukarida verilmistir.); // noktadaan sonra " yazılmalı.
getch();
return 0;
}

programın doğrusu

#include <stdio.h>
#include <conio.h>
int main(){
int x=3,y;
printf("x= %d\n",x); \\ Bu bir yorum satırıdır. // x int olduğundan %d kullanılmalı
scanf("%d",&y); // y nin başına & kulanılmalıdır
printf("y= %d\n",y); // virgülden sonra y yazılmalıdır
puts("Sayilar yukarida verilmistir."); // noktadan sonra " yazılmalı.

getch();
return 0;
}

olur.

----------------------------------------------------------------------------------------------------------------------------------

Operatörler 
Değişken veya sabitler üzerinde işlem yapmamızı sağlayan simgelerdir.
Aritmetik Operatörler
Operatör        Açıklama      Örnek      Anlamı
     +                Toplama        x+y         x ve y yi toplar
     -                 Çıkarma        x-y          x ve y nin farkı
     *                Çarpma         x*y         x ve y nin çarpımı
     /                 Bölme           x/y         x ve y nin oranı
    %                Mod             x&y        x/y nin kalanı
Arama Operatörleri    
Operatör        Açıklama                     Örnek      Anlamı
     =                   Atama                        x=7          7 yi x e atar
     +=            Toplayarak Atama        x+=y         x=x+y
     -=             Çıkararak Atama          x-=y          x=x-y
    *=             Çarparak Atama           x*=y          x=x*y
    /=              Bölerek atama              x/=y           x=x/y
    %=           Kalanı atama                x%=y          x=x%y
    ++            Bir arttırma          x ++  veya ++x    x=x+1
    --             Bir Azaltma          x--     veya --x      x=x-1
Karşılaştırma ve Mantıksal Operatörleri 
Operatör              Açıklama              Örnek      Anlamı
        >                 Büyüktür              x>y           x, y ' den büyük mü ?
        <                 Küçüktür              x<y           x, y ' den küçük mü?
        >=               Büyük Eşit          x>=y         x, y ' den büyük yada eşit mi?
        <=               Küçük Eşit          x<=y         x, y ' den küçük yada eşit mi?
        ==               Eşittir                  x==y         x, y ye eşit mi?
        !=                Eşit Değil            x!=y         x, y den farklı mı?
        &&             Ve                 x>2 && x<10   x 2 den büyük ve 10 dan küçük mü?
          ||                Veya             x<2 || x>10      x 2 den küçük veya 10 dan büyük mü?    

Yukarıdaki operatörleri program yazarken sürekli kullanırız. Bu operatörler programı yazarken bize yön verecek , işlem yaptıracak ve algoritmalar yazmamızı sağlayacaktır. Bunların haricinde bit düzeyinde işlem yapan operatörler de vardır. Bunları sonraki derslerimizde anlatacağım.


#include <stdio.h>
#include <conio.h>

int main(){
int x=8,y=3,z;
// Aritmetik operatörler
z=x+y;//x ile y toplar z ye atar = burda atama görevi görür , z = 11        
printf("%d\n",z);
z=x-y;//x ile y nin farkını alır  z ye atar , z = 5
printf("%d\n",z);
z=x*y;//x ile y yi çarpar z ye atar , z = 24
printf("%d\n",z);
z=x/y;//x ile y nin oranını alır z ye atar , z = 2
printf("%d\n",z);
z=x%y;//x ile y nin modunu alır z ye atar , z = 2 kalan 2 dir.
printf("%d\n\n\n",z);
    // Atama  Operarörleri
x+=y; // x=x+y; anlamına gelir , yani x ile y yi toplar x e atar , x= 8+3 = 11
printf("%d\n",x);
x-=y; // x=x-y; anlamına gelir , yani x ile y nin farkını alır , x = 11-3= 8
printf("%d\n",x);
x*=y; // x=x*y anlamına gelir , yani x ile y nin çarpımını alır , x = 8 * 3 = 24
printf("%d\n",x);
x/=y; // x=x/y anlamına gelir , yani x ile y nin bölümünü  alır , x = 24 / 3 = 8
printf("%d\n",x);
x%=y; // x=x%y anlamına gelir,  yani x ile y nin modunu alır, x= 8 % 3 = 2
printf("%d\n",x);
x++; // x=x+1 anlamına gelir , yani x= 2+1 = 3
printf("%d\n",x);
x--; // x=x-1 anlamına gelir , yani x= 3-1 = 2
printf("%d\n",x);

getch();
return 0;
}

x++ , ++x ve x--, --x işlemleri
x++ x=x+1 anlamına gelse bile bu bir atama operatörü dür . Bazı işlemlerde farklı sonuçlar verebilir . Hadi bunu inceleyelim :

int x = 8 , y=3 , z ;  tanımlı olsun.

x++ veya ++ x dediğimizde x i 1 arttırır , böylece sonraki işlemlerde x 9 olarak alınır.Çıkarmada da aynı şekildedir.



Fakat x++ gibi operatörler tek başına kullanılmadıkları zaman atama sırasına dikkat edilmelidir.

Örneğin:
       z = (x++) + y ;  dediğimizde x in 1 arttığını düşünürüz sonra y ile toplarız sonucu 12 buluruz. Bu tamamen yanlıştır. Çünkü programlar = ifadesinin solundan sağına doğru atama yapılır.







 Anlatmak istediğimi anladığınızı düşünüyorum. Peki ++x kullansaydık ne olacaktı ?



Mantığını bir kere oturttunuz mu bir daha bununla ilgili yanlış yapmazsınız.Son bir örnek daha yapalım.

int x=3,y=5,z;

z= (y++)+(++y)+x; // Önce y nin değeri işleme alınır sonra y 1 arttırılır yani işleme 5 i alırken y nin değeride 6 olacak  ++ y de  y nin değeri 1 arttırılır yani 6+1 =  7  sonra y yi işleme alacağız , yani 7 yi işleme alırız. En sonunda da x i yani 3 ü işleme alırız. Yani

z = 5 + 7 + 3 = 15 olur.

Bakın y++ da işleme y nın değerini aldıkdan sonra sonraki işlemler için y yi 1 arttırıyoruz.

Evet benim operatörlerle alakalı söyleyeceklerim bunlar sonraki derste görüşmek üzere ...



Hiç yorum yok:

Yorum Gönder