Wednesday, April 14, 2010

Tugas ke 2 Pemograman terstruktur

TIPE DATA REKURSIF


Tipe rekursif merupakan salah satu didefinisikan dalam istilah itu sendiri. Nilai dari rekursif jenis, yang terdiri dari nilai-nilai dari jenis yang sama. Tipe rekursif secara umum yaitu, himpunan nilai-nilai tipe rekursif, R, akan ditentukan oleh rekursif.

Menetapkan persamaan dalam bentuk:

R =. . . + (... R... R...)
(1.1)
Sebuah set persamaan rekursif mungkin memiliki banyak solusi. Untungnya, rekursif set persamaan selalu memiliki paling tidak solusi himpunan bagian dari setiap solusi lain. Diperhitungan, solusi yang paling tidak adalah satu-satunya di mana kita tertarik.Solusi yang paling tidak persamaan (1.1) dapat ditentukan sebagai berikut iteratively.Mengganti ditetapkan untuk R kosong di sisi kanan dari (1.1), memberikan pertama R, kemudian aproksimasi untuk pengganti ini pendekatan pertama untuk R di sebelah kanan sisi (1.1) memberikan aproksimasi kedua dan yang lebih baik untuk R. Lanjutkan dicara ini, pada setiap langkah mengganti pendekatan terbaru untuk R di sebelah kanan 2,5 sistem Tipe 37 sisi (1.1), para aproksimasi lebih besar dan lebih besarhimpunan bagian dari setidaknya solusi. Kardinalitas tipe rekursif adalah tidak terbatas, bahkan jika setiap individu nilai jenis terbatas.

The Type Completeness Principle

PASCAL menyediakan nilai-nilai primitif (boolean, karakter, enumerands, bilangan bulat, bilangan real), nilai-nilai komposit (catatan, array, set, file), pointer, dan prosedur Prosedur PASCAL dihitung sebagai nilai-nilai karena mereka dapat disampaikan sebagai argumen prosedur lain. Namun (tidak seperti nilai-nilai primitif dan komposit), prosedur tidak dapat ditetapkan, atau digunakan sebagai komponen dari nilai-nilai komposit. Kami mengatakan bahwa prosedur PASCAL kelas dua nilai, sedangkan nilai-nilai primitive PASCAL, nilai komposit, dan pointer nilai kelas pertama. Bahkan di antara pertama PASCAL nilai kelas ada perbedaan kelas yang lebih baik. Untuk contoh, sebuah hasil fungsi harus merupakan nilai primitif atau penunjuk, tetapi tidak komposit nilai. Pembatasan ini sering membuat pengkodean canggung. Sebagai contoh, kita mungkin ingin untuk menulis fungsi dengan catatan sebagai hasilnya, melainkan kita dipaksa untuk menulis prosedur yang benar dengan catatan variabel parameter, yang tidak dapat dipanggil dari dalam suatu ekspresi. PASCAL perbedaan kelas yang sangat baik, tetapi perbedaan kelas ditemukan di hampir semua bahasa pemrograman utama termasuk C, C + +, JAVA, andADA. Di sisi lain, bahasa-bahasa fungsional modern (seperti ML dan Haskell) mengelola untuk menghindari perbedaan kelas tersebut. Mereka mengizinkan semua nilai, termasuk fungsi, yang akan dimanipulasi dengan cara yang serupa. Kita dapat mencirikan kelas bahasa kesadaran dalam hal kepatuhan ke Prinsip Kelengkapan Tipe: Tidak sewenang-wenang operasi harus dibatasi pada jenis dari Operand. Kata sewenang-wenang adalah penting di sini. Bersikeras bahwa Operand dari dan operasi yang boolean bukanlah pembatasan yang sewenang-wenang, karena hal ini melekat pada sifat operasi ini. Tapi bersikeras bahwa hanya nilai-nilai dari tipe tertentu dapat ditetapkan adalah pembatasan yang sewenang-wenang. Jenis Kelengkapan Prinsip ini tidak dimaksudkan untuk menjadi dogma. Ini hanya prinsip bahwa perancang bahasa harus diingat, karena sewenang-wenang pembatasan cenderung untuk mengurangi kekuatan ekspresif bahasa pemrograman.

0 comments: