목록Programming (115)
Nagie's DevStory
프로그래밍에서의 함수는 수학의 함수와 비슷한 개념을 가지고 있지만 목적과 구현 방식에서의 차이가 있다. 주로 작업을 수행하고 모듈화하기 위해 사용되며 수학의 함수와는 다르게 다양한 입력과 출력을 처리하고 부수 효과를 가진다. 목적을 비교하자면 수학에서의 함수는 입력값을 받아 출력값을 무조건 반환하는 대에 비해 프로그래밍에서의 함수는 그냥 일종의 기능을 이루는 코드 덩어리다 거기다 입력이 있다고 무조건 반환하지도 않는다. 그리고 프로그래밍에서의 함수는 함수가 외부의 변수를 변경한다거나 하는 일종의 관여가 가능하며 외부 상태에 영향을 미친다. 수학에서의 함수는 그런 게 없다. 즉 외부 상태에 영향을 미치지 않는다는 것이다. 이것 외에도 다형성과 같은 차이점이 더 존재하지만 둘 다 입력값을 기준으로 어떤 결과..
조건문을 중첩할 수 있듯 반복문 역시 중첩이 가능하다. 반복문의 중첩도 조건문의 중첩처럼 제한이 없지만 중첩을 많이 하게 되면 코드 가독성이 심히 떨어진다. 아래의 예시 처럼 사용할 수 있다. //for 문의 중첩 예시 for(;;){ for(;;){ } } //while 문의 중첩 예시 while(){ while(){ } } //do while 문의 중첩 예시 do { do { } while(); } while();
프로그래밍하다 보면 조건의 조건을 검사하게 되는 경우가 생기는데 이럴 때 사용하는 게 조건문 중첩이다. 아래는 if ~ else 문의 중첩 예시이다. if(조건식1){ if(조건식1의 추가 조건식){ 조건식1과 조건식1의 추가 조건식에 해당할 때 수행할 코드; } else { 조건식1과 조건식1의 추가 조건식에 해당할 때 수행할 코드; } } else { 조건식1에 해당하지 않을때 수행할 코드; } 조건문을 이런 식으로 중첩하게 되면 복잡한 조건을 다룰 수 있게 된다. 물론 2중 3중 4중 중첩까지 가게 되면 CPU는 이해할지 몰라도 사람이 이해하기 어려워져 유지보수가 힘들어지니 적당히 쓰도록 하자 리누스 토르발스도 "들여쓰기를 4단계 이상 한다면, 어짜피 망친거니깐 프로그램 처음부터 다시 짜라." 라고..
continue; 와 break; 는 C를 포함한 많은 프로그래밍 언어에서 사용되는 제어문이다. continue; 와 break; 는 주로 반복문에서 사용이 되긴 하지만 조건문에서도 사용이 가능하다. 우선 continue; 문은 현재의 루프나 조건의 나머지 부분을 건너뛰고 다음 루프를 시작하는 데 사용된다. 즉 사용하게 되면 continue; 문 아래에 작성된 코드들은 깡그리 무시하고 다음 루프로 이동한다. 사용 예시는 아래와 같다. #include int main() { int i = 0; while (i < 10) { i++; if (i == 3) { continue; } printf_s("%d\n",i); } } 결과는 1 2 4 5 6 7 8 9 10 으로 나올 것이다. 다음은 break; 문을 ..
코드를 작성하다 보면 특정 구간에서 여러 번 반복시켜야 할 상황이 온다 예를 들면 변수에 값을 1씩 더하고 변숫값을 출력시켜야 한다는 상황이라 가정해 보자 #include int main () { int a = 0; a++; printf_s("%d" , a); a++; printf_s("%d" , a); (...) a++; printf_s("%d" , a); // a를 20번 더함... } 위의 코드처럼 작성한다면 분명히 소스 코드의 길이도 불필요하게 늘어날 것이고 늘어난 소스 코드의 길이 덕에 유지보수도 힘들 거다. 이러한 단순 작업을 편하게 해주는 녀석이 반복문이다. 위의 코드를 간단히 9줄로 축약할 수 있다. #include int main() { for (int a = 0; a