방송대 Python

 

학습목차

1️⃣ 제어구조의 이해

2️⃣ 순차구조

 

1. 제어구조의 이해

1)제품 생산 공정

우리의 일상생활 우리의 사회에 벌어지는 여러가지 일들을 보면 순서를 가지고 처리되는 일과

상황에 따라서 조건에 따라서 어떻게하고  다르게 하고 등등 이런 전체를 반복하는 이러한 형태에 구조를 가지고 있다 

이러한 인간의 일상에서 만들어지는 구조는 프로그래밍 언어에서도 동일하게 가지고 있다.

 

2) 구조적 프로그래밍 패러다임

👉 절차적 프로그래밍 패러다임의 하위 개념

👉 goto 문을 사용하지 않고 프로그램을 3가지 제어 구조만으로 구성하는 프로그래밍 패러다임

-> 순차(sequence) 구조

-> 선택(selection) 구조

-> 반복(iteration) 구조

👉 프로그램 실행 흐름이 간결하고 작은 규모로 조직화하기 쉬움

 

3) 순차 구조 ( 순서대로 뭔가가 진행된다는 의미 )

👉 실행의 흐름을 주어지는 명령의 위치적 흐름에 따라 수행하는 구조

-> 명령 라인 위에서 아래로 흐르는 가장 직관적인 구조

 

 

👉 특정 영역 내의 명령문에 대한 실행 여부를 프로그램 실행 과정 중 결정하는 구조

-> 실행 여부는 조건에 따라 결정된다.

 

4) 반복 구조

👉 특정 영역의 명령문을 여러 번 재실행하는 구조 

-> 반복 횟수를 조건에 따라 결정

 

2. 순차 구조

1) 순차 구조

👉 실행의 흐름을 주어지는 명령의 위치적 흐름에 따라 수행하는 구조

-> 명령 라인 위에서 아래로 흐르는 가장 직관적인 구조 

-> 일단 첫 단계를 시작하면 마지막 단계까지 수행

 

 

2) 삼각형 출력하기

👉 다음과 같이 삼각형 모양으로 *을 출력하는 프로그램을 작성하시오 

print("    *")
print("   ***")
print("  *****")
print(" *******")

""" 출력
    *
   ***
  *****
 *******
"""

🤔생각할 점
어떤 처리를 먼저 하고 나중에 해야 하는지

 

3) 원뿔 계산 프로그램 개선

👉 사용자로부터 반지름과 높이를 입력받고 계산

 

4) 사용자 입력

👉 input : 사용자로부터 데이터를 입력받는 함수

-> 입력 데이터를 문자 데이터 타입으로 반환

-> 함수의 파라미터는 입력 안내문의 목적으로 사용

#반지름, 높이 값 할당
rad = input("반지름의 값을 입력하세요 : ")
#높이 사용자 입력
hei = input("높이 값을 입력하세요 : ")
#부피 출력
vol = 1/3 * 3.14 * rad ** 2 * hei
print(vol)

# 입력 대기 후 입력값 반환

 

5) 프로그래밍 에러

👉 설계 미숙, 결함 또는 문법 오류로 프로그램이 의도한 대로 결과를 생성하지 못하는 문제

-> 구문 오류(syntax error) : 문법 체계에 적합하지 않는 명령문 입력 시 발생

-> 실행 오류(runtime error) : 논리적으로 실행 불가능한 명령문 작성 시 발생

-> 의미 오류(semantic error) : 의미적으로 잘못 해석되는 명령문 작성 시 발생

 

6) 데이터 타입 변환

input type : 사용자가 입력하는 모든 데이터를 문자로 변환 하는 input 함수

예) input 함수를 통해 정수 30 입력 -> rad에 들어가는 변수값은(숫자가 아닌) 문자 형태 30  ->

ㄴ 정수 30으로 변환해주는 무언가가 필요하다.

 

👉 데이터 타입을 다른 타입으로 전환

-> 문자열 타입으로 변환 : str 함수

-> 정수 타입으로 변환 : int 함수

-> 소수 타입으로 변환 : float 함수

#rad = input("반지름을 입력하세요")
#rad = int(rad)

rad = int(input("반지름을 입력하세요"))

 

원뿔 계산 프로그램 개선

#반지름, 높이 값 할당
rad = int(input("반지름의 값을 입력하세요 : "))
hei = int(input("높이 값을 입력하세요 : "))
#부피 출력
print("부피의 값은", 1 / 3 * 3.14 * rad ** 2 * hei, "입니다." , sep="" )
#겉넓이 출력
print("겉넓이의 값은", 3.14 * rad ** 2 + 3.14 * rad * hei, "입니다.", sep="")
"""
# 출력
반지름의 값을 입력하세요 : 20
높이 값을 입력하세요 : 30
부피의 값은12559.999999999998입니다.
겉넓이의 값은3140.0입니다.
"""
기억할 점
1. 함수를 중첩해서 사용
2. 여러 개의 파라미터를 받을 수 있는  print 함수
3. sep옵션으로 공백 조절

 

7) print 함수의 확장

👉 여러 개의 데이터를 단일 함수로 출력 가능

-> 콤마(,)로 파라미터를 구분하여 입력

-> 데이터 사이에 공백(기본값)이 자동으로 추가

-> sep 옵션을 변경하여 공백 변경 가능

 

 

 

방송때 Python

 

학습목차

1️⃣ 프로그래밍 기초

2️⃣ 데이터 저장

3️⃣ 산술 연산자

 

01. 프로그래밍 기초

1) 숫자와 문자

🤔 : 데이터를 처리하기 위해 필요한 질문 " 처리해야 할 데이터는 무엇인가 ? " 

 

👉 숫자 

-> 정수(integer) : 소수점이 없는 숫자

-> 실수(floating point) : 소수점이 포함되는 숫자

 

👉 문자

-> 유니코드(unicode) 기반 문자 또는 문자열

      ㄴ 전 세계의 모든 문자들을 표현하기 위해 가변 길이의 4byte로 문자를

          표현하는 코드 체계를 유니코드라고 함 

-> 인용 부호 " 또는 '를 사용하여 표현 

      ㄴ문자가 하나이든, 여러개 이든 파이썬에서는 모두가 문자 타입

 

2) 기본연산자와 표현식

👉 피연산자와 연산자를 이용한 표현식은 파이썬 인터픠터에 의해 자동 계산

파이썬 인터프리터에 의해 자동 계산

연산자 기능
+ 더하기
- 빼기
* 곱하기
/ 나누기
** 지수 (거듭제곱)

 

3) 함수(function)

👉 특정 작업을 수행하는 코드의 집합(명령문의 집합) 으로 함수의 이름만으로 실행할 수 있는 단위

-> print 함수 : 화면에 데이터를 출력하는 작업

 

👉 함수의 기본 구조

print("Hello World!")
함수 이름 / 입력값(파라미터)

4) 함수의 실행

 

5) 들여쓰기

👉 파이썬은 들여쓰기에 의존적 언어

-> 타 프로그래밍 언어에서는 가독성 향상 목적

-> 파이썬에서 코드의 논리적 집합인 블록을 표현 

👉 들여쓰기는 스페이스 4칸을 권장(PEP 8)

👉 블록 중첩 시 추가적인 4칸 들여쓰기 삽입

print("Hello World!")
print("Python is fun")

 

6) 문서화 

👉 주석(comment) 사용

-> 가독성 증대로 개발 속도 향상 , 유지보수 용이

👉 주석의 종류

-> 한 라인 주석에 #을 사용

-> 여러 라인 주석에 """ 또는 " 3개를 연달아 사용

# 이럴 때 필요한 것이 주석
print((4.5 * 2 + 4.0 * 3 ) / ( 130 - 66 ))

# 예시
""" 성적 계산 방식 sum(성적 * 학점) / 총학점 """
print((4.5 * 2 + 4.0 * 3 ) / ( 130 - 66 ))

 

 

 

4강_실습시작

웹브라우저만 있으면 Google Colab을 이용해 언제 어디서든 파이썬 프로그래밍 가능 ( 브라우저는 크롬 사용)

 

https://github.com/jaehwachung

 

jaehwachung - Overview

jaehwachung has 3 repositories available. Follow their code on GitHub.

github.com

 

# 4강 1절

# 01)
"Hello World ! " 
# 출력 : 'Hello world ! '

# 02)
12 ** 10 * 5
# 출력 : 5120

# 03)
"computer" + "science"
# 출력 : 'computerscience'

# 04)
print( 2 * 7 )
# 출력 : 14


# 05)
print("Hello World!")
print("Python is Fun")
# 출력 : Hello World! Python is Fun 

# 06)
print((4.5 * 2 + 4.0 * 3) / 2 )
# 출력 : 10.5

 

02. 데이터 저장

1) 원뿔의 부피 & 겉넓이 계산 프로그램

👉 원뿔의 부피&겉넓이 계산 알고리즘

 

 

2) 변수

👉 명령어 패러다임 언어의 특징

-> 처리할 데이터와 처리된 결과를 임시적 저장

-> 변수의 값을 변경하는 할당연산자(=)를 이요

 

3) 식별자

어떤 저장 공간을 어떤 명칭으로 부르기 위한 목적

👉 프로그램 내부에 정의된 객체(변수, 함수 등)의 이름

-> 문자, 숫자, 밑줄로 구성

-> 문자 또는 밑줄로만 시작 가능

-> 예약어와 동일할 수 없음

-> 길이 제한이 없음

 

# 변수로 사용불가
volume, Surface, _50, x , y, _name
$d$ , 1-a 2023y , else, class, r+h , 77#R

 

4) 예약어

👉 파이썬 인터프리터에 의해 이미 문법적인 용도로 사용되어 식별자로 사용이 불가능한 단어

False await else import pass None
break except in True class finally
is return and continue for lambda
try as def global not with
async elif if yield raise or

 

4) 변수의 사용 

변수의 이름만 호출하면 된다.

#반지름, 높이 값 할당
red = 20
hei = 30

#부피 출력
print( 1/ 3 * 3.14 * rad * rad * hei )

#겉넓이 출력
print(3.14 * rad * rad + 3.14 * rad * hei)


# lvalue 값 할당
# rvalue 값 호출

 

⭐️실습 목표 

변수 사용하기 

# 4강 2절 원뿔의 부피와 겉넓이 계산하는 프로그램

#반지름, 높이 값 할당
rad = 20
hei = 30

# 부피출력
print(1 /3 * 3.14 * rad ** 2 * hei)
# 겉넓이 출력
print(3.14 * rad ** 2 + 3.14 * rad * hei) 
# ㄴ 출력 : 12559.9999999999998 / 3140.0

 

3. 산술연산자

1) 산술연산자의 정의

👉 피연산자(operand)에 대해 지정된 산술 연산을 지시하는 기호 

-> 단항 연산자(unary operator)

-> 이항 연산자(binary operator)

2) 특수 산술연산자

👉 프로그래밍 언어에서만 사용되는 연산 또는 부호 

-> 정수 나눗셈 연산자(//)

-> 모듈로 연산자(%)

 

3) 연산자 우선순위

👉 표현식에 사용된 여러 연산자의 연산 순서를 결정

① 괄호 내부의 수식

② 지수(**) 연산자

③ 곱셈, 실수 나눗셈, 정수 나눗셈, 나머지 연산자

- 왼쪽에서 오른쪽 순서로 적용

④ 덧셈 뺄셈 연산자

- 왼쪽에서 오른쪽 순서로 적용

⑤ 할당 연산자

# avg = 1 // 3 * 3.14 * 20 ** 2 * (30 + 20 % 10)

 

4) 파이썬 내장 함수

항상 사용되는 함수들을 파이썬 인터프리터에서 기본적으로 내장해놓고 제공

ㄴ print는 대표적인 내장 함수 

 

👉 파이썬 인터프리터에서 기본적으로 지원하는 함수

-> 별도의 모듈이나 패키지 없이 사용 가능

# 대표적인 내장함수
max(2, 3, 4)
min(2, 3, 4)
round(3.141592)
round(3.4)
abs(-3)
pow(2, 3)

 

방송대 Python
학습목차
1️⃣ 파이썬의 개요
2️⃣ 파이썬 프로그램의 실행
3️⃣ 파이썬 프로그래밍 환경 

 

01. 파이썬의 개요

 

파이썬의 탄생 1

👉 히도 판로쉼(Guido van Rossum) 1991년 개발

-> 네덜란드 암스테르담 대학에서 컴퓨터 전공

-> 좋아하는 코미디 'Monty Python's Flying Cricus'를 따라 명명

-> 크리스마스 주 연구실에 잠겨 할일이 없어 만든 프로그래밍 언어

 

👉 분산 운영 체제(아메바)의 시스템 관리를 위한 쉘 스크립팅 언어로 개발

명령어를 순차적으로 나열 운영체제가 어떤 순서로 동작해야 하는지

명령어를 집합으로 만들어 놓은 형태를 스크립트라 하고 

이러한 목적을 가지고 만들어진 언어가 파이썬(Python)이다.

 

 

파이썬의 탄생 2

👉 다중 프로그래밍 패러다임 채용

-> 정의 : 프로그램을 생성하는 접근 방식

-> 명령형 프로그래밍, 절차적 프로그래밍,

객체지향 프로그래밍, 함수형 프로그래밍 지향

현실 세계를 어떠한 방식으로 모델링하는 것에 대한 여러 관점들을 규칙화하여 만든 것이 페러다임 

 

👉 다목적 활용

-> 응용 프로그램과 웹, 백엔드 개발, 사물 인터넷 분야 뿐만 아니라 교육적인 목적으로도 활용

 

파이썬의 발전 과정

👉 1991년 ABC의 후속 프로그래밍 언어로 시작

👉 1999년 DARPA에 'Computer

Programming for Everybody' 제안

👉 2000년 파이썬 2.0 출시

-> 커뮤니티를 통한 개발 체계 시작

👉 2008년 파이썬 3.0 출시 

-> 비 하위 호환성을 갖는 메이저 업데이트

 

파이썬의 인기

 

파이썬 답다 'Pythonic'

 

 

오픈소스

👉 파이썬 관련 개선을 위한 제안(PEP)

-> 많은 개발자의 의견을 수용하고 토론하며 발전한 언어

-> 새로운 파이썬의 기능, 파이썬 프로세스, 환경에 대해 커뮤니티에 설계 문서나 정보를 제공

-> 파이썬 기능의 간결한 기술적 사양과 기능을 위한 근거들을 제공

-> 커뮤니티의 의견을 수집, 합의 도출, 반대의견 청취 

👉 PEP 8 ( 스타일 가이드 ) 대표적 : 이렇게 만들어 놓으면 효율적으로 프로그래밍 할 수 있다는 가이드라인

 

인간적 & 직관적

실행할 수 있는 의사 코드(Executable pseudocode) 수준의 문법

 

 

 

생산성 & 신속성

 

 

대형 개발자 커뮤니티

전세계적으로 1500만명에 개발자 커뮤니티를 가지고 있다. 

장점 : 프로그램이 정상적으로 돌아가지 않는다면 대형에 커뮤니티에서 문제를 신속히 찾아 개선을 할 수 있다.

검색을 통해서 신속히 해결책을 찾을 수 있다는 큰장점이 있다.

 

 

라이브러리와 프레임워크

왼쪽은 Python -  오른쪽은 Java / C

 

주어진 라이브러리들을 빠르게 임포트하여 쉽고 편하게 사용 가능하다.

 

 

파이썬의 단점

👉 C나 자바 등으로 작성된 프로그램보다 느린 속도

👉 완전한 애플리케이션 단독 개발이 불가능

-> 쉘 스크립트 언어 용으로 개발

-> 모바일 앱 등 응용 애플리케이션 개발 불가능 

    ㄴ Rust 또는 Go 프로그래밍 언어로 만들 수 있다

 

 

2.  파이썬 프로그래밍의 실행

 

파이썬 실행 환경

👉 플랫폼에 독립적이며 인터프리터식 객체지향적, 동적 타이핑(dynamically typed) 대화형 언어

-> 윈도우, 리눅스 , 유닉스 , 맥OS 등 다양한 운영체제(플랫폼)에서 별도의 컴파일 없이 실행 가능

-> CPython , PyPy , Cython , Jython 등 다양한 인터프리터 환경 사용 가능

-> 프로그램을 객체로 모델링

-> 변수의 자료형을 지정하지 않음

-> 작성한 코드에 대한 수행 결과를 바로 확인하고 디버깅하면서 코드 작성 가능

 

CPython 

👉  C 언어로 개발된 파이썬 인터프리터

-> C 구현 라이브러리와의 연동을 통한 확장에 최적화

컴파일러의 유형
① 셀프 호스팅 컴파일러 : 부트스트래핑 단계를 통해 자신의 언어로 작성한 컴파일러
② 소스 대 소스 컴파일러 : 타 언어로 작성한 컴파일러

👉 오픈소스로 커뮤니티의 기여로 지속적 발전

-> https://github.com/python/cpython 

 

GitHub - python/cpython: The Python programming language

The Python programming language. Contribute to python/cpython development by creating an account on GitHub.

github.com

 

파이썬 프로그램 실행과정

👉 파이썬 애플리케이션은 소스 코드 형태로 배포

-> CPython이 컴파일 후 바이트코드 .pyc 파일 생성

-> 파이썬 가상머신은 바이트코드를 한 라인 씩 실행

-> 변경없이 재실행 시 바이트코드로 빠르게 실행

 

 

IDLE

👉 기본으로 포함된 파이썬의 통합 개발 환경

-> 파이썬과 Tkinter GUI 툴킷으로 개발

-> 구문 강조, 자동 완성, 스마트 들여쓰기 등이

포함된 단순한 IDE 지향

-> stepping, breakpoint, call stack을 확인할 수 있는 통합 디버거 환경 제공

 

 

 

주피터 노트북

👉 오픈소스 기반의 웹 플랫폼

-> 파이썬을 비롯한 40여개의 프로그래밍 언어 지원

-> 전통적인 소스코드-컴파일-실행 방식에서 벗어나 웹 기반 대화형 개발 및 실행 환경

-> 문서화하여 다른 사람과 공유하기 편리

-> 마크다운(Markdown)을 이요하여 코드 관련 타이틀, 설명 등 작성 가능

 

구글 Colab (협 업 - 주피터 노트북을 개선한 형태로 제공하는 서비스)

👉 2017년 과학 연구와 교육을 목적으로 개발

👉 클라우드 기반 주피터 노트북 개발 환경

-> 주피터 노트북 + 구글 드라이브를 결합한 서비스

-> 데이터 분석 및 딥러닝 연산 등 고성능 컴퓨팅 리소스 활용 가능 

 

 

 

 

3. 파이썬 실습

프로그래밍 개발 환경

https://colab.research.google.com/

 

Google Colaboratory

 

colab.research.google.com

 

 

 

고려대학교 교수님 초빙 강의 

 

정보과에서 추구하는 가치는 사고력  :  " 프로그래밍이 지향하는 것은 그 사고력의 관점 "

문제발견 -> 문제 해결 방법 모색 -> 문제 해결 = 프로그래밍  

 

절차적으로 생각하고 문제를 해결할 수 있도록 하는 사고력 전반을 품은 것, 프로그래밍 

우리가 일을 할 때에도 절차가 있는데... 

프로그래밍을 하게 되면 논리적으로 생각하고

절차적으로 사고하고

이에 기반한 문제 해결을 가능하게 하는 프로그래밍이다 프로그래밍의 가치는

새로운 시야로 문제를 보고 그것들을 해결하기 위해 생각하고 생각한 것들을 구현하고 표현하는 과정이 프로그래밍의 가치다 

 

Q. 어떤 걸로 프로그래밍 능력을 키워야 할까 ? 추천하는 프로그래밍 언어?

A .자기가 좋아하는 언어로 시작하면 된다.

세상을 살아갈 이치 중 하나가 프로그래밍

 

내용 : 교육용 프로그래밍은 3천개가 있다.  고등학교뿐 아니라 중학교에서도 파이썬 언어로 수업한다. 진입장벽이 낮음

기초는 파이썬으로 하고 깊이 공부하고 싶다면 자바나 다른것도 공부해봐도 좋다. 

 

내가 생각하고 있는 것들을 잘 표현할 수 있게 한 언어는 파이썬 

 

Q. 일반인들에게도 필요한 컴퓨팅 사고력, 인공지능 소양 ? 

A : 컴퓨팅 사고력이 무엇일지 생각해보면 보자 , 우리가

논리적 사고력 , 절차적 사고력 , 비판적 사고력 여러 사고력이 있는데 그 중 컴퓨팅 사고력은 무엇이 다를까 ? 

컴퓨터를 활용해서  문제 해결을 전제로 문제를 이해하고 분석하고 거기에서 해결방법을 찾아서 문제를 해결해 가는 것이 컴퓨팅 사고력이다. 프로그래밍의 가치와 일맥상통하는 컴퓨팅 사고력 .

문제를 이해하고 

 

 

Q. 파이썬 언어를 효과적으로 공부할 수 있는 방법 ? 

A : 언어를 배울 때 제일 어려운 것은 어떨ㄷ 때 어떤 단어를 써야 할 지 모르는 것 

파이썬에 처음 접할때 명령어다. 

 

Tip 

1️⃣ 각종 명령어들을 정리해 적어놓고 각 명령어를 어떻게 적용할지를 정리

2️⃣ 정리한 자료를 토대로 프로그래밍 해 본다.

언어들을 모두 자유자제로 사용해야하는데 그게 어렵다면 명령어 노트를 적어놓고 프로그래밍 언어 공부를 훨씬 쉽게 할 수 있을 것

 
방송대 Python

 

1. 하드웨어와 소프트웨어

1) 컴퓨터의 구성요소 

하드웨어 : 컴퓨터를 구성하고 있는 물리적 부품

소프트웨어 : 다양한 장치들을 동작시켜 특정 작업을 해결하는 프로그램

 

2) 사람의 문제해결 과정

(1) 어떤 계산을 먼저하고 나중에 해야 하는지 정해야함 

(2) 문제 푸는 과정을 먼저 찾고 이후에 문제를 풀기 시작한다.

 

3) 하드웨어

폰 노이만 구조

4) 소프트웨어

소프트웨어는 각각의 고유한 기능을 수행하는 하드웨어가 언제 어떻게 동작하여 문제를 해결할 수 있는지 지시하는 명렁어 집합을 말한다.

알고리즘 프로그래밍 언어로 구현한 결과물, 소프트웨어

-> 응용 소프트웨어 : 사용자의 업무나 목적에 맞게 문제 해결을 위한 처리 절차를 표현한 명령어 집합
-> 시스템 소프트웨어 : 하드웨어를 제어 - 관리하여 응용 소프트웨어를 실행할 수 있는 환경을 제공

 

2.하드웨어의 이해

1) 입력장치 

-> 명령과 데이터를 컴퓨터에 전달하는 장치

-> 컴퓨터가 처리할 수 있는 2진수 형태로 변환

 

3) 입력장치의 종류

 

 

3) 특수 입력장치 ( 동작인식 장치 )

 

 

4) 출력장치

 

(1) 출력장치의 종류

정보 처리 결과를 인간이 인식 가능한 형태의 데이터로 내보내는 장치

-> 2진수 형태의 데이터를 문자, 숫자, 도형, 음성, 영상 등의 형태로 변환

 

(2) 특수 출력 장치

HUD : AR (Augmented Reality)

HMD : VR (Virtual Reality)

 

5) 기억(저장) 장치

-> 명령과 데이터를 기억(저장) 하는 하드웨어

-> 역할에 따라 주기억장치 보조기억장치로 구분

 

 

 

(1) 기억(저장) 장치의 종류

(2) 특수 기억(저장) 장치

-> RAM을 이용한 저장장치

-> 빠른 속도, 외부 충격에 강함, 적은 전력소모가 강점

 

 

6. 제어와 연산 장치

❖ 현대의 컴퓨터는 제어장치와 연산장치가 별도로 구분되어 있지 않다

-> 명령어와 데이터를 읽고 데이터를 연산 또는 처리하는 장치

 

 

3.소프트웨어의 이해

소프트웨어는 고유한 기능을 수행하는 하드웨어가 언제 어떻게 동작하여 문제를 해결할 수 있는지

절차를 지시하는 명령어 집합

-> 응용 소프트웨어

-> 시스템 소프트웨어

 

1) 시스템 소프트웨어

다양한 장치들을 서로 유기적으로 동작시켜 특정 작업을 수행할 수 있는 환경을 조성하는 프로그램

 

 

2) 운영체제의 개념

응용 소프트웨어가 효과적으로 작동할 수 있는 환경을 조성한다.

(1) 운영체제의 역할

컴퓨터의 자원 (하드웨어) 을 효율적으로 관리하고 응용 프로그램에 자원을 할당한다.

-> 사용자 인터페이스

-> 프로세스 관리

-> 네트워크 관리

-> 기억장치 관리

-> 입출력장치 관리

 

3) 사용자 인터페이스 ( UI ) 

컴퓨터와 사용자를 매개하여 상호작용하는 방법을 제공

 

 

(1) GUI 기반의 운영체제와 CLI 기반의 운영체제는 어떤 것이 있을까

GUI : 기반의 운영체제는 그래픽 사용자 인터페이스를 기반으로 한 운영체제이다. 사용자는 마우스 및 키보드와 같은 입력 장치를 사용하여 그래픽으로 표시된 아이콘, 창, 버튼 등을 클릭하여 작업을 수행할 수 있다.

일반적으로 대화형 작업에 적합하며, 많은 일반 사용자가 일상적으로 사용하는 운영체제이며. 대표적인 예로는 Windows, macOS, Ubuntu 등이 있다.

 

CLI :  기반의 운영체제는 명령줄 인터페이스(Command Line Interface)를 기반으로 한 운영체제이다.

사용자는 명령어를 입력하여 작업을 수행할 수 있다.

명령어는 일반적으로 키보드로 입력되며, 결과는 텍스트로 출력된다.  CLI 기반의 운영체제는 대량 작업 및 자동화 작업에 특화되어 있으며, 일부 개발자, 시스템 관리자 등이 사용한다. 대표적인 예로는 Linux, Unix, MS-DOS 등이 있습니다.

 

4) 프로세스 관리

-> 프로세스는 실행되고 있는 상태의 프로그램

-> 여러 프로그램 실행이 요청되면 한정된 자원(기억장치 등)을 효과적으로 사용하도록 조율

 

5) 네트워크 인터페이스

-> 컴퓨터는 네트워크를 통해 상호 데이터 교환

-> 응용 프로그램이 통신할 수 있는 환경 제공 및 통신 장치(하드웨어) 관리

 

6) 기억 • 저장장치 관리

-> 보조기억장치에 저장된 컴퓨터의 프로그램은 실행되기 위해서 주기억장치에 적재된다.

-> 주기억장치의 크기는 보조기억장치의 크기보다 매우 작기 때문에 효율적 관리가 요구된다.

방송대 Python

 

데이터와 정보

 

1. 데이터의 개념

  • 어떤 현상이나 사실에 대한 설명 또는 집합
  • 관찰이나 실험, 조사로 얻은 수치, 문자 형태의 표현할 수 있는 질적 또는 양적 값
    • 불을 보고 붉다 , 밝다 , 뜨겁다 로 얻은 값 =  질적데이터 

 

 

 

2. 정보의 개념

  • 문제 또는 질문을 해결하기 위해 사용할 수 있는 데이터와 데이터의 집합
  • 관찰이나 측정을 통하여(데이터)를 통하여 얻은 지식
  • 관찰과 측정을 통해 얻은 데이터를 처리(정렬, 합산, 군집화)하여 실제 문제 해결에 도움이 되는 데이터 또는 결과물

 

3. 정보처리과정

현상(이벤트) 발생) => 관찰 측정 => 데이터 => 처리, 가공 => 정보

 

4. 관찰과 측정

  • 관찰 : 사물 또는 현상을 파악하는 행위 => 주로 질적데이터 생산
  • 측정 : 절대적인 기준에 맞춰 현상을 수치로 나타내는 과정

 

5. 처리와 가공

  • 수집된 데이터의 집합을 정렬 , 군집화 , 계산 또는 표현방법 변경 등의 데이터를 변환하여 정보를 생산하는 과정

 

컴퓨터의 개념

 

1. 컴퓨터의 정의

  • 데이터를 처리해서 정보로 변환하는데 도움을 주는 기계

 

2. 데이터의 기본단위

  • 비트(bit, binary digit)
    • 0 , 1 로 이루어짐
    • 두가지의 상태값을 표현하는 기본 단위를 여러개 중첩시켜 데이터를 표현 , 처리
  • 바이트(byte)
    • 8개의 bit를 합쳐서 표현 => 0~255(256가지 표현가능)

 

3. 컴퓨터의 2진법

  • 컴퓨터는 트랜지스터를 통해 2진법 숫자로 데이터를 표현하여 저장 및 처리

 

4. 아날로그와 디지털

  • 아날로그 : 사물이나 개념을 연속적인 물리량의 값으로 표현, 질적 / 양적데이터로 표현
  • 디지털 : 사물이나 개념을 이산적인 값으로 근사하여 표현, 양적데이터로 표현

 

5. 숫자 데이터의 표현

  • 사람 : 10, 12진수 사용
  • 컴퓨터 : 2진수 사용
  • 진법변환 필요

6. 문자 데이터의 표현

  • 사람 : 한글, 알파벳 등
  • 컴퓨터 : 2진수 사용
  • 인코딩 체계 활용 => ASCII 코드
    • Q . 왜 ASCII CODE는 7비트일까 ? 

 

컴퓨터와 프로그램

1. 프로그램

  • 컴퓨터는 정보를 처리하기 위한 방법과 과정을 자의적으로 결정 불가능
  • 처리 방법과 과정이 정의된 프로그램을 사용
    • 프로그램이란 컴퓨터가 어떠한 작업을 자동으로 처리 할 수 있도록 처리 방법 및 순서를 컴퓨터가 이해할 수 있는 언어로 기술한 것
    • 유사한 유형의 여러 문제를 추상화 시킨 알고리즘을 구현한 결과물

2. 정렬 알고리즘

  • 모든 카드를 오름차순으로 정렬하는 문제
  • 모든 유사한 문제를 처리할 수 있는 절차가 있다면 ? => 알고리즘 필요
    • 정렬되지 않은 영역에서 가장 작은 수 하나를 찾는다 -> 맨앞의 카드와 바꾼다 -> 카드에 제대로 정렬되어 있는지 확인한다.    (선택정렬 알고리즘)

 

 

3. 알고리즘의 정의

  • 문제를 풀기위한 단계별 절차를 체계적 명령의 형태로 기술한 것
  • 주언진 명령어를 처리하는 컴퓨터에게 문제를 해결하도록 만드는 정형화된 절차

 

4. 프로그래밍 언어

  • 사람과 컴퓨터 사이의 의사소통 도구
  • 명령어 2진수로 내려줘야 함 but 사람은 2진수로 명령을 못내림
    • 프로그래머는 컴퓨터가 이해할 수 있는 언어를 사용하여 프로그램을 작성

5. 프로그래밍 언어의 분류

  • 1세대 언어 : 기계어 / 0과 1 => 사람에게 어려움
  • 2세대 언어 :  어셈블리어 / 명렁어 영어 대체 => 대중화에는 불편함
  • 3세대 언어 : Python, C , Java, Rust => 자연어와 유사
  • 4세대 언어 : Visual Basic => 자동화, 효율성 떨어짐

 

6. 프로그램의 실행

  • 고급 프로그래밍 언어를 컴퓨터가 못알아들음
    • -> 3, 4세대 언어를 사용하고 인터프리터와 컴파일러를 사용해 이진수 ( 0 , 1) 로 변환하여 컴퓨터에 전달
    • 파이썬은 인터프리터 언어이다

1.1.2 문제와 데이터 이해

머신러닝 프로세스에서 가장 중요한 과정은 사용할 데이터를 이해하고 그 데이터가 해결해야할 문제와 어떤 관련이 있는지를 이해하는 일이다. 아무 알고리즘이나 선택해서 데이터를 입력해보는 것은 좋은 방법이 아니다.

데이터셋으로 무엇을 하는 것인지 머신러닝 모델을 만들기 전에 반드시 이해해야 한다. 알고리즘마다 잘 들어맞는 데이터나 문제의 종류가 다르기 때문이다. 머신러닝 솔루션을 만들 동안 다음 질문에 답해보거나 최소한 마음에 새겨둬야 한다.

 

  • 어떤 질문에 대한 답을 원하는가? 가지고 있는 데이터가 원하는 답을 줄 수 있는가?
  • 내 질문을 머신러닝의 문제로 가장 잘 기술하는 방법은 무엇인가?
  • 문제를 풀기에 충분한 데이터를 모았는가?
  • 내가 추출한 데이터의 특성은 무엇이며 좋은 예측을 만들어낼 수 있는가?
  • 머신러닝 애플리케이션의 성과를 어떻게 측정할 수 있는가?
  • 머신러닝 솔루션이 다른 연구나 제품과 어떻게 협력 할 수 있는가?

1.2 왜 파이썬인가?

파이썬은 데이터 과학 분야를 위한 표준 프로그래밍 언어가 되어 가고 있다. 파이썬은 범용 프로그래밍 언어의 장점은 물론 매트랩 과 R 같은 특정 분야를 위한 스크립팅 언어의 편리함을 함께 갖췄고. 파이썬은 데이터 적재, 시각화 통계 자연 처리 , 이미지 처리등 필요한 라이브러리들을 가지고 있다. 이러한 많은 도구가 데이터 과학자에게 아주 풍부하고 일반적인 그리고 또 특수한 기능들을 제공해준다. 곧 살펴보겠지만 파이썬의 장점 하나는 터미널이나 주피터 노트북 같은 도구로 대화하듯 프로그래밍 할 수 있다는 점이고, 그래서 반복 작업을 빠르게 처리하고 손쉽게 조작할 수 있는 도구가 필수이다.

범용 프로그래밍 언어로서 파이썬은 복잡한 그래픽 사용자 인터페이스(GUI)나 웹서비스도 만들 수 있으며 기존 시스템과 통합하기도 좋다.

 

1.3 Scikit-learn(사이킷런)

오픈 소스인 사이킷런은 자유롭게 사용하거나 배포할 수 있고, 누구나 소스 코드를 보고 실제로 어떻게 동작하는지 쉽게 확인할 수 있다. 꾸준히 개발, 향상되고 있고 커뮤니티도 매우 활발하다.머신러닝 알고리즘들은 물론 알고리즘 설명한 풍부한 문서도 제공된다.

 

 

파이썬 설치후 

pip 명령을 사용해 필요한 패키지들을 설치해 보자 

pip install numpy scipy matplotlib ipython scikit-learn pandas pillow imageio

 

1.4.1 주피터 노트북

주피터 노트북은 프로그램 코드를 브라우저에서 실행해주는 대화식 환경이다. 이런 방식은 탐색적 ㅔ이터 분석에 아주 적합하여 많은 데이터 분석가가 주피터 노트북을 사용하고 있다. 주피터 노트북은 다양한 프래그래밍 언어를 지원하지만 우리는 파이썬만 사용하겠다. 주피터 노트북은 코드와 설명. 이미지들을 쉽게 섞어 쓸 수 있다. 

 

1.4.2 Numpy

Numpy는 파이썬으로 과학 계산을 하려면 꼭 필요한 패키지이다.

넘파이 배열은 기본 데이터 구조이고 배열 형태의 데이터를 입력 받는다.

import numpy as np

x = np.array([[1,2,3], [4,5,6]])
print("x:\n",x)

1.4.4 matplotlib

파이썬의 대표적인 과학 계산용 그래프 라이브러리로 선,그래프,히스토그램,산점도 등 지원하며 출판에 쓸 수 있을 만큼 고품질 그래프를 그려준다. 데이터와 분석 결과를 다양한 관점에서 시각화해보면 매우 중요한 통찰을 얻을 수 있다.

%matplotlib inline
import matplotlib.pyplot as plt

# -10에서 10까지 100개의 간격으로 나뉘어진 배열을 생성한다.
x = np.linspace(-10, 10, 100)

# 사인 함수를 사용해 y 배열을 생성한다.
y = np.sin(x)

# plot 함수는 한 배열의 값을 다른 배열에 대응해서 선 그래프를 그린다.
plt.plot(x,y, marker="x")

matplotilb으로 그린 사인(sin) 함수

 

pandas

엑셀의 스프레드시트와 비슷한 테이블형 형태 

판다스는 테이블을 수정하고 조작하는 다양한 기능을 제공한다. SQL처럼 테이블에 쿼리나 조인을 수행할 수 있다.

import pandas as pd

data = {'Name': ["John","Anna","Peter", "Linda"],
'location' : ["New York", "Paris","Berlin", "London"],
    'Age' : [24,13,53,33]
    }
data_pandas = pd.DataFrame(data)
display(data_pandas)

 

 

1.71 데이터 적재 

사용할 데이터셋은 머신러닝과 통계 분야에서 오래전부터 사용해온 붓꽃 데이터셋업이다. 이 데이터는 사이킷런 의 데이터셋 모듈에 포함되어 있다. 로드 아이리스 함수를 사용해서 데이터를 적해하겠다.

from sklearn.datasets import load_iris
iris_dataset = load_iris()

print("iris_dataset의 키:\n", iris_dataset.keys())
print(iris_dataset['DESCR'][:193] + "\n..")

print("타깃의 이름:", iris_dataset['target_names'])
print("특성의 이름:\n", iris_dataset['feature_names'])
print("data의 타입:" , type(iris_dataset['data']))
print("data의 크기:" , iris_dataset['data'].shape)
print("data의 처음 다섯 행:\n", iris_dataset['data'][:5])
print("target의 타입", type(iris_dataset['target']))
print("target의 크기:", iris_dataset['target'].shape)
print("타깃:\n", iris_dataset['target'])

 

1.7.2 성과 측정: 훈련 데이터와 테스트 데이터

이 데이터로 머신러닝 모델을 마들고 새로운 데이터 품종을 예측하려고 합니다.

 

from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(iris_dataset['data'], iris_dataset['target'], random_state=0)

print("X_train 크기:", X_train.shape)
print("y_train 크기:", y_train.shape)

print("X_test 크기:", X_test.shape)
print("y_test 크기:", y_test.shape)

 

 

+ Recent posts