[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
'대외활동 > 인공지능사관학교' 카테고리의 다른 글
| [TIL]AI 비서 이사 준비 프로젝트 기획 정리-2025.11.01 (0) | 2025.11.04 |
|---|---|
| [AI Crew]기업연계 프로젝트 기획서 작성 과정과 팁 (0) | 2025.10.31 |
| [TIL]정보처리기사 실기 /인터페이스 구현-2025.10.27 (0) | 2025.10.27 |
| [TIL]정보처리기사 실기/통합구현-2025.10.24 (0) | 2025.10.24 |
| [TIL]정보처리기사 실기/화면설계-2025.10.23 (0) | 2025.10.23 |