VI. 프로그래밍 언어 활용
Chapter 01. 기본 문법 활용하기
[5] 명령문
(1) 조건문
- C, 자바에서 사용하는 if 문
- if (조건문){ 명령문; } else if (조건문){ 명령문; } else { 명령문; }
- 파이썬에서 사용하는 if 문
- if 조건문 : 명령문 elif 조건문 : 명령문 else : 명령문
- 파이썬은 switch 문이 없다.
- C, 자바에서 사용하는 switch 문
- switch (식){ case 값: 명령문; break; default: 명령문; }
(2) 반복문
- C, 자바에서 사용하는 while 문
- while (조건문){ 명령문; }
- 파이썬에서 사용하는 while 문
- while 조건문 : 명령문
- do while 문 : 참, 거짓과 관련없이 무조건 한 번은 실행하고, 그다음부터는 조건이 참인 동안에 해당 분기를 반복해서 실행하는 명령문이다.
- C, 자바의 do while 문
- do{ 명령문; }while(조건문);
- 일반 for 문 : 초기식, 조건식, 증감식을 지정하여 반복하는 명령어이다.
- C, 자바에서 사용하는 for 문
- for (초기식; 조건식; 증감식) { 명령문; } 명령문;
- 파이썬에서의 for 문
- for 변수 in range(시작, 종료, 스텝): 명령문 // (시작) 값부터 for 문을 반복할 때마다 (스텝) 수만큼 값을 증가시키고 변숫값이 (종료) 값 이상이면 반복문을 종료 // 시작을 생략하면 0, 스텝을 생략하면 1 // range 함수에 값이 하나면 시작=0, 스텝=1, 값이 두개면 스텝=1
- for each 문 : 배열이나 리스트의 크기만큼 반복하는데, 반복할 때마다 배열이나 리스트의 항목을 순차적으로 변수에 대입하는 반복문이다.
- 자바 for each 문
- for( 제어변수 : 배열 ) { 문장; }
- 파이썬 for each 문
- for 변수 in 리스트: 문장
(3) 루프 제어 명령어
- 루프 제어 명령어 : 반복문에서 무한 루프를 방지하기 위해 break와 continue 명령어를 사용한다.
- break 문 : 반복문이나 switch 문을 중간에 탈출하기 위해 사용하는 명령어이다.
- continue 문 : 반복문에서 다음 반복으로 넘어갈 수 있도록 하는 명령어이다.
[6] 사용자 정의 자료형 활용
(1) 사용자 정의 자료형(User-Defined Types) 의 개념
- 사용자가 상황에 맞게 기존 자료형들을 조합해서 만드는 자료형이다. 열거체, 구조체가 있다.
(2) 사용자 정의 자료형 종류
- 열거체 : 서로 연관된 정수형 상수들의 집합, 정수형 상수에 이름을 붙여서 코드를 이해하기 쉽게 해준다. C에서는 멤버에 초깃값을 설정하지 않으면 0부터 차례대로 할당된다.
- C에서 사용하는 enum
- enum 열거체명{ 멤버1, 멤버2, ... };
- 구조체 : 사용자가 기본 타입을 가지고 새롭게 정의할 수 있는 사용자 정의 자료형이다. 자바, 파이썬에서는 지원하지 않는다. (class를 이용하여 struct 기능을 구현할 수는 있음)
- C 언어에서 사용하는 struct
- struct 구조체명{ 자료형 변수명1; 자로형 변수명2; ... };
구조체와 포인터
- 구조체 변수와 구조체 포인터 : 구조체는 일반 구조체 변수로 접근할 때는 . 으로 접근하고, 구조체 포인터로 접근할 때는 -> 로 접근한다.
② 1차원 구조체 배열과 1차원 구조체 포인터
- 1차원 구조체 배열에서 배열명만 단독으로 사용할 경우 1차원 구조체 포인터와 동일하다.
- 1차원 구조체 배열일 때 배열명[요소].변수명, (*(배열명+요소)).변수명, 배열명->변수명, (배열명+요소)->변수명 형태로 값을 가리킨다.
- 1차원 포인터일 때 포인터[요소].변수명, (*(포인터+요소)).변수명, 포인터->변수명, (포인터+요소)->변수명 형태로 값을 가리킨다.
[7] 사용자 정의 함수
(1) main 함수
- main 함수 : 프로그램이 실행하는 모든 프로그램의 시작점이다. main 함수에 있는 명령어를 실행한다.
① C 언어의 main 함수
타입 main(파라미터){
명령어;
}
- void main() 일 경우 return 반환값; 을 사용하지 않고, int main() 일 경우 return 반환값; 을 명시해주어야 한다.
- void : 함수를 호출한 호출자에게 결괏값을 제공하지 않는다는 의미의 데이터 타입이다. void 는 ‘존재하지 않음’이라는 뜻으로 반환 값이 없다는 의미로 사용한다.
- int main 함수의 경우 return 반환값; 을 명시해야 하는데, 일반적으로 정상적으로 잘 종료되었다는 의미로 return 0; 을 쓴다.
- C언어의 main 함수 형태 - void main
- void main(){ }
- C언어의 main 함수 형태 - int main
- int main(){ return 반환값; }
② 자바의 main 함수
public static void main(String[] args){
명령어;
}
(2) 사용자 정의 함수
- 사용자 정의 함수 : 사용자가 직접 새로운 함수를 정의하여 사용하는 방법이다.
- C, 자바에서 사용하는 사용자 정의 함수
- 반환데이터타입 함수명(데이터타입 변수명, ... ){ 명령어; return 반환값; }
- 파이썬에서 사용하는 사용자 정의 함수
- def 함수명(변수명, ... ) : 명령어 return 반환값
(3) 함수 포인터
- 함수 포인터는 함수의 주소를 저장하고, 해당 주소의 함수를 호출하는 데 사용하는 포인터이다.
- 리턴타입 (*함수포인터)(함수 파라미터);
(4) 매개변수 전달방법
- 함수가 필요로 하는 값을 매개변수로 만들면 함수를 호출하는 쪽에서 매개변수를 사용하여 해당 함수에 변수의 값, 변수의 주솟값을 전달하는 방식이다.
- 전달인자(Argument) : 실 매개변수(Actual Parameters), 함수가 함수 호출하는 쪽에서 전달하는 변수의 값 또는 변수의 주솟값
- 매개변수(Parameter) : 형식 매개변수(Formal Parameters), 함수를 호출하는 쪽에서 전달받는 변수의 값 또는 변수의 주솟값
- #include <stdio.h> int fn(int x, int y){ // -> 매개변수(Parameters) ... } void main(){ int i, j; ... fn(i, j); // -> 전달인자(Argument) }
- Call by Value : 변수의 값을 넘겨주고, 이 값은 새로운 공간에 할당되어 사용하는 방식, 형식 매개변수의 어떠한 변화도 실 매개변수에 아무런 영향을 미치지 않음.
- Call by Reference : 변수의 값이 아닌 변수가 사용 중인 메모리 공간의 주소를 넘겨주는 방식, 실 매개변수의 주소를 형식 매개변수로 보냄
[8] 재귀 함수
- 재귀 함수는 함수 자신이 자신을 부르는 함수이다.
- C, 자바에서 사용하는 재귀 함수
- 반환데이터타입 함수명(데이터타입 변수명, ... ){ ... 함수명(변수명, ...) ... return 반환값; }
- 파이썬에서 사용하는 사용자 재귀 함수
- def 함수명(변수명, ...) : ... 함수명(변수명, ...) ... return 반환값
[9] 클래스(Class)
- C 언어는 명령형 프로그래밍으로 클래스를 지원하지 않는다.
(1) 접근 제어자(Access Modifier)
- 지정된 클래스, 벼눗, 메서드를 외부(같은 패키지이거나 다른 패키지)에서 접근할 수 있도록 권한을 설정하는 기능이다.
- public : 외부의 모든 클래스에서 접근이 가능
- protected : 같은 패키지 내부에 있는 클래스, 하위 클래스(상속받은 경우)에서 접근 가능, 자기 자신과 상속받은 하위 클래스 둘 다 접근이 가능
- default : 접근 제어자를 명시하지 않은 경우로 같은 패키지 내부에 있는 클래스에서 접근 가능, 자바에만 존재한다.
- private : 같은 클래스 내에서만 접근 가능
(2) 클래스 사용
- 변수와 메서드(함수) 형태로 구성되어 있다. 파이썬은 별도로 변수 선언을 하지 않기 때문에 메서드 형태로 구성되어 있다.
- 자바 클래스 정의
- public class 클래스명{ private 변수타입 변수명; public 반환데이터타입 메서드명(데이터타입 변수명, ...){ 명령어; return 반환값; } }
- 파이썬 클래스 정의 (파이썬에서는 함수명에 입력받을 값(매개변수) 앞에 self 라는 키워드를 적어야 한다)
class A: def fn(self): #입력받는 값이 없을 경우 self 만 사용 print(5) - class 클래스명: def 메서드명(self, 변수명, ...): 명령어 return 반환값
- this 포인터 : 현재 객체를 가리키는 포인터이다. 자바에서 사용하는 것으로 클래스 내부의 변수와 함수를 가리킬 수 있다. 보통 매개변수로 받는 값과 클래스 내의 변수명을 구분하기 위해 사용한다.
- this.변수; this.함수(매개변수);
- self : 현재 객체를 가리키는 포인터이다. 파이썬에서 사용하는 것으로 클래스 내부의 변수와 함수를 가리킬 수 있다. 보통 매개변수로 받는 값과 클래스 내의 변수명을 구분하기 위해 사용한다.
- self.변수명; self.함수명(매개변수);
- static 메서드 : 클래스가 메모리에 올라갈 때 자동적으로 생성되는 메서드이다. 인스턴스를 생성하지 않아도 호출이 가능하게 된다.
⓪ 클래스 선언
- 클래스를 일반변수로 선언한 경우 선언함과 동시에 생성자가 호출되고, 일반변수로 선언한 곳에서 함수가 종료되면 소멸자가 호출된다.
- 자바 클래스 선언
- 클래스 클래스변수 = new 클래스(매개변수); // 생성시 클래스변수.finalize(); // 소멸시
- 파이썬 클래스 선언
- 클래스변수 = 클래스(매개변수) #생성시 del 클래스변수 #소멸시
(3) 생성자 (Constructor)
- 해당 클래스의 객체가 생성될 때 자동으로 호출되는 특수한 종류의 메서드
- 일반적으로 클래스의 멤버 변수를 초기화하거나 클래스를 사용하는 데 필요한 설정이 필요한 경우 사용한다.
- 자바에서는 클래스 명과 동일한 메서드명을 가지고, 반환 값이 없다.
- 파이썬에서는 init 이라는 메서드명을 사용하고, 첫 번째 매개변수로 self를 적어주며, 반환값이 없다.
- 자바에서 사용하는 생성자
- public class 클래스명{ public 클래스명(데이터타입 변수명, ...){ 명령어; } }
- 파이썬에서 사용하는 생성자
- class 클래스명: def __init__(self, 변수명, ...): 명령어
(4) 소멸자 (Destructor)
- 객체의 수명이 끝났을 때 객체를 제거하기 위한 목적으로 사용되는 메서드
- 자바에서는 finalize 라는 메서드를 사용하며, 반환 값이 없다.
- 파이썬에서는 __del__이라는 메서드명을 사용하고, 첫 번째 매개변수에 self를 적어주며, 반환 값이 없다.
- 자바에서 사용하는 소멸자
- public class 클래스명{ public void finalize(매개변수){ 명령어; } }
- 파이썬에서 사용하는 소멸자
- class 클래스명: def __del__(self): 명령어
(5) 상속 (Inheritance)
- 상속은 어떤 객체가 있을 때 그 객체의 변수와 메서드를 다른 객체가 물려받는 기능이다.
- 자식 클래스를 생성하면 무조건 부모 클래스의 생성자를 실행한 후에 자식 클래스의 생성자를 실행한다.
- 자바 상속
- class 부모클래스명{ } class 자식클래스명 extends 부모클래스명{ }
- 파이썬 상속
- class 부모클래스명: ... class 자식클래스명(부모클래스명): ...
① 오버로딩(Overloading)
- 오버로딩은 동일 이름의 메서드를 매개변수만 다르게 하여 여러개 정의할 수 있는 기능이다.
- 파이썬에서는 오버로딩 기능을 지원하지 않는다.
- 특징 : 메서드 이름이 같아야 한다. 매개변수 개수가 달라야 한다. 매개변수 갯수가 같을 경우 데이터 타입이 달라야 한다. 반환형은 같거나 달라도 된다.
② 오버라이딩 (Overriding)
- 오버라이딩은 하위 클래스에서 상위 클래스 메서드를 재정의할 수 있는 기능이다.
- 특징 : 오버라이드하고자 하는 메서드가 상위 클래스에 존재해야 한다. 메서드 이름은 같아야 한다. 메서드 매개변수 갯수, 데이터 타입이 같아야 한다. 메서드 반환형이 같아야 한다.
- 자바 오버라이딩
- class 부모클래스명{ public 반환데이터타입 메서드명(데이터타입 변수명){ } } class 자식클래스명 extends 부모클래스명{ public 반환데이터타입 메서드명(데이터타입 변수명){ // 부모 클래스의 메서드명, 매개변수가 동일해야 함 } }
- 파이썬 오버라이딩
- class 부모클래스명 def 메서드명(self, 변수명) #명령어 class 자식클래스명(부모클래스명) def 메서드명(self, 변수명) #명령어 #부모 클래스의 메서드명, 매개변수의 갯수가 동일해야 함
③ 상위 클래스 접근
- 자바와 파이썬은 super 키워드를 이용하여 상위 클래스의 변수나 메서드에 접근할 수 있다.
- ▼ 자바 상위 클래스 접근
- super.메서드명()
- ▼ 파이썬 상위 클래스 접근
- super().메서드명()
(6) 추상 클래스
- 추상 클래스는 미구현 추상 메서드를 한 개 이상 가지며, 자식 클래스에서 해당 추상 메서드를 반드시 구현하도록 강제하는 기능이다.
- ▼ 자바 추상 클래스
- abstract class 클래스명 { abstract 데이터타입 메서드명(); }
- ▼ 파이썬 추상 클래스
- class 클래스명: def 메서드명(self): pass
(7) 인터페이스
- 인터페이스는 자바의 다형성을 극대화하여 개발코드 수정을 줄이고 프로그램 유지보수성을 높이기 위한 문법이다. (인터페이스는 일종의 추상 클래스이다)
- 오직 추상 메서드와 상수만을 멤버로 가질 수 있으며, 그 외에 다른 어떠한 요소도 허용하지 않는다.
- 인터페이스는 구현된 것은 아무것도 없고 밑그림만 그려져 있는 ‘기본 설계도’라고 할 수 있다.
- ▼ 자바 인터페이스
- interface 클래스명 { 데이터타입 메서드명(); }
- interface 를 상속받을 때는 일반 상속을 받을 때 사용하는 extends가 아니라 implements 키워드를 사용한다.
'스터디 > 웹개발' 카테고리의 다른 글
| 221003(2) TIL 정보처리기사 실기 - SQL 응용 (2) | 2022.10.07 |
|---|---|
| 221003 TIL - 정보처리기사 실기 - 언어특성 활용하기 (1) | 2022.10.06 |
| 2022년10월1일 TIL - 정보처리기사 실기 - 프로그래밍 언어 활용(2) (0) | 2022.10.04 |
| 2022년9월28일 TIL - 정보처리기사 실기 - 프로그래밍 언어 활용(1) (0) | 2022.10.04 |
| 2022년9월26일 TIL(2) - 정보처리기사 실기 정리 - IV.통합 구현, V.인터페이스 구현 (1) | 2022.10.03 |