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.