컴퓨터공학 공부/SmartLearn - PABI 강의

컴퓨팅 사고 I: WEEK 4-2, 4-3

개발학생 2023. 1. 6. 18:26
반응형

*POSTECH 청년 AI · Big Data 아카데미(https://pabi.smartlearn.io/)의
 'Computational Thinking (컴퓨팅 사고) Ⅰ' 코스 강의를 듣고 정리한 글입니다

*모든 이미지의 출처는 https://pabi.smartlearn.io/ 입니다

 

4-2
여러곱 - 계산 자료의 '그리고'

1. 접속사 ‘그리고’

1) 계산 자료의 종류를 ‘그리고’로 엮은 경우

  • 생활기록부에서 이름 그리고 성적을 뽑아낸다
  • 지도에서 출발 도시, 그리고 도착 도시를 골라서 거리를 잰다

2) 계산 자료 자체를 ‘그리고’로 엮은 경우(계산 자료들을 모두 포함한 새로운 계산 자료를 만들게 됨)

→ 아래 문장에서 밑줄 친 부분을, 해당 문장에서의 하나의 계산 자료로 취급함
  • 첫째 생활기록부에는 이름 홍길동 그리고 성적 85점이 적혀 있다
  • 국어 그리고 영어 그리고 수학은 공통 수강생이 있다

* 프로그래밍 언어에서 ‘그리고’

  • 접속사 대신 특유의 문법을 씀
  • C언어에서는 ‘구조체’라 부르고, Python/Haskell/Scala 언어에서는 ‘여러곱’이라 부름

2. Python 언어에서의 여러곱

  • 괄호 사이에 계산 자료 나열하고 쉼표로 분리: (계산 자료1, 계산 자료2, …, 계산 자료n)
  • 각 계산 자료가 여러곱의 원소가 됨
  • 예시
    • 사람 언어 → ”정수 1729 그리고 단어 Hello 그리고 참”
    • Python 언어 → (1729, ‘Hello’, True)

1) 여러곱의 특징

(1) 여러곱 = 프로그램

  • 예시1: (1729, ‘Hello’, True) 입력 후 프로그램을 실행하면, (1729, ‘Hello’, True) 그대로 출력됨
  • 예시2: (1729, ) [원소가 1개인 여러곱] 입력 후 프로그램을 실행하면, (1729, ) 그대로 출력됨
  • 예시3: ( ) [원소가 없는 여러곱] 입력 후 프로그램을 실행하면, ( ) 그대로 출력됨

(2) 더 큰 여러곱을 만들 때 쓸 수 있음

  • 사람 언어 → Python 언어
    • ”정수 1729 그리고 단어 Hello 그리고 참” → (1729, ‘Hello’, True)
    • ”정수 1729 그리고 단어 Hello, 그리고 참” → ((1729, ‘Hello’), True)
    • ”정수 1729, 그리고 단어 Hello, 그리고 참” → (1729, (‘Hello’, True))

(3) 여러곱으로 표현할 수 있는 예

  • 주소 - 행정 구역 단위별로 엮음
    • 예: 서울시 중구 명동 → (’서울시’, ‘중구’, ‘명동’)
  • 생년월일 - 년, 월, 일 표현하는 정수를 엮음
    • 예: 1981년 9월 18일 → (1981, 9, 18)
  • 거리 - 단위와 거리 값을 따로 엮음
    • 예: 40km → (’km’, 40) 또는 (’m’, 40000)

* 여러곱의 특수한 형태?

  • 계산 자료 하나로 엮은 여러곱: (계산 자료, ) → 첫 번째 원소만 있지만, ,(쉼표)를 써서 여러곱임을 명시해야 함 [쉼표 안 쓰면 그냥 ‘계산 자료’가 되며, 원래 ‘계산 자료’와 차이가 없어짐]
  • 원소가 아예 없는 여러곱: ( ) → 괄호 사이에 아무것도 없음 [특별한 용도로만 사용]

 


 

4-3
여러합 - 계산 자료의 '또는'

1. 접속사 ‘또는’

1) 계산 자료의 종류를 ‘또는’으로 엮은 경우

  • 생활기록부를 찾으려면 이름 또는 생년월일이 필요하다
    → 이름이 3개 있고 생년월일이 5가지가 있다면, 8개의 원소를 가지는 집합을 나타냄
    ⇒ 이름 집합과 생년월일 집합의 합집합에서 원소가 하나 필요하다는 의미
  • 킬로미터 거리 또는 미터 거리가 나온다
    → 킬로미터 거리가 3개 있고 미터 거리가 3개 있다면, 6개의 원소를 가지는 집합을 나타냄
    ⇒ 킬로미터 거리 집합과 미터 거리 집합의 합집합에서 원소가 하나 필요하다는 의미

2) 계산 자료 자체를 ‘또는’으로 엮은 경우(계산 자료 집합이 새로 정의됨)

  • 시험은 월요일 또는 화요일 또는 수요일에 시작한다
    → 계산 자료 3개로 이루어진 집합에 해당함 ⇒ 요일들의 합집합에서 원소가 하나 필요하다는 의미

* 프로그래밍 언어에서 ‘또는’

  • 프로그래밍 언어마다 다름
  • C언어에서는 ‘열거형’이라고 부르고, Haskell/Scala 언어에서는 ‘여러합’이라 부름
  • Python 언어에서는 ‘여러합’이라는 개념이 없음 → ‘여러합 흉내내기’를 해야 함

2. Python 언어에서 여러합 흉내내기

(단, 원소 종류를 나타낼 때 미리 정한 기본 자료만 써야 함)
  • 종류와 내용 쌍으로 이루어진 여러곱으로 여러합 원소를 표현 → 여러합 원소 = (종류, 내용)
  • 내용이 없으면 종류만으로 이루어진 여러곱으로 표현 → 여러합 원소 = (종류, )
  • 킬로미터 또는 미터 거리

  • 월요일 또는 화요일 또는 수요일

반응형