6 프로그래밍 언어 활용
I. 기본 문법 활용하기
1. 변수 활용
(1) 데이터 타입
- 데이터 타입의 개념 : 데이터를 식별하는 형태
- 데이터 타입의 유형
① Boolean : 데이터의 참/거짓 판단
② Character : 문자 하나를 저장
③ String : 문자열 저장
④ Integer : 정수 값 저장
⑤ Floating Point : 소수점을 포함하는 실수 저장
(2) 기본 저장 공간
- 변수(Variable)
① 개념 : 저장 하고자 하는 값을 주 기억장치에 기억하기 위한 공간
② 선언 : 데이터_타입 변수명; 데이터_타입 변수명 = 초기값;
- 배열(Array)
① 개념 : 같은 타입으로 이루어진 변수들의 집합
② 선언
C, C++ : 타입 배열명[배열요소]; 타입 배열명[배열요소]={초기값};
JAVA : 타입 []배열명 = new 타입[배열요소]; 타입 []배열명 = {초기값};
- 포인터
① 개념 : 변수의 주소 값을 저장하는 공간
② 선언 : 데이터_타입* 포인터_변수명 = &변수명;
(3) 자료형
- 자바
① HashSet 형
개념 : 중복 원소 허용 안함
선언 : HashSet 변수명 = new HashSet(); Set 변수명 = new HashSet();
메서드 : 변수명.add(값), 변수명.remove(값), 변수명.size()
② ArrayList 형
개념 : 크기가 가변적으로 변하는 선형리스트의 성질 가짐
선언 : ArrayList 변수명 = new ArrayList(); List 변수명 = new ArrayList();
메서드 : 변수명.add(값), 변수명.add(인덱스,값), 변수명.remove(인덱스), 변수명.get(인덱스), 변수명.size()
③ HashMap 형
개념 : 키와 값으로 구성된 객체 저장
선언 : HashMap 변수명 = new HashMap(); Map 변수명 = new HashMap();
메서드 : 변수명.put(키,값), 변수명.remove(키), 변수명.get(키), 변수명.size()
- 파이썬
① 세트(Set)형
개념 : 중복 원소 허용하지 않는 집합
선언 : 세트명 = set([요소1, 요소2, … ]) 세트명 = {요소1, 요소2, … }
메서드 : 세트명.add(값), 세트명.update([값1, 값2, … ]), 세트명.remove(값)
② 리스트(List)형
개념 : 크기가 가변적으로 변하는 선형리스트 성질 가짐
선언 : 리스트명 = [요소1, 요소2, … ]
메서드 : 리스트명.append(값), 리스트명.insert(인덱스,값), 리스트명.remove(값)
리스트 인덱싱 : 인덱스를 이용해 값에 접근
리스트 슬라이싱 : 리스트에서 여러 개의 데이터에 동시 접근 기법 / ( 리스트명[시작인덱스:종료인덱스:스텝]) / 시작~종료인덱스 직전 까지 스텝 단위로 슬라이싱
③ 튜플(Tuple)형
개념 : 초기 선언 값 이후의 값 생성, 삭제 수정이 불가능한 형태
선언 : 튜플명 = ( 요소1, 요소2, … )
튜플 인덱싱 : 인덱스를 이용한 접근방식
튜플 슬라이싱 : 리스트 슬라이싱과 개념 및 방식 동일
④ 딕셔너리(Dictionary)형
개념 : 키와 값으로 구성된 객체를 저장하는 구조
선언 : 딕셔너리명 = { 키1:값1, 키2:값2, … }
딕셔너리형 요소 추가 : 딕셔너리명[키] = 값
딕셔너리형 요소 삭제 : del 딕셔너리명[키]
(4) 식별자(Identifier)
- 개념 : 변수, 상수, 함수 등을 서로 구분하기 위한 이름
- 명명 규칙
① 사용 가능 문자 : 영문, 숫자, 밑줄, $의 사용이 가능
② 변수 사용 규칙 : 첫 자리에는 숫자가 불가능, 이름 중간에 공백 사용 불가능
③ 변수 의미 부여 : 데이터 값의 의미나 역할을 표현, 예약어는 변수로 사용이 불가능
- 식별자 표기법
① 카멜 표기법 : 첫 단어 시작만 소문자, 나머지 단어 시작은 대문자
② 파스칼 표기법 : 각 단어의 첫 글자 대문자
③ 스네이크 표기법 : 각 단어 사이 밑줄
④ 헝가리안 표기법 : 두어에 자료형 붙임 ( int형 : n, char형 : c, 문자열 : sz )
2. 연산자
(1) 산술연산자(Arthmeic Operator) : +, -, *, /, %
(2) 시프트연산자(Shift Operator) : <<, >>
(3) 관계연산자(Relation Operator) : >, <, >=, <=, ==, !=
(4) 논리연산자(Logic Operator) : &&, ||
(5) 비트연산자(Bit Operator) : &, |, ^, ~
(6) 대입연산자(Assignment Operator) : =, +=, -=, 8=, /=, %=
(7) 증감연산자(Increment & Decrement Operator) : ++x, x++, --x, x—
(8) 삼항연산자 : 조건 ? 참일때값 : 거짓일때값;
3. 표준 함수
(1) 출력 함수
- C언어
① 단순 출력 : printf(문자열);
② 개행 : printf(“\n”);
③ 변수 출력 : printf(포멧스트링, 변수);
포멧스트링 : %c, %s, %d, %x, %o, %f, %전체자리수.소수점자리수f
- C++
① 단순 출력 : std::cout << 문자열;
② 개행 : std::endl;
③ 변수 출력 : std::cout << 변수명;
- 자바
① 단순 출력
System.out.printf(문자열); - 포멧 스트링을 이용하여 변수 출력
System.out.print(문자열); - 출력 후 개행을 하지 않음
② 개행
System.out.print(“\n”); / System.out.pirntln(문자열);
③ 변수 출력
System.out.print(변수명);
System.out.println(변수명);
System.out.printf(포멧스트링, 변수명)
- 파이썬
① 단순 출력 및 개행
print(문자열) - 출력 후 개행
print(문자열,end=’ ‘) - 출력 후 개행하지 않음
② 변수 출력
print(변수명)
(2) 입력 함수
- C언어
① scanf(포멧스트링, &변수명);
② scanf(“%s”, 배열명);
- C++
① std::cin >> 변수명;
- 자바
① 정수형 : Scanner 스캐너_변수명 = new Scanner(System.in); 입력받을_변수명 = 스캐너_변수명.nextInt();
② 실수형 : Scanner 스캐너_변수명 = new Scanner(System.in); 입력받을_변수명 = 스캐너_변수명.nextFloat();
③ 문자열 : Scanner 스캐너_변수명 = new Scanner(System.in); 입력받을_변수명 = 스캐너_변수명.nextLine();
- 파이썬
① 문자열 입력 : 변수명 = input()
② 숫자 입력 : 변수명 = input() / 변수명 = eval(변수명)
4. 명령문
(1) 조건문
- IF문
C, C++, 자바 | 파이썬 |
if (조건문){ 명령문; } else if (조건문){ 명령문; } else{ 명령문; } |
if 조건문 : 명령문 elif 조건문 : 명령문 else : 명령문 |
- Switch 문
C, C++, 자바 | 파이썬 |
Switch (식) { case 값: 명령문; break; default : 명령문; } |
없음 |
(2) 반목문
- while 문
C, C++, 자바 | 파이썬 |
while (조건문) { 명령문; } |
while 조건문 : 명령문 |
- for문
C, C++, 자바 | 파이썬 |
for (초기값; 최종값; 증감값) { 명령문; } |
for 변수 in range (시작값, 끝값+1) : 명령문 |
for 변수 in range (반복횟수) : 명령문 |
(3) 루프 제어 명령어
- break : 반복문 중지
- continue : SKIP 기능
5. 사용자 정의 자료형 활용
(1) 사용자 정의 자료형의 개념
- 열거체
① enum 열거체명{
맴버1,
맴버2,
…
};
- 구조체
① struct 구조체명{
자료형 변수명1;
자료형 변수명2;
…
};
6. 사용자 정의함수
(1) C, C++, 자바
반환_데이터_타입 함수명 (데이터_타입 변수명, …){
명령어;
return 반환값;
};
(2) 파이썬
def 함수명(변수명, …) :
명령어
return 반환값
7. 재귀함수
(1) C, C++, 자바
반환_데이터_타입 함수명 (데티어_타입 변수명, …){
…
함수명(변수명, …)
…
return 반환값;
}
(2) 파이썬
def 함수명(변수명, …) :
…
함수명(변수명, …)
…
return 반환값
8. 클래스(Class)
(1) 접근 제어자(Access Modifier)
- public : 외부의 모든 클래스에서 접근 가능
- protected : 자기 자신과 상속받은 하위 클래스 둘 다 접근이 가능
- default : 자기 자신만 접근 가능, 자바에만 존재
- private : 같은 클래스 내에서만 접근 가능
(2) 클래스 사용
- 클래스 정의
C++ | 자바 | 파이썬 |
class 클래스명{ private: 변수_타입 변수명; public: 반환_데이터 _타입 메서드명(데이터_타입 변수명, …){ 명령어; return 반환값; } }; |
public class 클래스명{ private 변수_타입 변수명; public 반환_데이터_타입 메서드명(데이터_타입 변수명, …){ 명령어; return 반환값; } } |
class 클래스명: def 메서드명(self, 변수명, …): 명령어 return 반환값 |
- 자신 클래스 참조
① this 포인터 : C++, 자바에서 클래스 내부 변수와 함수 가르킴
C++ | 자바 |
this -> 변수명; this -> 함수명(매개변수); |
this.변수명; this.함수(매개변수); |
② self : 파이썬에서 클래스 내부 변수와 함수 가르킴
self.변수명;
self.함수명(매개변수);
- 클래스 선언
① C++
일반 변수 | 클래스 클래스변수(매개변수); // 생성시 클래스변수.메서드(매개변수); // 클래스 내 메서드 사용 |
포인터 변수 사용 | 클래스* 클래스변수 = new 클래스(매개변수); // 생성시 클래스변수->메서드(매개변수); // 클래스 내 메서드 사용 delete 클래스변수; // 소멸시 |
② 자바
클래스 클래스변수 = new 클래스(매개변수); // 생성시
클래스변수.finalize(); // 소멸시
③ 파이썬
클래스변수 = 클래스(매개변수) // 생성시
def 클래스변수 // 소멸시
(3) 생성자(Constructor)
C++ | 자바 | 파이썬 |
class 클래스명{ public: 클래스명(데이터_타입 변수명, …){ 명령어; } } |
public class 클래스명{ public 클래스명(데이터_타입 변수명, …){ 명령어; } } |
class 클래스명: def __init__(self, 변수명, …): 명령어 |
(4) 소멸자(Destructor)
C++ | 자바 | 파이썬 |
class 클래스명{ public: ~클래스명(){ 명령어; } }; |
public class 클래스명{ public void finalize(매개변수){ 명령어; } } |
calass 클래스명 : def __del__(self): 명령어 |
(5) 상속(Inheritance)
C++ | 자바 | 파이썬 |
class 부모_클래스명{ }; class 자식_클래스명 : public 부모_클래스명{ }; |
class 부모_클래스명{ } class 자식_클래스명 extends 부모_클래스명{ } |
class 부모_클래스명: - class 자식_클래스명(부모_클래스명) : - |
- 오버로딩(Overloading)
① 개념 : 동일 이름의 메서드를 매개변수만 다르게 하여 여러 개 정의하는 기능
② 특징
파이썬에서는 오버로딩 기능 지원 X
메서드 이름이 동일해야 함
매개변수 개수가 다르거나, 개수가 같더라도 데이터 타입이 달라야 한다.
- 오버라이딩(Overriding)
① 개념 : 하위 클래스에서 상위 클래스 메서드를 재정의하는 기능
② 특징
C++에서는 virtual 키워드가 있어야 오버라이딩 가능
오버라이드하고자 하는 메서드가 상위 클래스에 존재 해야 함
메서드 이름은 같아야 함
메서드 매개변수 개수, 데이터 타입, 반환형이 같아야 한다
- 상위 클래스 접근
① C++ : 부모_클래스 :: 매서드명()
② 자바 : super.매서드명()
③ 파이썬 : super().매서드명()
(6) 추상 클래스
C++ | 자바 | 파이썬 |
class 클래스명{ public: virtual 데이터_타입 메서드명()=0; }; |
abstract class 클래스명{ abstract 데이터_타입 메서드명(); } |
class 클래스명 : def 메서드명(self): pass |
(7) 인터페이스
- 자바에서만 사용
- 추상 메서드와 상수만을 맴버로 가짐
- 선언
interface 클래스명 {
데티어_타입 메서드명():
}
- 상속받을 때
class 상속받을_클래스 implements 상속할_클래스{
}
II. 언어 특성 활용하기
1. 프로그래밍 언어의 언어별 특성
(1) 프로그래밍 언어의 유형 분류
- 개발편의에 따른 분류
① 저급 언어 : 기계가 이해할 수 있도록 만들어진 언어
② 고급 언어 : 개발자가 소스 코드 작성시 쉽게 이해할 수 있도록 만들어진 언어
- 실행하는 방식에 따른 분류
① 명령형 언어 : 저장된 명령어들이 순차적으로 실행되는 절차형 언어
② 객체지향 언어 : 객체간 메시지 통신 이용
③ 함수형 언어 : 수학적 수식과 같은 함수들로 프로그램을 구성하여 호출
④ 논리형 언어 : 논리 문장을 이용하여 프로그램을 표현하고 계산을 수행
- 구현 기법에 따른 분류
① 컴파일 방식의 언어 : 고급 언어를 기계어로 번역
② 인터프리터 방식의 언어 : 고급 언어 명령문을 하나씩 번역하고 실행
③ 혼합형 방식의 언어 : 고급 언어를 컴파일하여 중간 언어로 변환 후 인터프리터에 의해 번역을 실행
(2) 프로그래밍 언어별 특성
- 절차적 프로그래밍 언어 종류
① ALGOL, C언어, BASIC, FORTRAN
- 객체지향 프로그래밍 언어 종류
① C++, C#, JAVA, Delphi
- 스크립트 언어 종류
① PHP, Perl, Python, Javascript
- 선언형 언어 종류
① 함수형 언어 : Haskell, LISP
② 논리형 언어 : Prolog
③ 특수 분야 언어 : SQL
(3) 객체지향 프로그래밍
- 객체 지향 프로그래밍 구성요성 : 객클매(객체, 클래스, 메시지)
- 객체 구성요소 : 개속메(개체, 속성, 메서드)
2. 라이브러리 활용
(1) 라이브러리(Library)
- 개념 : 필요할 때 찾아서 쓸 수 있도록 모듈화되어 제공되는 프로그램
- 구성 : 도설샘(도움말, 설치 파일, 샘플 코드)
- 종류 : 표준 라이브러리, 외부 라이브러리
- 기능 : 문자열 연산 기능, 문자열 탐색/치환 기능, 수치 계산 기능, 난수 생성 기능, 파일 경로 조작 기능, 디렉터리 생성 기능, 날짜 조작 기능, 로그 출력 기능
(2) 모듈과 패키지
- 모듈(Module) : 전역변수, 함수 등을 모아둔 파일 / import 모듈명
- 패키지(Package) : 모듈을 디렉터리 형식으로 구조화 / import 패키지명.모듈명
'자격증 > 정처기' 카테고리의 다른 글
정처기 실기 파트8 (0) | 2022.07.10 |
---|---|
정처기 실기 파트7 (0) | 2022.07.10 |
정처기 실기 파트5 (0) | 2022.07.10 |
정처기 실기 파트4 (0) | 2022.07.10 |
정처기 실기 파트3 (0) | 2022.07.10 |