enflasyonemeklilikötvdövizakpartichpmhp
DOLAR
32,2960
EURO
34,7983
ALTIN
2.409,80
BIST
10.270,25
Adana Adıyaman Afyon Ağrı Aksaray Amasya Ankara Antalya Ardahan Artvin Aydın Balıkesir Bartın Batman Bayburt Bilecik Bingöl Bitlis Bolu Burdur Bursa Çanakkale Çankırı Çorum Denizli Diyarbakır Düzce Edirne Elazığ Erzincan Erzurum Eskişehir Gaziantep Giresun Gümüşhane Hakkari Hatay Iğdır Isparta İstanbul İzmir K.Maraş Karabük Karaman Kars Kastamonu Kayseri Kırıkkale Kırklareli Kırşehir Kilis Kocaeli Konya Kütahya Malatya Manisa Mardin Mersin Muğla Muş Nevşehir Niğde Ordu Osmaniye Rize Sakarya Samsun Siirt Sinop Sivas Şanlıurfa Şırnak Tekirdağ Tokat Trabzon Tunceli Uşak Van Yalova Yozgat Zonguldak
İstanbul
Açık
21°C
İstanbul
21°C
Açık
Salı Açık
25°C
Çarşamba Az Bulutlu
19°C
Perşembe Yağmurlu
17°C
Cuma Az Bulutlu
16°C
SON DAKİKA
12:58 Kumluca Atatürk Stadyumu’nda sona doğru
12:57 68 kuşağının gençlik önderlerinden Deniz Gezmiş, Yusuf Aslan ve Hüseyin İnan, idam edilişlerinin 52. yılında Nilüfer’de iki ayrı etkinlikte anıldı
12:56 Apex Legends: Upheaval’ın Oynanış Fragmanı Yayınlandı!
12:55 Gençlik Kampı ve Eğitim Merkezi’nde Ormanda Matematik Günü etkinliği
12:54 Birol Güven, “Yapay zekâ, bütün yaşamımızı, sizin de mesleğinizi belirleyecek”
12:50 Stokçuluğa 61 milyon TL ceza!
12:43 QNB Finansbank Dijital Köprü Deneyim Noktası Kobilerin Ziyaretine Açıldı
12:36 Başkan Çolakbayrakdar, “Türkiye’ye örnek kentsel dönüşüm gerçekleştiriyoruz”
12:06 Diyanet vekaletle kurban bedellerini açıkladı
11:39 Nilüfer’de “Üç Fidan”a duygu dolu anma
11:38 Dilekler Akdeniz’in masmavi sularında
11:37 Başkan Arı, altyapı arızasının meydana geldiği noktada
11:36 Bilim Konya’yı gururlandıran ödül
11:31 Samsung Galaxy’nin güvenlik ve gizlilik özellikleriyle kişisel bilgiler güvende
11:29 Kaspersky’nin yeni çözümü Kaspersky Extended Detection and Response artık kurumsal altyapılara uygulanabiliyor!
11:10 Efes Selçuk Hıdırellez coşkusunu İsabey Mahallesi’nde düzenlenen şenlikle yaşadı. Efes Selçuk Belediyesi tarafından düzenlenen şenlik coşku ve neşe içinde geçti
11:09 Malezyalı Tur Operatörleri Konya’ya Hayran Kaldı
11:02 Ayvalık Belediyesi Mayıs ayı olağan meclis toplantısı Vural Sineması Nejat Uygur Sahnesi’nde gerçekleştirildi Can Dostlara Yeni Barınak
11:01 Sarma-Davutlar Barajı’nda hedef yılsonu
11:00 Devrimci gençlik önderleri Deniz Gezmiş, Hüseyin İnan ve Yusuf Aslan, idamlarının 52. yılında Buca’da anıldı
TÜMÜNÜ GÖSTER →

Ortaokulda Sorulan Bu Kodlama Sorusunu Çözebilecek misin?

Günümüzde pek çok kişi matematik ve kodlama arasındaki ilişkiyi tam olarak kabul etmese de, başlangıç seviyesinde kodlama gerçekleştirmek için de …

Ortaokulda Sorulan Bu Kodlama Sorusunu Çözebilecek misin?
05.08.2022
167
A+
A-

Günümüzde pek çok kişi matematik ve kodlama arasındaki ilişkiyi tam olarak kabul etmese de, başlangıç seviyesinde kodlama gerçekleştirmek için de temel düzeyde matematik bilgisi gerekiyor. Bu sayede yazılan, yazdığınız veya yazacağınız kodları anlamak ve anlaşılabilir kılmak mümkün oluyor.

İşte bu durumun son örneği, 21 Mayıs’ta gerçekleşen 30. Bilim Olimpiyatları’nda karşımıza çıktı. TÜBİTAK tarafından düzenlenen olimpiyatlarda ortaokullara sorulan kodlama sorusu, sosyal medyada bugün yeniden gündem oldu. Gelin, soruya, çözümüne ve gelen tepkilere bakalım.

İşte tartışma yaratan o temel düzeydeki kodlama sorusu:

Sayfayı hemen kaydırmayın! Önce biraz anlamaya ve burada ne sorulduğunu algılamaya çalışın.

Peki bu sorunun cevabı ne?

Bu sorunun cevabını verebilmek için aslında günümüzde artık herkeste olması gereken temel düzeyde kodlama bilgisine ihtiyacınız var. C yazılım dilinde yazılan yukarıdaki soru, bize aslında matematiksel bir durumu soruyor. Gelin, önce kodu hiç kodlama bilmeyenlerin de soruyu anlaması için satır satır açıklayalım.

main() {…} ne demek?:

Tüm kodumuzu kaplayan bu yapı, aslında bize bu kodun bir fonksiyonu temsil ettiğini gösteriyor. Bir programın yapı taşı olan fonksiyonlar, belirli bir işi yapmak için bir araya getirilen kodlardan oluşuyor. Fonksiyonlar içinde değişkenler ve yapılacak işlemler tanımlanıyor ve bu fonksiyon çalıştırıldığında ortaya bir sonuç çıkıyor. Bu, aslında tüm programlarda yerleşik olan, bir programın çalıştırıldığı anda ilk kez yürüttüğü kodların bulunduğu bir fonksiyondur.

int a = 0;

Her bir fonksiyon içinde değişken tanımladığımızı söylemiştik. İşte bu kod satırı da bize bir değişkeni tanımlıyor. Buradaki ‘int’ ifadesi, tam sayı değerleri temsil eden veri tipini ifade ediyor. Öncelikle değişkenimizin veri tipini kod içerisinde belirttikten sonra bu değişkenimize bir isim veriyoruz. Ardından değişkenimizin değerini programa sunuyoruz, yani diyoruz ki a’yı 0 al.

for (int b = 55; b > 0; a++, b = b – a);

Sorunun cevabı aslında bu satırda çıkıyor. Bu satırda ‘for(…;…;…)’ döngüsünden faydalanıyoruz. Programlamanın en temel yapı taşlarından birisi olan bu döngü sayesinde birbirini tekrar eden işlemleri satır satır yazmak yerine, tek bir satır içinde yazabiliyoruz. Bu döngü olmasaydı, birbirini tekrar eden işlemleri binlerce satır boyunca alt alta yazabilirdik. Örneğin bir ekrana 1’den 1000’e kadar sayı yazdırmak isteseydik, normalde bunların her birini her satırda “1 yaz, 2 yaz, 3 yaz, 4 yaz, 5 yaz…” gibi tekrarlardık.

For döngüsü, parantezlerin içine alınan ve noktalı virgüller ile ayrılan üç farklı durum istiyor. Bunlardan ilkinde döngümüzün başlangıç değerini tanımlıyoruz, sonrasında döngünün devamı için gereken koşulu söylüyoruz ve son olarak her bir döngüde ne yapılacağını anlatıyoruz. Bu üç durumun yazılış sıralaması kesinlikle değişmiyor. Gelin, yukarıdaki soruda yer alan bu üç durumu da açıklayalım.

  • int b = 55

Burada, tıpkı yukarıda yaptığımız gibi tam sayı türünde değişken belirliyoruz ve bu değişkenin adını ‘b’, değerini ise 55 olarak giriyoruz.

  • b > 0

Burada da döngümüze diyoruz ki, bu döngüyü ‘b’ 0’dan büyük olduğu sürece sürdür. “İyi de az önce b’ye 55 dedik, bu döngü sonsuza kadar sürmez mi?” diyor olabilirsiniz. Fakat az sonra yapacağımız işlemde b’nin değerini her bir döngüde değiştireceğiz.

  • a++, b = b – a

Geldik zurnanın zırt dediği yere. Bu satır, kodlamada noktalama işaretlerinin de ne kadar önemli olduğunu gösteriyor. Az önce for döngüsünün üç durum istediğini söylemiştik. Fakat burada aralarında virgül bulunan iki ifade görüyoruz. İşte bu virgül, aslında for döngüsünden iki işlem yapmasını istediğimizi gösteriyor. Virgül ile de üçüncü durumda belirttiğimiz, yapılmasını istediğimiz işlem sayısını artırabiliyoruz.

İlk işlemimizde (a++) programa diyoruz ki ‘a’ sayısını her döngüde 1 artır. Bu sayede ilk döngüde 0 olan ‘a’ önce 1, sonra 2, 3, 4, 5… diye değerlenecek (Binlerce satır kod yazmaktan da böylelikle kurtuluyoruz aslında). Fakat bu değerleme devam etmeden önce programdan bir şey daha istiyoruz: b = b – a.

Bu ifadede programdan istediğimiz şey ise her döngüyle birlikte ‘b’yi al, ‘b’ sayısından ‘a’ sayısını çıkararak yeni sayıyı ‘b’ye ata. Yani ‘b’ sayısının değerini ‘b-a’ yap. Bunu döngümüzün başladığı ana göre ifade ettiğimizde işlem şu şekilde olacak:

  • b = 55 (b) – 0 (a)
  • b = 55

Bu döngü, yapılan işlemler sonucunda son çıkan ‘b’ değişkeni 0 olana kadar devam edecek. Her bir yeni döngüde de bir önceki döngüde belirlenen ‘b’ değişkenini ele alacak. Yani birinci döngüde b = 55 olurken, ikinci döngüde b = 54 olacak.

printf(“%d”, a)

Bu komut satırında ‘printf’ fonksiyonunu kullanarak programa, konsola bir ifade yazmasını söylüyoruz. ‘%d’ ile yazacağı bu ifadenin bir tam sayı olacağını ve bu tam sayının da ‘a’ olacağını ifade ediyoruz.Bu komut satırı, ancak ve ancak yukarıda yer alan döngünün sonlanmasıyla birlikte, döngü sonucunda oluşan değerleri ele alarak çalışacak. Yani ‘b’, 0’a ulaşmadığı sürece program hiçbir şey yazdırmayacak.

Kodu açıkladık, sıra çözümde:

Şimdi gelelim çözüme. Döngünün her bir döngüde yapacağı işlem ve sonuçları şu şekilde olacak:

  • b = 55 – 0 => b = 55, a’yı 1 artır.
  • b = 55 – 1 => b = 54, a’yı 1 artır.
  • b = 54 – 2 => b = 52, (a sürekli artıyor)
  • b = 52 – 3 => b = 49,
  • b = 49 – 4 => b = 45….

Sorunun cevabı, yani döngünün vereceği son cevap ve döngüyü durduracağı son sayı, b’nin 0’a eşitlenmesi durumunda ortaya çıkacak. Peki döngü sonunda çıkan ‘b’nin sıfırlanması için ne gerekiyor? Elbette ‘a’ sayısına eşit olması. Bu durum da ancak a 10’a ulaştığında gerçekleşiyor:

  • b = 19 – 9 => b = 10
  • b = 10 – 10 => b = 0

Döngümüz, ‘b’ 0 olduğunda dur dediğimizden dolayı artık burada sonlanıyor. Döngü sonucunda ‘b’nin yeni değeri 0, ‘a’nın yeni değeri ise 10 olarak tanımlanıyor. Program, artık bir sonraki kod satırına, yani ‘printf()’ satırına geçiyor ve burada ‘a’ değerini bizlere yazıyor:

  • Cevap: 10.

Tabii tüm bu işlemi yapmak için programın gittiği adımlardan gitmek gerekmiyor. İşte matematik ve anladığını aktarma becerileri de burada devreye giriyor. Bu kod, bir matematik sınavında sorulsaydı aslında şu şekilde olacaktı:

  • 1’den başlayan ardışık sayıların toplamı, en son hangi sayıyı toplama dahil ettiğinizde toplam 55’e ulaşıyor?

Bu sorunun matematiksel cevabı da n(n+1)/2 = 55’in çözümü olacaktı. Burada denklemi karşılayan tek değer de 10 idi.

Soruya gelen tepkiler de bu şekildeydi:

  • Bir Ekşi Sözlük kullanıcısı da aslında sorunun önemini çok iyi şekilde şöyle anlatıyor:

ETİKETLER: , , , ,
Yorumlar

Henüz yorum yapılmamış. İlk yorumu yukarıdaki form aracılığıyla siz yapabilirsiniz.