steadilee
FRACTAL
steadilee
전체 방문자
오늘
어제
  • 분류 전체보기 (47)
    • Knowledge (0)
      • 컴퓨터 (0)
    • Data Analysis (7)
      • 공부 (4)
      • Simple Analysis (0)
      • ML,DL (3)
      • Kaggle (0)
    • Skill (40)
      • SQL 이론 (3)
      • Oracle (18)
      • MySQL (0)
      • Python (5)
      • Linux (2)
      • C,C#,C++ (8)
      • Java (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
steadilee

FRACTAL

제어문 : 조건문, 분기문,반복문
Skill/C,C#,C++

제어문 : 조건문, 분기문,반복문

2023. 2. 7. 12:56
제어문?
프로그램의 흐름을 제어하는 경우에 사용하는 실행문으로, 조건문, 반복문, 분기문 등이 포함된다

 

조건식

  • 참 또는 거짓, 둘 중 하나가 나오는 식
  • 참과 거짓을 나타내는 값 ⇒ 조건식을 값으로 보는 연습을 하는게 중요
    • 거짓 : 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가지 형태 :

  1. while(조건)
  2. while(1) ~if() break;
  3. 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
    'Skill/C,C#,C++' 카테고리의 다른 글
    • 문자열
    • 포인터 및 기본 배열
    • 연산자 우선순위와 비트연산
    • C언어 기초 1 : 프로그래밍 기초, RAM, 변수와 서식문자
    steadilee
    steadilee

    티스토리툴바