"국가"의 정의


15

상태 변수 나 상태 머신에서와 같이 새로운 (이전에는 아닌) 프로그래머에게 "상태"를 정의하는 좋은 방법은 무엇입니까? 이 개념이 소프트웨어 작성에 유용한 이유를 설명하는 좋은 방법은 무엇입니까? 국가의 개념은 프로그래밍 과정이나 서적을 처음 시작할 때 명시 적으로 가르쳐 집니까?

답변:


5

무언가를 기억해야 할 때 "상태"가 필요합니다. 기능 ( "방법"등)은 이상적으로 입력에만 의존합니다. 입력이 동일하더라도 시간이 지남에 따라 답변이 변경 될 수있는 질문을하는 경우 답변의 차이를 기억해야 할 것이 필요합니까? 그렇지 않으면 다른 요인이 변경되지 않아 다른 답변을 제공 할 수 없습니다 (답이 시간에 직접 의존하지 않는다고 가정합니다).

기억해야 할 "정보 / 정보"를 "상태"라고합니다.

(이 "상태"가 시간이 지남에 따라 변한다는 것을 요구하지는 않으며, 기본적으로 "기억하기 / 알기"라고 말하는 방법 일뿐입니다)


1
프로그래머가 아닌 사람이 이해할 수 있다고 대답하면 이것이 가장 좋은 대답이라고 생각합니다. 말하기 : 모든 활동은 사물 및 / 또는 정보를 처리합니다. 이것은 3 가지 방식으로 발생합니다 : 1) 어떤 활동이라도 무언가를 하거나 사용 하거나 읽을 수 있습니다 : 입력 ; 2) 무언가를 생산 하거나 쓸 수 있다 : 출력 ; 진행은 수있는 반면 3) 보유 , 유지 , 암기 , 매장 뭔가를 : 그 상태를. 대부분의 컴퓨터 프로그램에서 모든 입력, 출력 및 상태는 정보로 구성되는 반면 다른 유형의 활동 (예 : 요리)의 경우 물리적 개체도 일반적으로 관련됩니다.
reinierpost

8

에서 위키 백과 :

상태는 일반적으로 시스템 또는 엔티티의 현재 상태를 나타냅니다.

이는 컴퓨팅 환경에서 의미하는 바, 즉 일부 객체 또는 시스템의 상태를 정의하는 데이터입니다.

'상태'의 의미는 프로그래밍에만 국한되지 않습니다. 말 그대로 어디에서나 '상태'의 예가 있습니다. 텔레비전이 꺼져 있습니다. 커피가 뜨겁습니다. 운동화는 a) 파란색입니다. b) 냄새 나는; c) 버리지 말 것; d) 상당히 마모되었습니다. 프로그래밍 의미에서 '상태'는 변수, 객체, 스레드, 데이터베이스, 파일 시스템 등과 같이 처리하는 객체에 적용한다는 점을 제외하고 프로그래밍이 아닌 의미에서 '상태'와 동일합니다. 그것을 설명하기 위해 친숙한 용어로 설명하십시오-외국의 기술적 개념으로 만들 필요가 없습니다.

시계는 상태가 간단한 시스템의 좋은 예입니다. 시계가 실행 중이거나 실행 중이 아닐 수 있으며 실제 시간과 일치하거나 일치하지 않을 수있는 시간을 나타냅니다. 이러한 것들이 변수와 어떻게 다른지, 그리고 시계의 상태를 바꾸는 것이 다른 것들에 어떤 영향을 미치는지 쉽게 알 수 있습니다.

"문이 붉다"라는 문장과 같이 상태가없는 것과 비교해보십시오. 성명서 자체에는 상태가 없습니다. 문이 빨간색 인 것은 사실 일 수도 있고 그렇지 않을 수도 있지만, 명세서 자체에는 상태가 없습니다. 문을 그리는 것은 성명서의 진실을 바꿀 수 있지만 성명서 자체는 절대 변하지 않습니다. 마찬가지로 42와 같은 숫자에는 상태가 없습니다. 42는 42이며 변경할 수있는 것은 없습니다.

변수 에는 상태가 있고 에는 없습니다.


1
@ hotpaw2 'state'의 의미는 프로그래밍에만 국한되지 않습니다. 말 그대로 어디에서나 '상태'의 예가 있습니다. 텔레비전이 꺼져 있습니다. 커피가 뜨겁습니다. 운동화는 a) 파란색입니다. b) 냄새 나는; c) 버리지 말 것; d) 상당히 마모되었습니다. 프로그래밍 의미에서 '상태'는 변수, 객체, 스레드, 데이터베이스, 파일 시스템 등을 처리하는 객체에 적용한다는 점을 제외하고 프로그래밍이 아닌 의미에서 '상태'와 동일합니다.
Caleb

1
구체적인 예제를 사용하여 프로그래밍 학생에게 설명 하시겠습니까? 좋은 생각 인 것 같습니다. 프로그램의 상태를 이해하는 데 효과적으로 전달됩니까?
hotpaw2

2
@ hotpaw2 내 의견을 답변으로 옮기고 조금 확장했습니다. 이해하기 위해서는 초보자와 함께 초록의 '상태'에 너무 집중하지 않는 것이 가장 좋습니다. 대부분의 사람들은 좀 더 일반적인 패턴을 인식하기 전에 구체적인 예가 필요합니다.
Caleb

1
"커피가 덥다"가 왜 상태가 좋지 않은지 확실하지 않지만 "문이 붉다"는 상태가 없는가? 대조적으로, "커피는 검은 색"은 상태가없고 "문은 뜨겁다"는 것은 상태가 양호하다는 의미입니까?
Adam Hughes

1
@AdamHughes 인용 부호를 사용한 위치를 살펴보십시오. 특히 커피에 대한 진술이 아니라 실제 커피를 언급했기 때문에 커피에 대해 언급 할 때 인용 부호를 사용하지 않았습니다. 요점은 변수와 값의 차이를 설명하는 것입니다. 내 집의 실제 문에는 상태가 있습니다. 열렸거나 닫혔거나 빨간색, 파란색 또는 녹색, 뜨겁거나 차가울 수 있습니다. 에 대한 진술 은 그 상태를 나타낼 수 있지만 진술 자체 는 변경할 수 없습니다.
Caleb

1

상태는 프로그램이 일부 작업을 수행하기 위해 조작하는 정보입니다. 프로그램 실행 중에 변경되거나 조작되는 데이터 또는 정보입니다. 주어진 시간에 프로그램의 "상태"는 프로그램이 현재보고 있거나 실행중인 다음 단계로 가기 위해 분석하는 모든 데이터의 스냅 샷을 나타냅니다.

우리 대학은 Scheme으로 시작하여 State-less 모델로 프로그래밍을 시작했습니다. 그런 다음 C로 전환하여 상태가 무엇인지, 왜 유용한 지, 왜 잠재적으로 매우 복잡한 지에 대해 매우 명확했습니다. 따라서 일부 대학은 확실히 국가에 대해 이야기하지만 반드시 모두는 아닙니다


1

[GREEN], [YELLOW] 또는 [RED]의 세 가지 상태 중 하나에 해당하는 신호등의 비유를 사용할 수 있습니다. 한 번에 하나의 상태에만 있어야합니다. 신호등은 모델링되는 실제 상태 머신입니다. 일반적으로 [GREEN에서 YELLOW]로, [YELLOW에서 RED]로, [RED에서 GREEN]으로 상태가 전환됩니다.

여기에 이미지 설명을 입력하십시오

대체 국가 전환 (영국과 같은 일부 국가에서 적용)은 [RED to GREEN] 전환 대신 [RED to YELLOW, YELLOW to GREEN]의 두 전환이 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.