Sahte kod ve algoritma arasındaki fark nedir?


17

Teknik olarak, bu iki kelime arasında bir fark var mı yoksa bunları birbirlerinin yerine kullanabilir miyiz? Her ikisi de aşağı yukarı bir problemi çözmede izlenen mantıklı adım dizisini tarif eder. değil mi? Öyleyse neden aynı şeyden bahsetmek istiyorlarsa, neden böyle iki kelime kullanıyoruz?

Ya da eş anlamlı kelimeler değilse, onları ayıran nedir? Hangi bağlamlarda yalancı kod kelimesini kelime algoritmasına karşı kullanmalıyız?


4
Bir algoritma hızlı sıralamadır. Sözde kod "Bana bir sandviç yap, sonra yapıldıktan sonra bana getir."
Neil

Başka bir soruya verilen bu cevaba bakınız . Orada bir algoritma ve sözde kod arasında bir ilişki tanımladım.
Goran Jovic

3
Kısa sürüm: 'Sahte kod bir algoritmayı temsil etmenin yollarından biridir'
Goran Jovic

3
@Neil hatta SUDO beni bir sandviç yapıyor xkcd.com/149
StuperUser

Yanıtlar:


37

Wikipedia'nın bir Algoritma tanımı:

Matematik ve bilgisayar biliminde algoritma, bir işlevi hesaplamak için iyi tanımlanmış talimatların sonlu bir listesi olarak ifade edilen etkili bir yöntemdir. Algoritmalar hesaplama, veri işleme ve otomatik akıl yürütme için kullanılır.

Algoritmalar, saf matematiksel formüllerden karmaşık grafiklere, sahte kod olmadan, çok daha fazla kez tanımlanabilir.

Sözde kod, sözdizimsel ayrıntılara girmeden bir algoritmayı nasıl uygulayacağınızı açıklar.

Yani hayır, gerçekten eşanlamlı değiller.


8

Bir algoritma kod yazmak konusunda bir fikir. Sözde kod , bu fikri iletmek için ihtiyacınız olan yazılı metindir.


Güzel! Kısa ve düz. Ama "yazılı metin" ten "yazılı metin" derdim. Ne düşünüyorsun?
Luciano

6

"Pseudocode" "algoritma", "İngilizce" ise "vuruntu şaka" dır.

Algoritma, sahte kodda veya gerçek kodda ifade edilebilecek bir şey için resmi bir yapıdır .

Vuruntu şakası, İngilizce veya başka bir dilde ifade edilebilecek bir şey için resmi bir yapıdır. (Başka kültürler de espri yapar mı?) Bilmiyorum bile.)


Ben öyle düşünmüyorum. En azından Portekizce'de bu vuruntu oyunu hakkında benzer bir şey yok. Yani, İspanyolca ve İtalyanca gibi başka Romance dillerinde de olmadığını söyleyebilirim. Fransızca'yı dahil etmem çünkü yüzyıllar önce İngiliz adalarında İngilizce ile uzun bir ilişkisi vardı ve Rumence ve diğerleri gibi diğer Romanca dilleri bilmiyorum.
Luciano

3

Platon'un saf fikirler dünyasında var olacak bir şey olan sadece bir hızlı sıralama algoritması vardır. Herhangi bir sayıda farklı sahte kod açıklaması olabilir. Sahte kod kabaca bilgisayar kodu gibi görünüyor ve herhangi bir yaratıcı sıçrama yapmak zorunda kalmadan deneyimli bir programcı tarafından gerçek bilgisayar koduna çevrilebilir metin olarak tanımlamak düşünüyorum.

Yani hayır, terimleri birbirinin yerine kullanmam.


2

Algoritma, bir bilgisayardaki sorunları çözmek için kullanılan sistematik bir mantıksal yaklaşımdır, Pseudocode daha sonra bir programlama diline (programına) çevrilebilecek düz İngilizce ifadesidir.


2

Bir algoritma anlamsaldır , sözde kod sadece problem çözme iletişiminin bir sözdizimidir . Bu, sözde kodun bu şekilde ifade etmenin bir yolu iken, algoritmanın bir sorunun çözüldüğü gerçek bir yol olduğu anlamına gelir.

Bir algoritma, C programlama dili, sözde kod veya İngilizce dil gibi herhangi bir şekilde (sözdizimi) ifade ederseniz aynı anlama (anlamsal) sahiptir.


1

Anladığım gibi sahte kod bir algoritma ve uygulanan program arasında bir aracıdır. Sahte kodunuzu bir algoritmaya dayandırabilirsiniz. Bu, devredilebilir uygulama adımları içerir.

Algoritma ise genel mantığı ima eder. bir sorunu çözmek için ardışık adımlarla. şematik olarak temsil edilirse buna akış şeması denir.

Bazıları bunu, istemci tarafı Business nesnesi geliştiricilerinin gereksinimlere göre sahte kod yazdığı iş yazılımı geliştirmesinde yaygın bir terim olarak sözde kod olarak ifade edebilir. Bu, uygulanacak bir programcıya / geliştiriciye verilir.

Algoritma, programlama, arama, sıralama, temelde uygulanacak karmaşık bir mantığın olduğu herhangi bir yer gibi terminolojinin programlanmasında daha yaygındır.


1

Sahte kod, koda bir algoritmadan daha yakın görünse de, pratikte, sahte kod daha az resmi ve daha üst düzey bir açıklamadır. Örneğin, bir satranç oynayan bilgisayarı aşağıdaki gibi sahte bir kod olarak tanımlayabilirsiniz:

  • ilk parçaları konumlarına yerleştir
  • gösteri tahtası
  • oyun bitmediğinde
    • hamle ve ekran kartı yapmak
    • hareket ettirmek için kullanıcı sor
    • kullanıcıları hareket ettir

Evet, bu sahte koddur, iyi bir başlangıç ​​noktası olarak yararlıdır, ancak birçok ayrıntıyı parlatır. Uygulama zorluklarını ve varyasyonlarını açıklamaz, ancak en büyük yararı, tüm ayrıntıları çözmek zorunda kalmadan tüm durumu kavramsallaştırmanıza izin vermesidir.

Şu şekilde bir seviye daha ekleyerek revize edebilirsiniz:

  • ilk parçaları konumlarına yerleştir
  • gösteri tahtası
  • tahta mat veya çizik değilken
    • beyazın yasal hamlelerinin bir listesini yapmak
    • bazı kriterlere göre en iyisini seçin
    • hareket ettirin ve ortaya çıkan tahtaları hesaplayın
    • Şah mat veya beraberlik olup olmadığını görün
    • ekran kartı
    • siyahın yasal hamlelerinin bir listesini yapmak
    • kullanıcıdan giriş için yasal hamle istemi
    • hareket ettirin ve ortaya çıkan tahtaları hesaplayın
    • Şah mat veya beraberlik olup olmadığını görün
    • ekran kartı

Şimdi "siyahın yasal hamlelerinin bir listesini yapın" gibi önemli adımların her biri için sahte kod yazabilirsiniz, şöyle:

  • her siyah parça için
    • Belirli bir konumdaki parça tipi için
      • bir sonraki olası yerlerin listesini yap

Artık sözde kodun gücünün, tüm durumu tek seferde gösterme ve daha sonra ayrıntıları parça parça ele almanıza izin verme yeteneğinde olduğunu görebilirsiniz. Zayıflık, herhangi bir adımın kesin basit bir adım olmamasıdır.

Bir algoritma tipik olarak bu adımlardan birini alır ve adımın hedefini etkili bir şekilde karşılayabilmeniz için çeşitli veri yapılarını sembolik bir dilde detaylandırır.

Örneğin, get_legal_moves(board, color)bir algoritma tasarımına layıktır:

get_legal_moves(board, color):
    for i,j in board_dimensions
        if piece_at i,j is of color
            if piece type is KNIGHT
                add the following to the next moves list:
                    location i+1 j+2, i-1 j+2... etc
            if piece type is rook
                add locations:....

Algoritmanın faydalı olabilmesi için çok hassas olması gerektiğini görebilirsiniz.

Birkaç şey sağlar: hedeflerin her şeyden önce hatasız olarak yerine getirilmesi. Adımlar çok ayrıntılı ve mekanik bir şekilde yürütülebilir ve adımlar, görevi bitirdiğiniz verimliliği (hızı) artırmak için yeniden sıralayabileceğiniz kadar küçüktür.


Bu, her adımda sözde kodda ifade edilen yukarıdan aşağı algoritma ayrışması gibi görünmektedir.
Nathan Tuggy

0

Deneyimlerime göre, sahte kod her zaman işlevsel personell (sürece sahip kişiler) bir süreç, modül veya alt sistem için geçerli olan iş kurallarını ifade etmenin bir yolu olarak yazılmıştır.

Bir Algoritma, olabildiğince belirli bir görevi çözmek için farklı bir mantık ifadeler kümesidir.


0

Algoritma, matematiksel terimlerle temsil edilen bir şeydir. Analiz, temel uygulama (sözde kodda ifade edilmiş olsa bile), karmaşıklık konuları (en iyi, ortalama ve en kötü analiz vb.) İçerir.

Sahte kod, bir programın insan tarafından okunabilir bir temsilidir. Bu bile bir algoritmayı tanımlamak için kullanılabilir.


-2

Pseudo tek ve kod bir talimat olabilir anlamına gelir .. burada Pseudo-kod bilgisayar programlama dilini kolayca anlamak için kullanılan bir ifade anlamına gelir ... Programlama kodunu Analiz yardımcı olur ... . burada algoritma, bir sorunu çözmek için sonlu bir mantıksal adımdır.


1
Bu, önceki 10
cevapta
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.