비주얼프로그래밍 (Visual Basic.NET) 2016-09-05 (02 주차 ) 홍명덕 Artificial Intelligence Lab. http://ailab.inha.ac.kr
1 장 ~ 5 장범위요약 2
VB.NET 다운로드 https://www.visualstudio.com/ 3
4 개발환경
5 VB.NET 단축키
VB.NET 기본개념 (1) 이벤트기반프로그래밍 (p.44) 절차형 ( 순차적 ) 프로그래밍방식 도스DOS 운영체제에서사용 프로그램을작성할때명령어의처리순서를고려 순서들을조금씩구조화해서함수라는형태로정의하고호출해사용 이벤트기반 ( 처리형 ) 방식 이벤트는프로그램에서감지한어떤행동이나발생한사건 사용자가발생시킨이벤트에따라미리정해진명령을처리 6
VB.NET 기본개념 (2) 개체와컨트롤 (p.45) 개체 우리가살아가는세계에실제로존재하는것과생각할수있는것 특징, 기능 ( 동작 ), 행위로표현 컨트롤 비주얼베이직에서는도구상자에포함된텍스트박스, 버튼, 리스트박스등의각컨트롤이개체에해당 개체는특징에해당하는속성 (property), 기능인메서드 (method), 행위인이벤트 (event) 를가짐 동일한컨트롤로만든개체는기본적인값은같지만각개체의특성에맞게변경 표준컨트롤과 ActiveX 컨트롤 7
VB.NET 기본개념 (3) 속성 (p.46) 개체의색상, 크기, 위치와같은외형을정의하는특성 개체마다속성이다름 레이블 - 제목용으로사용되어글자를표시하는속성이대부분이므로그림속성이없음 픽처박스 - 그림을넣는컨트롤이므로그림에관한속성이다양하지만글자에대한속성이없음 메서드 개체가수행하는동작이나기능을정의 각컨트롤의기능에따라정의된메서드가다름 비주얼베이직프로그래밍은각컨트롤이가진속성과메서드를이용하여어떤기능을하게만드는작업임 8
VB.NET 기본개념 (4) 이벤트 (p.46) 개체가사용자나시스템으로부터받는명령 개체가반응할수있는특정사건임 사용자가마우스를움직이는행위, 키보드로문자를입력하는행위, 버튼을클릭하는행위가이벤트에해당 프로시저 이벤트를처리하는단위로, 어떤행동을수행하기위한일련의작업순서 특히이벤트프로시저는사용자가이벤트를발생시키면이를처리하기위해자동으로호출됨 프로시저는이벤트를처리하기위한메서드와변수제어문등을포함 이벤트프로시저 이벤트가발생했을때자동으로호출되는프로시저 9
VB.NET 기본개념 (5) 비주얼베이직프로그램의구조와작성과정 (p.47) 화면 ( 인터페이스 ) 을만들고각개체의속성을설정한후코드를작성하여프로그램을완성함 비주얼이라는시각적요소와이시각적요소를마우스로클릭했을때어떤동작을하는명령코드로구성됨 10
11 윈도우폼컨트롤 (p.60)
버튼컨트롤 버튼 (Button) (p.65) 사용자가버튼을클릭하여이벤트를발생시키면버튼에연결된명령을처리 12
레이블컨트롤 레이블 (Label) (p.67) 문자를출력하는컨트롤 출력되는문자열을사용자가편집할수없기때문에다른컨트롤의제목이나용도를표시하는데주로사용함 13
텍스트박스컨트롤 텍스트박스 (Textbox) (p.69) 텍스트를입력하고편집할때사용 14
체크박스, 라디오버튼컨트롤 (1) 체크박스 (CheckBox), 라디오버튼 (RadioButton) (p.76) 데이터입력시문자를직접입력하지않고사용자가선택할수있는예시를보여주고, 마우스클릭만으로필요한데이터를입력할수있도록하는컨트롤 체크박스컨트롤 그룹으로묶인여러항목중하나이상을선택할때사용 참 (True) 과거짓 (False) 중한가지상태만가질수있음 라디오버튼컨트롤 여러항목중하나만선택할때사용 동시에여러항목을선택할수있는체크박스컨트롤과달리한항목만선택할수있음 15
16 체크박스, 라디오버튼컨트롤 (2)
그룹박스컨트롤 (1) 그룹박스 (GroupBox) (p.80) 여러개의컨트롤을그룹으로묶어서로연관된항목임을보여줄때사용 관련된컨트롤을묶어그룹을만들때사용 도구상자의컨테이너그룹에서찾을수있음 17
그룹박스컨트롤 (2) 그룹박스 (GroupBox) 컨테이너 그룹박스와같이다른개체를하나이상포함하는것 컨테이너가움직이면안에포함된개체도함께움직여컨테이너밖으로나오지않음 그룹박스를옮길때안에포함된컨트롤도함께움직이게하는방법 먼저그룹박스컨트롤을만듬 그룹박스컨트롤을선택한상태에서그안에넣을컨트롤을선택하여그룹박스안에서드래그하여그려넣음 ( 더블클릭해서그리면안됨 ) 18
리스트박스콘트롤 리스트박스 (ListBox) (p.83) 사용자가직접입력하지않고목록으로제시된항목중에서원하는것을선택하도록유도할때사용 폼에디자인된목록의크기보다항목의개수가많으면스크롤바가자동으로추가됨 19
콤보박스컨트롤 콤보박스 (ComboBox) (p.87) 텍스트박스와리스트박스의기능이합쳐진형태 리스트박스처럼목록을선택하고텍스트박스처럼내용을입력할수도있음 화살표모양의목록단추를누르면드롭다운 ( 펼침 ) 목록이나타나는데, 사용자는그목록중원하는내용을선택하여입력함 20
변수 변수의개념 (p.94) 변수 프로그램이실행되는동안사용자가입력한값이나계산한출력값등을저장하는기억공간 변수선언 프로그래머가프로그램을작성하다가기억공간이필요하면변수의이름과크기를컴퓨터에알려주는것 컴퓨터는요청받은크기만큼기억공간을확보하고시작주소를프로그램에알려줌 프로그램은할당된시작주소와선언된변수명을매칭하여사용함 21
데이터형 데이터형 (p.96) 변수의데이터형은변수가몇바이트의기억공간을차지해야하는지, 그기억공간에어떤형태로저장되는지결정함 22
변수의유효범위 변수의유효범위 (p.102) 변수는자신을선언하는 Dim 문을포함한코드범위안에서만값을가질수있음 유효범위 변수가메모리를차지하고값을유지하는구간 지역변수의사용 지역변수는메모리반납여부에따라 Dim과 Static( 정적 ) 변수로나뉨 23
연산자 연산자 (p.110) +, -, *, / 과같이이미정의된연산을수행하는기호 피연산자 연산의대상또는연산자의동작을받는변수나값 24
산술연산자 산술연산자 (p.110) 25
관계 ( 비교 ) 연산자 관계 ( 비교 ) 연산자 (p.112) 두피연산자의대소관계를비교하여참이면 True, 거짓이면 False 값을반환 26
논리연산자 논리연산자 (p.114) 논리식의참과거짓을판정하여 True/False 를반환 27
대입연산자 대입연산자 (p.115) 1 의자리에는값을저장할수있는변수등이와야하고, 2 의 자리에는값자체나값을담고있는변수등이올수있다. 28
연결연산자 연결연산자 (p.116) 문자열들을결합하여하나의문자열을반환 + 연산자는문자열만연결할수있음 29
연산자우선순위 연산자우선순위 (p.117) 연산자는크게괄호 산술연산자 연결연산자 관계연산자 논리연산자순으로계산 비교연산자끼리는우선순위가같아왼쪽에서오른쪽으로진행 산술연산자와논리연산자는 [ 표 4-12] 와같은우선순위에따라계산 30
제어문정의 제어문의정의 (p.126) 프로그램의실행을인위적으로조작하는명령문 프로그램이실행될때처리할순서를결정함 31
제어문종류 제어문의종류 (p.127) 조건문 - 조건을검사하여그결과에따라선택적인작업을수행 반복문 - 조건에따라원하는명령문을반복수행 32
조건문 If If 문의 3 가지유형 (p.128) 33
조건문 Select Select - Case 문 (p.135) 해당하는 Case를찾아연결된명령문을수행하고 Select~Case 문을빠져나감 조건에해당하는값이없을때, 실행할코드는 Case Else 다음에지정함 34
반복문 For For - Next 문 (p.142) 반복문은주어진조건에따라명령문을반복해서실행시킬때사용함 반복횟수를지정하고싶다면 For 문을사용하고특정조건을만족할경우에만반복시키려면 Do나 While 문을사용함 35
반복문 Do Do - Loop 문 (p.149) 주어진조건을만족할때까지명령문을반복수행하며, 반복횟수는조건의만족여부에따라달라짐 유형 1. 반복하기전에조건이참인지먼저검사함. 조건이참일경우에만 Do 문에속한명령문을반복하며, 조건이거짓이면반복을중지하고 Loop 다음명령문을수행함 유형 2. 반복할명령문을일단수행함. 그후에조건을검사해서조건식이참이면명령문을반복하는구조이므로반복명령문을최소한한번은수행함 36
반복문 While While 문 (p.151) 주어진조건을만족하면명령문을반복수행함 반복횟수는조건만족여부에따라달라지는데경우에따라반복명령문을한번도실행하지않을수도있음 37
기타제어문 Exit Exit 문 (p.153) 더이상반복하지않고반복구조를즉시빠져나가반복문다음명령문을수행함 38
기타제어문 GoTo GoTo 문 (p.154) 별도의레이블을지정해놓고해당레이블로건너뜀 프로그램의실행순서를간단히변경할수있어서유용하지만많이사용하면제어순서를복잡하게만듬. 그러므로꼭필요한경우가아니라면사용을자제하는것이좋음 39
기타제어문 With With 문 (p.156) 한개체와관련하여여러명령문을수행해야할경우에사용함 40
예제 ) W02_01_LOTTO 로또번호자동생성프로그램 41
예제 ) w02_01_lotto 폼디자인 Form : Form1 Label : Label1 Button : Button1 btnlotto TextBox : TextBox6 txtn6 TextBox : TextBox5 txtn5 TextBox : TextBox4 txtn4 TextBox : TextBox3 txtn3 TextBox : TextBox2 txtn2 TextBox : TextBox1 txtn1 42
예제 ) w02_01_lotto 개체속성설정 컨트롤이름 속성명 속성값 Form1 Text 로또번호생성기 Label1 Text 로또번호 btnlotto Text 번호생성 참고사항 Rnd() : 0부터 1사이의임의의실수를생성하는함수 Math.Floor() : 해당실수의최대정수를반환하는함수 Val() : 숫자로반환하는함수 43
예제 ) w02_01_lotto 코드작성 btnlotto 를더블클릭하여이벤트연결 44
예제 ) w02_01_lotto 수정사항들 1. 매번실행시같은값이나옴 Randomize() : 난수생성기를초기화하는함수 2. 중복된값이나옴 기존에값이중복되었는지확인하여중복된경우바꾸기로함 45
예제 ) w02_01_lotto 어떻게중복값을체크할까? Dim lotto(6) As Integer 0 0 0 0 0 0 For i = 1 To 6 Step 1 Next i 32 0 0 0 0 0 32 25 0 0 0 0 i = 1 i = 2 32 25 27 0 0 0 i = 3 32 25 27 14 0 0 i = 4 32 25 27 14 14 0 i = 5 32 25 27 14 14 35 i = 6 46
예제 ) w02_01_lotto 어떻게중복값을체크할까? Dim lotto(6) As Integer 0 0 0 0 0 0 For i = 1 To 6 Step 1 Do For j = 1 To i - 1 Step 1 If Next j Loop While (chk) Next i 32 0 0 0 0 0 32 25 0 0 0 0 32 25 27 0 0 0 32 25 27 14 0 0 i = 1 i = 2 i = 3 i = 4 32 25 27 14 14 35 0 i = 5 32 25 27 14 35 1 i = 6 47
예제 ) w02_01_lotto 코드수정 ( btnlotto_click() 프로시저 ) 48
예제 ) w02_01_lotto 수정사항들 3. 결과를계속남겨보자 폼디자인 TextBox : txtlotto 49
예제 ) w02_01_lotto 개체속성설정 컨트롤이름 속성명 속성값 txtlotto Multiline True txtlotto ScrollBars Vertical 코드수정 ( btnlotto_click() 프로시저 ) 50