제어문?
프로그램의 흐름을 제어하는 경우에 사용하는 실행문으로, 조건문, 반복문, 분기문 등이 포함된다
조건식
- 참 또는 거짓, 둘 중 하나가 나오는 식
- 참과 거짓을 나타내는 값 ⇒ 조건식을 값으로 보는 연습을 하는게 중요
- 거짓 : 0
- 참 : 0 이외의 모든 수, 1로 약속함.
- 조건식에 쓰이는 연산자
- 관계연산자, 논리연산자, 단항 연산자, (+ 삼항 연산자)
- 논리연산자 : &&, ||
- 단항 연산자 : ! : NOT, 거짓을 참으로, 참을 거짓으로 변경, !A
삼항연산자의 활용
- 조건이 결과에 따른 값을 변형
- 결과에 따라 다른 format 출력 구현하기
condition1 = num1 > num2;
condition2 = num1 == num2;
format = condition2? "%s" : "더 큰값 : %d"
printf(format,condition1? num1:
condition2? "두 수가 같습니다" : num2);
- 예시 : 혈액형별 결과 출력해보기
#include <stdio.h>
void main() {
char* qMsg = "당신의 혈액형은?";
char* choiceMsg = "1. A\n 2.B\n 3.O\n4.AB";
char* aMsg = "꼼꼼하고 세심하다";
char* bMsg = "추진력 좋다";
char* oMsg = "O";
char* abMsg = "ab";
char* errorMsg = "다시 시도해주세요";
int condition = 1, condition2 = 0, condition3=0, condition4 = 0;
condition1= choice ==1;
condition1= choice ==2;
condition1= choice ==3;
condition1= choice ==4;
int choice = 0;
printf("%s\n%s\n", qMsg, choiceMsg);
scanf_s("%d",&choice);
printf("%s\n",condition1 ? aMsg :
condition2? bMsg:
condition3? cMsg:
condition4? abMsg: errorMsg);
}
if문 : 논리연산자 , 대소비교
1. if~if~if : 모든 조건을 검사할 때
if(조건식) {
실행할 문장;
}
if(조건식) {
실행할 문장;
}
if(조건식) {
실행할 문장;
}
2. if ~ else if ~ else : 위의 조건식이 참이 아니면 아래 수행
if(조건식) {
실행할 문장;
}
else if(조건식) {
실행할 문장;
}
else(조건식) {
실행할 문장;
}
cf. 일괄처리 : 분기별로 반복될 때 일괄처리한다
- 예시 : 가장 아래에 printf문 한 번만 사용하도록 코드 구성
switch문 : 같은 값 비교 시 최적화된 구문
- swith문을 사용할 때는 break 문을 꼭 사용하도록 한다
switch(변수명){
case 값1:
실행할 문장;
break;
case 값2:
실행할 문장;
break;
case 값3:
실행할 문장;
break;
case 값4:
실행할 문장;
break;
case 값5:
실행할 문장;
break;
....
....
default:
실행할 문장;
break;
}
cf. 문자열 출력 시, printf(”%s”, 변수명) 대신 puts(변수명)으로 출력 가능
반복문
for문
for(초기식;조건식;증감식){
반복할 문장;
}
빈번하게 사용되는 연산자
💡 대입연산자(복합 대입 연산자, 누적 연산자) +=, -= ,*=, /=
💡 증감연산자
전위형 ++ data
후위형 data ++ ⇒ 해당 줄을 모두 수행하고 연산 수행
- 예제. A~F까지 B만 빼고 출력하기
#include <stdio.h>
//A~F 출력하는데 B만 빼고 출력하기
// 잘못된 결과 : A,C,E
INT MAIN()
{
FOR(INT I=0;I<5;I++){
IF(I>0) {I++;}
PRINTF("%C\\N",I+65);
}
}
// 임시 저장 변수 temp 사용
int main()
{
int temp=0;
for(int i=0;i<5;i++){
temp = i;
if(i>0) {temp++;}
printf("%c\\n",temp+65);
}
}
while문
💡 while 문의 3가지 형태 :
- while(조건)
- while(1) ~if() break;
- do {} ~ while(반복조건)~ ⇒ 한 번은 꼭 수행한다.
while(조건식){
반복할 문장;
}
// 무한반복
while(1) { <- 숫자는 0 아닌 수 아무거나
실행문
}
관련된 기타 연산자
1. break : 컴파일러가 만나는 즉시 해당 중괄호 영역 탈출
※ if문 안에서 break를 사용하면 if문 탈출이 아닌 if문을 감싸고 있는 영역 탈출.
switch문 안에서 break를 사용하면 switch문만 탈출할 수 있다
2. continue : 컴파일러가 만나는 즉시 다음 반복으로 넘어감
※ continue 밑에 있는 문장을 실행하지 않을 때 사용
for문과 while문의 사용
for문 : 몇 번 반복 수행할 지 알고 있을 때
while문 : 몇 번 반복 수행할지 알 수 없을 때
for문, while문, do~while문 순서도 비교
'Skill > C,C#,C++' 카테고리의 다른 글
2차원배열 (0) | 2023.02.10 |
---|---|
문자열 (0) | 2023.02.10 |
포인터 및 기본 배열 (0) | 2023.02.10 |
연산자 우선순위와 비트연산 (0) | 2023.02.07 |
C언어 기초 1 : 프로그래밍 기초, RAM, 변수와 서식문자 (1) | 2023.02.02 |