|
|
_____________________________
|

1 Mobil
|
|
_____________________________
|
|
|
_____________________________
|
|
|
_____________________________
|
|
|
_____________________________
|
|
|
_____________________________
|
< Bu ileti mobil sürüm kullanılarak atıldı > |
|
_____________________________
|
|
|
_____________________________
|
|
< Bu ileti mobil sürüm kullanılarak atıldı > |
|
_____________________________
psn
acaltun17 |
|
Hocam konuyu hortlatmış olucam ama hiç umurumda değil. Allah senden razı olsun. Mesajınızın üzerinden 7 yıldan uzun bir süre geçmiş neredeyse 8 yıl olacak ama değeri hiç eksilmemiş. Ne zamandır aklıma yatmamıştı bu konu. Sizin dedikleriniz adeta beni büyüledi. Aydınlandım hocam sizin sayenizde. Çok teşekkür ediyorum. Duacınız olucam hocam. Sağlıcakla Kalın :) |
|
_____________________________
Ben Tehdit Etmem Pişman Ederim....Polat Alemdar
|
|
Fonksiyon (object oriented dillerde metod) bir nevi kapalı kutu gibi düşünmeniz lazım. Bu fonksiyona bir takım değerler gönderirsiniz, o işlemi yapar, eğer işlemin sonucu, fonksiyonu çağırdığınız yerde size lazımsa, return deyip sonucu burda bir başka değişkene atayabilirsiniz. Eğer sonuç fonksiyonu çağırdığınız yerde size lazım değilse, return etmenize gerek yoktur. Örneğin; Verdiğiniz 2 sayıyı dosyaya alt alta yazan bir fonksiyon yazdığınızda bu işlemin sonucu size lazım olmaz. public void sayiYaz(int a, int b){ ... } Bunu kullanmak istediğinizde; sayiYaz(3,5); gibi çağırabiliriz. Fakat iki sayıyı toplayıp, cevabı bize fonksiyonu çağırdığımız yerde lazımsa, o zaman return gerek. public void topla(int a, int b){ int c = a + b; return c; } bunu kullanırken; int sonuc = topla(3,5); gibi kullanırız. sayının toplamıda fonksiyon çalıştığında sonuc değişkeni içine atanır. |
|
_____________________________
|
|
Çok teşekkür ediyorum hocam aklımdaki sorulara cevap oldunuz sağolun. |
|
_____________________________
Ben Tehdit Etmem Pişman Ederim....Polat Alemdar
|
|
Hocam bugün Call bye Reference diye bir konu öğrendim. Kodumu sizinle paylaşmak istiyorum. #include <stdio.h> void dairede_bul (int r, float *p_alan, float *p_cevre){ *p_alan = 3.14 * (r) * (r); *p_cevre = 2 * (3.14) * r; } int main () { float alan,cevre; float yaricap = 4.0; dairede_bul(yaricap,&alan,&cevre); printf ("Alani: %.2f - Cevresi: %.2f - Yaricapi: %2.f\n",alan,cevre,yaricap); return 0; } Biz pointerlar yardımıyla zaten main fonksiyonundaki değişkenlerimiz üstünde oynama yapabiliyormuşuz. Ben bunu öğrendikten sonra return ifadesinin gerek olmadığını düşünüyorum. Siz ne dersiniz. Yukarıda void kullanarak return kullanmadan istediklerimi yaptırdım. Ayrıca bildiğiniz gibi return komutunu kullanınca sadece tek bir değer döndüyor. Ben birden fazla değer döndürmek istediğimde işime yaramıyor. Değerli görüşleriniz benim için çok önemli hocam. Sizden bir şeyler öğreniceğimi düşünüyorum. Teşekkürlerimi sunar sizin değerli görüşünüzü beklerim hocam. Saygılar. |
|
_____________________________
Ben Tehdit Etmem Pişman Ederim....Polat Alemdar
|
|
Call by reference tum diller tarafindan desteklenmiyor, Java da bunlardan biri. Primitif turlerde degerin kendisi, komplex turlerde ise referansi kopyalanarak gecirilir. Ayrica her zaman fonksiyona gecirdiginiz parametrenin degisime ugramasini istemeyebilirsiniz. Oyle bile olsa, dilin size sundugu ozelliklerden kacinmanin bir anlami veya faydasi da yok. Yaptiginiz sey kodun okunmasini da zorlastiriyor. Benim beklentim arguman olarak gecirdigim parametrelerin fonksiyon icinde kullanilmasi ve bana bir sonuc donulmesi. Burada bir fonksiyona 2 is birden yaptiriyorsunuz. Bu da dogru degil. Performansin cok kritik oldugu, belki gercek zamanli sistemler vs disinda kod okunabilirligi her seyin uzerindedir. < Bu mesaj bu kişi tarafından değiştirildi mosahin -- 27 Aralık 2020; 11:55:53 > |
|
_____________________________
|
|
Her cümlenizden faydalanmaya çalışıyorum hocam. Çok sağolun. En derinden teşekkürlerimi sunuyorum hocam. Sağlıcakla. |
|
_____________________________
Ben Tehdit Etmem Pişman Ederim....Polat Alemdar
|
Rica ederim, ne demek. |
|
_____________________________
|
Her dil desteklemez pointer'ı. Call by reference yaparken pointer'a ihtiyacın var. (java mesela desteklemez) Javada immutable diye bir kavram vardır. Bir obje yaratıldıktan sonra değiştirilemiyorsa o objelere immutable denir. Örneğin String tipi immutable'dır. Sen bir string'i değiştiren bir fonksiyonu çağırdığında orjinal string'in değişmez. O fonksiyon sana yeni bir String döner. Örneğin; String a = "Test" String b = a.substring(0, a.length-2); burdaki b "Te" olur, ama a değişkeni hala "Test"' kalır. Şimdi hocam a'yı değiştirsek ne olurki, neden b diye yeni bir string yapıp içine sonucu "Te" yi koyuyoruzki diye sorabilirsin. Sor tabi Asıl problem multithreading uygulamalardır. Bir variable'ı (a diyelim) pointer vasıtasıyla bir thread değiştiriyorken, diğer thread'lerde a variable'ı için "inconsistent state" durumu oluşuyor. Yani 1. thread sürekli a'yı değiştirdiği için (pointer vasıtasıyla) diğer thread'ler bu variable'ın o anda nasıl bir değere sahip olduğunu bilemiyor. Buna inconsistent state deniyor ve böyle durumlarda hata ayıklaması zor olan mantık hataları oluşabiliyor. O zaman pointer kötü bişi diye de düşünebilirsin. Ama değil. Bazen pointer'lar o kadar çok işini kolaylaştırırki onada ihtiyaç oluyor. Örneğin; pointer kullanarak bir fonksiyon içine başka bir fonksiyonu parametre ile gönderebilirsin. Java pointer desteklemediği için bu tip bir ihtiyacın olduğunda reflection api'ını kullanman gerekiyor. Kısacası sana tavsiyem: Pointer'ların nasıl çalıştığını (call by reference'da pointer kullanıyorsun) bil. Fakat sen kod yazarken call by value yap ve return et. (Immutable yap yani) İlerde kod yazarken burda referans kullanmam lazım dediğin vakit gelecek o zaman kullanırsın. (Mutable) |
|
_____________________________
|
|
Hocam yaznınız adeta benni benden aldı. Bütün nedenleri ve sonuçlarıyla anlatmışsınız. Ne kadar teşekkür etsem azdır. Sağolun. Ben bu işlerde yeni olduğum için neyi nerede kullanacağımı tam kestiremiyorum ama sayenizde çok kıymetli bilgiler öğrendim. Allah sizden razı olsun hocam. < Bu ileti mobil sürüm kullanılarak atıldı > |
|
_____________________________
Ben Tehdit Etmem Pişman Ederim....Polat Alemdar
|
|
hepsini okudum ama hala oturtamadım şu mevzuyu,aptala anlatır gibi anlatabilecek biri varsa şu return mevzusunu anlatırsa çok sevinirim |
|
_____________________________
|
|
Return kelime anlamiyla "don" veya "dondur" demek Ingilizce'de. Yani bir yerden donmek veya dondurmek anlamina gelir. Java icin konusursak, bu komutun anlami icinde bulunulan fonksiyondan geri don, nereden geldiysen oraya git anlamina gelir. Yanina yazdigin deger de, donulen yere dondurulur. Soyle dusunebilirsin bu kelimeyi. Bir otobandan araba ile yola ciktin. Icinde 8 serit var diyelim. Bu yol senin main fonksiyonun olsun. Yani Java'da ki giris fonksiyonu. Sonrasinda saptigin her yolda seritlerin gitgide azaldigini dusun, ornegin tabela gordun, kopruden once son cikis yaziyor =) Bu yola girdin. Sonrasinda bir miktar ilerledikten sonra (yola gezinti yapmak icin ciktigini varsayiyorum), bu saptigin yoldaki manzarayi vs gordun. Ve dedin ki ben geri donmek istiyorum. Burada kullandigin return komutu 2 sey yapacak. Biri seni o saptigin yolun tam girisinde geri birakacak, boylece ana yoldan devam edebileceksin, ve ayni zamanda oraya dondugunde oraya dondurmek istedigin ne varsa, cektigin fotograflar diyelim, seninle birlikte gelecek. Burada analoji yaptim, belki benzetme sayesinde kafanda daha rahat oturur diye. Teknik aciklamalari zaten yeterince mevcut =) |
|
_____________________________
|