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