제 11 장 프로그래밍 기초 1/3 전산천문학 2 2007. 가을
함수와 프로시저의 차이점에 대해서 정확히 이해하고, 이를 이용하여 간단한 프로그래밍을 실습한다. Mission 함수와 프로시저의 차이점에 대해서 정확히 이해하고, 이를 이용하여 간단한 프로그래밍을 실습한다. 간단한 예제를 학생들 스스로 만든 함수와 프로시저를 사용하여 프로그래밍을 실습한다. 모든 프로그래밍을 배열 연산의 기반으로 생각한다 연도를
+ ( ) / 2 = Vector operation Pls!! IDL에서 다음 코드를 실험해 보세요. IDL> file=filepath(‘people.dat’, subdir=[‘examples’, ‘data’]) IDL> people=read_binary(file, data_dims=[192, 192, 2]) IDL> tvscl, people[*, *, 0] IDL> tvscl, people[*, *, 1] IDL> fusion=total(people, 3) / 2 IDL> tvscl, fusion + ( ) / 2 =
기본 문법 Procedure와 Function이 있음 콤마(,)로 문법요소를 구분함 문자열을 제외하고는 대소문자 구분 없음 IDL> print, 5.5 ;print 프로시저 IDL> a=sin(!pi) ;Sin 함수 콤마(,)로 문법요소를 구분함 문자열을 제외하고는 대소문자 구분 없음 키워드가 발달한 언어 IDL> print, 5.5, format=‘(F7.5)’ 5.50000 IDL> plot, x, y, title=‘Test’, xtitle=‘time’, color=255,…. IDL> result=mean(x, /nan) 키워드 사용에 관하여 키워드는 순서 무관. 키워드는 다른 키워드와 구별되는 길이까지 줄여 쓸 수 있음 device, decom=0 & print, 5.5, form=‘(F7.5)’ /키워드는 키워드=1 과 문법적으로 완전히 동일함 result=mean(x, NAN=1) & result=mean(x, /NAN)
프로시저, 함수의 정의 공통점 : 차이점 둘 모두 외형상으로는 .pro의 확장자를 가진다. 서브루틴 출력값 = 함수(입력값1,입력값2…키워드=) 둘 모두 외형상으로는 .pro의 확장자를 가진다. Function과 Procedure를 다른 프로그램에서 명령어의 형태로 부르고자 할 때는 프로그램 이름과 안에서 선언한 프로그램의 이름이 같아야 한다.이 때, 기본적으로 내장되어 있는 프로그램이름과 중복되지 않도록 한다.
IDL에는 과학자들에게 유용한 Procedure와 Function이 내장(plot,round,fix, 등…) 이들을 이용하여 Interactive하게 작업을 할 수 있습니다. 기본 제공되는 Procedure와 Function을 조합하여 필요한 Procedure와 Function을 만들어 쓸 수 있음. 내가 만든 Procedure와 Function도 IDL에서 기본 제공하는 Procedure와 Function처럼 실행. 선배/동료들이 만든 Procedure와 Function을 가져다 쓸 수 있습니다. 이들 사용자 Procedure/Function을 어떻게 하면 IDL에서 기본 제공하는 Procedure/Function인 것처럼 설정할 수 있을까?
print, 'It was multiplied by 2.0!!!‘ print, value end How to make a Procedure pro twotimes, value value = 2.0 * value print, 'It was multiplied by 2.0!!!‘ print, value end
How to make a function function hap, x, y sum=x+y return, sum end IDL> print, hap(3, 5) Compiled module: HAP. 8 IDL> .edit hap 또는 Open hap.pro
세 개의 숫자를 입력했을 때, 평균값(mean)과 최대값 그리고, 최소값을 출력하는 함수와 프로시저를 만들어보시오. Examples 세 개의 숫자를 입력했을 때, 평균값(mean)과 최대값 그리고, 최소값을 출력하는 함수와 프로시저를 만들어보시오. 프로시져는 실행, 함수는 결과 값임에 유의하시오. (10분)
pro minmaxavg,value1,value2,value3 a=[value1,value2,value3] procedure pro minmaxavg,value1,value2,value3 a=[value1,value2,value3] print,'The maximum is',max(a) print,'The minimum is',min(a) print,'The mean is', mean(a) end
function minmaxmean, value1,value2,value3 a=[value1,value2,value3] results=[min(a),max(a),mean(a)] return, results end