C#/C# 강좌 Winform

Doridori C# 강의) 2.DataType과 Overflow

꼬꼬마도리도리 2018. 5. 13. 23:00

======================================================

안녕하세요 Doridori 입니다. 


이번강의는 지난강의와 형태는 같습니다. 


UI를 먼저 만드는 연습을 하고 DataType과 Overflow를 확인 해보는 예제를 진행 하겠습니다. 


설명을 보고 진행을 하시면 이해에 도움이 될거라고 생각 합니다.


예제파일과 교재 파일은 제가 직접 만들어서 올리고 있음으로 저작권은 제가 가지고 있습니다. 


개인 공부 목적으로 만 사용하셨으면 좋겠습니다.

======================================================


DataType과 Overflow


Source UI) Study_2_DataType(UI).zip

Soruce 전체) Study_2_DataType.zip

교재) 2강 DataType과 Overflow.pdf


프로그램을 시작 하셨으면 지난시간에 했던 글자류를 이렇게 저렇게 바꾸는 것 외 또한 자주 사용 되는 내용이 숫자를 다루는 내용들 입니다. 


보통 개발 학원에서 몇달 속성으로 배우고 실무에 투입 되신 분들의 경우 DataType에 대해서 어디까지 써봤냐 라고 물어보면 대부분이 Int 밖에 애기를 못합니다. 

많이 애기하면 Double까지 정도. . . 

그것도 소수점을 사용하기 위해서 쓰는 정도 입니다. 

PC 성능이 좋아져서 그냥 자주쓰는 것만 써도 상관은 없기는 하지만 DataType을 잘 알고 효율적으로 쓸수 있다면 프로그램의 성능이 올라갈 뿐 아니라 계산 오류라던지 의도치 않은 실수들을 줄일수도 있습니다.


Type들을 보게 되면 앞에 u가 앞에 붙어 있는 Type들이 있는데 unSigned 라고 표기 되면 음수 부호를 사용 하지 않을 경우 u가 앞에 붙어 있는 형을 사용 하고 이 형태를 사용 할 경우 음수 부호에 들어가는 크기만큼 용량이 늘어나게 됩니다.


형에 따라서 크기가 달라지는 것을 확인 할 수 있으며 효율적인 크기를 찾아서 사용 할 경우 프로그램의 성능을 증가 시킬 수 있습니다. 


Overflow의 경우 해당 DataType의 크기를 벗어나는 크기를 입력 했을 경우 발생 하게되며 발생 할 경우 개발자가 의도하지 않았던 계산이 되어 수치가 커졌거나 초기 설계 때 DataType를 잘못 설정 하였다는 뜻이므로 프로그램 수정을 하거나 DataType의 크기가 더 큰걸로 정의 할 필요가 있습니다. 


몇가지 DataType을 확인 하고 Overflow를 발생 시켜 보는 예제를 구성 하였습니다. 


Exception에 대한 내용이 살짝 나오기는 하나 지금은 그냥 따라 작성 하시고 넘어가셔도 됩니다. (뒤에 별도로 정리 할 예정 입니다.)


(이미지들이 잘 안보이시면 상단의 PDF File을 열어 보시면 됩니다.)


소스 Code 및 내용)


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
        /// <summary>
        /// 프로그램의 진입점 입니다.
        /// </summary>
        public Form1()
        {
            InitializeComponent();
        }
 
        /// <summary>
        /// 화면에서 Short 변환 Button을 Click 했을 때 Event를 발생 시킵니다.
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnShort_Click(object sender, EventArgs e)
        {
            try
            {
                short sNumber = short.Parse(tboxNumber.Text);   // tboxNumber에서 문자를 가져와서 short 형으로 변환 시킵니다.
 
                lblShort.Text = sNumber.ToString();   // 변환 시킨 숫자를 다시 문자형태로 lblShort에 표시 해 줍니다.
                lblException.Text = "-";
            }
            catch (Exception ex)   
            {
                lblException.Text = ex.ToString();  // Overflow 발생 시 예외처리를 받아 lblException에 예외 내용을 표시 해 줍니다.
            }
        }
 
        /// <summary>
        /// 화면에서 Int 변환 Button을 Click 했을 때 Event를 발생 시킵니다.
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnInt_Click(object sender, EventArgs e)
        {
            try
            {
                int sNumber = int.Parse(tboxNumber.Text);   // tboxNumber에서 문자를 가져와서 Int 형으로 변환 시킵니다.
 
                lblInt.Text = sNumber.ToString();   // 변환 시킨 숫자를 다시 문자형태로 lblInt에 표시 해 줍니다.
                lblException.Text = "-";
            }
            catch (Exception ex)
            {
                lblException.Text = ex.ToString();   // Overflow 발생 시 예외처리를 받아 lblException에 예외 내용을 표시 해 줍니다.
            }
        }
 
        /// <summary>
        /// 화면에서 Double 변환 Button을 Click 했을 때 Event를 발생 시킵니다.
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnDouble_Click(object sender, EventArgs e)
        {
            try
            {
                double sNumber = double.Parse(tboxNumber.Text);   // tboxNumber에서 문자를 가져와서 Double 형으로 변환 시킵니다.
 
                lblDouble.Text = sNumber.ToString();   // 변환 시킨 숫자를 다시 문자형태로 lblDouble에 표시 해 줍니다.
                lblException.Text = "-";
            }
            catch (Exception ex)
            {
                lblException.Text = ex.ToString();   // Overflow 발생 시 예외처리를 받아 lblException에 예외 내용을 표시 해 줍니다.
            }
        }
 
        /// <summary>
        /// 화면에서 알아서 변환 Button을 Click 했을 때 Event를 발생 시킵니다.
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnExe_Click(object sender, EventArgs e)
        {
            short sNumber = 0;
            int iNumber = 0;
            double dNumber = 0;
 
            lblException.Text = "-";
 
            if (short.TryParse(tboxNumber.Text,out sNumber))   // Short로 변환이 가능 한지 확인 해보고 변환이 가능 할경우 
            {
                lblShort.Text = sNumber.ToString();   // short 형태로 변환 합니다. 
            }
            else if (int.TryParse(tboxNumber.Text, out iNumber))  // 위의 If에서 Int로 변환이 불가능 할경우 이줄에서 Int로 변환 가능 한지 확인 하고 변환 가능 할 경우
            {
                lblInt.Text = iNumber.ToString();   // Int 형태로 변환 합니다. 
            }
            else if (double.TryParse(tboxNumber.Text, out dNumber))  // 위에서 Short, Int로도 변환이 불가능 할 경우 Double로 변환 가능한지 확인 하고 변환 가능 할 경우
            {
                lblDouble.Text = dNumber.ToString();  // Double 형태로 변환 합니다.
            }
            else
            {
                lblException.Text = "변환 할수 없음";  // Short, Int, Double 형태로 변환이 불가능 할 경우 "변환 할수 없음"으로 표시 합니다.
            }
        }
cs



강의)