C.2-1 if 대체표현(while)

lsw·2021년 3월 21일
0

C

목록 보기
2/9
post-thumbnail

1. 프리뷰

주제

while문을 이용하여 if문 대체하기

알고리즘

  1. 우선 while은 do ~ while, for 문과 함께 loop문에 해당한다. 하지만 if는 '조건 만족(TRUE) → 본문실행' 의 ordered문 이기에, loop탈출 함수인 break를 사용해 반복이 일어나지 않도록 한다.
  2. if문 본문 실행의 조건(condition)을 while 조건부에 그대로 적시한다.
  3. if{본문}의 본문 내용을 while의 본문에 그대로 삽입한다.
  4. 두 함수를 만들어 비교해 보자.

2. 문제점 / 해결방법

  • What kind of Problem?
    • Algorithm 설계 실수
    • Algorithm 의 비효율
    • Syntax에 대한 이해 부족
    • Function 사용에 대한 이해 부족
    • Compiler 호환 문제
    • 잔실수
  • How did you Solved?
    • By searching Google
    • On my own
    • Ask to Friends or People

3. 코드

  • if 조건문을 이용한 함수
#include <stdio.h>

void make_five_if(int * ptr1, int * ptr2) 
// 합이 5가 아닌 두 수를 입력받아 그 중 하나의 값을 초기화 하여 5가 되게 하는 함수. by if 
{
  if(*ptr1 + *ptr2 != 5)
  {
    *ptr1 -= (*ptr1 + *ptr2 - 5);
  }
  • while 문을 이용한 조건 함수
void make_seven_while(int * ptr1, int * ptr2)
// 합이 7이 아닌 두 수를 입력받아 그 중 하나의 값을 초기화 하여 7이 되게 하는 함수. by while
{
  while(*ptr1 + *ptr2 != 7) // 조건(첫번째로 loop에 들어갔을때 조건만족 시 1회반복 후 break)
  {
    *ptr1 -= (*ptr1 + *ptr2 - 7);
    break; // 반복문 강제 탈출
  }
}
  • main함수, 각 함수 호출
int main()
{
  int first,second;
  printf("두 정수를 입력하시오 : ");
  scanf("%d %d", &first, &second);

  printf("\n\n\"if\"를 이용한 결과 : "); // make_five_if 함수 호출
  make_five_if(&first, &second);
  printf("first + second = %d\n", first + second);

  printf("\"while\"을 이용한 결과 : "); // make_seven_while 함수 호출
  make_seven_while(&first, &second);
  printf("first + second = %d", first + second);

  return 0;
}

4. 결과


5. 결론

물론 if함수를 쓸 수 없는 컴파일러, 환경은 없겠지만 사고의 전환이 이뤄짐에 있어 긍정적인 문제였다. 또한 while문 구조에 대한 관찰과 break함수의 이해로 이들 실전 사용에 자신이 생겼다.

profile
미생 개발자

0개의 댓글