Bölüm 1.5: Hesaplama ve Hesaplamalı Düşünme
Giriş
Öğrenme Çıktıları
Verinin kurallara göre işlenmesini açıklamak.
Turing makinesinin çalışmasını adım adım izlemek.
Bildirimsel ve buyurgan bilgiyi ayırt etmek; Öklid algoritmasını izlemek.
Ayrıştırma, örüntü, soyutlama ve algoritma tasarımını uygulamak.
Giriş
Hesaplama
Giriş
Hesaplamanın Yapı Taşları
Nicelikler ve ilişkiler üzerinde işlem.
Koşulların doğru veya yanlış değerlendirilmesi.
Problemin temsil edilen girdileri ve ara sonuçları.
İşlemlerin sonlu ve düzenli sırası.
Adımları fiziksel olarak yürüten sistem.
Algoritmayı bilgisayara ifade etme aracı.
Bilgisayar Bilimi
Bilgisayar Bilimi
Bilgisayar bilimi yalnızca araç kullanmayı değil, bilginin nasıl temsil edildiğini ve problemlerin nasıl çözülebileceğini inceler.
Gereksiz ayrıntıları gizleyerek önemli yapıya odaklanmak.
Çözüm adımlarını tasarlamak ve analiz etmek.
Donanım ve yazılımın birlikte çalışmasını anlamak.
Teknolojinin etkilerini, güvenliğini ve etiğini değerlendirmek.
Bilgisayar Bilimi
Teknoloji ve Sorumluluk
Farklı kullanıcıların teknolojiye eşit biçimde erişebilmesi.
Kişisel verilerin amaçla sınırlı ve güvenli kullanılması.
Veri ve algoritmaların ayrımcı sonuç üretmemesi.
Enerji, donanım ömrü ve elektronik atığın dikkate alınması.
Tarih
Hesaplama Tarihinde Dönüm Noktaları
Tarih
Sabit ve Depolanan Program
| Yaklaşım | Program nasıl belirlenir? | Esneklik |
|---|---|---|
| Sabit programlı | Makinenin fiziksel düzeni veya özel mekanizması | Belirli görev |
| Depolanan programlı | Komutlar bellekte veri gibi saklanır | Program değiştirilerek farklı görevler |
| Genel amaçlı | Çok farklı programları çalıştırabilen mimari | Geniş uygulama alanı |
Hesaplama Modelleri
Evrensel Turing Makinesi
Turing makinesi, algoritmik hesaplamayı açıklamak için kullanılan soyut bir modeldir.
- Başlık bir simgeyi okur, yeni simge yazabilir ve sağa veya sola hareket eder.
- Geçiş kuralı mevcut durum ve simgeye göre sonraki adımı belirler.
- Evrensel Turing makinesi, bantta verilen başka bir makinenin kurallarını okuyup onu taklit eder: depolanan program fikrinin kuramsal temeli.
Hesaplama Modelleri · Adım adım
Turing Makinesi Adım Adım: 111 + 1
Başlangıç: bantta 111 (ikili 7) var, başlık en sağdaki basamakta, durum q0. Amaç: sayıya 1 eklemek.
Okunan 1, durum q0 → kural 1: 0 yaz, başlık sola kayar (elde 1 devam ediyor).
Okunan 1, durum q0 → kural 1: 0 yaz, başlık sola kayar (elde 1 devam ediyor).
Okunan 1, durum q0 → kural 1: 0 yaz, başlık sola kayar (elde 1 devam ediyor).
Okunan □, durum q0 → kural 3: 1 yaz, makine durur. Bant: 1000 = 8. Her adımı yalnızca (durum, okunan simge) belirledi.
Hesaplama Modelleri
Bilgisayarların Sınırları
Büyük girdiler bazı algoritmaları pratik olmaktan çıkarabilir.
Veri ve ara sonuçlar sonlu depolama kullanır.
Her işlem ve veri aktarımı enerji tüketir.
Bazı problemler için her durumda sonuç veren algoritma yoktur (ör. durma problemi).
Eksik veya hatalı girdi doğru sonucu engeller.
Program gerçek dünyanın yalnızca seçilmiş özelliklerini temsil eder.
Bilgi ve Algoritma
Bilgi Türleri
Neyin doğru olduğunu veya bir kavramın ne olduğunu açıklar.
Bir üçgenin iç açıları toplamı 180°'dir.Bir sonuca nasıl ulaşılacağını adımlarla açıklar.
Bir sayının karekökünü yaklaşık hesapla.Bilgi ve Algoritma · Adım adım
Buyurgan Bilgi: Karekökü Yaklaşık Bulma (x = 25)
Karekökü aranan sayı x = 25.
Kaba bir başlangıç tahmini: tahmin = 1.
Hata |1² − 25| = 24 → > 0,01: devam.
1. tur: tahmin = (1 + 25 / 1) / 2 = 13. Tahmin ile x/tahmin’in ortalaması alınır.
Hata |13² − 25| = 144 → > 0,01: devam.
2. tur: tahmin = (13 + 25 / 13) / 2 ≈ 7,462. Tahmin ile x/tahmin’in ortalaması alınır.
Hata |7,462² − 25| ≈ 30,67 → > 0,01: devam.
3. tur: tahmin = (7,462 + 25 / 7,462) / 2 ≈ 5,406. Tahmin ile x/tahmin’in ortalaması alınır.
Hata |5,406² − 25| ≈ 4,225 → > 0,01: devam.
4. tur: tahmin = (5,406 + 25 / 5,406) / 2 ≈ 5,015. Tahmin ile x/tahmin’in ortalaması alınır.
Hata |5,015² − 25| ≈ 0,1527 → > 0,01: devam.
5. tur: tahmin = (5,015 + 25 / 5,015) / 2 ≈ 5,00002. Tahmin ile x/tahmin’in ortalaması alınır.
Hata |5,00002² − 25| ≈ 0,00023 → ≤ 0,01: yeterince yakın, dur.
Sonuç yazılır: ≈ 5,0000. 5 turda gerçek değere (5) çok yaklaştı: “nasıl bulunur” bilgisi = buyurgan bilgi.
x = 25
tahmin = 1
while |tahmin * tahmin - x| > 0.01
tahmin = (tahmin + x / tahmin) / 2
yaz(tahmin)Bilgi ve Algoritma
Öklid Algoritması
Algoritma, bir problemi sonlu ve açık adımlarla çözen yöntemdir. Bilinen en eski örneklerden biri Öklid’in (MÖ 300 dolayları) algoritmasıdır: iki pozitif tam sayının en büyük ortak bölenini tekrar eden kalan işlemleriyle bulur.
GCD(a, b)
while b ≠ 0
r = a mod b
a = b
b = r
return aBilgi ve Algoritma · Adım adım
Öklid Adım Adım: GCD(48, 18)
GCD(48, 18) çağrılır: a = 48, b = 18. Çubuklar sayıların uzunluğudur.
b ≠ 0 → 18 ≠ 0 → doğru: 1. tur başlar.
r = a mod b = 48 mod 18 = 12: a’dan b uzunluğunda 2 parça çıkar, 12 kalır.
a = b → a = 18. Artık küçük sayı bölünen olur.
b = r → b = 12. Ortak bölen, kalanı da böler; problem küçüldü.
b ≠ 0 → 12 ≠ 0 → doğru: 2. tur başlar.
r = a mod b = 18 mod 12 = 6: a’dan b uzunluğunda 1 parça çıkar, 6 kalır.
a = b → a = 12. Artık küçük sayı bölünen olur.
b = r → b = 6. Ortak bölen, kalanı da böler; problem küçüldü.
b ≠ 0 → 6 ≠ 0 → doğru: 3. tur başlar.
r = a mod b = 12 mod 6 = 0: a’dan b uzunluğunda 2 parça çıkar, 0 kalır.
a = b → a = 6. Artık küçük sayı bölünen olur.
b = r → b = 0. Ortak bölen, kalanı da böler; problem küçüldü.
b ≠ 0 → 0 ≠ 0 → yanlış: döngü biter.
return a → 6. GCD(48, 18) = 6: 48 ve 18, 6 uzunluğundaki parçalarla tam ölçülür. 3 turda bitti.
GCD(a, b) while b ≠ 0 r = a mod b a = b b = r return a
Hesaplamalı Düşünme
Hesaplamalı Düşünme
Hesaplamalı düşünme, problemleri bilgisayarın veya insanın sistemli biçimde çözebileceği yapılara dönüştürme yaklaşımıdır.
Hesaplamalı Düşünme
Ayrıştırma
Büyük problem: bir çevrim içi kayıt sistemi. Tek parça olarak ele almak zor.
Ana alt görevlere bölünür; her birinin girdisi ve çıktısı ayrı tanımlanır.
Gerekirse daha da bölünür. Her yaprak küçük, tek başına yazılıp test edilebilir bir iştir.
- Her alt problem ayrı geliştirilebilir ve test edilebilir.
- Alt problemlerin girdi ve çıktıları açıkça tanımlanır.
- Bağımlılıklar erken fark edilir.
Hesaplamalı Düşünme
Örüntü ve Soyutlama
Üç farklı kayıt türü: öğrenci, personel ve ziyaretçi.
Örüntü tanıma: ad, kimlik no ve e-posta alanları üçünde de tekrar ediyor.
Soyutlama: ortak alanlar tek bir Kişi modelinde toplanır; farklı ayrıntılar yalnızca gereken türde kalır.
Hesaplamalı Düşünme
Algoritma Tasarımı ve Test
- Normal, en küçük, en büyük ve geçersiz girdiler düşünülür.
- Her adımın beklenen durumu ürettiği izlenir.
- Hata bulunduğunda yalnızca belirti değil, temel neden düzeltilir.
Özet
Bölüm Özeti
- Hesaplama, verinin kurallara göre işlenmesidir; aritmetikle sınırlı değildir.
- Depolanan program fikri, komutların bellekte veri gibi saklanmasıyla genel amaçlı bilgisayarı mümkün kıldı.
- Turing makinesi algoritmik hesaplamanın soyut modelidir; her adımı durum ve okunan simge belirler.
- Buyurgan bilgi bir sonuca nasıl ulaşılacağını anlatır; Öklid algoritması bunun tarihsel örneğidir.
- Hesaplamalı düşünme; ayrıştırma, örüntü tanıma, soyutlama ve algoritma tasarımını birleştirir.
- Zaman, bellek, enerji ve hesaplanabilirlik bilgisayarların sınırlarını oluşturur.
Özet
Kontrol Soruları
- Hesaplama neden yalnızca aritmetik değildir?
- Bildirimsel ve buyurgan bilgiye birer örnek verin.
- Sabit programlı ve depolanan programlı makine nasıl ayrılır?
- Turing makinesinde bir sonraki adımı ne belirler?
- Öklid algoritması neden her zaman durur?
- Bir problemi hesaplamalı düşünmenin dört bileşeniyle nasıl ele alırsınız?
Özet
Alıştırmalar
- GCD(84, 36)’yı Öklid algoritmasıyla izleyin; her turda a, b, r değerlerini tabloya yazın.
- Hesap makinesi, çamaşır makinesi kumandası ve akıllı telefonu sabit ya da depolanan programlı olarak sınıflandırın; gerekçesini yazın.
- Bir metro haritası gerçek şehrin hangi ayrıntılarını gizler, hangilerini korur? Bu bir soyutlama olarak neden işe yarar?
- Sayıya 1 ekleyen Turing makinesini bantta 1011 ile (başlık en sağda) çalıştırın; bant hangi değerle durur?
- Karekök yönteminde x = 10 ve tahmin = 1 ile üç tur yapın; tahmin hangi değere yaklaşıyor?
- Bir kütüphane ödünç alma sistemini ayrıştırın: en az dört alt görev ve her birinin girdi/çıktısı; hangi alanlar üye ve personel kayıtlarında ortaktır?
Özet
Kaynaklar
- Wing, Computational Thinking, Communications of the ACM, 2006.
- Cormen ve diğerleri, Introduction to Algorithms.
- Downey, Think Java.
- Sipser, Introduction to the Theory of Computation.