UCBLogo

UCBLogo
UCBLogo
Ubclogo spiral.png
UCBLogo에서는 프로시저가 자신을 호출하는 프로세스인 재귀가 허용됩니다.이미지에서 나선형은 재귀 스크립트에 의해 생성됩니다.
패러다임멀티패키지: 기능적 교육, 절차, 반영적
가족리스프
설계자브라이언 하비
개발자댄 반 블러콤, 마이클 캐츠, 더그 올리언스
상당한 공헌:Freeman Deutsch, Khang Dao, Fred Gilham, Yehuda Katz, George Mills, Sanford Owings, Randy Sargent[1]
처음 등장한1992년; 30년 전(1992년)
안정된 릴리스
6.2.1 / 2020년 12월 31일; 19개월 전(2020-12-31)
타이핑 분야역학
범위역학
구현 언어C
플랫폼IA-32, x86-64
OSWindows, macOS, Linux
면허증.GPL
웹 사이트people.eecs.berkeley.edu/~http/http:/https://
영향을 받다
리스프
영향받은
Smalltalk, Etoys, Scratch, NetLogo, KTurtle, Rebol

버클리 로고라고도 불리는 UCBLogoLisp에서 유래한 로고의 방언프로그래밍 언어입니다.'최소한의 로고 기준'[2]을 의도한 로고 사투리입니다.목록, 파일, 입출력(I/O) 및 [3]재귀 처리를 위한 최고의 기능을 갖추고 있습니다.이것은 캘리포니아 대학의 버클리 교수 브라이언[4] 하비가 컴퓨터 사이언스 로고 스타일 [5][6][7]3부작에서 했던 처럼 대부분의 컴퓨터 사이언스 개념을 가르치는 데 사용될 수 있다.GNU General Public License(GPL)[8]에 따라 출시된 무료 오픈 소스 소프트웨어입니다.

그래피컬 사용자 인터페이스

UCBLogo는 기본적인 그래피컬 사용자 인터페이스(GUI)를 갖추고 있기 때문에 보다 나은 인터페이스를 제공하는 여러 프로젝트가 존재합니다.MSWLogo 와 그 후속의 Microsoft Windows 용 FMSLogo 는, 영국호주의 학교에서 일반적으로 사용되고 있습니다.

설계.

로고는 문턱이 낮고 천장이 없다는 취지로 디자인되어 초보자도 쉽게 들어갈 수 있고 파워가 높은 사용자의 요구에도 부응합니다.애니메이션은 도형을 그리는 능력과 지우는 능력을 모두 필요로 합니다.전자의 경우 라인이 표시장치에 부착되어 후자의 경우 라인이 제거된다는 점을 제외하면 프로세스는 동일합니다.거북이의 비유로 거북이의 펜은 그림을 그리고 거북이의 펜은 지워야 한다.터틀은 PENERASE(PE) 명령을 사용하여 아래 항목을 지우도록 설정할 수 있으며 UCBLogo에서 PENPAINT(PPT) 명령을 사용하여 다시 그리기를 시작하도록 설정할 수 있습니다.

펜.

점선을 그리고 있는 거북이

거북이의 꼬리에 펜이 달려있는 비유는 종종 사용된다.거북이의 펜은 올리고 내릴 수 있기 때문에 기본적인 점선을 그립니다.

코드 예:

 FD 20 ; 선을 긋고 움직인다.  펜업 ; 펜을 들어 아무것도 그려지지 않도록 한다.  FD 20 ;그리지 않고 이동  펜다운 ; 펜을 내려서 다시 끌어당긴다.  FD 20 ; 선을 긋고 움직인다.  펜업 ; 펜을 들어 아무것도 그려지지 않도록 한다.  FD 40 ;그리지 않고 이동  펜다운 ; 펜을 내려서 다시 끌어당긴다.  RT 20 ; (시계방향으로) 20도 회전합니다. 

데이터.

UCBLogo에는 다음 3가지 데이터 타입이 있습니다.

  • 그 말
  • 명부
  • 배열

숫자는 단어의 특별한 경우입니다.

스태틱 타이핑은 없습니다.인터프리터는 컨텍스트별로 데이터 유형을 검출합니다.

두 가지 중요한 기호는 다음과 같습니다.

  • 대장(:)는 의 내용을 의미합니다.이것은 변수가 실제로 기억 속의 장소라는 것을 학생들에게 계속 상기시키는 매우 유용한 기호입니다.
  • 큰따옴표(")는 단어가 그 자체로 평가되거나 평가 후의 값이 이전과 동일함을 의미합니다.이게 중요해요.다른 프로그래밍 언어 사용자의 경우: 이중 따옴표는 시작 따옴표와 끝 따옴표로 쌍을 이루지 않습니다.

숫자는 자기 평가의 특별한 경우입니다. 인용문과 함께 쓸 수 있습니다.2는 정말 2다

변수 할당(예:x := y + 3)는 로고로 처리됩니다.make다음 두 개의 동등한 문장으로 나타내듯이 명령어를 사용합니다.

"x sum:y 3"을 "x sum:y"3으로 합니다.

make2개의 파라미터가 있습니다.그 중 두 번째 파라미터입니다.sum :y "3.sum는 두 개의 '파라미터'를 취하며 하나의 '연산'이므로 계산이 가능합니다."3까지 평가하다.3,그리고.:y라고 불리는 것의 내용을 가져간다.y, 이것들은 숫자를 나타내는 합계입니다.

효과make첫 번째 파라미터에 결과를 배치하는 것입니다.프로그램적 관점에서 첫 번째 주장은make는 참조에 의해 전달되며, 두 번째 값은 값에 의해 전달됩니다.

범위 설정

변수를 사용하기 전에 선언할 필요는 없습니다.변수의 범위는 글로벌합니다.

변수를 선언할 수 있습니다.local그 범위는 그 절차 및 호출하는 절차(다이나믹스코프라고 불립니다)로 한정됩니다.입력(로고 문헌에서 보통 인수에 사용되는 이름)을 사용하여 프로시저를 호출하면 인수 값을 유지하는 로컬 변수도 생성됩니다.

리스트

로고는 Lisp에서 목록을 상속받아 벡터를 저장하는 주요 방법입니다.어레이도 준비되어 있습니다.

  • 연산자는 단어를 목록으로 변환하고 목록을 배열로 변환한 후 다시 되돌리기 위해 존재합니다.
  • 이 데이터 유형은 어레이보다 무한 확장성이 뛰어나다는 장점이 있습니다.연산을 사용하여 데이터를 추출합니다.first,butfirst,last,butlast,butmember,member,그리고.item. 데이터 요소는 다음을 사용하여 추가합니다.sentence,fput,그리고.lput.
  • 목록은 오퍼레이터 큐와 디큐를 가진 큐 또는 push 및 pop 조작을 가진 스택으로 간주할 수 있습니다.
  • 목록을 처리하는 자연스러운 방법은 반복이 아니라 반복입니다.

제어 구조 명령어

로고는 몇 가지 공통 제어 구조를 제공합니다.하나의 조건부 구조가 있습니다.

  • ifelse test [do_if_true list][ do_if_false list ]

다음 3가지 반복 명령어가 있습니다.

  • 상태 [명령 목록] 동안
  • 조건 [명령 목록]까지
  • 반복 번호[명령 목록]

재귀는 로고가 선호하는 처리 패러다임입니다.

템플릿 반복

로고는 목록 기반 제어 구조도 제공합니다.기본 개념은 다음 두 가지 목록입니다.

OPERATION [명령어 목록][많은 데이터 항목]

각 명령어는 각 데이터 항목에 차례로 적용됩니다.이러한 템플릿명령어에는 MAP, APPLY, FILTER, FOREACH, REDURE, CASCADE 등의 이름이 있습니다.템플릿 반복의 네 가지 맛, 즉 명시적 슬롯, 명명된 절차, 명명된 슬롯(또는 람다) 및 절차 텍스트를 나타냅니다.

속성 리스트

속성 목록은 홀수 항목이 속성 이름이고 짝수 항목이 속성 값인 특수 목록입니다.속성 목록을 처리하는 명령어는 세 가지가 있습니다.

 pprop :리스트명 :이름. :가치 목록에 새 쌍을 추가하려면  재프로파 :리스트명 :이름. :가치 목록에서 쌍을 제거하려면  표시하다 gprop :리스트명 :이름.  목록에서 일치하는 값을 가져오려면 

입력, 출력

입력/출력(I/O)의 경우 명령 창(출력 스트림)에 텍스트를 쓸 수 있습니다.print를 사용하여 그래픽 창으로 이동합니다.label

표준 명령어는 다음과 같습니다.readlist readword readchar일반 입력 스트림을 키보드로 사용합니다.Unix에서는 입력 스트림을 변경할 수 있으므로 디스크 파일에서 입력을 가져올 수 있습니다.마찬가지로 출력을 리다이렉트 할 수 있습니다.

구문

명령어는 한 줄 또는 여러 줄에 쓸 수 있습니다.많은 명령어에는 니모닉 단축형이 있습니다.예를 들어 다음과 같습니다.FORWARD그리고.RIGHT코드화되어 있다FD그리고.RT각각 다음과 같다.이것에 의해, 입력의 부하가 경감됩니다.;(semicolon) 뒤에 쓴 것은 무시되므로 코더가 코멘트를 삽입할 수 있습니다.

 ;는 변의 길이가 100단위인 정사각형을 그립니다.  앞으로 100  왼쪽 90  앞으로 100  왼쪽 90  앞으로 100  왼쪽 90  앞으로 100  왼쪽 90 
FD 100 RT 120 FD 100 RT 120 ; 삼각형 FD 100 RT 120을 그립니다.

로고의 Hello World 프로그램은 다음과 같습니다.

인쇄 [Hello World]

루프

3개의 루프(반복) 명령어가 있습니다.REPECT는 1개입니다.이것은 정사각형을 그린다.

4번 반복 [FD 100 왼쪽 90]

명령어FD 100 LEFT 904회 실행됩니다.360개의 작은 회전과 한 단계 전진으로 원의 근사치를 쉽게 구성할 수 있습니다.REPEAT 360 [FD 1 RIGHT 1]. 루프는 네스트되어 약간의 노력으로 결과를 얻을 수 있습니다.

반복 36 [RT 10 REPECT 360 [FD 1 RT 1] FD 25 RT 90

네스트된 루프의 다른 예

36 [반복 4 [FD 100 RT 90] RT 10]

기능 및 절차

각 회선은 함수 호출로 구성되어 있으며, 두 가지 유형이 있습니다.

  • 명령어(보통 어떤 작업을 수행하지만 값을 반환하지 않음)는 다음과 같습니다.print.
  • (값과 출력만 반환하는) 조작은 다음과 같습니다.sum,first또는readlist.

명령어는 Pascal 프로시저와 비슷하고 조작은 Pascal 함수와 비슷합니다.('명령어-쿼리 분리'도 참조해 주십시오.여기서 쿼리는 로고 조작입니다.단어만 출력하는 술어라고 하는 특수한 연산 서브셋입니다.true또는false는 일반적으로 최종 기사와 함께 작성됩니다.p예를 들어 다음과 같습니다.emptyp,wordp,그리고.listp.

  • 표현식은 원시식이거나 사용자가 정의할 수 있습니다.
  • 식에는 0, 1개 이상의 파라미터를 사용할 수 있습니다.
기본 의자

절차는 다음 쌍을 사용하여 명령줄에서 정의할 수 있습니다.

의자에 반복 4회 [FD 100 RT 90] FD 200 엔드

단, 일부 초기 로고에서는 이 절차가 입력 디바이스의 물리 회선 길이로 제한됩니다.

모든 로고는 보통 에 의해 에디터를 호출할 수 있습니다.편집이 완료될 때까지 해석되지 않기 때문에 에디터에서는 여러 줄에 걸쳐 프로시저를 작성할 수 있습니다.

에다루
의자에 반복 4회 [FD 100 RT 90] FD 200 엔드

새로운 단어는 사용 가능한 어휘에 저장되지만 로고 세션이 끝나면 정의가 손실됩니다.내부 절차는 단어이며 이 경우 언제든지CHAIR입력되면 시퀀스가REPEAT 4 [FD 100 LEFT 90] FD 200실행됩니다.그 말CHAIR명령어로 사용할 수 있습니다.예를 들어 다음과 같습니다.REPEAT 4 [CHAIR]를 반복하다CHAIR4회 동작합니다.

EDALL ; (에디터 모드로 들어가려면 , 실제의 순서를 실행합니다)
PE BK 200 4회 반복 [FD 100 RT 90] PPT 끝
CS 체어 대기 200 지우기 의자

도면과 지우기 사이의 WAIT 지연은 모션 착각을 일으킬 수 있습니다.

CS REEPT 20 [체어웨이트 200 ERACHER PENUP FD 20 PENDOWN]

인수, 파라미터

로고는 단어에 추가 정보를 전달하고 정보를 반환할 수 있습니다.절차(단어)는 무언가를 기대하고 그 물건에 이름을 붙이도록 지시되어 있다.대장은 이 목적으로 사용됩니다.값별로 정보를 전달하고 콜론을 으로 발음합니다.이 절차를 체어 200과 같은 명령으로 실행하면:thesize값 200을 취하기 때문에 FD가:thesize실행되면 인터프리터는 200의 값인 FD를 이해합니다.

EDALL;(에디터 모드로 들어가려면 실제 절차를 따릅니다) To CHARD : size RETE 4 [FD : the size RT 90] FD : size END CS RETE 9 [CHER 50 RT 20 CHARE 100 WAIT 50 RT 20]
양식

기타 주의사항

로고의 산술에서는 다음과 같은 접두사 또는 폴란드어 표기법을 사용합니다.sum :x :y, product :x :y, difference :x :y, quotient :x :y.Infix도 이용할 수 있습니다.

help "description; (표현의 전체 설명이 표시됩니다.) 

로고를 사용하면 프로시저가 자신을 호출하는 프로세스인 재귀가 허용됩니다.

to spiral : size if : size > 30 [ stop ]; 종료 조건 fd : size rt 15; 액션나선형: size * 1.02의 많은 행; 테일엔드 재귀 콜 종료
스파이럴 10

심볼릭 컴퓨팅 코드 예시

필터, 매핑 및 예시 축소

? 프린트 필터 [?>2] [1 2 3 4 ]3 4 ?프린트 맵 [?*?]1 2 3 4 ]1 4 9 16 ?프린트 감소 [ max ? 1 ? 2 ][ 1 999 432 654 ]999
?

최대값은 다음과 같이 구현할 수 있습니다.

최대값 : a : b 출력 ifelse : a > : b [ : a ][ : b ]끝

숫자 인수의 평균을 계산하는 절차를 정의하고 사용합니다.

평균 [:nums] 2 > op ("sum : nums" / ( count : nums )> end ?인쇄 평균 1 5 > 인쇄 (평균 1 2 3 4 5 )3 ?인쇄 적용 "평균 1 2 3 4 5 ]3 ?

다중 계산 절차 정의 및 사용

? to 복수 : word > if equalp last : y [ op word bl : word " ies > if equalp last : word " s [ op word : word " ]> 출력 워드 : word " > end ? 여러 개의 본문 ? 인쇄 맵 "book body virus"는 본문 바이러스입니다.

문장을 Pig latin 예시로 옮겨 적습니다.

?:;만약 punctuationp 지난:단어[op 단어 pigl.real이 가물가물:단어 지난:단어]>옵 pigl.real:단어>끝?:단어>pigl.real는 것이며, 만약 첫번째vowelp:단어[옵 단어:"이라는 단어 ay]을, 단어 사용하여<>pigl에 옵pigl.real 단어 남자 친구:단어가 처음:단어>끝?vowelp:편지>옵 memberp:편지[나는 u o e]>끝?punctuationp:편지>옵 memberp:.편지[.,?!]>끝?print map "hypay atinlay unfay, adhay othermay at ethay amesay imetay!" igpay at at at athay athay amesay!?" 

「 」를 참조해 주세요.

레퍼런스

  1. ^ Harvey, Brian (1997). Volume 1: Symbolic Computing: Acknowledgments. University of California, Berkeley, Electrical Engineering and Computer Sciences. Computer Science Logo Style. Vol. 1. MIT Press. ISBN 0-262-58148-5. Retrieved 2019-05-06.
  2. ^ Solomon, Cynthia; Harvey, Brian; Kahn, Ken; Lieberman, Henry; Miller, Mark; Minsky, Margaret; Papert, Artemis; Silverman, Brian (June 2020). "History of Logo". Proc. ACM Program. Lang. 4. doi:10.1145/3386329.
  3. ^ "Logo Programming Language". Logo Foundation. 2012. Archived from the original on 2013-08-15. Retrieved 2019-05-06.
  4. ^ Harvey, Brian. "Brian Harvey". Electrical Engineering and Computer Sciences. University of California, Berkeley. Retrieved 2019-05-06.
  5. ^ Harvey, Brian (1997). Volume 1: Symbolic Computing. University of California, Berkeley, Electrical Engineering and Computer Sciences. Computer Science Logo Style. Vol. 1. MIT Press. ISBN 0-262-58148-5. Retrieved 2019-05-06.
  6. ^ Harvey, Brian (1997). Volume 2: Advanced Techniques. University of California, Berkeley, Electrical Engineering and Computer Sciences. Computer Science Logo Style. Vol. 2. MIT Press. ISBN 0-262-58149-3. Retrieved 2019-05-06.
  7. ^ Harvey, Brian (1997). Volume 3: Beyond Programming. University of California, Berkeley, Electrical Engineering and Computer Sciences. Computer Science Logo Style. Vol. 3. MIT Press. ISBN 0-262-58150-7. Retrieved 2019-05-06.
  8. ^ Harvey, Brian (2008-09-14). "Release 6.0 of Berkeley Logo is now available by anonymous FTP or Web". Electrical Engineering and Computer Sciences. University of California, Berkeley. Retrieved 2019-05-09.

외부 링크