Merhaba herkese. Algoritma eğitimlerimize bu yazımla beraber başlangıç yapıyoruz.

Algoritma Niye Önemli

Algoritma nedirden önce, algoritma niye önemli önce buna bakalım. Bir yazılım geliştiricinin en önemli ilkelerinden biri bir probleme hemen girişmek yerine o probleme dikkatli ve sistematik bir şekilde yaklaşmak olmalıdır. Programcı problemi iyice anlamalı ve olabildiğince küçük parçalara ayırmalıdır. İşte programcının bunu yaptığı evre program yazmanın algoritma evresidir.

Yani algoritma programlamanın temel yapı taşıdır. İşin algoritma kısmını halleden arkadaşlar programlama kısmında çok zorlanmayacaklardır.

Bilgisayar programları aslında sıralı bir şekilde tanımlanmış düzenli birkaç komuttan başka bir şey değildir. Yani biz işin algoritma kısmında bunu yapacağız.

Algoritma Nedir?

Algoritma belirli bir sorunu çözmek için gerekli olan sıralı, mantıksal adımların tümüdür.

Algoritmalar doğal dille yazılabileceği için fazla formal değildir.

Bir algoritma için aşağıdaki ifadeler mutlaka doğrulanmalıdır.

  1. Yazılan her adım son derece belirleyici olmalıdır. Hiç bir şey şansa bağlı olmamalıdır.
  2. 2. Belirli bir adım sonunda algoritma sonlanmalıdır.
  3. Son olarak algoritmalar karşılaşılabilecek tüm ihtimalleri içine alacak kadar kapsamlı olmalıdır.

Bir algoritma yukarıdan aşağıya doğru yazılmış tüm adımları sırayla yapar. Bu bize aslında çok yabancı bir şey değil. Bizler zaten günlük hayatta yaşantımızı bir dizi algoritmaya göre yaşıyoruz ama bunun pek farkında değiliz. Şöyle küçük bir örnek verecek olursak. Okula gitmek için hazırlanan bir öğrenciyi düşünelim.

 

1.Okula gitmek için kalk.

2.Kahvaltını yap.

3.Kıyafetlerini giy.

4.Özel yaptığın bir şey varsa onu yap (saç, boya  gibi :D).

5.Evden çık.

6.Okula doğru yürü.

7.Sınıfa gir.

8.Arkadaşlarına günaydın de.

9.Otur.

10.Dersi dinle.

İşte aslında biz her işimizi bir algoritmik sisteme göre yapıyoruz. Çok yabancı değiliz yani bu ifadeye.

Tabi yazdığım algoritma tamamen algoritma kurallarını sağlamasada olayın gözümüzde canlanması için yazdığım küçük bir örnekti.

İşte bundan sonra belirlediğimiz bir problem için çözüm aşamalarını bu şekilde adım adım yazmaya çalışacağız.

HATIRLATMA:

Şimdi küçük birkaç algoritma yazmaya başlamadan önce daha sonra daha detaylı anlatacağım aritmetiksel ifadelere kısaca değinmek istiyorum.

Matematikte kullandığımız aritmetiksel ifadeler bilgisayar dilinde bilgisayar için bazen aynı şeyi ifade etmiyor. Küçük birkaç değişiklik var.

Mesela matematikte bir işlemin eşitliği için kullandığımız “=” işareti programlamada atama operatörü olarak kullanılır.

 

1.Atama operatörü “=”:

X=2 dediğimde x in 2 ye eşit olduğunu değil x e 2 değerini atadığımızı ifade eder.

Küçük bir örnek

x=2

x=x+2

 

Bu işleme matematiksel olarak bakarsak yanlış bir ifade olduğunu düşünebiliriz. Ama programlamada doğrudur çünkü verilen ifade bir eşitlik ifadesi değil bir atama ifadesidir.

X e önce 2 atanmış daha sonraki adımda x e yine bir atama yapılmış ve x i x+2 değeri atanmış. Ve bu adımdan sonra artık x içinde x+2 değerini tutacaktır. Yani x=4 olmuştur artık bu adımdan sonra.

2.Eşitlik operatörü “==”:

Eşitlik ifadesini söyleyebilmek için ise “==” operatörünü kullanırız.

3.Toplama çıkarma bölme ve çarpma operatörleri aynıdır.

4.Üs Alma İfadesi “^”:

 bu ifadeyi algoritma yazarken şöyle ifade edeceğiz

a^2 + b^2=c^2

5.Karekök alma ifadesi “^1/2”

  ifadesini ise;

X=2*((a*b)^1/2) şeklinde yazacağız.

6.Kalan bulma “%”:

Bir işlemin sonucundan kalanı bulmak isityorsak “%” operatörünü kullanırız.

X=10%6 ifadesi bize sonuç olarak 10 nun 6 ya bölümünden kalan olan 4 sayısını verecektir.

7.Matematiksel işlemlerin öncelik sırası

A)Önce parantez içleri yapılır. (())

B)Varsa üs alma işlemi yapılır. x^2

C)Çarpma ve bölme işlemlerinin toplama ve çıkarma işlemleri üzerinde önceliği vardır.

D)Toplama ve çıkarmanın, çarpma ve bölmenin kendi içlerinde önceliği yoktur.

Hangisi solda ise öncelik onundur. Çünkü program çalışmaya başladığında, işlemleri soldan başlayıp sağa doğru yapmaya başlar.

a*b/d ifadesinde önce çarpma yapılır sonra bölme yapılır.

Bundan sonra konu anlatımına soru çözümleri içinde devam edeceğim.

ALGORİTMA SORULARI

Soru: Klavyeden kullanıcı tarafından girilecek iki sayının toplamını veren algoritmayı yazınız.

Çözüm

  1. Başla
  2. A sayısını oku
  3. B sayısını oku
  4. Sonuç=A+B
  5. Yaz Sonuç
  6. Bitir

 

NOT: Bir algoritma başla şeklinde bir başlangıç ibaresi ile başlayıp Son, Bitir, Dur şeklindeki ifadelerle de biter.

  1. Klavyeden girilen iki sayıdan büyük olandan küçük olanı çıkaran programın algoritmasını yazınız.

Çözüm

  1. Başla
  2. A sayısını oku
  3. B sayısını oku
  4. Eğer A>B ise

Sonuç=A-B değilse Sonuç=B-A

  1. Yaz Sonuç
  2. Dur

 

3.En az üç basamaklı bir tamsayının yüzler basamağındaki rakamı bulup ekranda yazdıran programın algoritmasını yazınız.

Çözüm

  1. Başla
  2. X sayısını oku
  3. X=X/100
  4. X=X%10
  5. Yaz X
  6. Bitir

 

4.Klavyeden girilen bir sayının pozitif negatif veya sıfıra eşit olup olmadığını yazan programın algoritmasını yazınız.

Çözüm

  1. Başla
  2. Oku x
  3. Eğer (x>0) YAZ “Pozitif”
  4. Eğer (x<0) YAZ “Negatif”
  5. Eğer (x==0) YAZ “Sıfır”
  6. Bitir

Çalışma soruları:

 

  1. Klavyeden girilecek bir yılın kaç gün sürdüğünüekrana yazan programın algoritmasını yazınız. 
  2. Kullanıcının girdiği iki sayının karelerinin toplamını görüntüleyen algoritmayı yazınız.
  3. İki tamsayının çarpma işlemini sadece toplama işlemi kullanarak sonucu bulduran algoritmayı yazınız.

NOT: Soruların çözümleri bir sonraki ders yapılacaktır.

Her programcının kendine has bir problem çözme tekniği vardır ve her sorunun birden farklı çözüm yolu vardır. Bu soruların algoritmalarını farklı şekillerde de yazmak mümkündür.

İlk dersin sonuna geldik bir dahaki dersimizde yine buluşmak üzere.


Murat Bilginer
21 Şubat 1992'de doğdum. Endüstri Mühendisi olarak lisansımı 2016 yılında tamamladım. Industryolog Akademi - NGenius oluşumlarının kurucusuyum. Şu anda kendi şirketim Brainy Tech ile Web ve Mobil Geliştirme, AWS, Google Cloud Platform Sistemleri için DevOps, Big Data Analiz ve Görselleştirme hizmetleri sunmakta ve Online Eğitimler vermekteyiz.