학이시습

[혼공C] 1주차_완공하기 위해 열심히 해봅시다! 본문

혼공학습단/혼공C

[혼공C] 1주차_완공하기 위해 열심히 해봅시다!

dbswndud 2024. 1. 4. 02:31

혼공C 커리큘럼

Chapter 1

01. 프로그램과 C 언어

C 언어의 탄생

 

유닉스(UNIX)시스템에 사용하기 위해 1972년 B언어를 발전시켜 만들었습니다.

초기 유닉스는 대부분 어셈블리어로 작성되어 컴퓨터의 하드웨어가 바뀌면 새로 개발해야 하는 문제가 있었습니다.

이를 해결하고자 하드웨어에 상관없이 사용할 수 있는 C 언어를 만들었습니다.

 

C 언어의 장점

1. 시스템 프로그래밍이 가능합니다. 

    운영체제를 개발할 목적으로 만든 언어이므로 하드웨어를 제어하는 시스템 프로그래밍이 가능합니다.

 

2. 이식성을 갖춘 프로그램을 만들 수 있습니다. 

    표준을 지켜 만들면 컴퓨터의 종류가 다르더라도 같은 프로그램을 계속 활용할 수 있습니다.

    이식성이란? 기종이 다른 컴퓨터에서도 사용할 수 있는 프로그램

 

3. 함수를 사용하여 개별 프로그래밍이 가능합니다.

    개별 프로그래밍이 가능하므로 개발 과정에서 에러를 수정하기 쉽고 개발된 후에도 유지보수에 도움이 됩니다.

    잘 만들어진 함수는 재활용도 가능합니다.

 

02. 컴파일과 컴파일러 사용법

컴파일이란?

 

소스 파일을 기계어로 바꿔주는 과정입니다.

즉, 프로그래밍 언어로 작성한 문서를 컴퓨터가 이해할 수 있는 기계어로 바꿔주는 과정입니다.

 

컴파일 과정

1. 1단계 - 전처리

    전처리 과정은 전처리 지시자에 따라 소스 파일을 가공하는 과정입니다. 

     #include가 전처리 지시자입니다. 보통 프로그램에 필요한 함수 중 외부에 있는 함수들을 불러들입니다.

 

2. 2단계 - 컴파일

    전처리가 끝난 파일을 컴파일 하면 개체 파일이 됩니다.

    개체 파일은 기계어 파일이지만 운영체제에 의해서 실행되므로 운영체제가 인식할 수 있는 형태로 바꿔야 합니다.

 

3. 3단계 - 링크

    따라서 개체 파일에 startup code를 결합하는 과정이 필요합니다. 이 과정을 링크(link)라고 합니다.

    startup code는 프로그램을 실행하기 전, 필요한 준비작업을 수행하며 main 함수를 호출합니다.

    main 함수는 우리가 작성한 프로그램의 코드를 실행되도록 합니다. 따라서 main 함수가 꼭 있어야 합니다.

실습

단축키

새 파일 만들기: Ctrl + Shift + A

저장: Ctrl + Shift + S, Ctrl + S

컴파일: Ctrl + Shift + B, Ctrl + B 

실행: Ctrl + F5, F5

(저는 저장, 컴파일, 실행은 왠지 모르게 Ctrl을 안 눌러도 실행이 되더군요.)

 

 

확인 문제

1. 소스 파일 작성 - 전처리 - 컴파일 - 링크

2. ↓

기계어 컴퓨터가 바로 이해할 수 있는 언어로 0과 1로 기호화하여 표현하는 언어
개체 파일 소스 파일이 컴파일된 후에 생성되는 파일로 바로 실행시킬 수 없는 파일
링크 개체 파일에 startup code를 붙여 실행 파일을 만드는 과정

 

 

Chapter 2

01. C 프로그램의 구조와 데이터 출력 방법

함수란?

 

함수는 일정한 기능을 수행하는 코드 단위를 의미합니다.

큰 프로그램일수록 함수를 많이 사용하지만, 간단한 프로그램은 main 함수만으로 만들기도 합니다.

main 함수는 프로그램의 시작을 의미하며 프로그램에 반드시 있어야 합니다.

 

main 함수 구조

int main(void)
{
    10 + 20;	// 10과 20을 더한다
    return 0;	// 프로그램 종료
}

 

1행부터 4행까지 main 함수이며, 머리(head)와 몸통(body)로 구성됩니다.

머리는 함수 원형이라고 하며 함수의 이름과 필요한 데이터 등을 표시합니다. (1열)

몸통은 {}이며, 함수에서 실행할 일들을 작성합니다.

 

몸통에 코드를 쓰는 규칙

1. 세미콜론(;)을 사용하여 문장의 끝을 표시합니다.

    컴파일러의 마침표는 세미콜론입니다.

    세미콜론이 없으면 세미콜론이 보이는 문장까지 한 문장으로 인식하므로 에러가 발생합니다.

 

2. 한 줄에 한 문장씩 작성합니다.

    한 줄에 한 문장씩 작성하는 편이 보기 좋고 읽기도 쉽습니다. (가독성)

 

3. 일정한 간격으로 들여씁니다.

    가독성..

 

주석문

주석문은 소스 코드를 설명하는 내용을 담습니다.

주석문은 전처리 단계에서 모두 제거되므로 컴파일되지 않습니다. 사람이 읽고 수정하기 쉽도록 사용하는 것이므로 자세히 넣는 것이 좋습니다.

- /* ~ */ : /* 과 */ 사이의 모든 내용을 주석처리를 합니다.

- // : // 부터 해당 줄의 끝까지 주석 처리를 합니다.

 

실습

출력 함수 : printf();

정수 출력: %d

실수 출력: %lf

 

제어 문자 출력 ↓

\n (개행, new line) 다음 줄로 이동
\t (탭, tab) 출력 위치를 다음 탭 위치로 이동
\b (백스페이스, backspace) 한 칸 왼쪽으로 이동
\r (캐리지 리턴, carriage return) 맨 앞으로 이동
\a (알럿 경보, alert) 벨소리

 

확인 문제

1. 다음 중 설명이 옳지 못한 것을 고르세요.

    ①. 프로그램에는 하나의 main 함수가 있어야 한다.

    ②. 세미콜론으로 구분한기만 하면 한 줄에 여러 문장을 작성할 수 있다.

    ③. /* */ 주석문과 달리 // 주석문은 main 함수 안에서만 사용할 수 있다.

    ④. printf 함수는 문자열 이외에 정수나 실수도 출력할 수 있다.

 

2. 프로그램의 실행결과가 다음과 같도록 변환 문자를 알맞게 적어보세요.

#include <stdio.h>
int main(void){
	printf("____을 ____로 나누면 ____입니다.", 1, 2, 0.5);
    return 0;
}

    %d, %d, %lf

 

3. 다음 프로그램의 실행결과를 적어보세요.

#include <stdio.h>
int main(void){
/* 
    printf("Hello world!\n);
*/
    printf("Be\rHappy!\nBaby");
    return 0;
}

    Happy!

    Baby

 

02. 수와 데이터 표현 방법

정수 상수 표현법

정수 상수는 기본적으로 아라비아 숫자 0~9, +, -, 기호를 사용합니다.

그리고 이를 10진수, 8진수, 16진수로 표현할 수 있습니다.

 

진법별 수 표현 방법

10진수 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
8진수 0 1 2 3 4 5 6 7 10 11 12 13 14 15 16 17
16진수 0 1 2 3 4 5 6 7 8 9 A B C D E F

 

10진법은 0~9까지 10개 숫자를 사용합니다.

8진법은 0~7까지 사용하므로 8을 표현하면 자릿수가 올라가서 10(일영)이 됩니다.

16진법은 0~9까지 10개의 숫자에 A~F까지 6개 영문자를 포함하여 총 16개의 단위 숫자를 사용합니다. 

 

C 언어의 진법 표기 방법

8진수는 숫자 앞에 0, 16진수는 0x를 붙여 구분합니다.

10진수 8진수 16진수
12 014 0xc

 

위처럼 쓰지 않고 %d 대신, 8진수는 %o, 16진수는 %x 또는 %X를 사용해도 됩니다. 

 

실수 상수 표현법

이공계열에서 다루는 크고 작은 숫자는 지수 형태(지수 표기법)로 표기합니다.

소수점 형태 지수 형태 ×10을 e로 표현,
지수는 그 옆에 숫자로 표기
C 언어 표기법
0.0000314 3.14 × 10‾⁵ 3.14e-5
0.314 × 10‾⁴ 0.314E-4
31.4 × 10‾⁶ 31.4e-6

 

지수 형태는 무수히 많은 방법으로 표현이 가능합니다. 그중 소수점 앞에 0이 아닌 유효 숫자 한 자리를 사용하여 지수 형태로 바꾼 것을 정규화 표기법이라고 합니다. (초록색으로 색칠한 표기법이 정규화 표기법입니다.)

printf 함수가 실수를 지수 형태로 출력할 때는 기복적으로 정규화 표기법을 사용합니다. 

 

실습

지수 형태로 출력 : %le

 

문자와 문자열 상수 표현법

문자 - '작은따옴표'

문자열 - "큰따옴표"

 

실습

문자 상수 출력 : %c

문자열 상수 출력 : %s

 

확인 문제

1. 각 진법에 맞게 빈칸을 채우세요.

10진수 8진수 16진수 2진수
11 13 B 1011
17 21 27 10001
26 32 1A 11010
65 101 41 1000001

 

2. 다음 중 정수 상수는 '정', 실수 상수는 '실'이라고 써보세요,

-10 1e4 -1. -1.5e-3
+032 3.14 0xff    

 

3. 자신의 학번, 이름, 학점을 출력하는 프로그램을 작성하세요. 학번은 정수, 이름은 문자열, 학점은 문자 상수를 사용합니다.

#include <stdio.h>
int main(void){
	printf("학번 : _____\n", 32165);
    _______________________________
    _______________________________
   }

%d

printf("이름 : %s\n", 홍길동);

printf("학점 : %c\n", 'A');