2018년 PC기반제어프로그래밍 과제리스트
(1) Bouncing Ball (부과 3월 14일. 제출 3월 21일)
그림과 같이 화면을 구성하고 지시와 같이 동작하도록 프로그램을 작성하라.
(1) PictureBox로 만든 ball이 최초에는 좌측 상단에 있다가 우측 하단으로 이동한다.
(2) 벽에 부딪히면 반대로 움직인다. 상하좌우 4개의 벽에 대해 모두 반동한다.
(3) Slow/Fast 라디오 버튼 선택에 따라 움직이는 속도를 변하게 한다.
(4) 볼의 색이 폼의 중심에서 멀어지면 빨간색, 중심으로 가까워지면 파란색이 되도록 한다.
(5) 실행 화면을 캡쳐하여 구성 컨트롤 요소의 이름을 표기한 그림을 넣고, 소스를 출력한
페이퍼 보고서를 제출한다.
(2) 비트 조작 (부과 3월 21일. 제출 3월 28일)
- 그림과 같이 화면을 구성하고 지시와 같이 동작하도록 프로그램을 작성하라.
- 실행 화면을 캡쳐하여 구성 컨트롤 요소의 이름을 표기한 그림을 넣고, 소스를 출력한
페이퍼 보고서를 제출한다.
(3) Least-Square 2차함수 근사 (부과 3월 28일. 제출 4월 4일)
- 다음과 같은 프로그램을 작성하라.
- 실행 화면을 캡쳐하여 구성 컨트롤 요소의 이름을 표기한 그림을 넣고, 소스를 출력한
페이퍼 보고서를 제출한다.
(4) 몬테카를로 시뮬레이션 (부과 4월 4일. 제출 4월 11일)
- 다음과 같은 프로그램을 작성하라.
- 삼각형의 면적 계산과 삼각형에 대한 IN/OUT 판정은 반드시 별도 함수로 작성하라. 함수의 원형은
자유롭게 한다.
- 실행 화면을 캡쳐하여 구성 컨트롤 요소의 이름을 표기한 그림을 넣고, 소스를 출력한
페이퍼 보고서를 제출한다.
(5) 클래스의 다형성 (부과 4월 11일. 제출 4월 18일)
- 아래 실습 프로그램에 사각형의 Rectangle 클래스와 삼각형의 Triangle 클래스를 추가하라.
화면에 사각형과 삼각형의 그려지고 각각의 개수도 표시되도록 한다.
- Rectangle 과 Triangle 클래스는 Geom의 파생글래스가 되도록 하고
override 된 Draw( ) 함수를 정의하여 다형적으로 호출되도록 한다.
- 실행 화면을 캡쳐하여 구성 컨트롤 요소의 이름을 표기한 그림을 넣고, 소스를 출력한
페이퍼 보고서를 제출한다.
[시험과 겹쳐 제출하지 않습니다. 개인적으로 해보시기 바랍니다]
(6) 그림 그리기 (부과 5월 2일. 제출 5월 9일)
- 수업시간에 실습했던 원 그리기 프로그램에 아래와 같이 포함되는 원 지우는 기능을 추가하라.
- 프로그램이 객체지향적이 되도록 함수를 위치시켜라.
(7) Arduino와 시리얼 통신 : 폴링방식 (부과 5월 9일. 제출 5월 16일)
- 실습시간에 제시된 통신프로토콜 중 "RI"와 "RA"는 각각 접점 입력과 아날로그 입력의 상태를 얻는 것이다.
- 이를 하나로 합쳐 다음과 같은 통신 프로토콜을 추가한다.
<STX> |
R |
B |
<ETX> |
아두이노의 응답 (10byte 고정길이)
<ACK> |
R |
B |
d |
d |
, |
d |
d |
d |
<ETX> |
(※) 콤마 앞쪽의 dd = 00~FF. 8개 접점의 bitwise OR.
(※) 콤마 뒤쪽의 ddd = 000~3FF(1023). 각 채널의 10비트 해상도 AD값
- 아두이노 프로그램을 적절히 추가해 넣어야 한다.
public static bool AskAllData(SerialPort serialPort, bool[] bits, out int adval)
- PC 프로그램의 timCommMon_Tick() 함수에서는 새로운 AskAllData( ) 함수만 호출하는 것으로 수정하여 이전과 같이 동작하도록 하라.
(8) TCP 통신에 관한 실습 시간의 프로그램을 다음과 같이 수정하라 (5월 16일. 제출 5월 23일)
[1] 상대 프로그램이 정지되거나 Closed되어도, 재 실행되면 즉시 다시 연결되도록 프로그램을 수정하라.
상태 감시 타이머에 다음의 기능을 넣으면 될 것이다.
(1) Server : 통신 상태가 Closed가 되면 즉시 Listen으로 전환한다.
(2) Client : 통신 상태가 Closed가 되면 성공할 때까지 Connect를 시도한다.
[2] Server에서의 원의 움직임도 거꾸로 Client의 원의 위치에 반영되는 기능도 추가하라.
서로의 움직임을 서로 간섭하게 되므로, 최후 조작의 결과가 반영될 것이다.
이를 위하여 port 연결을 새로 추가하라. Port번호는 5003으로 한다.
(9) 다음 지시와 같은 라벨링 프로그램을 작성하라 (부과 5월 23일. 제출 5월 30일)
- 첨부된 지시사항을 잘 읽어보고 지시에 따라 작성한다
- water.jpg에 대해 실행한 실행화면은 아래와 같이 될 것이다