1 of 40

컴퓨팅 사고

Lec04: 데이터와 변수

담당교수: 문성태 (컴퓨터공학과)

stmoon@koreatech.ac.kr

2 of 40

Recap

01

3 of 40

Recap

      • 소프트웨어 개발 과정
    • 폭포수 모델, 나선형 모델, 애자일 방법론

      • 컴퓨팅 사고
    • 문제 분해, 패턴 인식, 일반화, 알고리즘

      • 알고리즘 표현
    • 순서도, 의사코드
    • 시스템 표현을 위해 통합 모델링 언어(UML)

      • 프로그래밍언어
    • 저급언어/고급언어
    • 컴파일 언어/ 인터프리터 언어
    • Python 2 / Python 3

4 of 40

데이터 (Data)

02

5 of 40

데이터와 정보

  • 데이터 (Data)
    • 어떤 물체나 현상을 측정하거나 관찰하여 얻어진 값
    • 알람 시계의 ‘시간’ 데이터, 스마트폰 날씨 앱의 ‘기상청의 날씨’ 데이터 등

  • 정보 (Information)
    • 특정 데이터를 모아서 의미 있고 관리하기 쉽게 정리해 놓은 것
    • 즉 데이터란 정보를 이루고 있는 구성 요소를 의미함

6 of 40

데이터는 어디에 저장될까?

  • 컴퓨터 프로그램 속 데이터
    • 숫자, 문자 같은 단순 데이터부터 사진, 음원 등의 복합 데이터까지 다양함
    • 데이터는 정확해야 하고 필요할 때 언제든지 수정할 수 있어야 함
    • 또한 사용 목적에 따라 다른 형태로 가공할 수도 있어야 함

7 of 40

데이터는 어디에 저장될까?

  • 메모리
    • 사용자가 입력한 데이터, 인터넷을 통해 전송 받은 데이터 등 컴퓨터에서 다루는 모든 데이터는 메모리에 저장됨
    • 컴퓨터의 메모리는 수많은 방들로 이루어져 있으며 각 방마다 하나의 데이터를 저장함
    • 이때 데이터는 숫자, 문자, 사진, 소리 등으로 사용자는 언제든지 데이터를 생성, 수정, 복사, 삭제할 수 있음

8 of 40

변수 (Variable)

02

9 of 40

변수와 메모리

  • 변수
    • 메모리 방마다 부여한 이름을 변수라고 함
    • 즉 변수는 메모리 방의 이름을 의미함
  • 메모리 주소
    • 아파트에 동, 호수가 있듯이 메모리에도 각 방마다 주소가 있음
    • 실제로 프로그래밍할 때는 메모리 주소 대신 이름을 붙여 사용함

10 of 40

변수 저장

  • 변수 저장하고 사용하기
    • 1. 파이썬 셸을 실행하고 다음과 같이 입력함

11 of 40

변수 저장

  • 변수 저장하고 사용하기
    • 2. [Enter] 클릭하여 출력 결과 확인

    • 3. 저장된 데이터 ‘A’를 출력하기 위해 ‘print(변수명)’을 입력

12 of 40

변수 선언과 초기화

  • 변수 선언
    • 메모리에 비어 있는 방을 깨끗하게 청소하고 이름표를 붙여 데이터를 저장할 준비를 하는 단계

  • 변수 초기화
    • 만들어진 변수(메모리 방)에 데이터를 저장하는 단계
    • 데이터를 저장하기 위해서 할당 연산자(=)를 사용함
    • 할당 연산자 ‘=’는 우측의 데이터를 좌측의 변수에 대입하라는 뜻

13 of 40

변수 선언과 초기화

  • 변수를 사용하지 않고 ‘Hello Python’ 출력하기

  • 변수 intro를 선언하고 ‘Hello Python’으로 초기화한 후 출력하기

14 of 40

변수 선언과 초기화

  • 변수의 특징
    • 변수에 저장된 데이터는 언제든지 바뀔 수 있으나 새로운 데이터가 저장되면 과거의 데이터는 사라짐
    • 변수를 초기화할 때와 마찬가지로 할당 연산자 ‘=’를 이용해서 새로운 데이터를 저장함

  • 변수 myAlphabet에 저장된 ‘A’를 ‘ABC’로 변경한 후 출력하기

15 of 40

변수를 초기화하지 않아도 될까?

  • 변수를 선언만 하고 초기화하지 않을 경우
    • 파이썬 셸에 nickname 변수만 입력하고 [Enter]를 누름 → 에러 발생
    • nickname 변수의 선언은 되지만 초기화가 이루어지지 않았기 때문임

16 of 40

변수를 초기화하지 않아도 될까?

  • 변수를 정의할 때는 변수 선언과 초기화를 한 세트로 해주어야 함

  • 초기화한 변수에 다시 아무런 데이터도 할당하지 않을 경우
    • 정상 실행

17 of 40

변수명 규칙

  • 영문자를 사용함

  • 소문자로 시작함
    • 클래스의 이름을 대문자로 시작하기 때문에 클래스명과 구분짓기 위해서 소문자로 시작하는 것이 좋음

18 of 40

변수명 규칙

  • 데이터의 의미를 쉽게 파악할 수 있도록 지음
    • 해당 변수에 어떤 데이터가 저장되는지 쉽게 알 수 있도록 짓는 것이 좋음
    • 예를 들어 게임 프로그램에서 점수는 score, 플레이어는 player 등

19 of 40

변수 명명법 (Naming Rule)

  • PascalCasing
    • ex) UtilityBox, MainFrame
  • CamelCasing (낙타표기법)
    • ex) utilityBox, mainFrame
  • GNU Naming Convention
    • ex) gtk_widget_activate
  • Hungarian Notation
    • ex) g_bTrue, nCnt,
  • ** Constant (상수)
    • ex) DEFAULT_COUNTRY_CODE

20 of 40

변수명 규칙

  • 예약어는 변수명으로 사용할 수 없음
    • 파이썬에 이미 예약된 단어들은 변수명으로 사용할 수 없음

    • 더 많은 예약어 확인하기

21 of 40

변수명 규칙

  • 언더바(_)를 제외한 특수문자는 사용할 수 없음

    • 특수문자 언더바(_)는 변수명의 위치에 상관없이 자유롭게 사용할 수 있음

22 of 40

변수명 규칙

  • 공백문자(‘ ‘)는 사용할 수 없음
    • 공백문자를 사용하면 구문 에러(SyntaxError)가 발생함

    • 공백문자는 변수명의 앞이나 뒤에 와서도 안 됨

23 of 40

변수명 규칙

  • 숫자는 첫 글자를 제외한 나머지 자리에서만 사용함

24 of 40

데이터 크기와 메모리

  • 데이터 손실
    • 작은 방에 큰 데이터를 저장하여 데이터가 넘쳐 일부가 손실되는 것
  • 메모리 낭비
    • 크기가 작은 데이터를 큰 방에 저장하면 프로그램은 정상적으로 실행됨
    • 하지만 이런 경우 메모리가 낭비되며 최악의 경우 전체 메모리가 부족해서 시스템이 멈출 수 있음

25 of 40

데이터 크기와 메모리

  • 메모리 효율적 관리
    • 데이터의 크기에 따라서 메모리의 크기를 적절하게 부여하기
    • 이를 위해 대부분의 프로그래밍 언어에서는 데이터를 자료형으로 분류하고 그에 따른 적절한 메모리 크기를 자동으로 할당함

  • 자료형(data type)
    • 데이터를 정수형(integer), 실수형(float), 문자형(string), 논리형(bool) 등으로 분류하는 것을 의미함

26 of 40

자료형에 따른 변수 초기화 방법

  • 문자형
    • 파이썬에서는 한 글자만 나타내는 문자형과 여러 글자가 모인 문자열형을 동일한 자료형으로 간주함
    • 문자형 : 작은따옴표(‘ ’)를 이용하여 변수에 저장함
    • 문자열의 시작과 끝에 작은따옴표가 하나라도 없으면 에러가 발생함

27 of 40

자료형에 따른 변수 초기화 방법

  • 숫자(정수, 실수)형
    • 변수에 숫자를 저장할 때는 단순하게 숫자만 입력함

    • 정수형 : 소수점이 없는 숫자 데이터

28 of 40

자료형에 따른 변수 초기화 방법

  • 숫자(정수, 실수)형
    • 실수형 : 소수점이 있는 숫자 데이터를 의미함
      • 따라서 정수형을 의도했더라도 3.0을 입력하면 실수형으로 인식함
      • 실수형은 메모리의 크기에 제약을 받기 때문에 소수점 16번째 자리까지만 메모리에 저장하고 나머지는 손실됨

29 of 40

자료형에 따른 변수 초기화 방법

  • 숫자(정수, 실수)형
    • 숫자와 문자의 구분
      • var1 : 정수 777이 저장됨
      • var2 : 문자열 ‘777’이 저장됨

30 of 40

자료형에 따른 변수 초기화 방법

  • 논리형
    • ‘참’과 ‘거짓’을 나타내는 논리 데이터인 True와 False가 있음
    • True와 False도 데이터이므로 변수에 저장할 수 있음

31 of 40

자료형 조회

  • type( ) 함수
    • 변수에 저장된 데이터가 어떤 자료형인지 알기 위해 사용하는 함수

32 of 40

자료형 변환

  • 자료형 변환
    • 자료형은 서로 간에 변환이 가능하며 ‘자료형 변환’ 또는 줄여서 ‘형 변환’이라고도 함
    • 자료형을 변환하기 위해서는 함수를 사용함
    • 각 함수의 괄호 안에 데이터를 넣으면 데이터의 자료형이 바뀜

33 of 40

자료형 변환

  • 자료형 변환
    • 정수형 10을 문자로 변환하기

    • 문자 ‘123’을 정수와 실수로 변환하기

34 of 40

자료형 변환

  • 자료형 변환
    • 문자형을 논리형으로 변환하기
      • 빈 문자(‘’)를 논리형으로 바꾸면 False로 변환되고, 그 외 나머지 문자는 모두 True로 변환됨
      • 공백문자(‘ ’)도 True로 변환됨

35 of 40

데이터 복사 & 변경

  • 데이터 복사
    • 할당 연산자(=)를 이용하면 변수에 저장된 데이터를 다른 변수에 쉽게 복사할 수 있음

36 of 40

데이터 복사 & 변경

  • 데이터 변경
    • var1과 var2는 전혀 다른 방이며 서로 영향을 끼치지 않음
    • var2에 var1의 데이터를 복사한 후 var1의 데이터를 변경하면 var1은 변경되지만 var2는 변경되지 않는 것을 확인할 수 있음

37 of 40

데이터 전달 방법

  • Pass by reference (참조 전달 방법)
    • Avoid duplicate objects
    • Return multiple values

  • Pass by value (값 전달 방법)

38 of 40

데이터를 입력 받아 저장하기

  • input( ) 함수
    • 사용자에게 데이터를 입력 받을 때 사용하는 함수
    • input() 함수로 사용자에게 입력 받은 데이터를 userData 변수에 저장하기

    • print() 함수를 이용하여 데이터 입력을 유도하기

39 of 40

데이터를 입력 받아 저장하기

  • input( ) 함수
    • print() 함수 대신 input() 함수의 매개변수(parameter)를 이용하기

40 of 40

데이터를 입력 받아 저장하기

  • input( ) 함수의 주의 사항
    • input() 함수로 입력 받은 데이터는 무조건 문자열로 처리되며 사용자에게 정수나 실수로 유도해도 문자열로 처리됨

    • 사용자에게 입력 받은 데이터를 정수형, 실수형, 논리형으로 다루기 원한다면 자료형을 변환해야 함