Şimdi Ara

C++ Öncelik Karmaşası (––a * b++)

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
2 Misafir - 2 Masaüstü
5 sn
6
Cevap
0
Favori
641
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 1
Giriş
Mesaj
  • Hocam aşağıdaki programın çıktısının şu şekilde olması gerektiğini ama compiler'ın yanlış hesapladığını söylüyor.
     ++++ 28 
    7 ****
    85 !!!!
    10 2 ----


    Ben ise bilgisayarın hesapladığının aynısını buluyorum.
    Örneğin h [ k ] = h [ k – j ] * b + b * j++ + ––a * b++ + ++k * a ; satırını hesaplarsam
    h[3]=h[0]*2+2*3+2*2+4*2
    h[3]=20 oluyor... Sizce de olması gereken bu değil mi ben mi yanlış düşünüyorum?

     
    #include <conio.h>
    #include <iostream>
    using namespace std;
    int ktu ( int h [ ] , int z , int w ) ;

    int main ( )
    {
    int j = 3 , k = 2 , a = 3 , b = 2 , r = 2 ;
    int h [ ] = { 1 , 5 , 7 , 1 , 0 , -6 } ;
    for ( ; ; )
    {
    k++ ;
    if ( k > 4 ) break ;
    h [ k ] = h [ k – j ] * b + b * j++ + ––a * b++ + ++k * a ;
    cout << " + + + + " << h [ k ] << " \n " ;
    cout << ktu ( h , b , 3 ) << " * * * * " << endl ;
    cout << h [ 3 ] + h [ 4 ] << " ! ! ! ! " << endl ;
    h [ j – a ] = ktu ( h , a , r ) ;
    cout << 2 * h [ j – a ] << " " << h [ b ] << " – – – – \n " ;
    j++ ;
    }
    getch ( ) ; return 0 ;
    }

    int ktu ( int h [ ] , int z , int w )
    {
    int r ;
    r = ++z + w++ ;
    h [ w ] *= r – w ;
    return ( r ) ;
    }







  • quote:

    Orijinalden alıntı: seyfi84

    hocam dediğin ne hocası? böyle şeylere kafa yorarak C bildiğinizi mi sanıyorsunuz? tereddüt varsa parantez içine alırsın, hangisi önce hangisi sonra olacak tartışma ortadan kalkar. bu kadar. küçük insanlar küçük şeylerle uğraşır.

    Bende tamamen senin dediğine katılıyorum. Bir not olarak eklemek isterim ki:

    Mesela bir örnek vereyim: ODTÜ'de "C Programlama" dersinde bu tarz şeyler hem sınavlarda hem de dersin laboratuarının quizlerinde çok soruluyor.

    Bende ilk başlarda o dersi aldığımda çok garipsemiştim ve aynen dediğin şekilde düşünmüştüm ne gerek var, tereddüt varsa paranteze alınılsın, kod okunaklı, anlaşılır yazılsın diye ama en azından ODTÜde böyle de bir düzen tutturulmuş gidiyor ben de akıl sır erdiremiyorum.

    Mesela aynı şekilde ODTÜ'deki C Programlama dersinde quizlerde ve sınavlarda şeytanın bile aklına gelmeyecek ve bir o kadar da gereksiz öyle enteresan döngü soruları soruyorlar ki bu döngünün çıktısı ne olur ? döngü sonunda falanca değişkenlerin değeri ne olur ? diye insan düşünmeden edemiyor yahu bu kadar saçma sapan bir döngüyü kim hangi algoritmada veya programda kullanır ki ? diye ama soruyorlar işte ve öğrenci de yapmak zorunda, ki yapıyorlarda aslında bayaa güzel helal olsun diyorum.

    Ha gerçi dersin laboratuar kısmında program yazdırıyorlar öğrenciye orda öğrenci program çıktısı doğru olduğu müddetçe istediği kodu yazmakta serbest o bakımdan haklarını yememek lazım.

    Yani diyeceğim odur ki; bu forumda bazen bu tarz sorular sorulduğunda, özellikle tuhaf syntax ile ilgili olanlar ders ile ilgili de olabiliyor sanırım...




  • quote:

    Orijinalden alıntı: seyfi84

    odtü'de ders dediğin genel elective mi, yoksa bilgisayar müh dersi mi? odtü bilgisayarda biri vardı bilmem hala var mı, fizikçi/istatistikçi aslen, obfuscated C falan yazıp kendini birşey sanıyor, derslere de giriyor.
    aslında çok adi bir taktik: marjinal takılırsan incomparable olursun, incomparable isen kimse ne kadar b.ktan olduğunu anlayamaz. bölüm olarak yazın bir posix kernel subsystem, bir virtual machine, bir gcc front-end, ne kadar müthişsiniz görelim, ama yok. big-O notation, ML, falan abudik-gubidik şeyler. Pek çok opensource proje var bir üni.de başlamış, Lua mesela dünya çapında production quality bir ürün, nerde bizim odtü, boğaziçi, bilkent falan? sorsan hepsi penguen ama.

    gerçek hayatta karşıma mı çıkacak öyle karmaşık kod satırı? hiçbir düzgün şirkette code review'dan geçmez öyle kod. zaten C standardına undefined behaviour diye geçen kısımlar var postfix/prefix işlemlerde, oraları çalışsın tartışmak isteyen. daha şunu bile okumamış hoca dediğihttp://c-faq.com/expr/index.html

    Bu benim dediğim birçok mühendislik bölümünün müfredatında zorunlu ders olan "CENG 230, Introduction to C Programming" dersi. Bilgisayar mühendisliğinde okuyan çocuklar zorunlu olarak bu dersi almıyorlar sanırım. Ancak ben bu dersi bana zorunlu olmadığı halde "Elective/Seçmeli" ders olarak mahsus aldım çünkü daha sonra almayı düşündüğüm "Computational Physics 1 ve 2" derslerinin hocaları resmi olarak zorunlu olmamakla beraber yine de öğrencilerden C dersini almış olmalarını istiyordu... yoksa resmi olarak da zorunlumuydu hatırlayamadım o kadarını.
    Dolayısıyla ODTÜ Bilgisayar'ın hocaları hakkında da hiç bilgim yok maalesef... zaten yıllar oldu...
    Ancak bizim derse giren hoca ve lab asistanları iyi, makul insanlardı o konuda en ufak bir şikayetim yoktur. Fakat derse girip o "obfuscated c" ile ilgili sınav ve quiz sorularıyla karşılaşınca feci şapşalladım ve zorlandım yani ve kendi kendime "yahu bu işde bir yanlışlık var ama..." dedim.. neyse dersi yine de AA ile verdim ama dediğim gibi gereksiz zorladı. Ama daha sonradan benim bölümden aldığım seçmeli "Computational Physics" dersleri çok baba derslerdi. O derslerde özellikle fizik ve matematik ile ilgili birçok önemli teknik ve algoritma görmüştük onlar hakkaten çok sağlamdı, tam olması gerektiği gibi derslerdi...

    Ve yani dediğin gibi işte yani tabii gönül isterki bizim memleketin bilgisayar bölümleri de keşke dünya çapında duyulmuş bilinen çok kimse tarafından kullanılacak işe yarayan şeyler yapsa ama pek yok sanırım maalesef bende üzülmüyor değilim.




  • quote:

    Orijinalden alıntı: Buzz Lightyear

    quote:

    Orijinalden alıntı: seyfi84

    hocam dediğin ne hocası? böyle şeylere kafa yorarak C bildiğinizi mi sanıyorsunuz? tereddüt varsa parantez içine alırsın, hangisi önce hangisi sonra olacak tartışma ortadan kalkar. bu kadar. küçük insanlar küçük şeylerle uğraşır.

    Bende tamamen senin dediğine katılıyorum. Bir not olarak eklemek isterim ki:

    Mesela bir örnek vereyim: ODTÜ'de "C Programlama" dersinde bu tarz şeyler hem sınavlarda hem de dersin laboratuarının quizlerinde çok soruluyor.

    Bende ilk başlarda o dersi aldığımda çok garipsemiştim ve aynen dediğin şekilde düşünmüştüm ne gerek var, tereddüt varsa paranteze alınılsın, kod okunaklı, anlaşılır yazılsın diye ama en azından ODTÜde böyle de bir düzen tutturulmuş gidiyor ben de akıl sır erdiremiyorum.

    Mesela aynı şekilde ODTÜ'deki C Programlama dersinde quizlerde ve sınavlarda şeytanın bile aklına gelmeyecek ve bir o kadar da gereksiz öyle enteresan döngü soruları soruyorlar ki bu döngünün çıktısı ne olur ? döngü sonunda falanca değişkenlerin değeri ne olur ? diye insan düşünmeden edemiyor yahu bu kadar saçma sapan bir döngüyü kim hangi algoritmada veya programda kullanır ki ? diye ama soruyorlar işte ve öğrenci de yapmak zorunda, ki yapıyorlarda aslında bayaa güzel helal olsun diyorum.

    Ha gerçi dersin laboratuar kısmında program yazdırıyorlar öğrenciye orda öğrenci program çıktısı doğru olduğu müddetçe istediği kodu yazmakta serbest o bakımdan haklarını yememek lazım.

    Yani diyeceğim odur ki; bu forumda bazen bu tarz sorular sorulduğunda, özellikle tuhaf syntax ile ilgili olanlar ders ile ilgili de olabiliyor sanırım...


    hocam o eğitim sistemi ve hocanın moklugundan , çoğu yerdede boyle işliyor duzen malesef




  • seyfi84 S kullanıcısına yanıt
    Ya işte mesela nebliim makine mühendisliğinde çocuklar PIC programlama falan kolay yapabilsinler diye veriyorlar herhalde. Birde o kadar abartmamak lazım atla deve değil evet biraz daha syntaxı falan zor ama öğrenilmeyecek birşey de değil... C yi o derece öğrenen daha sonra diğer dilleri de gerekirse öğrenir.

    Ben hobi olarak programlamayla ilgileniyorum bu arada. Açık söylemek gerekirse bölümü de biraz hobi olsun diye okudum. Fizikle de pek alakam olduğu söylenemez ama severim, meraklıyımdır ama elbette işi master, doktora, seviyesine taşıyacak kadar ilgi ve yetenek yok bende, özellike matematiğim benim çok zayıftır mesela. Standart mesaili işleri de çok sevdiğim söylenemez. Müzisyenim ben yıllardır barlarda pavyonlarda basgitar çalıyorum. Siz ne iş yapıyorunuz ?
  • 
Sayfa: 1
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.