티스토리 뷰
======================================================
안녕하세요 Doridori 입니다.
이번강의는 반복문2(while, do while)에 대해서 강의 하도록 하겠습니다.
while 문의 경우에는 8강의 조건문과, 9강의 반복문을 섞어 놓은 듯한 기능이라고 생각 하시면 될것 같습니다.
======================================================
반복문2 (while, do while)
Source UI) Study_10_while_do while(UI).zip
Soruce 전체) Study_10_while_do while.zip
교재) 10강 반복문2(while, do while).pdf
이번에 강의 할 반복문2의 경우 while문과 do while에 대해서 강의를 작성 하였는데
1. for 문 : 횟수에 의한 반복을 수행 할 때
2. foreach 문 : 정해진 배열에 대한 반복을 수행 할 때
3. while, do while : 조건에 의한 반복을 수행 할 때
라고 보시면 될것 같고 조건에의한 반복을 수행할 경우 라고 하는 내용은 원하는 조건이 만족이 되지 않으면 계속 반복하겠다는 의미로 생각 하시면 됩니다.
다른 반복문도 마찬가지 겠지만 특히 while이나 do while의 경우는 조건을 잘못 설정 할 경우 반복문이 끝나지 않고 계속 진행 되는 경우가 발생하게 되니 주의 해서 사용하셔야 합니다.
이번 강의에서 UI에서는 특별히 새로 적용한 컨트롤은 없지만 색상 변경과 정렬에 대해서 사용해 보았습니다.
(디자이너가 있는 프로젝트라면 소스쪽만 고민하면 될것 같으나 항상 그런 상황에서 개발할수는 없으니 원하는 화면은 구성 할수 있는것이 좋을 것 같습니다. c#으로 계속 개발을 하시려면 wpf쪽으로 UI그리는것을 배워 보셔도 좋을것 같습니다.)
이번에는 로또번호를 추출하는 프로그램과 1~100안의 숫자를 하나 골라서 랜덤으로 숫자를 뽑을 때 몇번만에 그 숫자를 뽑을 수 있는지 확인 하는 프로그램을 만들어 보았습니다.
개인적으로는 while과 do while을 구분하는데 크게 의미가 없다고 생각하기 때문에 아래의 do while문 예제에서는 굳이 do while을 쓰지 않고 while문을 썻을때 어떤 차이가 있는지 작성 하였습니다.
(실제로 프로그램을 짜다 보면 여기서는 꼭 초기에 한번은 확인하지 않고 반복을 하면 절대 안되~!!! 라는 경우가 없기때문에 효율의 문제는 있을지 모르겠지만 프로그램을 짜는데 있어서 크게 차이는 없다고 생각 합니다. 그냥 while문 전에 한번더 체크 해주면 되지 뭐 이런 느낌?)
소스 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 99 100 101 102 103 104 105 106 107 108 109 110 | using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace _10_while_do_while { public partial class Form1 : Form { /// <summary> /// 프로그램의 진입점 입니다. /// </summary> public Form1() { InitializeComponent(); } /// <summary> /// 화면에서 "로또 번호" Button을 Click 했을 때 Event를 발생 시킵니다. /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void btnResult_Click(object sender, EventArgs e) { //List<int> LArray = new List<int>(); // 1-45번호 6개 int[] iArray = new int[6]; //로또 번호를 저장 할 배열을 생성 합니다. int iCount = 0; StringBuilder sb = new StringBuilder(); Random rd = new Random(); while (Array.IndexOf(iArray, 0) != -1) //배열에서 0이 나오는 위치가 없을 경우 배열이 다 채워 졌다고 판단 합니다.(로또 숫자를 다 선택하지 못했을 경우 계속 진행) { int iNumber = rd.Next(1, 46); //(1 <= x < 46) 1~45의 숫자 중 랜덤한 하나의 숫자를 등록 합니다. if (Array.IndexOf(iArray, iNumber) == -1) // 배열에서 찾는 숫자가 없을 경우 랜덤으로 호출 한 숫자를 배열에 등록 합니다. { iArray[iCount] = iNumber; // 현재 횟수의 배열에 찾은 난수를 저장해주고 sb.Append(string.Format("{0}. ", iNumber)); iCount++; // 횟수를 하나 증가 시켜 줍니다. (난수를 저장할 배열의 위치) } } /* 숫자를 정렬해서 화면에 보여주기 위해서는? 위에서 정해진 배열을 정렬하고 그 배열을 다시 순서대로 돌려서(foreeach) 숫자를 text 형태로 작성 하면 됩니다. */ lblwhileResult.Text = sb.ToString(); lboxwhileResult.Items.Add(sb.ToString()); } /// <summary> /// 화면에서 "선택 번호 뽑기" Button을 Click 했을 때 Event를 발생 시킵니다. /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void btndowhile_Click(object sender, EventArgs e) { // 1-100 중의 숫자 1개 선택 Random rd = new Random(); int iNumber = int.Parse(tboxNumber.Text); // tboxNumber에서 지정한 숫자를 가져 옵니다. // 사용자가 요구하지 않은 숫자를 입력하였을 때 사용자에게 확인 메세지를 보냄 if (iNumber < 1 || iNumber > 100) { MessageBox.Show("1-100 사이의 숫자를 지정해 주세요."); return; } int iCheckNumber = 0; int iCount = 0; do // 난수를 생성 후에 비교를 하여야 하기 때문에 1번은 꼭 진행 해야 함 { iCheckNumber = rd.Next(1, 101); iCount++; } while (iNumber != iCheckNumber); // 비교한 값이 다를 경우 다시 찾음 /* 위에서 do while 문을 쓰지 않고 while문을 썼을때의 처리 방법 iCheckNumber = rd.Next(1, 101); // do while문을 들어가기 전에 같은 작업을 한번 더 수행 하고 들어가면 됨 if (iNumber != iCheckNumber) // 처음 한번은 꼭 진행 해야 한다는 내용때문에 do while문을 꼭 써야 한다고 생각 할 필요는 없습니다. { while (iNumber != iCheckNumber) { iCheckNumber = rd.Next(1, 101); iCount++; } } */ lbldowhileResult.Text = string.Format(" - 뽑은 숫자 {0}을 {1}회만에 찾았습니다.", iNumber, iCount); } } } | cs |
강의)
Bonus 영상)
'C# > C# 강좌 Winform' 카테고리의 다른 글
Doridori C# 강의) 12.클래스의 생성 및 사용(Class) (10) | 2018.07.30 |
---|---|
Doridori C# 강의) 11.구조체와 클래스(Struct, Class) (17) | 2018.07.22 |
Doridori C# 강의) 9.반복문1(for, foreach) (24) | 2018.07.08 |
Doridori C# 강의) 8.조건문(if else, switch) (18) | 2018.07.01 |
Doridori C# 강의) 7.Array(배열) (19) | 2018.06.16 |
- Total
- Today
- Yesterday
- 광저우
- WinForm
- C# 강좌
- 도리도리 C#
- 맛집
- 막걸리
- 아이랑
- 칵테일
- 소주
- 술
- 주말
- 게임
- 위스키
- 하이볼
- 전통주
- C# 기초 강의
- 나들이
- C#
- 와인
- 증류주
- 맥주
- 도리도리
- 서울
- 가볼만한곳
- 모바일
- 가볼만한 곳
- C# 강의
- 보드카
- Visual Studio
- 프로그램 강의
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |