Definisi "negara"

15

Apa cara yang baik untuk mendefinisikan "negara", seperti dalam variabel negara atau mesin negara, ke programmer baru (sebelumnya bukan)? Apa beberapa cara yang baik untuk menjelaskan mengapa konsep ini berguna untuk menulis perangkat lunak? Apakah konsep negara diajarkan secara eksplisit dalam memulai kursus pemrograman atau buku?

hotpaw2
sumber

Jawaban:

5

"Keadaan" diperlukan, ketika Anda perlu mengingat sesuatu. Fungsi (bukan "metode" atau apa pun) idealnya hanya bergantung pada inputnya. Jika Anda mengajukan pertanyaan di mana jawabannya dapat berubah dari waktu ke waktu, bahkan jika inputnya sama, Anda perlu sesuatu untuk mengingat perbedaan dalam jawaban itu, benar? Kalau tidak, Anda tidak dapat memberikan jawaban yang berbeda karena tidak ada faktor lain yang berubah (anggap saja jawabannya tidak bergantung pada waktu secara langsung).

"Benda / informasi" yang perlu Anda ingat itu disebut "keadaan".

(tidak dipermasalahkan bahwa "keadaan" ini berubah seiring waktu, itu pada dasarnya hanya cara untuk mengatakan "mengingat / mengetahui sesuatu")

hantu0m
sumber
1
Saya pikir ini adalah jawaban terbaik, jika diucapkan ulang agar dapat dipahami oleh nonprogrammer. Katakan: semua kegiatan menangani hal-hal dan / atau informasi. Ini terjadi dalam tiga cara: 1) aktivitas apa pun dapat mengambil atau menggunakan atau membaca sesuatu: inputnya ; 2) ia dapat memproduksi atau menulis sesuatu: hasilnya ; 3) saat dalam proses itu mungkin menyimpan , menyimpan , menghafal , menyimpan sesuatu: keadaannya. Untuk sebagian besar program komputer, semua input, output, dan status terdiri dari informasi, sedangkan untuk jenis aktivitas lainnya (misalnya, memasak) objek fisik biasanya juga dilibatkan.
reinierpost
8

Dari Wikipedia :

Negara biasanya mengacu pada kondisi sekarang dari suatu sistem atau entitas ...

Cukup banyak artinya dalam konteks komputasi: data yang mendefinisikan kondisi beberapa objek atau sistem.

Arti 'negara' tidak spesifik untuk pemrograman. Ada contoh 'keadaan' secara harfiah di mana pun Anda melihat. Televisi mati. Kopinya panas. Sepatu kets a) biru; b) bau; c) tidak disingkirkan; d) cukup usang. 'state' dalam pengertian pemrograman sama dengan 'state' dalam arti non-pemrograman, kecuali kita menerapkannya pada objek yang kita tangani: variabel, objek, utas, basis data, sistem file, dll. Jika Anda memiliki untuk menjelaskannya, jelaskan dengan istilah yang umum - tidak perlu membuatnya menjadi konsep asing, teknis.

Jam adalah contoh yang baik dari sistem sederhana yang memiliki beberapa keadaan: jam bisa berjalan atau tidak berjalan, dan itu menunjukkan waktu yang mungkin atau mungkin tidak sesuai dengan waktu aktual hari itu. Sangat mudah untuk melihat bagaimana hal-hal itu seperti variabel dan bagaimana mengubah keadaan jam dapat mempengaruhi hal-hal lain.

Bandingkan dengan sesuatu yang tanpa kewarganegaraan, seperti pernyataan: "Pintunya merah." Pernyataan itu sendiri tidak memiliki status. Mungkin benar atau tidak benar bahwa pintunya berwarna merah, tetapi pernyataan itu sendiri tidak mengandung keadaan apa pun. Pengecatan pintu bisa mengubah kebenaran pernyataan itu, tetapi pernyataan itu sendiri tidak pernah berubah. Demikian pula, angka seperti 42 tidak memiliki status apa pun: 42 adalah 42 dan tidak ada yang dapat Anda ubah tentangnya.

Variabel memiliki status, nilai tidak.

Caleb
sumber
1
@ hotpaw2 Arti 'state' tidak khusus untuk pemrograman. Ada contoh 'keadaan' secara harfiah di mana pun Anda melihat. Televisi mati. Kopinya panas. Sepatu kets a) biru; b) bau; c) tidak disingkirkan; d) cukup usang. 'state' dalam pengertian pemrograman sama dengan 'state' dalam arti non-pemrograman, kecuali kita menerapkannya pada objek yang kita tangani: variabel, objek, utas, basis data, sistem file, dll.
Caleb
1
Jadi, Anda akan menjelaskannya kepada siswa pemrograman dengan menggunakan contoh nyata? Sepertinya itu ide yang bagus. Apakah ini akan ditransfer secara efektif kepada mereka untuk memahami keadaan dalam program mereka?
hotpaw2
2
@ hotpaw2 Memindahkan komentar saya hingga jawabannya dan sedikit diperluas. Adapun pemahaman, saya pikir yang terbaik adalah tidak terlalu fokus pada 'negara' secara abstrak dengan pemula. Kebanyakan orang membutuhkan contoh nyata dari sesuatu sebelum mereka dapat benar-benar mengenali pola yang lebih umum.
Caleb
1
Tidak jelas mengapa "kopinya panas" adalah negara, tetapi "pintunya merah" tidak bernegara? Sebaliknya, apakah itu berarti "kopi hitam" tidak bernegara dan "pintunya panas" bernuansa negara?
Adam Hughes
1
@AdamHughes Lihatlah di mana saya menggunakan tanda kutip - khususnya, saya tidak menggunakannya untuk membicarakan kopi karena saya merujuk pada kopi yang sebenarnya, bukan pernyataan tentang kopi. Intinya adalah untuk menjelaskan perbedaan antara variabel dan nilai. Pintu aktual di rumah saya memiliki status: mungkin terbuka atau tertutup, merah atau biru atau hijau, panas atau dingin, dll. Pernyataan tentang pintu dapat menunjukkan keadaan itu, tetapi pernyataan itu sendiri adalah hal yang tidak dapat diubah.
Caleb
1

Status adalah informasi yang dimanipulasi program Anda untuk menyelesaikan beberapa tugas. Ini adalah data atau informasi yang diubah atau dimanipulasi selama runtime suatu program. "Status" suatu program pada waktu tertentu mengacu pada snapshot dari semua data yang sedang dilihat atau dianalisis oleh program untuk sampai ke langkah selanjutnya dalam pelaksanaannya.

Universitas saya mulai dengan Skema, jadi kami mulai pemrograman dengan model tanpa-negara. Kami kemudian beralih ke C dan sangat eksplisit tentang apa itu negara, mengapa itu berguna, dan mengapa hal itu membuat hal-hal yang berpotensi sangat rumit. Jadi beberapa universitas pasti berbicara tentang negara, tetapi belum tentu semuanya

Oleksi
sumber
1

Anda dapat menggunakan analogi lampu lalu lintas yang dapat berupa salah satu dari tiga kondisi: [HIJAU], [KUNING] atau [MERAH]. Itu harus hanya dalam satu keadaan pada satu waktu. Lampu lalu lintas adalah mesin keadaan sebenarnya yang dimodelkan. Biasanya akan mentransisikan kondisinya dari [GREEN ke YELLOW], lalu [YELLOW ke RED], lalu [RED ke GREEN].

masukkan deskripsi gambar di sini

Transisi keadaan alternatif (yang berlaku di beberapa negara seperti Inggris, memiliki dua transisi [MERAH ke KUNING, kemudian KUNING ke HIJAU] menggantikan transisi [MERAH ke HIJAU].

dodgy_coder
sumber