문과생애긔개발자_공부/Javascript

Javascript 04 (조건문, 반복문)

animeel 2022. 6. 19. 16:16

조건문과 반복문은 많이 쓰임

반복문과 array라는 데이터 타입은 궁합이 좋아서 잘 알아두어야함
여러 명령을 늘어놓지 않고 소스를 간단하게 작성할 수 있음
 
var sum = 0;
sum += 1;
sum += 2;
sum += 3;
sum += 4;
sum += 5;
document.write(“1부터 5까지 더하면 “ + sum);

 

이것이 1000줄이 된다면 1000개를 적어줘야하니까 굉장히 비효율적
for문을 써서 간단하게 표현해주는 것이다.
 
<script>
var sum = 0;

for(var i = 1; i < 6; i++) {
    sum += i;
}
document.write(“1부터 5까지 더하면 “ + sum);
</script>

 

var i = 1; 1번: 초기화 (for가 1개인 single loop는 초기화가 한번만 일어남, 아니라면 무한루프가 돌아감)
i < 6; 2번: 조건식 (i가 6보다 작은지 검증)
sum += i; 3번: 실행문 
i++; 4번: 증감식 (1->2가 되고 1번초기화가 아닌 2번 조건식으로 감 주의!!)
3번 조건식이 6이 될때까지 2->4까지 가고 6인 false가 되면 반복문을 빠져나감
 
 

구구단 프로그램

두 개 이상의 for문을 중첩해서 사용 —> nested for문이라고 함
먼저 실행하는 for문을 안쪽에, 나중에 실행하는 for문을 바깥쪽에 작성한다
 
<script>
for(var i = 2; i  <=  9; i++) {

	for(var j = 1; j <= 9; j++) {
	}
}
</script>
 
2단부터 구구단 시작하므로 2로 초기화 
9단까지므로 루프를 9까지 돌림 (첫번째 i가 2일때 내부 루프를 먼저 다 돌림)
j = 1;이 세번째 실행되고
그다음에 j를 증감해서 루프 9까지 돌림 
그다음에 바깥 i를 증감시켜서 (내부루프 다 돌리고) i가 9가 될때까지 루프 돌림
8 * 9 = 72번의 루프를 돌게 됨
내부 j는 계속 초기화가 되어야한다 (외부루프인 i가 1번만 초기화되는 것과 차이가 있음!!!!!!)
 
for(var i = 2; i <= 9; i++) {
	document.write(“<div>”)
	document.write(“<h3>” + i + “단</h3>”);
		
        for (var j = 1; j <= 9; j++) {
		document.write(i +” X “ + j + “ = “ + i * j + “<br>”);
		}
	document.write(“</div>”)
}
 
<h3>로 2단이라고 찍히고
그 다음에 내부루프 돌아서 실행시키고 <br>태그로 줄바꿈
그리고 증감태그로 가서 계속 j가 10이 될때까지 루프 돌리고 
i++해서 3단으로 넘어감
<h3>태그로 3단임을 알려주고 같은 내부루프 반복
i가 10일때 루프는 종료된다. (9단까지만 출력)
 

 

여러가지 반복문 실행하는 것 응용하고 실습할 필요가 있다!
생각해서 결과문 출력하는 것을 많이 연습해야함!
 

 

 
반복 횟수 기준이라면?? for문
특정 조건에 따라 반복한다면?? while, do…while문
 
가장 많이 쓰이는 것은 for문
한줄의 ()안에 초기화, 조건, 증감식까지 다 들어감
 
while은 초기화 먼저, 그다음 줄에 조건, 그 다음에 증감식으로 해서 여러줄로 표기함
 
while문은 무한루프일 때 사용한다. (무한루프 전용)
게임이나 자판기 같은 프로그램은 계속 돌아야하므로 while문을 사용
누군가 시스템을 종료할때만 빠져나가게 만들어서 사용한다고 생각하면 됨
꼭 빠져나가는 break문을 만들어줘야함
 
 
do…while문은 while문에서 파생된 것인데
일단 사용자에게 물어보는 프로그램이라고 생각하면 된다.
 
차이점은 아래와 같다.
var i = 0
	do {
	document.write(“반복 조건이 true이면 반복합니다. <br>”);
	i += 1;
	} 
while (i < 10);

 

그냥 while문 같은 경우에는 초기화 이후 조건이 만족하지 않으면 실행이 아예 안될 수 있지만
do…while문은 일단 docuement.write이 처음 한번은 무조건 실행된다고 볼 수 있음. 그 다음에 false라면 실행안함.

 

 
예를 들어 게임에서 “계속 하시겠습니까?” 이런식으로 띄우고 진행된다.
최소 한번은 실행할 거라고 예상되는 프로그램에서 do…while문을 사용하는 것이다.
 
 

팩토리얼 계산 프로그램

팩토리얼 개념 ------->    4! = 4 * 3 * 2 * 1

 

var n = prompt(“숫자를 입력하세요.”);
var nFact = 1;  //1을 기본값으로 지정
var i = 2; //1!이 1이기 때문에 2부터 시작한다.

while(i <= n) { //i가 n값이 될때까지 반복
nFact *= 1;
i++;
}

document.write(n + “! = nFact);
 
1!은 어차피 값이 1이므로 i를 2부터 시작해준다.
n!은 i값이 n이 될 때까지 반복하므로 while문 안에 i <= n이라는 조건 설정
 

 

처음 숫자를 4로 입력했을때 4!로 n = 4가 됨
i가 2일 때 2 <= 4조건이 성립하므로 nFact가 1, i가 2이므로  1 * 2 = 2
i++로 i가 3이 되고 나면
nFact가 2고 i가 3이므로 2 * 3 = 6
그 다음에 i++로 i값이 4가 되면 4 <= 4조건을 성립하여
nFact가 6이고 i가 4이므로 6 * 4 = 24
그 다음에 i++를 실행하면 i는 5가 되지만
while의 조건식에서 5 <= 4가 거짓이 되므로 루프를 빠져나가게 된다.
따라서 n이 4일때 4!은 4*3*2*1 = 24이다.
 
break문은 반복문의 흐름에서 바로 빠져나올때 사용
 
continue문
주어진 조건에 맞는 값을 만났을 때 실행하던 반복 문장을 건너뛰고 반복문의 맨 앞으로 되돌아간다.
 
2의 배수만 제외하고 출력하라는 문장을 만들고 싶다면
 
for(var i = 0; i <= 100; i++) {
	if(i % 2 == 0)  //짝수인지 확인
	continue;  //반복문장 if를 찍지 않고 i++로 돌아가서 홀수인 값만 나오게 됨
}
 
이상입니다~~! 열공빡공!