1. Data type을 확인하고 맞으면 if문에 들어가도록 하는 예시문
타입에 맞는 데이터가 들어가는지 if문을 통해 조절 할 수 있다. 그 방법은 아래와 같다.
문자열 : string
정수 : fixnum
실수 : flonum
1. Data type을 확인하고 맞으면 if문에 들어가도록 하는 예시문
타입에 맞는 데이터가 들어가는지 if문을 통해 조절 할 수 있다. 그 방법은 아래와 같다.
문자열 : string
정수 : fixnum
실수 : flonum
기본적으로 함수를 만들기 위해서 procedure 라는 함수를 선언한다.
함수이름뒤에 함수에 입력되는 인자들을 선택한다.
procedure( FuncName( input1 input2 ...)
);
con함수는 해당 조건이 만족되면 바로 리턴하는 함수이다.
아래는 예제이다.
1.
2.
[Cadence SKILL / LISP] 함수 만들고 값 리턴하기, 두 함수를 이용해 하나의 함수에 대입하기, prog()함수 사용하기 (0) | 2020.08.10 |
---|---|
[Cadence SKILL / LISP] SKILL 언어 조건문, 타입(type) 예시문 (0) | 2020.04.26 |
[Cadence SKILL / LISP] SKILL 언어 파일 읽고 쓰기, 파일 I/O (0) | 2020.04.19 |
[Cadence SKILL / LISP]SKILL 언어 논리문(if, else, case) 비교연산자(and, or, not) (0) | 2020.04.13 |
[Cadence SKILL / LISP] SKILL 언어 List (리스트) (0) | 2020.04.05 |
1. 파일 쓰기 outfile()
OS에게 명령을 내려 파일을 쓰게 할 수 있다.
print() 함수와 println() 함수는 기본적으로 모니터에 값을 출력하는 명령이지만, outfile()함수를 이용하면 출력 대상을 파일로 바꿀 수 있다. 이 두 함수는 2번째 옵션 인자로 포트 정보를 갖고있는 객체를 받는다.
1. outfile() 으로 파일을 생성함.
2. myPort가 그 파일에 대한 포트 정보를 갖고 있음
3. println( 출력값 myPort ) <= 여기서 2번째 인자로 myPort가 그 파일에 대한 포트를 열어줌.
4. close(myPort) 다 사용한 포트는 닫아줌.
결과. 현재경로에 해당 txt파일이 생성됨.
2. 파일 쓰기 옵션 (덮어쓰지 말고 뒤에 추가하기), outfile( 값 "a" )
1~5까지 쓰고 뒤에 16~20까지 쓰고 싶지만, 아래와 같이하면 안된다.
덮어 씌워지는 케이스,
위에 함수가 실행되고 아래 함수가 실행되면, 마지막으로 실행된 파일 쓰기만 남게 된다.
고로 아래와 같이 옵션인자로 "a" 를 outfile()함수의 2번째 인자로 넣어야 한다. append의 약자로 덧붙이다 이다.
그럼 아래와 같이 1~5뒤에 16~20이 이어서 출력된다.
3. 포맷이 정해져있는 파일 쓰기
4. 파일 읽고 프린트 하기.
위에서 만든 text파일(3번) 을 불러와서 인터프리터에서 출력한다.
C언어 비슷한 논리문을 갖는다.
if문 중복사용 (겹치기)
그러나 SKILL에서는 C언어와 다르게 when()문과 unless()문이 있다.
(함수가 정상적으로 실행되었으면 t를 반환한다)
when문 조건이 맞을 때
when문 조건이 틀릴 때
unless문 조건이 틀릴 때
unless문 조건이 맞을 때
Case문, 하나씩 비교해보면서 맞는 부분이 실행하고 t를 리턴하며 종료함.
alphabet = "a" 일때
alphabet = "b" 일때
alphabet = "c" 일때
alphabet = "d" 일때
해당 조건이 맞을때 print문이 출력되고 ++로 해당 변수가 증가함.
그외 조건이 맞지 않을때는 "this is not alphabet"이 실행되고 종료함.
[Cadence SKILL / LISP] 함수 만들고 값 리턴하기, 두 함수를 이용해 하나의 함수에 대입하기, prog()함수 사용하기 (0) | 2020.08.10 |
---|---|
[Cadence SKILL / LISP] SKILL 언어 조건문, 타입(type) 예시문 (0) | 2020.04.26 |
[Cadence SKILL / LISP] SKILL 언어 함수만들기, con함수 조건문 리턴 사용 (좌표값 맞는지 여부, 선분이 수직인가 수평인가) (0) | 2020.04.26 |
[Cadence SKILL / LISP] SKILL 언어 파일 읽고 쓰기, 파일 I/O (0) | 2020.04.19 |
[Cadence SKILL / LISP] SKILL 언어 List (리스트) (0) | 2020.04.05 |
SKILL문법 List. 파이썬을 써본사람은 알겠지만, List는 여러 index를 입맛에 맞게 통제할 때 좋다.
SKILL에서 리스트는 소괄호로 표시된다. -> ( )
1. 리스트 만들기.
type( )함수로 해당변수를 찍어보면 list임을 확인할 수 있다.
delimeter(구분자)로는 공백도 되고 쉼표도 된다.
'( ) 는 내부에 연산자가 들어갈 수 없음
list( )는 내부에 연산자를 넣을 수 있음
1-1. 리스트 내 인자 인덱싱(indexing)하기
리스트 내에 있는 값을 적절히 뽑아서 활용해야 한다. 인덱싱 하는방법으로는
nthelem( ) 함수를 쓴다.
* 파이썬과 다르게 0번이 아니라 1번부터 인덱싱을 시작한다.
* 파이썬은 List를 벗어나면 에러를 띄우지만, SKILL은 nil이 출력된다.
2. 리스트 줄 표시(line display) 내장 변수 _itemsperline
Default로 list를 찍어보면, 아래와 같이 한 라인에 표시하는 List 갯수를 제한해 놓았다.
Display방식만 그렇다는 것이다. 데이터가 바뀌거나 하지는 않는다.
아래에서 numlist 변수 내 1 ~ 9개 총 9개의 index가 들어있다.
_itemsperline 내장된 변수에 값을 집어넣으면 딱 그에 맞는 List가 화면에 보여진다.
아래 예시는 _itemsperline값으로 2와 10을 넣었을 때, list가 어떻게 표시되는지에 대한 예시.
3. list() 함수 사용하기
3-1. 리스트 만드는 방법중, list() 함수와 '( ) 방법의 차이
1. list()함수로 만들면 리스트내 변수 속성이 그대로 따라간다.
2. '( ) 으로 만들면 해당 변수 이름을 떠나 symbol type 으로 저장된다.
4. cons() 함수 사용하여 List내 인덱스 통제하기
몇가지 Test.
referenceList라는 리스트값을 지닌 변수를 기준으로, 아래와 같이 value(값), valueList(값이 들어있는 리스트), strList(문자열이 들어있는 리스트)를 추가하여 resultList에 대입해보았다.
5. reverse( 리스트변수 ), 값의 순서를 뒤집기.
아래를 보면 리스트 인덱스 순서가 뒤바뀐것을 볼 수 있다.
6. append( 리스트변수, 리스트변수 ), 두개의 리스트를 합치기
변수값 선언
결과 확인
오류 발생 케이스
1. 2번째 인자로 반드시 list를 넣어야 한다.
2. 1번째 인자로 반드시 list를 넣어야 한다.
3. 인자로는 반드시 2개만 넣어야 한다.
7. cons() 함수와 append()함수 테스트
** 리스트 함수 사용을 위한 인덱싱 함수들
car cdr을 활용한 box좌표 뽑기
https://ansan-survivor.tistory.com/158?category=390224
8. 문장 String을 단어 String List로 쪼개기
단 여기서 쪼개서 나온 모든 인자는 List의 인덱스 형태로 나오게 된다.
결과
9. String으로 쪼개진 이 단어중 숫자만 골라서 연산하기.
먼저 100과 200 String을 뽑아낸다.
" " 가 있으므로 이 결과값은 String이다.
String끼리는 서로 연산이 불가능하다.
고로 아래와 같이 evalstring() 함수를 이용해 숫자로 만드는 과정을 거친 후 계산한다.
실수값도 잘 계산이 되는가 테스트 해보았다.
<추가> 실용적인 기능들
- 리스트내 최대값과 최소값 뽑기
https://ansan-survivor.tistory.com/286
- 리스트 순서 정렬하는 방법 (숫자 또는 문자)
https://ansan-survivor.tistory.com/287
- 리스트 내부 인자 값을 바꾸는 법
https://ansan-survivor.tistory.com/288