Found an issue with the book? Report it on Github.
배열을 선언하는 구문은 매우 간단합니다. 구문은 배열의 각 차원 크기를 지정하기 위해 변수 이름 뒤에 첨자가 와야 한다는 점을 제외하면 일반 변수 선언과 동일합니다.배열 선언의 일반적인 형식은 다음과 같습니다.
VariableType varName[dim1, dim2, ..., dimN];
여기서 VariableType
은 Real
또는 Integer
와 같은 모델리카 자료형이고 varName
은 변수의 이름입니다.
일반적으로 차원의 크기를 나타내기 위해서는 단순히 정수형을 사용합니다.예를 들면 아래와 같습니다.
Real x[5];
이 경우 x
는 크기가 5인 한 차원만 있는 실수 값의 배열입니다. 배열의 크기를 지정하는 파라미터 또는 상수를 사용할 수 있습니다.*예* 를 들어 아래와 같습니다.
parameter Integer d1=5;
constant Integer d2=2;
Real x[d1, d2];
모델리카의 다양한 배열 함수 에 대해 논의할 때 곧 보게 되겠지만 size
함수를 사용하여 한 배열의 크기를 다른 배열과 관련하여 지정할 수도 있습니다. 다음을 확인해 보겠습니다.
Real x[5];
Real y[size(x,1)];
이 경우 y
는 크기가 5인 1차원을 갖게 됩니다. size(x,1)
함수를 사용하면 배열 x의 차원 1 크기
를 반환합니다.서로 다른 배열의 차원이 이러한 방식으로 관련되어 있음을 표현하는 것이 유용한 많은 응용 프로그램이있습니다(예:, 행렬 곱셈과 같은 연산이 가능하도록 배열의 크기를 지정하는 경우).
나중에 컨텍스트에서 지정할 수 있도록 배열의 크기를 지정하지 않은 상태로 둘 수 있는 상황이 있습니다.예를 들어, 나중에 배열인 인수가 있는 함수 에 대해 논의할 때 이에 대한 예를 볼 수 있습니다.
주어진 배열 차원의 크기가 (아직) 알려지지 않았음을 나타내기 위해 : 기호를 차원으로 사용할 수 있습니다.따라서 다음과 같은 선언에서,
Real A[:,2];
2차원 배열을 선언하고 있습니다.첫 번째 차원의 크기는 지정되지 않습니다. 그러나 두 번째 차원의 크기는 2로 결정적으로 지정됩니다. 사실상 A
는 지정되지 않은 행과 2개의 열을 가진 행렬이라고 선언 한것입니다.
앞서 화학 시스템(Chemical System) 예제에서 보았듯이 배열의 차원을 지정하는 또 다른 방법은 열거를 사용하는 것입니다. 열거형을 사용하여 차원을 지정하는 경우 해당 차원의 크기는 해당 열거형에 가능한 값의 수와 같습니다.곧 있을 배열 인덱싱(Array Indexing) 에 대한 논의에서 열거형을 차원으로 사용하는 배열을 통해 올바르게 인덱싱하는 방법을 살펴보겠습니다.
차원이 Boolean
으로 지정된 배열을 선언하는 것도 가능합니다.
Real x[Boolean];