웹에플리케이션 만들기 – JS, PHP 프로그래밍 10 : 반복문

이번 시간에는 반복문에 대해서 알아보겠습니다 반복문

반복이라는 거 반복이 뭘까요? 반복적인 작업 우리 인간이 컴퓨터나 기계를 사용하는 이유 중의 하나는 인간이 잘못하는 것을 기계는 잘하기 때문일 겁니다 그 중의 하나가 바로 반복적인 작업일 것인데요 사람은 반복적인 작업을 잘못하죠

실수도하고, 졸기도하고, 지루해하기도하고 그런데 기계는 반복을 너무나 좋아해요 그래서 이 조건문이라고 하는 것이 기계를 똑똑하게 하는 아주 결정적인 것이었다면 이 반복문은 이 반복적인 작업을 통해서 무언가 많은 일을 처리할 수 있도록 하는, 이 기계를 아주 강력하게 하는 그런 요소라고 볼 수 있습니다 이 반복문까지 하면 우리가 프로그래밍의 기본적인 가장 중요하다고 하는 본질적인 것들은 다 배우는 거예요 그리고 이 반복문 이후에 나오는 뭐 함수니 객체 지향이니, 각종 디자인 패턴이니 하는 여러 가지 개념들이 어마어마하게 있긴 한데 바로 반복문 뒤에 나오는 다른 개념들은 우리가 앞에서 데이터

데이터 문자 뭐 이런 거 배웠잖아요? 그리고 반복문까지 크게 그 딱 거기까지에서 만들어지는 그 도구들을 이용해서 우리가 실제로 무언가를 만들게 되는데 그 과정에서, 이 프로그램이 커지는 과정에서 어마어마하게 많은 문제들이 발생을 합니다 아주 복잡해지기 때문에 생기는 문제에요 바로 그러한 복잡해져서 생기는 문제들을 뒷수습하는, 아니면 예방하는 그런 것들이 이 뒤쪽으로 있는 기술들입니다 뒤쪽으로 기능들이에요

그래서 여기까지 하셨다면 여러분은 이 프로그래밍을 위한 가장 중요한 트레이닝은 다 끝난 겁니다 Javascript와 php의 반복문의 차이를 보면 없어요 예 거의 똑같습니다 최소한 이거는 똑같아요

보시는 것처럼 while이라는 것이 나타나면 이 두 언어 모두 해석하는 엔진이 “아 이제, 음

반복문이 시작이 되겠구나” 그리고 괄호가 나오면 이 안에는 if랑 똑같습니다 if도 이런 구조죠 마찬가지잖아요 그래서 여기에는 true나 false 둘 중의 하나가 올 수 있는데 이런 데이터 타입을 boolean이라고 부른다고 했죠? true 아니면 false 둘 중의 하나가 온다

그래서 여기에 위치하는 이곳에 오는 정보가 true라면 여기에 있는 이 중괄호에 있는 구문이 반복적으로 실행이 됩니다 언제까지? 이곳이, 자 여기 이 부분이 false가 올 때까지 true면 반복되고 false가 올 때까지 아시겠죠? php도 마찬가지 지금부터 실습으로 들어가 보죠

반복문을 한번 사용해보죠 우선 Javascript에서부터 해볼게요 여러분들, 저 따라하지 마시구요, 일단은 while 그리고 true를 넣으면 저 반복문은 끝나지 않는 반복문이 됩니다 document

write 그리고 “hello world”라고 이렇게 하고 실행을 하면 끝나지 않는 반복문이기 때문에 컴퓨터에게 큰 누가 돼요 실행하기 전에 작업관리자를 띄워서 어떤 일이 생기는 지를 한번 볼까요? 실행을 시켰습니다 어때요? 계속해서 삥글삥글 돌면서 끝나지 않고 있어요 그리고 지금 제가 실행한 이 이 탭은 CPU 점유율이 12% 꽤 높게 유지되고 있는 것을 볼 수가 있습니다

메모리도 계속해서 올라가고 있어요 뭔가 컴퓨터에 자원을 탈탈 털어가고 있는 상황입니다 이게 계속되면 영원히 계속되지 않고요 보시는 것처럼 웹브라우저는 예, 사용자들이 아주 헤비(heavy)한 일을 처리하지 않을 거라고 간주하기 때문에 적당한 시점에서 이렇게 경고창을 띄웁니다 대기를 누르면 계속되고 그리고 페이지 종료를 하면 페이지가 끝나게 될 거예요

그럼 이런 에러 페이지가 뜨죠? 이거는 이제 그 무한루프가 돈 겁니다 이 무한루프는 여러분이 프로그래밍을 하는 과정에서 생길 수 있는 큰 에러(error) 중의 하나에요 물론 이렇게 true는 그냥 딱 때려 박으면 당연히 무한루프가 생기지만 저렇게 하지 않는 경우에도 무한루프가 생길 때도 있습니다 또는 작업이 너무 헤비(heavy)하면 무한루프인 것 같은 상황에 빠질 수도 있기 때문에 그런 경우를 잘 처리하기 위한 여러 가지 기법들이 또 존재하는 거죠 그리고 반면에 여기다가 false라고 이렇게 적어 주면 어떻게 될까요? 실행시켰을 때 아무것도 출력되지 않습니다 왜냐? false기 때문에 얘가 실행될 기회조차 없었던 것이죠

그러면 이렇게 한번해볼까요 $i 아니죠 I죠 헤깔렸어요 i의 값을 0을 줍니다

i라는 변수는 현재 0이에요 그리고 i가 10보다 작으냐고 되어있습니다 여기 띄어쓰기는 가독성을 위해서 에요 그러니까 띄어 써도 되고 안 해도 됩니다 얘도 마찬가지로 이렇게 해도 되고요

이렇게 되어 있고요 그리고 i가 i를 I+1이라고 이렇게 주면 어떻게 될까요? 결론적으로 말씀드리면 실행을 시키면 이렇게 “hello world”가 쭉 찍히는 것을 볼 수 가있어요 그런데 이게 좀 줄바꿈이 되면 더 좋겠죠? 안 배웠던 거 HTML에서 <br /> 이렇게 하면 이것은 뭐냐면 줄바꿈이라는 의미의 태그(tag)입니다 HTML 태그(tag)에요

이렇게 됩니다 “hello world”가 쭉 내려오죠? 어떻게 된 건지 한번 풀어볼까요? 이게 실행이 되면 현재 i의 값은 뭘까요? 0입니다 i의 값은 0 그리고 여기 있는 while이 실행이 되면 제일 먼저 요기가 실행이 되요 그러면 현재 i의 값은 0인 상태죠? 0과 10을 비교합니다

0이 10보다 작은 가요? 작죠! 그러니까 여기에 있는 이 값은 true가 되죠 그러면 여기가 true가 되니까 이 부분이 실행이 돼서 “Hello World”가 이렇게 실행이 되고 그 다음에 현재 i의 값이 뭐에요? 0이죠? 0에다가 1을 더했어요 그럼 1이죠? 1이 i의 값이 됩니다 그렇게 한 바퀴 돌면 그 다음에 다시 여기에 있는 이 값을 체크합니다 현재 i의 값은 뭐에요? 1이고 1은 10보다 작죠? 그럼 true가되는 거죠

true기 때문에 여기가 실행이 되고요 hello world<br />이 실행이 돼서 얘가 출력이 됩니다 그럼 i의 값은 현재 1이죠? 1+1은 2죠? 그럼 이제 i는 2가돼요 그런 식으로 계속 반복, 반복, 반복을 하다가 i의 값이 9가 된 상태에서 10이랑 비교하면 얘 참이니까, 얘 실행이 되고, 여기에서 i는 9고 9+1이면 10 i는 10이 된 상태에요

그러면 10이 10보다 작나요? 아니죠 그러면 false가 되기 때문에 여기는 false가 되죠 자연스럽게 이 반복문은 종료되게 됩니다 이 흐름을 잘 이해하셔야 돼요 반복문은 아주 중요한 부분이에요

php도 똑같습니다 i는 0이라고 하고요 while i가 10 보다 작은 지를 체크하고 10 보다 작다면 10 보다 작은 동안에 echo “hello world” 그리고 <br /> 이렇게 하고 여기에서 i의 값을 i+1이라고 주고 실행을 시키면 보시는 것처럼 php도 Javascript처럼 똑같이 실행되는 것을 볼 수 가 있습니다 이게 반복문의 기본적인 동작이에요 그런데 이것만으로는 별로 효용이 느껴지지 않죠

하지만 진짜 효용은 우리 뒤에 데이터베이스를 하는 쪽에서 데이터베이스를 배우는 부분에서 여러분들이 알게 될 거구요 한 가지 더 장식 삼아서 좀 한 번 해볼 만한 거는 여기 있는 이 그 태그(tag)들을 출력되는 것들을 지금 그냥 <br /> 태그로 구분하고 있거든요? 이 줄바꿈을 하는 <br /> 태그 그런데 그게 아니고 리스트(list)로 한번 표현을 해보자는 거죠 <ul>, </ul> 태그를 이렇게 감싸줍니다 그리고 document

write 안에 있는 hello world를 <li>로 감싸줘요 이렇게요 그리고 실행을 시켜볼까요? 보시는 것처럼 리스트로 표현이 되고 있습니다 그리고 여기에서 php쪽도 마찬가지로 <ul> 그리고 </ul>이라고 이렇게 해주고요 echo에다가 <li> 그리고 이 부분도 닫히는 </li>라고 해주면 보시는 것처럼 php도 이런 for문, 아니 이런 반복문을 이용해서 이렇게 리스트 형태로 표현할 수 가있는 것이죠

즉, php나 Javascript나 웹 위에서 동작하도록 기본적으로 고안된 언어들이기 때문에 여러분들이 이런 언어들을 이용해서 HTML을 프로그래밍적으로 잘 생성할 수 있는 테크닉들을 잘 익히셔야지 좋은 웹프로그래밍을 할 수 있게 되는 거예요 이렇게 해서 반복문에 대한 얘기는 여기까지 하겠습니다