ID:
PW:

     0 분
     6 분


무료 수학프로그램. SMath 강좌.


손으로 쓴 것처럼 표현하고 계산하는 프로그램.
프로그램 사이트 : http://en.smath.info


SMath 강좌(7) Table과 for 반복문
이석종  2021-02-18 19:52:14, 조회 : 1,051, 추천 : 49
- Download #1 : image25.png (15.9 KB), Download : 10

- Download #2 : table.sm (40.1 KB), Download : 17

개인적으로 엑셀을 구조계산서로 쓰는 것을 좋아하지 않는다. 한국에서는 워낙 많이 쓰다보니 할 수 없이 쓰기는 하는데 잘 못 사용하면 큰 낭패를 볼 수 있는 것이 엑셀이라고 생각한다. 엑셀은 셀 안에 수식이 들어있어서 결과만 볼 수 있고 수식을 확인하기 어렵다. 반면 smath 같은 프로그램은 모든 변수로 처리되기 때문에 눈에 보이는 것과 결과가 일치한다.

그런데 엑셀의 유혹에서 벗어날 수 없는 것이 바로 테이블 기능이라고 생각한다. 특히나 한국은 문서에 테이블을 많이 사용하는 편이다. 그래서 오늘은 smath에서 테이블을 어떻게 사용하는지를 알아보도록 하겠다.

엑셀의 이런 모양의 테이블을 smath로 만들어보자. 이 엑셀의 D 컬럼은 B/C, 6 번째 행은 3,4,5행의 합을 구하는 수식이 들어있다.

엑셀에서 테이블 기능을 사용할 때 공통된 수식을 복사해서 사용하는데 smath에서 이 기능은 matrix 기능과 프로그래밍 기능 이용해서 구현한다.


우선 table기능을 사용하기 위해서는 Table region이라는 추가기능을 설치해야 한다. 추가기능은 [Tools]메뉴의 추가기능을 클릭하고 아래은 창이 뜨면 오른족 상단을 [Online gallery]로 변경한다. 처음에 이 창이 떳을 때는 [Local storage]즉 현재 컴퓨터에 설치된 추가긴이 표시된다. 목록에서 Table region을 선택하고 설치하기를 누르면 다운로드 받아서 설치가 완료된다. 이제 삽입메뉴에 Table이 나타나는 걸 볼 수 있다.



우선 테이블 기능을 살펴보자. 테이블 기능은 메뉴의 Table을 선택한다.

그러면 이런 것이 삽입된다. 보기에는 3x3의 테이블이 만들어진 것 같이 보이지만 위쪽의 3x3 사각형은 바꿀 수 있는 것이 아니고 아래쪽 검은 사각형만 바꿀 수 있다.

여기에 matrix 변수를 입력하면 된다.

a라는 matrix변수명을 입력하면 테두리가 붉은 색으로 바뀐다. a가 비어있기 때문이다.

테이블 삽입한 지점의 앞에 a가 matrix로 정의 되어있어야 한다.

a를 matrix로 정의하기 위해서 a를 입력하고 :를 누른 후 행렬 toolbox의 Matrix아이콘을 눌러서 행렬을 정의한다. 행렬의 자세한 기능은 이전의 매뉴얼을 참고하기 바랍니다.

a를 이렇게 정의했다. 1열은 force, 2열은 area라고 하자. 눈치챘갰지만 힘과 면적으로 응력을 구해볼 것이다. a는 엑셀로 치자면 입력 데이터에 해당한다.

이렇게 a를 정의하면 이전에 삽입한 테이블에 값들이 보일 것입니다.

Table1은 caption이다. 설정을 통해서 보이거나 안 보이게 할 수 있다. 값만 있는 테이블은 무엇을 뜻하는지 알 수 없다. 그래서 헤더를 추가하자.

우선 헤더를 설정하기 위해서는 역시 matix로 정의해줘야 한가. 레더 변수를 ZH로 정하고 매트릭스로 헤더 값들을 입력해준다. 물론 테이블 앞쪽에 지정해줘야 한다.

이때 "로 감싸는 이유는 변수와 구분하기 위해서다.

그리고 S:으로 시작하면 수학식을 사용할 수 있다. S:를 입력하지 않으면 테이블에 mm^2이 그대로 출력된다.

테이블의 각종 옵션은 테이블을 오른쪽 마우스로 클릭하면 나타나는 메뉴 중에 Settings를 선택해서 변경할 수 있다. 여기서 헤더 설정, 색상 설정 caption 설정 등을 할 수 있다. Show header를 선택하고 ZH를 선택한다.

이제 헤더가 보인다.

그리고 맨 왼쪽 컬럼에 들어갈 설명도 matrix변수로 지정해준다. 영어로는 이걸 stub라고 하는 모양이다. ZT라는 변수명으로 하고 3개의 명칭을 설정했다.

이제 table을 오른쪽 마우스로 눌러 헤더를 설정했던 것처럼 stub도 설정한다.  그리고  caption도 설정을 해제한다. 이런 모양이 된다. Setting에서 소수점 자리수도 조정할 수 있다.

우선 프로그램 기능을 사용하지 않고 matrix의 값을 직접 지정해보자. Matrix요소의 값은 a를 입력한 후 [를 입력하고 나서 행과 열을 순서대로 입력하면 된다. 응력 값을 구하는 것이므로 1열의 값을 2열의 값으로 나눈 것이다. 3열의 값이 추가 되면 자동으로 matrix의 크기가 변경된다.

헤더가 사라졌다. 헤더의 열수와 테이블의 열수가 달라서다. 헤더의 값을 3열로 수정하자.  마우스로 matrix를 클릭한 후에 오른쪽으로 드래그 하면 matrix 크기를 변경할 수 있다. “Stress”와 “Pa”를 입력한다.

 

이렇게 작업하면 수백개 되는 경우에는 불가능하게 됩니다. 그래서 프로그램 기능이 필요하다. Smath에 포함된 프로그램 기능 중 반복문을 사용하면 반복 작업을 간단하게 할 수 있다.

smath에서 지원하는 프로그램 기능은 아래와 같다.

If문, for문을 많이 사용한다.

For 아이콘을 눌러보면 아래와 같이 시작된다.

For 문의 문법은 첫번째 줄에서 반복할 변수와 범위를 지정해준다. 그리고 두번 째 줄 이후에 반복해야할 내요을 을 적어준다. 예를 들어 r변수에 1,2,3을 넣어서 반복하려면 아래와 같이 시작하면 된다.

 for r ∈ [1..3]

1..3을 입력하는 방법은 [를 입력하는 것이 아니라 range(1,이라고 입력하면 [1..로 바뀌면서 3을 입력할 수 있게 된다.

또는 행렬 툴박스에서 range 아이콘을 클릭해도 된다.

 다음은 아래 쪽에 반복할 수식을 적어준다.

행렬의 행을 1행, 2행, 3행으로 바꿔가면서 작업할 것이고 행을 나타내는 변수는 첫번째 줄에서  r로 지정한 바 있다. Matrix의 r행 3열 값을 r행 1번째 값을 r행 2번째 값으로 나눈다는 뜻이다.

이렇게 하면 앞에서처럼 각 값을 계산할 필요가 없다.

이번에는 각 열의 합을 구해보겠다. 엑셀함수에 있는 것처럼 sum을 이용할 것이다.

Sum을 입력하면 함수가 작동된다. sum(까지 입력하면 ∑기로호 바뀐다.

여기서 col(a,1)를입력한다. Col함수는 matrix의 column을 추출하는 함수다. col(a,1)은 a matrix의 1번째 열을 취하겠다는 뜻이다. 이렇게 구한 값을 a matrix의 4행 1열에 할당한다. 마찬가지로 2열, 3열에 대해서도 같은 작업을 한다. 3개의 작업이 필요하다.

당연히 앞에서 Stress를 계산한 것처럼 for 문을 이용하면 훨씬 편하다. 변수를 c로 지정하고 1,2,3으로 바뀌면서 반복할 것이다.

문장이 실행되면 행 수는 3행에서 4행으로 늘어난다.

이제 값을 다 구했다. Table에 대입만 하면 된다. 그전에 stub을 행과 열 수에 맞춰서 수정해준다. 이미 3개의 행은 지정이 되어있으므로 4행 1열에 “sum”만 추가하면 된다.

이제 작업이 완료되었다. Setting에서 header의 색상 소수점 이하 자릿수, 정렬 등 양식을 수정할 수 있다.

 



김의헌
저는 테이블("table") 기능이 "삽입" 메뉴에서 보이지 않습니다.
혹시 무슨 문제인지 아시는지요?

참고로 프로그램 설치는 올 초에 했고, 설치버젼은 0.99.7691입니다.
2021-03-18
09:04:01

 


이석종
@김의헌 추가기능을 설치해야 합니다. 추가기능설치에 관한 내용을 본 게시물 앞쪽에 추가했습니다. 2021-03-19
14:01:17

 


김의헌
감사합니다. 설치했습니다. 2021-03-23
11:42:16

 


  추천하기   목록보기

Copyright 1999-2021 Zeroboard / skin by zero
구조설계의 미래를 준비하는 모임 [구조설계미래포럼]