카테고리 없음

[네이버 부스트코스] 프로그래밍 기초 ft. 파이썬 1차시 : 강의 소개

닉네임이 멋이 중헌디 2021. 2. 1. 14:04

수업 로드맵

1. CS101 강의 소개

2. 조건문과 while반복문

3. 변수와 기초 자료형

4. 매개 변수와 반환값을 가진 함수

5. 지역/전역 변수와 그래픽 객체들

6. 시퀀스: 리스트, 문자열, 튜플

7. 다양한 자료구조와 ( 문자열, 집합, 사전 )

8. 자료구조를 활용한 이미지 및 텍스트 프로세싱

9. 객체: 생성과 속성

10. 프로그램 작성 고급 기술

1-1 . 강의 소개

 

#1. 컴퓨팅 사고(Computational Thinking) 

: 컴퓨터를 사용한 문제 해결

 

-여러 단계의 추상화에 대한 이해 

-문제를 여러 문제로 나눠서 푸는 방법 

-사람의 체계적인 사고 방법 != 컴퓨터처럼 생각하기 

-문제 해결 방법에 대한 생각 (알고리즘)

 30년 전에는 과학, 엔지니어링 분야에서 수식을 통해 문제를 해결했다면, 최근에는 알고리즘을 통해 문제를 해결한다

 

#2. 프로그램이란?

 

1) 프로그램: 문제를 해결하거나 목표를 달성하기 위한 순차적인 명령

ex. 레시피 

2) 명령: 컴퓨터가 수행할 수 있는 일 하나하나 

           -> 하나에 국한하지 않고 명령들을 결합하여 보다 추상적인 새로운 명령을 정의할 수 있다. 

3) 알고리즘: 문제를 풀기 위한 방법

 

#3. 디버깅이란? 

 

1)버그: 프로그램에서 잘못된 부분 

2)디버깅: 프로그램의 오류를 찾고 고치는 일

           -> 디버깅 = 실험 : 실험을 하고 가설을 세우고 프로그램을 변경해서 가설을 증명한다 

3) 버그의 종류: 

   (1) Syntax error: python이 작성한 프로그램을 이해하지 못합니다. 프로그램을 실행할 수 없습니다. 

           -> 문법 오류

   (2) Runtime error: 프로그램 실행 중에(runtime) 에러 메시지와 함께 프로그램이 갑자기 종료된다. 

           -> 다 실행 못하고 죽음 

   (3) Semantic error: 프로그램이 에러 메시지 없이 실행되지만, 사용자가 기대하지 않은 실행 결과가 나온다. 

           -> 결과가 잘못됨 

 

#4. 프로그램의 유용성 

 

- 산업 로봇, 컴퓨터로만 풀 수 있는 문제들 

- 자동차: 반도체와 수백만 줄로 이뤄진 프로그램 

- 수학자: 그래프나 집합 등의 수학적 구조들을 프로그램을 통해 만들어 연구의 단서를 찾기 위해 사용 

- 실험 결과: 필요성에 맞게 가공되거나 분석될 필요가 있음. Python을 사용하면 이런 일들을 훨씬 쉽게 할 수 있다. 

                 또한, 최근의 실험 결과들은 사람들이 직접 분석할 수 없을 만큼 커지고 있다. 

 

#5. 왜 프로그래밍은 재미있는가?

 

-프로그래밍은 창작 활동입니다.

우주선의 복잡한 소프트웨어 시스템을 혼자서도 만들 수 있습니다. 다른 어떤 분야에서도 비슷한 일을 하기는 힘듭니다.

-프로그래머들은 거대한 오픈 소스 커뮤니티를 만들고 있습니다. 프로그램을 재미 삼아 만드는 사람들이나, 자신의 프로그램을 공개하고 싶은 사람들은 프로그램 코드를 무료로 인터넷에 공개하고 있습니다. 공개된 코드는 누구나 사그러므

 

#6. Python 

 

-인공지능 프로그램 작성에 사용

-NASA 등 수학자나 물리학자들이 과학적 계산 위해 사용 

-Google에서 웹 프로그래밍 할 때 사용 

-스마트폰과 같은 임베디드 환경에서도 사용 

-많은 게임들의 개발에 사용

-다른 프로그래밍 언어 공부에 도움

 

 

1-2. Python 소개 

-python 프로그램의 형태 및 동작 이해 

-하향식 프로그램 설계 방식 이해

 

[목차]

1. 함수 

2. 프로그램 실행 순서

3. 하향식 설계 

4. 간단한 반복 

5. 반복된 코드 제거 

 

 

#1. 함수 

-함수: 여러 개의 프로그램 명령어들을 모아 놓은 것 

       = 새로운 함수의 이름 + 함수가 호출될 때 실행될 명령 

       = "함수의 이름과 실행할 명령들을 모아놓은 코드"

     

Ex.  def print_message():    -> 함수의 이름

             print("CS101")           -> 실행할 명령들

             print("Program")

       -> 함수 안에서 다른 함수를 호출할 수 있다. 

       

Ex. def repeat_message(): 

             print_message() 

             print_message()

=> 위 예시는 모두 함수를 정의한 것

=> print_message()라고 다시 쳐야 함수가 실행된다

 

#2. 프로그램의 실행 순서 

 

-첫번째 명령부터

-명령은 위에서 아래로 하나씩 실행 

-함수의 정의 : 함수를 정의할 뿐 실행하지 않는다 

-함수를 호출하면 정의대로 실행

-그 다음 명령 실행 

 

#3. 하향식 설계 

 

-하나의 큰 문제-> 중간 크기의 여러 문제

  중간 크기의 문제에 대한 해결책 -> 더 작은 크기의 문제들로 나눈다 

-작은 문제에 대한 해결책 작성 뒤 모아서 중간, 중간 모아서 큰 문제에 대한 해결책으로 활용

 

Ex. 로봇이 4개의 계단을 올라가서 비퍼를 놓고 다시 원위치하는 명령 [큰 문제]

 

-> 1) 중간 문제 : 4개의 계단을 올라간다/ 비퍼를 놓는다 / 뒤돈다 / 다시 내려온다 

    2) 작은 문제: 한개의 계단을 올라간다*4/ 비퍼를 놓는다/ 뒤돈다 / 한개의 계단을 내려온다*4

 

-> #1. 로봇 생성 hubo = Robot(Beeper = 1)      -> 인자의 default값을 가진 객체 : 매개변수 beeper에 인자를 넣지 않                                                                      으면 default로 1이 들어간다는 말

    #2. 함수 정의 hubo.turn_left()/ def turn_right(): -> .뒤의 함수는 멤버함수/ turn_right()는 hubo라는 객체의 멤버함                                                                         수로 정의되지 않았기 때문에 hubo.turn_right()로 쓰지 않는다.

                                                hubo.turn_left()

                                                hubo.turn_left()

                                                hubo.turn_left()

     #3. 2)작은 문제 

          2-1) def climb_up_stair():

                     hubo.turn_left()

                     hubo.move()

                     turn_right() 

                     hubo.move() 

                     hubo.move()

             

                def turn_around(): 

                     hubo.turn_right()

                     hubo.turn_right()

                같은 방법으로 climb_down_stair() 정의

                cf. hubo.drop_beeper()-> 이미 정의된 함수(메소드)

 

              3)중간문제

              def climb_up_four_stairs(): 

                          climb_up_stair() 

                          climb_up_stair()

                          climb_up_stair() 

                          climb_up_stair()

                같은 방법으로 climb_down_four_stairs() 정의

           

              4)큰 문제 

              def up_dropbeeper_down(): 

                        hubo.move() 

                        climb_up_four_stairs() 

                        hubo.drop_beeper()

                        turn_around()

                        climb_down_four_stairs() 

 

#4. 반복문 

for i in range(4) : <- for 반복문 

     print("CS101")  

     print("program")   -> 이 두줄은 : 아래 indent되므로 for 반복문에 해당되어 range(4): 0~3 즉 4번 반복이 된다

print("program")        -> 하지만 마지막 줄은 indent되지 않아 for 반복문에 들어가지 않으므로 1번 출력된다.

 

#5. 반복문 활용 

: 반복문을 활용해 반복된 코드를 제거할 수 있다.  

def climb_up_four_stairs(): 

                          climb_up_stair() 

                          climb_up_stair()

                          climb_up_stair() 

                          climb_up_stair()

 

def climb_up_four_stairs(): 

     for i in range(4):

            climb_up_stair() 

 

=> 코드의 반복을 피할 수 있다.