1 / 19

제 12 장 프로그래밍 기초 3/3

제 12 장 프로그래밍 기초 3/3. 전산천문학 2. 2007. 가을. Mission. 아스키자료 입출력을 포맷문을 이용하여 할 수 있다 . 계산의 효율성을 위하여 , 자주 쓰는 입출력문을 분리하여 , 변수로 저장해서 불러 쓸 수 있다 . 외부 루틴 및 내장 루틴을 사용하여 , 효율적인 프로그래밍을 할 수 있다 . 시스템 변수를 사용하여 , 여러가지 형태의 그래프를 그릴 수 있다. 아스키 파일 읽기. 아스키 파일 읽는 원리 줄 단위의 파일 읽기 한 줄에서 해당하는 변수는 포맷문으로 구별

vanig
Download Presentation

제 12 장 프로그래밍 기초 3/3

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 제 12 장 프로그래밍 기초 3/3 전산천문학 2 2007. 가을

  2. Mission • 아스키자료 입출력을 포맷문을 이용하여 할 수 있다. • 계산의 효율성을 위하여, 자주 쓰는 입출력문을 분리하여, 변수로 저장해서 불러 쓸 수 있다. • 외부 루틴 및 내장 루틴을 사용하여, 효율적인 프로그래밍을 할 수 있다. • 시스템 변수를 사용하여, 여러가지 형태의 그래프를 그릴 수 있다.

  3. 아스키 파일 읽기 • 아스키 파일 읽는 원리 • 줄 단위의 파일 읽기 • 한 줄에서 해당하는 변수는 포맷문으로 구별 • 포맷문으로 구별된 변수 혹은 배열을 미리 선언해주어야 한다. • 여러 줄의 아스키 파일의 경우 반복문이 필요하다. • 포맷문 • 아스키에서 한 줄의 변수들을 구분하는 포맷을 만든다. 그러나, 중요한 것은 반복시에도 모든 줄에 공통적으로 적용되는 형식을 찾아 내야 한다. • 포맷문은 문자열 형식의 변수로 사용할 수 있다. 즉, 포맷을 나타내는 형식을 하나의 변수로 저장할 수 있다. • 포맷문 사용 예제 ‘(한줄 변수의 형식을 단어단위로) • 빠르게 자료를 확인하고자 할 때는 ascii_template을 이용해서 읽는다. 그러나, 자료의 분석을 위한 자료 입출력일 경우에는 포맷문을 사용하는 것을 권장한다. • 대부분의 경우 자료배포자가 포맷을 알려주지만, 연습을 위하여는 반드시 포맷문을 연습해 볼 가치가 있다.

  4. Format 키워드

  5. Training • NGC 2168.dat 연습 • 이 파일에 적합한 포맷문을 이용하여 자료를 읽어보시오. • Logic • 어떤 변수 혹은 배열로 읽을 것인가? • 변수 선언 (필요한 변수와 배열의 크기) • 파일 열기 (openr, lun) • for 0, {줄수 -1} do begin • readf,lun, a01, a02,a03……..a11 • 한줄의 변수갯수 (포맷문에서 지정한 자리의 개수와 동일) • fmt='(2x,i4,2f8.3,4f7.3,1x,4f6.3,x,4i2)‘ : example

  6. 좀 더 편한 방법은 없을까? 누가 만들어 놓은 걸 이용하면 어떨까?

  7. 외부루틴 사용법 • 30년 동안 만들어 놓은 많은 유산(Heritage)이 있음 • 외부루틴을 잘 이용하는 방법도 훌륭한 프로그래밍 기법 • IDL의 외부 루틴들은 모두 확장자가 .pro인 파일로 끝남. • IDL은 프로시저나 함수가 호출될 때 자동으로 호출된 프로시저.pro 또는 함수.pro를 찾아 컴파일하고 실행합니다(사용자는 과정에 대해 신경쓸 필요는 없습니다). • IDL의 자동 검색 경로에 등록되어 있는 디렉토리에 프로시저나 함수를 복사하면 사용할 수 있다. • 개인이 만든 함수와 프로시저의 사용방법과 동일 • 그러나, 프로그램 소스를 보고 사용법을 읽힐 줄 알아야 함

  8. 가장 대표적인 외부루틴은? IDL Astro Astronomy IDL Library http://idlastro.gsfc.nasa.gov/

  9. IDL Astro library download !

  10. READCOL.PRO • 대부분의 과학자료들은 열 단위의 자료 형식 • 줄 단위의 아스키입력 형식이 불편함 • 정확한 변수 선언이 필요함 • Readcol, filename, a,b,c,d,e….. • 윗부분의 헤더 등을 자동으로 검색하고, 줄의 끝을 판별하여 배열로 생성하여 줌 • 그러나, 많은 열과 자료가 있는 경우 연산이 느려질 수 있고, 읽을 수 있는 열의 수가 제한적임 • 자 그렇다면, readcol을 이용하여 자료를 읽어보십시요.

  11. 히스토그램을 그리려면? 고생하여 프로그래밍 하기 전에 유용한 루틴이 있나 찾아보자

  12. Plothist.pro • plothist, arr, a,b,/keyword • arr : 히스토그램을 그리고자 하는 변수 • a : 범위(디폴트:1)의 중간값 • b : 범위에 해당하는 개수 • /keyword : 다양한 키워드 • /nodata : a,b 만 계산하자 • /fill, color=100 • /fill, /fline • /fill, /fline, forientation=45, fspacing=1,fcolor=100 • 1학기 퀴즈 성적에 대한 히스토그램을 그려보자

  13. LEGEND.PRO • 플롯에 범례(legend)추가 • Legend,/help • legend,['Plusign','Asterisk','Period'],psym=[1,2,3] • /RIGHT, /LEFT, /TOP, /BOTTOM, /CENTER

  14. VSYM.PRO • 천문학에서 사용하는 슈퍼몽고(Super mongo) 스타일의 심볼 사용 • 사용법 • Psym=8 지정하여 플롯 • vsym, 꼭지점수(최대 24), /키워드 • keyword : /star, /skeleton, /fill, rot=45 • PLOT, OPLOT, PLOTS 등에서 PSYM=8 키워드를 설정하여야 vsym으로 생성한 심볼로 그림

  15. 한 개의 윈도우에 여러 개의 그래프를 한꺼번에 그리고자 한다. 어떻게 해야 하나? !P.multi 시스템 변수 이용

  16. ! P.multi • !로 시작하는 변수 : 시스템 변수 • 변경하여 다양한 결과를 얻을 수 있으나 항상 기본값으로 복원하는 것을 습관으로 한다. • 대표적인 시스템 상수 : !pi, !dtor, !degtor • 다중플롯을 위한 시스템 변수 • !p.multi=[0,2,3,0,0] 또는 !p.multi=[0,2,3] • x 방향으로 2열, y방향으로 3행, 즉, 총 여섯개의 그림 • 나머지 변수는 디폴트 0 (남은 그림수, z 뱡향 그림, 그리는 방향) • 다그린후 꼭 디폴트값으로 변환할 것 • !p.multi=0

  17. training • !p.multi=[0,2,2] • Plot,indgen(10) • Contour,dist(40) • Shade_surf, dist(40) • Surface,dist(40) • !p.multi=0

  18. hw01 • 제출일 : 2007년 11월 5일 자정까지 • 13장에서 배운 것을 이용하여, ngc2168.dat를 읽고 이를 바탕으로 다양한 색-등급도와 히스토그램을 그리는 프로그램을 완성하시오. • 본 과제는 조별로 제출하되, 제출 후 조별로 퀴즈를 실시할 예정입니다. • 퀴즈를 볼 대상자는 임의로 선택되므로, 모든 구성원이 숙지할 수 있도록 협동하기 바랍니다.

More Related