Algoritma ve Programlama Dünyası — Döngüler

Turhan Can Kargın
Kodcular
Published in
5 min readNov 25, 2022

Herkese merhabalar!! Algoritma ve programlama dünyası serisinin bir önceki bölümünde programlama dillerinde Recursive Programlama konusundan bahsettik. Bu yazıdan önceki bölüm olan Algoritma ve Programlama Dünyası — Recursive Programlama yazısını daha okumadıysanız bu linke tıklayarak ulaşabilirsiniz.

Bu yazıda ise programlamanın olmazsa olmazlasından olan for ve while döngülerden bahsedeceğiz. Hadi başlayalım!

Programlamada bazi islemlerin program tarafindan belirlenen bir tekrar sayisi kadar isletilmesi istenilebilir. Bunun gibi durumlarda programlama dilinin izin verdigi döngü yapilari kullanilir. Python dilinde sadece while ve for döngüsü mevcutken, Java ve C++ dillerinde while, do-while ve for olmak üzere üç temel döngü mevcuttur. Döngülerde koşul alanlarına sahiptir ve bu koşul sağlanana kadar düngü devam eder. Döngüler bircok uygulama alaninda kullanildiklarindan problem cözmede oldukça onemli bir yere sahiplerdir. Çok daha az ve daha verimli kod yazilmasini saglarlar. Çok basit bir örnek vermek gerekirse eğer bir dizinin tüm elemanları sırasıyla ekrana yazdırmak istiyorsanız, döngüler olmadan bunları tek tek ekrana yazdırmanı gerekecek fakat döngüler sayesinde bir kaç satır kod ile bir dizinin tüm elemanlarını ekrana yazdırabilirsiniz. Bu bahsettiğimiz örneğin python ile uygulaması aşağıda verilmiştir:

## Döngüsüz yazdırma

liste = [0,1,2,3,4,5,6,7,8,9]

print(liste[0])
print(liste[1])
print(liste[2])
print(liste[3])
print(liste[4])
print(liste[5])
print(liste[6])
print(liste[7])
print(liste[8])
print(liste[9])

## Döngüyle yazdırma

for i in range(len(liste)):
print(liste[i])

Bu yazıda for ve while döngülerini detaylıca işleyeceğiz. Hadi gelin şimdi while döngüsü ile başlayalım:

Kaynak: https://www.enjoyalgorithms.com/blog/fundamentals-of-loop-in-programming-and-algorithms

While:

While döngüsü, yazım standartlari gereği en başta yazılmak üzere parametre olarak sadece kosul cümlelerini kabul eder. While döngüsü için yazılacak kosul ya da kosullar saglandığı sürece içerisindeki komut dizeleri çalistırılır.

Genel yapısı Java ve C++ gibi dillerde şu şekildedir:

while (gerekli koşul) {
işlem1;
işlem2;
işlem3;
.
.
.
.
.
}

Hadi şimdi while döngüsü kullanarak bir örnek yapalım. Bu örnekte kullanıcıdan 5 adet sayı alıp bu sayıların ortalamasını yazdıracağız. Eğer düngüler konusunu bilmiyor olsaydık bu uygulamayı gerçekiestirmemiz için 5 kere ayrı degisken tanimlayip alt alta yazmamiz gerekirdi. Oysa ki döngüler yardimyıla böyle bir problemin çözümü çok daha kolay ve kodun iyilestirilmesi açısından verimli olacaktır.

C++ Örneği:

// read 5 numbers from the keyboard with while loop, take the average and print it

#include <iostream>
using namespace std;

int main()
{
int i = 0;
int sum = 0;
int number = 0;
while (i < 5)
{
cout << "Enter a number: ";
cin >> number;
sum += number;
i++;
}
cout << "The average is: " << sum / 5 << endl;
return 0;
}

Programın çıktısıda şu şekildedir:

Bu uygulamada kaç adet sayı girildiğini kontrol etme açısından ‘i’ isimli bir değişken tanımlanmıştır. Bu sayede 5 adet sayı yazıldığında döngüden çıkabilmemiz sağlanıyor. Aynı zamanda toplam sonucu tutabilmek için ve her gelen sayı kadar üzerine ekleme yapabilmek için ‘sum’ değişkeni tanımlanmıştır. Kullanıcıdana alınan sayılar ise ‘number’ adlı değişkende tutulmaktadır. Döndü her seferinde başa geldiğinde ‘numbe’ adlı değişken yeni girilen sayıya tanımlanır.

For Döngüsü:

For döngüsü diğer bir döngü çeşitidir. Buna ek olarak do-while isimli bir döngü çeşidi daha var fakat bu yazı serisi kapsamında buna değinmeyeceğiz. For düngüsü diğer döngülere nazaran daha derli toplu bir görünüme ve yapiya sahiptir dersek yanlış olmaz. Düzgün artıi ya da azalışa sahip uygulamalarda, daha sade ve kod okunabilirligi rahat oldugu için For döngüsü tercih edilir.

For döngüsünün bu özelliginin nedeni;,sayaç degiskenlerinin tanımlanma islemlerinin, bu değiskenler icin yazilacak koşul ifadelerinin ve artis-azalış operatörlerinin aralarinda noktalı virgül bulundurularak ayni yerde barındırılmasıdır. For döngüsünün genel yapısı aşağıdaki gibidir:

for (sayaç; koşul; sayaç_artış_azalış) {
işlem1;
işlem2;
işlem3;
.
.
.
.
.
}
  • Sayaç: Bu kısımda döngü içerisinde kullanılacak sayaç değişkenleri tanımlanır ve ilk değerleri atananır. Örnek olarak int i = 0; ifadesi bu kısma girilebilir
  • Koşul: While döngüsünde de gördüğümüz gibi döngünün yürütülme koşullarının mantıksal ifadelerle belirtildiği bölümdür. Örnek olarak i < 50; ifadesi bu kısma girilebilir.
  • Sayaç_artış_azalış: Sayaç degiskenleri için yapilan artis ve azalis islemlerinin uygulanacağı bölümdür. Örnek olarak i++ ifadesi bu kısma girilebilir.

Bu işlemlerin tek bir satırda yapiliyor olmasi for döngüsünün en büyük avantajlarından biridir. Dikkat edilmesi gereken en önemli noktalardan biri, bu bölümler için yazilacak kodlar arasinda noktali virgül konmasidir.

Hadi şimdi Java ile basit bir uygulama yapalım. For’un içine iki farklı değişken tanımlayalım ve ilk değişken 10–20 arasında artarken, ikinci değişken 20–10 arası azalsın.

import java.util.Scanner;
public class App {
public static void main(String[] args) {

for (int a=20, b=10; a>=10 && b<=20; a--, b++) {
System.out.println("a = " + a + " b = " + b);

}
}
}

Programın çıktısı şu şekildedir:

İlk sayı 20–10 arası sayıları kapsadığı için ilk koşul ifadesi a ≥ 10 şeklinde ve a değişkeni birer birer azaltılmıştır (a--), diğer bir yandan b değişkeni 10–20 arasında birer birer artacağı için b ≤ 20 ve b++ şeklünde tanımlanmıştır.

Son olarak iç içe döngülerden bahsetmekte fayda var.

İç içe Döngüler:

Programlamada ilerledikçe şunu farkedeceksinizki problemleri bazen tek döngü ile çözmek yetersiz kalır. Bunu hissettiğiniz durumlarda iç içe döngüler kullanmak faydalı olabilir.

Bu tarz döngülerde genellikle içteki döngü ya da döngüler, bir üst kademedeki döngü ya da döngülerden birer parametre alarak çalisirlar. İç içe döngü kullanımı bazen zamansal açıdan pahalı çözümler oluştururlar. Buna rağmen bazı problemlerin çözümünde kullanmakta fayda vardır.

*
**
***
****
*****
******

Hadi şimdi yukarıdaki yıldız karakterinden oluşturuluş üçgen şeklini elde edebileceğimiz bir bir python uygulamasını iç içe döngü kullanarak yapalım.

for i in range(1,7):
for j in range(1,i+1):
print('*',end='')
print()

Programın çıktısı şu şekildedir:

Örnekte görüldüğü gibi içteki düngü dıştaki döngünün değişkenini kendisine parametre olarak almıştır. İçteki döngü 1'den başlayarak, ilk döngünun sayaç desiskeninin aldığı değer kadar dönecektir. İcteki döngü her bir çalismasinda ekrana dıştaki döngünün bulunduğu döngü sayısı kadar * yazıp, ekranda bir satıra geçicektir.

Bu yazıda kısaca programlamada en önemli konularından biri olan döngüler konusunu inceledik. Vakit ayırıp okuduğunuz için teşekkür ederim. Serinin bir sonraki bölümünde görüşmek üzere.

Herhangi bir sorunuz olursa veya benimle iletişim kurmak isterseniz tüm sosyal medya hesaplarım aşağıdaki linkte yer alıyor.

--

--