Визначення "стан"


15

Який хороший спосіб визначити "стан", як у змінній стану або машині стану, до нового (раніше не) програміста? Які є хороші способи пояснити, чому ця концепція корисна для написання програмного забезпечення? Поняття держави явно викладається на початкових курсах програмування чи в книгах?

Відповіді:


5

"держава" потрібна, коли потрібно щось запам'ятати. Функції (не "методи" чи будь-які інші) в ідеалі залежать лише від їх введення. Якщо ви ставите запитання, де відповідь може змінюватися з часом, навіть якщо дані є однаковими, вам потрібно щось запам'ятати цю різницю у відповіді, правильно? В іншому випадку ви не можете дати іншу відповідь, тому що жодні інші фактори не змінилися (припустимо, відповідь не залежить безпосередньо від часу).

Та "річ / інформація", яку вам потрібно запам'ятати, називається "державою".

(не потрібно, щоб цей "стан" змінювався з часом, це в основному лише спосіб сказати "пригадати / знати щось")


1
Я вважаю, що це найкраща відповідь, якщо перефразувати, щоб бути зрозумілим для непрограміста. Скажіть: усі види діяльності стосуються речей та / або інформації. Це відбувається трьома способами: 1) будь-яка діяльність може приймати або використання або читати що - то: його вхід ; 2) вона може щось виробляти або записувати : її вихід ; 3) в процесі виконання він може тримати , тримати , запам'ятовувати , зберігати що - то: його стан. У більшості комп’ютерних програм усі введення, вихід та стан складаються з інформації, тоді як для інших видів діяльності (скажімо, приготування їжі) зазвичай також залучаються фізичні об'єкти.
reinierpost

8

З Вікіпедії :

Держава зазвичай посилається або на сучасний стан системи чи сутності ...

Це майже все, що це означає в обчислювальному контексті: дані, що визначають стан якогось об'єкта чи системи.

Значення "стану" не специфічне для програмування. Є приклади "держави" буквально скрізь, де ви дивитесь. Телевізор вимкнено. Кава гаряча. Кросівки а) блакитні; б) смердючий; в) не відкладати; г) досить зношений. "стан" у сенсі програмування - це те саме, що "стан" у непрограмувальному сенсі, за винятком того, що ми застосовуємо його до об'єктів, з якими ми маємо справу: змінних, об'єктів, потоків, баз даних, файлових систем тощо. Якщо у вас є щоб пояснити це, пояснити це звичними термінами - немає необхідності перетворювати його на іноземну, технічну концепцію.

Годинник - хороший приклад простої системи, яка має певний стан: годинник може працювати або не працювати, і він позначає час, який може або не відповідає дійсному часу доби. Досить легко зрозуміти, як ці речі схожі на змінні і як зміна стану годинника може вплинути на інші речі.

Порівняйте це з чимось без громадянства, як твердження: "Двері червоні". Сама заява не має стану. Це може бути, а може і не бути правдою, що двері червоні, але сама заява не містить жодного стану. Фарбування дверей може змінити істинність твердження, але сама заява ніколи не змінюється. Так само число, як 42, не має жодного стану: 42 - 42, і ви нічого не можете змінити.

Змінні мають стан, значення - ні.


1
@ hotpaw2 Значення "state" не специфічно для програмування. Є приклади "держави" буквально скрізь, де ви дивитесь. Телевізор вимкнено. Кава гаряча. Кросівки а) блакитні; б) смердючий; в) не відкладати; г) досить зношений. "стан" у сенсі програмування - це саме те саме, що "стан" у непрограмувальному сенсі, за винятком того, що ми застосовуємо його до об'єктів, з якими ми маємо справу: змінних, об'єктів, потоків, баз даних, файлових систем тощо
Caleb

1
То ви б пояснили це студенту програмування, використовуючи конкретні приклади? Здається, гарна ідея. Чи ефективно це передасть їм розуміння стану у своїх програмах?
hotpaw2

2
@ hotpaw2 Пересунув мій коментар до відповіді та трохи розширився. Щодо розуміння, я думаю, що найкраще не починати занадто сильно концентруватися на «державі» в рефераті з початківцем. Більшість людей потребують конкретних прикладів чогось, перш ніж вони дійсно зможуть розпізнати більш загальну закономірність.
Калеб

1
Не ясно, чому "кава гаряча" є загрозливою, але "двері червоні" - без громадянства? Навпаки, чи означало б це, що "кава чорна" без громадянства, а "двері - гаряча"?
Адам Хьюз

1
@AdamHughes Подивіться, де я використовував цитати - конкретно, я не використовував їх у розмові про каву, бо мав на увазі фактичну каву, а не твердження про каву. Сенс полягає в тому, щоб пояснити різницю між змінними та значеннями. Фактична двері в моєму будинку є стан: він може бути відкритим або закритим, червоним або синім або зелений, гарячим або холодним, і т.д. Заяви про двері можна вказати , що стан, але заяву сам по собі є незмінною річчю.
Калеб

1

State - це інформація, якою ваша програма маніпулює для виконання певного завдання. Це дані або інформація, яка змінюється або маніпулюється протягом часу виконання програми. "Стан" програми в даний момент часу відноситься до огляду всіх даних, які програма зараз переглядає або аналізує, щоб перейти до наступного кроку в її виконанні.

Мій університет почав із схеми, тож ми почали програмувати за моделлю, що не стосується держави. Потім ми перейшли до C і були дуже чіткими щодо того, що таке стан, чому він корисний і чому це робить речі потенційно дуже складними. Тож деякі університети, безумовно, говорять про державні, але не обов’язково всі


1

Ви можете використовувати аналогію світлофора, який може бути в одному з трьох станів: [ЗЕЛЕНИЙ], [ЖОВТИЙ] або [ЧЕРВЕНИЙ]. Він повинен бути в одному стані одночасно. Світлофор - це фактичний стан машини, який моделюється. Зазвичай він переходить свій стан від [ЗЕЛЕНИЙ до ЖОВТОГО], потім [ЖОВТИЙ до ЧЕРВЕНОГО], потім [ЧЕРВЕНОГО до зеленого].

введіть тут опис зображення

Альтернативний перехід держави (який діє в деяких країнах, таких як Великобританія, має два переходи від [ЧЕРВЕНОГО до жовтого, потім ЖОВТОГО до зеленого]) замість переходу [ЧЕРВЕНИЙ до ЗЕЛЕНОГО].

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.