연산자(Operator)


산술 연산자

산술 연산자는 덧셈, 뺄셈, 곱셈 등과 같이 대수연산기능을 제공한다.



연산자

기능

사용 예제
x=5, y=3

+

더하기

Z=x+y   z 8

-

빼기

Z=x-y    z2

*

곱하기

Z=x*y    z 15

/

나누기

Z=x/y    z 1.66666

몫 구하기

Z=xy   z 1

^

지수 연산

Z=x^y   z125

Mod

나머지 구하기

Z=x Mod y  z 2



결합 연산자(&)

문자열을 결합하는데 사용한다.


Dim str As string

str = “I love” & “You!”

 

비교 연산자

크기 비교를 수행하며 결과값은 True, False이다.

연산자

기능

=

 같다

> 

크다

< 

 작다

>=

 크거나 같다

<=

 작거나 같다

<> 

 다르다


논리 연산자

주로 좌, 우 논리값을 비교하여 최종 논리 결과(True, False)를 얻어내는데 사용한다.

 

논리 연산자

기능

Not

논리부정

And

논리곱(두 값 모두 참일 때 참)

Or

논리합(두 값 중 하나만 참이어도 참)

Eqv

동치(두 값이 서로 같을때만 참)

Xor

베타 논리합(두 값이 서로 다를 때만 참)


프로그램을 짜다보면서 기본의 중요성을 많이 느낍니다.
단순해 보일지 모르지만 처음 프로그래밍 세계에 접하시는 분들이라면
하나 하나씩 익혀두시는 것이 실제로 프로그램을 짤때 어떻게 사용하는지 몰라
당황하는 것보다 나을 것이라고 생각합니다.

그럼 연산자에 관한 내용은 이 정도로 마칩니다.
Posted by 원철연(체르니)
,

적용하려는 데이터형이 일정치 않을 때 보통 예전에는 Variant형을 썼지만
메모리 낭비가 발생하게 되는 단점이 있다.

이러한 메모리 낭비를 줄이기 위해서는 코딩시 정확한 자료형을 사용하면 된다.

그래서 이번에는 Visual Basic 2008에서 사용되는 자료형을 알아보자.

Visual Basic 2008에서 사용되는 자료형

Short, UShort, Integer, UInteger, Long, ULong, Single, Double, Decimal, Byte, SByte, Char, String, Boolean, Date, Object, 사용자 정의 자료형

예전에 VB를 짜보거나 다른 프로그래밍 언어를 사용해 본적이 있다면 쉽게 이해할 수 있는 자료형이라고 생각됩니다.


[참고] Variant
예전 버전에서는 변수선언시 데이터 유형을 지정하지 않으면 Variant형으로 자동 지정되었으나 Visual Basic 2008부터는 Variant형이 지원되지 않는다. 그 대신 object형이 등장함.

여기서는 기본자료형 설명은 제외하고 사용자 정의 자료형을 알아봅니다.

예를 들어, C 언어를 사용해 보신 분들이라면 아시겠지만. 구조체와 비슷한 형태로 만들어서 사용하는 법을 보도록 하겠습니다.

폼 클래스 밑에 아래와 같이 입력합니다.
Structure student

        Dim Name As String

        Dim Number As String

        Dim English As UShort

        Dim History As UShort
End Structure
물론 향후 공부하게 되면 자신만의 모듈을 만들어서 그곳에 넣어놓고 불러서 사용할 수 있습니다.

[예제] 사용자 정의 데이터형

Public Class Form1

'사용자 자료형

    Structure student

        Dim Name As String

        Dim Number As String

        Dim English As UShort

        Dim History As UShort

    End Structure

 

 

    Private Sub Button1_Click(ByVal sender As System.Object,
         ByVal e As System.EventArgs) Handles Button1.Click

       'OurStudent
사용자정의 자료형인 student 선언

        Dim OurStudent As student

       '변수에 할당

        OurStudent.Name = "홍길동"

        OurStudent.Number = "2002975"

        OurStudent.English = 98

        OurStudent.History = 78

 

        MsgBox("학생의 이름, 학번, 영어점수, 국사점수는 각각 " _ 
        &  OurStudent.Name & "," & OurStudent.Number & _

        "," & CStr(OurStudent.English) & "," & _
        CStr(OurStudent.History) & "
입니다.", , _
        "
사용자정의 데이터  예제")

 

    End Sub

End Class

[참고] Cstr() 함수
문자열 자료형으로 변환해주는 함수. 위의 경우에는 English, History가 UShort형이므로
이를 문자열로 바꿔주었음.


실행 화면
(버튼 하나만 배치하였음)


사용자 삽입 이미지

사용자 정의 데이터 테스트 버튼을 눌렀을 때

사용자 삽입 이미지

이상으로 사용자 정의 자료형에 대해서 알아봤습니다. 쉽지요?
그럼 다음 강좌를 기대해 주세요.

'컴퓨터 관련 무료강좌 > 비주엘 베이직 2008' 카테고리의 다른 글

VB2008 강좌-If 조건문  (0) 2008.03.24
VB2008 강좌- 연산자  (0) 2008.03.23
VB2008 강좌-InputBox사용하기  (0) 2008.03.21
강좌-변수 관련 1  (1) 2008.03.20
강좌-MsgBox 다루기  (4) 2008.03.19
Posted by 원철연(체르니)
,

InputBox 사용하기

 

프로그램을 만들다보면 사용자로부터 데이터를 받아서 처리해야 할 경우가 의외로 많은 것 같다. 그럴 경우 사용자가 선택할 수 있는 것들을 미리 정해놓고 그 가운데 선택하도록 하는 하는 방법과 사용자가 직접 입력하도록 하는 방법이 있는데 오늘은 그 중에서 유용하게 쓸 수 있는 InputBox에 대해서 알아보고자 한다.

함수 정의

Public Function InputBox( _

   ByVal Prompt As String, _

   Optional ByVal Title As String = "", _

   Optional ByVal DefaultResponse As String = "", _

   Optional ByVal Xpos As Integer = -1, _

   Optional ByVal YPos As Integer = -1 _

) As String


만들어 보기


Button
컨트롤 1개를 폼에 배치한다.

실행했을 때(F5를 눌렀을 때)  폼이 뜨면 버튼을 클릭하면 InputBox가 나와서 내가 원하는 것을 입력하면 메시지 박스가 떠서 입력한 내용을 보여주는 간단한 프로그램이다.

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

 

        Dim Input As String

 

        Input = InputBox("당신이 지금 원하는 것은?")

        MsgBox("당신이 입력한 것은 : " & Input)

 

End Sub

폼에 버튼 하나를 배치하고 더블 클릭해서 위의 코드를 입력한 후 F5를 누르면 잘 실행되는가요?

비주얼 베이직 6.0 같으면 아무런 문제없이 잘 될 것이다.

하지만 VB2008, vista환경에서는 잘 안되는 것 같다.

발생된 에러

Error     1   'InputBox' is a namespace and cannot be used as an expression.


그래서 웹을 검색해서 찾아보니 아래와 같이 한 줄을 바꿔주면 잘 되었다.

해결

        Input = Interaction.InputBox("당신이 원하는 것은 : ")


여기서 Interaction 모듈은 객체들, 응용프로그램들, 시스템들과의 상호작용을 하기 위해 이용되는 프로스져들을 포함하고 있다.

Posted by 원철연(체르니)
,

변수(Variable)

 

Visual Basic 2008에서 변수선언

Dim
변수명 As 변수자료형

여기서 Dim Dimension의 약자이다.


Dim strCopy As String  ‘strCopy
라는 문자열형 변수선언

선언된 변수에 값 할당하기


strCopy=”
안녕하세요. 여러분!”


변수의 명시적 선언

1. Option explicit

  ‘on’ 상태일 때 선언되지 않은 변수명을 만나면 에러 메시지를 표시

2. Option Infer ->Visual Basic 2008에서 추가된 기능

  Infer option‘on’ 상태이면 초기에 설정된 변수형을 추측하여 해석

  예를 들면
Dim intnumber=100
이라고 변수를 선언, 값을 할당했을 경우

 
Infer option
‘on’ 상태이면 아래와 같이 해석한다.

  Dim intnumber As Integer = 100

 
그러나 만일 Infer option‘off’ 상태이면 object로 저장된다
.
따라서 보다 효율적인 데이터 공간을 이용해서 프로그래밍하고자 할 경우에는
모듈 최상위에

Option Infer On

 
이라고 해주면 Infer 옵션을 사용할 수 있게 되는 것이다.

 하지만 이것보다도 더 좋은 방법은 변수 선언시 정확한 자료형을 정의해서 사용하는 것이
 좋다고 생각한다.

[참고] 프로젝트 IDE에서 설정하는 방법

사용자 삽입 이미지

위에서 Options..를 선택하면 아래와 같은 Options 화면이 나온다.
여기에서 설정을 해주면 된다.
사용자 삽입 이미지

이상으로 변수에 관한 첫번째 내용을 마칩니다.
편안한 밤들 되시길...
Posted by 원철연(체르니)
,

오늘은 MsgBox에 대해서 보다 심도있는 내용을 올려봅니다.
결과를 먼저 볼까요?

사용자 삽입 이미지
폼 1개, Button1, button2, Text1 박스 한 개를 이용해서 만들어 보았습니다.
각각의 Button컨트롤을 누르면 메시지 박스가 뜨도록 처리하였는데요.

먼저 Button1을 누르면
사용자 삽입 이미지
코드는
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

        Dim msg, button, title '메시지 박스 인수들에 넣어줄 변수 선언
        msg = "첫번째 테스트입니다. 줄을 바꿔볼까요?" & Chr(10) & "줄이 바뀌었네!!"
        button = vbYesNoCancel + vbInformation
        title = "메시지박스 첫번째 테스트"
        MsgBox(msg, button, title)

End Sub


두번째 버튼을 클릭하면

사용자 삽입 이미지
코드는
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click

        Dim msg, button, title, response
        msg = "두번째 테스트입니다." & Chr(10) & "프로그래밍 배우기가 쉬운가요?
                   아니면 어려운가요?"
        button = vbYesNo + vbInformation
        title = "메시지박스 두번째 테스트"

        response = MsgBox(msg, button, title) '메시지 박스에서 버튼클릭결과를 받기 위함

        '메시지박스 결과에 따른 후속처리 요청하는 부분
        '이런 식으로 메시지 박스 선택한 것에 따라 DB에 데이터를 저장,삭제,조회 등
        '원하는 작업을 처리할 수 있도록 한다.
        If response = MsgBoxResult.Yes Then
            TextBox1.Text = "프로그래밍 고수가 될 소질이 있으시군요."
        Else
            TextBox1.Text = "열심히 하다보면 고수가 될 수 있을 겁니다."
        End If
End Sub

그냥 봐서는 모르겠지요.
자세히 알아 볼까요?

MsgBox 함수 정의
Public Function MsgBox( _

   ByVal Prompt As Object, _

   Optional ByVal Buttons As MsgBoxStyle = MsgBoxStyle.OKOnly, _

   Optional ByVal Title As Object = Nothing _

) As MsgBoxResult


Buttons 인수에 사용되는 상수

사용자 삽입 이미지
Title 인수는 메시지 박스의 타이틀을 나타냄

MsgBox 결과 상수(vB6.0 과 비교하여)
사용자 삽입 이미지

마지막으로 Chr(10)은 무엇인지 궁금할텐데요. 줄바꾸기를 해주는 겁니다.
그럼 그림으로 이해를 해볼까요?
사용자 삽입 이미지

이해가 되시는지요? 시간나실 때 직접 위와 같은 코드를 입력해 보시고 상수들도 변경해서 해보시고 자신만의 처리루틴을 만들어서 메시지박스 결과에 따라서
후속 작업을 해보도록 하는 것은 어떨까요?
그럼 오늘은 이정도로 마치겠습니다.

Posted by 원철연(체르니)
,
오늘은 폼 디자인하는 법에 대해서 간략하게 다뤄볼까 합니다.

먼저 새로운 프로젝트를 엽니다.
사용자 삽입 이미지















프로젝트명을 MyShopping으로 생성합니다.
생성된 프로젝트에서 Form1.vb를 클릭하여 컨트롤들을 배치합니다.

먼저 폼에 배치한 컨트롤들의 속성들을 다음과 같습니다.
사용자 삽입 이미지

















그러면 배치한 그림을 볼까요?
사용자 삽입 이미지























위 그림에서 폼에 어떻게 그림을 넣었을까 궁금하시진 않은가요? BackGroundImage에서
원하는 그림을 선택해주면 적용이 됩니다.
자신이 직접 포토샾같은 디자인툴로 배경 이미지를 만들어 폼 바탕으로 해서 프로그램을
만들면 괜찮겠죠^^;;

(바탕그림은 d&shop을 캡쳐해서 수정해서 사용했습니다. 혹시라도 문제가 있으시면
 제게 댓글이나 이메일(cywon11@empal.com)으로 주시면 삭제토록 하겠습니다.)

다음으로  GroupBox1, GroupBox2의 바탕을 투명하게 만들어 보겠습니다.
GroupBox의 속성상자에서 변경해주면 되는데요. 아래와 같이 하시면 됩니다.

사용자 삽입 이미지


























Web 탭에서 Transparent(투명한)을 선택해주면 됩니다. 쉽지요?
이렇게 해서 최종적으로 간단하게 만들어 본 화면은 아래와 같습니다.
사용자 삽입 이미지


이상으로 간략하게 폼 디자인을 알아봤습니다.
ListBox와 ComboBox는 BackColor를 투명하게 하는 기능을 지원하지 않고 Button컨트롤은 지원되는데 제가 실력이 달려서 찾지를 못했습니다. 혹시 아시는 분은 댓글 남겨주시면 감사하겠습니다. 그럼 오늘은 이만하지요.
Posted by 원철연(체르니)
,

오늘의 학습내용

1. Label, Button, CheckBox, PictureBox, Group 컨트롤 사용
2. CheckBox
가 선택될 때마다 이미지 보여주고 감추기 기능 배우기
3.
조건문, Form Load시 초기화 해주기


학습순서
1. 새로운 프로젝트를 생성

2. 필요한 컨트롤들을 폼에 배치한다.

3. 각 컨트롤들의 속성 및 폼의 초기화 진행

4. 실행해본다.

 
1. 새로운 프로젝트를 생성

사용자 삽입 이미지















2.
필요한 컨트롤들을 폼에 배치한다.


사용자 삽입 이미지
























3.
각 컨트롤들의 속성 및 폼의 초기화 진행

CheckBox1 관련
    Private Sub CheckBox1_CheckedChanged(ByVal sender As System.Object, ByVal e As
    System.EventArgs) Handles CheckBox1.CheckedChanged

   '체크박스1이 체크된 상태이면 픽쳐박스1을 화면에 보여주고 그렇지 않으면 보이지
        않게 하라는 조건문

        If CheckBox1.Checked = True Then
            PictureBox1.Image = System.Drawing.Image.FromFile("E:\컴퓨터\Visual Basic
            NET\2008\티스토리에 올릴 강좌\강좌 2\황학루.jpg")
            PictureBox1.Visible = True
        Else
            PictureBox1.Visible = False
        End If
   
End Sub

CheckBox2 관련
    Private Sub CheckBox1_CheckedChanged(ByVal sender As System.Object, ByVal e As
    System.EventArgs) Handles CheckBox1.CheckedChanged

   '체크박스2이 체크된 상태이면 픽쳐박스2을 화면에 보여주고 그렇지 않으면 보이지
        않게 하라는 조건문

        If CheckBox2.Checked = True Then
            PictureBox2.Image = System.Drawing.Image.FromFile("E:\컴퓨터\Visual Basic
            NET\2008\티스토리에 올릴 강좌\강좌 2\하늘위에서.jpg")
            PictureBox2.Visible = True
        Else
            PictureBox2.Visible = False
        End If
   
End Sub

    PictureBox1, PictureBox2 관련
    PicutreBox1.Image 속성에 PictureBox1에 표시할 이미지를 선택해주고
    PicutreBox1.SizeMode는 StretchImage로 해준다.

    Form1 관련
     Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As
     System.EventArgs) Handles MyBase.Load

 
       '폼을 로드할 때 초기화해 줌
        CheckBox1.Checked = True
        CheckBox2.Checked = False

        PictureBox1.Visible = True
        PictureBox2.Visible = True
    End Sub


4. 실행해본다.

사용자 삽입 이미지























[참고] 샘플파일

invalid-file

샘플파일


이상으로 2번째 시간을 마칩니다. 참고로 올린 샘플 프로그램에서
사용된 이미지들은 다른 것으로 변경하여 적용해 보시면 될 듯 합니다.

Posted by 원철연(체르니)
,

비주얼 베이직을 손에서 놓은지 4년이 지났지만 다시 보니 새롭기도 해서
비주얼 스튜디오 2008 + 비스타 환경에서 틈나는대로 올려볼까 합니다.
대상은 당연히 처음시작하는 분들이겠지요^^;;

그 첫번째 시간으로 Hello world와 간단한 자기 생일 표시하는 프로그램을 올려봅니다.

학습내용
1. 컨트롤 익히기 : TextBox, Button, DateTimePicker, Group
2. 간단한 조건문
3. 간단한 함수 : Val, Left, MsgBox
4. 세부사항들은 하나씩 변화를 줘가면서 실행결과를 보면 각 컨트롤에 대해서 이해를
    할 수 있을 겁니다.


자 그럼 시작해 볼까요?

사용자 삽입 이미지


OK 버튼을 누르면

사용자 삽입 이미지

이렇게 하여 HelloWorld라는 프로젝트가 생성되었습니다.

Form1.vb를 클릭하여 아래와 같이 해당 컨트롤들을 위치시키고 각 컨트롤의 Properties를 변경해 줍니다.(이부분은 첨부한 파일을 열어보시면 아실 수 있습니다.^^;;)

최종 폼 디자인은 아래와 같습니다.
사용자 삽입 이미지


자 이제 제대로 동작하기 위해 코드를 작성해 봅니다.

먼저 HelloWorld 그룹의 확인 버튼을 더블 클릭하여 아래와 같이 입력합니다.
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        TextBox1.Text = "Hello, world!"
End Sub

그리고 지우기 버튼을 더블 클릭하여 아래와 같이 입력합니다.
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
        'TextBox1의 어떠한 글자가 표시되어 있으면 지우라는 조건문
        If TextBox1.Text <> "" Then
            TextBox1.Text = ""
        End If

        'TextBox1에 지울내용이 없으면 표시하도록 한 것
        If TextBox1.Text = "" Then
            MsgBox("지울내용이 없습니다요..헤헤")
        End If
    End Sub

이렇게 하면 HelloWorld 그룹쪽은 코딩이 끝납니다.

다음으로 생일 보여주기 그룹의 내생일 보여주기를 더블클릭합니다. 그리고 아래와 같이 코딩합니다.
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click

        Dim strDate As String
        Dim strYear As String
        Dim IntYear As Integer
        Dim IntCompYear As Integer


        strDate = DateTimePicker1.Text
        strYear = Microsoft.VisualBasic.Left(strDate, 4) 'Left(문자열, 길이) 왼쪽에서 길이만큼
        잘라낸다. 'VB6.0시절엔 Left(strDate,4)써도 괜찮았는데 그사이 많이 바뀐 듯 하군요
.
        IntYear = Val(strYear)
        IntCompYear = 2008 - IntYear

        '프로그래밍을 할 수 있는 최소 나이는 8살이라고 보고 현재 2008 - 2000을 기준으로 제한을
         둔 조건문
        If IntCompYear <= 8 Then
            MsgBox(IntCompYear & " 살이라니 당신은 컴퓨터 프로그래밍을 하기에는 너무 어린 나이
            에요!. 원래 나이를 입력해주세요.")
            Exit Sub '아래의 코드를 실행하지 말고 이 버튼2클릭을 빠져나가라는 부분 
        End If

        MsgBox("당신의 생일은" & DateTimePicker1.Text)
        MsgBox("그해의 날은" & DateTimePicker1.Value.DayOfYear.ToString())

    End Sub

이렇게 한 후 F5키를 눌러 실행해 보면

사용자 삽입 이미지


Hello world 그룹의 확인 버튼 클릭후
사용자 삽입 이미지


생일보여주기 그룹의 내생일보여주기에서 현재 날짜 상태에서 내생일보여주기 클릭시
(정확한 자신을 생일은 DateTimePicker 컨트롤의 달력모양을 클릭하여 선택할 수 있음)
사용자 삽입 이미지










이상으로 몇 개의 컨트롤과 간단한 조건문, 함수의 사용법을 알아보았음.
이 간단한 프로그램도 여러가지 세부적인 조건들을 구미에 맞게 걸어보시길 바라구.

이 프로그램 정도를 이해할 수 있으면 기본적인 것은 갖춰졌다고 생각합니다.
그럼 오늘은 이정도로 하구 혹시라도 그럼 안녕~

[참고] 소스를 올립니다.

Posted by 원철연(체르니)
,