Programming Language/C언어 기본문법

<어서와 C언어는 처음이지!> 총 복습 (Ch01~Ch17)

lxvxxu 2024. 7. 9. 00:02

C언어

교재 범위: Chapter01 ~ Chapter17


 

 

포인터

메모리

구조체

 

 

반복문: while, do~ while, break, continue

※ 반복문 종료 - break;

    반복문 처음으로 돌아가기 - continue;

선택문: if, if~else, switch

switch (제어식)
{
   case (c1) :
   case (c2) : 
    . . .
   default:
}

 

※ switch 변수는 정수문자 변수만 가능하다. float나 double형(부동소수점 변수형)를 사용하면 안 된다.

 

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int main() {

	int n, year = 2015;

	printf("월을 입력하시오: ");
	scanf(" %d", &n);

	switch (n)
	{
		case(1): case(3): case(5): case (7): case (8) : case (10) : case (12) :
			printf("%d월은 %d일까지 있습니다.\n", n, 31);
			break;
		case(4): case(6): case(9): case(11):
			printf("%d월은 %d일까지 있습니다.\n", n, 30);
			break;
		case (2):
			if (((year % 4 == 0) && !(year % 100 == 0)) || (year % 400 == 0))
			{
				printf("%d년 %d월은 %d일까지 있습니다.\n", year, n, 29);
				break;
			}
			else
			{
				printf("%d년 %d월은 %d일까지 있습니다.\n", year, n, 28);
				break;
			}
			// 윤년: 4의 배수 or 400의 배수, 100의 배수는 윤년이 아님(400의 배수 제외)

		default:
			printf("잘못된 월입니다.\n");
			break;
	}


	return 0;
}

 

- Program: 컴퓨터에게 특정한 작업을 수행하게 하는 자세한 명령어들의 리스트

- Compiler

 

- 디버깅: 오류를 없애는 과정

오류(error) = 버그(bug)

 

- main()

 

- 자료형(data type): 문자, 정수(integer), 부동소수점수(실수)(floating-point number)

 

- 이스케이프 시퀀스(escape sequence)

컴퓨터와 주변 기기의 상태를 바꾸는 데에 쓰이는 일련의 문자열

 

 

- 변환 문자

%d, %f, %c, %s

 

- 변수(variable) vs 리터럴 데이터(literal data)

 

※ C언어는 문자열을 저장하는 변수가 없는 프로그래밍 언어이다.

※ 변수명 지을 때: 첫 글자는 반드시 알파벳 문자로 시작할 것 (숫자X, underline X)

 

 

- 중첩 문장(nested statement)


 

Chapter05_실습

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
 
int main() {
 
    int TV_num, Tb_num, S_num;
    TV_num = 3;
    Tb_num = 2;
    S_num = 5;
 
    float TV_m = 1320.0;
    float Tb_m = 299.0;
    float S_m = 129.0;
    float sum = 0;
 
    sum = TV_num * TV_m + Tb_num * Tb_m + S_num * S_m;
 
    printf("%d대의 TV와, %d개의 태블릿, %d개의 면도기.\n", TV_num, Tb_num, S_num);
    printf("총 금액은 $%.2f\n", sum);
 
    return 0;
}
cs

 

 


 

전처리기 지시어

#include <filename>

Compiler를 설치하면 설치 프로그램은 하드 디스크의 특정한 위치에

Compiler가 기본 제공하는 다양한 #include 파일들을 저장한다.

기본 제공된 파일들을 포함시키려면 '<'와 '>'를 사용하는 #include 형식을 사용해야 한다.

※ 기본으로 제공하는 파일들을 header 파일이라고 부른다. (.h 확장자)

 

#include "filename"

개발자들이 자기 자신만의 header 파일을 작성할 때는

큰따옴표가 있는 전처리기 지시어의 두 번째 형식을 사용하여야 한다.

 

큰따옴표를 사용하면 C는 먼저 프로그램이 저장된 디렉토리를 탐색한다.

그 이후 기본 제공된 #include 디렉토리를 탐색한다.

이러한 탐색 순서로 인해 기본 제공된 header 파일과 동일명의 header파일을 작성할 수 있다.

또한 직접 작성한 header파일이 C의 header 파일보다 우선하여 사용된다.

 

※ 언제 사용?

프로그램에서 반복적으로 사용하는 문장들이 있을 때에는 헤더 파일에 작성하는 것이 편리하다.

 

#define 전치리기 지시자

#define 전처리기 지시자는 상수(constant, 변경되지 않는 값)를 정의한다.

상수(constant) = literal

#define 전처리기 지시자는 리터럴에 이름을 붙여준다.

리터럴에 이름이 붙으면 C 용어로 기호 상수(named constant) or 정의된 상수(defined constant)라고 한다.

 

#define 지시자의 형식은 다음과 같다.

  #define CONSTANT constantDefinition

  = "프로그램에서 CONSTANT가 나타나는 위치를 찾아서 contstantDefinition으로 교체하라."

 

※ define 지시자를 통해 정의하는 상수(constant) 이름으로는 대문자를 사용하자. 이는 변수와 구분하기 위함이다.

 


 

 


 

연산자 (operator)

- 대입 연산자 (assignment operator)

 

- 복합 연산자

 *=, \=, %=, +=, -=

※ 연산 우선 순위에 주의할 것

    복합 연산자는 우선 순위가 낮다.

    예를 들어 다음과 같은 코드가 있다면 덧셈부터 수행되므로 유의할 것

 

1
2
total = 5;
total *= 2 + 3;
cs

 

- 관계 연산자

 ==, >, <, >=, <=, !=

 

- 논리 연산자

  관계 연산자는 단순히 두 개의 값이 어떻게 관계(비교)되어 있는지만을 검사한다.

  반면 논리 연산자는 이런 관계 연산자들을 결합한다.

 

&& 논리곱(AND)

|| 논리합(OR)

! 논리부정(NOT)

 

 

- 조건 연산자

  relation ? trueStatement : falseStatement;

 

- 증감 연산자

※ 같은 줄에 있는 다른 연산을 종류한 후에 증감 연산이 이루어진다.

 

n = 1++ * j;

 

위와 같은 코드가 있다면 선곱셈, 후증감

 

 

연산자의 우선 순위 (★암기)

 

 


 

형변환 (type casting)

형변환에는 2가지 종류가 존재하는데 여기서는 한 가지만 다룬다.

 

(dataType)value

 

※ 여러 가지 자료형을 혼합할 때 자동적으로 발생하는 반올림 문제를 줄이려면

    수식에 있는 모든 변수와 리터럴을 동일한 형으로 형변환하는 것이 좋다.

 

salaryBonus = salary * (float)age / 150.0;

 

위와 같이 사용될 수 있다.

주의해야 할 것은 age자체가 부동소수점 변수로 바뀌는 것이 아니라는 점이다.

age의 값은 이 줄에서의 계산을 위하여 일시적으로 잠깐 변경되는 것 뿐이다.

 

value = (flaot)(number - 10 * yrsService);

 

위와 같이 일부 변수값 뿐 아니라 전체 수식값을 형변환 할 수도 있다.

※ C는 자동적인 float형으로 형변환한다. (자동 형변환)

만약 value가 float형으로 정의되었다면 C는 수식의 결과값을 value에 저장하기 전에 float형으로 형변환한다.

하지만 수식을 명확하게 정리하기 위해서 위와 같은 자동 형변환에 의지하지 않고 수동으로 수식을 강제 형변환하자.

 


for (초기식; 조건식; 증감식)


exit()

프로그램을 중간에 종료하려면 exit() 함수를 사용한다.

exit() 안의 괄호에 넣는 값은 운영체제로 반환된다.

대부분의 프로그래머들은 0이나 1을 넣는다.

exit()를 사용하려면 <stdlib.h>를 #include를 이용하여 추가하면 된다.