Search

반응형

'반복문'에 해당되는 글 3건

  1. 2022.06.27 [자바스크립트]do while문 사용하기 편. (루프와 반복)
  2. 2022.06.26 [자바스크립트]while문 사용하기 편. (루프와 반복)
반응형

안녕하세요. 신기한 연구소입니다.

요즘 블로그 포스팅을 자주 올리네요.

정신 차리고 공부해야죠. ㅎㅎ

이번 포스팅은 루프 반복문 중 do..while문에 대해 알아보겠습니다. 아주 쉽게요.

이전 포스팅에서 while문에 대해 알아봤는데요.

그렇다면,

do..while문과 while문은 다른 점이 무엇일까요?

do..while문도 while문처럼 조건이 true인 경우  블럭문의 구문들을 실행합니다.

구조는 다음과 같습니다.

1
2
3
do 
  실행문장;
  while(조건);
cs

while문 구조는 다음과 같습니다.

1
2
while(조건)
  실행문장;  
cs

do..while문은 실행 문장 뒤로 while(조건) 형태가 오고

while문은 먼저 조건을 실행하고 실행문장이 오는 형태입니다.

왜 그럴까요?

do..while문은 do(해라) 실행 문장으로 while(조건)의 true/false 여부를

따지지 않고 한 번은 무조건 실행한답니다.

do와 while문 사이의 실행문장을 실행하고

while문이 true인 동안은 실행문장을 계속 실행하게 됩니다.

while문은 조건이 false라면 한 번도 실행하지 않는다는 점이 다르지요.

1
2
3
4
5
var j = 0;
do {
    j++;
    console.log('j==>' + j);
}while(j < 10);
cs

do 블럭문은 무조건 1회 실행된다고 했습니다.

실행 후 while문의 조건을 확인하고 true면 다시 do 블럭문을 실행합니다.

false라면 while문 다음 명령어를 실행할 겁니다.

1
2
3
4
5
var k = 10;
do {
  k++;
  console.log('Now k ==>' + k);
while (k < 5);
cs

이 예제는 k에 10을 할당했습니다.

그리고 do..while문의 조건은 k가 5보다 작아야 합니다.

하지만 k는 10이기때문에 조건에 맞지 않아 false로 평가됩니다.

그렇다면 do..while문이기에

do 블럭문을 먼저 1회 실행은 합니다.

그래서 k++이 실행되고 k는 11로 할당됩니다.

로그는 Now k ==>11을 출력합니다.

while의 평가식 (k < 5)는 false가 되므로

더 이상 do블럭문을 실행하지 않고 while문을 종료합니다.

 

이해가 되셨나요?

while문과 do..while문의 차이점은

while문의 조건 평가가 false라도

do..while문은 무조건 1회는 실행한다는 것입니다.

이제 두 반복문에 대해 알아봤으니

상황에 맞게 잘 활용해서 사용하면 되겠네요.

즐 코딩하세요.

반응형
반응형

안녕하세요. 신기한 연구소입니다.

for문에 이어 또 다른 반복문 while문에 대해 알아볼게요.

while문은 for문과 달리 정말 심플하게 생겼습니다.

1
2
3
while(조건) {
  구문;
}
cs

달랑 조건만 있네요.

조건이 참이면 while문의 블록문을 계속 실행하게 됩니다.

반대로 거짓이라면 while문 안의 구문 실행을 멈추고 블록문을 벗어나고

다음 구문을 실행하게 됩니다.

{} 블록문이 필수는 아니지만 2줄 이상의 구문을 사용하거나

또는 한 줄이라도 가독성을 높이기 위해 { }를 사용합니다.

무슨 의미일까요?

while문 뒤 (조건) 이 부분이 중요한데요.

조건을 평가하면 true나 false 또는 그 값을 대신할 수 있는 조건이 오면 된다는 의미입니다.

예를 들어 살펴볼게요.

먼저 평가값이 true나 false라고 했으니 직접 그 값을 넣어볼 수 있겠네요.

아래처럼요.

while(true)

이 구문의 의미는 그냥 계속 반복해라~입니다. 무한루프라고 한답니다.

while(false)

이 구문은 아예 반복을 안 하겠네요.

while(a < 3)

변수 a값이 3보다 작은 상태면 true가 되어 계속 반복하고 

3과 같거나 크면 while문을 종료하게 된답니다.

1
2
3
4
5
6
7
var a = 0, b = 0;
 
while (a < 3 && b < 4) {
    a++;
    b++;
    console.log('a=>' + a + ' b=>' + b);
}
cs

이 경우는 && 연산사를 사용했습니다.

둘 다 true인 경우만 실행이 됩니다.

console.log는 3까지는 증가하고 로그를 보여주기 때문에

결과는 a=>3 b=>3까지 출력하고 a < 3에서 false가 돼서 while문을 빠져나옵니다.

예상대로 || 연산자로 변경해서 테스트해봅니다.

1
2
3
4
5
6
7
var a = 0, b = 0;
 
while (a < 3 || b < 4) {
    a++;
    b++;
    console.log('a=>' + a + ' b=>' + b);
}
cs

결과는 a=>4 b=>4까지 출력하고 a < 4 와 b < 4에서 

둘 다 false가 돼서 while문을 빠져나옵니다.

|| 연산자는 첫 비교문이 true면 뒤 비교문을 실행하지 않고

첫 비교문에 false이면 뒤 비교문을 실행합니다.

이때 ||연산자는 둘 다 true이거나 둘 중 하나만 true면 

평가는 true가 된다는 특징이 있습니다.

결국 둘 다 false가 돼야 false로 평가돼서 while문을 벗어날 수 있다는 의미입니다.

어떤 응답 값을 받을 때까지 기다렸다가 

값을 받게 되면 다음 구문을 실행하고 싶은 경우가 있을 겁니다.

엄마 올 때까지 여기서 기다리고 있어.

1
2
3
4
5
6
7
8
//엄마기다리기 while문
while(true) {
  if (엄마 옴?) {
    break;
  }else{
    기다려!
  }
}
cs

이 구문을 이해하셨나요?

우선 반복적으로 엄마가 왔는지 확인을 합니다.

그래서 while문을 사용했고

기다리다가 엄마가 오면 break문으로 while을 빠져나오면서

기다림을 그만하게 됩니다.

1
2
3
4
5
6
7
var selectedMenu = {menu : 'Americano',
        shot : 3,
        size : 'small',
        price : 4000};
while(selectedMenu){
    selectedMenu = {};
}
cs

어떤 결과가 나올까요?

selectedMenu 객체가 리터럴로 초기 할당이 되었기에 true가 되어

while문이 실행된답니다.

하지만 실행 구문을 보면 selectedMenu를 빈 값 {}으로 변경했습니다.

빈 값과 null은 다르답니다.

빈 값으로 할당이 된 것이기에 true가 되어 무한루프가 실행된답니다.

그럼 어떻게 하면 빠져나올 수 있을까요?

바로 null로 할당하면 된답니다.

selectedMenu = null;

 

이렇게 while문은 () 안의 조건을 평가해서 true값이 나오면 

while 블럭문 { } 내의 구문들을 실행합니다.

false가 될 때 까지요.

지금까지 while문에 대해 알아봤습니다.

이제 실전에서 while문으로 반복문을 만들 수 있게 되었습니다.

이번 포스팅은 여기까지 입니다.

즐 코딩하세요.

반응형