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?
15
Dari Wikipedia :
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.
sumber
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
sumber
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].
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].
sumber