Tükenir Kalem 17:30 26 Tem 2014 #1
Merhaba..Bilgisayar mühendisi olmak istiyorum,bu yüzden ders çalışma düzenimden arta kalan zamanda programlama çalışıyorum..Çalışırken hazır fonksiyonlarda,sqrt(x) diye bir ifadeye rastladım..Bu sqrt fonksiyonu x'in karekökünü buluyor..Bu fonksiyonun bilgisayara tam olarak ne yaptırdığını bulamıyorum maalesef..
Bu hazır fonksiyon olmasaydı,ben nasıl buldururdum diye düşündüm..Birkaç yol denedim,örneğin x'e kadar olan sayıların içinde karesi x olan sayıları teker teker bilgisayara denemesi komutunu vermek gibi..Ama bunun gibi yollar o kadar yavan oldu ki,büyük sayılarda bulması çok uzun sürdü..
Sorum tamamen matematiksel..Programlama ile alâkası pek yok..
Bir sayının karekökünü kısayoldan nasıl bulabiliriz ?Nasıl bir yol izlemeliyiz ?
duygu95 17:50 26 Tem 2014 #2
Sanırım C çalışıyorsun.

sqrt fonksiyonu math.h kütüphanesinde tanımlanmış bir fonksiyondur.
sqrt komutu gayet kısa ancak, sanırım sen başka nasıl bir yoldan bulabiliriz diyorsun fakat küsüratlı sayılara ulaşmak zor olur.
Yine de düşünelim bakalım nasıl yapabiliriz.
duygu95 17:56 26 Tem 2014 #3
C# de şöyle bir şey yapılabilirmiş bir dene bakalım bunu.
HTML-Kodu:
Console.WriteLine("Bir sayı girin");
double sayi = Convert.ToDouble(Console.ReadLine());
long i, n = (long)sayi, t;
double r = sayi;
for (i = 0; i < n; i++)
{
r = (r + (sayi / r)) * 0.5;
t = (long)r;
if ((t * t) < t)
break;
}
Math.Sqrt();
Console.WriteLine("Sayının Karekökü =" + r.ToString());
Console.ReadLine();
}
Tükenir Kalem 18:07 26 Tem 2014 #4
Çok teşekkür ederim cevabın için..C++ çalışıyorum C ile benzer bir dil..
Çok karışık bir algoritmaymış,inceleyeceğim bir süre..
Aslında dil olarak fark etmez,bana bunun algoritması gerekli..Algoritmalar bütün dillerde aynı olur hemen hemen..
duygu95 18:08 26 Tem 2014 #5 Çok teşekkür ederim cevabın için..C++ çalışıyorum C ile benzer bir dil..
Çok karışık bir algoritmaymış,inceleyeceğim bir süre..
C öğrenmiş miydin daha önce ?
Tükenir Kalem 18:10 26 Tem 2014 #6
Hayır hemen C++ ile başladım..
duygu95 18:12 26 Tem 2014 #7 Hayır hemen C++ ile başladım..
C öğrenmeden C++'a başlarsan zorlanırsın C temeldir ilk önce onu öğren, hatta ben sana öğrenebileceğin bir kaynağın linkini göndereyim.
Tükenir Kalem 18:15 26 Tem 2014 #8 C öğrenmeden C++'a başlarsan zorlanırsın C temeldir ilk önce onu öğren, hatta ben sana öğrenebileceğin bir kaynağın linkini göndereyim.
Hep C öğrenmeden C++ öğrenilmez diyorlar ama ben oop'a kadar ilerledim
duygu95 18:17 26 Tem 2014 #9 Hep C öğrenmeden C++ öğrenilmez diyorlar ama ben oop'a kadar ilerledim

C öğrenmeden C++ öğrenilmez demiyorum aslında sadece zorlanırsın ben de ilk bilmediğimde C++ den başlamıştım ama bir süre sonra mantığını boşverip ezberlemeye başladığımı farkettiğimde C den başlamaya karar verdim diğer türlü mantığını anlamadan direkt ezber gibi bir şey yapıyorsun gibi gelmişti bana
Tükenir Kalem 18:29 26 Tem 2014 #10
C++ dili C'den daha kolay geliyor ama bana,C daha karmaşık..Zaten üniversitede Assembly dahil tüm dilleri öğrenmeyi düşünüyorum,ilk dil olarak kendime C++'yı seçtim..Epeyce de ilerledim,bu hazır fonksiyonlar kısmı çoktan geride kaldı ama bir türlü bu soruya hızlı algoritma bulamamıştım..C# Console App açtım kodları aynen yapıştırdım,çalışıyor..
Örneğin 186513649 sayısının karekökünü 3 saniyede buldu..Ama C#'ın hazır fonksiyonu Math.Sqrt() bunu belki saniyenin binde biri sürede buluyor..Benim anlamadığım nokta bu C# dilini hazırlayanlar bu Math.Sqrt() fonksiyonuna nasıl bir yol öğretmişler ki,anında bulabiliyor..
Bu arada eklediğin kod çalışıyor ama ben hâlâ ne yaptığını anlamadım,ne yapıyor da buluyor program ? Fikrin var mı ? For döngüsü karışık..