Sözde kod için Standartlar?

oy
24

Üstadımın tezi için sözde koduna bazı piton ve java rutinleri çevirmek ancak sorun olan bir sözdizimi / tarzı ile geliyor olması gerekir:

  • tutarlı
  • anlaması kolay
  • Çok ayrıntılı değil
  • doğal dil çok yakın değil
  • Bazı somut programlama diline çok yakın değil.

Nasıl sözde kodu yazıyorsunuz? herhangi bir standart tavsiyeler var mı?

Oluştur 20/02/2010 saat 10:58
kaynak kullanıcı
Diğer dillerde...                            


7 cevaplar

oy
16

Ben (Cormen, Leiserson ve Rivest tarafından) "Giriş algoritmalar" kitabının göz atmanızı öneririz. Hep algoritmaların onun sözde kod açıklaması çok net ve tutarlı buldum.

Bir örnek:

DIJKSTRA(G, w, s)
1  INITIALIZE-SINGLE-SOURCE(G, s)
2  S ← Ø
3  Q ← V[G]
4  while Q ≠ Ø
5      do u ← EXTRACT-MIN(Q)
6         S ← S ∪{u}
7         for each vertex v ∈ Adj[u]
8             do RELAX(u, v, w)
Cevap 20/02/2010 saat 11:03
kaynak kullanıcı

oy
4

Kod usul ise, normal bir sözde kodu (Vikipedi bazı örnekler vardır) muhtemelen kolaydır.

Nesne yönelimli sözde kod daha zor olabilir. Düşünmek:

  • sınıflar tasvir etmek UML sınıf diyagramları kullanılarak / kalıtım
  • UML sıra diyagramları kullanarak kod dizisini tasvir
Cevap 20/02/2010 saat 11:05
kaynak kullanıcı

oy
5

Sana bakmak önermek kale Programlama Dili .

This is an gerçek programlama dili ve değil yalancı kod, ancak mümkün olduğunca çalıştırılabilir pseudocode olabildiğince yakın olacak şekilde tasarlanmıştır. Özellikle, sözdizimi tasarlamak için, okudukları ve analiz yüzlerce pseudocode ve diğer matematiksel / hesaplamalı gösterimler için ortak kullanım şekillerini bulmak için CS ve matematik kağıtları, kurslar, kitaplar ve dergiler.

Sadece kale kaynak koduna bakılarak ve kale en bir derleyici oysa hedef kitleniz, insan olduğu için, ihtiyacınız olmayan şeyleri dışarı soyutlayarak tüm bu araştırmayı yararlanabilir.

İşte bir olan gerçek gelen kale kod çalıştıran örneği NAS (NASA Gelişmiş Supercomputing) Eşlenik Gradyan Paralel Benchmark . Eğlenceli bir deneyim için, karşılaştırma şartname ile kıyaslama uygulanması Kalesi'nde ve neredeyse bir 1 var duyuru ile: 1 yazışma. Ayrıca C ya da Fortran gibi diğer diller, bir çift uygulanmasını karşılaştırmak ve bunlar şartnameye hiçbir alakası var (ve çoğu zaman da daha uzun spec daha büyüklükte bir sipariş olan) nasıl dikkat edin.

Ben vurgulamak gerekir: Bu yalancı kod değil, bu fiili çalışma Fortress kodudur! Kale Kod Örneği http://ProjectFortress.Sun.Com/Projects/Community/raw-attachment/wiki/FortressQuestions/NAS-CG.png

Düzenleme: Üstü Kod Örneği bağlantı öldü. Muhtemelen benzer bir örnek burada bulunabilir: https://umbilicus.wordpress.com/2009/10/16/fortress-parallel-by-default/

Cevap 20/02/2010 saat 15:33
kaynak kullanıcı

oy
3

Ben "Bazı somut programlama diline çok yakın", gereksinimi anlamıyorum.

Python genellikle sözde kod yazmadan için iyi bir aday olarak kabul edilir. Belki pitonun biraz basitleştirilmiş versiyonu sizin için çalışacak.

Cevap 20/02/2010 saat 15:39
kaynak kullanıcı

oy
2

o matematiksel ve teknik alanlarda söz konusu olduğunda Pascal hep, pseudocode geleneksel olarak en benzer olmuştur. Bu kadar sadece hep, neden bilmiyorum.

Ben (ah, bilmiyorum, bir rafta 10 belki kitap, hangi somut bu teoriyi) biraz var.

önerildiği gibi Python, güzel kod olabilir, ama buna tek başına bir mucize olduğunu, hem de bu kadar okunmaz olabilir. Yaşlı diller okunamaz hale zordur - onlara "daha basit" bugünün olanlardan daha (dikkatli almak) olmak. Onlar belki (program yapar anlamak için gereklidir daha az sözdizimi / dil özelliklerini) okumak için ne olup bittiğini anlamak için daha sert, fakat daha kolay olur.

Cevap 20/02/2010 saat 16:15
kaynak kullanıcı

oy
7

: Kendi sorumu yanıtlayan sadece LaTeX'te sözde kod dizgi ilgili aşağıdaki web sayfasına dikkat çekmek istedik http://www.tex.ac.uk/cgi-bin/texfaq2html?label=algorithms . Bunlar farklı tarzlarda, listeleme avantajları ve sakıncaları bir dizi açıklar. Newalg ve clrscode: Tesadüfen, yukarıda önerildiği gibi, Cormen tarafından "algoritmalar Introductin" kullanılan şekilde sözde kodunun yazılması için iki stil varolmaya orada olur. İkincisi Cormen kendisi tarafından yazılmıştır.

Cevap 25/02/2010 saat 15:08
kaynak kullanıcı

oy
0

Bu mesaj eskidir, ama umarım bu başkalarına yardım edecektir.

(Cormen, Leiserson ve Rivest tarafından) "Giriş algoritmalar" kitabı algoritmaları hakkında bilgi almak için iyi bir kitap, ama "sözde kod" korkunç. bir Q varsayalım [1 ... n] demek ne anlama gerektiğinde Q [1 ... n] gibi şeyler saçmalıktır. Hangi dışında kaydetti gerekecektir "sözde kod." Dahası, "Algoritmalar Giriş" gibi kitaplar sözde kod tek bir amacı ihlal eden bir matematiksel sözdizimi, kullanmak ister.

Sözde kod iki şey yapmalıdır. uzakta sözdiziminden Özet ve okunması kolay olacak. gerçek kod sözde kodundan daha açıklayıcı olduğunu ve gerçek kod daha açıklayıcı değilse, o zaman sözde kodu değil.

Basit bir program yazıyorduk söyle.

Ekran tasarımı:

Welcome to the Consumer Discount Program!
Please enter the customers subtotal: 9999.99
The customer receives a 10 percent discount
The customer receives a 20 percent discount
The customer does not receive a discount
The customer's total is: 9999.99

Değişken listesi:

TOTAL:         double
SUB_TOTAL:     double
DISCOUNT:      double

Sözde kod:

DISCOUNT_PROGRAM

    Print "Welcome to the Consumer Discount Program!"
    Print "Please enter the customers subtotal:"
    Input SUB_TOTAL

    Select the case for SUB_TOTAL
        SUB_TOTAL > 10000 AND SUB_TOTAL <= 50000
            DISCOUNT = 0.1
            Print "The customer receives a 10 percent discount"
        SUB_TOTAL > 50000
            DISCOUNT = 0.2
            Print "The customer receives a 20 percent discount"
        Otherwise
            DISCOUNT = 0
            Print "The customer does not a receive a discount"

    TOTAL = SUB_TOTAL - (SUB_TOTAL * DISCOUNT)
    Print "The customer's total is:", TOTAL

Bu okumak çok kolaydır ve herhangi bir sözdizimi başvuru yapmıyor dikkat edin. Bu Bohm'un ve Jacopini kontrol yapılarının her üç destekler.

Sıra:

Print "Some stuff"
VALUE = 2 + 1
SOME_FUNCTION(SOME_VARIABLE)

Seçim:

if condition
    Do one extra thing

if condition
    do one extra thing
else
    do one extra thing

if condition
    do one extra thing
else if condition
    do one extra thing
else
    do one extra thing

Select the case for SYSTEM_NAME
    condition 1
        statement 1
    condition 2
        statement 2
    condition 3
        statement 3
    otherwise
        statement 4

Tekrarlama:

while condition
    do stuff

for SOME_VALUE TO ANOTHER_VALUE
    do stuff

Bu işlemin, N-kraliçe "sözde kodu" (bu karşılaştırma https://en.wikipedia.org/wiki/Eight_queens_puzzle ):

PlaceQueens(Q[1 .. n],r)

    if r = n + 1
        print Q
    else
        for j ← 1 to n
            legal ← True
            for i ← 1 to r − 1
                if (Q[i] = j) or (Q[i] = j + r − i) or (Q[i] = j − r + i)
                    legal ← False
        if legal
            Q[r] ← j
            PlaceQueens(Q[1 .. n],r + 1) 

Basit şekilde izah edemez, bunu yeterince iyi anlamıyorum. - Albert Einstein

Cevap 11/01/2019 saat 15:02
kaynak kullanıcı

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more