Watch videos with subtitles in your language, upload your videos, create your own subtitles! Click here to learn more on "how to Dotsub"

EIWL28AVTake2

0 (0 Likes / 0 Dislikes)
Stephen Wolfram의 저서 'An Elementary Introduction to the Wolfram Language'의 28장은 무언가가 참인지 거짓인지 시험하는 함수인 테스트와 테스트의 결괏값에 따라 다른 일을 하는 함수인 조건문을 다룹니다. 테스트와 조건문은 거의 모든 컴퓨터 프로그램의 기본적이고, 또한 다소 근본적인 부분입니다. 한 가지 간단한 테스트는 어떤 두 가지가 같은지를 시험하는 것인데, 이는 Wolfram 언어에서 등호 2개를 이용해서 입력될 수 있습니다. 예를 들어, 이 예시는 2+2가 4와 같은지를 시험합니다. 여러분은 키보드의 '>' 기호와 '<' 기호를 이용해서 어떤 하나가 다른 하나보다 더 크거나 더 작은지 시험할 수 있습니다. 예를 들어, 이 입력은 2+2가 5보다 큰지를 시험하고, 2+2가 5보다 크지 않기 때문에, 그 결과는 단어 "False"입니다. 몇 가지 함수는 테스트의 결과에 따라 다른 결괏값을 반환합니다. 이 함수들은 이 장의 제목에 있던 "조건문"입니다. 이런 조건문 중 한 가지 예시는 If 함수입니다. 예를 들어, 여기에서는 If 함수가 시험 결과가 True일 경우 x를 반환하는 것을 보여 주고, 여기에서는 If 함수가 시험 결과가 False일 경우 y를 반환하는 것을 보여줍니다. 여러분은 If 함수를 순수 함수 안에서 사용함으로써 더 복잡한 일을 하실 수 있습니다. 예를 들어, 여기 입력값이 4보다 작을 경우 x를 반환하고, 4보다 작지 않을 경우 y를 반환하는 순수 함수가 있습니다. 만약 이 순수 함수가 배열에 적용되어 있다면 그 효과는 배열에서 4보다 작은 모든 성분을 x로 교체하고, 4보다 작지 않은 모든 성분을 y로 교체하는 것이 됩니다. 또한, 같지 않음에 대한 테스트도 있는데, 이는 등호 앞에 느낌표를 붙여 입력할 수 있습니다. 그리고, 작거나 같음에 대한 테스트도 있고, 이는 '<'기호 뒤에 등호를 붙여 입력할 수 있습니다. 마지막으로, 크거나 같음에 대한 테스트가 있고, 이는 '>'기호 뒤에 등호를 붙여 입력할 수 있습니다. 여기 '같지 않다' 기호와 순수 함수를 이용해서 배열의 4와 같지 않은 모든 성분을 x로 교체하고 4와 같은 모든 성분을 y로 교체하는 예시가 있습니다. 여러분이 이런 기호를 입력하실 때, 이 중 몇 가지는 자동으로 동일한 연산에 해당하는 관습적인 수학 기호로 변환되고 있다는 것을 눈치채셨을지도 모릅니다. 예를 들어 제가 '<' 기호 뒤에 등호를 붙이면, 남은 부분을 입력하기 시작하자마자, '작거나 같다' 기호가 자동으로 나타나고, 이는 입력된 내용이 기존의 수학에서 자주 볼만한 모습에 가까워지도록 하기 위한 것입니다. 또 다른 조건문, 즉 테스트의 결괏값에 따라 다른 기능을 하는 함수는 Select 함수인데, 이는 배열을 쭉 따라가면서 테스트를 만족하는 성분을 선택하는 데 활용될 수 있습니다. 예를 들어 여기 3보다 큰 모든 것에 대해 True를 반환하는 테스트가 있고, 이것은 그 테스트를 Select 함수 내부에서 사용하여 배열 안의 3보다 큰 성분을 골라내고 있습니다. Wolfram 언어에는, 테스트를 위한 많은 함수가 있습니다. 수학과 다른 프로그래밍 언어에서의 전통을 따라 이러한 Wolfram 언어 함수의 이름은 보통 글자 "Q"로 끝납니다. 예를 들어, 숫자가 짝수인지 시험하는 EvenQ 함수나, 숫자가 소수인지 시험하는 PrimeQ 함수처럼 말입니다. 예를 들어, 이 예시는 배열에서 짝수인 성분을 골라내기 위해 Select 함수를 이용합니다. 여러분은 또한 테스트를 논리곱이나 논리합과 같은 논리 연산과 함께 사용하실 수도 있습니다. 논리곱 연산은 2+2가 짝수인 '동시에' 3보다 큰 것이 참이기 때문에 True를 반환하는 이 예시와 같이 '&' 기호 2개를 이용해서 입력할 수 있습니다. 논리합 연산은 5가 짝수 '또는' 4보다 큰 것이 참이기 때문에 True를 반환하는 이 예시와 같이 '|' 기호 2개를 이용해서 입력할 수 있습니다. 테스트 앞에 느낌표를 붙이는 방식으로 입력할 수 있는 논리 부정 연산 또한 있습니다. 예를 들어, 여기 입력한 변수가 짝수거나 4보다 크면 True를 반환하는 테스트가 있습니다. 그리고 이 테스트 앞에 느낌표를 붙이는 것은 입력된 변수가 짝수가 아니거나 4보다 크지 않으면 True를 반환하는 다른 테스트를 만들게 됩니다. 저는 여기에 괄호를 넣어 두었는데, 이는 논리 부정 연산(느낌표)이 EvenQ 테스트만이 아니라 테스트 전체에 확실히 적용되게 하고 싶었기 때문입니다. 이렇게 입력이 모호하게 시작되어서 그 의미가 분명하지 않을 때, 여러분이 하고 싶은 것을 분명히 하기 위해 괄호를 삽입하는 것은 전혀 문제가 되지 않습니다. 이 순수 함수는 이제 예를 들어, Select 함수 안에 사용되어서 배열 안의 짝수가 아니거나 4보다 크지 않은 성분을 골라내는 일에 사용될 수 있습니다. Wolfram 언어에는 다른 테스트를 하기 위한 이와 같은 함수가 많이 있습니다. 예를 들어, IntegerQ라고 불리는 함수는 무언가가 정수인지 아닌지를 시험합니다. 또, 문자열 안의 모든 문자가 글자인지 시험하는 LetterQ라는 함수도 있습니다. 무언가가 배열에 포함되어 있는지를 시험하는 MemberQ라는 함수도 있습니다. 예를 들어, 이 예시는 5가 배열 {1, 3, 5, 7}에 포함되어 있기 때문에 True를 반환합니다. MemberQ 함수가 배열에 대해 하는 기능을 이미지에 실행하는 ImageInstanceQ라는 함수도 있습니다. 이 예시는 ImageInstanceQ 함수가 어떤 이미지를 고양이의 이미지라고 판단했을 때 True를 반환하는 것을 보여주고 있습니다. 여기 어떤 이미지가 고양이의 이미지일 때 True를 반환하는 테스트가 있고, 이 예시는 이 테스트가 Select 함수 내부에서 사용되어서 고양이의 이미지를 골라내는 데 활용되는 것을 보여주고 있습니다. 여기까지 28장의 모든 예시가 끝났습니다. 여기 이 장의 프로그래밍 단어를 요약해 보겠습니다. Wolfram 언어에는, 테스트를 위한 다른 함수가 많이 있고, If, Select와 같이 테스트 함수를 활용하는 몇 가지 다른 조건문이 있지만, 이 장은 이런 함수가 어떻게 사용되는지에 대한 꽤 좋은 예시를 제공합니다. 여러분은 각 함수의 문서나, Help 메뉴에서 Wolfram Documentation을 선택해서 Documentation Center 페이지를 불러오고, Conditionals를 찾은 다음, 조건문에 대한 안내 페이지를 골라서 If와 Select를 비롯한 조건문을 포함하는 이 페이지를 불러옴으로써 테스트와 조건문을 위한 Wolfram 언어 함수에 대한 더 많은 정보를 찾으실 수 있습니다. 덧붙여서, 이 페이지에는 모든 테스트와 And, 또는 Or와 같은 이번 장에서 다룬 연산의 링크를 포함하는 Testing Expressions라는 페이지로의 링크 또한 포함되어 있습니다. 여기 여러분이 연습하고 싶으실 때를 위해 28장의 끝부분에 있는 연습 문제를 적어 두었습니다. 저는 연습문제 28.2번, "각 자릿수의 합이 5보다 작은 100까지의 숫자의 배열을 구해라."를 풀어보려고 합니다. 저는 Range를 사용해서 100까지의 숫자의 배열을 얻을 수 있고, Select를 이용해서 이 배열에서 숫자를 고를 수 있습니다. 하지만 이 연습 문제에 맞는 숫자를 고르기 위해, 저는 숫자의 자릿수의 합이 5보다 작을 때 True를 반환하는 테스트가 필요하므로, 그 테스트를 만드는 것부터 시작하도록 하겠습니다. IntegerDigits 함수는 숫자의 각 자릿수를 반환합니다. 예를 들어, 이 예시는 숫자 31의 각 자릿수를 반환합니다. 저는 Total 함수를 이용해 이렇게 자릿수의 합을 구할 수 있습니다. 그리고 마지막으로, 여기 그 합이 5보다 작으면 True를 반환하는 테스트가 있습니다. 이제 저는 이것을 숫자 31만이 아니라 모든 숫자를 테스트하는 데 사용될 수 있도록 순수 함수로 바꿔야 하는데 저는 이것을 31을 숫자 기호 '#'로 교체해서 순수 함수에서 숫자가 들어갈 칸을 표시해 주고, 끝에 '&' 기호를 붙여서 시스템에 이것이 순수 함수라는 것을 알려 주는 방식으로 해결했습니다. 이제 저는 숫자에 사용되었을 때 각 자릿수의 합이 5보다 작으면 이렇게 True를 반환하고, 5보다 작지 않은 무언가가 되면 이렇게 False를 반환하는 테스트를 갖게 되었습니다. 연습문제를 끝내기 위해 남은 것은 Select 함수를 Range[100]과 함께 사용하고, 방금의 테스트를 이용해서 우리가 원하는 성분을 골라내는 것이고, 이렇게 정답을 얻게 됩니다. 논리적인 테스트와 조건문을 활용한 이런 작업은 대체로 필요한 것을 얻기 위해 기본적인 도구를 어떻게 조립할 것인지에 대한 약간의 정돈된 생각을 통해 수행될 수 있습니다. 물론 연습을 대신할 수 있는 것은 없기 때문에, 여러분이 연습 문제 몇 개를 살펴보시거나 이런 것을 직접 시도해 보시길 바랍니다! 번역: 조경찬 (광주과학기술원 물리전공 4학년), 총괄: 김현주 (Wolfram Research 한국어 담당)

Video Details

Duration: 7 minutes and 41 seconds
Country:
Language: English
License: Dotsub - Standard License
Genre: None
Views: 4
Posted by: wolfram on Apr 9, 2021

EIWL28AVTake2

Caption and Translate

    Sign In/Register for Dotsub to translate this video.