728x90
728x90
이번 시간은 정보처리기사 실기에서 다루는 6장 프로그래밍 언어 활용에 대해서 정리를 해보았습니다.
* 이 글은 정보처리기사 공부 목적으로 쓴 글입니다. 그러다 보니 혹시 제가 잘못 작성한 부분이 있거나 수정이 필요하다면 댓글로 알려주시면 감사하겠습니다.
문자 vs. 문자열 | [C] [C++] [자바] 에서 문자 하나는 작은 따옴표('), 문자열은 큰 따옴표(")로 표기 (특히 따옴표는 문자이냐 문자열이냐를 구분하기 위한 것이지 실제 출력 결과가 아니므로, 출력 결과에 따옴표를 쓰는 건 오답이니 주의!) |
포인터 변수 | - 변수 선언 시 데이터 타입 뒤에 * 를 붙이면 포인터 변수가 된다 - 변수명 앞에 & 를 붙이면 해당 변수의 주솟값을 가리킨다. - 주솟값에 들어있는 값은 * 로 얻을 수 있다. // 변수 a의 값이 배열일 때, a[0]은 0번지 값이고 &a[0]은 0번지 주소를 가리킴 // printf("%s")으로 문자열 출력 시, 무조건 NULL 값 바로 앞까지 출력한다. Q. char b[16] = "hello world"; printf("%s", &b[6]); A: world |
자료형 | Java : HashSet, ArrayList, LinkedList, HashMap Python: Set, List, Tuple, Dictionary |
HashSet | [자바]의 자료형. 중복값 무시, 순서X add(값), remove(값) |
ArrayList | [자바]의 자료형. 순서 중요 add(값), add(인덱스, 값) remove(인덱스), get(인덱스) |
HashMap | [자바]의 자료형. 키-값 쌍 put(키, 값), remove(키), get(키) |
Set | [파이썬]의 자료형. 중복값 무시, 순서X add(값), remove(값) |
List | [파이썬]의 자료형. 순서 중요 append(값), insert(인덱스, 값), remove(값) |
Dictionary | [파이썬]의 자료형. 키-값 쌍 딕셔너리이름[키] = 값, del 딕셔너리이름[키] |
리스트 인덱스 | [0] [1] ... [n-2] [n-1] [-n] [-(n-1)] ... [-2] [-1] |
리스트 슬라이싱 | 1) 시작 인덱스: 생략 시 처음부터 2) 종료 인덱스: 종료 인덱스 '전'까지만 슬라이싱하며 생략 시 마지막까지 3) 스텝: 생략 시 1 a = [7, 6, 3, 4, 0] print(a[:4:2]) # 출력: [7,3] a = "Hello Phython" b = a[0:3] c = a[-4:-1] print(b+c) # 출력: Heltho |
헝가리안 표기법 | 식별자 앞에 자료형을 붙이는 표기법 ex. nSore |
스네이크 표기법 | 식별자에 여러 단어가 이어질 때 각 단어 사이에 언더바를 넣는 표기법 ex. input_function |
카멜 표기법 | 식별자에 여러 단어가 이어질 때 첫 단어의 시작만 소문자로, 각 단어의 첫 글자는 대문자로 쓰는 표기법 ex. inputFunction |
파스칼 표기법 | 식별자에 여러 단어가 이어질 때 각 단어의 첫 글자는 대문자로 쓰는 표기법 ex. InputFunction |
시프트 연산자 | << (우측의 값만큼 왼쪽으로 비트 이동) >> (우측의 값만큼 오른쪽으로 비트 이동) ex. 6<<1 (답:12) - 6을 2진수로 바꾸면 110 - 왼쪽으로 1 이동이므로 1100 - 1100을 10진수로 바꾸면 12 |
10진수 ⇢ 2진수 | 2로 나누고, 나머지를 우측에 작성. 더 이상 2로 나눌 수 없게 되면 아래서부터 위로 읽어나감 ex) 5/2=2(나머지1) ⇢ 2/2=1(나머지0) ⇢ 답:101 |
2진수 ⇢ 10진수 | 뒤에서부터 순서대로 1,2,4,8,16,32... 작성. 이후 1인 자릿수만 총 더해서 계산 ex) 10100 = 16,8,4,2,1 = 16+4= 20 |
비트 연산자 | & (같은 비트 값이 모두 1이면 1) | (같은 비트 값중 하나라도 1이면 1) ^ (같은 비트값이 서로 다르면 1 =XOR) ~ (모든 비트값을 반대로) ex. 5&6 (답:4) - 5는 101, 6은 110 - 1&1=1, 0&1=0, 1&0=0 이므로 100 - 100은 4 ex. 30&15 (답:14) - 30은 11110, 14는 1111 - 둘이 자릿수가 다르면 11110&01111로 계산 - 01110은 십진수로 14 |
증감 연산자 | ++x / --x (증감시킨 후 변수 사용) x++ / x-- (변수 사용 후 증감) |
출력 함수 | [C] printf("Hello World"); printf("Hello\nWorld"); printf("%d", a); [C++] std::cout << "Hello" << endl << "World"; [자바] System.out.print("Hello\nWorld"); System.out.println("Nana"); [파이썬] print('Hello', end='') # 개행 없음 print('World') # 개행 있음 # 아무것도 없이 print() 만 하면 개행처리와 마찬가지 |
포맷 스트링 | %c : 문자 %s : 문자열 %d : 10진수 %x : 16진수 %o : 8진수 %f : 실수 (6자리까지) %[전체자리수].[소수점자리수]f : 해당 자리수만큼 실수 ex. float a = 1.2일 때 ("%.2f", a) 는 1.20 이고, ("%7.3f\n", a) 는 1.200 이다 |
입력 함수 | [C] scanf("%c %d", &a, &b); // 문자열 입력이 아닐 때 ⇢ 변수명 앞에 & 붙임 scanf("%s", c); // 문자열 입력일 때 ⇢ &는 안 붙임 [C++] std::cin >> a; [자바] Scanner c = new Scanner(System.in); s = c.nextLine(); //문자열 i = c.nextInt(); //정수형 f = c.nextFloat(); //실수형 [파이썬] s = input() s = eval(s) # 문자열인 경우 eval() 함수를 써서 숫자로 변환해 줘야 한다 |
if문 | [C] [C++] [자바] if() {} else {} [파이썬] if: elif: else: |
switch문 | 1) 해당하는 case가 있다 - break가 있으면 switch 문 종료 - break가 없으면 break를 만날 때까지 switch 문 내 다른 문장을 실행 2) 해당하는 case가 없다 - default 실행 - 조건에 해당하는 case도, default도 없다면 아무것도 실행되지 않는다 |
for문 | [C] [C++] [자바] for (초깃값; 최종값; 증감 값) { 명령문; } [파이썬] for 변수 in range (시작값, 끝값) : 명령문 - (시작값)부터 (끝값-1)까지 1씩 증가 for 변수 in range (반복횟수) : 명령문 - 0부터 (반복횟수-1)까지 1씩 증가 |
구조체 | - 기본 타입을 갖고 내 입맛대로 새롭게 정의하는 자료형 - [C] [C++] 에서 struct 로 선언 후 사용 |
열거체 | - 정수형 상수에 이름을 붙여 쓰기 편하게 만드는 것 - [C] [C++] 은 enum 으로 선언하며 초깃값이 없으면 0부터 차례대로 할당 |
루프 제어 명령문 | - break : 반복문 중지 - continue : 아래 구문 실행하지 않고 다음 반복문으로 넘어감 |
클래스 정의 | [C++] private: 아래서부터 쭉~ 해당 접근 제어자가 적용됨 [자바] 자바는 변수/메서드 하나하나 접근제어자 지정 필요 [파이썬] 파이썬은 매개변수 앞에 self 키워드 필요 (입력받는 값이 없을 때 self를 쓰기 위함) |
접근 제어자 | 1. public + : 외부 모든 클래스에서 접근 가능 2. protected # : 같은 패키지 내부, 하위 클래스(상속)일 때 접근 가능 3. default ~ : 자바 전용. 접근 제어자 명시가 없을 때, 같은 패키지 내부에서 접근 가능 4. private - : 같은 클래스 내에서만 접근 가능 |
자신 클래스 참조 | [C++] this -> 변수명; this -> 함수명(매개변수); [자바] this.변수명; this.함수명(매개변수); [파이썬] self.변수명 self.함수명(매개변수) |
생성자 | 해당 클래스의 객체가 생성될 때 자동으로 호출되는 메서드 - [C++] [자바] : 클래스명과 동일하면 생성자 - [파이썬] : __int__ 라는 메서드명을 사용하면 생성자 |
소멸자 | 객체의 수명이 끝났을 때 객체를 제거하기 위한 메서드 - [C++] : 클래스명과 동일하고, ~ 기호를 사용하면 소멸자 - [자바] : finalize 라는 메서드명을 사용하면 소멸자 - [파이썬] : __del__ 라는 메서드명을 사용하면 소멸자 |
상속 | 어떤 객체의 변수와 메서드를 다른 객체가 물려받는 것 |
상속 문법 | [C++] class 자식클래스 : public 부모클래스 { } [자바] class 자식클래스 extends 부모클래스 { } [파이썬] class 자식클래스(부모클래스): |
오버로딩 | 같은 이름의 메서드를 매개변수만 다르게 하여 여러 개 정의하는 것 |
오버라이딩 | 하위 클래스에서 상위 클래스 메서드를 재정의할 수 있는 기능 [C++] 은 virtual 키워드가 꼭! 필요하다 (부모/자식 중 하나라도 있으면 오버라이딩 되지만, 둘 다 키워드가 없으면 오버라이딩 되지 않으니 주의) |
상위 클래스 접근 | [C++] : 부모클래스::메서드명() [자바] : super.메서드명() //super()로 상위 클래스의 생성자에 접근 [파이썬] : super().메서드명() |
추상 클래스 | 자식클래스에서 상위클래스의 미구현 추상 메서드를 구현하는 기능 |
추상 클래스 구현 | [C++] : 메서드 뒤에 =0 붙임 [자바] : 클래스명과 메서드명 앞에 abstract 붙임 [파이썬] : 메서드 내부에 pass 키워드를 사용 |
인터페이스 | 자바에서 다향성을 극대화하기 위한 문법으로, 추상 메서드와 상수만을 멤버로 갖는다 - interface로 정의하고 implements로 가져다 쓴다 |
프로그래밍 언어 분류 (실행방식) |
1. 명령형 언어 (=절차형 언어): 명령들이 순차적으로 실행되는 방식 포코파씨알베 ex. FORTRAN, COBOL, PASCAL, C, ALGOL, BASIC 2. 객체지향 언어: 객체 간 메시지 통신을 이용하는 방식 ex. 자바, C++ 3. 함수형 언어: 수학수식과 같은 함수들로 프로그램을 구성하여 호출하는 방식 리하 ex. 리스프(LISP), 하스켈(Haskell) 4. 논리형 언어: 논리 문장을 이용하여 표현하는 방식 ex. 프롤로그(Prolog) |
프로그래밍 구현 기법 | 1) 컴파일 방식: 고급 언어 → 기계어로 번역하는 방식 ex. FORTRAN, PASCAL, C, C++ 2) 인터프리터 방식: 명령문을 하나씩 번역하고 실행하는 방식 ex. BASIC, LISP, PHP, Perl, 프롤로그 3) 혼합형 방식: 고급 언어를 컴파일하여 중간 언어로 변환 후, 인터프리터가 번역을 실행하는 방식 ex. 자바 |
절차적 프로그래밍 | 1) 포트란 (FORTRAN) : 과학 기술 전문 언어로, 고급 수학 함수들 사용 가능 / 컴파일 2) C 언어 : 유닉스 운영 체제에서 사용하기 위한 언어 / 컴파일 3) 알골 : 알고리즘 연구개발 목적 4) 베이직: 교육용으로 개발된 언어 / 인터프리터 |
객체지향 프로그래밍 | 씨씨자델 1) C++ : C언어에 객체지향 프로그래밍 개념 추가 / 컴파일 2) C# : MS에서 개발. 불안전 코드(Unsafe Code) 같은 기술을 통해 상호 운용성 확보 3) 자바 : 웹 애플리케이션 개발에 가장 많이 사용되는 언어 4) 델파이 : 파스칼 문법 + 여러 기능. Windows 아래에서 모든 부분 프로그래밍 가능 |
스크립트 언어 | 피피피자스 1) PHP : 동적 웹페이지를 위한 언어 / 자체 인터프리터 제공 2) Perl : 실용성 모토 / 인터프리터 3) Python 4) JavaScript |
선언형 언어 | 1. 함수형 언어 - LISP : 수학 표기법을 나타내기 위한 목적 - 하스켈 : 패턴 맞춤, 커링, 조건제시법 등의 기능 2. 논리형 언어 - Prolog : 논리식을 기반으로 인공지능, 자연언어 처리 분야에서 사용 3. 특수분야 언어 - SQL : DBMS 관리를 위한 질의어 |
객체지향 프로그래밍의 구성요소 | 객클메 1. 객체 : 개체+속성+메서드로 이루어진 인스턴스 개속메 2. 클래스 : 객체를 표현하는 추상 데이터 타입 3. 메서드 : 객체 간 통신 |
라이브러리 | 효율적인 개발을 위해 필요한 프로그램들을 모은 집합체 (모듈과 패키지를 총칭) |
라이브러리 구성 | 도설샘 1. 도움말 2. 설치 파일 3. 샘플 코드 |
라이브러리의 모듈 | 변수, 함수 등을 모아둔 파일 |
라이브러리의 패키지 | 모듈을 구조화한 라이브러리 |
728x90
300x250
'개인공부 > 정보처리기사' 카테고리의 다른 글
[정보처리기사 실기] 8. 서버 프로그램 구현 (1) | 2024.05.03 |
---|---|
[정보처리기사 실기] 7. SQL 응용 (4) | 2024.05.03 |
[정보처리기사 실기] 5. 인터페이스 구현 (0) | 2024.05.02 |
[정보처리기사 실기] 4. 통합 구현 (0) | 2024.05.01 |
[정보처리기사 실기] 3. 데이터 입출력 구현 (2) | 2024.05.01 |