Found an issue with the book? Report it on Github.

배열 선언(Array Declarations)

배열 선언(Array Declarations)

문법(Syntax)

배열을 선언하는 구문은 매우 간단합니다. 구문은 배열의 각 차원 크기를 지정하기 위해 변수 이름 뒤에 첨자가 와야 한다는 점을 제외하면 일반 변수 선언과 동일합니다.배열 선언의 일반적인 형식은 다음과 같습니다.

VariableType varName[dim1, dim2, ..., dimN];

여기서 VariableTypeReal 또는 Integer 와 같은 모델리카 자료형이고 varName 은 변수의 이름입니다.

정수형 크기(Integer Sizes)

일반적으로 차원의 크기를 나타내기 위해서는 단순히 정수형을 사용합니다.예를 들면 아래와 같습니다.

Real x[5];

이 경우 x 는 크기가 5인 한 차원만 있는 실수 값의 배열입니다. 배열의 크기를 지정하는 파라미터 또는 상수를 사용할 수 있습니다.*예* 를 들어 아래와 같습니다.

parameter Integer d1=5;
constant Integer d2=2;
Real x[d1, d2];

연결된 차원(Linked Dimensions)

모델리카의 다양한 배열 함수 에 대해 논의할 때 곧 보게 되겠지만 size 함수를 사용하여 한 배열의 크기를 다른 배열과 관련하여 지정할 수도 있습니다. 다음을 확인해 보겠습니다.

Real x[5];
Real y[size(x,1)];

이 경우 y 는 크기가 5인 1차원을 갖게 됩니다. size(x,1) 함수를 사용하면 배열 x의 차원 1 크기 를 반환합니다.서로 다른 배열의 차원이 이러한 방식으로 관련되어 있음을 표현하는 것이 유용한 많은 응용 프로그램이있습니다(예:, 행렬 곱셈과 같은 연산이 가능하도록 배열의 크기를 지정하는 경우).

지정되지 않은 차원(Unspecified Dimensions)

나중에 컨텍스트에서 지정할 수 있도록 배열의 크기를 지정하지 않은 상태로 둘 수 있는 상황이 있습니다.예를 들어, 나중에 배열인 인수가 있는 함수 에 대해 논의할 때 이에 대한 예를 볼 수 있습니다.

주어진 배열 차원의 크기가 (아직) 알려지지 않았음을 나타내기 위해 : 기호를 차원으로 사용할 수 있습니다.따라서 다음과 같은 선언에서,

Real A[:,2];

2차원 배열을 선언하고 있습니다.첫 번째 차원의 크기는 지정되지 않습니다. 그러나 두 번째 차원의 크기는 2로 결정적으로 지정됩니다. 사실상 A 는 지정되지 않은 행과 2개의 열을 가진 행렬이라고 선언 한것입니다.

정수형이 아닌 차원(Non-Integer Dimensions)

열거형(Enumerations)

앞서 화학 시스템(Chemical System) 예제에서 보았듯이 배열의 차원을 지정하는 또 다른 방법은 열거를 사용하는 것입니다. 열거형을 사용하여 차원을 지정하는 경우 해당 차원의 크기는 해당 열거형에 가능한 값의 수와 같습니다.곧 있을 배열 인덱싱(Array Indexing) 에 대한 논의에서 열거형을 차원으로 사용하는 배열을 통해 올바르게 인덱싱하는 방법을 살펴보겠습니다.

불리언(Booleans)

차원이 Boolean 으로 지정된 배열을 선언하는 것도 가능합니다.

Real x[Boolean];