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

반복문(Looping)

반복문(Looping)

for

배열의 주요 용도 중 하나는 루프를 사용하여 코드를 단순화하는 것입니다. 몇 가지 기본 루프 구성을 소개하고 배열 기능과 함께 사용하는 방법을 보여줌으로써 배열에 대한 이 장에서의 소개를 마무리하겠습니다.

일반적으로 for 키워드는 반복문을 나타내는 데 사용되지만, for 가 사용될 수 있는 많은 다른 맥락이 있습니다. 이 장의 여러 예제를 통해서 for 를 사용한 방정식의 모음을 살펴 보겠습니다. 방정식 섹션 내에서 for 가 사용되면 for 루프 내에 포함된 모든 방정식이 루프 인덱스 변수의 각 값 에 대해 생성됩니다.이러한 방식으로 전체 구조가 동일하고 루프 인덱스 변수의 값에 의해서만 달라지는 많은 방정식을 쉽게 생성할 수 있습니다.

equation
  for i in 1:n loop
    // equations
  end for;

루프 인덱스 변수(예: 이 경우 i)는 선언할 필요가 없습니다. 이러한 인덱스 변수는 for 루프 범위 내에서만 존재한다는 점도 을 주목 해야 합니다. (루프 앞이나 뒤 에서 존재하지 않음)

For 루프는 물론 중첩될 수 있습니다. 예를 들어 아래와 같이 사용할 수 있습니다.:

equation
  for i in 1:n loop
    for j in 1:n loop
      // equation
    end for;
  end for;

다른 문맥에서도 나타날 수 있습니다. 예를 들어 initial equation 섹션이나 알고리즘 섹션(algorithm Sections) 에서 다룬 것 처럼 나타날 수 있습니다.

for 키워드를 볼 수 있는 또 다른 경우는 배열 내포(Array Comprehensions) 에서 논의하였습니다. 이 경우 for 구문은 방정식이나 명령문을 생성하는 데 사용되지 않고 배열의 다양한 요소를 채우는 데 사용합니다. 배열 표현식(Array Comprehension) 은 시뮬레이션 소프트웨어가 최적화하기가 더 쉽다는 장점이 있습니다.

while

모델리카에서의 또 다른 유형의 루프는 while 루프입니다. while 루프는 자주 사용되지 않습니다. 그 이유는 모델리카는 범용 언어와 달리 방정식 지향 언어이기 때문입니다. 또한 모델에 동일한 수의 방정식과 미지수가 포함되어야 한다는 요구 사항을 부과하는데, 이러한 모델을 "균형 모델" 이라고 합니다.

while 구조가 널리 사용되지 않는 이유는, 균형 잡힌 모델이 (컴파일러에 의해) 방정식의 수를 예측할 수 있어야 하기 때문입니다. for 루프는 제한되어 있고 인덱스 변수의 값의 수는 항상 알수 있기 때문에 (항상 가능한 값의 벡터에서 파생되기 때문에) 그것이 생성할 방정식의 수는 항상 예상할 수가 있습니다.``while`` 루프에 대해서도 마찬가지입니다. 이와 같이 while 루프는 알고리즘 섹션(algorithm Sections) 의 맥락(일반적으로 함수(Functions) 의 정의에서)에서만 실용적입니다