'파이썬'에 해당되는 글 2건

  1. 2008.08.14 Python을 배워보자 (2)

Python을 배워보자 (2)

꺼리/공부 2008. 8. 14. 12:35

파이썬의 제어문

  • 모든 컴퓨팅 문제는 특정 순서로 된 일련의 동작들을 실행함으로써 해결할 수 있다. 알고리즘은 실행되는 동작들과 이들이 실행되는 순서를 통해 문제들을 해결한다.
  • 컴퓨터 프로그램의 실행문을 실행하는 순서를 명시하는 것을 프로그램 제어라고 한다.
  • 의사코드는 프로그래머가 알고지즘을 만드는 것을 도와주는 비형식 언어이다. 이것은 일상에서 사용하는 영어로 되어 있다. 의사코드는 실제 컴퓨터 프로그래밍 언어는 아니지만, 사용하기에 매우 편리하다.
  • 잘 만들어진 의사코드는 쉽게 파이썬 프로그램으로 변환 할 수 있다. 이 경우  의사코드 내의 각 실행문들은 이에 해당하는 파이썬 코드로 쉽게 대체된다.
  • 보통 프로그램의 실행문들은 그것이 작성된 순서로 실행된다. 이것을 순차적인 실행이라고 한다. 비 순차적으로 실행문들의 실행 순서를 바꾸는 다양한 파이썬 실행문들이 존재한다. 이것을 제어의 변화라고 한다.
  • goto문은 프로그램의 임의의 위치로 제어를 변화시킬 수 있다.
  • Bohm과 Jacopino의 연구는 goto문 없이 프로그램이 작성될 수 있음을 보여준다. 이 시기를  전후로 프로그래머는 goto문 없는 프로그램을 작성하기 시작했다.
  • Bohm과 Jacopino는 모든 프로그램이 순차, 선택, 반복 등의 세가지 제어문만으로 작성될 수 있음 보였다.
  • 파이썬은 기본적으로 순차 구조를 가지고 있다. 별다른 지시가 없는 한, 파이썬은 실행문을 순차적으로 실행한다.
  • 순서도는 알고리즘 또는 그것의 일부를 도식화한 것이다. 순서도는 사각형, 다이아몬드, 타원 그리고 작은 원 등의 특별한 쓰임새를 가진 기호들을 이용하여 그려진다. 이러한 기호들은 흐름선이라고 하는 화살표에 의해 연결된다.
  • 의시코드와 마찬가지로 순서도는 알고리즘의 개발과 표현을 돕는다. 대부분의 프로그래머가 의사코드를 선호하지만, 순서도는 제어문이 동작하는 방식을 훌륭하게 표현한다.
  • 순서도에서 사각형은 계산, 입력 또는 출력 연산을 포함한 동작을 의미한다. 파이썬은 임의의 수만큼 동작들을 포함할 수 있다.
  • 순서도에서 가장 중요한 기호는 수행할 의사결정을 의미하는 다이아몬드 기호이다.
  • 파이썬은 세 가지의 유형의 선택문을 제공한다. if, if/else, if/elif/else 등이 그것이다.
  • if 선택문은 조건이 참일 경우 특정 동작을 수행하고, 그렇지 않을 경우 동작의 실행을 생략한다.
  • if/else 선택문은 조건이 참일 경우 특정 동작을 수행하고, 그렇지 않을 경우 이와는 다른 동작을 수행한다.
  • if/elif/else 선택문은 여러 가지 조건에 따라서 서로 다른 여러 동작 중 하나를 수행한다.
  • if 선택문은 하나의 동작을 선택하거나 무시하므로 단일 선택문이라고 한다. 또한 if/else 선택문은 두 개의 다른 동작 중 하나를 선택하므로 이중 선택문이라고 한다. 마지막으로 if/elif/else 선택문은 많은 동작들 중에 하나를 선택하므로 다중 선택문이라고 한다.
  • 파이썬은 while, for 등 두 가지 유형의 반복문을 제공한다.
  • 단어 if, elif, else, while, for등은 파이썬의 예약어이다. 이것은 제어문과 같은 파이썬의 다양한 기능들을 위해 미리 예약되어 있기 때문에 변수명 등의 식별자로 사용할 수 없다.
  • 파이썬은 여러 개의 제어문을 갖고 있다. 순차문, 세 가지 유형의 선택문 그리고 두 가지 유형의 반복문이 그것이다. 모든 파이썬 프로그램은 프로그램이 구현하는 알고리즘을 위해 적절히 각 유형의 제어문들을 합성하여 작성될 수 있다.
  • 단일 시작/끝 ㅈ어문은 프로그램의 생성을 간단하게 한다. 이 제어문은 하나의 제어문의 끝점과 다른 제어문의 시작점을 연결하여 만들어진다. 이것은 아이들이 블록을 쌓는 것과 유사하기 때문에 제어문 쌓기라고 불린다.
  • 파이썬에서 반드시 필요한 들여쓰기는 구조적 프로그램의 구조를 강화하는 역할을 한다.
  • 중첩된 if/else 문은 하나의 if/else 선택무에 다른 if/else 선택문을 위치시킴으로써 여러 가지 조건을 테스트하돌고 구성되어있다.
  • 중첩된 if/else문과 if/elif/else 다중 선택문은 갖은 의미를 갖는다. 보통 후자가 선호되는데, 그 이유는 코드의 지나친 들여쓰기를 피할 수 있기 때문이다. 지나친 들여쓰기는 프로그램의 가독성을 떨어뜨린다.
  • if/elif/else 문의 else 블록은 생략 할 수 있다. 그러나 대부분의 프로그래머는 elif 블록의 끝 부분에 else 블록을 포함시킨다. elif문에서 명시한 모든 조건들이 만족되지 않을 경우 else블록에서 처리하기 위해서이다. else문은 반드시 if/elif/else문의 가장 마지막 부분에 위치해야 한다.
  • if 선택문은 바디 부분에 여러 실행문들을 호함할 수 있다. 이 때 바디 내의 모든 실행문들은 모두 들여쓰기를 해야 한다. 이렇게 함께 들여쓰기 된 실행문들의 집합을 스위트(suite)라고 한다.
  • 치명적인 논리 오류를 프로그램이 비정상적으로 종료되게 한다. 이러한 치명적인 오류가 발행하면 파이선은 트레이스백이라는 오류 메시지를 출력하고 프로그램을 종료한다. 비치명적인 오류가 발행하면 프로그램은 멈추지 않고 실행되지만, 부정확한 결과가 발생할 수 있다.
  • 여러 실행문들이 하나의 실행문을 대체할 수 있다. 이와 마찬가지로 빈 실행문은 하나의 실행문을 데채할 수 있다. 빈 실행문은 실행문이 쓰일 곳에 예약어 pass를 작성함으로써 표현된다.
  • 반복문은 프로그램 내에서 조건이 만족되는 동안 특정 동작을 반복하기 위해서 사용된다.
  • 카운터 제어 반복은 특정 실행문 집합을 실행하는 횟수를 제어하기 위해 카운터라고 불리는 변수를 사용한다. 카운터 제어 반복은 루프가 실행되기 이전에 반복의 횟수가 알려저 있으므로 유한 반복이라고도 불린다.
  • 센티넬 값(시그털 값, 더미 값 또는 플래그 값이라고도 한다)은 입력의 정지시점을 알린다.
  • 신티넬 제어 반복은 루프가 시작하기 전에 반복의 횟수가 알려져 있지 않으므로 무한 반복이라고도 한다.
  • 하향식 방법은 구조적 프로그램 개발에서 매우 유용하게 사용된다. 최상위 수준은 프로그램의 전반적인 기능을 완벽하게 표현하는 하나의 문장이다. 따라서 최상위 수준을 여러 개의 작은 작업들로 세분화하여, 그것이 수행될 순서대로 정의할 필요가 있다.
  • 실수는 7.2 또는 -93.5 등과 같이 소수점을 포함하고 있다.
  • 두 정수를 나눗셈하면 정수의 결과가 나온다. 이 때, 결과값의 소수점 이하는 무시된다.
  • 정수값들을 이용하여 실수 계산을 하기 위해서는 float 함수를 사용하여 정수값들 중 하나를 실수로 변환해야 한다.
  • 파이썬 인터프리터는 피연산자가 동일한 데이터 타입을 갖는 표현식만을 계산한다. 이를 위해 인터프리터는 해당 피연산자에 프로모션이라는 연산을 수행한다.
  • 파이썬은 여러 가지 확장 할당문을 제공한다.
  • + - ** * / % 등의 이항 연산자를 포함한 "변수 = 변수 연산자 표현식"의 형태를 갖고 있는 표현식은, "변수 연산자 = 표현식"의 형태로 변환 할 수 있다.
  • 함수 range는 1개, 2개 또는 3개의 인자를 가질 수 있다. 만약 이 함수에 end라고 불리는 하나의 인자를 넘기면, range함수는 end보다 1만큼 작은 값을 최대값으로 하는 시퀀스를 반환한다.
  • 만약 두개의 인자를 넘기면, 첫번째 인자인 start는 이 함수가 반환하는 시퀀스의 최소값이고 두 번째 인자는 end이다.
  • 세 개의 인자를 넘길 경우, 첫 번째 인자와 두 번째 인자는 각각 start, end이다. 그리고 increment라고 불리는 세 번째 인자는 증가치를 의미하는 값이다. 이 때, range함수는 start에서 시작하여 end까지 increment만큼 숫자를 증가시키면서 생기는 숫자 집합을 반환한다.
  • range함수의 increment는 음수일 수도 있다. 이 경우 이것은 감소치를 의미한다. 이 때 반환되는 스퀀스는 start에서 시작하여 end가지 increment만큼 숫자를 감소히키면서 생기는 숫자집합이다. 물론 start는 end보다 큰 값을 갖는다.
  • while 또는 for문 내에서 breadk 문이 실행되면, 즉시 반복문을 빠져 나온다. 이 때 프로그램은 반복분 밖의 첫번째 실행문으로 제어를 옮긴다.
  • while 또는 for문 내에서 continue문이 실행되면, 반복문 내의 나머지 실행문들의 실행은 생략되며, 루프의 다음 반복이 처음부터 진행된다.
  • 파이썬은 단순 조건들을 합성하여 더욱 복잡한 조건을 만들 수 있도록 논리 연산자를 제공한다. 논리 연산자에는 and, or, not등이 있다.
  • 파이썬에서 관계 연산자 또는 등호연산자를 호함한 모든 표현식은 참 또는 거짓으로 판별되 수 있다. 거짓인 단순 조건(예, age>=65)은 0으로 취급되며, 참인 단순 조건은 1로 취급된다. 0값을 반환하는 표현식은 거짓으로 취급되며, 0이 아닌 값을 반환하는 표현식은 참으로 취급된다.
  • 만약 복합 조건이 거짓으로 판별되면, and 연산자는 거짓으로 판별된 첫번째 값을 반환한다. 역으로 복합 조건이 참일 경우, and 연산자는 조건의 마지막 값을 반환한다.
  • 만약 복합 조건이 참으로 판별되면, or 연산자는 거짓으로 판별된 첫번째 값을 반환한다. 역으로 복합 조건이 거짓일 경우, or 연산자는 조건의 마지막 값을 반환한다.
  • and 연산자는 or연산자 보다 우선순위가 높다. 그리고 두 연산자의 연관성은 오른쪽이다. and 또는 or 연산자를 포함하고 있는 표현식은 그것의 참 또는 거짓이 밝혀질 때까지만 판별된다. 이것을 short curcuit 판별이라고 한다.
  • not 연산자 (논리부정)는 조건의 의미를 부정하기 위해 사용된다. 이항 연산자인 and와 or  연산자와는 달리, not 연산자는 피연산자를 하나만 갖는다. 즉, 이것은 단항 연산자이다.
: