[TIL]정보처리기사 실기 /프로그래밍 언어활용-2025.10.28

2025. 10. 28. 15:22대외활동/인공지능사관학교

728x90
반응형
SMALL

정보처리기사 실기에서 자주 등장하는 C와 Java 기본 문법, 제어문, 함수 및 메서드 구조, 메모리 관리 개념을 비교하며 이해한다.
언어별 차이를 명확히 구분하고, 코드 실행 흐름을 추적할 수 있도록 한다.

 

1. 공통 개념 요약

C와 Java는 모두 구조적 프로그래밍을 기반으로 하지만, 실행 환경과 메모리 관리 방식에서 큰 차이를 가진다.

실행 방식 컴파일 후 바이너리 실행 바이트코드 생성 후 JVM에서 실행
메모리 관리 개발자가 직접 관리 (malloc/free) 자동 가비지 컬렉션
주요 특징 절차지향 언어 객체지향 언어
진입점 main 함수 main 메서드 (public static void main)
예외 처리 오류 코드 반환 try-catch 예외 처리

 

2. C 언어 핵심 정리

(1) 기본 구조

#include <stdio.h>
int main()
{
int a = 10;
printf("%d\n", a);
return0
;
}
  • #include는 헤더 파일 선언
  • main 함수가 프로그램의 시작점
  • printf, scanf 등 표준 입출력 함수 사용

(2) 변수와 자료형

C에서는 정적 타입 언어로 모든 변수는 선언 시 자료형을 지정해야 한다.

  • 기본형: int, char, float, double
  • 배열 선언: int arr[5];
  • 포인터 선언: int *p = &a;

(3) 제어문

  • 조건문: if, else if, switch
  • 반복문: for, while, do-while
  • 반복 제어: break, continue

(4) 함수 구조

int add(int x, int y) {
return x + y;
}
  • 반환형, 함수명, 매개변수로 구성
  • 값 전달(call by value)이 기본이며, 주소 전달(call by reference)을 통해 값 수정 가능

(5) 포인터와 메모리 관리

  • 포인터는 변수의 주소를 저장하는 변수
  • malloc, calloc, free로 동적 메모리 할당 및 해제 수행
  • 메모리 누수를 방지하기 위해 free() 호출이 필수

(6) 구조체(struct)

struct Student {
int id;
char name[20];
};
  • 여러 자료형을 하나의 단위로 묶을 수 있음
  • 구조체 배열과 포인터를 함께 사용하는 문제 자주 출제

3. Java 언어 핵심 정리

(1) 기본 구조

public class Main {
public static void main(String[] args) {
inta=10
;
System.out.println(a);
}
}
  • 클래스 단위로 구성
  • 모든 메서드는 클래스 내부에 존재
  • JVM이 main 메서드를 찾아 실행

(2) 데이터 타입

  • 기본형: int, double, boolean, char 등
  • 참조형: String, 배열, 객체
  • 상수: final 키워드로 선언

(3) 제어문

C와 유사하게 if, switch, for, while 구조를 사용한다.
향상된 for문(Enhanced for)이 추가되어 배열 순회에 자주 사용된다.

for (int num : arr)
{ System.out.println(num); }

(4) 메서드 구조

public int add(int a, int b)
{
return a + b; }
  • 접근제어자(public, private 등) + 반환형 + 메서드명 + 매개변수
  • 오버로딩(같은 이름, 다른 매개변수)과 오버라이딩(상속 시 재정의)이 구분되어 출제됨

(5) 클래스와 객체

 
class Student {
int id;
String name;
public void showInfo() {
System.out.println(id +
" " + name); }
}
  • 객체 생성: Student s = new Student();
  • this 키워드는 객체 자기 자신을 참조
  • static은 클래스 단위로 공유되는 변수

(6) 상속과 다형성

  • 상속: class Child extends Parent { }
  • 오버라이딩: 부모 메서드를 자식이 재정의
  • 다형성: 부모 타입 변수로 자식 객체 참조 가능

(7) 예외 처리

 
try
{
intx=10 / 0; }
catch (ArithmeticException e)
{ System.out.println(
"오류 발생"); }
  • 실행 중 오류를 안전하게 처리
  • checked exception과 unchecked exception으로 구분

4. 주요 비교 포인트 요약

 

포인터 직접 사용 제공되지 않음 (참조 개념으로 대체)
메모리 관리 수동 자동 (Garbage Collector)
예외 처리 없음 try-catch로 예외 처리
구조체/클래스 구조체로 데이터 묶음 클래스 단위의 객체지향 구조
함수 독립적 존재 가능 반드시 클래스 내 포함
접근제어자 없음 public, private, protected

5. 시험 출제 경향

  • C: 포인터, 배열, 구조체, 함수 호출 방식, 문자열 처리
  • Java: 클래스 구조, 상속·오버라이딩, 예외 처리, 메서드 호출 결과 예측
  • 공통: 제어문 로직 추적, 변수 스코프, 데이터 타입 변환

6. 학습 중 느낀 점

C 언어는 하드웨어와 가까워 메모리 구조의 원리를 이해하는 데 적합하고 Java는 객체지향 구조를 통해 프로그램의 확장성과 유지보수성을 높인다.
시험에서는 단순 문법보다 코드 실행 결과를 추론하는 문제가 많으므로 각 단계의 변수 상태를 추적하는 연습이 필요하다.
특히 Java에서는 접근제어자와 상속 구조를 C에서는 포인터와 배열 인덱스 계산을 정확히 이해해야 한다.

728x90
반응형
LIST