한선씨 첫걸음
한선씨는 한국어 키워드를 사용하는 프로그래밍 언어입니다. 변수를 선언하고 화면에 출력하는 것부터 시작합니다.
변수 선언
변수 키워드로 변수를 선언합니다. 숫자, 문자열, 참/거짓 모두 담을 수 있습니다.
변수 이름 = "세계"— 문자열변수 나이 = 25— 숫자변수 활성 = 참— 불리언
출력
출력값 함수로 화면에 내용을 출력합니다. 문자열과 숫자를 +로 연결할 수 있습니다.
출력값("안녕 세계!")— 문자열 출력출력값("나이: " + 문자열변환(나이))— 숫자를 문자열로 변환 후 연결
문자열변환()으로 변환해야 합니다. "값: " + 문자열변환(42)처럼 사용하세요.함수와 반환
함수는 코드를 재사용 가능한 블록으로 묶습니다.
함수 키워드로 선언하고 반환으로 값을 돌려줍니다.
함수 선언
함수는 이름, 매개변수, 본문으로 구성됩니다.
함수 이름(매개변수1, 매개변수2) { ... }- 매개변수가 없으면
함수 이름() { ... } 반환으로 값을 반환합니다
함수 호출
함수를 호출할 때는 이름 뒤에 괄호를 붙이고 인자를 넣습니다.
변수 결과 = 제곱(5)— 반환값을 변수에 저장출력값(문자열변환(인사("철수")))— 반환값을 바로 출력
조건과 반복
만약/아니면으로 조건 분기를 처리하고,
동안 루프로 반복 작업을 수행합니다.
조건문 — 만약 / 혹시 / 아니면
만약 (조건) { ... }— 기본 if혹시 (조건) { ... }— else if아니면 { ... }— else- 비교:
== != < > <= >= - 논리:
그리고(and),또는(or)
반복문 — 동안
조건이 참인 동안 블록을 반복 실행합니다.
동안 (조건) { ... }중단— 루프 즉시 종료계속— 다음 반복으로 건너뜀
참(T, +1), 거짓(A, −1), 모르면(O, 0). 모르면은 불확실한 상태를 표현할 때 사용합니다.배열과 맵
여러 값을 묶어 관리할 때 배열과 맵을 사용합니다. 배열은 순서가 있는 목록이고, 맵은 키-값 쌍의 구조입니다.
배열
변수 목록 = [1, 2, 3]— 배열 리터럴추가(목록, 4)— 요소 추가설정(목록, 0, 99)— 인덱스 0에 값 설정길이(목록)— 배열 길이정렬(목록)— 오름차순 정렬목록[0]— 인덱스로 접근
맵 (해시맵)
변수 사람 = 맵생성()— 빈 맵 생성맵넣어(사람, "이름", "철수")— 키-값 삽입맵꺼내(사람, "이름")— 키로 값 조회맵키목록(사람)— 모든 키 목록 반환
문자열 다루기
한선씨의 강력한 문자열 처리 함수들을 배웁니다. 글자 단위 접근, 부분 추출, 검색, 변환 등을 지원합니다.
핵심 문자열 함수
글자수(문자열)— 문자열 길이 (글자 수)글자(문자열, 인덱스)— 특정 위치 글자 하나부분(문자열, 시작, 끝)— 부분 문자열 추출포함(문자열, 검색어)— 포함 여부 (1=있음, 0=없음)문자열변환(숫자)— 숫자 → 문자열숫자변환(문자열)— 문자열 → 숫자
팁: 문자열 순회
글자수와 글자를 조합하면 문자 단위로 순회할 수 있습니다.
3진법 체험
한선씨의 핵심인 4상균형3진법을 체험합니다. T(+1), O(0), A(−1)의 세 값과 U(구분자)로 모든 연산이 이루어집니다.
3진법 내장함수
삼진인코딩(숫자)— 10진수 → T/O/A 3진 문자열삼진디코딩(문자열)— T/O/A 3진 문자열 → 10진수삼진덧셈(a, b)— 3진수 덧셈 (T/O/A 문자열)
Kleene 3값 논리
한선씨는 참/거짓 외에 모르면(불확실)을 지원합니다. 이는 양자 컴퓨팅과 불완전 지식 처리에 자연스럽게 대응됩니다.
참→ T (+1)거짓→ A (−1)모르면→ O (0)
RPN 모드
RPN(역폴란드 표기법)은 한선씨의 저수준 표현입니다. 스택 기반 연산으로 ISA729 opcode와 1:1로 대응합니다.
RPN이란?
일반적인 표기법 3 + 4를 RPN으로는 3 4 더해로 씁니다. 연산자가 피연산자 뒤에 오며, 스택에 값을 쌓고 연산자가 스택을 처리합니다.
3 4 더해→ 3+4 = 710 3 빼기→ 10-3 = 75 2 곱해→ 5×2 = 10보여줘→ 스택 상단 출력끝— 프로그램 종료
RPN과 고수준의 관계
고수준 한선씨 코드는 컴파일 시 자동으로 RPN → TOAU 기계어로 변환됩니다. RPN을 직접 작성하면 ISA729 opcode 수준의 제어가 가능합니다.
FPGA 회로
한선씨는 소프트웨어 뿐만 아니라 하드웨어도 기술할 수 있습니다.
회로/끝회로 방언으로 디지털 논리를 한글로 표현합니다.
회로 방언 핵심 키워드
가져오기 "하드웨어.한선"— 하드웨어 라이브러리 임포트모듈 이름 { ... }— 하드웨어 모듈 선언입력 신호명— 입력 포트 선언출력 신호명— 출력 포트 선언레지스터 변수— 플립플롭 레지스터항상 (클럭 올라갈때)— 클럭 에지 트리거
전가산기 (Full Adder)
두 1비트 입력(a, b)과 올림수 입력(cin)을 받아 합(sum)과 올림수 출력(cout)을 생성하는 기본 회로입니다.
- sum = a XOR b XOR cin
- cout = (a AND b) OR (b AND cin) OR (a AND cin)
crownyc fpga load 명령을 사용하세요.