[Warming up C Programming] chapter 5 : 제어문

eunee22·2023년 7월 8일
0

Warming-up C Programming

목록 보기
5/10
post-thumbnail

제가 대학교 1학년 때 C언어 수업에서 배운 내용을 교재와 ppt를 중심으로 정리한 내용입니다. (2022.3 ~ 2022.6)
당시에 공부를 위해서 HWP 파일로 정리해 놓은 것을 그대로 올립니다.

대학에 처음 들어와 정리한 내용이라 모든 내용을 담고 싶은 욕심에 정리가 많이 지져분하고 어설픈점 양해 부탁드립니다..!

🍑제어문

: 프로그램의 수행 순서를 제어

🍑조건문

: 조건에 따라 프로그램이 선택적으로 특정 문장을 수행하게 만드는 기능을 제공

if 문

if

  • () 안에 있는 조건식이 참이면 주어진 문장을 수행하고, 거짓이면 수행하지 않음.
  • 조건식의 참/거짓에 따라서 실행의 흐름이 나누어졌다가 if문의 다음 문장에서 합쳐짐.
  • if의 조건식은 수식이며, 관계 연산식 주로 사용
  • if의 조건식이 참일 때 수행할 문장이 여러개라면, 수행할 문장들을 { } 로 묶어주어야함.
    • 하나일때도 권장 → 알아보기도 쉽고, 코드 추가하기도 쉬움

  • 복합문(블록){ } 으로 묶인 문장
    • {} 없이 들여쓰기만 하면 복합문 아님
    • 제어문에서만 사용되는 것이 아니라 단일문 사용되는 위치에선 언제든지 사용가능

if else

  • if의 조건식이 참이면 if 다음문장을 수행하고, 거짓이면 else 다음의 문장을 수행
    • else : if의 조건식이 false로 판단되면(그렇지 않으면)
  • 조건식의 참/거짓에 따라서 실행의 흐름이 나누어졌다가 if문의 다음문장에서 합쳐짐.
  • if else문 대신 2개의 if문으로 작성 할 수도 있지만, 조건문을 2번 수행하므로 비효율적.
  • if else문 대신 조건 연산자를 이용해서 같은 코드를 작성가능

else if

  • else블록안에 다른 문장 없이 또 다른 if문만 들어있을 때 작성가능
  • else if는 여러 조건을 순서대로 검사
    • 여러 가지 중에서 한가지를 선택할 때 유용
  • 항상 if문과 함께, else앞의 if문의 조건식이 거짓일때만 else if다음의 조건식을 검사
  • else if 문에 또 다른 else if문을 여러번 연결 가능
  • 마지막에는 else가 사용될 수 있음

switch 문

  • ()의 정수식에 값에 따라서 여러 가지 case 중 하나를 선택하여 문장 수행
  • ()안의 수식의 값은 반드시 정수
  • { }안에는 여러개의 case를 사용 가능
  • case문 작성시 case 정수값 ;(콜론) 수행할 문장을 순서대로 적어줌
  • case문에서 수행할 문장이 여러개 일때도 {}를 써줄 필요가 없음 (이미 switch전체에 {} 사용)
  • case문에서 수행할 문장의 끝에는 break를 써줌.
    • break를 만나면 switch를 탈출하는데, break가 없으면 switch의 끝을 만날때까지 나열된 모든 문장을 수행
    • break의 생략자체는 가능함
  • 일치하는 case가 없을 때 수행 할 문장은 default 다음에 써줌(반드시 제공 할 필요는 없음)
  • default에서 수행할 문장의 끝에도 break가 필요

  • else if vs switch → 프로그래머 마음대로
    • else if : 조건식이 단순한 정수값 비교가 아닌 경우
      • 값을 여러번 평가
    • switch : 정수값을 비교하고, 비교할 값이 2개 이상인 경우
      • 한번만 값 평가 가능

주의점

  1. switch문에서 break는 생략 가능

    • 생략시에 break를 만날 때까지나 }을 만날때까지 연속된 다음 case의 문장들을 모두 수행
    • switch문이 올바르게 수행되게 하려면 casedefaultbreak를 써주는 것이 좋음
  2. switch문에서 default 생략 가능

    • 일치하는 case가 없고, default도 없으면 바로 switch를 빠져나감
    • default의 위치는 상관없지만, 일반적으로 switch문의 끝부분에 써줌

🍑반복문

: 조건이 만족하는 동안 주어진 문장을 반복해서 수행

for

  • 정해진 횟수만큼 반복 수행 할 때 주로 사용
    • 특히 어떤 문장을 n번 반복 수행시 사용
  • 가장 정형화된 반복문
  • for(초기식; 조건식; 증감식) 형식으로 구성
  • 반복할 문장이 여러개 일 때 {} 로 묶어줌

  • 반복 1회차 : 초기식 수행 → 조건식 검사 → 조건식 참이면 반복할 문장을 수행 → 증감식 수행
  • 반복 2회차 이상 : 조건식 → 반복할 문장 → 증감식
    조건식이 거짓이면 더 이상 수행하지 않고 for문을 빠져나감

  • 루프 제어 변수 : for의 초기식, 조건식, 증감식에서 사용되는 변수
    • 루프 제어 변수의 값은 for 반복회차마다 변경 되어야 함
    • 특정 시점에는 조건이 거짓이 되어 루프를 탈출 할수 있어야 함

for의 여러 가지 변형

  1. for문에서 루프제어 변수 여러개 사용가능
    • 보통 for의 초기식, 증감식은 한 문장 이지만, 콤마연산자를 이용해 여러개 수식 나열 가능.
  2. for문을 구성하는 초기식, 증감식, 조건식, 반복할 문장은 모두 생략 가능함(;는 필수)
    • 초기식, 조건식, 증감식 각각 or 모두 생략 : 무한 루프
    • for의 반복할 문장 생략 : 널문장(문장없이 세미콜론만 으로 이루어진 문장)
      • 증감식에서 이미 필요한 기능을 모두 수행해서 반복할 문장을 지정할 필요가 없을 때 사용
  3. 중첩된 for : for문에 포함된 for
    • 바깥쪽에서 for가 M번, 안쪽에서 for가 N번 수행되는 경우에는 전체 반복 횟수는 M*N번이됨

while

  • 조건식이 참인 동안 반복할 문장 수행, 거짓이 되면 while문을 빠져나가 while문 다음문장 수행
  • 조건식과 반복할 문장으로 구성
  • 반복할 문장이 여러개 일때는 {} 안에
  • while문의 조건식은 생략할 수 없기에, 무한 루프를 만들 때는 조건식으로 항상 참인 값 이용 → while(1)

  • for vs while → 프로그래머 마음대로
    • while문의 작성 형식이 for문에 비해 간단
    • forwhile 로 변형 : for문의 초기식을 while앞에 써주고, 조건식은 그대로, for문의 증감식은 while 블록의 맨 끝에 써줌

do while

  • 참/거짓에 상관없이 무조건 반복할 문장을 수행, 끝부분에서 조건식을 검사해서 반복을 더 수행 할 것인지, 루프(반복)을 탈출할지 결정

  • do 반복할문장; while(조건식);의 구성.

    • 세미콜론 필수
  • forwhile은 조건식이 거짓이면 반복할 문장이 한번도 수행되지 않지만, do while은 반드시 한번은 수행됨

🍑분기문

: 문장의 실행 순서를 변경 할 수 있음

break

  • switch나 반복문을 탈출하여 반복문의 수행 순서를 변경

    • 현재 소속된 블록{}에서 블록 외부로 탈출
  • 무한 루프와 break

    • forwhile은 루프의 시작 부분, do while은 루프의 끝부분에서만 조건식을 검사해서 루프를 탈출하는데, 무한루프와 break를 함께 사용하면, for의 조건식을 생략하거나, 항상 참인 조건식으로 반복문을 무한 루프로 만든다음 원하는 위치에서 if로 루프 탈출 조건을 검사해서 break로 루프 탈출 가능

continue

  • 반복문 안에서 continue를 만나면, 루프의 조건식이나 증감식(for) 부분으로 이동

go to

  • 제어의 흐름을 프로그램의 특정 위치로 이동 시킴
  • 레이블 필요
    • 레이블 : 이동할 문장을 가르킴
    • 정의할 때는 이름과 콜론으로 정의.
    • c언어 식별자 규칙에 따라 이름 정함.

retrun

  • 함수를 호출한 곳을 되돌아가게 만듦
  • main함수 안에서 retrun문을 만나면 main함수가 리턴되며 프로그램 종료
  • return 값이 있는 함수에선 return다음 값을 적어주고, return 값이 없는 함수에서는 retrun만 써줌.
profile
보안 공부하는 대학교 4학년 / 시리즈에서 더욱 편하게 글을 찾아보실 수 있습니다:)

0개의 댓글