1. sayfa
@Iqtam Teşekkürler. < Resime gitmek için tıklayın > Bu resimde visual studio cl.exe command derleme yapıldığında nextTerm için başlatılmamış yerel değişken hatası veriyor o sorunu da (int ---- nextTerm=0;) yaparak çözdüm https://docs.microsoft.com/en-us/cpp/error-messages/compiler-warnings/compiler-warning-level-1-and-level-4-c4700?view=vs-2017 burda da hata ile ilgili bilgi veriyor. programa t1=t2,t2=nextTerm değerlerinin çıktısını verince herşey netlik kazandı. Post için herkese teşekkürler. @revivo72 |
@revivo72 Sağolasın. Bunlara ben c/c++ ilerledikçe bakarım. Ama şu var program ile uğraşmak güzel. bu arada kullandığın program bu mu https://en.wikipedia.org/wiki/GNU_Emacs ilaveten: program mentin editorü ama derleme kısmı var eklenti ile mi oluyor. Ben Tüm Platformların derlemesini Visual Studio Denemeye karar verdim. yani cross platform bakalım ne kadar sağlıklı olacak bu konu hakkında görüşün nedir |
#! optional (a 0) (b 1) (acc '()); komutunda a sıfır b 1 olsun mu demek acc tırnak işareti ne işe yarıyor. bunları anlayabilmek için kaynak önerebilir misin? ______________________________________ https://www.geeksforgeeks.org/program-for-nth-fibonacci-number/ bak burda başka değişik formüllerde verilmiş. matrice matris logaritma ile yapılıyor Method 6 (O(Log n) Time) incele |
Kodları kendi bilgisayarına adapte etmek için öncelikle kendi bilgisayarına Scheme kurarak ve kodları çalıştırarak denemelisin bence. Scheme'i kendi bilgisayarına kurmak içinhttps://code.call-cc.org/ 'dan Scheme son versiyonunun kodlarını indirip Windows bilgisayarında derlemen gerekli, gerekli derleme talimatları README 'de var. Benim windows 7 bilgisayarda TDM-GCC-5.1.0 (Download:http://tdm-gcc.tdragon.net/download ) ve msys2-x86_64 (Download:https://sourceforge.net/projects/msys2/files/Base/x86_64/ ) kurulu old için, Scheme'i kolaylıkla derledim. Nitekim CMD.EXE üzerinde 120 tane fibonacci rakamını bu sayede listeleyebiliyorum: < Resime gitmek için tıklayın > CMD.EXE gibi terminal içinden kullanırken (yani Emacs Scheme plugin'i ile kullanmıyorken) denediğiim programları kolaylıkla yükleyebilmek için Scheme init / başlangıç kodu .csirc (Chicken Scheme Interactive Run Commands kısaltması) ekledim: < Resime gitmek için tıklayın > Oradaki Almanca karşılama mesajı dahil kodları daha rahat çalışmak için yazdım. Bir otomobile oturunca koltuk ayna direksiyon ayarını yapınca en rahat kullanabilirsin ya onun gibi bu kodlar. Fakat bir ufak şey daha var, bu sekilde klasik Scheme kodu kullanabilmek için Chicken Scheme 'e R7RS kütüphanesini de eklemen gerekli fakat Chicken Scheme'i başarıyla kurduktan sonra o kolay:
< Resime gitmek için tıklayın > CMDer'i tamamen keyfi olarak tercih ettim, CMD.EXE dahil herhangi bir terminalle de kurabilirsin. #!optional ve devamındaki parametrelerihttps://srfi.schemers.org/srfi-89/srfi-89.html biraz açıklıyor. #!optional adından da anlaşılabileceği gibi bir fonksiyondaki parametrelerin "istege bağlı" olduğunu gösteriyor. Scheme 'de birçok şey bu sekilde kendi kendini açıklayıcıdır. Parantezler coğunlukla kapsam / context belirleyicidir. (fib n #!optional (a 0) (b 1) (acc '()) ) ifadesinde dikkat edersen parantezler birbirini tamamlıyor. Orada fib adında bir fonksiyon tanımlanıyor (baştaki define) ve ardından fonksion gövdesi geliyor. Sorduğun a sıfır b 1 olsun kısmı ise o fonksiyonun parametre tanımları ve dediğin gibi a 0 b 1 yapılıyor ancak #!optional olmadan da fonksiyonu çağırabiliyorsun. #!optional'ın sebebi fonksiyonu ilk başta (fib 5 0 1 '() ) yerine (fib 5) şeklinde kısaca çağırabilmek için. Bu arada #! ve optional bitişik yazılmalı. acc accumulator değişkeni, her döngüde elde edilen Fibonacci rakamını listede toplamak için ve '() boş liste demek. acc'in ilk başta boş liste olması gerekli yoksa elde edilen Fibonacci rakamlarını ekleyemeyiz. Python 'da acc = [] ifadesi gibi düşünebilirsin. Sanırım Python'da da bir diziye dinamik olarak veri eklemek için başta böyle bir tanımlanmalı, denemedim. Scheme konusunda en baba kitap Structure and Interpretation of Computer Programs / SICP kitabın fakat onda genel olarak programcılık temelleri anlatılır ve Scheme ise sadece anlatma aracıdır yani yukarda bahsedilen #!optional gibi ayrıntılar pek yoktur, onun için R. Kent Dybvig'i The Scheme Programming Language 4th edition 'una bakabilirsin. 2nd edition 'u PDF olarak şurada var:https://irywoh.files.wordpress.com/2015/07/scheme-programming-language-dybvig-pdf.pdf Bahsettiğin matriks yöntemi Fibonacci'nin başka bir yansıması. Fibonacci rakamları doğada bir çok şeyin matematiksel temeli. |
http://www.dipmat.unict.it/~barba/LinguaggiII.html/READING_MATERIAL/THESCHEMEPROGRAMMINGLANG.PDF burda 2nd pdf dosyası var. schemehttps://en.wikipedia.org/wiki/Scheme_(programming_language) başlı başına bir programlama dili. Cmder tarzı programlar kullanmıştım. Linux terminali çok hoşuma gidiyor. kısayol kopyala yapıştır var. vertical girdileri daha fazla hafızada tutuyor yani bir yeni bir line satır eklendiğinde üsteki satırlar kaybolmuyor. @revivo72 https://www.cs.unm.edu/~williams/cs357/springer-friedman.pdf bu başka bir kitap https://download.csdn.net/download/jizheair/10472163 burda var ama çince https://www.scheme.com/tspl4/ html full version var 4nd edition https://www8.zippyshare.com/v/6rBvouDy/file.html e kitap şeklinde olanı var birde kontalk status.im yazmışsın imzanda düzenli bakıyor musun? iletişime geçebilirsin demişsin |
Konu dışı sende bu ilk postta bu reklamlar gözüküyor bir enfeksiyon kapmış olabilir mi? browser normalde ben böyle bir imza koymadım < Resime gitmek için tıklayın >
bir tanesinin adresi bu |
ben kitabı bulmak içinwww.duckduckgo.com kullandım. google ve diğerleri gibi seni takip etmediği için sonuçları gizlemiyor. rekürsif detaylı bilgi veren c++ kaynağı var mı? mantığını verilenler ölçüsünde kaptım |
C++ rekürsif fonksiyon yapsan da büyük sayıları desteklemediği için cok anlamlı olmayacaktır, fib 70 hesapladığında rekürsif fonk hızlı çalışsa da rakamlar yine negatif veya eksik olacak. O yüzden tavsiyem bir C/C++ kütüphanesi olan gmp'yi kullanman. gmp'yi kullanmaktan cok kurmak zordur (Linux harici OS'lerde) ancak benim Windows 7 'de MSYS2 old için kolaylıkla kurdum ve C++ 'daki fibonacci kodunu gmp'ye güncelledim sonuç gayet iyi, gördüğün gibi yüksek rakamları da tam uzunlukta ve doğru gösteriyor: < Resime gitmek için tıklayın > fib cpp gmp gmp nasıl kurulur ve kullanılır ufak bir tutorial https://www.cs.colorado.edu/~srirams/courses/csci2824-spr14/gmpTutorial.html Scheme'de ise b nedir? b, fibonacci döngüsünde 2. rakam yani ilk baştaki rakamlar 0 ve 1 ise orada b = 1 b olmazsa fibonacci döngüsünü kuramazdık cünkü 2.rakamı tutacak değişkenimiz olmazdı n 'den sonra 2. konumda olan b, rekürsif çağrıda (fib (- n 1) b (+ a b) (cons a acc)) a'nın yerine konuluyor ve b = a + b oluyor (cons a acc) cons sabit keyword mu? const gibi cons const 'a sadece isim benzerliği var. Scheme'daki cconst = construct ve onu açıklayan basit bir fonksiyon yazdım: < Resime gitmek için tıklayın >Scheme Cons açıklama Scheme Programming Language kitabında 25. sayfada (section 2.2 simple expressions) cons'u açıklıyor. |
C++ konusunda belki yüzlerce kitap vardır. Benim önerim Complete Reference C++ Herbert Schildt https://yadi.sk/i/lzBW2XY43ZKs6A |
https://cs.nyu.edu/~exact/core/gmp/index.html gmp nasıl kurulduğuna derleneceğini anlatan başka bir link fakat ben visualstudio kurduğumdan içersinde gmp library varmış bakalım Anaconda3 içersinde paylaşımlı olarak çalışacak mı bir görelim Peki bu gmp ile neler yapabiliyoruz. içersinde ön tanımlı işlevler-function olması lazım. Birde bende mingw-64 var msys2 ile aynı özellikli bir şey visualstudio'da mingw64 kullanıyor. Fark ne? |
1. sayfa
int main()
{
int i, n, t1 = 0, t2 = 1, nextTerm;
printf("Enter the number of terms: ");
scanf("%d", &n);
printf("Fibonacci Series: ");
for (i = 1; i <= n; ++i)
{
printf("%d, ", t1);
nextTerm = t1 + t2;
t1 = t2;
t2 = nextTerm; //burayı disaled yaptığımda 4 değeri için sonucu 0 1 1 1 verdi.
}
return 0;
}
//result 0, 1, 1, 2, 3, 5, 8, 13, 21, 34 for value 10
#include <stdio.h>
int main()
{
int t1 = 0, t2 = 1, nextTerm = 0, n;
printf("Enter a positive number: ");
scanf("%d", &n);
// displays the first two terms which is always 0 and 1
printf("Fibonacci Series: %d, %d, ", t1, t2);
nextTerm = t1 + t2;
while(nextTerm <= n)
{
printf("%d, ",nextTerm);
t1 = t2;
t2 = nextTerm;
nextTerm = t1 + t2;
}
return 0;
}
Selam.
Bu Soru basit gelebilir ama ben kodun bazı yerlerinde mantığını anlayamadım (t1=t2 ve t2 = nextTerm) nasıl eşit kabul ediliyor while ve for döngüsünde bu nasıl işleniyor. sonra bu iki değere nextTerm = t1 + t2; sonucu elde ediliyor ki toplamasını mantıkla çözmedim
Sorum
1.while döngüsü içersinde (t1 = t2; t2 = nextTerm; nextTerm = t1 + t2;) sırası fordan farklı . bu şekilde düzenlenmesindeki kasıt ne?
2. t2 = nextTerm; //burayı disaled yaptığımda 4 değeri için sonucu 0 1 1 1 verdi. bu kod aktif için sonuç 0 1 1 2 oluyor 4 değeri için.
3. for döngüsünde for (i = 1; i <= n; ++i) n ve i değeri kıvırcıklı parantezin içindeki kodlarda kullanılmamış program bunu nasıl anlıyor.
4. t1 ve t2 değerli sabit değerler atanmış yoksa bunlar const keyword ile mi sabit hale getiriliyor.
5. printf("Fibonacci Series: %d, %d, ", t1, t2); sonrasında gelen diğer printf komutu içindeki değerlere ekleniyor buna sebeb olan ne?
haşiye:while döngüsünde çıktı for döngüsü ile aynı değil
misal bir 10 değeri için
for loop 0 1 1 2 3 5 8 13 21 34
while loop 0, 1, 1, 2, 3, 5, 8,
çıktı değerini veriyor.
int t1 = 0, t2 = 1, nextTerm = 0, n; //değerinde fark ettiğim nextterm atanan value silinmesi bir programda bir hata döndürmüyor
https://www.programiz.com/c-programming/examples/fibonacci-series
Teşekkürler.
DH forumlarında vakit geçirmekten keyif alıyor gibisin ancak giriş yapmadığını görüyoruz.
Üye Ol Şimdi DeğilÜye olduğunda özel mesaj gönderebilir, beğendiğin konuları favorilerine ekleyip takibe alabilir ve daha önce gezdiğin konulara hızlıca erişebilirsin.