2009-06-12 18 views
8

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
+1

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

+0

Tamam, sadece bunun "ödevimi benim için yap" şeylerinden biri olmadığından emin ol. :) Şema bilmiyorum ama iyi şanslar! –

+2

Eğer ödev problemiyse, o zaman “sözdizimi sorunu” yerine “problem” görürsünüz. – fireball003

cevap

14
Java Kişisel örnek doğrudan oraya değiller olarak sadece birkaç yeni kelime öğrenerek Şeması dili üzerine eşleşmiyor

Ş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

Guile and Scheme Links

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ı:

Scheme Looping Constructs

Ş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.

+0

Teşekkürler adamım. Bu harika bir yardımcıdır :) – fireball003

+0

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 :) –

8

Ş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...) 
+1

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

+0

Evet, bu doğru. Mesajı daha sonra düzenleyeceğim ve işleri temizlemeye çalışacağım biraz. – Jonas

13

:

(for ([i (in-range 10)]) 
    (for ([j (in-range 3)]) (printf "~s\n" j)) 
    (printf "~s\n" i))