* 비교연산자
-> 비교를 하는 연산자이다. 종류로는
==       :  같다
!=        : 같지 않다.
왼쪽이 크다는 기준으로
>        : 크다.
<        : 작다
>=      : 크거나같다.
<=      : 작거나 같다

- 문자열도 비교연산자를 쓸 수 있다.  크기 비교도 한다 
: 크기 비교할 때 의미는 크지 않는데 문자마다 숫자값을 가지고 있어서 크기비교연산이 되기는한다.
   하지만 이걸 사용해서 문자 정렬을 하기도 한다.

* 수학식에서는 =  기호가 같다라는 뜻이다.
하지만 프로그래밍 언어에서 = 기호는 assignment 의미로 사용된다.

ex)
10 == 10
결과 -> True 
여기서 True는  문자열이 아니다. , 숫자 1과 같은 의미를 가지고있다. (반대로 False는 0을 의미한다.)
문자열에서는 '', "" 로 표현된다.

* bool's 논리식
 - AND(그리고) , OR(또는), NOT(아닌)

NOT 은 피연산자 하나만 온다.  (AND, OR 는 피연산자가 두개 와야한다.)

ex)
 A가 참이고 B가 참이면 결과는 참이다.
 A and B -> True   (A,B 에 보통 비교 연산자가 온다.) 

 A가 참이거나 B가 참이면 결과도 참이다. 
A or B  -> True   (A,B 둘 중 하나만 참이여도 결과는 참이다.)
 
A는 아니다.
 -> not A 
(만약 True면)  -> False


(비교연산자, bool's 연산자 예시)



* 표준 입/출력 함수
 
 - print() -> 표준 출력장치로 내용을 출력하는 함수

 - input() -> 표준 입력장치로 내용을 입력하는 함수
  - 한줄을 입력받는다.
  - 괄호 안에 문자열을 적으면 입력받기 전에 문자열을 출력해준다.
  - input된 값은 무조건 문자열이 된다. 
     (만약 숫자로 받고싶으면  정수형, 혹은 실수형으로 형변환을 해야한다.

분기문 -> 분기점을 만들어줄 수 있는 문장. (실행 흐름 제어)

* 파이썬에서의 분기문
 if 사용법
 
 if expression :   
 
 콜론을 써줘야한다. 
 if expression :
  <if block>
  ...
  ...
 -> if block의 구분 방법 : 들여쓰기로 구분한다.

if - else 사용법
 if expression:
  <if block>
 else:
  <else block>
 -> 둘중에 하나만 실행된다. else는 if문장이 참이 아니면 else blck을 실행한다.
 
다중 if 사용법
 다중 블록
 if expression:
  <if block>
 elif expression:
  <elif block>
 else:
  <else block>

* 반복문
 
 while expression :
  <while block>
 -> 조건이 참일 때 반복된다.

* 멤버 메서드
 
 해당 객체가 제공해주는 함수.
 문자열도 하나의 객체처럼 다뤄진다.

 -> isalnum()
 -> isdigit()  : 문자열에 숫자만 있는지 확인해주는 함수.

* 반복문 혹은  if문으로 block을 묶을 때 들여쓰기 간격이 일정해야한다.

* 프로그램 이란?
 - 저장된 명령어들을 일괄적으로 실행하는 것이다.

이제 지금까지 배운 내용들로 프로그램을 작성해 볼 것이다.

만들어볼 프로그램은
온도변환 프로그램이다.

특징
- 대화식 프로그램이다. 사용자가 입력하면 그에 따라 컴퓨터는 출력한다.
- 사용자가 섭씨 온도를 입력하면 화씨 온도로 변경해서 출력해주는 프로그램
- 혹은 화씨 온도를 입력하면 섭씨 온도로 출력하는 프로그램

* 알고리즘
: 문제를 해결하는 과정으로 프로그램의 동작 과정을 먼저 생각해야한다.


(프로그램 코드)


(정상적으로 출력되는 화면)


오늘 부터 상속을 공부하는데,
상속은 조금 나누어서 공부를 할 것이다.

완전한 이해가 필요하기 때문이다.

상속은 무엇일까?
-> 상속은 기존에 정의했던 클래스의 메소드, 변수들을 이어 받는 개념이다.

먼저 오늘은 상속의 문법, 사용법에 관해 공부했다.

상속
: 기존에 정의된 클래스에 메소드와 변수를 추가하여 새로운 클래스를 정의 하는 것.

표현으로는 상위 클래스, 하위 클래스가 있다.
* 상위클래스
: 기초 클래스라고도 한다. ( super class, base class )
: 원판이라고 생각하면 된다. 이제 이 클래스로 확장시켜 새로운 클래스를 만들 것이다.
: 상속할 대상의 클래스이다.

* 하위클래스
: 유도 클래스라고도 한다. ( sub class, derived class )
: 상속 받은 클래스이다. 상위 클래스의 메소드, 변수들을 이 하위클래스로 가져와 사용한다.

- 상위, 하위라고해서 헷갈린다면
  base class, derived class 라고 생각해도 된다.

사용법은
하위 클래스 선언시 상위 클래스를 언급해주면 된다.
예로 들면,
class sub extends super
{
...
}

이렇게 sub (하위클래스)를 선언할 때 extends super(상위클래스)를 적어주면된다.
여기서 sub, super는 클래스 이름이다.!!

그렇다면 상속을 할 때 초기화는 어떻게 될까?
초기화? 음 다시말하면 생성자는 어떻게 호출 될까?
-> 하위클래스의 생성자 속에 상위 클래스위 생성자를 부른다.
(그렇다고 생성자를 상속 받았다. 라는 의미는 아니다.)

부르는 방법은
super(전달 변수);
이렇게 전달한다.

예시로 문제를 적어보았다.
문제 14-1



(상속 예시)


문제를 풀고 작성한 코드인데,

여기서 Car -> HybridCar -> HybridWaterCar 이렇게 상속되었다.
보면 super() 를 통해 전달변수를 전달하여 각 상위클래스의 생성자를 호출하였다.



(실행 화면)


* 상위클래스의 생성자를 호출해야한다.
super를 이용해 상위클래스를 생성해야하는데 만약 super가 없다면
컴파일할때 자동으로 빈 super() 가 삽입된다.

* 상속과 접근제어 지시자
전에 접근제어 지시자 공부할 때 protected는 변수는 상속받은 클래스에서 까지 사용가능하다고 공부했었다. (다른 패키지에 존재할 지라도 상속관계에 놓이면 접근을 허용하는 접근제어 지시자 이다.)

* private 멤버는 간접적으로 접근해야한다.
-> 이 말의 뜻은 private 로 선언된 멤버는 직접 접근이 아니라 그 클래스의 호출을 통해 접근을 해야된다는 뜻이다. private으로 선언해 프로그램의 안전성을 높이는 것이 좋고 이 점을 생각하고 있어야한다.

(* 참조 - 난 정말 JAVA를 공부한 적이 없다구요, 윤성우)



네트워크 해킹 공부 전에

파이썬 공부를 시작한다.

* 파이썬은 인터프리터 언어이다.

+ 프로그램 실행 방법에 따라 프로그램언어를 크게 두가지로 나눌 수 있다.
1. 컴파일 언어
2. 인터프리터 언어

컴파일 언어
- 번역기가 필요한 언어이다. 컴파일(번역)을 하고 나서야 .exe 실행파일이 생기고 프로그램을 실행 시킬 수 있다. (ex. C, C++, Java, ASM, ...)

인터프리터 언어
- 컴파일 언어와는 다르게 컴파일이 필요없다. 다만 실행기가 필요하다. 실행을 하기 위해서는 실행기가 필요한다. 이 실행기는 코드를 한 줄 한 줄 읽으면서 해석하면서 실행한다. 보통 대형 프로그램에서는 적합하지 않은데 이유는 안전성이 떨어지기 때문이다. 한 줄 한 줄 해석하기 때문에 뒤에 어떤 영향이 있는지 고려가 잘 안되기 때문에 안전성이 떨어진다. 하지만 작은 프로그램들에서는 강력한 언어이다. 바로바로 코드를 실행시킬 수 있고 많은 API를 통해 다양한 일을 할 수 있기 때문이다.


(파이썬 IDLE 화면 )


>>>  표시는 프롬프트다. 이 프롬프트에 입력을 하면 바로바로 대답이 온다. 
        (대화식언어. 파이썬)

* 파이썬의 데이터 타입
- 정수형(음수, 0, 양수), 실수형, 문자
- 정수(10진수, 8진수, 16진수)

ex)
       10(10)  -> 1010(2)
                 -> 0o12(8)  (8진수는 앞에 0을씀. 앞에 0은 8진수를 나타내는 의미)
                 -> 0xA(16)  (16진수는 0x를 앞에씀, 앞에 0x는 16진수를 나타내는 의미)

네트워크에서는 보통 16진수의 데이터를 다룬다.
컴퓨터에서는 16진수가 다루기 쉽기 때문이다.


(다양한 데이터 타입 표현)


* 파이썬에서 사용가능한 수식.(연산자)

1. 사칙연산 
그 중에 나눗셈은 기본적으로 실수형으로 표현된다. (여기서 실수연산은 정확하지 않고 어느정도의 오차가 있게 나온다. 그 이유는 세밀한 연산이 불가능 해서 근사값을 이용해 계산하기 때문이다.)

2. 그 외 연산자
**(지수연산), %(나머지연산), //(몫연산), -(부호변경)
+  수식을 사용할 때 주의점. (우선순위)
    - 좌결합 우선순위 : 
    - 지수연산자는 우결합 우선순위
    - 연산자 우선순위.
                      지수연산 > 부호 > *,/,%, // > +,-
    - 우선순위를 변경할 때는 () 괄호 사용.
      ( 그렇기 때문에 () 괄호를 쓰는 습관을 들여야한다.)


(연산자 결과 모습)


* 파이썬에서의 문자
     - 문자열
     - ''  or ""    : 작은따옴표 혹은 큰따옴표를 사용한다. 그리고 이 둘의 차이는 없다.
ex)
  10    :  정수 십
 '10'  :  문자열 '일공'  (십이라고 읽을 수 없다.)
-> 똑같은 모양이지만 하나는 숫자 십 이고 하나는 문자 일공 이다.
 
 문자열 표시 예. 'hello, world'
출력에 작은 따옴표가 나오는데, 문자열이라는 뜻이다. (출력할 때 나오는 따옴표는 문자열이라는 뜻)
큰따옴표와 작은 따옴표는 섞어서 쓸 수 있다.

 hello, "world" 이렇게 출력하고 싶으면 섞어서 써야하는데
 예를 들면
 'hello, "world"'   이 런식으로 쓰면 된다.

* 파이썬에서의 문자 연산자: +, *
    -  문자를 더하거나, 곱할수는 없다.  (즉, 문자열에서의 +, * 는 의미가 다르다.)
    -     + : 문자와 문자를 연결한다.
    -     * : 문자를 반복한다.


(문자열 표현, 문자열 연산)


* 문자를 다룰때의 주의할 점
   - 빈문자와 공백문자를 구분해야한다.
   - 공백문자도 문자이기 때문이다.
ex)
 ''  <- 빈 문자
 ' ' <- 공백문자                       위 화면을 보면 맨 아래코드 예시를 보면 이해가 된다.


  -  피연산자의 타입은 하나로 통일되어야한다.
 : 만약 피연산자의 타입이 다를 경우에는 연산을 할 수 없다.
ex) 10 + '10'    <- 불가능  (통일해줘야한다.)


(다른 타입의 연산은 안된다.)


타입이 다르다면 데이터 타입을 통일 시켜주면 연산이 가능하다.
타입을 맞추는 방법은 타입 변환이다.

* 타입 변환 (형변환)
 - 내장 함수(built-in function)를 이용해서 타입 변환(형변환)을 한다.
  -int(), str(), float() 이런 함수들이 내장 함수이다.

주의할점 : int() 로 형변환 할 때 실수에서 손실이 있을 수 있다.
ex int(12.34) -> 12

(형변환을 하여 연산을 한 경우)


위 화면을 보면 형 변환을 하였고 또 그를 이용해 연산도 가능하였다.

* expression( 표현식 )
 - 지금까지 살펴본 내용들을 표현식이라고 한다. 표현식이란 연산이 가능한 문장이다.
비교하자면
 expression  -> (수식들) : 연산이 가능함을 뜻한다.
 value       -> (값)     : 연산이 가능하지 않음을 뜻한다.

* 파이썬의 변수
   사용 이유 : 값을 저장하는 용도로 사용된다. 

 - 필요할 때 꺼내서 사용한다.
 - 반복적으로 사용되는 값들은 변수를 사용하여 더 효율적으로 관리하기 위해서다.

* 지정문, 할당문, 배정문 ( assignment )
 -  사용 연산자 :  =(equal, assign)
 - 수학적 기호로는 같다라는 의미이지만 프로그래밍에서는 assignment의 의미로 사용된다.
 - 우결합을 사용한다. (오른쪽에서 왼쪽으로 연산이 이루어진다.)
 - 모든 연산자 중에 우선순위가 가장 낮다.

ex)  (지정문)
 var = 10
 var = 1 + 2 + 3      -> assign 연산자와 + 연산자가 같이 사용된다. (assign 연산자가 우선순위가 가장 낮음)
 var = 10  -> 10이라는 정수가 들어갔기 때문에 var가 int 형으로 설정된다.
 var = 'a'  -> 문자열로 설정된다.

* 재지정 : 다시 지정하는 것. 이전에 저장됬던 값은 사라진다.
 - 어떠한 값이 입력됨에 따라 type이 계속 바뀔 수 있다.



(변수 사용, 지정문 사용)


 * 동시 지정문
  - var1 = var2 = var3 = 10
  - var1, var2 = 10, 20  (파이썬에서만 볼 수 있는 문법이다.)
 
* 변수의 이름
 - 숫자로 시작할 수 없다.  (숫자 뒤에 오는건 가능하다.)
 - 특수문자는 사용할 수 없다. (예외 :  _ (언더바))
 - 파이썬3에서는 한글 변수 가능하다.
 - 예약된 문자도 사용할 수 없다. (ex.  if, while, list, ...)  -> 검은색으로 나오는 변수만 쓸수 있다. (보라색이나 다른 색으로 표시되는 단어는 쓸수없다.)
ex)
 numOfApple = 10
 num_of_apple = 10   (변수의 이름을 잘 정해야. 나중에 읽기 쉽다.)
 a = 10              (이런식으로 쓰면 나중에 뭔지 모르기 쉽다.)
 i, j, k, n  -> 반복하는 인덱스로 많이 사용된다.



(변수 지정문)



+ Recent posts