프로그래밍 교과 소개

프로그래밍부터 알고리즘까지, 미래를 만드는 컴퓨터 과학의 세계

C / C++ 이란?

시스템 프로그래밍의 핵심

C는 1972년에 만들어진 컴퓨터 언어로, 순서대로 명령을 실행하는 간단한 방식입니다. C++는 1983년에 C를 발전시켜 만든 언어로, 더 복잡한 프로그램을 쉽게 만들 수 있게 했습니다. 이 두 언어는 컴퓨터 운영체제, 전자기기, 게임 프로그램 같은 걸 만들 때 많이 쓰입니다.

뛰어난 성능과 효율성

컴파일 언어로 실행 속도가 매우 빠르며, 메모리를 직접 제어할 수 있어 하드웨어 자원을 효율적으로 사용할 수 있습니다. 포인터를 통한 저수준 메모리 접근이 가능합니다.

풍부한 기능과 라이브러리

C++는 STL(Standard Template Library)과 템플릿 시스템을 제공하며, 객체지향 프로그래밍, 제네릭 프로그래밍을 지원합니다. 수많은 라이브러리와 프레임워크가 존재합니다.

교육과정 소개

I. 프로그래밍 개요

교육 목적

    이 단원에서는 프로그래밍의 개념과 중요성에 대해 알아볼 수 있다. 또한, C 언어가 왜 프로그래밍의 시작으 로 선택되는지, 그 이유와 중요성에 대해 이해할 수 있다.

01. 프로그래밍 언어의 종류와 특징

  • 프로그램의 이해
  • 프로그램의 실행 환경
  • 프로그래밍 언어

02. 프로그래밍의 절차

  • 프로그래밍 절차의 중요성
  • 체계적인 프로그래밍의 절차

03. 알고리즘

  • 알고리즘의 이해
  • 알고리즘 표현 방법
  • 알고리즘 설계와 구현

04. 프로그램 개발 환경

  • 프로그램 개발 환경의 필요성
  • 통합 개발 환경 사용
  • 공유와 협업

II. 프로그래밍의 기초

교육 목적

    C 프로그램의 기본 문법과 데이터 유형, 연산자, 제어 구조 등을 다룬다. 여기서는 C 언어의 기본을 익히고 간단한 프로그램을 작성할 수 있는 기초를 다지고, 합수와 배열 등의 주제도 다루게 된다.

01. 변수와 자료형

  • C 프로그래밍 이해
  • 변수와 자료형
  • 배열

02. 입력과 출력

  • 입출력 함수의 이해
  • 출력 함수
  • 입력 함수

03. 연산자

  • 연산자의 이해
  • 다양한 연산자
  • 연산자 우선순위

04. 제어문

  • 제어 구조
  • 선택 구조의 종류
  • 반복 구조의 필요성
  • 반복 구조의 종류
  • break, continue
  • 중첩 제어 구조

05. 함수

  • 함수의 이해
  • 사용자 정의 함수
  • 지역 변수와 전역 변수
  • 재귀 함수
  • 라이브러리 함수

06. 파일 처리

  • 파일
  • 텍스트 파일 읽고 쓰기
  • 이진 파일 읽고 쓰기

III. 프로그램 설계와 구현

교육 목적

    프로그램 설계와 구현프로그램을 설계하고 구현하는 방법에 대해 다룬다. 프로그래밍 과정에서 문제 해결 능력을 키우고, 프로그램을 효율적으로 작성하는 방법을 익혀 실제로 프로그램을 만들어보며 이론을 실전에 적용하는 경험을 쌓는다.

01. 프로그램 설계와 절차

  • 요구 사항 수집 및 분석
  • 프로그램 설계
  • 프로그램 구현
  • 프로그램 테스트

02. 프로그래밍 실제

  • 컴퓨팅 사고력 키우기 - 기본
  • 컴퓨팅 사고력 키우기 - 응용
  • 프로그래밍 실전 도전하기

고교학점제 운영에 관련 설명

고교학점제에서 프로그래밍의 위치

진로 선택 과목 + 교향 과목이 아닌 교과는 모두 5등급제

고교학점제와 프로그래밍의 연결점

  • 진로 맞춤 선택: 소프트웨어, 인공지능, 정보보안 등의 진로에 따라 프로그래밍 과목을 선택 가능
  • 심화 학습 연계: 정보 → 프로그래밍 → 인공지능 등의 과목을 순차적으로 이수하며 역량 강화 가능

평가와 이수 기준

  • 프로그래밍은 성취평가제(A~E 등급)로 평가
  • 1단원 = 50분 수업 × 17주, 일반적으로 5단원 전후로 운영
  • 학기당 일정 학점 이상 이수 필요, 누적 학점이 졸업 요건 충족에 필수

대학교별 프로그래밍 과목 반영 예시

  • 학생부 교과 전형: 일부 대학에서 프로그래밍 과목을 성적에 정량 반영하거나 가중치(1.5~2.0) 부여
  • 학생부 종합 전형: 프로그래밍 과목 이수 여부, 세특 활동, 연계 과목 이수 등이 전공적합성 평가에 활용됨
  • 특기자/소프트웨어 인재 전형: 프로그래밍 실력, 프로젝트, 대회 참여 등과 함께 과목 이수도 중요한 평가 요소
  • 서울대, 한양대 등: 성적 직접 반영은 아니지만, 컴퓨터공학·SW학과 지원 시 전공 관심도 판단에 큰 영향
  • 한국공학대, 인하대 등: 프로그래밍 과목 성적을 정량 반영하거나 계열 적합성 판단 기준으로 활용

C / C++와 Python의 차이점

항목 C / C++ Python
언어 유형 컴파일 언어(실행 전에 전체 번역) 인터프리터 언어(실행하면서 한 줄씩 번역)
실행 속도 매우 빠름 상대적으로 느림
문법 복잡도 복잡하고 엄격함 간결하고 쉬움
메모리 관리 직접 관리 필요 자동 가비지 컬렉션
사용 분야 시스템, 임베디드, 게임엔진 AI, 데이터분석, 웹 개발

C/C++는 성능이 중요할 때 사용되며, Python은 개발 속도와 생산성이 중요한 분야에 적합합니다.

C/C++와 Python의 Hello World 출력 예시

예시를 통해 C/C++와 Python이 어떻게 다르게 코드를 작성하는지 알 수 있습니다.

C/C++ 예시

1 #include <stdio.h>
2 
3 int main() {
4     printf("hello world");
5     return 0;
6 }
            
<출력값>
hello world

Python 예시

1 print("hello world")
2
3
4
5
6
            
<출력값>
hello world

교과과정 실무 적용

LoRa 무선통신 프로젝트

무선통신 센서 데이터 실시간 모니터링 IoT

📚 교과과정 연계

  • 함수: 센서 데이터 읽기, LoRa 통신 함수 모듈화
  • 조건문: 센서 값 유효성 검증 및 오류 처리
  • 반복문: 주기적 데이터 수집 및 전송 루프
  • 자료구조: 센서 데이터 배열 관리 및 문자열 처리
  • 네트워크: WiFi 연결 및 웹 서버 통신

💻 핵심 구현 내용

// DHT11 센서 데이터 읽기
float humidity = dht.readHumidity();
float temperature = dht.readTemperature();

// LoRa 통신으로 데이터 전송
String data = String(temperature) + "@" + String(humidity);
Serial2.println("AT+SEND=" + lora_RX_address + "," + 
                String(data.length()) + "," + data);

// 수신된 데이터 파싱 및 Google Sheets 업로드
if (Process_LoRa_Received_String(receivedString)) {
    sendtoSheets(); // 성공 시 클라우드 전송
}

C언어 미로 게임

게임 개발 알고리즘 사용자 인터페이스 터미널 제어

📚 교과과정 연계

  • 2차원 배열: 미로 맵 데이터 구조 설계
  • 함수: 게임 로직 모듈화 (이동, 출력, 충돌 검사)
  • 조건문: 플레이어 이동 가능성 판단
  • 반복문: 게임 메인 루프 및 맵 출력
  • 포인터: 효율적인 메모리 관리

💻 핵심 구현 내용

// 플레이어 이동 함수
void movePlayer(int dx, int dy) {
    int newX = playerX + dx;
    int newY = playerY + dy;
    
    // 이동 가능성 검사
    if (map[newY][newX] == ' ' || map[newY][newX] == 'E') {
        map[playerY][playerX] = ' ';  // 이전 위치 비우기
        playerX = newX;
        playerY = newY;
        if (map[newY][newX] != 'E') {
            map[playerY][playerX] = '@';  // 새 위치 표시
        }
    }
}

실제 구현된 프로젝트

📡

LoRa 무선통신 Gateway

ESP32를 활용한 LoRa 무선통신 게이트웨이입니다. 여러 센서 노드로부터 온습도 데이터를 수신하고, WiFi를 통해 Google Sheets로 실시간 데이터를 전송합니다. OLED 디스플레이를 통해 수신 상태를 실시간으로 확인할 수 있습니다.

ESP32 LoRa WiFi OLED Google Sheets
소스코드 보기 →
🌡️

LoRa 센서 노드

DHT11 센서를 이용한 온습도 측정 노드입니다. 측정된 데이터를 OLED 화면에 표시하고, LoRa 통신을 통해 게이트웨이로 전송합니다. 저전력 설계로 배터리 구동이 가능하며, 60초 간격으로 데이터를 전송합니다.

DHT11 LoRa OLED 저전력
소스코드 보기 →
🎮

터미널 미로 게임

C언어로 구현된 콘솔 기반 미로 게임입니다. 101x83 크기의 복잡한 미로를 탐험하며 출구를 찾는 게임으로, 키보드 입력을 통해 플레이어를 조작합니다. 터미널 제어 기술과 게임 로직을 학습할 수 있습니다.

C언어 터미널 제어 게임 로직 사용자 입력
소스코드 보기 →
🔗

통합 IoT 시스템

위의 세 프로젝트를 결합한 완전한 IoT 시스템입니다. 다수의 센서 노드가 LoRa 통신으로 데이터를 전송하고, 게이트웨이에서 클라우드로 업로드합니다. 실시간 모니터링과 데이터 분석이 가능한 종합 시스템입니다.

IoT 클라우드 실시간 모니터링 데이터 분석
통합 가이드 보기 →

Q&A 및 문의

궁금한 점이 있으시면 언제든지 연락주세요!

제작자

20402 권다니엘

Instagram

@dzoe_08

Email

dzoek08@gmail.com

더 자세한 정보는 진향옥 선생님과 이상옥 선생님께 문의하세요.