yılında java-Döngü ben gibi plt-düzeni döngü uygulayabilirsiniz nasıl PLT Şema
for(int i=0;i<10;){
for(int j=0;j<3;){
System.out.println(""+j);
j++;
}
System.out.println(""+i);
i++;
}
yılında
yılında java-Döngü ben gibi plt-düzeni döngü uygulayabilirsiniz nasıl PLT Şema
for(int i=0;i<10;){
for(int j=0;j<3;){
System.out.println(""+j);
j++;
}
System.out.println(""+i);
i++;
}
yılında
Şemada bir for döngüsünü uygulamak için açık yapılar (bir yapı kendiniz yazmazsanız!). Şemada bunu yapmak için yemek kitabı yolu, bir listenin üzerinden geçen döngüsel bir işlevi tanımlamaktır. Bu sayfadan Alınan
(define (doit x x-max dx)
(if (<= x x-max)
(begin
;;...perform loop body with x...
(doit (+ x dx) x-max dx))))
(doit a b dx) ; execute loop from a to b in steps of dx
: Burada
ihtiyacınız fikirleri açıklanır bir sayfaya başka bağlantı oluyor İşte Şemada bir For döngüsü tarzı fonksiyonunu nasıl bir örnek Şema zorunludur dillerden döngüler çevirmek için anlaşılması:
Şema bir olduğunu Öğrenmek için gerçekten ilginç bir dil olan, daha önce MIT'de Scheme dersi için kullanılan ders kitabı olan Structure and Interpretation of Computer Programs'u da okumalısınız.
Teşekkürler adamım. Bu harika bir yardımcıdır :) – fireball003
Sorun değil, bu benim üniversitedeki Scheme ile yaptığım olumlu deneyimlerimi çok iyi düşünmemi sağlıyor. Scheme gibi işlevsel bir dil öğrenmek size daha iyi bir programcı yapabilir, bu konuda bir şeyler sorunlara şık çözümler hakkında düşünmenize yardımcı olur. Eğer Scheme gibi hissettiğinizde ben Prolog gibi başka "farklı" bir dil göz atmanızı öneririz, mantıklı başlıyor. Bu hem Şema'dan hem de Java'dan farklıdır ve size farklı yeni şeyler öğretebilir. İyi şanslar. Eğer bütün değişkenler aynı anda tekrarlanır işaret yoksa :) –
Ben Michele Simionato en "The adventures of a pythonista in schemeland" bir göz atmanızı öneriyorum. Bu Python-> şeması için, ama bu ve daha da önemlisi, bu procedural-> fonksiyonel geliyor gerçekten iyi yazılmış bu.
Şemasında yineleme yapı "do
" ise, R5RS specification içinde açın bakın olduğunu.
böyle bir şey olmazdı verdi örnek:
(do ((i 0 (+ i 1))) ((> i 9))
(do ((j 0 (+ j 1))) ((> j 2))
(display j)
(newline))
(display i)
(newline))
(do ...)
bu örnekte nelerin görüneceğini biraz daha geneldir. Örneğin, sadece yan etkileri için kullanmak yerine bir değer döndürmesini sağlayabilirsiniz. Birçok "sayaçları" olması da mümkündür: Bunu yapmanın PLT olarak
(do ((i 0 (+ i 1)
(j 0 (+ j 2))
((stop? i j) <return-value>)
exprs...)
net olmak gerekirse, iki döngü değişkenleri ile ikinci örnek yanıltıcı olacaktır - bir 'do' = bir döngü. Bu örnek, C döngüsüne çok yakın bir şekilde karşılık gelir (i = 0, j = 0;!stop (i, j); i = i + 1, j = j + 2) {exprs();} return_value döndürün; "Peki, temelde doğru. Çoğunlukla. – Aaron
Evet, bu doğru. Mesajı daha sonra düzenleyeceğim ve işleri temizlemeye çalışacağım biraz. – Jonas
:
(for ([i (in-range 10)])
(for ([j (in-range 3)]) (printf "~s\n" j))
(printf "~s\n" i))
Teşekkür musicfreak, bunu öğreniyorum. Bu yüzden bu soruyu sordum :) Şema dokümanı bana açık değil. Ama bence yakında bunun için kullanacağım. – fireball003
Tamam, sadece bunun "ödevimi benim için yap" şeylerinden biri olmadığından emin ol. :) Şema bilmiyorum ama iyi şanslar! –
Eğer ödev problemiyse, o zaman “sözdizimi sorunu” yerine “problem” görürsünüz. – fireball003