내용으로 건너뛰기
체계적인 프로그래밍 소개 – 1주차

체계적인 프로그래밍 소개 – 1주차

지난주부터 이곳에 계셨다면, 첫 주가 어떻게 지났는지 듣기 위해 숨을 죽이고 기다리고 계실 것입니다. 글쎄, 기다림은 끝났습니다!

7min read

지난주부터 이곳에 계셨다면, 첫 주가 어떻게 지났는지 듣기 위해 숨을 죽이고 기다리고 계실 것입니다. 글쎄, 기다림은 끝났습니다!

이제 막 시청하시는 분들은 여기에서 Introduction to Systematic Programming 시리즈의 "Intro"를 확인하여 앞으로 다루게 될 내용에 대한 배경 지식을 확인하세요.

1주차는 Dr. Racket의 Primitives 주제를 중심으로 한 9개의 수업으로 구성되었습니다. 여기에서 각 수업을 하나씩 진행하면서 우리가 다룬 주요 주제 요점과 내가 집었을 수 있는 흥미로운 추가 정보에 대한 간략한 설명을 제공할 것입니다. 포스트 1에서 언급했듯이 이 클래스의 일부 용어는 대부분의 기존 프로그래밍과 다른 방식으로 사용된다는 점을 기억하십시오. 나는 할 수 있을 때 이것을 기록하려고 노력할 것이지만, 어떤 경우에는 이것의 많은 부분이 나에게도 새롭기 때문에 그것이 전통적으로 어떻게 사용되는지조차 알지 못할 수도 있습니다!

1과: 체계적인 프로그램 설계 소개

이 첫 번째 수업에서 다루는 주요 요점은 "계산은 '사물'을 만드는 것입니다!" 이 과정은 프로그램과 프로그램의 설계가 우리의 "전형적인" 1st world 상호 작용의 대부분을 가능하게 한다는 생각에 기초합니다. 식품에서 운송에 이르기까지, 컴퓨터 프로그램은 제품이 "기술"로 간주되는지 여부에 관계없이 제품이 생산에서 최종 사용자에게 전달되는 과정 어딘가에 관련되었을 가능성이 높습니다.

다음으로 '디자인 방법'이란 무엇인가"라는 질문에 대해 살펴보았습니다. 이 클래스에서 디자인 메서드는 잘못 정의된 문제에서 잘 구조화된 솔루션으로 이동하는 구조로 정의됩니다. 저에게 이것은 단순한 소프트웨어 개발을 넘어서며, 사려 깊은 방식으로 적용하면 일상 생활 전반에 걸쳐 사용할 수 있습니다.

학습 2: 표현식

Dr. Racket은 여기에서 볼 수 있듯이 Definitions Area(정의 영역)가 Interactions(상호 작용) 영역 위에 있도록 설정되어 있습니다.

Dr. Racket은 보시다시피 Definitions Area(정의 영역)가 Interactions(상호 작용) 영역 위에 있도록 설정되어 있습니다

Dr. Racket에서는 표현식을 평가하여 값을 생성합니다. 표현식을 만들려면 다음 레시피를 활용해야 합니다.

예를 들어, Dr. Racket이 "3+6"을 계산하도록 하려면 정의 영역에 다음을 입력합니다.

(+ 3 6)

이 섹션의 추가 참고 사항:

; 주석 처리할 행을 지정합니다.

#i designates an inexact number

Lesson 3: Evaluation

Dr. Racket의 표현식 평가 규칙은 다음과 같습니다.

  1. 표현식은 (*......로 시작하는 "Primitive Call"입니다.

*는 +, -, /, *를 포함하되 이에 국한되지 않는 기본 연산자를 나타냅니다.

  1. 연산자 뒤의 모든 항목은 피연산자로 지정됩니다.
  2. 평가의 첫 번째 단계는 모든 피연산자를 값으로 줄이는 것입니다
  3. 피연산자는 왼쪽에서 오른쪽으로, 내부에서 바깥쪽으로 값으로 줄어듭니다

이 세션의 추가 참고 사항:

피연산자와 숫자 앞에 공백을 포함하면 표현식을 평가할 수 없습니다.

Lesson 4: 문자열 & 이미지

이 수업에서는 문자열과 이미지를 정의하는 방법과 과정에서 사용할 기본 기능 중 일부를 다루었습니다. 다음은 몇 가지 주요 사항입니다.

Strings

"이것은 닥터 라켓의 끈입니다"

문자열은 값으로 간주되며, 문자열에 숫자 또는 숫자 값이 포함되어 있더라도 숫자가 아닙니다.

(문자열 추가 "Ada" "Lovelace")는 "AdaLovelace"로 평가됩니다.

(문자열 길이 "apple")은 5로 평가됩니다.

(부분 문자열 "Caribou" 2 4)는 ri로 평가됩니다.

Substring은 Zero Based Indexing을 사용하는데, 평신도 용어로 0부터 계산을 시작한다는 것을 의미합니다. 따라서 순록은 C – 0, A- 1, R-2, I-3, B-4, O-5, U-6으로 번호가 매겨집니다.

Substring은 첫 번째 피연산자로 시작하는 문자열 부분과 나머지 중간 숫자를 사용하지만 닫는 피연산자는 포함하지 않습니다.

이미지

Dr. Racket 언어로 이미지를 활용하려면 프로그램 상단에 라인이 포함되어야 합니다(2ndp/이미지 필요). 이것은 How to Design Book의 이미지 규칙 제2판을 참조합니다.

원을 생성하려면

원을 생성하려면

사각형을 생성하려면

사각형을 생성하려면

문자 메시지

텍스트

위

Beside

Beside

 

스택

스택

Lesson 5: Constant Definitions

Dr. Racket에서 상수를 정의하는 아이디어는 다른 프로그래밍 언어에서 경험 한 것과 동일하지는 않더라도 비슷합니다. 일반적으로 상수를 정의한다는 것은 미래에 사용할 값(하드 코딩된)에 이름을 부여하는 것을 의미합니다. 상수는 일반적으로 다른 유형의 정의 된 값과 구별하기 위해 UPPER CASE로 정의됩니다.

Dr. Racket에서 상수를 정의하려면 다음과 같은 표현식을 사용합니다.이것의 기능적 예는 다음과 같습니다 : (WIDTH 400 정의). 이렇게 하면 표현식에 사용될 때 숫자 400으로 평가되는 WIDTH라는 명명된 값이 생성됩니다.

이 섹션의 추가 참고 사항:

상수를 정의하는 것은 출력 값과 같지 않습니다.

상수는 이미지일 수 있습니다. 예를 들어, (rotate 10 CONSTANT)는 상수를 10도 회전합니다.

Lesson 6: 함수 정의

함수는 프로그램을 실행할 때마다 다른 결과를 생성할 수 있는 메커니즘이며, 모든 (유효한) 값으로 반복적으로 사용할 수 있습니다. 내 경험에 비추어 볼 때, 상수를 정의하는 것과 유사하게이 정의는 전부는 아니더라도 많은 프로그래밍 언어에 걸쳐 사실입니다. 언어에서 매개변수는 함수에 전달되는 변경 가능한 값입니다.

함수를 사용하면 프로그래머가 여러 값을 검토하기 위해 빠질 수 있는 "잘라내기 및 붙여넣기" 함정을 피할 수 있으며 더 깔끔하고 간결한 코드를 만들 수 있습니다.

Dr. Racket에서 함수를 작성하려면 다음 레시피가 사용됩니다.

Lesson 7: Boolean & If 표현식

부울 값은 true 또는 false로 평가되는 표현식입니다. 이 결과를 조건자라고도 합니다. 부울에는 중간이 없으며 이는 대부분의 프로그래밍 언어에서도 마찬가지입니다.

If 표현식은 응답을 분기하기 위해 이 조건자에 의존합니다. 만약 문장이 프로그램에 "이게 사실인가? 그렇다면 이 작업을 수행합니다. 그렇지 않다면 이것을하십시오!". Dr. Racket에서 if 문은 다음과 같이 표현됩니다.

학습 8: 스테퍼 사용

레슨 8에서는 "The Stepper"라는 Dr. Racket 도구를 사용하는 방법을 검토했습니다. 이 프로그램을 통해 개발자는 프로그램을 단계별로 평가하여 오류가 있을 수 있는 위치를 확인할 수 있습니다. 수업을 사용하는 사람들에게는 훌륭한 도구이지만 여기에서 너무 자세히 설명 할 필요는 없다고 생각합니다.

9단원: 프리미티브 발견

제가 레슨 9에서 정말 흥미로웠던 것은 그 기본 원리가 대부분의 다른 유형의 학습에 반하는 것처럼 보였지만 정리와 방법을 암기하는 것에 대해 제가 어떻게 느끼는지를 매우 잘 나타낸다는 것입니다. 이 클래스에는 우리가 사용할 수 있는 자체 "구성된" 프로그래밍 언어가 있기 때문에 우리가 사용할 수 있는 프리미티브(또는 실제로 무엇이든)에 대해 잘 알고 있는 사람은 아무도 없습니다. 이에 대한 조언은 두 가지입니다. 첫째, 우리는 "추측을 해보라"고 격려받는데, 그 이유는 프로그래밍이 직관적이기 때문에 우리가 옳을 수도 있기 때문이다. 두 번째 제안은 "Search & Scroll"인데, 이는 유사한 프리미티브를 찾고 가이드북에서 사용할 수 있는 다른 관련 내용을 확인하는 것으로 설명됩니다. 내가 말했듯이, 나는 이 접근 방식의 열렬한 팬인데, 왜냐하면 그것은 학생이 셀 수 없이 많은 시간의 세부 사항을 암기하도록 강요하는 것이 아니라 오히려 대화형 작업에 바로 뛰어들어 그 과정에서 배울 수 있도록 하기 때문입니다.

ALRIGHT

1주차 수업은 여기까지입니다. 많은 기본 개념을 새로 고칠 수 있었을 뿐만 아니라 Dr. Racket이 어떻게 작동하는지에 대한 일반적인 느낌도 얻을 수 있었기 때문에 정말 좋은 시작이었다고 생각합니다. 숙제는 꽤 기본적이었고 비교적 쉽게 끝낼 수 있었습니다. 동료 코스 학생으로 따라오시는 분들을 위해 제가 막혔던 것은 평가 결과를 입력할 때 문자열을 둘러싼 "s"를 잊지 말라는 것입니다! 나는 이것을 잊어버렸고 그것 때문에 숙제 퀴즈에 거의 떨어질 뻔했습니다. 운 좋게도 1주차 퀴즈는 재응시가 가능해서 실수를 고칠 수 있었고 100%를 받았다고 말할 수 있어 기쁩니다.

데모 요청