Form Follows Energy

건물 에너지, IT와 여러 가지 글들

부울 변수의 변환

January 7th, 2008

Visual Basic에서 숫자 데이터 형식 값을 Boolean으로 변환하는 경우 0은 False가 되고 다른 모든 값은 True가 된다. Visual Basic에서 Boolean 값을 숫자 값으로 변환하는 경우 False는 0이 되고 True는 -1이 된다. 반면에 C/C++ 또는 Java는 True값을 1로 하기에 바로 수식 계산에 이용할 수 있다. 다른 언어의 이와 같은 코드를 바로 옮기면 오류가 발생할 수 있다.

설정내용을 외부에 저장하기

November 3rd, 2007

프로그램의 설정을 다음 번에도 사용하기 위해서는 프로그램 외부에 설정내용을 저장해야 한다. VB2005부터는 My.Settings라는 클래스를 통해서 설정내용을 저장할 수 있다.
프로젝트 디자이너에서 응용 프로그램 설정을 추가하려면
1. 솔루션 탐색기에서 프로젝트를 선택하고 프로젝트 메뉴에서 속성을 클릭합니다.
2. 설정 창을 선택합니다.
3. 설정 표의 빈 행을 클릭합니다.
4. 이름 열에 설정 이름을 입력합니다. 이름에는 공백을 사용할 수 없습니다.
5. 형식 드롭다운 목록에서 설정의 데이터 형식을 선택합니다.
6. 범위 드롭다운 목록에서 설정 범위를 선택합니다. 설정 범위는 응용 프로그램 또는 사용자가 될 수 있습니다.
7. 값 열에 설정의 기본값을 입력합니다. 값은 선택한 데이터 형식에 적합해야 합니다.

문자열 비교를 효과적으로 하기

October 31st, 2007

문자열이 NULL인 경우를 판단해야 할 때가 많다. 특히 파일명을 입력받는 과정에서 아무값도 넘겨주지 않는 경우도 고려해야 한다.
일반적으로 문자열비교는 그 내용을 가지고 하지만, NULL인지 여부를 판단하는 경우에는 문자열의 길이로 판단하는 것이 훨씬 빠르다.

동적 메모리 할당 ReDim에 관하여

January 3rd, 2007

처리해야 할 정보의 양에 맞게 변수를 선언하는 것이 프로그래밍의 기본이다.
그러나, 프로그램을 작성하다보면 처리해야 할 정보의 양이 고정되어 있지 않고 상황에 따라 변하는 경우를 자주 만나게 된다. 그렇다면 정보량이 변하는 경우는 어떻게 변수를 선언하고 관리할 것인가?
비주얼베이직에서는 정보량 변화를 수용하기 위하여 변수 크기에 대하여 동적으로 할당할 수 있는 장치를 마련하였다. 그것이 바로 ReDim이다.

그 사용법을 보면 다음과 같다.
1) 최초 변수를 선언할 때, 그 크기를 비워둔다.

보통 배열을 선언할 때, 그 크기를 “1 To 10″과 같이 그 크기를 명시하지만, 여기서는 크기를 비워두는 것이 핵심이다.

2) 상황에 따라 배열의 크기를 설정한다.

상황에 따라 10개가 필요하면 10을 100개가 필요하면 100을, 아니면 특정 변수만큼 필요하면 해당 변수(여기서는 NumberOfData)를 넣어서 그 크기만큼 변수를 만들 수 있다.

이 방법을 사용하는 데 있어서 유의할 것도 있다.
1) 프로그램의 속도가 느려진다.
특히 ReDim을 루프와 같이 반복 계산되는 곳에 두면 프로그램의 속도는 눈에 띄게 느리게 될 것이다. 따라서, 변수의 양이 루프 밖에서도 알 수 있다면 꼭 밖에 두는 것이 현명한 처사이다.

2) 다차원배열의 동적할당
다차원 배열의 동적할당에 있어서는 맨마지막 차원에 대해서만 적용된 것을 명심하자.

List와 Dictionary 클래스

September 21st, 2006

.NET Framework v1.1이하에서는 ArrayList와 HashTable을 이용하여 콜렉션을 관리하였다.

ArrayList는 항목이 중복될 수 있는 콜렉션을 관리하며 추가된 순서(인덱스)가 중요한 관리대상이다. 예를 들어 벽체의 구성은 벽돌, 단열재, 방습층, 벽돌 등과 같이 중복되는 재료가 있는 경우이기 때문에 ArrayList를 사용하는 것이 좋다.

HashTable은 항목이 중복될 수 없는 콜렉션을 관리하며 중복되지 않는 키(key)가 중요한 관리대상이다. 예를 들어, 건축재료 전체 목록을 관리하고자 한다면 이름을 키(key)로하여 각 재료의 물성치를 관리할 수 있다.

이 둘을 안전하게 사용하려면 자료형(data type)을 항상 검토하여야 한다.

저장할 자료형을 정하여, 이와 다를 경우 코딩시부터 오류를 발생시키도록 강력한 자료형검토를 보장하는 클래스가 v2.0에서 추가되었다.

Generic.ListGeneric.Dictionary가 바로 새로 추가된 클래스들이다.

———

*주의 : .NET Framework v2.0에 Generic이 추가된 것임. 기존의 ArrayList와 HashTable은 계속사용할 수 있음

Single.Parse()처럼 문자열을 객체로 만드는 방법

April 3rd, 2006

Single.Parse()는 문자열을 읽어서 그 값을 Single형 값으로 바꾸어준다.

myValue는 단정도 실수인 36.5가 된다.

이 방법은 파일에서 문자열을 읽어온 후에, 그 값을 전환하는데 있어서 매우 유용하다.

같은 방법으로 문자열을 읽어서 특정 객체를 생성시키려면 다음과 같이 하면 된다.

<작성하고자 하는 클래스>

1) String형 매개변수를 갖는 생성자를 선언한다.

그리고, 생성자 코드 안에 문자열을 해석할 InternalParse를 호출한다.

생성자 내용을 간단하게 하는 것이 좋다.

다른 함수(초기화메소드)를 이용하면, 인스턴스 변수에 대한 초기화를 생성자 이외에서도 할 수 있다.

2) InternalParse() 메소드를 작성한다.

3) Parse() 메소드를 작성한다.

이 때, 이 클래스의 인스턴스 없이 Parse()메소드를 호출하기 위해서는 Shared를 선언한다.

4)사용법

이름은 ‘김창선’이고 나이는 ‘4’인 mySon 인스턴스가 생긴다.