Merhaba bugün sizlere yazılım ve matematik arasındaki ilişkiden bahsedeceğim. Öncelikle matematiğin önemini bilmemiz gerekmektedir. Galileo Galilei matematik hakkında çok güzel bir söz söylemiştir.
Doğanın muazzam kitabının dili matematiktir.
Galileo Galilei
Galileo Galilei İtalyan astronom, fizikçi, mühendis, filozof ve matematikçidir. Galileonun bu sözü her şeyi açıklamaktadır. Matematik kabul edelim veya etmeyelim her yerde karşımıza çıkacaktır.
Yazılım alanında da matematik ile karşılaşacaksınız. Örnek vermek gerekirse kullanmakta olduğumuz bilgisayar, cep telefonu, tablet gibi tüm elektronik cihazlarda bir ve sıfır ile işlem yapabilmekteyiz yani yazılımın çalıştığı sistemin temeli de matematiğe dayanmaktadır.
Yazılım geliştirmekte olan kişiler matematiği temel seviyede olsa da bilmek zorundadırlar. Bazen öyle algoritmalar kurmanız gerekecektir ki matematiği temel alarak kurabileceksiniz.
Örnek olarak bir kod yazdınız ve size bu kodun her koşulda en iyi çözüm olduğunu ispatlayın dediler. Bu aşamada yazdığınız kodun, kurduğunuzun algoritmanın analizini yaparak matematiksel olarak açıklanmış bir çözüm sunmanız gerekir.
Çok basit bir soru ile yazıma son vermek istiyorum. Aşağıdaki soruyu istediğiniz programlama dilini kullanarak çözebilirsiniz.
Kullanıcının dışarıdan girdiği sayıya kadar olan sayıların birden başlayarak toplamını en optimum ve çalışma zamanı açısından en hızlı olacak kodu yazınız. Örnek kullanıcı 5 girerse 1-5 kadar olan sayıların toplamını bulacaksınız.
Bu sorunun bir çok çözümü vardır. Bize en hızlı ve optimum çalışan algoritmayı kurmanız gerekmektedir.
Bir çok kişi 1’den başlayan bir döngü kurarak kullanıcının girdiği değere kadar devam eden ve bu sayıları toplayarak kullanıcının girdiği değere ulaştığında sonlanan bir algoritma kurmaktadır.
public static void main(String[] args) {
double kullaniciDegeri = 1;
double toplam = 0;
for (int i = 1; i <= kullaniciDegeri; i++) {
toplam = toplam + i;
}
}
Bu yöntemde bir çözümdür. Fakat her zaman daha iyi ve daha basit çözüm vardır. Carl Friedrich Gauss‘un bulduğu formül bize daha hızlı ve daha iyi bir çözüm olabilir. Gauss 1-n kadar olan sayıların toplamını veren bir formül bulmuştur.
Formül: (n*(n+1))/2
Gauss formülünü kullanarak bu problem için daha iyi ve daha hızlı bir sonuç elde etmiş oluruz.
Sonuç olarak bu kadar basit görünen 1-n kadar sayıların toplamını bulmak için kod yazmadan önce matematiğini düşünmek gerekir. Belki bir gün bundan daha iyi sonuç verecek bir matematik formülü bulunur. Her zaman daha iyisi vardır.