2013-10-20 3 views
2

이것은 곧바로 코딩하는 질문이 아니며 특정 코드가 필요하지 않습니다. 내가 이해하려고 애 쓰고있는 것이 일반적인 질문입니다.유효성 검사/변수 가드 검사의 if 문과 if 문의 차이점은 무엇입니까?

유효성 검사/변수 가드 검사의 if 문과 if 문과의 차이점은 무엇입니까?

강사가 if 문 (유효성 검사/변수 가드 검사 제외)을 사용하지 않고 함수를 작성하라고 말했기 때문에 필자에게 물어 보았습니다. 그 차이점에 대해 약간 혼란스러워합니다. 감사!

답변

1

해당 진술을 사용하는 목적에서만 진술 자체에 특별한 차이가 없습니다.

입력 매개 변수가 사양에 유효한지 (예 : 색인이 음수가 아니고 배열 범위 내에 있음) 조건을 추가하면 강사가 솔루션을 수락 할 것이라고 말합니다. 반면에 조건문을 사용하여 함수 출력을 계산하면 강사는 솔루션을 수용 할 수 있다고 생각하지 않습니다.

C는 매개 변수의 유효성을 확인하는 다른 방법, 즉 assert 기능을 제공합니다. 이 명시 적으로 if 없지만, 프로그램이 조건을 위반하는 경우 휴식 것이 : 당신의 프로그램이 허용 될 경우

void setArrayElementSafe(int *array, size_t size, size_t index, int newValue) { 
    assert(index < size); // End the program if index is outside bounds 
    array[index] = newValue; 
} 

쉬운 시험보고 여부를하면 assert과 함께 모든 if의를 대체 할 수 있는지 확인하는 것입니다 (실제로 코드를 작성하지 않고 코드를 작성하여 가능한지 확인하십시오).

+0

그렇다면 if (function (x, y)> 10) 등 ...은 용납 될 수없는 것입니까? 같은 if (result> 10) 등 반대? – Karen

+0

@ 카렌 자세한 내용을 모르겠지만 (if (result> 10)을 확인하는 목적이 오류를보고하는 것이 아닌 한)이 둘 모두가 유효하지 않은 것처럼 보입니다. – dasblinkenlight

2

아무런 차이가 없으며, if 문의 종류는 하나뿐입니다. 조건은 if 문의 특정 "유형"이 아닌 프로그램 구조에 있습니다. 강사는 "guard"변수를 확인하는 것을 제외하고 불필요한 if 문을 사용하지 말 것을 요구합니다. 아마도 if을 사용하여 작업을 해결할 수있는 프로세스가있을 것입니다.

0

전혀 차이가 없습니다. if 진술은 유효성 확인을위한 것입니다. if 문에는 어떤 유형이나 클래스도 없습니다.

1

코드에서 if 문을 모두 제거 할 수 있고 올바른 입력을 제공하면 코드가 올바르게 작동 할 경우 강사 규칙을 준수한다는 의미입니다. 즉, 허용되는 유일한 if 진술은 전제 조건 및 가정을 확인하는 것이지만, 은 아니고 코드의 알고리즘 논리 일부입니다.