Matematik İşlemi

Bu konuyu okuyanlar

steve78

Doçent
Katılım
20 Haziran 2012
Mesajlar
800
Reaksiyon puanı
48
Puanları
28
Arkadaşlar merhaba,

x=1 ve y=1 olsun. x+=y+=x+=y buradaki kodun işleyişi nasıl oluyor açıklayabilir misiniz? Cevaplar x=4, y=3
 

Ben Kenobi

Müdavim
Katılım
6 Kasım 2011
Mesajlar
7,336
Reaksiyon puanı
3,155
Puanları
113
x+=y işleminden sonra x=7 ve y=3 olur. (Başlangıç x=4, y=3)
y+=x işleminden sonra x=4 ve y=7 olur. (Başlangıç x=4, y=3)
x-=y işleminden sonra x=1 ve y=3 olur. (Başlangıç x=4, y=3)
y-=x işleminden sonra x=4 ve y=-1 olur. (Başlangıç x=4, y=3)

sadece soldaki değerlere atama yapılır, sağdaki değerler değişmez.(++ işlemi vs yoksa)
 

steve78

Doçent
Katılım
20 Haziran 2012
Mesajlar
800
Reaksiyon puanı
48
Puanları
28
x+=y işleminden sonra x=7 ve y=3 olur. (Başlangıç x=4, y=3)
y+=x işleminden sonra x=4 ve y=7 olur. (Başlangıç x=4, y=3)
x-=y işleminden sonra x=1 ve y=3 olur. (Başlangıç x=4, y=3)
y-=x işleminden sonra x=4 ve y=-1 olur. (Başlangıç x=4, y=3)

sadece soldaki değerlere atama yapılır, sağdaki değerler değişmez.(++ işlemi vs yoksa)
Biliyorum bu kuralı. Ancak bu şekilde x+=y+=x+=y verildiğinde karıştırdım, uygulayamadım. Editörde (başlangıçta x=1 ve y=1) yazdığımda programdan x=4 ve y=3 çıktısını alıyorum ama tam oalarak anlayamadım mantığını.
 

Ben Kenobi

Müdavim
Katılım
6 Kasım 2011
Mesajlar
7,336
Reaksiyon puanı
3,155
Puanları
113
Bu kodu nereden aldıysan oradan uzaklaş.
Bu şekilde program yazılmaz.
Artistlik olsun diye yazılmış.
Programlarda okunabilirlik çok önemlidir.
Örneğin Microsoft'un C# kütüphanelerine baktığında rahatlıkla okuyabilirsin.(Algoritmayı anlamasan da işlemleri anlarsın en azından)
Ancak gösteriş yapmak isteyen işsizler böyle program yazar.
Her satırda ++ -- işlemleri ya da pointer işlemleri yoksa tek değişken ataması yapılır.
 

sdmh

Müdavim
Katılım
22 Ağustos 2008
Mesajlar
1,108
Reaksiyon puanı
14
Puanları
38
Buradaki kod kendine çok güvenen, operatörlerin efendisiyim diyen birisinin marifeti. Kod bu şekilde yazılmaz. İlla aynı satırda olması gerekiyorsa önceliğe göre parantez içine alınır. Bir derleyicide sonuç yukarıdaki gibi çıkar başkasında başka değerler çıkar başkasında ise hata verebilir. Birden fazla satır kullanmak acemilik değildir
 

steve78

Doçent
Katılım
20 Haziran 2012
Mesajlar
800
Reaksiyon puanı
48
Puanları
28
Bu kodu nereden aldıysan oradan uzaklaş.
Bu şekilde program yazılmaz.
Artistlik olsun diye yazılmış.
Programlarda okunabilirlik çok önemlidir.
Örneğin Microsoft'un C# kütüphanelerine baktığında rahatlıkla okuyabilirsin.(Algoritmayı anlamasan da işlemleri anlarsın en azından)
Ancak gösteriş yapmak isteyen işsizler böyle program yazar.
Her satırda ++ -- işlemleri ya da pointer işlemleri yoksa tek değişken ataması yapılır.

Buradaki kod kendine çok güvenen, operatörlerin efendisiyim diyen birisinin marifeti. Kod bu şekilde yazılmaz. İlla aynı satırda olması gerekiyorsa önceliğe göre parantez içine alınır. Bir derleyicide sonuç yukarıdaki gibi çıkar başkasında başka değerler çıkar başkasında ise hata verebilir. Birden fazla satır kullanmak acemilik değildir

Geçen senelerden çıkmış bir final sorusu bu. Anlıyorum ama yapabileceğim bir şey yok.
 

Ben Kenobi

Müdavim
Katılım
6 Kasım 2011
Mesajlar
7,336
Reaksiyon puanı
3,155
Puanları
113
Kusura bakmayın ama bizim hocaların davarlığı.
Amaç bilgi ölçmek değil dingillik yapmak.
Eğitim sisteminden önce öğretmenleri düzeltmemiz lazım.

Böyle saçma bir kodun derlenmesine izin verecek esneklik ya C++ da ya da Python'da olur.
Bunun dışındaki dillerin derleyicilerinde syntax hatası verir.
Hatta bu dillerde de derleneceğinden şüpheliyim.
Senin hocada leş gibi g*t varmış, g*tünden sallamanın en güzel örneği çünkü.
Ama şimdi sırf bunun için Visual Studio yükleyip uğraşamam.

Cevap da zaten yanlış.
x 5 olmalı y de 3 olmalı.
x+=y+=x+=y
İşlemler sağdan başlar.
x+=y+=(x+=y)
x+=y+=2 // x'e 2 atandı
x+=3 // y'ye 3 atandı
Son durumda x 5 y 3

Gecenin 1'inde tepem atıyor.
Böyle hocaların vizyonuna sokayım.
 

steve78

Doçent
Katılım
20 Haziran 2012
Mesajlar
800
Reaksiyon puanı
48
Puanları
28
Kusura bakmayın ama bizim hocaların davarlığı.
Amaç bilgi ölçmek değil dingillik yapmak.
Eğitim sisteminden önce öğretmenleri düzeltmemiz lazım.

Böyle saçma bir kodun derlenmesine izin verecek esneklik ya C++ da ya da Python'da olur.
Bunun dışındaki dillerin derleyicilerinde syntax hatası verir.
Hatta bu dillerde de derleneceğinden şüpheliyim.
Senin hocada leş gibi g*t varmış, g*tünden sallamanın en güzel örneği çünkü.
Ama şimdi sırf bunun için Visual Studio yükleyip uğraşamam.

Cevap da zaten yanlış.
x 5 olmalı y de 3 olmalı.
x+=y+=x+=y
İşlemler sağdan başlar.
x+=y+=(x+=y)
x+=y+=2 // x'e 2 atandı
x+=3 // y'ye 3 atandı
Son durumda x 5 y 3

Gecenin 1'inde tepem atıyor.
Böyle hocaların vizyonuna sokayım.
Aynen matıken x'i bende 5 buluyorum ancak NetBeans'de çıktısını aldığımda x'i 4 veriyor.
 

steve78

Doçent
Katılım
20 Haziran 2012
Mesajlar
800
Reaksiyon puanı
48
Puanları
28
Kusura bakmayın ama bizim hocaların davarlığı.
Amaç bilgi ölçmek değil dingillik yapmak.
Eğitim sisteminden önce öğretmenleri düzeltmemiz lazım.

Böyle saçma bir kodun derlenmesine izin verecek esneklik ya C++ da ya da Python'da olur.
Bunun dışındaki dillerin derleyicilerinde syntax hatası verir.
Hatta bu dillerde de derleneceğinden şüpheliyim.
Senin hocada leş gibi g*t varmış, g*tünden sallamanın en güzel örneği çünkü.
Ama şimdi sırf bunun için Visual Studio yükleyip uğraşamam.

Cevap da zaten yanlış.
x 5 olmalı y de 3 olmalı.
x+=y+=x+=y
İşlemler sağdan başlar.
x+=y+=(x+=y)
x+=y+=2 // x'e 2 atandı
x+=3 // y'ye 3 atandı
Son durumda x 5 y 3

Gecenin 1'inde tepem atıyor.
Böyle hocaların vizyonuna sokayım.
Pekii x = 2**3; bu durumda x kaç olur? IDE hata veriyor ama buda geçen senelerden çıkmış bir soru. Çift yıldızın ne analama geldiğini bilmiyorum. Sorunun orjinalide bu x = 19 % 4 + 15 / 2 * 3**2;
 

Ben Kenobi

Müdavim
Katılım
6 Kasım 2011
Mesajlar
7,336
Reaksiyon puanı
3,155
Puanları
113

steve78

Doçent
Katılım
20 Haziran 2012
Mesajlar
800
Reaksiyon puanı
48
Puanları
28

steve78

Doçent
Katılım
20 Haziran 2012
Mesajlar
800
Reaksiyon puanı
48
Puanları
28
Javanın yapımcısı Oracle kendi sitesinde bütün operatörleri listelemiş.
Böyle bir operatör yok.
Diyorum ya senin hoca sallıyor işkembeden.
Operators (The Java™ Tutorials > Learning the Java Language > Language Basics)

Stringlerde böyle bir işlem var. Klasörün içindeki tüm dosyaları eşleştirmek için. Senin işlemle alakası yok.
When to use ** (double star) in glob syntax within JAVA

Bir şey daha sormak istiyorum. iki koşul sağlaması gerektiğinde yada iki koşuldan herhangi biri sağlaması gerektiğinde bunu Java da nasıl yapabilirim?

Örn:

int a=2 b=3;

if( a=2 && b=3) yada if (a=2 || b=5)

{ yapılacaklar}

Önceki programlamalarda bu yukarıdaki gibi yapılıyordu. Java da IDE hata veriyor. Bu durumu Java da nasıl gösteriyoruz?
 

Ben Kenobi

Müdavim
Katılım
6 Kasım 2011
Mesajlar
7,336
Reaksiyon puanı
3,155
Puanları
113
if( a==2 && b==3) yada if (a==2 || b==5)

= yerine == koy.
 
Üst