혼공 C 3주차

김기재·2023년 7월 23일
0

혼공C

목록 보기
3/4

기본 미션

분명 용어 노트를 어디에다 뒀었는데... 저의 불찰로 인하여 아직까지 실종상태입니다... ;(

기본 미션을 정확히 지키지는 못하였지만.. 후에 프로그래밍 언어와 컴퓨터 구조를 더 구체적으로 배우고자.. 몇 가지 용어를 영어로도 외우고 있습니다..

해당 내용을 일부나마 적어보았씁니다..ㅎㅎ..

  • 변환 문자 (= 서식 지정자): format specifier
  • 소수(소수점을 사용하는 자료형): deciaml
    -> 십진법을 의미하기도 함.
  • 정수: integer
  • 연산자: operator, operators
  • 반복문: loop
  • 전위표기, 후위표기: prefix, postfix
  • 재귀함수 등 재귀식: recurse, recursive, recursion
  • 문자열: string, strings
  • 배열: array

선택 미션

#include <stdio.h>

int main(void)
{
	int age = 25, chest = 95;
	char size;

	if (age < 20)
	{
		if (chest >= 95) size = 'L';
		else if (chest < 85) size = 'S';
		else size = 'M';
	}
	
	else
	{
		if (chest >= 100) size = 'L';
		else if (chest < 90) size = 'S';
		else size = 'M';
	}

	printf("사이즈는 %c입니다.\n", size);
	return 0;
}

If문

  • 조건에 따라 실행문을 달리하는 형식.

  • if + ( 조건식 ) + { 실행문 }

  • if, else if, else

  • 실행문이 하나라면 중괄호로 묶지 않고 한 줄의 코드로 실행이 가능하지만, 두 줄 이상이라면 중괄호로 묶어 보기 편하게 만든다.

  • 조건이 여러 개라면 if 를 여러 번 쓰는 것보다 if else 를 쓰는 편이 최적이다.

여러개의 if ~ else if 코드의 경우, 조건식이 처음 if 문부터 마지막 else 문까지 차례대로 검사되고, 이전의 조건식이 실행되었다면 나머지 조건식은 실행되지 않고 넘어간다.

-> 논리적으로 순서를 짜야 함.


If문 중첩

: 불필요한 연산을 줄여 효율성을 높일 수 있음.

  • 분할 정복 기법 (divide and conquer)
    : 여러 가지 조건식을 일일이 if문으로 쓰기 보단 공통적으로 가진 조건의 특성을 기반으로 if문을 중첩하여 실행 효율을 높이는 기법

Dangling else Problem

: if문 중첩에서 else의 위치가 명확하지 않아 발생하는 코드 오류.

교재 p.143에 나온 중첩 if문을 예시로 보자.
7행의 if가 참이라면 실행할 문장은 9행의 if문 한 문장이 된다.
위에서 언급한대로, if문에서 실행할 코드가 한 문장이라면 굳이 중괄호를 쓰지 않아도 된다고 한 바 있다.
따라서 8행과 13행의 괄호를 제거해도 오류없이 실행될 것으로 보인다.

그러나 막상 중괄호를 제거하면?
14행의 else가 7행의 if문과 결합되지 않고, 내부 9행의 if문과 결합된다.

따라서 결론적으로, if~else 문에서 중괄호를 쓰는가 쓰지 않는가는 코드의 내용에 따라 달리 써야함을 알았다.


switch ~ case문

: 정수 조건식을 사용하여 각 조건(case)에 따라 실행문을 달리 함.
: 정수 조건식이 상수식과 일치하면 해당 case문을 실행함.
: case 문은 일반적으로 break( 사용 시 해당 블록을 벗어남 )를 포함함.
: break를 사용하지 않을 시 조건식이 상수식과 일치하는 case 문부터 마지막 case 문까지 차례대로 실행된다.

  • switch ( 조건으로 사용 될 정수식 )
  • case ( 조건식 - 상수식 매칭 ) :
    실행문
    break ;
  • default ( if 문에서 마지막 else와 비슷한 기능)
    실행문
    break ;

반복문

: 일정 조건을 만족하는 동안 같은 실행문을 반복.

while문

: 조건식을 먼저 검사하고 조건식이 참인 동안 실행문을 반복.
: 조건식 대신 참 값인 1 (혹은 ;;) 을 대입하여 사용할 경우 무한 반복하므로, while문 안에 반드시 해당 반복문을 중단시킬 코드를 대입해야 한다.

for문

: while문과 달리 처음부터 반복을 실행할 횟수를 결정할 수 있다.

  • for ( 초기식; 조건식; 증감식; )
    • 초기식: 반복과 관련하여 제일 초기 조건을 설정
    • 조건식: 초기식이 해당 조건식을 만족시킬 때까지를 목적으로 하여 종료 조건 설정
    • 증감식: 초기식이 조건식이 될 때까지 단계적으로 값을 증가 혹은 감소하도록 설정

do while문

: 조건식을 먼저 확인하는 while, for문과 달리 일단 반복할 문장을 맨 처음에 한 번 실행시킨 후에 조건을 확인한다.
: 즉 실행문을 최소한 한 번은 실행한다.


break

: 반복문 안에서 반복을 즉시 끝낼 때 사용
: 중첩 반복문일 경우 해당 반복문들을 바로 탈출
: switch ~ case문의 경우 해당 switch ~ case문만 탈출

continue

: 반복문의 일부를 건너 뜀
: 블록을 탈출하진 않고, 해당 반복문만.

profile
精神一到何事不成

1개의 댓글

comment-user-thumbnail
2023년 7월 23일

정리가 잘 된 글이네요. 도움이 됐습니다.

답글 달기