컴퓨터시스템기사 필기 09 — 프로그래밍 언어 활용 (C언어·객체지향·BNF)
컴퓨터시스템기사 필기 09 — 프로그래밍 언어 활용 (C언어·객체지향·BNF)
3과목 [3-2] 프로그래밍 언어 활용 파트입니다.
C언어 포인터, 객체지향 캡슐화, 기억클래스는 매 회차 출제돼요.
C언어 기초
기억 클래스 (Storage Class) ⭐⭐
auto — 자동 변수 (블록 내 기본값, 지역 변수)
static — 정적 변수 (프로그램 종료까지 유지, 초기화는 한 번)
register — 레지스터 변수 (CPU 레지스터에 저장 시도, 빠름)
extern — 외부 변수 (다른 파일에서 선언된 전역 변수 참조)
⚠️ "internal"은 기억 클래스에 속하지 않음!
포인터 연산 ⭐⭐
int *p;
int arr[5] = {10, 20, 30, 40, 50};
p = arr;
*(p+3) // p[3]과 동일 → 40 (역참조)
*p + 3 // p[0] 값에 3을 더함 → 10+3=13
p++ // 포인터를 다음 원소로 이동 (sizeof(int)만큼)
구조체 포인터 ⭐
struct Point { int x; int y; };
struct Point pt = {3, 4};
struct Point *p = &pt;
p->x // 구조체 포인터로 멤버 접근
(*p).x // 위와 동일 (p->x == (*p).x)
malloc/free ⭐
int *p = (int *)malloc(sizeof(int) * 10); // 동적 메모리 할당
free(p); // 메모리 해제
⚠️ 이중 해제(double-free) → 오류 발생!
⚠️ 메모리 누수: malloc 후 free 안 하면 메모리 누수
기출 문제
Q. C언어 기억클래스에 속하지 않는 것은?
A. internal — auto, static, register, extern이 4가지 기억클래스
Q. 다음 코드에서 *(p+3)의 값은? (p는 배열 첫 번째 원소 가리킴)
A. 배열의 인덱스 3 위치의 값 (p+3)은 p[3]과 동일
객체지향 프로그래밍 (OOP) ⭐⭐⭐
핵심 개념
캡슐화 (Encapsulation):
데이터(속성)와 메서드(행동)를 하나의 단위로 묶음
결합도 낮아짐 + 응집도 높아짐
⚠️ "캡슐화하면 결합도가 높아진다" → 오답! (낮아짐)
상속 (Inheritance):
부모 클래스의 속성·메서드를 자식 클래스가 물려받음
코드 재사용성 향상
다형성 (Polymorphism):
같은 이름의 메서드가 다른 동작을 하는 것
오버라이딩(Overriding): 부모 메서드를 자식이 재정의
오버로딩(Overloading): 같은 이름, 다른 매개변수
추상화 (Abstraction):
불필요한 세부 사항을 숨기고 핵심만 표현
인터페이스(Interface) 사용
기출 문제
Q. 캡슐화의 효과로 올바른 것은?
A. 결합도 낮아짐 + 응집도 높아짐 ("결합도 높아짐"은 오답!)
Q. 부모 클래스의 메서드를 자식 클래스에서 재정의하는 것은?
A. 오버라이딩(Overriding)
BNF (Backus-Naur Form) ⭐
프로그래밍 언어의 문법을 형식적으로 표현하는 메타언어예요.
<symbol> ::= expression
<digit> ::= 0|1|2|3|4|5|6|7|8|9
<number> ::= <digit> | <number><digit>
기호:
::= 정의된다 (is defined as)
| 또는 (OR)
<> 비단말 기호
"" 단말 기호
정렬 알고리즘 시뮬레이션
버블 정렬
매 패스마다 인접 원소를 비교·교환
패스 수: n-1번
[5, 3, 1, 4, 2]
1패스: [3,1,4,2,5] — 5가 맨 뒤로
2패스: [1,3,2,4,5] — 4가 자리 잡기
...
삽입 정렬
각 원소를 이미 정렬된 부분에 삽입
거의 정렬된 경우: O(n) — 가장 빠름!
최악(역순): O(n²)
프로그래밍 언어 특성
컴파일 언어: C, C++, Java
→ 전체 번역 후 실행, 속도 빠름
인터프리터 언어: Python, JavaScript
→ 한 줄씩 번역·실행, 수정 용이
절차지향: C (함수 중심)
객체지향: C++, Java, Python (클래스 중심)
💡 실무에서는?
보안 솔루션이나 임베디드 에이전트 개발에서 C언어 포인터와 메모리 관리가 핵심이에요. 이중 해제(double-free) 취약점은 실제 보안 취약점(CVE)으로 자주 등장하는 항목이에요. 캡슐화·상속·다형성은 마이크로서비스 아키텍처 설계 시 모듈 분리 기준으로 그대로 적용됩니다.
핵심 정리
✅ 기억클래스: auto/static/register/extern ("internal"없음!)
✅ *(p+3) = p[3] (역참조) / *p+3 = p[0] 값에 3 더함
✅ p->x == (*p).x
✅ 캡슐화 = 결합도↓ + 응집도↑ ("결합도↑"은 오답!)
✅ 오버라이딩=재정의 / 오버로딩=매개변수다름
✅ double-free = 오류!
다음 편에서는 네트워크 프로그래밍 구현 — 소켓·TCP·UDP으로 이어갑니다!
궁금한 점은 댓글로 남겨주세요!
2026.08.14 - [자격증 정복/컴퓨터시스템기사] - 컴퓨터시스템기사 필기 08 — 자료구조 활용 (스택·큐·트리·정렬·해싱)
컴퓨터시스템기사 필기 08 — 자료구조 활용 (스택·큐·트리·정렬·해싱)
컴퓨터시스템기사 필기 08 — 자료구조 활용 (스택·큐·트리·정렬·해싱)3과목 [3-1] 자료구조 활용 파트입니다.트리 순회, 정렬 시간복잡도, 해시 함수 종류는 매 회차 출제돼요.선형 자료구조스
tech.seanney.pe.kr
2026.08.12 - [자격증 정복/컴퓨터시스템기사] - 컴퓨터시스템기사 필기 07 — 컴퓨터 구조 응용 (병렬처리·Flynn분류·클라우드컴퓨팅)
컴퓨터시스템기사 필기 07 — 컴퓨터 구조 응용 (병렬처리·Flynn분류·클라우드컴퓨팅)
컴퓨터시스템기사 필기 07 — 컴퓨터 구조 응용 (병렬처리·Flynn분류·클라우드컴퓨팅)2과목 [2-3] 컴퓨터 구조 응용 파트입니다.Flynn 분류 4가지와 클라우드 서비스 모델(IaaS/PaaS/SaaS)은 매 회차 출
tech.seanney.pe.kr