İçeriğe atla

toprak.run/yazılar/retro/bilgisayar-ogrencileri-icin-problemler

Retro

Bilgisayar Öğrencileri için Problemler

ASIL METİN Şubat 1955·Computers and Automation, Şubat 1955, s. 6–8·ÇEVİRİ Ağu 2026

John W. Carr, III — Mühendislik Araştırma Enstitüsü, Michigan Üniversitesi, Ypsilanti, Michigan

Michigan Üniversitesi, her öğrencinin MIDAC'a (Michigan Digital Automatic Computer) erişebildiği Yüksek Hızlı Hesaplamada Yöntemler (M173–174) adlı bir ders veriyor. Birinci yarıyılda ders, sayısal bilgisayarların mantıksal yapısı, sayı sistemleri, giriş-çıkış ve programlama üzerinde yoğunlaşıyor; ikinci yarıyılda ağırlık modern sayısal analize kayıyor.

Birinci yarıyılda her öğrenciye, yarıyıl bitmeden çözmesi gereken bir dönem problemi veriliyor. Öğrenci problemini aşağıdaki listeden seçiyor. Liste, sayısal bilgisayarların karmaşık işleri kendiliğinden yürütmedeki mantıksal gücünü öne çıkarmak üzere hazırlandı. Bu yüzden eğitim derslerinde, yeni programcıları yetiştirmede ya da otomatik hesaplamanın gücünü göstermede işe yarayabilirler.

Yönergeler

Aşağıdaki problemler notunuzun önemli bir bölümünü oluşturacaktır. Problemler, geçmişini ve yaşanan güçlükleri anlatan yazılı bir raporla birlikte tamamlanmalı ve final sınavı tarihinde teslim edilmelidir.

Her öğrenci listeden bir problem seçmelidir. Öğretim elemanı kabul ederse yerine başka bir problem seçilebilir.

1. Nim

MIDAC'ın Nim oynaması için bir program tasarlayın. MIDAC oyunun nasıl oynanacağına dair yönergeleri yazdıracak, ilk oyuncunun kim olacağını soracak, girilecek değerleri isteyecek, oyunun akışını hamle hamle yazdıracak ve oyunun bitişiyle kazananı gösterecek. (1)

2. Tic-Tac-Toe

MIDAC'ın "Tic-Tac-Toe" oynaması için program yazın. MIDAC oyunun nasıl oynanacağını yazdırır, ilk oyuncuyu sorar, girilecek değerleri ister, oyunun akışını yazdırır ve bitişle kazananı gösterir. (2)

3. Makine Denetimi

MIDAC için standart alışılmış biçimde alt programlar tasarlayın; önce Floating Address biçiminde kodlayıp sınayın, sonra Present Address Relative biçimine çevirin. Aşağıdakilerin ikisini de yapın:

a. Taşma olduğunda sayacı, komutu ve α ile β'nın içeriğini yazdıran alt program. Alt programa, taşma nedeniyle aktarım olduğunda sıfır konumundan girilecek, ama alt program rastgele bir konumda saklanacak.

b. Taşma koşulunu (000 hücresi) normal ya da durdurma durumuna ayarlayan alt program — a maddesiyle birleştirilmiş olarak; böylece makine klavyeden bir sözcük istedikten sonra yerine koyma doğru yapılacak.

4. Sıralama

Manyetik tamburda saklanan rastgele bir sayı dizisini sıralamak için bir yordam tasarlayın. Sayıları küçük bloklar hâlinde çağırın, sıralayın, sonra blokları daha büyük bloklar hâlinde birleştirin. (3)

5. Makine Denetimi

Problem 3'teki gibi MIDAC için alt programlardan oluşan bir program yazın; şunları yapsın:

a. Sözcük sayısı ile başlangıç adresi 510 ve 511 konumlarına (ya da tek bir sözcüğe) gönderildiğinde, bu sözcükleri bir bellek toplamıyla birlikte tambura aktarın ve bellek toplamını tamburda fazladan (son) sözcük olarak saklayın.

b. Sözcük sayısı ile başlangıç adresi 510 ve 511'e (ya da tek bir sözcüğe) gönderildiğinde, bu sözcükleri bir bellek toplamıyla birlikte tamburdan çağırın ve daha önce tambura gönderilmiş bellek toplamıyla karşılaştırın. İkisi aynıysa devam edin; değilse en çok 5 kez olmak üzere tamburdan yeniden çağırın. 5 hatalı aktarımdan sonra bir hata durdurması yazdırın. Tümü sıfır olan hücrenin içeriğini geri yükleyin.

c. Yukarıdaki a ve b yordamlarını tek bir bağlantılı yordamda birleştirin.

6. Makine Denetimi

Problem 3'teki gibi MIDAC için iki eş alt programdan oluşan bir program yazın; şunları yapsın:

a. Tek tek karakterlerden oluşan bir diziyi okuyun ve her sözcükte yedi adet altı bitlik karakter olacak biçimde saklayın; son sözcüğe bir tür "dur-etiketi" koyun.

b. Her sözcükte yedi adet altı bitlik karakter olarak saklanmış tek karakter dizisini, "dur-etiketi"nde durarak yazdırın.

7. Masaüstü Hesap Makinesi Benzetimi

Toplama, çıkarma, çarpma vb. işlemleri daktilo tuşlarıyla benzetip MIDAC'ın daktilo klavyeli bir masaüstü hesap makinesi gibi davranmasını sağlayacak bir program yazın. Giriş ve çıkış ondalık çalışsın.

8. Rastgele Sayı Üretimi

Denetim alt programa aktarıldığında 511 konumunda "sözde rastgele" bir ikili sayının belirmesini sağlayacak bir alt program yazın. Sözde rastgele dizinin baştan yeniden başlatılabilmesi için ikinci bir yöntem geliştirin.

9. Para Üstü Verme

Önce MIDAC için bir "para üstü verme yordamı" geliştirin: bir ücret ödenirken madeni para ya da banknot verildiğinde doğru para üstü kalem kalem yazdırılsın. Örneğin beş dolarlık banknotla 17 sentlik ödeme: 4 dolar, bir elli sentlik, bir yirmi beş sentlik, bir nikel, 3 peni.

Sonra bu yordamı genişletin: başlangıçta belirli bir para üstü miktarı verildiğinde makine, belirli bir kupürün tükenme tehlikesini azaltacak biçimde para üstü verecek; tükenirse alternatif para üstü dizilerini yazdıracak.

10. Gelir Vergisi

Yıllık ücret, bakmakla yükümlü olunan kişi sayısı ve stopaj vergisi verildiğinde ve %10 kesinti varsayıldığında, makinenin devlete ödenecek gelir vergisini verdiği bir yordam yazın.

11. Ortalama ve Standart Sapma

En çok 2000 sayıdan oluşan bir dizi verildiğinde bunları tamburda saklayın, ortalamalarını ve standart sapmalarını bulun ve bu iki değeri ondalık olarak yazdırın.

12. İki Yana Yaslı Dizgi

MIDAC'ın iki yana yaslı bir daktiloyu benzetmesini sağlayacak bir program geliştirin: bir satır İngilizce metin girildikten sonra makine, soldan ve sağdan hizalı kenarlar ile sözcükler arasında eşit boşluk verecek şekilde aralıkları ayarlasın.

13. Kodlama

Belirli bir şifreleme yöntemi seçin ve MIDAC'ın İngilizce alıp kodlanmış sonucu yazdırdığı, tersini de yaptığı bir yordam geliştirin.

14. Dil Çevirisi

50 sözcüklük bir Almanca–İngilizce ya da Fransızca–İngilizce sözlük kurun ve MIDAC'ın, iki dilden birinde girilen bir cümle için birebir çeviri vermesini sağlayacak bir program geliştirin.

15. Sembolik Mantık

Önermeler hesabında standart ama karmaşık problemleri çözecek bir program geliştirin. (1)

16. İngiliz Parasıyla Para Üstü

İngiliz para sisteminde kendiliğinden para üstü verecek bir yordam programlayın (iki farthing bir half-penny, iki half-penny bir penny, on iki penny bir shilling, yirmi shilling bir pound eder).

17. Öğrenme

MIDAC'ın "öğrenebildiğini" gösterecek bir yordam geliştirin. Örneğin başlangıçta rastgele bir davranış verildiğinde, makineye "onaylanan" davranış kalıplarını "onaylanmayan"lara yeğlemeyi öğretebilir misiniz? (Kaynak: Oettinger, Philosophical Magazine, 1952.)

18. Morse Kodlama

Standart İngilizce alıp Morse kodu (nokta-çizgi) karşılığını yazdıracak bir program yazın.

19. Müzikal Transpozisyon

Herhangi bir ezgiyi bir tondan belirtilen başka herhangi bir tona aktaracak bir program tasarlayın.

20. Bahis Oranları

Sırayla para yatırıldıkça bir grup atın oranlarını sürekli değiştirecek bir program tasarlayın.

21. Sınırlı Konuşma

MIDAC'ın tek bir konu üzerine (örneğin hava durumu) makul ölçüde tutarlı görünen bir konuşma yapmasını sağlayacak bir program tasarlayın.

⟦Şimdiye dek hiçbir öğrenci 21. problemi denemedi; gerçekten zor bir problem — A. M. Turing'in bir makinenin "düşünmesi" tanımına yaklaşmak için apaçık bir meydan okuma. Yine de sınıf üyeleri arasında çok sayıda yorum ve tartışmaya yol açtı. Birkaç geçici şema şimdiden önerildi.⟧

22. Telefon Santrali Benzetimi

MIDAC'ın otomatik bir telefon santralini benzettiği, "meşgul" sinyalleri verdiği bir program tasarlayın.

23. Nispi Temsille Oylama

Nispi Temsil (Hare-Spence) Sistemi, Öğrenci Meclisi için kampüs oylamalarında kullanılıyor. Bu seçim yönteminin kurallarına göre oyları sayacak bir MIDAC programı tasarlayın.

24. Sözde Rastgele Briç Elleri

Problem 7'deki sözde rastgele sayı yordamını (ya da MIDAC Alt Yordam Kitaplığı'ndaki benzer bir yordamı) kullanarak, sözde rastgele briç eli dizilerini yazdıracak bir yordam tasarlayın.

25. Briç Oynama

MIDAC'ı ilkel bir briç oyunu oynayacak şekilde programlayın: renge uymak, kozlamak, renons yapmamak, "üçüncü elde olabildiğince yüksek oynamak" vb.

26. Zekâ Testiyle Öğrenme

MIDAC'ın "öğrenme" yeteneğini şu biçimde gösteren bir program tasarlayın: MIDAC'a doğru-yanlış türünden bir "zekâ" testi verin (yanıtlar rastgele olsun) ve makineye bir "not" girin. Testi yineleyin ve ikinci bir "not" girin, böyle sürdürün. Makineyi, doğru yanıtlar kümesini "öğrenecek" biçimde yönlendirin.


MIDAC

MIDAC, üç adresli komut koduna ve 45 bitlik temel sözcüğe sahip, sıralı çalışan ikili bir makine. Birincil bellek 512 sözcüklük akustik gecikme hattı belleğinden; ikincil bellek 6.144 sözcüklük sıralı erişimli manyetik tambur alanından oluşuyor. Giriş-çıkış tamamen alfanümerik: fotoelektrik şerit okuyucu ve Flexowriter elektrikli daktilo üzerinden. UNIVAC'takine benzer otomatik bir taşma düzeneği, denetimi kendiliğinden belirli bir konuma (000) aktarıyor. Alt programlar tamburda, alt program değişkenlerinin birincil belleğe doğrudan çağrılmasına imkân veren "şimdiki adrese göreli" biçimde saklanabiliyor. Giriş-çıkış, kayan adresler ve tam giriş çevirisiyle MAGIC (Michigan Automatic General Integrated Computation) sistemi üzerinden yürüyor.

Kolay komut programlaması için, saniyede 30 işlem yapan ikinci bir hesaplama sistemi olan EASIAC de kullanılabiliyor — MIDAC'ın saniyede ortalama 800 işlemine karşılık.

Kaynakça

  1. Bowden, V. B., Faster Than Thought, Pitman, 1953.
  2. Booth, A. D. ve Booth, C., Automatic Digital Calculators, Butterworth, 1952.
  3. Burks, C. W., Herman Goldstine ve John von Neumann, "Preliminary Discussion of the Logical Design of an Electronic Computing Instrument", Army Ordnance Corps.