티스토리 뷰
기본 문법 활용하기
- 데이터타입: 불린(Boolean), ...
- 기본저장공간: 변수, 배열, 포인터
데이터타입 뒤에 *를 붙이면 주소를 저장하는 포인터변수이고, &를 붙이면 해당 변수명의 주솟값.
자료형
1) 자바
(1) HashSet: 중복원소 미허용 집합(set)성질 클래스. 순서중요하지 않음 []
Set의 하위클래스(자식클래스=파생클래스)로 중복된 원소를 허용하지 않는 집합의 성질을 가지고 있는 자료형이며 클래스임.
Set은 HashSet의 부모클래스임.
메서드 : add(값), remove(값), size()
(2) ArrayList: 크기 가변적 벼나는 선형리스트 클래스.
(3) LinkedList
메서드 : add(값), add(인덱스, 값), remove(인덱스), get(인덱스), size()
(4) HashMap: 키, 값 구성된 객체 저장 {1=A}
메서드 : put(키, 값), remove(키), get(키), size()
2) 파이썬
(1) 세트형: 중복원소 미허용 집합 성질
메서드: add(값), update([값1,값2,..]), remove(값)
(2) 리스트형:크기 가변적 변하는 선형리스트 성질
메서드: append(값), insert(인덱스, 값), remove(값)
리스트슬라이싱: 리스트에서 여러 데이터 동시접근기법.
리스트명[시작인덱스:종료인덱스:스텝]
스텝: 몇 개씩 끊어서 슬라이싱할지 결정. 생략시 [시작인덱스:종료인덱스]가 됨. 생략 경우 1이 기본값.
ex) a=[4,2,7,3,5] a[0:4:2] = [4,7]
0~3인덱스 이하 중에서 2개씩 끊음 => [4,7]
(3) 튜플형: 초기 선언된 값에서 값 수정/삭제 불가
(4) 딕셔너리형: 킷값 구성된 객체 저장하는 구조
식별자: 변수, 상수, 함수 등 서로 구분위해 사용하는이름
예약어 사용 불가
-식별자 표기법
1) 카멜표기법: 여러단어가 이어지면 첫단어만 소문자, 나머지단어첫글자는 대문자. ex) freeStyle
2) 파스칼표기법: 각단어의첫글자는대문자 ex)FreeStyle
3) 스네이크표기법: 단어사이 언더바 ex) Free_style
4) 헝가리안표기법: 두어에 자료형을 붙임. int형이면 n, char형이면 c, 문자열이면 sz. ex) nScore
-연산자
1) 산술연산자: -, +, *, / , %
2) 시프트 연산자: <<, >>
3) 관계연산자 : >, <. >=, <=, ==, !=
4) 논리 연산자: &&, ||
5) 비트 연산자: &, |, ^, ~
&: 모두1이면 1, 아님 0
|: 하나라도 1이면 1, 아니면 0
^: 서로다르면1, 아니면 0
~: 모든 비트 값을 반대로 바꿈
6) 대입연산자: =, +=, -=, *=, /=, %=
7) 증감연산자: ++a, a++, --a, a--
8) 삼항 연산자: 조건? 참일때값:거짓일때값
표준함수
1) 출력함수
C언어: printf();
유형 | 포맷스트링 | 설명 |
문자형 | %c | 문자 |
%s | 문자열 | |
정수형 | %d | 10진수 |
%x | 16진수 | |
%o | 8진수 | |
실수형 | %f %[전체자리수].[소수점자리수] |
실수출력 |
C++: std::cout << 문자열;
: cout를 사용하기 위해서는 iostream 헤더를 선언.
using namespace std;를 선언하면 cout 사용시 std::부분을 생략할수 있음.
개행: std::endl;
변수출력:std::cout << 변수명;
자바: System.out.printf(“%d”, a);
파이썬: print(문자열, end=’ ‘)
입력함수:
C언어: scanf(“%s”, 배열명); // include stdio.h
문자열을 입력받는 경우가 아니면 변수명 앞에 & 붙임
문자열을 입력받는 경우 배열명을 쓰고 &는 안붙임
C++: std::cin >> 변수명; // iostream 헤더 선언
자바: Scanner 클래스를 스캐너 변수에 생성 후. 정수형일 겨우 nextInt, 실수형일 경우 nextFloat, nextDouble, 문자열일 경우 nextLine을 통해 입력받음.
Scanner scanner = new Scanner(System.in);
a = scanner.nextInt();
파이썬: a = input()
숫자입력: a=input(), a= eval(a)
명령문: 지시사항을 처리하는 단위로 조건문,반복문
루프제어명령어: break, continue
-사용자정의 자료형 활용:
1) 열거체: 서로 연관된 정수형 상수들의 집합
class 열거체명(Enum):
멤버2, 멤버2 ,,. };
2) 구조체: struct student{}
-재귀함수: 함수 자신이 자신을 부르는 함수
-클래스: 객체지향 프로그래밍(OOP)에서 특정 객체를 생성하기 위해 변수와 메서드를 정의하는 툴
C언어는 명령형 프로그래밍으로 클래스를 지원하지 않음
접근제어자: 지정된 클래스, 변수, 메서드를 외부에서 접근할 수 있도록 권한 설정하는 기능
public, protected(같은 패키지 내부에 있는 클래스, 하위클래스), default(접근제어자를 명시하지 않음. 같은 패키지 내부에있는 클래스에서 접근가능. 자바에만 존재), private(같은 클래스 내에서만 접근 가능)
자신 클래스 참조: this포인터, self(현재 객체를 가리키는 포인터)
생성자(Constructor): 해당 클래스의 객체가 생성될 때 자동호출되는 메서드. __init__
소멸자(Destructor)
: 객체 수명 종료시 제거위한 목적으로 사용되는 메서드
: C++에서는 ~를 사용. 자바: finalize(). 파이썬:__del__
상속(inheritance)
C++: class 자식클래스명: public 부모클래스명{};
자바: class 자식클래스명 extends 부모클래스명{};
파이썬: class 자식클래스명(부모클래스명):
- 오버로딩: 동일 이름의 메서드를 매개변수만 다르게해 여러개 정의. 파이썬은 미지원.
: 메서드 이름이 같아야하고, 매개변수 개수나 데이터타입이 달라야 함.
-오버라이딩: 하위클래스에서 상위클래스 메서드를 재정의 C++에서는 virtual 키워드가 있어야 오버라이딩이 가능.
: 메서드 이름이 같아야하고, 매개변수, 데이터타입, 반환형이 같아야 함.
-상위클래스 접근:C++은 콜론 두 번(::), 자바와 파이썬은 super 키워드로 접근가능.
C++: 부모클래스::메서드명()
자바: super.메서드명()
파이썬:super().메서드명()
-추상클래스: 미구현 추상메서드를 1개이상 가지며, 자식클래스에서 해당 추상메서드를 반드시 구현해야함.
C++: class 클래스명{
public:
virtual 데이터타입 메스명()=0;
}
자바: abstract class 클래스명{ abstract 데이터타입 메서드명();}
파이썬: class 클래스명:
def 메서드명(self): pass
-인터페이스: 자바의 다형성을 극대화해 개발코드 수정을 줄이고 프로그램 유지보수성을 높임. 일종의 추상클래스이며, 오직 추상메서드와 상수만을 멤버로 가질 수 있다.
자바: interface 클래스명{ 데이터타입 메서드명(); }
언어 특성 활용하기
프로그래밍 언어 유형 분류
1) 개발 편의성에 따라 저급언어, 고급언어
저급언어: 기계가 이해하는 언어. 기계어, 어셈블리어
고급언어: 개발자가 이해언어. C, C++, 자바, 파이썬
2) 실행하는 방식에 따라 명령형, 함수형, 논리형, 객체지향형 언어
명령형언어(=절차형언어): 컴터에 저장된 명령어들이 순차실행됨. FORTRAN, COBOL, PASCAL, C
객체지향언어: 객체간 메시지통신을 이용. javam c++
함수형언어: 수학적 수식같은 함수로 구성. LISP
논리형언어: 논리문장 이용함. 프롤로그
3) 구현기법에 따라 컴파일 방식의 언어, 인터프리터 방식의 언어, 혼합형 언어
컴파일방식의언어: 고급언어를 기계어로 번역. 컴파일러에 의해 실행에 필요한 정보가 미리 계산되어 실행속도가 높음. FORTRAN, PASCAL, C, C++
인터프리터방식의 언어: 고급언어 명령문을 하나씩 번역하고 실행. 프로그램 실행과 동시에 동작. BASIC, 프롤로그, LISP
혼합형방식의 언어: 고급언어를 컴파일해 중간언어로 변환후, 인터프리터에 의해 번역실행. 자바
프로그래밍 언어의 언어별 특성
1) 절차적 프로그래밍 언어
(1) 알골: 알고리즘 연구개발 이용목적으로 생성. 절차형 언어로는 최초로 재귀호출이 가능.
(2) C: 유닉스 OS에서 사용위해 개발됨.
(3) BASIC: 교육용으로 문법쉬움. 서로다른 종류 사이의 소스코드는 호환되지 않음
(4) FORTRAN: 과학계산위한 과학 기술전문언어. 수학함수 사용 가능.
2) 객체지향 프로그래밍 언어
(1) C++: C에 객체지향프밍 개념과 일반화 프밍위한 템플릿 기능 추가.
(2) C#: microsoft에서 개발한 객체지향프밍언어. 불안전코드(unsafe code) 기술을 통해 플랫폼간 상호운용성 확보
(3) java: 썬 마이크로 시스템즈(oracle합병됨)가 개발한 객체지향 프밍언어. 현제 웹앱개발에 가장많이 사용되며, 자바컴파일러는 자바언어로 작성된 프로그램을 바이트코드라는 특수 바이너리형태로 변환.
(4) delphi:파스칼문법에 여러기능이 추가됨. 윈도즈 아래 모든 부분 프로그래밍 가능. 높은 생산성, 간결코드가 장점. 저수준 시스템 프로그래밍도 가능함.
3) 스크립트 언어
(1) PHP: 동적웹 만들기위해 설계됨. html에 입력시 웹서버에서 코드 인식해 웹페이지 생성. 인터페이스 방식의 자체 인터프리터 제공
(2) Perl: 인터프리터 방식. 실용성. C, sh 등 다른 프밍언어에서 뛰어난 기능을 도입. 불특정 데이터길이 제약없이 강력한 문자열 처리 기능 제공
(3) python: 라이브러리가 풍부. 유니코드 문자열 지원. 들여쓰기 사용. 다른언어로 쓰인 모듈을 연결.
(4) javascript: 객체기반. 웹브라우저내에서 주로 사용. 다른 응용프로그램 내장객체에도 접근할 수 있는 기능. 브라우저마다 지원되는 버전이 상이함.
4) 선언형 언어 종류
구분 | 종류 | 설명 |
함수형 | 하스켈 | -패턴맞춤, 커링, 조건제시법, 가드, 연산자정의 등의 기능 -재귀함수, 대수적 자료형 지원 |
LISP(리스프) | -수학표기법 나타내기위한 목적 -트리, GC, 동적자료형, 인터프리터 같은 개념 제시 -함수호출시 함수이름 혹은 연산자가 첫 번째로 위치해 피연산자가 이어 위치. |
|
논리형 | prolog | -논리식 기반, 객체간 관계에 관한 문제를 해결 -인공지능, 계산언어학 분야, 자연어 처리에서 사용 |
특수분야 | SQL | -RDMBS의 데이터관리위해 설계된 특수 목적의 프밍언어 -DB 관련 프로그램들이 SQL을 표준으로 채택 |
객체지향 프로그래밍
: 객체와 객체간의 통신을 통해 프로그램이 구현됨
구성요소 | 설명 |
객체(object) | 개체,속성,메서드로 구성된 클래스의 인스턴스 |
클래스 | 객체를 표현하는 추상데이터타입. 개체를 생성하는 틀. |
메시지 | 객체간의 통신 |
-객체: 현실세계에서 개체를 데이터 속성과 메서드를 결합한 형태로 표현한 것.
구성요소 | 설명 |
개체(entity) | 현실세계 본질 |
속성 | 자료저장소 역할. (변수) |
메서드 | 호출단위 (함수) |
라이브러리
:효율적 프로그램 개발위해 필요한 프로그램을 모아놓은 집합체. 도움말, 설치파일, 샘플코드 등을 제공.(구성요소)
1) 표준 라이브러리
: 여러 종류의 모듈과 패키지를 가지며, 별도 파일 설치없이 사용가능
2) 외부 라이브러리
: 별도파일 설치. 누구나 개발하여 설치가능. 인터넷을 이용해 공유가능.
: 라이브러리는 모듈과 패키지를 총칭함.
모듈이 개별파일이면 패키지는 파일들을 모아놓은 폴더임.
모듈: 전역변수, 함수 등 모아둔 파일. ex) import 모듈명
패키지: 모듈을 디렉터리 형식으로 구조화한 라이브러리. import 패키지명.모듈명
'도구 > Etc' 카테고리의 다른 글
[2021 정보처리기사 실기] 11. 서버 프로그램 구현 (0) | 2021.07.06 |
---|---|
[2021 정보처리기사 실기] 10. SQL 응용 (0) | 2021.07.05 |
[2021 정보처리기사 실기] 8. 인터페이스 구현 (0) | 2021.07.05 |
[2021 정보처리기사 실기] 7. 통합 구현 (0) | 2021.07.04 |
[2021 정보처리기사 실기] 6. 데이터 입출력 표현 (0) | 2021.07.03 |