2024. 5. 18. 19:14ㆍ코딩과 프로그래밍/C언어
자, 이번 장에서도 잊지 않고 복습과 이전에 배웠던 것에 대해 추가 설명을 하겠다.
1. main 함수란 C프로그램의 시작점, 진입점(Entry Point)이다.
2. 변수는 데이터를 저장하는 공간이다. 데이터의 타입에는 정수형(int), 실수형(float), 배정밀도 실수형(double), 문자형(char) 등이 있다.
3. 초기화란 선언한 변수에 값을 할당하는 것을 가리킨다.
4. printf 함수는 변수를 출력하는 데에 사용되며 형식지정자(%d, %c, %f, %lf) 등을 사용하여 각 변수의 값을 출력한다.
%d는 정수형(int), %c는 문자형(char), %f는 실수형(float), %lf는 배정밀도 실수형(double)를 불러올 때 쓴다.
ex)
#include <stdio.h>
int main() {
// 정수형 변수 선언 및 초기화
int num = 42;
//num이라는 이름을 가진 정수형 변수 선언
//그리고 num에 42라는 값을 초기화(할당)
// 정수형 변수를 출력
printf("정수형 변수 num의 값: %d\n", num);
//변수의 값을 불러오기 위해선 항상 뒤에 변수의 이름을 적어야 한다.
return 0;
}
5. scanf 함수는 C언어에서 표준 입력으로부터 데이터를 읽어오는 데 사용된다. 여기서 표준 입력이란 주로 키보드 같은 것을 의미한다. scanf 함수의 기본 형식은 다음과 같다.
ex)
scanf("형식 문자열", 변수의 주소);
형식 문자열: 입력 받을 데이터의 형식을 지정한다. 형식 지정자는 %d(정수형), %f(실수형), %c(문자형), %s(문자열, 배열) 등 다양한 데이터 타입에 따라 달라진다.
변수의 주소: 입력된 값을 저장할 변수의 주소를 지정한다. 주소 연산자 &를 사용하여 변수를 전달한다.
ex) 아래는 정수를 입력받아 출력하는 예제이다.
#include <stdio.h>
int main() {
int num;
//정수형 변수 num을 선언, 단 값은 초기화(할당)하지 않았다.
printf("정수를 입력하세요: ");
scanf("%d", &num);
//정수형 값을 입력하고 이것을 정수형 변수 num에 전달한다.
printf("입력된 정수: %d\n", num);
return 0;
}
ex) 아래는 문자형을 입력 받아 출력하는 예제이다.
#include <stdio.h>
int main() {
char ch;
//문자형 변수 ch를 선언, 단 값은 초기화(할당)하지 않았다.
printf("문자를 입력하세요: ");
scanf("%c", &ch);
//문자형 값을 입력하고 이것을 문자형 변수 ch에 전달한다.
printf("입력된 문자: %c\n", ch);
return 0;
}
복습은 끝났다. 이제 아래에서 5장에서 배워 볼 것에 대해 다뤄보겠다.
[조건문]
5장에선 조건문에 대해 배워 볼 것이다. 조건문은 프로그램이 특정 조건을 만족할 때만 특정코드를 실행하도록 하는 구조이다. C언어에서 사용되는 주요 조건문에는 if, if-else, else if, switch가 있다.
if 문은 주어진 조건이 참 일때만 코드를 실행한다. 아래의 예제를 보고 이해해보자.
#include <stdio.h>
int main() {
int num = 10;
if (num > 5) {
printf("num은 5보다 큽니다.\n");
}
return 0;
}
위의 예제에서 정수형 변수 num을 선언하였고 이 num에는 10이라는 값을 초기화(할당)하였다.
그리고 아래에 if문을 통해 num이 5보다 클 경우 참으로 인식하여 printf 문이 실행되도록 코드를 작성하였다.
이때 if 문에 보면 num > 5 이라고 써있는 부분이 있는데.
> 과 <은 C언어에서 사용되는 비교 연산자로 이 연산자들은 좌우에 있는 두 값을 비교하여 관계를 나타내는데 사용된다. 이 연산자들은 조건문과 함께 거의 필수적으로 사용되며 조건이 참인지 거짓인지를 판별하는 데 중요한 역할을 한다.
< 연산자는 Less than이라고 하여 왼쪽 피연산자가 오른쪽 피연산자보다 작은지를 비교한다.
만약 왼쪽 피연산자가 오른쪽 피연산자보다 작으면 참(1), 그렇지 않으면 거짓(0)으로 반환한다.
반대로 > 연산자는 Greater Than이라고 하여 왼쪽 피연산자가 오른쪽 피연산자보다 큰지를 비교한다. 만약 왼쪽 피연산자가 오른쪽 피연산자보다 크면 참(1), 그렇지 않으면 거짓(0)으로 반환한다.
그 밖에도 <=, >=, ==, != 등이 있는데. 모두 차근차근 설명하도록 하겠다.
먼저 위의 코드에서 num > 5 라고 적혀있으니 아까 설명한 대로 왼쪽 피연산자가 오른쪽 피연산자보다 큰지를 비교하였고. num에는 10이란 값이 초기화(할당)되어 있으니 당연히 5보다 커서 참으로 인식하여 printf문이 출력된 것이다. 반대로 위의 코드에서 num의 값을 4로 수정하면 num의 값은 5보다 작으니 이는 거짓이니 printf문이 출력되지 않는 것을 확인 할 수 있다.
<= 같은 경우 Less than 혹은 equal to라고 부르는데, 왼쪽 피연산자가 오른쪽 피연산자보다 작거나 같으면 참을 반환한다.
=> 같은 경우 Greater than or equal to라고 부르는데, 왼쪽 피연산자가 오른쪽보다 크거나 같은 경우 참을 변환한다.
==는 equal to라고 부르는데, 두 연산자가 같으면 참을 반환한다.
!=는 Not equal to라고 부르는데, 두 피연산자가 다르면 참을 반환한다.
[if-else 문]
if-else문은 if문이 거짓일 경우 else문을 실행한다. 아래의 예제를 보고 이해해보도록 하자.
ex)
#include <stdio.h>
int main() {
int num = 3;
if (num > 5) {
printf("num은 5보다 큽니다.\n");
} else {
printf("num은 5보다 작거나 같습니다.\n");
}
return 0;
}
위 코드에서 정수형 변수인 num의 값은 3이다, if 문의 조건을 보면 왼쪽 피연산자가 오른쪽 피연산자보다 큰지 비교하는 > 연산자이다. 코드에는 num > 5 라고 써있기 때문에 왼쪽 피연산자(num)의 값은 오른쪽 피연산자 5보다 작은 3이기 때문에 거짓으로 if 문 아래에 적힌 printf문은 실행되지 않으며 if문 아래에 있는 else문이 실행된다. 한 번 컨트롤 + F5를 눌러 확인해보자.
그렇다면 만약 num의 값을 5로 바꿔주면 if 문에 적힌 printf문이 실행될까? else에 적힌 printf문이 실행될까? 당연히 > 연산자는 무조건 왼쪽의 값이 오른쪽보다 커야 참으로 인식하기 때문에 num의 값이 5일 때 num > 5 라고 적을 경우 거짓으로 인식하여 else문에 적힌 printf문이 실행된다. 확인해보자.
[else if문]
else if문은 여러 조건을 순차적으로 검사하는데. 첫 번째 조건이 참이 아니면 다음 조건을 검사하고 이후 계속 순차적으로 조건을 검사하는 조건문이다.
아래의 예제를 보고 이해해보도록 하자.
ex)
#include <stdio.h>
int main() {
int num = 7;
if (num > 10) {
printf("num은 10보다 큽니다.\n");
} else if (num > 5) {
printf("num은 5보다 큽니다.\n");
} else {
printf("num은 5보다 작거나 같습니다.\n");
}
return 0;
}
위 코드에서 확인하면 정수형 변수인 num을 선언, num에는 7이란 값을 초기화(할당) 하였고.
우리는 먼저 if 문에 왼쪽 피연산자가 오른쪽 피연산자보다 큰 지 확인하는 > 연산자 코드를 입력하였고 7이란 값이 할당된 num은 10보다 작기 때문에 참이 아니므로 if문이 실행되지 않았으며
밑에 적힌 else if문에는 똑같이 왼쪽 피연산자가 오른쪽 피연산자보다 큰 지 확인하는 > 연산자 코드를 입력하였고. 7이란 값이 할당된 num은 5보다 크기 때문에 이는 참으로 인식되어 else if문이 실행된다. 한 번 컨트롤 + F5를 눌러 확인해보자.
[swtich문]
switch 문은 변수의 값에 따라 여러 경우(case) 중 하나를 선택하여 실행한다.
아래의 예제를 보고 이해해보도록 하자.
ex)
#include <stdio.h>
int main() {
int num = 2;
switch (num) {
case 1:
printf("num은 1입니다.\n");
break;
case 2:
printf("num은 2입니다.\n");
break;
case 3:
printf("num은 3입니다.\n");
break;
default:
printf("num은 1, 2, 3 중 하나가 아닙니다.\n");
}
return 0;
}
위 코드를 해석하면 정수형 변수 num을 선언, num에는 2라는 값을 초기화(할당)
아래에 적힌 switch 문에선 case가 1, 2, 3이 있는데. num의 값은 2이기 때문에 case 2에 적힌 printf문이 실행된다. 이번엔 num의 값을 3으로 수정해보고 컨트롤 + F5로 실행해보자.
그리고 여기서 중요한건 printf문 아래에 적혀있는 break;인데.
한 번 3으로 바꿨던 num의 값을 다시 2로 바꾸고 case2에 적은 break;를 지우고 다시 컨트롤 + F5로 실행을 해보자.
case2에 적은 break;을 지우니 break 문이 적힌 case 3까지 실행되는 걸 확인 할 수 있다. 만약 case 3에 break 문이 적혀있지 않았다면 default 까지 실행되었을 것이다. 이를 fall through 현상이라고 한다. 또 default 블록에는 break; 문이 없는 걸 확인 할 수 있는데, 이는 필수가 아니기 때문. 다만, 일반적으로는 넣는 편이다.
추가로 break 문에 대해 간단하게 설명하도록 하겠다. break문은 C언어에서 중요한 제어 흐름 명령어 중 하나로 for, while, do-while 같은 반복문이나 switch 같은 조건문을 즉시 종료하는데 사용된다.더 자세한 건 반복문을 배울 때 알려주도록 하겠다.
'코딩과 프로그래밍 > C언어' 카테고리의 다른 글
C언어 기초 퀴즈 (0) | 2024.05.24 |
---|---|
C언어 기초교육(4/10) (0) | 2024.05.17 |
C언어 기초교육(3/10) (0) | 2024.05.16 |
C언어 기초교육(2/10) (0) | 2024.05.16 |
C언어 기초교육(1/10) (0) | 2024.05.15 |