case별로 특정 코드 실행하기

switch (식)
{
    case 상수값1; 코드1; break;
    case 상수값2; 코드2; break;
    case 상수값3; 코드3; break;

    default: 코드n;
}

 

(식)

  •  계산 결괏값이 정수형인 것만 가능하며, 'case'뒤에는 상수만 한 개 올 수 있음.(상수만 있는 식은 가능)
  • 문자 상수 'A'의 ASCII코드는 01000001이며, 논리값 참, 거짓은 정수 1, 0에 해당한다. 이처럼 문자 상수는 문자를 표현하는 코드 값이 정수이므로 '식' 결과가 문자형인 것도 사용 가능하며, '식' 결과가 논리값인 식 또한 가능하다.
  • 'case'값 역시 문자 상수나 논리값에 해당하는 정수를 사용하여 case 'A'; , case'+'; , case 1;, case 0; 으로 사용가능.

실행과정

  • 식을 계산하여 결괏값 구하기
  • 결괏값과 case 뒤의 값을 순서대로 비교하여 처음으로 일치하는 값을 만나면 그 뒤의 코드를 실행
  • 'break'를 만나면 switch문을 종료하고 다음 코드를 실행
  • 모든 'case'의 값과 비교하여도 같은 값이 없다면 'default'뒤의 코드를 실행
  • 'default: 코드n ' 부분은 필요하지 않다면 생략가능

주의

  • 특정 'case'의 코드를 실행할 때 'break'가 없으면 자동으로 다음 'case' 뒤의 코드를 실행하므로 switch문을 끝내고 싶다면 'break'를 사용해야함.
  • 위의 특징을 이용하면 다음과 같이 break를 사용하지 않음으로써 (식)이 상수1이거나 상수2이거나 상수3일 때 같은 코드를 실행할 수 있음.
case 상수1:
case 상수2:
case 상수3: 명령문1; 명령문2; ....; 명령문n; break;
  • 'case 상수1 || 상수2 || 상수3: 코드; break;'는 상수 중 한 개라도 0이 아닌 값이 있다면 or 연산 결과가 1이 되어 'case1; 코드; break;'와 같은 결과가 된다.

 

예시

# pragma warning(disable : 4996)
# pragma warning(disable : 6031)
# include <stdio.h>

int main()
{
	int n;

	printf("주민등록번호 일곱 번째 숫자는?");
	scanf("%d", &n);

	switch (n)
	{
		case 1: printf("1900년대 출생 남자입니다.\n"); break;
		case 2: printf("1900년대 출생 여자입니다.\n"); break;
		case 3: printf("2000년대 출생 남자입니다.\n"); break;
		case 4: printf("2000년대 출생 여자입니다.\n"); break;

		default: printf("고려 대상이 아닙니다.\n");
	}

	return 0;
}

 

# pragma warning(disable : 4996)
# pragma warning(disable : 6031)
# include <stdio.h>

int main()
{
	int n;

	printf("주민등록번호 일곱 번째 숫자는?");
	scanf("%d", &n);

	switch (n)
	{
		case 1: 
		case 3: printf("남자입니다.\n"); break;
		case 2: 
		case 4: printf("여자입니다.\n"); break;

		default: printf("고려 대상이 아닙니다.\n");
	}

	return 0;
}

'프로그래밍 > C,C++' 카테고리의 다른 글

C,C++ - 제어문 (while, do~while문)  (0) 2024.04.08
C,C++ - 반복문  (0) 2024.04.03
C,C++ - 제어문(if)  (0) 2024.04.03
C,C++ - 다양한 연산  (0) 2024.04.03
C,C++ - 입력함수 scanf()  (0) 2024.04.02

if문

 

if는 직관적이기에 예시로 습득하는 것이 좋을 듯하다.

 

예시

# pragma warning(disable : 4996)
# pragma warning(disable : 6031)
# include <stdio.h>

int main()
{
	int year;

	printf("2월이 며칠까지 있는지 궁금한 연도: ");
	scanf("%d", &year);

	printf("%d년 2월은 ", year);

	if ((year % 400 == 0) || (year % 4 == 0) && (year % 100 != 0))
	{
		printf("29일까지 있습니다.\n");
	}
	else
	{
		printf("28일까지 있습니다.\n");
	}

	return 0;
}

 

{} 안의 코드는 한 탭 안으로 들여쓰기를 하는 것이 보기 좋다.

{}코드 블록은 코드가 한 문장이라면 {} 생략 가능하다.

 

주의!

if(조건);이나 else;와 같이 뒤에 ;을 사용하면 ';'만 있는 빈 문장이 있는 것으로 간주하여 잘못된 결과가 나오거나 오류가 발생한다.

 

 

if의 중첩

# pragma warning(disable : 4996)
# pragma warning(disable : 6031)
# include <stdio.h>

int main()
{
	int month;

	printf("몇 월? ");
	scanf("%d", &month);

	if (month <= 6)
	{
		if (month <= 3)
		{
			printf("상반기 일사분기");
		}
		else
		{
			printf("상반기 이사분기");
		}
	}
	else
	{
		if (month <= 9)
		{
			printf("하반기 삼사분기");
		}
		else
		{
			printf("하반기 사사분기");
		}
	}

	return 0;
}

 

else 바로 뒤에 if가 있는 구조

# pragma warning(disable : 4996)
# pragma warning(disable : 6031)
# include <stdio.h>

int main()
{
	int year;

	printf("학년은? ");
	scanf("%d", &year);

	if (year == 1)
	{
		printf("Freshman");
	}
	else if (year == 2)
	{
		printf("Sophomore");
	}
	else if (year == 3)
	{
		printf("Junior!");
	}
	else if (year == 4)
	{
		printf("Senior!");
	}
	else
	{
		printf("잘못된 학년");
	}

	return 0;
}

 

 

'프로그래밍 > C,C++' 카테고리의 다른 글

C,C++ - 반복문  (0) 2024.04.03
C,C++ -switch문  (1) 2024.04.03
C,C++ - 다양한 연산  (0) 2024.04.03
C,C++ - 입력함수 scanf()  (0) 2024.04.02
C,C++ - 필드폭과 정밀도 지정  (0) 2024.04.02

기본연산자

산술연산자 기능 사용 예 연산의 결과
+ 더하기 5+3 8
- 빼기 5-3 2
* 곱하기 5*3 15
/ 몫 구하기(정수일 때만) 5/3 1
나머지 구하기 5%3 2

 

증감연산자

종류 증감연산자 연산의 결과
전위형(prefix) ++x x값을 먼저 1증가시킨 후 연산에 사용되며 결과값은 1 증가한 x값이다.
--x x값을 먼저 1감소시킨 후 연산에 사용되며 결과값은 1 감소한 x값이다.
후위형(postfix) x++ x값을 먼저 연산에 사용한 후, 값을 1증가시키며 결과값은 증가하지 않은 원래의 x값이다.
x-- x값을 먼저 연산에 사용한 후, 값을 감소시키며 결과값은 감소하지 않은 원래의 x값이다. 

 

예시

#pragma warning (disable:4996)					
#pragma warning (disable:6031)	
#include <math.h>
#include <stdio.h>		

int main()
{
	int x = 10, y = 20, z = 30;

	x = ++x * 5;
	y = y++ * 5;
	z = 5 - --z;

	printf("x = %d\n", x);
	printf("y = %d\n", y);
	printf("z = %d\n", z);

	return 0;
}

 

결과

 

복합대입연산자

파이썬에서 사용했던 복합연산자와 비슷하다. (+=, -=, *=)

cf) 복합 대입 연산자를 다른 연산자와 함께 사용할 때는 주의해야한다. 복합 대입 연산자는 다른 연산자에 비해 우선 순위가 낮으므로 생각지 못한 결과가 나올 수 있다.

 

예시

int x = 2;
x = x * 3 + 2; //결과 : 8
x *= 3 + 2;  //결과: 10

 

 

관계연산자

관계연산자 의미 연산의 결과
x > y x가 y보다 큰가? 0
x >= y x가 y보다 크거나 같은가? 0
x < y x가 y보다 작은가? 1
x <= y x가 y보다 작거나 같은가? 1
x == y x가 y와 같은가? 0
x != y x가 y와 같지 않은가? 1

 

+ C언어에서 참과 거짓

  • 1) 논리값을 수치로 변환하는 규칙
  • 2) 수치를 논리값으로 변환하는 규칙

1)

논리값 수치
1
거짓 0

 

2)

수치 논리값
0이외의 값
0 거짓

 

 

논리연산자

x y 논리곱(AND) 논리합(OR) 논리부정(NOT)
x && y x || y !x
0 0 0 0 1
0 1 0 1 1
1 0 0 1 0
1 1 1 1 0

 

 

논리연산자의 단축 평가

 

(2 > 5) && (x < 3)

> && 앞의 논리값 (2 > 5)이 거짓이므로 뒤에 어떤 논리값이 나타나더라도 전체 연산의 결과는 거짓이다. 따라서 더 이상 뒤의 논리값(x < 3)을 평가하지 않는다. 

 

(2 < 5) || (x < 3)

> || 앞의 논리값 (2 < 5)이 참이므로 뒤에 어떤 논리값이 나타나더라도 전체 연산의 결과는 거짓이다. 따라서 더 이상 뒤의 논리값(x < 3)을 평가하지 않는다.

 

예시

#pragma warning (disable:4996)					
#pragma warning (disable:6031)	
#include <math.h>
#include <stdio.h>		

int main()
{
	int x = 1, y = 2;
	int result = (x < 10) || (y = x * 3);

	printf("%d\n", y);

	return 0;
}

결과

 

우리는 y에 3이 찍힐 것이라고 기대했는데 출력해보니 2가 나왔다.

result의 (x < 10)에서 이미 참이기 때문에 뒤에 연산을 해주지 않은 것이다. 

(|| 가 &&로 바뀌면 3이 출력된다.)

 

형변환 연산자

자동형변환

자동 형변환은 프로그래머가 따로 지정하지 않아도 컴파일러에 의해서 자동으로 처리되는 형변환

예를 들어 '정수 + 실수'와 같이 피연산자의 데이터 형이 다르면 자동으로 형변환이 일어나서 피연산자의 데이터형을 같게 만든 다음 필요한 연산을 수행한다. 이때, 정수형 연산은 char, short형은 int형으로 실수형 연산은 float형을 double형으로 자동변환해서 처리한다. 이처럼 작은 크기(1byte, 2byte)의 데이터형을 큰 크기(4byte)의 데이터형으로 변환하는 것을 형넓힘 변환이라고 한다. 

int i = 100;
float j = 1.23;
printf("%.2f", i + j); //i는 float로 자동 변환되어 float + float 연산을 수행한다.

 

대입연산의 경우 형좁힘이 발생할 수 있다.

int i;
i = 3.14; 

// 3.14를 int형으로 변환하면서 소수점이하를 잘라버리고 변수 i에 저장한다.
// 이와 같이 형변환 시 값의 일부가 사라질 때는 컴파일러가 경고 메시지를 보여준다.

 

강제형변환 

(int) 3.14
(float) sum

 

예시

# pragma warning(disable : 4996)
# pragma warning(disable : 6031)
# include <stdio.h>

int main()
{
	int x = 7, y = 2;
	double result = (double)x / y; 
	int c = (double)x / y;
	printf("(float)x / y = %.1lf\n", (float)x / y);

	x = 5.4 + 3.0;
	y = (int)5.4 + (int)1.2;
	printf("x = 5.4 + 3.0 = %d\n", x);
	printf("y = (int)5.4 + (int)1.2 = %d\n", y);
	printf("%.1lf\n", result);
	printf("%d", c);

	return 0;
}

결과

 

연산자의 우선순위

수학의 연산을 따른다.

(우선순위 중간에 빈 숫자들은 지금 이걸 배우는 단계에서는 크게 중요하지 않아 나중에 다뤄보고자한다.)

우선순위 분류 연산자 결합규칙
1 단항 () [] ->
2 ++ -- + - sizeof ~ ! * &
3 산술 * / %
4 + -
6 관계  < <= > >=
7 == !=
11 논리 &&
12 ||
14 대입 = += -= *= /= %= &= |= ^=
<<= >>=

 

 

예제

시간 계산 프로그램

# pragma warning(disable : 4996)
# pragma warning(disable : 6031)
# include <stdio.h>

int main()
{
	int sec;

	printf("초(sec) 입력 : ");
	scanf("%d", &sec);

	int s, m, h;

	s = sec % 60;
	m = sec / 60 % 60;
	h = sec / 60 / 60;
	
	printf("입력한 %d초는 %d시간 %d분 %d초입니다.", sec, h, m, s);

	return 0;
}

결과

 

'프로그래밍 > C,C++' 카테고리의 다른 글

C,C++ -switch문  (1) 2024.04.03
C,C++ - 제어문(if)  (0) 2024.04.03
C,C++ - 입력함수 scanf()  (0) 2024.04.02
C,C++ - 필드폭과 정밀도 지정  (0) 2024.04.02
C, C++ - 변수 생성  (0) 2024.04.01

scanf("변환 명세", &변수명)

 

- &변수명

  • scanf에서는 입력된 값을 저장할 기억장소의 주소를 명시해야 하므로 변수명 앞에 반드시 &(ampersand)를 붙여야함.
  • 문자열의 경우에는 &를 붙이지 않는다. (문자열은 %s)

- 사용시 주의사항

1. 변환명세 안에 변환명세가 아닌 문자는 사용X.

  • 예: scanf("키를 입력하세요: %d", &height) (X);
  • 예: printf("키를 입력하세요: "); scanf("%d, &height");

2. 변환명세에서 큰 따옴표로 닫기 전에 공백문자 사용X.

  • scanf("%d  ", &height); (X)
  • scanf("%d\t", &height); (X)
  • scanf("%d\n", &height); (X)
  • 이 경우 정수 입력 후 엔터키를 눌러도 %d 뒤의 공백문자 때문에 공백 문자가 아닌 데이터를 추가로 입력하여야 scanf가 완료된다.
  • scanf("%d", &height); (O)

3. 변환명세에서 필드폭은 꼭 필요할 때만 사용한다.

  • 예: 만약 height = 1234
  • scanf("%3d", &height);
  • scanf("%d", &age);
  • 이러면 처음에는 123이 height가 저장되는데
  • 나머지 정수 4가 age에 저장됨. 

4. 자료형에 맞는 변환 지시자(d, lf, c, s 등)를 사용해야 한다.

 

 

%s를 사용한 문자열 입력

char name[10];

printf("이름은? ");
scanf("%s", name);
printf("입력한 이름: %s", name);

 

 

 

여러 개의 자료를 한꺼번에 입력하기

int n1, n2, n3, n4;

printf("곱셈을 하고 싶은 두 개의 정수는? ");
scanf("%d %d", &n1, &n2);
printf("\n덧셈을 하고 싶은 두 개의 정수는? ");
scanf("%d, %d", &n3, &n4);

이런 식으로 데이터 구분자를 해줘서 입력해줘야함.

 

'프로그래밍 > C,C++' 카테고리의 다른 글

C,C++ - 제어문(if)  (0) 2024.04.03
C,C++ - 다양한 연산  (0) 2024.04.03
C,C++ - 필드폭과 정밀도 지정  (0) 2024.04.02
C, C++ - 변수 생성  (0) 2024.04.01
C,C++ - 문자, 문자열 상수 표현 문법  (1) 2024.04.01

%d를 사용한 정수 출력

%필드폭d

> 필드폭: 자료를 출력하는데 사용할 전체 칸을 의미

> d: 자료를 정수 형식으로 출력하라는 의미

> 정수형 자료를 출력하기 위해 필드폭 만큼의 칸을 확보한 후 출력 자료를 오른쪽 정렬 방식에 맞추어 출력

 

%+필드폭d

> +: 무조건 부호 출력을 지정하는 것으로 출력하는 값이 양수라면 숫자 앞에 '+'를 음수라면 '-'를 출력한다.

 

%-필드폭d

> -: 왼쪽 정렬을 지정하는 것으로 출력할 값의 첫 숫자와 왼쪽 첫 칸을 맞추어 출력

 

int n = 123;

printf("n = %d\n", n);
printf("n = %5d\n", n);
printf("n = %+5d\n", n);
printf("n = %-5d\n", n);
printf("n = %-+5d\n", n);

 

결과

n = 123
n =   123
n =  +123
n = 123
n = +123

 

 

%lf를 사용한 정수 출력

%필드폭.정밀도1f

> 필드폭: 전체 출력 칸을 의미

> f: 자료를 실수 형식으로 출력하라는 의미

> 정밀도: 소수점 아래 몇 자리까지 출력할지를 지정

 

%.정밀도1f

> 정밀도: 소수점 아래 몇 자리까지 출력하지를 결정

> 소수점 위의 값은 꼭 필요한 만큼만 칸을 확보하여 출력한다.

> 출력한 값에 포함된 소수점 아래 값의 자리가 지정한 정밀도보다 크다면 (정밀도 +1)번째 자리에서 반올림하여 출력.

 

# include <stdio.h>

int main()
{
	double ave = 83.768;

	printf("ave = %7.3lf\n", ave);
	printf("ave = %6.2lf\n", ave);
	printf("ave = %.2lf\n", ave);
	printf("ave = %10lf\n", ave);
	printf("ave = %5.lf\n", ave);

	return 0;
}

 

결과

 

'프로그래밍 > C,C++' 카테고리의 다른 글

C,C++ - 다양한 연산  (0) 2024.04.03
C,C++ - 입력함수 scanf()  (0) 2024.04.02
C, C++ - 변수 생성  (0) 2024.04.01
C,C++ - 문자, 문자열 상수 표현 문법  (1) 2024.04.01
C언어와 코딩 (INTRO)  (0) 2024.04.01

학기가 시작되고 3월 한 달이 지나갔다. 

나는 방학 때는 내 삶이 너무 지루하고 진부해서 빨리 학교를 가서 새로운 사람 만나면서 성장하고 싶다는 생각이 굉장히 컸다. 그런데 막상 와보니 그런 마음은 이제 사라지고 빨리 방학을 맞이하고 싶은 그런 마음이다..ㅋㅋㅋ

 

3월 한 달 동안 많은 일이 있었다. 로봇 관련 프로젝트 한답시고 전공과목 다 빼고 로봇 관련 과목을 채워서 들을려고 하지를 않나, 하다가 아닌 것 같아 교수님들께 찾아가서 증원신청하지를 않나 참 많이 바빴다. 혼자서 북치고 장구치고 다했다.

 

그런데 이 당시 굉장히 힘들었다. 내가 한 선택에 대해 책임은 져야하는데, 내가 그럴만한 능력이 없고 안일했다는 생각이 계속 들었다. 이러던 때에 연정이가 해준 말이 굉장히 기억에 남는데, 바로 "어떤 선택을 하든 후회는 남아. 그런데 그 선택을 옳게 만드는 건 대성이 몫이지." 맞는 말이다. 생각해보면 작년에도 내가 선택을 잘못해서 한 과목을 드랍 못해서 후회했는데 결국에는 열심히해서 좋은 결과를 얻을 수 있었다.

 

증원 신청한 교수님께서도 굉장히 좋은 말씀을 해주셨는데, "학생은 이미 로봇 쪽으로는 길이 아니라는 걸 깨달았잖아요. 그럼 그건 실패가 아니라 그게 아니라는 걸 깨달아서 오히려 성공인거지. 생각하기 나름이에요." 어느 한 분야에 베테랑이 되면 말 한마디 한마디가 무게감이 많이 실리는 것 같다. 교수님의 말씀을 듣고 너무 힘이 되었다.

 

그래서 지금 현재 나는 어떤 상태냐? 뭐 시험 기간 다가와서 굉장히 긴장되고 성적 잘 받고 싶다는 욕심이 큰 상태이긴 하다. 그런데 내가 이번년도 새해 목표에 '과욕금지!' 라고 한 걸 봤다. 그렇다. 지금 나는 너무너무넘누먼너무 욕심이 큰 상태이다. 이 욕심을 조금은 버릴 필요가 있는 것 같다. 과욕은 나를 옥죄고 이게 독이 되어 잘 되던 일도 이상하게 만드는 것 같다. 이럴 때마다 책을 읽어야겠다. 저번에 이 상황에서 읽었던 자기계발서 "그릿"이라는 책이 있는데 굉장히 좋았던 것 같다. 한번 더 읽으면서 마음을 달래야겠다.

 

음 뭐 결론은 욕심 과하게 부리지말고 최선을 다하고 너무 불안해하지 않기. 아직 나는 젊으니깐 잘하고 있으니깐 이대로만 쭉하면 되지 않을까? 암암 

 

파이팅하고 시험기간 동안 힘들 사람들 모두 파이팅!

'일상 > 일기' 카테고리의 다른 글

24.08.30 - 24.09.01 서울여행  (13) 2024.09.16
24.08.21 (수) - 계곡여행 + 앞으로의 다짐(?)  (2) 2024.08.21
24년도 새해목표  (0) 2024.01.26
24.01.26  (0) 2024.01.26
우매함의 봉우리  (2) 2023.12.05

변수 식별자 생성 규칙

- 기본규칙

  • 영문자 소문자, 대문자, 숫자, 언더라인('_')문자의 조합
  • 첫 문자는 숫자로 시작할 수 없음.
  • 예약어와 같은 이름을 사용할 수 없음.
  • 내장함수(printf, scanf 등)와 같은 이름의 사용을 권장하지 않음.

- 관습적 규칙

  • 역할에 맞는 이름을 만들 것
  • 길이에 제한이 없으나 31자 이하 권장

 

변수의 자료형

문자 char
정수 int
실수 float
실수 double

 

 

변수의 선언

# include <stdio.h>

int main()
{
	int inch = 25;
	float cm;

	cm = inch * 2.54;
	printf("%dinch는 %fcm입니다.", inch, cm);

	return 0;
}

 

결과: 25inch는 63.500000cm입니다.

'프로그래밍 > C,C++' 카테고리의 다른 글

C,C++ - 다양한 연산  (0) 2024.04.03
C,C++ - 입력함수 scanf()  (0) 2024.04.02
C,C++ - 필드폭과 정밀도 지정  (0) 2024.04.02
C,C++ - 문자, 문자열 상수 표현 문법  (1) 2024.04.01
C언어와 코딩 (INTRO)  (0) 2024.04.01
  일상에서의 문자 표현 C언어 문자 표현법
문자 A 'A', '65', '\0x41'
문자 [엔터키] '\n'
문자열  홍길동 "홍길동" (O), '홍길동' (X)

 

'홍길동'과 같이 두 개 이상의 문자를 넣을 수 없으며 이 경우 컴파일할 때 문법 오류가 발생한다.

C 문법에서 한글 한 문자 또한 단일 따옴표로 표현할 수 없다. "홍길동", "홍"과 같이 이중 따옴표를 사용(문자열)해야한다.

 

탈출문자

탈출문자  ASCII 문자 의미
\b BS 백스페이스
\t TAB
\n LF 개행
\" " 이중인용부호

 

 

++

C언어의 정수 상수 표현법

 

제일 앞에 보고 2진수인지 8진수인지 16진수인지 판단할 수 있음. 

=========

0b : 이진수

0 : 8진수

0x : 16진수

=========

 

 

 

'프로그래밍 > C,C++' 카테고리의 다른 글

C,C++ - 다양한 연산  (0) 2024.04.03
C,C++ - 입력함수 scanf()  (0) 2024.04.02
C,C++ - 필드폭과 정밀도 지정  (0) 2024.04.02
C, C++ - 변수 생성  (0) 2024.04.01
C언어와 코딩 (INTRO)  (0) 2024.04.01

코딩

> 문제해결과정 + 알맞은 언어

> 컴퓨팅적 사고력, 알고리즘, 코딩

 

기계어

> 0,1의 이진 코드만 이해할 수 있음.

 

어셈블리어 

> 기계어의 이진 명령 대신 ADD나 SUB와 같이 사람이 이해하기 쉬운 기호를 사용하도록 개발된 언어 

> 그런데 이것도 사람이 쓰는 자연어와는 거리가 멀어서 프로그램을 작성하는데에는 어려움이 여전히 있음.

 

고급언어

> 사람이 알아듣기 쉬움.

 

저급언어

> 컴퓨터와 밀접함,

> 기계어나 어셈블리어가 여기에 속함.

 

프로그램 개발 과정

  1. 요구사항 분석
  2. 설계(모듈 - 함수)
  3. 구현
  4. 테스트
  5. 배포 및 유지보수

소스파일은 기계어로 번역함.(컴파일)

 

 

C언어로 작성한 소스 파일에서 실행형 파일을 만들어 실행하는 과정 

 

소스파일 ---(컴파일링 - 컴파일러)---> 목적파일 ---(링킹)---> 실행파일 

(*.c, *.cpp)                                            (*.obj)                          (라이브러리 파일)

 

디버깅: 프로그램의 오류를 찾아내서 수정하는 과정

 

디버깅의 종류

  • 구문오류(컴파일 시간 오류 - 문법이 틀린 경우)
  • 링크오류(ex. 여러 소스 파일에 같은 이름의 함수가 중복으로 정의된 경우...)
  • 실행시간 오류(파일을 열고자 하는데 파일을 찾을 수 없을 때, )
  • 논리오류 (디버깅도구, 로그메시지 - 실행은 되지만 알고리즘이 잘못되어 의도한 대로 작동 X)

 

변수선언 > 입력 > 처리 > 출력

 

컴퓨터는 이산적 데이터만을 처리함.

 

비트는 데이터 표현의 최소 단위

ex) 8bits = 1byte

 

주석처리

  • // (한 줄)
  • /**/ (여러 줄)

'프로그래밍 > C,C++' 카테고리의 다른 글

C,C++ - 다양한 연산  (0) 2024.04.03
C,C++ - 입력함수 scanf()  (0) 2024.04.02
C,C++ - 필드폭과 정밀도 지정  (0) 2024.04.02
C, C++ - 변수 생성  (0) 2024.04.01
C,C++ - 문자, 문자열 상수 표현 문법  (1) 2024.04.01

이 책을 한 줄로 요약하자면 다음과 같다. 

'우리는 예지력을 갖고 미래를 알아맞힐 수는 없지만, 우리가 원하는 미래를 만들기 위해 노력하고 대응할 수 있습니다.'

 

 

 사람들은 예상하지 않은 미래가 오면 두려워한다. 그렇기 때문에 다가오는 미래에 대비하기 위해 각종 예방책과 대응수단을 마련한다. 카이스트 미래전략 2024는 미래에 효과적으로 대비하기 위해 과거와 현재, 미래를 한 권에 담아 독자에게 최대한 주관적인 요소를 배제하고 객관적으로 정보를 전달하고자 한다. 

 첫 번째 목차인 포스트 AI시대 휴머니즘의 미래는 도구가 어떻게 진화를 해왔는지 살펴보고 현 시점에 기술이 얼마만큼 발전했는지 설명한다. 가장 인상깊었던 목차는 초지능 사회를 열어줄 21세기 새로운 도구인데 여러 도구를 소개했지만 그 중 펌웨어의 도전 부분은 많이 충격적이었다. 이전에 필자는 사이버펑크라는 애니메이션을 본 적이 있는데 이 애니메이션은 2070년의 인간의 미래모습을 그린 작품으로 신체에 기계장치가 이식된 채로 살아가는 삶은 어떨지 보여준다. 이 작품을 보면서도 충격이었지만 실제로 비슷하게 그러한 시도를 현재 2023-2024년에 시행되고 있었다는 점이 충격이었다.

 한 가지 예를 소개하자면 최근 바이오닉스 분야에서 가장 뜨거운 이슈는 바로 인공 청각과 인공 시각이다. 인공 청각은 손상된 와우에 전극을 삽입해 전기신호로 변환된 소리를 청신경에 전달하는 장치인데 이미 1970년대에 사용화가 되어 선천적으로 청력을 잃은 많은 청각장애인에게 세상의 소리를 들려주고 있다고 한다. 또 일론머스크의 뇌공학 스타트업인 뉴럴링크는 뇌에 실 형태의 미세전극을 매우 높은 밀도로 정교하게 삽입하고 신경세포를 선택적으로 자극하거나 측정된 신경신호를 무선으로 전송하는 기술을 개발하고 있다. 이 기술이 상용화된다면 뇌를 직접 자극해 사물을 보게하고 소리를 듣게 하고 마비된 사지를 로봇의 힘을 빌려 움직일 수 있게 할 수 있다고 하는데 시간이 많이 걸리기는 하겠지만 실현된다면 이것 자체로 바이오 산업에서 챗GPT 만큼의 파장을 일으킬 수 있을거라고 생각한다. 하지만 이렇게 장애를 가진 사람들의 한계를 극복할 수 있는 장점이 될 수도 있지만 앞서말한 애니메이션 사이버펑크처럼 장애가 없는데도 신체의 기능을 높이기 위한 인간 증강의 기술로 활용될 수도 있다는 불안감도 준다. 이로 인해 인위적으로 개인의 능력을 증강한 사람이 그렇지 않은 사람보다 더 상위 계급이 되어 새로운 양극화를 만들어낼 수 있다. 따라서 우리가 원하는, 즉 인류의 행복을 위해서는 바이오닉스 기술의 감시와 통제는 필수적으로 이행되어야 할 것이다. 

 

 두 번째 목차인 변화에 대처하는 STEPPER 전략에서는 기업이나 국가, 개인, 가정이 다가오는 미래에 어떻게 대처해서 급변하는 사회에 대비할 수 있는지 담았다. 여기서 우리나라가 인구가 꾸준하게 감소하고 있는데 이에 대한 대비로 이민자를 수용해야한다는 얘기가 나온다. 이와 같은 유사 사례로 독일이 이민자 정책에 성공했다는 걸 알고 있었던 필자는 이 책에서 어떤 해결책을 제시할지 궁금했다. 여기서는 이민자 정책의 장단점을 따지기에 앞서 왜 인구감소가 문제인지 이민자 정책을 시행한 뒤의 우리나라가 어떤 사회로 뒤바뀔지를 설명했다. 일단 인구가 줄어든다는 것은 인재가 줄어든다는 것으로 이는 국가경쟁력의 약화로 이어진다. 그렇기에 해외 이민자들을 받아들여 우수인재 유치에 힘써야한다는 것이 주된 내용이었다. 그러나 해외 이민자들을 받아들였을 때의 우리 사회 구성원들이 제대로 수용할 수 있을지는 의문이다. 아직까지 외국인에 대한 편견이나 선입견이 존재하기에 이에 대한 교육이 필요하고 이민자들이 우리나라에 왔을 때 잘 자리잡을 수 있도록 해주는 것이 중요하다. 이 책에서는 인구감소의 문제에 대해 국가가 더욱 적극적으로 힘써줘야한다고 주장하고 있는 듯하다. 필자 또한 개개인의 노력만으로는 이 문제를 해결할 수 없다고 생각하기에 국가가 전면적으로 나서야한다고 생각한다. 이처럼 두 번째 목차에서는 STEPPER가 되기위해 우리는 무엇을 신경써줘야하는지 방향을 알려준다.

 

 '선비정신', 우리 선조들이 정파나 개인의 이해관계를 떠나서 오로지 대의와 국가, 백성을 위해 시시비비를 가리고자 하는 한국 고유의 정신. 요즘 우리나라에서는 이런 모습이 거의 보이지 않는 것 같다. 모두가 선비정신을 갖고 대의와 국가를 위해 자신이 맡은 위치에서 힘쓴다면 지금 현재 우리나라의 위기는 충분히 극복할 수 있을 것이라고 생각한다.

 

 2024년 세계의 정세와 우리나라의 상황, 그리고 산업의 동향을 한 권의 책을 통해 대략적으로 파악하고 자신만의 새로운 인사이트를 얻고 싶은 분들에게 이 책을 추천한다. 

'독서 > 과학' 카테고리의 다른 글

소프트웨어, 컴퓨팅사고, 코딩  (0) 2025.03.20
K반도체 대전략  (1) 2024.07.08
AI 이후의 세계  (1) 2024.01.19

+ Recent posts