Cuma, Mart 24, 2023
  • Anasayfa
  • Ekonomi
  • Politika
  • Sağlık
  • Teknoloji
  • Gündem
  • Spor
  • Bilim
  • Anasayfa
  • Ekonomi
  • Politika
  • Sağlık
  • Teknoloji
  • Gündem
  • Spor
  • Bilim
No Result
View All Result
Güncel Haberler - Anlık Haber Merkezi
No Result
View All Result
Home Genel

Ortaokulda Sorulan Bu Kodlama Sorusunu Çözebilecek misin?

by admin
14 Ağustos 2022
in Genel
0
0
SHARES
0
VIEWS
Share on FacebookShare on Twitter

Günümüzde pek çok kişi matematik ve kodlama ortasındaki bağlantıyı tam olarak kabul etmese de, başlangıç seviyesinde kodlama gerçekleştirmek için de temel seviyede matematik bilgisi gerekiyor. Bu sayede yazılan, yazdığınız yahut 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, toplumsal medyada bugün tekrar gündem oldu. Gelin, soruya, tahliline ve gelen yansılara bakalım.

İşte tartışma yaratan o temel seviyedeki kodlama sorusu:

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

Peki bu sorunun yanıtı ne?

Bu sorunun yanıtını verebilmek için aslında günümüzde artık herkeste olması gereken temel seviyede kodlama bilgisine gereksiniminiz var. C yazılım lisanında yazılan üstteki soru, bize aslında matematiksel bir durumu soruyor. Gelin, evvel 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 işlevi temsil ettiğini gösteriyor. Bir programın yapı taşı olan işlevler, makul bir işi yapmak için bir ortaya getirilen kodlardan oluşuyor. İşlevler içinde değişkenler ve yapılacak süreçler tanımlanıyor ve bu işlev ç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 birinci kere yürüttüğü kodların bulunduğu bir işlevdir.

int a = 0;

Her bir işlev 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’ sözü, tam sayı değerleri temsil eden bilgi tipini tabir ediyor. Öncelikle değişkenimizin data tipini kod içerisinde belirttikten sonra bu değişkenimize bir isim veriyoruz. Akabinde değişkenimizin pahasını programa sunuyoruz, yani diyoruz ki a’yı 0 al.

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

Sorunun yanıtı 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 süreçleri satır satır yazmak yerine, tek bir satır içinde yazabiliyoruz. Bu döngü olmasaydı, birbirini tekrar eden süreçleri binlerce satır boyunca alt alta yazabilirdik. Örneğin bir ekrana 1’den 1000’e kadar sayı yazdırmak isteseydik, olağanda bunların her birini her satırda “1 yaz, 2 yaz, 3 yaz, 4 yaz, 5 yaz…” üzere tekrarlardık.

For döngüsü, parantezlerin içine alınan ve noktalı virgüller ile ayrılan üç farklı durum istiyor. Bunlardan birincisinde 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ı katiyetle değişmiyor. Gelin, üstteki soruda yer alan bu üç durumu da açıklayalım.

  • int b = 55

Burada, tıpkı üstte yaptığımız üzere tam sayı çeşidinde değişken belirliyoruz ve bu değişkenin ismini ‘b’, bedelini 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 evvel b’ye 55 dedik, bu döngü sonsuza kadar sürmez mi?” diyor olabilirsiniz. Lakin az sonra yapacağımız süreçte b’nin pahasını 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 değerli olduğunu gösteriyor. Az evvel for döngüsünün üç durum istediğini söylemiştik. Lakin burada ortalarında virgül bulunan iki söz görüyoruz. İşte bu virgül, aslında for döngüsünden iki süreç yapmasını istediğimizi gösteriyor. Virgül ile de üçüncü durumda belirttiğimiz, yapılmasını istediğimiz süreç sayısını artırabiliyoruz.

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

Bu sözde 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 cet. Yani ‘b’ sayısının kıymetini ‘b-a’ yap. Bunu döngümüzün başladığı ana nazaran söz ettiğimizde süreç şu halde olacak:

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

Bu döngü, yapılan süreçler sonucunda son çıkan ‘b’ değişkeni 0 olana kadar devam edecek. Her bir yeni döngüde de bir evvelki 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’ işlevini kullanarak programa, konsola bir söz yazmasını söylüyoruz. ‘%d’ ile yazacağı bu tabirin bir tam sayı olacağını ve bu tam sayının da ‘a’ olacağını ifade ediyoruz.Bu komut satırı, lakin ve fakat üstte yer alan döngünün sonlanmasıyla birlikte, döngü sonucunda oluşan bedelleri ele alarak çalışacak. Yani ‘b’, 0’a ulaşmadığı sürece program hiçbir şey yazdırmayacak.

Kodu açıkladık, sıra tahlilde:

Şimdi gelelim tahlile. Döngünün her bir döngüde yapacağı süreç ve sonuçları şu halde 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 daima artıyor)
  • b = 52 – 3 => b = 49,
  • b = 49 – 4 => b = 45….

Sorunun yanıtı, yani döngünün vereceği son yanıt ve döngüyü durduracağı son sayı, b’nin 0’a eşitlenmesi durumunda ortaya çıkacak. Pekala 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 ötürü artık burada sonlanıyor. Döngü sonucunda ‘b’nin yeni kıymeti 0, ‘a’nın yeni bedeli 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’ kıymetini bizlere yazıyor:

  • Cevap: 10.

Tabii tüm bu süreci yapmak için programın gittiği adımlardan gitmek gerekmiyor. İşte matematik ve anladığını aktarma hünerleri de burada devreye giriyor. Bu kod, bir matematik imtihanında sorulsaydı aslında şu biçimde 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 yanıtı da n(n+1)/2 = 55’in çözümü olacaktı. Burada denklemi karşılayan tek paha de 10 idi.

Soruya gelen yansılar de bu biçimdeydi:

  • Bir Ekşi Kelamlık kullanıcısı da aslında sorunun kıymetini çok uygun formda şöyle anlatıyor:

Tags: DöngüKodProgramSatırSayı
admin

admin

Next Post

Kamu alacaklarında yıllık gecikme faizi yüzde 30

Güncel Haberler - Anlık Haber Merkezi

  • Anasayfa
  • Ekonomi
  • Politika
  • Sağlık
  • Teknoloji
  • Gündem
  • Spor
  • Bilim

Ataşehir escort - Anadolu yakası escort - Anadolu yakası escort - Kadıköy escort - Bostancı escort - Bostancı escort - Ataşehir escort - Ataşehir escort - Kadıköy escort - Ümraniye escort - Ümraniye escort - Ümraniye escort -
SKYPE İRTİBAT -
No Result
View All Result
  • Anasayfa
  • Ekonomi
  • Politika
  • Sağlık
  • Teknoloji
  • Gündem
  • Spor
  • Bilim

Ankara escortescort bahçeşehirBostancı escortAnadolu yakası escortAtaşehir escortAnkara escort bayanankara rus escortAnadolu yakası escortAnkara escortAnkara escortAnkara escortAnkara escortEtlik escorteryaman escortÇankaya escortAtaşehir escortsincan escortKartal Escortkurtköy escortAnkara escortÇankaya Escort