티스토리 뷰

728x90
반응형

기본 문법 활용하기

- 데이터타입: 불린(Boolean), ...

- 기본저장공간: 변수, 배열, 포인터

데이터타입 뒤에 *를 붙이면 주소를 저장하는 포인터변수이고, &를 붙이면 해당 변수명의 주솟값.

 

자료형

1) 자바

(1) HashSet: 중복원소 미허용 집합(set)성질 클래스. 순서중요하지 않음 []

Set의 하위클래스(자식클래스=파생클래스)로 중복된 원소를 허용하지 않는 집합의 성질을 가지고 있는 자료형이며 클래스임.

SetHashSet의 부모클래스임.

메서드 : 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 패키지명.모듈명

728x90
반응형
댓글