Biyoinformatik | Sözde kod (pseudocode)

En son güncellendiği tarih: Eyl 3


Ayşegül MURAT - Ege Üniversitesi Sağlık Biyoinformatiği ABD, Doktora Öğrencisi

Bir biyolog için kod jargonuna (sözdizimi, syntax) alışık olmak çokta rastlanılan bir durum değil. Bilgisayar bilimciler biyologların gözünü korkutan anlamsız gibi gözüken doğal dile benzemeyen, algoritmayı tanımlamak için kullandıkları yazılım dillerinin anlaşılması için sözde (pseudo) kod icat etmişler. [1]


Algoritma sözcüğü 9. yüzyılda dünyanın ilk cebir kitabını ve algoritma tanımını oluşturan Harezmi’den günümüze ulaşmıştır. [2] Bir algoritma, iyi formüle edilmiş bir problemi çözmek için kişinin gerçekleştirmesi gereken talimatlar dizisidir. Problemlerin girdiler ve çıktılar olarak kategorileştirmesi arasında bir işlem süreci ve sonrasında bunun algoritmik olarak çevrilmesini takip eder. [3] Kalem ve kağıda sahip bir insan adım adım bir problemi çözebilir, ancak insan genellikle hata yapar ve tekrarlayan işleri yapmamayı tercih eder. Bir bilgisayar daha az akıllıdır, ancak basit adımları hızlı ve güvenilir bir şekilde gerçekleştirir. Bir bilgisayara bir problemi çözmesini istiyorsak bunu C, Java, Python gibi programlama dilinde ifade etmemiz gerekir. Her ayrıntının tam ve doğru formatta bilgisayara verilmesi gerekir ki işin zor kısmı kişinin doğal olarak anlayacağı önemsiz ayrıntıları bilgisayarın anlamıyor olmasıdır. [1,4]


Şekil 1: Yazılımcının masasını canva.com kullanarak görselleştirilmesi.

Anneniz “Bir çift ayakkabı giy” ya da “Ayakkabını giy” dediğinde hiç enerji harcamadan adım adım ne yapacağımızı bilir, girdilerin ve çıktıların ne olacağını düşünmeden yaparız. Fakat bunu bilgisayara anlatmaya gelince durum ona ayakkabının hem eşleşen (aynı görünüşe sahip) hem birbirine uyan (aynı numaraya sahip) bir çift bulmasını, sol ayakkabıyı sol ayağına, sağ ayakkabıyı sağ ayağına, varsa bağcıkları onları bağlaması gerektiğini tanımlamanız gerekiyor. Girdileriniz bu tanımlar iken çıktınızın ise ayakkabıyı giymiş bir bilgisayar olmasını hayal edebilirsiniz. Ayakkabının hangi cinsiyete ait, hangi renk, hangi model ve belki hangi marka olduğun da sizin çıktınızda istediğiniz fark ise, o zaman bilgisayara bunu daha fazla satırla anlatmanız gerekiyor. Algoritmanın attığı adımları listelemenin bir yoluna ihtiyacımız var. Sözde kod (pseudocode), bilgisayar bilimcilerinin algoritmaları tanımlamak için sıklıkla kullandıkları bir dildir: bir programlama dilinde gerekli olan ayrıntıların çoğunu göz ardı eder. Sözde kod genellikle programlama dilinin nasıl olduğuna bakılmaksızın bir programın mantıksal sırasını tanımlamak için kullanılır. [4] Bu kod türü çeşidinde, değişkenler (variables) diziler (arrays) ve bağımsız değişkenler (arguments) kavramları kullanılır. [1] Bir değişken (variables), x ya da toplam olarak yazılan, bazı sayısal değerler içerir ve bir algoritmanın seyri boyunca farklı noktalarda yeni bir sayısal değer atanabilir. Bir n elemanlı dizide (array), n değişkenli a1,a2,…,an şeklinde sıralı bir koleksiyondur. Genellikle diziler a = (a1,a2,…,an) gibi kalın harflerle belirtilen ve tek tek öğeleri i’nin 1 ile n arasında olduğu ai olarak yazılır. Sözde koddaki bir algoritma, bir isimle ve ardından gerektirdiği argümanların listesi ile gösterilir. Bağımsız değişkenler (arguments) için örnek ise MAX (a,b) algoritmanın eylemlerini tanımlayan ifadelerle belirtilir. Biri argümanlar için uygun değerleri girdiğinde a ve b için maksimum değer sonucunu bize verir. Örneğin, MAX (10,24) için 10 ve 24’ten büyük olanı döndürecektir. İşlem sonunda programın sonucunu bildirerek başka bir işlem yoksa kodu sonlandırır. [1]


Değişken


a <- b


a değişkenini b değişkeni ayarlar.


b <- 2


b 2 değerini alır ve yukarda a değişkenini belirleyen b değiştiği için a’nın değeri 2 olur.


a + b, a – b, a * b, a / b


belirtilen a ve b değerleri için a ve b’nin sırasıyla toplama, çıkarma, çarpma ve bölme aritmetik işlemleri yapılır.


Eğer (if) Şartlı (conditional) Bir İfade Yazmamız Gerekiyorsa;


if A is true


B


else


C


Şeklinde kod yazımı olur. Eğer A ifadesi doğruysa B, değilse C talimatlarını uygulanır.


Bazen “else C” çıkarılır, bu durumda A’nın doğru olup olmadığına bağlı olarak ya B’deki talimatlar uygulanır ya da uygulanmaz.


MIN (a,b)


1 if a <b


2 return a


3 else


4 return b


MIN (a,b) a ve b sayılarının minimumunu hesaplar MIN(10,24) için 10 ve 24’ten küçük olduğu için 10 değerini döndürür.


For Döngüsü


Sözde kod yazımı aşağıdaki gibi olan bir ifade,


for i <- a to b


B


a’dan b’ye kadar tüm değerleri kullanarak C’de belirtilen talimatları i değerine karşılık gelen başlangıcı a olan işlem yapar.


Python dilinde bunu yazmak istersek,


for i in range(1,10):


i= i*2


print (i)


yazar ve 1’den 10’a kadar olan tüm değerleri 2 ile çarpıp bu i değerlerini ekrana yazdırmamızı sağlarız. [1,5]


While Döngüsü


Bazı durumlarda for döngüsünü bir şarta bağlamamız gerekir. Örneğin 1 ile 10 arasındaki sayıların 2 katını almak ama sayı toplamının 50’den küçük olmasını istiyoruz. Böyle şartlı durumda while döngümüzü kullanmamız gerekiyor.


Sözde kod olarak;


while A is true


B


Bu ifadede döngü A koşulunu kontrol eder. Bu doğruysa, B komutunu yürütür. A’yı tekrar kontrol eder; doğruysa, B’yi yeniden çalıştırır. A doğru olmayana kadar bu döngü tekrar eder.


ADDUNTIL(b)


1 i <- 1


2 total <- i


3 while total ≤ b


4 i <- i + 1


5 total <- total + i


6 return i


ADDUNTIL(b), 1+2+…+i’nin b’den büyük olacağı şekilde en küçük i tamsayısını hesaplar. Örneğin, ADDUNTIL (25) 7 döndürür, çünkü 1+2+…+7= 28, bu 25’ten büyüktür, ancak 1+2+…+6= 21, 25’ten küçüktür. while total ≤ b 25 olarak belirtilip bu değer bulunduğunda döngüden çıkılır ve hesaplama bitip sonuç ekrana yazdırılır.


Dizi (array) Erişimi


Dizinin i’inci sayısı a = (a1,a2,…,an). Örneğin, F = (1,1,2,3,5,8,13) daha sonra F3=2 ve F4=3 olduğu bir durumda.


FIBONACCI(n)


1 F1 <- 1


2 F2 <- 1


3 for i <- 3 to n


4     Fi <- Fi-1 + Fi-2


5 return Fn


FIBONACCI (n) n’inci Fibonacci sayısını hesaplar. FIBONACCI(8) 21 değerini döndürür. [1,6]





Referanslar

1. Jones, N. C., Pevzner, P. A., & Pevzner, P. (2004). An introduction to bioinformatics algorithms. MIT press.

2. Eschenburg, J. H. (2020). Algebra from Al Khwarizmi to Galois, 830-1830. Bulletin of the Iranian Mathematical Society, 46(3), 613-624.

3. Busbee, K. L. (2018). Pseudocode. Programming Fundamentals.

4. Nita, S., & Kartikawati, S. Analysis Of The Impact Narrative Algorithm Method, Pseudocode And Flowchart Towards Students Understanding Of The Programming Algorithm Courses.

5. Lutz, M. (2001). Programming python. " O'Reilly Media, Inc.".

6. Oliphant, T. E. (2007). Python for scientific computing. Computing in Science & Engineering, 9(3), 10-20.

82 görüntüleme

Türkiye'nin Tek Popüler Genetik Bilim Dergisi

Bezelye Dergi ISSN: 2587-0173

Bizi Takip Et
  • Beyaz Facebook Simge
  • Beyaz Instagram Simge
  • White Twitter Icon
  • Icon-gmail
  • kisspng-white-logo-brand-pattern-three-d
  • images
  • medium
  • Dergilik
  • YouTube

© 2019 by Bezelye Dergi