5. 오류를 찾아봐요
【언플러그드 활동】
1. 오류 검출하기
2. 2개 이상의 오류 검출하기
3. 오류 검출하여 수정하기
1오류검출이란 무엇일까?
컴퓨터는 정해진 프로그램에 따라 움직이는데 이 과정에서 오류가 생기면 그로 인하여 다양한 문제가 나타난다. 인터넷 뱅킹을 통해서 친구에게 10만원을 보냈는데 오류로 인하여 100만원이 보내진다거나, 아니면 10원이 보내질 수도 있다. 또 친구에게 메일을 보냈는데 오류로 인해 메일이 안 보내진다거나, 메일에 넣었던 첨부파일이 전달이 안 되는 경우도 생길 수 있다.
그래서 프로그램을 작성할 때에는 반드시 오류 검출 과정을 거치게 된다. 컴퓨터가 처리한 데이터가 올바른지 검사를 하거나 하드웨어나 소프트웨어 상의 틀린 곳을 검출하는 것이다. 이 과정을 오류 검출이라고 한다. 컴퓨터의 오류는 프로그램을 작성할 때 이외에도 예를 들면 바이러스의 침투나 누군가의 해킹으로 데이터가 바뀌거나 변함으로 인해 데이터에 오류가 나타나기도 한다.
2오류를 검출할 때 사용하는 패리티(Parity)비트에 대해서 알아보자
1바이트(8비트) 구조에서 패리티(Parity) 비트는 7비트 크기의 ASCII 코드를 제외한 나머지 1비트다. 패리티 비트는 전송 과정에서 1비트 오류를 검출하기 위한 것으로, 패리티비트를 포함해 1의 개수가 짝수(짝수 패리티비트)나 홀수(홀수 패리티비트) 개가 되도록 한다.
데이터 전송 과정에서 1비트 오류가 발생하면 1의 개수가 홀수 개로 바뀐다. 예를 들어, 위의 그림에서 데이터 전송 과정 중 세 번째 비트가 0에서 1로 바뀌면 수신 호스트는 11110010을 받는다. 수신 호스트는 패리티 검사를 하여 1의 개수가 홀수로 변경된 사실을 알게 되어 데이터 전송 과정에서 1비트 오류가 발생했음을 확인할 수 있다.
홀수 패리티(Odd Parity) 방식은 짝수 패리티와 반대로, 1의 개수를 홀수로 만드는 것이다. 송신 호스트와 수신 호스트는 짝수 패리티나 홀수 패리티 중 동일한 한 가지 방식을 사용해야 한다.
출처 네이버 지식백과 오류 검출 (데이터 통신과 컴퓨터 네트워크, 2013. 9. 10., 한빛아카데미(주))
3오류검출은 컴퓨터에서만 사용될까?
가. 우리가 사용하는 주민등록번호도 패리티 방식으로 오류검출을 통해서 올바른 주민등록번호인지 위조된 주민등록번호인지 알 수 있다.
나. 우리가 사는 물건에 있는 바코드 역시 패리티 방식으로 오류검출을 통해서 올바른 바코드인지 그렇지 않은지 알 수 있다.
4오류 검출 활동을 해 보자
활동1오류 검출하기
한 개의 오류를 찾을 수 있다.
이 활동은 데이터를 전송하는 과정에서 오류를 검출하기 위한 것으로, 오류를 검출하기 위해 추가되는 데이터를 포함해 1의 개수가 짝수나 홀수개가 되도록 하는 것이다. 본 활동을 통해서 데이터를 한 개 추가하여 오류 검출을 할 수 있다.
‘귤’은 이진수 유니코드로 ‘1010101010101000’이다. 16비트로 이루어진 데이터에 오류 검출을 위해서 데이터를 넣어보자.
귤: 1010101010101000□
최종전송데이터: 10101010101010001
귤: 1010101010101000□
최종전송데이터: 10101010101010000
활동지(5-1), 필기구
1.전맹 학생의 경우 양감의 재료를 활용하여 만져서 구분할 수 있도록 판에 부드러운 재질과 까칠한 재질의 부직포를 사각형 형태로 잘라서 까칠한 부직포는 1, 부드러운 부직포는 0으로 정한 후 직접 놔보고 그에 맞는 패리티비트를 놓아보는 활동을 한다.
2.약시 학생의 경우 색의 구분을 통해서 활동을 할 수 있다. (예 : 빨강은 1 흰색은 0)
3.포스트잇이나 양면테이프를 활용하여 붙이는 활동으로 대체하여 패리티비트를 추가할 수 있는 활동을 할 수 있다.
5-1오류 검출하기
이 활동은 데이터를 전송하는 과정에서 오류를 검출하기 위한 것으로, 오류를 검출하기 위해 추가되는 데이터를 포함해 1의 개수가 짝수나 홀수개가 되도록 하는 것이다. 본 활동을 통해서 데이터를 한 개 추가하여 오류 검출을 할 수 있다.
귤: 1010101010101000□
최종전송데이터: 10101010101010001
귤: 1010101010101000□
최종전송데이터: 10101010101010000
사과: 1110101010101010□
최종전송데이터: _________________________
사과: 1110101010101010□
최종전송데이터: _________________________
활동2두 개 이상의 오류 검출하기
두 개 이상의 오류를 찾을 수 있다.
데이터를 추가하여 오류를 검출할 때 한 개의 데이터를 추가한다면 하나의 정보에서 2개 이상의 비트에서 오류가 나면 오류를 검출하지 못한다. 2개 이상의 오류를 검출할 수 있도록 4개의 비트로 나누어 각각 데이터를 추가하여 오류 검출을 할 수 있는 활동이다.
‘귤’은 이진수 유니코드로 ‘1010101010101000’이다. 16비트로 이루어진 데이터에 오류 검출을 위해서 4개의 비트로 나누어서 각각 데이터를 넣어보자.
귤: 1010□ 1010□ 1010□ 1000□
전송 데이터: 10100101001010010001
귤: 1010□ 1010□ 1010□ 1000□
전송 데이터: 10101101011010110000
활동지(5-2), 필기구
1.전맹 학생의 경우 양감의 재료를 활용하여 만져서 구분할 수 있도록 판에 부드러운 재질과 까칠한 재질의 부직포를 사각형 형태로 잘라서 까칠한 부직포는 1, 부드러운 부직포는 0으로 정한 후 직접 놔보고 그에 맞는 패리티비트를 놓아보는 활동을 한다.
2.약시학생의 경우 색의 구분을 통해서 활동을 할 수 있다. (예 : 빨강은 1 흰색은 0)
3.포스트잇이나 양면테이프를 활용하여 붙이는 활동으로 대체하여 패리티비트를 추가할 수 있는 활동을 할 수 있다.
5-2두 개 이상의 오류 검출하기
데이터를 추가하여 오류를 검출할 때 한 개의 데이터를 추가한다면 하나의 정보에서 2개 이상의 비트에서 오류가 나면 오류를 검출하지 못한다. 2개 이상의 오류를 검출할 수 있도록 4개의 비트로 나누어 각각 데이터를 추가하여 오류 검출을 할 수 있는 활동이다.
귤: 1010□ 1010□ 1010□ 1000□
전송 데이터: 10100101001010010001
귤: 1010□ 1010□ 1010□ 1000□
전송 데이터: 10101101011010110000
사과: 1110□ 1010□ 1010□ 1010□
전송 데이터: ________ ________ ________ ________
사과: 1110□ 1010□ 1010□ 1010□
전송 데이터: ________ ________ ________ ________
활동3오류를 검출하여 수정하기
오류를 검출하고 수정할 수 있다.
앞의 두 활동은 1차원으로 데이터를 추가하여 오류를 검출할 때 사용한다. 하지만 오류를 검출만 할 수 있지 오류를 검출한 후 올바르게 수정하지는 못한다. 이에 본 활동에서는 오류를 검출하고 수정할 수 있는 2차원의 데이터를 추가하여 오류를 검출하고 수정해보는 활동이다.
‘귤’은 이진수 유니코드로 ‘1010101010101000’이다. 16비트로 이루어진 데이터에 오류 검출을 하고 잘못된 데이터를 수정하기 위해서 4개의 비트로 나누어서 2차원의 데이터를 넣어보자.
1 | 0 | 1 | 0 | 0 |
1 | 0 | 1 | 0 | 0 |
1 | 0 | 1 | 0 | 0 |
1 | 0 | 0 | 0 | 1 |
0 | 0 | 1 | 0 | 1 |
활동지(5-3), 필기구
1.전맹 학생의 경우 양감의 재료를 활용하여 만져서 구분할 수 있도록 판에 부드러운 재질과 까칠한 재질의 부직포를 사각형 형태로 잘라서 까칠한 부직포는 1, 부드러운 부직포는 0으로 정한 후 직접 놔보고 그에 맞는 숫자를 써보는 활동을 한다.
2.약시학생의 경우 색의 구분을 통해서 활동을 할 수 있다. (예 : 빨강은 1 흰색은 0)
3.픽셀을 그려보는 활동 외에도 포스트잇이나 양면테이프를 활용하여 붙이는 활동 등으로 대체하여 그림을 컴퓨터에 저장하는 원리를 알 수 있는 활동을 할 수 있다.
5-3패리티비트로 오류 검출하여 수정하기
앞의 두 활동은 1차원으로 데이터를 추가하여 오류를 검출할 때 사용한다. 하지만 오류를 검출만 할 수 있지 오류를 검출한 후 올바르게 수정하지는 못한다. 이에 본 활동에서는 오류를 검출하고 수정할 수 있는 2차원의 데이터를 추가하여 오류를 검출하고 수정해보는 활동이다.
1 | 0 | 1 | 0 | 0 |
1 | 0 | 1 | 0 | 0 |
1 | 0 | 1 | 0 | 0 |
1 | 0 | 0 | 0 | 1 |
0 | 0 | 1 | 0 | 1 |
1 | 1 | 1 | 0 | |
1 | 0 | 1 | 0 | |
1 | 0 | 1 | 0 | |
1 | 0 | 1 | 0 | |
1 | 1 | 1 | 0 | |
1 | 0 | 1 | 0 | |
1 | 0 | 1 | 0 | |
1 | 0 | 1 | 0 | |
1 | 1 | 1 | 0 | 1 |
1 | 0 | 1 | 0 | 0 |
1 | 0 | 0 | 0 | 0 |
1 | 0 | 1 | 0 | 0 |
0 | 1 | 0 | 0 | 1 |
1 | 1 | 1 | 0 | 1 |
1 | 0 | 1 | 1 | 0 |
1 | 0 | 1 | 0 | 0 |
1 | 0 | 1 | 0 | 0 |
0 | 1 | 0 | 0 | 1 |
1 | 1 | 1 | 0 | 0 |
1 | 0 | 0 | 0 | 1 |
1 | 0 | 0 | 0 | 0 |
1 | 0 | 1 | 0 | 1 |
1 | 0 | 0 | 1 | 0 |
1 | 1 | 1 | 0 | 0 |
1 | 0 | 1 | 0 | 1 |
1 | 0 | 0 | 1 | 0 |
1 | 0 | 1 | 0 | 1 |
1 | 0 | 0 | 1 | 0 |