Şimdi Ara

C problemi yardım (2. sayfa)

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
2 Misafir - 2 Masaüstü
5 sn
27
Cevap
0
Favori
1.224
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: önceki 12
Sayfaya Git
Git
Giriş
Mesaj
  • @qamyoncu teşekkür ederim ogrendiğimz yere kadar en sade ve anlayabildigim buydu çünkü dizileri henuz gormedik.

    @OnurJAM bu odevden herhangi bir not felan almayacagım sadece ogrenmek icin veriyor hoca. Bu soruda da tıkandım direk kopyala yapıstır yapmam amac ogrenmek, yoksa hazır önüme gelsin diye sormadım.

    Uğraşan herkese teşekkür ederim zaman harcadığınız için.
  • quote:

    Orijinalden alıntı: OnurJAM

    quote:

    Orijinalden alıntı: Arquitecto

    malloc komutunu da biliyorum, Veri yapıları hakkında detaylı bilgiye sahibin, malloc komutu sadece bir dizi için değil , 65K lık C belleğinin yetmedeği zamanlarda, Dinamik bellekten, yani RAM BELLEKTEN yer ayırmak için kullanılan bir komuttur. Sizin anldığınız dinamik dizi mantığı bence bunun üzerine , benim dediğim dinamik dizi ise boyutu değişen dizi tabi diziyi günümüz java da yeniden boyutlandırmak mümkündür. AMA POINTER da yoktur :) C çok temel bir dil ama ana bir dil. Yani herşeyin fardındayım problem yok.


    RAM BELLEKTEN yer ayırmak mı? Hocam ram bellek dediğiniz bellekten baska zaten bir bellek yok bilgisayarda (cache bu duumda alakasız). C'de bellek kullanımı ikiye ayrılmıstır, stack ve heap olmak üzere. Local değişkenler vs stackte tutulur bu yüzden bunların fonksiyon terminasyonundan sonra sürerliliği yoktur. Global değişkenler ve malloc, new, realloc komutları kullanılarak alınan yerler heap'te tutulurlar. Bunlar free'yle veya delete'le bırakılmadığı sürece program sonuna kadar sürerliliklerini korurlar. Java'da da aynı durum gecerli, fakat garbage collector mekanizmasından dolayı alınan yerlere referans kalmadığı takdirde otomatik olarak JVM tarafından toplanırlar.

    su an dışarıdayım fiziksel bellekten yer ayirdigini ispatlayan örneği paylaşacağm, calisinca fiziksel belleğin tavan yaptığını göreceksiniz




  • Hepsi fiziksel bellek zaten hocam, baska bir bellek yok. Olan biten herşey ram üzerinde(yani fiziksel bellek üzerinde) olur.

    quote:

    Orijinalden alıntı: Arquitecto


    quote:

    Orijinalden alıntı: OnurJAM

    quote:

    Orijinalden alıntı: Arquitecto

    malloc komutunu da biliyorum, Veri yapıları hakkında detaylı bilgiye sahibin, malloc komutu sadece bir dizi için değil , 65K lık C belleğinin yetmedeği zamanlarda, Dinamik bellekten, yani RAM BELLEKTEN yer ayırmak için kullanılan bir komuttur. Sizin anldığınız dinamik dizi mantığı bence bunun üzerine , benim dediğim dinamik dizi ise boyutu değişen dizi tabi diziyi günümüz java da yeniden boyutlandırmak mümkündür. AMA POINTER da yoktur :) C çok temel bir dil ama ana bir dil. Yani herşeyin fardındayım problem yok.


    RAM BELLEKTEN yer ayırmak mı? Hocam ram bellek dediğiniz bellekten baska zaten bir bellek yok bilgisayarda (cache bu duumda alakasız). C'de bellek kullanımı ikiye ayrılmıstır, stack ve heap olmak üzere. Local değişkenler vs stackte tutulur bu yüzden bunların fonksiyon terminasyonundan sonra sürerliliği yoktur. Global değişkenler ve malloc, new, realloc komutları kullanılarak alınan yerler heap'te tutulurlar. Bunlar free'yle veya delete'le bırakılmadığı sürece program sonuna kadar sürerliliklerini korurlar. Java'da da aynı durum gecerli, fakat garbage collector mekanizmasından dolayı alınan yerlere referans kalmadığı takdirde otomatik olarak JVM tarafından toplanırlar.

    su an dışarıdayım fiziksel bellekten yer ayirdigini ispatlayan örneği paylaşacağm, calisinca fiziksel belleğin tavan yaptığını göreceksiniz




  • Dizisiz yapılamayacağını düşünen siz değilsiniz OnurJAM. Kesinlikle ben yaptım sen yapamadın yarışında da değilim. Kuşkusuz amacımız birşeyler öğrenmek öğretmek. Belirtmek istediğim Arquitecto'nun yazdığı

     
    int boyut = 5;
    int arr[boyut][boyut];


    kod parçası her derleyicide çalışmazdı. Bunu ben de ilk mesajımda yanlış dile getirmişim.(Sanki tüm C derleyicilerinde çalışmazmış gibi anlaşılıyor.) Özür diliyorum.

    Araştırdım. ODTU, Bilkent, Ege, Boğaziçi ve İTÜ(şuan ulaşabildiklerim bunlardı) önce döngüleri sonra dizileri öğretiyor. Ki bu sıralamaya soruyu soran arkadaşın okulunu da ekleyebiliriz.
    quote:


    Alıntı : Cyberwaste
    ... çünkü dizileri henuz gormedik. ...
  • Bilgiler benim de yararlı oldu. Dizisiz de yapılabilir ama incelediğimde dizi mantığını kullanılmış. Ama mesela şu elamanı ekrana bas dediğiniz de bunu yapamazsınız sadece göstermelik olur yani ekrana çıktı onun dışında müdehale edemezsiniz. Ama güzel tabi kodlamanıza sağlık
  • Ben bu kısma baktığımda doğru dürsüt kimse kimseye cevap vermiyordu. Ama naslısa ben cevapladığım sorulardan sonra birden yoğunlukla yardım edilmeye başlandı :) Güzel birşey aslında


    Ben de soru sorabilirim yakın zamanda
  • Programcı açısından belleğin statiği, dinamiği, fizikseli, mantıksalı olmaz. Derleyicinin bir nesneyi nereye koyacağıda bizi ilgilendirmez. İsterse register a koyar ve ram e hiç uğramaz. Fakat nesnenin ne zaman oluşturulup yok edileceği bizim için önemli. Önceden bilinen, derleme zamanında oluşturulan ve boyutu sabit kalan nesnelere statik deriz (derleyici buna otomatik değişken der). Ne zaman oluşacağını kodu yazma aşamasında kestiremediğimiz, ancak çalışma zamanın belirlenebilen ve o zaman oluşturulan, işi bitincede silip kapladığı bellek alanını geri verdiğimiz nesnelere ise dinamik nesneler deriz. Zaten bu işlemin ismide dinamik bellek tahsisi.

    Not: Aşağıdaki kod örnek olarak verilmiştir. O defteri kapattık zaten.

    Bu açıdan baktığımızda;
    int boyut = 5;
    int arr[boyut][boyut];

    gibi bir yazım anlamsız olur. Zaten dizinin 5x5 olacağı belli. Derleyici burada lüzumsuz yere malloc vs. koyarak programın yavaşlamasına sebep olur.




  • 
Sayfa: önceki 12
Sayfaya Git
Git
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.