İkili ağaç üzerinde dolaşma birçok şekilde yapılabilir Ancak, rastgele dolaşmak yerine, önceden belirlenmiş bir yönteme, bir kurala uyulması algoritmik ifadeyi kolaylaştırır. Üstelik rekürsif fonksiyon yapısı kullanılırsa ağaç üzerinde işlem yapan algoritmaların tasarımı kolaylaşır. Önce-kök (preorder), kök-ortada (inorder), sonra-kök (postorder) olarak adlandırılan üç değişik dolaşma şekli çeşitli uygulamalara çözüm olmaktadır. 1- Preorder (Önce Kök) Dolaşma: Önce>>>
Yıllık Arşivler: 2016
3 2 * 5 6 * + postfix ifadesini stack kullanarak hesaplanması: Çözüm algoritması şöyle olmalıdır; 1- Bir operandla karşılaşıldığında o operand stack’e eklenir, 2- Bir operatör ile karşılaşıldığında ise o operatörün gerek duyduğu sayıda operand stack’ten çıkarılır, 3- Daha sonra pop edilen iki operanda operatör uygulanır, 4- Bulunan sonuç tekrar stack’e eklenir. Kaynak: Hakan>>>
Bilgisayarlarda infix yazım türünün çözümlenmesi zordur. Acaba x=a/b−c+d*e−a*c şeklindeki bir ifadeyi çözümlerken, ((4/2)−2)+(3*3)−(4*2) gibi bir ifadenin değerini hesaplarken ya da a/(b−c)+d*(e−a)*c gibi parantezli bir ifadeyi işlerken derleyiciler sorunun üstesinden nasıl geliyor? 32*(55-32-(11-4)+(533-(533-(533+(533-(533+212)))*21-2))) gibi birçok operatör(+, -, /, *, ^) ve operand(A, B, C… gibi isimler ya da sayılar) içeren bir işlemde nasıl operatör önceliklerine göre>>>
C++ kodlarını derlemek için kullandığım Online Derleyici bir çok dil için kullanılabilir. Adresi: https://www.codechef.com/ide Compiler Design Tutorial: What is, Types, Tools, Example
Rekürsif bir fonksiyon örneği – Faktöriyel Hesabı Kaynak: Hakan KUTUCU, Veri Yapıları
Veri, bilgisayar ortamında sayısal, alfasayısal veya mantıksal biçimlerde ifade edilebilen her türlü değer (örneğin; 10, -2, 0 tamsayıları, 27.5, 0.0256, -65.253 gerçel sayıları, ‘A’, ‘B’ karakterleri, “Yağmur” ve, “Merhaba” stringleri, 0,1 mantıksal değerleri, ses ve resim sinyalleri vb.) tanımıyla ifade edilebilir. Bilgi ise, verinin işlenmiş ve bir anlam ifade eden halidir. Örneğin; 10 kg, -2>>>
Veri Yapıları çalışırken gördüğüm ve faydalandığım bir kaynak olan Hakan KUTUCU tarafından hazırlanmış olan Veri Yapıları Ders Notları konuyla ilgili araştırma yapanlara faydalı olabilir. İndirmek için tıklayınız
Algoritma, bir problemi çözmek için izlenen sistematik işlemler kümesi anlamındadır. Bir sorunu çözmek için belirli bir algoritmayı izledik diyelim, peki bu algoritma bizi ne kadar uğraştırdı? Daha verimli bir şekilde sorunumuzu halledebilir miydik? Bu soruları cevaplayabilmek için ilk önce “verimlilik” (efficiency) kavramının biraz oturması gerek. Günlük hayattan örnek vermek gerekirse, apartman kapısından eve ulaşabilmek için>>>
UML (Unified Modelling Language, Birleşik Modelleme Dili) yazılım modellenmesi ve planlanması için kullanılan standart bir dildir. UML, yazılım ağırlıklı bir sistemi ve bu sistemin parçalarını gözde canlandırmak, belirtmek, kurmak ve belgelemek için kullanılabilir. Kurumsal bilgi sistemlerinden, dağıtımlı ağ-tabanlı uygulamalara ve gerçek zamanlı gömülü sistemlere kadar birçok sistemi modellemek için uygun bir dildir. UML bir programlama>>>
Model, gerçeğin basitleştirilmiş halidir. Yani, karmaşık bir sistemi modelleyerek onu daha basit bir dille ifade edebiliriz; böylece geliştirmekte olduğumuz sistemi daha iyi anlayabilir ve olası hatalarımızı uygulamaya geçirmeden görebiliriz. Aslında, kendimiz için küçük bir kulübe yapmak istersek birkaç ağaç, biraz da saman yeterli olacak ve sonunda işe yarar bir yapı çıkacaktır. Ufak tefek hatalar olsa>>>
