Çizge Kuramı (Graf Teorisi)

Graf teorisi veya çizge kuramı, grafları inceleyen matematik dalıdır. Graf, düğümler ve bu düğümleri birbirine bağlayan kenarlardan oluşan bir tür ağ yapısıdır. Bir graf veya çizge, düğümlerden (köşeler) ve bu düğümleri birbirine bağlayan kenarlardan (yaylardan, bağıntılardan) oluşur. Temeli 1736'da Leonhard Euler tarafından atıldığı söylenmektedir. Çizge Teorisi çok farklı disiplinlerin çalışma alanına girmektedir. Sosyolojiden, bilgisayar bilimlerine, işletmeden, endüstri mühendisliğine kadar çok geniş alanlarda kullanımı olan teori, basitçe bir gerçek hayat probleminin çizge ile modellenmesini amaçlamaktadır. Model oluşturulduktan sonra çizge teorisinde bulunan yöntemler kullanılarak problem çözülebilmekte ve ardından da tekrar gerçek hayata uygulanabilmektedir. Çizge teorisi temel olarak bir problemin kenar (edge) ve düğümler (node) ile modellenmesi ve bu modelin bir çizge şeklinde gösterilmesi ilkesine dayanmaktadır. Çizge teorisinde tanımlı olan bazı özellikler bu modelin çözümüne ve dolayısıyla gerçek problemin çözümüne yardımcı olmaktadırlar. Yani çizge teorisinin işe yaraması için öncelikle gerçek dünyadan bir problem çizge olarak modellenir, bu model çözülür ve daha sonra gerçek dünyaya uygulanır.
Graf teorisinin matematiksel tarihi, Königsberg köprüleri problemine dayanır.Leonhard Euler tarafından, 1736 yılında, Königsberg'in yedi köprüsü (Die Sieben Brücken von Königsberg) adında günümüzde hâlâ popülerliğini koruyan bir problem ile ilgili olarak yazılan bir makale, graf teorisinin başlangıç tarihi kabul edilir. Königsberg kentinde Eski Pregel ve Yeni Pregel nehirleri birleşerek Pregel (Pregolya) nehrini oluşturmaktadır. Bu nehirler, şehri dört bölüme ayırmaktadır ve nehir üzerinde bu bölgeleri birleştiren yedi köprü bulunmaktadır. Ortaya atılan probleme göre: Königsberg'in yedi köprüsünden sadece bir ve yalnız bir defa geçmek koşulu ile bir yürüyüş yapılabilir mi? Bu sorun üzerine kafa yoran matematikçiler çeşitli çözüm önerileri sunmuş ve en sonunda 1736'da İsviçreli matematikçi Leonhard Euler tarafından bir makale yayınlanarak problem cevaplandırılmıştır. etwork ağları, facebook, twitter gibi sosyal ağların kullanımı, gezgin satışçı probleminin çözümü (travelling salesman problemi- en kısa yollardan müşteriye ulaşma), mektup dağıtımı, yol bakımı, kar temizleme, çöp toplama, yollarda devreye araçlarının gezimi
Euler çözümünde biraz daha kolaylaştırmak ve şekli gereksiz bileşenlerden arındırmak amacıyla kara parçalarının noktalar, köprülerin ise bu noktaları birleştiren çizgiler olarak gösterildiği ikinci bir şekil yani graf (çizge) çizilir. Graflar graf elemanı, noktalar düğüm, düğüme bağlı olan elemanların sayısı ise düğüm derecesi olarak adladırılmak üzere soru, grafın herhangi bir düğümünden başlayarak yedi elemanının her birini bir ve yalnız bir kere kullanarak dolaşma problemine dönüşmüş olur. 1736'da Euler'in incelemeleri böyle bir gezintinin mümkün olmadığını kanıtlamış ve bu tür dolaşmayı mümkün kılacak grafların şu özelliklere sahip olmaları gerektiğini göstermiştir: Birleşik bir grafın bütün elemanlarını bir ve yalnız bir defa kullanarak dolaşmak için o grafın tek dereceli düğümlerinin sayısı eğer varsa iki olmalıdır. Tek dereceli düğümler dolaşmanın başlangıç ve bitiş düğümleridir. Grafta böyle düğümler yoksa dolaşmaya herhangi bir düğümden başlanabilir. Şekildeki çizgede A düğümünün derecesi 3'tür çünkü ona bağlanan doğru sayısı yani köprü sayısı 3 tanedir. Aynı şekilde B ve D'nin de düğüm dereceleri 3'tür. Çünkü bu noktalara bağlanan doğru sayısı 3'er tanedir. Şekilde ortadaki C düğümünün düğüm derecesi ise 5'tir. Çünkü C düğümüne ait çizge sayısı 5tir.
 Çözümün temelinde yatan düşünce şudur: Bir düğüm, başlangıç ya da bitiş düğümü değilse o düğüme gelen kişinin turu tamamlayabilmek için oradan ayrılması gerekecektir. Dolayısıyla bu tip düğümler çift dereceleri olmalıdır. Oysa tek dereceli bir düğüme, örneğin D düğümüne ikinci kez gelen bir kişi çıkış yolu bulamayacaktır. Dolayısıyla bu düğüm ya gezintinin bitiş düğümü olmalıdır ya da başlangıç düğümü olarak seçilmelidir ki ikinci gelişte çıkış yolu bulunabilsin. Buna göre tek dereceli düğüm sayısı ikiden fazlaysa gezinti tamamlanamayacaktır. Yürüyüşün sonunda başlangıç noktasına dönülebilmesi içinse bütün düğümler çift dereceli olmalıdır. Böylece, başlangıç ve bitiş düğümü aynı olan ve her bir elemanı sedece ve en az bir kez içeren turlara "Euler turu" ve Euler turu içeren graflara da "Euler grafları" denmiştir. 
Euler'e göre her köprüden sadece bir kez geçerek geziyi tamamlayabilmek için ya her kara parçasının köprü sayısı çift ya da iki kara parçasının köprü sayısı tek olmak zorundadır. Königsberg şehri, toplam dört anakara parçasına yayılmıştır ve bunların her biri komşu yerlere tek sayıda köprüyle bağlanmıştır. Üç noktadan üçer köprü, birinden de beş köprü çıkmaktadır. Bu nedenle Euler hem Köngsberg’i her köprüden sadece ve sadece bir kez geçerek dolaşmanın imkansız olduğunu göstermiştir. Bu sayede Euler, dünyanın herhangi bir yerindeki herhangi bir şehrin köprü ağına uygulanabilecek genel bir kuralı ortaya koymuştur. Bu problemin çözümü çizge teorisinin ilk temelleri olmuş, topolojinin gelişmesine yol açmıştır. 
 
Matematiksel tanımı: Bir G grafı iki küme ile ifade edilir: G = (D, K). Bu ifadede D düğümler kümesi, K ise (düğümler ile ilişkili) kenarlar kümesi olarak ifade edilir. Eğer düğümleri birbirine bağlayan kenarlar için giriş ve çıkış yönleri belirli ise bu kenarlara yönlü kenarlar denir. Eğer bir düğümden çıkan ve yine aynı düğüme giren bir kenar varsa (mesela A'dan çıkıp A'ya yeniden giren bir kenar), bu bir döngü (loop) olarak ifade edilir. Eğer bir düğümden bir başka düğüme giden aynı yöne sahip veya yönsüz iki adet kenar varsa bu kenarlara paralel kenarlar denir. Yönlü bir çizgede komşuluk listesi oluşturulurken, her bir düğüm başlangıç olarak kabul edilerek, ok yönüne göre, o düğümden hangi düğümlere gidilebileceği yazılır. Bir çizgenin türünü, kenarlarının yönlü olup olmadığı, çoklu kenar durumu ve döngü içerip içermediği belirler. Derece: Yönsüz bir çizgede, bir düğümün derecesi, kendisine gelen kenarların sayısıdır. 


Bir çizgede birden fazla Euler döngüsü bulunabilir mi? sorusunun cevabı matematikçiler tarafından araştırılmış ve 1941 yılında dört matematikçi tarafından bulunan bir teorem ile probleme çözüm sunulmuştur. BEST teoremine göre, bir çizgedeki Euler döngülerinin sayısını bulmak için, bu çizgedeki tüm düğümlerin derecelerinin bir eksiğinin faktöriyelleri hesaplanır ve sonuçlar birbirleriyle çarpılır. Örneğin A, B, C, D düğümlerinden oluşan bir çizgede düğüm dereceleri sırasıyla 4, 4, 2, 2 olsun. Tüm düğüm dereceleri çift sayıda olduğu için burada bir Euler döngüsünün olduğundan söz edebiliriz. Düğüm derecelerinden bir eksilttiğimizde, 3, 3, 1, 1 sayılarını elde ederiz. Bu sayıların faktöriyellerini hesapladığımızda da (3!, 3!, 1!, 1!) nihayetinde 6, 6, 1, 1 sayılarını elde ederiz. Bu sayıları birbiriyle çarptığımızda tüm çizgede 36 farklı Euler döngüsü olduğunu söyleyebiliriz.
Düğüm sayısı üç veya daha fazla olan ve tek bir döngüden oluşan çizgelere “döngü çizge” adı verilir. C (n) ile gösterilir ve burada "n" düğüm ve hat sayısını ifade eder. Döngü çizgelerdeki tüm düğümlerin
derecesi birbirine eşit ve 2’dir. Tekerlek çizgeler de döngü çizgelerin tam ortasına yeni bir düğüm eklenip bu düğümün diğer tüm düğümlere bağlanmasıyla bir çizge elde edilir. Tekerlek çizgeler, W(n) şeklinde gösterilir. Tekerlek çizgelerde n düğüm ve 2(n-1) bağlantı hat içerir. Eğer bir basit çizgede her bir düğüm diğer tüm düğümlerle bir bağlantıya sahipse bu durumda “tamamlanmış çizge” varlığından söz edebilir.. Tamamlanmış çizgeler K(n) şeklinde gösterilir ve n burada düğüm sayısını ifade eder.
Graph teorisi üzerine kurulu problemlerle günlük hayatımızda aslında sıkça karşılaşıyoruz. Örneğin çocukluğumuzda ilkokulda sıklıkla yaptığımız elimizi kaldırmadan çizilebilecek ev modeli, aslında bir çizge kuramıdır.  Aşağıdaki şekilden de görülebileceği gibi çizim üzerinde, çizgilerden yalnızca bir kez geçerek, yani elimizi kaldırmadan, çizimi tamamlayabilir miyiz? şeklinde bir problem, bir graf teorisi sorusudur. Bu problemde çizme işlemine tek dereceli düğümlerden başlarsak tüm çizgilerden sadece bir kez geçerek çizimi tamamlayabiliyoruz. Aksi halde çizimi tamamlamak mümkün değil.

Graf teorisi üzerinde yapılan çalışmalar, Petri ağları gibi birçok yeni kavramın geliştirilmesine imkân sağlamıştır.Petri ağları, bir sistemin matematiksel bir modelle temsil edilmesine olanak tanır ve süreçlerin grafiksel bir notasyon ile ifade edilmesini sağlar. Bu ağlar, geçiş (transition) ve yerleşim (place) düğümlerinden oluşan, tek yönlü iki parçalı bir grafik yapısına sahiptir. Oklarla gösterilen yönlü kenarlar, bir geçişten önce ve sonra hangi yerlerin bulunduğunu tanımlar. Bu yapı, süreçlerin akışını ve eşzamanlı işlemleri görselleştirmenin yanı sıra matematiksel olarak analiz etmeye de olanak tanır. Petri ağlarının, 1939 yılında Carl Adam Petri tarafından kimyasal süreçleri tanımlamak amacıyla geliştirildiği belirtilir. Bu model 1960'larda daha kapsamlı bir matematiksel temel üzerine oturtulmuş ve sistem analizi için önemli bir araç haline gelmiştir. 

Kaynakça: 
1. Çizge kuramının Ortaöğretim Matematik dersi müfredatına eklenmesi, Nermin Yılmaz Çilingir, Tasarım Enformatiği, Cilt:2-2
2. Çizge Teorisi (Graph Theory), Sadi Evren SEKER, İstanbul Medeniyet University, Department of Business, Management Information Systems Program, YBS Ansiklopedi, Cilt 2, Sayı 2, Haziran 2015 
3. Büyük Çizgeler Daha Küçüklerinin Kopyalarıyla Oluşturulabilir mi? Dr. Tuncay BAYDEMİR, TÜBİTAK Bilim ve Teknik Dergisi, Bilim ve Teknik Dergisi, Kasım 2020
| | | Devamı... 0 yorum

Algoritma Örnekleri

Bir problemin çözümüne dair işlem basamakları oluşturulabiliyorsa, o problem çözülmüş demektir. Herhangi bir programlama dilinde, işlem basamaklarını bilgisayarın anlayabileceği şekle dönüştürme yardımıyla problem çözüm işlemi başlamış olur. Bu dönüştürme işlemini kolaylaştırmak için, işlem basamaklarımızı oluştururken bilgisayar diline yakın bir dille yazmak önemlidir. Öyle ki; bilgisayara verilecek iki sayıyı toplayıp, sonucu ekrana yazacak bir program için oluşturulan işlem basamakları, 
1. Sayıları oku 
2. Sayıların toplamlarını hesapla 
3. Toplamlarını ekrana yaz şeklinde olduğunda, bu işlem basamaklarını herhangi bir programlama dilini kullanarak bilgisayara aktarmak, yeterli değişken kullanımı olmadığında daha zor olacaktır. 
Aynı işlem basamakları aşağıdaki gibi yazıldığında programlama açısından daha kolay bir durum verir.
1. Başla 
2. A sayısını oku 
3. B sayısını oku 
4. C = A + B 
5. C sayısını yaz (ekrana yaz) 
6. Dur 
 
Örneğin bir pozitif tamsayının 5 ile tam bölünüp bölünmediği belirlemek için aşağıdaki gibi bir adımlama yapılabilir. 
1. Başla
2. Pozitif bir tamsayı gir
3. sayının birler basamağını bul b=x%10
4. eğer b=5 veya b=0 ise "x, 5 ile tam bölünür" değilse "x , 5 ile tam bölünmez"
5. bitir

 
Aşağıda bazı benzer algoritma örnekleri sunulmuştur. Bu algoritmalara uygun akış diyagramları da akış diyagramı sembolleri kullanılarak yapılabilir. 

İki Sayının Toplamını Veren Algoritma Örneği
1.Başla 
2.Birinci Sayıyı Gir 
3.İkinci Sayıyı Gir 
4.İki Sayıyı Topla 
5.Toplam değerini yaz 
6.Bitir 
 
İki Sayının Ortalamasını Veren Algoritma 
1.Başla 
2.X değerini gir 
3.Y değerini gir 
4.Toplam = X+Y 
5.Ortalama = Toplam / 2 
6.Ort değerini yaz 
7.Bitir 
 
Girilen bir sayının pozitif mi negatif mi olduğunu ekrana yazdıran algoritma 
1. Başla
2. Sayıyı gir (sayı)
3. Eğer sayı = 0 ise Adım 2’ye geri dön
4. Eğer sayı < 0 ise ekrana, “girilen sayı negatiftir” yaz ve Adım 6’ya git
5. Eğer sayı > 0 ise ekrana, “girilen sayı pozitiftir” yaz
6. Bitir
 
Girilen bir sayının mutlak değerini hesaplayan algoritma
1. başla 
2. bir sayısı gir (a) 
3. eğer a<0 ise a=a*(-1)
4. a yaz
5.Bitir

Girilen iki sayıdan hangisinin daha küçük olduğunu ekrana yazdıran algoritma
1. Başla
2. Birinci sayıyı gir (a)
3. İkinci sayıyı gir (b)
4. Eğer a < b ise ekrana “Birinci sayı daha küçüktür” yaz
5. Eğer a < b değil ise ekrana “İkinci sayı daha küçüktür” yaz
6. Bitir

Bir sayının karesini hesaplayan algoritma
1.başla 
2. “karesini alacagin sayıyı gir” (a)
3. sonuc=a*a
4. sonucu yaz  “girdigin sayinin karesi:”+sonuc 
5.bitir

Vize notunun %40’unu final notunun %60’ını alan bir algoritma
1. Başla
2. Vize notunu gir (vize)
3. Final notunu gir (final)
4. Vize notunun %40’unu, final notunun %60’ını al puan değişkenine ata
(puan= 0.4*vize + 0.6*final)
5. Puan değişkenini ekrana yaz 
6. Bitir
 
Bir üçgenin hipotenüs uzunluğunu bulan algoritma 
1. Başla 
2. Birinci dik kenarı (a) gir
3. ikinci dik kenarı (b) gir
4. hipotenüsü bul  c=(a^2+b^2)^(1/2) 
5. hipotenüs yaz (c)
6. Bitir
 
Bir kenar uzunluğu ve o kenara ait yüksekliği girilen üçgenin alanını hesaplayan algoritma 
1. Başla
2. Kenar uzunluğunu (a) gir
3. Yüksekliği (h) gir
4. Kenar uzunluğu ile yüksekliği çarpıp 2’ye böl ve sonucu alan (S) değişkenine ata
(S=a*h/2)
5. Alan değişkenini (S) ekrana yaz
6. Bitir
 
Kısa ve uzun kenarı girilen dikdörtgenin alanını ve çevresini hesaplama algoritması
1.başla 
2. kısa kenarı gir (a)
3. uzun kenarı gir (b)
4. çevreyi hesapla cevre=2*(a+b)
5.alan hesapla alan=a*b
6. çevre ve alanı yaz 
7.bitir
 

Yarıçapı girilen dairenin çevresini ve alanını hesaplayan algoritma
1. Başla
2. Dairenin yarıçapını gir (r)
3. Pi sayısını π olarak al
4. Pi sayısı ile yarıçapı çarpıp iki katını al ve çevre değişkenine ata (cevre = 2*π*r)
5. Pi sayısı ile yarıçapın karesini çarp ve alan değişkenine ata (alan = π*r*r)
6. Çevre ve alan değişkenlerini ekrana yaz 
7. Bitir
 
Yarıçapı girilen kürenin hacmini hesaplayan algoritma
1.başla 
2. Küre yarıçapını gir (r)
3. hacim=(4*π*r^3)/3 
4. hacim yaz 
5. bitir
  
 1-20 arasında ki tamsayıların toplamını bulan algoritma
1.başla
2.sayac=0 toplam=0
3.sayac=sayac+1 
4.eger = sayac=>20 ise toplam=toplam+sayac 
5. yaz “1-20 arası sayilarin toplamı=”, toplam 
6. bitir 
 
1 ve 200 arasında çift sayıların toplamını bulan algoritma 
1.başla
2.sayac=2, toplam=0 
3.toplam=toplam+sayac 
4.sayac=sayac+2 
5.eger sayac<=200 ise 3.adıma git
6.  yaz “1-200 arasi cift sayilarin toplami=”, toplam
7.bitir 
 
Ürün fiyatını KDV Ekleme algoritması
1. Başla 
2. ürün fiyatını gir (fiyat)
3. KDV hesapla kdv =fiyat*18/100 
4. Ürünün KDV eklenmiş fiyatını yaz (fiyat+kdv) 
5. bitir 
  
İsmi 100 kere yazdıran algoritma 
1.başla
2.sayac=0 
3. İsim gir “Kadir”, sayac
4.sayac=sayac+1 
5.eger sayac<101 ise adım 3'e git
6.bitir
| | | Devamı... 0 yorum

Algoritmada akış diyagramları

Algoritmada akış diyagramlarından yararlanılarak çözüm basamakları adımlandırılır. Akış diyagramı, algoritmaların şekil ve sembollerle ifade edilmesidir. Akış şemasında her adım birbirinden farklı anlamlar taşıyan şekillerden oluşur ve adımlar arasındaki ilişki oklar ile gösterilir. Kodlanacak programın akış şemasının oluşturulması, sürecin daha kolay çözümlenmesine yardımcı olur. 
Akış diyagramları ve sözde kodlar yardımıyla bilgisayar programcılığına geçişte algoritma kullanılır. Sözde kod, bilgisayar bilimleri alanında algoritmalar ve programlar oluşturulurken ve aktarılırken kullanılan, günlük konuşma diline benzer ve belli bir programlama dilinin detaylarından uzak anlatımlardır. Programın yapısının ve çalışma mantığının yüksek seviyeli bir biçimde, gerektiği yerde doğrudan doğal dil cümleleriyle, ama yine de bir program yapısı ve akışı içinde anlatılmasıdır. Böylelikle sözde kodu okuyan ya da yazan birisi, programlama dillerinin sözdizim detaylarına dikkat etmek zorunda kalmadan, programın ve algoritmanın çalışma mantığını düşünebilir. Sözde kod için önceden üzerinde karar kılınmış kesin bir sözdizim yoktur. Sözde kod ile bir programı anlatan kişi, uygun gördüğü programlama dili yapılarının ve işlevlerinin sözde kod içinde bulunduğunu varsayabilir. Amaç, derleme işleminden hatasız çıkacak bir program oluşturmak değil, programın çalışma mantığını anlamak olduğu için, sözde kod yazarken uygun görülen herhangi bir soyutlama düzeyi kullanılabilir. Bazı sözde kodlar programlama dilleriyle büyük ölçüde örtüşürken, bazıları sadece program biçiminde yazılmış düz yazı olabilir. 
Bir problemin çözümüne dair işlem basamakları oluşturulabiliyorsa, o problem çözülmüş demektir. Herhangi bir programlama dilinde, işlem basamaklarını bilgisayarın anlayabileceği şekle dönüştürme yardımıyla problem çözüm işlemi başlamış olur. Bu dönüştürme işlemini kolaylaştırmak için, işlem basamaklarımızı oluştururken bilgisayar diline yakın bir dille yazmak önemlidir. Öyle ki; bilgisayara verilecek iki sayıyı toplayıp, sonucu ekrana yazacak bir program için oluşturulan işlem basamakları, 
1. Sayıları oku 
2. Sayıların toplamlarını hesapla 
3. Toplamlarını ekrana yaz şeklinde olduğunda, bu işlem basamaklarını herhangi bir programlama dilini kullanarak bilgisayara aktarmak, yeterli değişken kullanımı olmadığında daha zor olacaktır. 
Aynı işlem basamakları aşağıdaki gibi yazıldığında programlama açısından daha kolay bir durum verir.
1. Başla 
2. A sayısını oku 
3. B sayısını oku 
4. C = A + B 
5. C sayısını yaz (ekrana yaz) 
6. Dur 
Aşağıda bazı benzer algoritma örnekleri sunulmuştur. Bu algoritmalara uygun akış diyagramları da akış diyagramı sembolleri kullanılarak yapılabilir. 

İki Sayının Toplamını Veren Algoritma Örneği
1.Başla 
2.Birinci Sayıyı Gir 
3.İkinci Sayıyı Gir 
4.İki Sayıyı Topla 
5.Toplam değerini yaz 
6.Bitir 
 
İki Sayının Ortalamasını Veren Algoritma 
1.Başla 
2.X değerini gir 
3.Y değerini gir 
4.Toplam = X+Y 
5.Ortalama = Toplam / 2 
6.Ort değerini yaz 
7.Bitir 
 
Girilen bir sayının pozitif mi negatif mi olduğunu ekrana yazdıran algoritma 
1. Başla
2. Sayıyı gir (sayı)
3. Eğer sayı = 0 ise Adım 2’ye geri dön
4. Eğer sayı < 0 ise ekrana, “girilen sayı negatiftir” yaz ve Adım 6’ya git
5. Eğer sayı > 0 ise ekrana, “girilen sayı pozitiftir” yaz
6. Bitir
 
Girilen bir sayının mutlak değerini hesaplayan algoritma
1. başla 
2. bir sayısı gir (a) 
3. eğer a<0 ise a=a*(-1)
4. a yaz
5.Bitir

Girilen iki sayıdan hangisinin daha küçük olduğunu ekrana yazdıran algoritma
1. Başla
2. Birinci sayıyı gir (a)
3. İkinci sayıyı gir (b)
4. Eğer a < b ise ekrana “Birinci sayı daha küçüktür” yaz
5. Eğer a < b değil ise ekrana “İkinci sayı daha küçüktür” yaz
6. Bitir

Bir sayının karesini hesaplayan algoritma
1.başla 
2. “karesini alacagin sayıyı gir” (a)
3. sonuc=a*a
4. sonucu yaz  “girdigin sayinin karesi:”+sonuc 
5.bitir

Vize notunun %40’unu final notunun %60’ını alan bir algoritma
1. Başla
2. Vize notunu gir (vize)
3. Final notunu gir (final)
4. Vize notunun %40’unu, final notunun %60’ını al puan değişkenine ata
(puan= 0.4*vize + 0.6*final)
5. Puan değişkenini ekrana yaz 
6. Bitir
 
Bir üçgenin hipotenüs uzunluğunu bulan algoritma 
1. Başla 
2. Birinci dik kenarı (a) gir
3. ikinci dik kenarı (b) gir
4. hipotenüsü bul  c=(a^2+b^2)^(1/2) 
5. hipotenüs yaz (c)
6. Bitir
 
Bir kenar uzunluğu ve o kenara ait yüksekliği girilen üçgenin alanını hesaplayan algoritma 
1. Başla
2. Kenar uzunluğunu (a) gir
3. Yüksekliği (h) gir
4. Kenar uzunluğu ile yüksekliği çarpıp 2’ye böl ve sonucu alan (S) değişkenine ata
(S=a*h/2)
5. Alan değişkenini (S) ekrana yaz
6. Bitir
 
Kısa ve uzun kenarı girilen dikdörtgenin alanını ve çevresini hesaplama algoritması
1.başla 
2. kısa kenarı gir (a)
3. uzun kenarı gir (b)
4. çevreyi hesapla cevre=2*(a+b)
5.alan hesapla alan=a*b
6. çevre ve alanı yaz 
7.bitir
 
Yarıçapı girilen dairenin çevresini ve alanını hesaplayan algoritma
1. Başla
2. Dairenin yarıçapını gir (r)
3. Pi sayısını π olarak al
4. Pi sayısı ile yarıçapı çarpıp iki katını al ve çevre değişkenine ata (cevre = 2*π*r)
5. Pi sayısı ile yarıçapın karesini çarp ve alan değişkenine ata (alan = π*r*r)
6. Çevre ve alan değişkenlerini ekrana yaz 
7. Bitir
 
Yarıçapı girilen kürenin hacmini hesaplayan algoritma
1.başla 
2. Küre yarıçapını gir (r)
3. hacim=(4*π*r^3)/3 
4. hacim yaz 
5. bitir
  
 1-20 arasında ki tamsayıların toplamını bulan algoritma
1.başla
2.sayac=0 toplam=0
3.sayac=sayac+1 
4.eger = sayac=>20 ise toplam=toplam+sayac 
5. yaz “1-20 arası sayilarin toplamı=”, toplam 
6. bitir 
 
1 ve 200 arasında çift sayıların toplamını bulan algoritma 
1.başla
2.sayac=2, toplam=0 
3.toplam=toplam+sayac 
4.sayac=sayac+2 
5.eger sayac<=200 ise 3.adıma git
6.  yaz “1-200 arasi cift sayilarin toplami=”, toplam
7.bitir 
 
Ürün fiyatını KDV Ekleme algoritması
1. Başla 
2. ürün fiyatını gir (fiyat)
3. KDV hesapla kdv =fiyat*18/100 
4. Ürünün KDV eklenmiş fiyatını yaz (fiyat+kdv) 
5. bitir 
  
İsmi 100 kere yazdıran algoritma 
1.başla
2.sayac=0 
3. İsim gir “Kadir”, sayac
4.sayac=sayac+1 
5.eger sayac<101 ise adım 3'e git
6.bitir
| | | Devamı... 0 yorum

Algoritma ve Özellikleri

Algoritma, belirli bir problemi çözmek veya belirli bir amaca ulaşmak için çözüm yolunun adım adım tasarlanmasıdır. Bir problemi tanımlama, nedenini açıklama, çözümü için alternatif yolları belirleme ve bu yollar arasından en uygun olanı uygulama süreçlerinin tamamı “problem çözme” olarak adlandırılır. Algoritma, bir problemi çözmek için gerekli yolun basit, net ve belirli bir sıraya göre tasarlanmış hâlidir. Matematikte ve bilgisayar biliminde bir işi yapmak için tanımlanan, bir başlangıç durumundan başladığında, açıkça belirlenmiş bir son durumunda sonlanan, sonlu işlemler kümesi algoritma içinde yer alır. Genellikle bilgisayar programlamada algoritma sıklıkla kullanılır ve tüm programlama dillerinin temeli algoritmaya dayanır. Aynı zamanda algoritma tek bir problemi çözecek davranışın, temel işleri yapan komutların veya deyimlerin adım adım ortaya konulmasıdır ve bu adımların sıralaması algoritmada oldukça önemlidir. Bir problem çözülürken algoritmik ve sezgisel (herustic) olmak üzere iki yaklaşım vardır. Algoritmik yaklaşımda da çözüm için olası yöntemlerden en uygun olan seçilir ve yapılması gerekenler adım adım ortaya konulur. Algoritmayı belirtmek için; metinsel olarak düz ifade ve akış diyagramı olmak üzere 2 yöntem kullanılır. Algoritmalar bir programlama dili vasıtasıyla bilgisayarlar tarafından işletilebilirler. 
Bilinen ilk algoritma, el-Hârizmî tarafından "Hisab el-cebir ve el-mukabala" kitabında sunulmuştur. Algoritma sözcüğü de el-Hârizmî'nin isminin Avrupalılarca telaffuzundan doğmuştur. Çok çeşitli algoritma şekilleri vardır. Arama algoritmaları, bellek yönetimi algoritmaları, bilgisayar grafiği algoritmaları, çizge algoritmaları, genetik algoritmalar, kripto algoritmaları, bilgisayar ve matematik algoritmaları, optimizasyon algoritmaları, sıralama algoritmaları,  veri sıkıştırma algoritmaları, öklid algoritması gibi çeşitli algoritma tipleri vardır. algoritma, herhangi bir görevi tamamlamanın temel yolunu ve kurallarını özetleyen haritalardır.
Algoritmaların kullanımı hayatın her alanında giderek yaygınlaşmaktadır. İş yerlerindeki performans değerlendirmelerinden bankaların kredi işlemlerine, reklam ve satış önerileri, algı yönetimi, sosyal medya platformları ve güvenlik sistemleri gibi hayatın her alanında algoritmalar etkili olmaktadır. Algoritmik düşünme veya bir sorunu çözmek için net adımlar tanımlama yeteneği, yalnızca teknolojide değil hayatın hemen her alanında önemli bir avantajdır. Farkında olmasak bile, algoritmaları ve algoritmik düşünmeyi her zaman hayatımızda kullanırız. Hayatımızda karşılaştığımız tüm problemelrin çözümünde belli basamaklar eşliğinde çeşitli çözüm adımları ve karmaşık algoritmaları farkında olmadan uygularız. Bütün bu düşünce biçimlerinin yazıya dökülerek belli bir sistem halinde sunulması, bilgisayar programcılığının temelini oluşturmuş ve gittikçe yaygın hale gelmiştir.
ÖRNEK: Klavyeden girilecek iki sayıyı toplayıp sonucu ekrana yazacak programın algoritmasını yazın
1.adım: BAŞLA
2.adım: A sayısını oku (ya da OKU:A) [klavyeden bir değer okunur ve A adlı değişken içinde saklanır]
3.adım: B sayısını oku (ya da OKU: B) [klavyeden bir değer okunur ve B adlı değişken içinde saklanır]
4.adım: TOPLAM = A + B işlemini yap [A ve B değişkenlerindeki değerler toplanır. Elde edilen sonuç TOPLAM adlı değişkende saklanır]
5. adım: TOPLAM değerini ekrana yaz (ya da YAZ: TOPLAM)
6. adım: BİTİR (algoritma sonlandırılır. SON, DUR ifadeleri de kullanılabilir.)
Bir algoritmada, her adım mutlaka belirleyici olmalıdır. Hiçbir şey şansa bağlı olmamalıdır. Belirli bir sayıda adım sonunda algoritma kesinlikle sonlanmalıdır.Algoritmalar karşılaşılabilecek tüm ihtimalleri ele alabilecek şekilde detaylı olmalıdır. Algoritmada değişken kavramı önemlidir. Dışarıdan alınan veya bir işlem sonucunda elde edilen verilerin saklandığı bellek (hafıza) birimlerine değişken denilir.Bu bellek birimlerine (değişkenlere) belirli bir isim verilir ve daha sonra bu isimle bellek birimi (değişken) içinde bulunan değer tekrar tekrar kullanılabilir.Değişken isimleri verilirken Latin alfabesindeki A-Z veya a-z arası büyük ve küçük harflerden (Türkçe karakter içermeyen (ş,ğ,ı,ö,ü,ç) 26 harf ve 0-9 rakamları ve algoritma operatörleri (+,-,*, ^, ) kullanılabilir.
Bazı değer atama örnekleri aşağıdaki gibi sunulmuştur: 
SAYI = 2 [SAYI değişkeninin içine 2 değerini koy] 
SAYI = 5 [SAYI değişkeninin içine 5 değeri atandı. Bir önceki değer olan 2 silindi] 
SAYI = SAYI + 1 [SAYI değişkenin içindeki değer 5’tir. Eşitliğin sağ tarafındaki toplama işlemi yapılırsa 5 + 1 = 6 sonucu elde edilir. Elde edilen toplama işlem sonucu yine SAYI değişkenine atanmıştır. SAYI değişkeninin yeni değeri 6 olmuş ve eski değer olan 5 silinmiştir.] 
TOPLAM = SAYI + 5 [Eşitliğin sağ tarafındaki işlem sonucu 6 + 5 = 11 olarak bulunur. Elde edilen 11 sonucu TOPLAM adlı değişkene aktarılır. TOPLAM değişkeninin değeri artık 11 olmuştur.]
 
 
Matematiksel algoritma operatörleri: 
Toplama a + b 
Çıkarma a - b 
Çarpma a * b 
Bölme a / b 
Üs alma a ^ b 
Mod alma a % b (bir sayının başka bir sayıya bölümünden kalanı verir.
Değişkenlere değer atama a=5 Örneğin burada a = 5 denildiğinde bu, “5 değerini a değişkenine ata” anlamına gelir.
 
Matematiksel işlemler içeren kümenizin içindeki matematiksel işaretlerin bir işlem önceliği vardır. İşlem Önceliği Sırası: 
1. Parantezler ( ) 
2. Üs alma a ^ b 
3. Çarpma ve bölme a * b veya a / b  
4. Toplama ve çıkarma a + b veya a - b 
 
Karşılaştırma Operatörleri:Bu operatörler kullanılarak değişkenler ya da sabit değerler arasında yapılan karşılaştırmalar doğru ya da yanlış şeklinde bir sonuç döndürür. Örneğin 5 > 8 ifadesi yanlış sonucunu döndürür. 3 <= 6 ifadesi doğru sonucunu döndürür.  
Karşılaştırma Operatörleri: 
Eşittir == 
Eşit değildir != (ya da <> kullanılabilir.) 
Büyüktür >  
Küçüktür < 
Büyük eşittir >=  
Küçük eşittir <=
Değil ! 
İşlem gruplama ()
 
Mantıksal Operatörler: Programlarda, birden fazla karşılaştırma ifadesi bir anda kullanılmak istenebilir. Bu gibi durumlarda mantıksal ifadeler kullanılması zorunludur. 
VE  &&  
VEYA  | | 
Mantıksal önermelerde matematikteki mantık kuralları geçerlidir. VE ile birleştirilmiş ifadelerde eğer bütün ifadelerden ayrı ayrı 1 değeri dönüyorsa birleştirilmiş ifadeden de 1 değeri döner. Geri kalan durumlarda 0 sıfır değeri döner. VEYA ile birleştirilmiş ifadelerde en az bir ifadeden 1 değeri dönüyorsa birleştirilmiş ifadeden de 1 değeri döner. Bütün ifadelerden 0 değeri dönüyorsa birleştirilmiş ifadeden de 0 değeri döner. 
 
Örneğin; (5>6 && 2<=7) şeklinde kurulan bir mantıksal önermede;
&& → VE anlamına gelir
5>6 → Bu yazılan yanlış olduğundan ifadeden yanlış sonucu (0) döner.
2<=7 → Bu ifadeden doğru (1) sonucu döner.
Sonuç olarak bu ifade (yanlış VE doğru) ya da (0 VE 1) halini alır. Mantıkta verilen doğruluk tablosuna göre  (0ve1) sonucu bu ifadeden 0 (yanlış) sonucu döner.
 
Örneğin; A=5, B=18 olsun. Bu sayılara göre aşağıdaki durumları inceleyelim.
(A== B && B > 5) → 1 (5=18 VE 18>5 olduğundan 0 VE 1 yanlış)
(2 <> A || B > 15) → 1 (doğru)
(4 > 6 || B <> 18 || A > 3) → 1 (doğru)
(A == 5 && B >= 18 && A==2) → 0 (yanlış)
(B < 20 && A < 6 && 2+A == 3) → 0 (yanlış)
(A == B || B < 5) → 0 (yanlış) 

Sözde kod, bilgisayar bilimleri alanında algoritmalar ve programlar oluşturulurken ve aktarılırken kullanılan, günlük konuşma diline benzer ve belli bir programlama dilinin detaylarından uzak anlatımlardır. Programın yapısının ve çalışma mantığının yüksek seviyeli bir biçimde, gerektiği yerde doğrudan doğal dil cümleleriyle, ama yine de bir program yapısı ve akışı içinde anlatılmasıdır. Böylelikle sözde kodu okuyan ya da yazan birisi, programlama dillerinin sözdizim detaylarına dikkat etmek zorunda kalmadan, programın ve algoritmanın çalışma mantığını düşünebilir. 
Sözde kod için önceden üzerinde karar kılınmış kesin bir sözdizim yoktur. Sözde kod ile bir programı anlatan kişi, uygun gördüğü programlama dili yapılarının ve işlevlerinin sözde kod içinde bulunduğunu varsayabilir. Amaç, derleme işleminden hatasız çıkacak bir program oluşturmak değil, programın çalışma mantığını anlamak olduğu için, sözde kod yazarken uygun görülen herhangi bir soyutlama düzeyi kullanılabilir. Bazı sözde kodlar programlama dilleriyle büyük ölçüde örtüşürken, bazıları sadece program biçiminde yazılmış düz yazı olabilir. 
Algoritmada akış diyagramlarından yararlanılarak çözüm basamakları adımlandırılır. Akış diyagramı, algoritmaların şekil ve sembollerle ifade edilmesidir. Akış şemasında her adım birbirinden farklı anlamlar taşıyan şekillerden oluşur ve adımlar arasındaki ilişki oklar ile gösterilir. Kodlanacak programın akış şemasının oluşturulması, sürecin daha kolay çözümlenmesine yardımcı olur. 
| | | | Devamı... 0 yorum

En Çok Okunan Yazılar

Aşağıdaki Yazılar İlginizi Çekebilir!!!