← Computers & Automation

Bilgisayar Öğrencileri için Problemler

B
Bilinmeyen Yazar
1955 · Computers and Automation

John W. Carr, III

Bir Bilgisayar Aracılığıyla Konuşulan Seslerin Tanınması

Andrew D. Booth

Yeni Bilgisayar NORC’un Önemi

W. J. Eckert

The Finan-Seer

E. L. Locke

Bir Kaza Sigortası Şirketinde Otomasyona Yaklaşım

Otomatik Bilgisayarlar Listesi

(kümülatif)

Carlo O. Orkild

Sihirli Beyinler için Sinir Uçları

Bilgisayar Öğrencileri için Problemler

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

Michigan Üniversitesi, her öğrencinin MIDAC’a (Michigan Digital Automatic Computer) erişimi olduğu Yüksek Hızlı Hesaplamada Yöntemler (M173–174) adlı bir ders vermektedir. Birinci yarıyılda ders, dijital bilgisayarların mantıksal yapısı, sayı sistemleri, giriş-çıkış ve programlama üzerinde yoğunlaşır. İkinci yarıyılda ise vurgu modern sayısal analiz üzerindedir.

Birinci yarıyılda her öğrenciye, yarıyıl sonundan önce çözülmesi gereken bir dönem problemi verilir. Öğrenci, problemi aşağıdaki listeden seçebilir. Bu liste, dijital bilgisayarların karmaşık problemleri otomatik olarak yerine getirmedeki mantıksal gücünü vurgulamak üzere hazırlanmıştır. Bu nedenle, eğitim kurslarında, yeni programcıların yönlendirilmesinde ya da otomatik hesaplamanın gücünü göstermede yararlı olabilirler.

Yönergeler

Aşağıdaki problemler notunuzun önemli bir bölümünü oluşturacaktır. Problemler, geçmişi, karşılaşılan güçlükleri vb. içeren yazılı bir raporla birlikte tamamlanmalı ve final sınavı tarihinde teslim edilmelidir.

Her öğrenci listeden bir problem seçmelidir. Öğretim elemanı tarafından kabul edilirse, 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 ilişkin yönergeleri yazdıracak, ilk oyuncuya ilişkin kararı soracak, girilecek değerleri isteyecek, oyunun devam eden hamle dizisini yazdıracak ve oyunun bitişini ve kazananı gösterecektir.

2. Tic-Tac-Toe

MIDAC’ın Tic-Tac-Toe oynaması için program yazın. MIDAC oyunun nasıl oynanacağına ilişkin yönergeleri yazdırır, ilk oyuncuya ilişkin kararı sorar, girilecek değerleri ister, oyunun devam eden hamle dizisini yazdırır ve oyunun bitişini ve kazananı gösterir.

3. Makine Denetimi

MIDAC için standart geleneksel biçimde alt programlar tasarlayın; önce Floating Address biçimiyle kodlayıp test edin, daha sonra Present Address Relative biçimine aktarın. Listelenenlerin her ikisini de yapın:

a.

Taşma (overflow) oluşması durumunda sayaç, komut ve A ile Q’nun içeriklerini yazdıran alt program.

Alt programa, taşma nedeniyle transfer yapıldığında sıfır konumundan girilecek, ancak rastgele bir konumda saklanacaktır.

b. Taşma koşulunu (000 hücresi) normal ya da durdurma (halt) durumuna ayarlayan alt program ([0.] ile birleştirilmiş), böylece makine klavyeden bir sözcük istedikten sonra uygun ikame yapılacaktır.

4. Sıralama

Manyetik tambur üzerinde saklanan rastgele bir dijital sayı dizisini sıralamak için bir yordam tasarlayın. Sayıları daha küçük bloklar halinde çağırın, sıralayın, ardından blokları daha büyük bloklar halinde birleştirin. (3)

5. Makine Denetimi

Problem 3’teki gibi MIDAC için alt programlara yönelik bir program yazın ve aşağıdakileri sağlayın:

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

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

c. Yukarıda a. ve b.’de tanımlanan her iki yordamı da tek bir bağlantılı yordam içinde birleştirin.

Bilgisayar Öğrencileri için Problemler

6. Makine Denetimi

11. Ortalama ve Standart Sapma

Problem 3’teki gibi MIDAC için iki eş alt programdan oluşan bir program yazın; aşağıdakileri yerine getirsin:

a. Tek karakterlerden oluşan bir diziyi okuyun ve bunları bir sözcüğe yedi adet altı bitlik karakter olacak biçimde saklayın; son sözcüğe bir tür “dur-etiketi” yerleştirin.

b. Bir sözcüğe yedi adet altı bitlik karakter olarak saklanan tek karakter dizisini, “dur-etiketi”nde durarak yazdırın.

7. Masaüstü Hesap Makinesi Benzetimi

Toplama, çıkarma, çarpma vb. işlemleri benzetmek için daktilo tuşlarını kullanarak, MIDAC’ın daktilo klavyeli bir masaüstü hesap makinesi gibi davranmasını sağlayacak bir program yazın. Giriş ve çıkışın ondalık sistemde çalışmasını sağlayın.

8. Rastgele Sayı Üretimi

Denetim alt programa aktarıldığında 511 konumunda “sözde rastgele” bir ikili dijital 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; böylece bir ücret ödenirken bir madeni para ya da banknot verildiğinde, doğru para üstü kalem kalem yazdırılsın. Örneğin, beş dolarlık banknottan 17 sent: 4 dolar, bir elli sentlik, bir yirmi beş sentlik, bir nikel, 3 peni.

Yukarıdaki yordamı, başlangıçta verilen bir para üstü miktarı için makinenin, belirli bir kupürün tükenme tehlikesini azaltacak biçimde para üstü verecek ya da tükenme olursa alternatif para üstü dizilerini yazdıracak şekilde genişletin.

10. Gelir Vergisi

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

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

12. Yaslanmış Yazım

Bir İngilizce metin satırı girildikten sonra MIDAC’ın, soldan ve sağdan hizalı kenarlar ve sözcükler arasında eşit boşluk sağlayacak biçimde aralıkları ayarlayarak yaslanmış bir daktiloyu benzetmesini sağlayacak bir program geliştirin.

13. Kodlama

Belirli bir kriptografik şifreleme yöntemi seçin ve MIDAC’ın İngilizceyi kabul edip kodlanmış sonucu yazdıracağı ve tersini de yapacağı bir yordam geliştirin.

14. Dil Çevirisi

50 sözcüklük bir Almanca–İngilizce ya da Fransızca–İngilizce sözlük oluşturun ve MIDAC’ın bir ya da diğer dilde girilen bir cümle için birebir bir çeviri vermesini sağlayacak bir program geliştirin.

15. Sembolik Mantık

Önerme hesaplamasında standart fakat karmaşık problemleri çözecek bir program geliştirin.

16. İngiliz Para Üstü Verme

İngiliz para sisteminde otomatik olarak para üstü verecek bir yordam yazın (iki farthing bir half-penny eder, iki half-penny bir penny eder, on iki penny bir shilling eder, 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 tercih etmeyi öğretebilir misiniz? (Kaynak: Oettinger, Philosophical Magazine, 1952.)

18. Morse Kodlama

Standart İngilizceyi kabul edip Morse Kodu (nokta-çizgi) eşdeğerini yazdıracak bir program yazın.

19. Müzikal Transpozisyon

Herhangi bir ezgiyi bir tonadan belirtilen herhangi başka bir tonaya aktaracak bir program tasarlayın.

20. Bahis Oranları

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

21. Sınırlı Konuşma

MIDAC’in tek bir belirli konu hakkında (örneğin hava durumu) makul ölçüde anlaşılır görünen bir konuşma yapmasını sağlayacak bir program tasarlayın.

Şu ana kadar hiçbir öğrenci, gerçekten de çok zor bir problem olan 21. problemi denememiştir (A. M. Turing’in bir makinenin “düşünmesi” tanımına yaklaşmak için bariz bir meydan okuma), ancak bu problem sınıf üyeleri arasında çok sayıda yoruma ve tartışmaya yol açmıştır. Birkaç geçici şema şimdiden önerilmiştir.

22. Telefon Santrali Simülasyonu

MIDAC’in otomatik bir telefon santralini simüle ettiği, “meşgul” sinyalleri vb. verdiği bir program tasarlayın.

23. Nispi Temsil Oylaması

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

24. Sözde-Rastgele Briç Eller

Problem 7’nin 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’i ilkel bir briç oyunu oynayacak şekilde programlayın; örneğin renge uymak, kozlamak, reneg yapmamak, “elde üçüncü oyuncu olunca olabildiğince yüksek oynamak” vb.

Aşağıdaki biçimde MIDAC’in “öğrenme” yeteneğini gösteren bir program tasarlayın: MIDAC’e doğru-yanlış türünde bir “zeka” testi verin (yanıtlar rastgele olsun) ve makineye bir “not” yerleştirin. Testi tekrarlayın ve ikinci bir “not” yerleştirin vb. Makineyi, doğru yanıtlar kümesini “öğrenecek” şekilde yönlendirin.

MIDAC

MIDAC, üç adresli komut koduna ve temel 45 bitlik bir sözcüğe sahip, seri ve ikili bir makinedir. Birincil bellek, 512 sözcükten oluşan akustik gecikme hattı depolamasından oluşur. İkincil bellek, seri erişimli manyetik tambur üzerinde 6.144 sözcükten oluşur. Girdi-çıktı, fotoelektrik şerit okuyucu ve Flexowriter elektrikli daktilo aracılığıyla tamamen alfanümeriktir. UNIVAC’tekine benzer otomatik bir taşma aygıtı, denetimi otomatik olarak belirli bir konuma (000) aktarır. Alt yordamlar, alt yordam değişkenleri için birincil belleğe doğrudan çağrıya izin veren “mevcut-adrese göreli” biçimde tambur üzerinde saklanabilir. Girdi-çıktı, kayan adresler ve tam girdi çevirisi ile MAGIC (Michigan Automatic General Integrated Computation) sistemi üzerinden yapılır.