본문 바로가기
CLASS/HTLML,CSS,JS

#5-1 / Js(반복문,선택문)

by hingu 2024. 4. 24.

[반복문]

for(반복문 중 제일 느림 - 10000번 부터 속도 차이가 발생)
while
do~while

실무에선 배열 사용 많이함/배열은 foreach,forin 사용 (훨씬 빠름)

반복문(while문)
var a = 1; //초기값
while(a <= 10){ //종료값 및 범위값
    // console.log(a)  //출력
    a++; //증가 or 감소
}

//역순
var b = 20;
while( b >= 15){
    console.log(b);
    b--;
}

/*
    [응용문제2]
    while문을 이용하여
    1부터 10까지의 모든 숫자를 합한 결과값을 출력하시오
*/

var d=1; //초기값
var sum=0; //합계에 사용할 변수
while(d <= 10){ //종료값
    sum += d; //sum이라는 변수에 총 합계를 누적
    d++; //증가값
}
console.log(sum); //5

while + if

 /*
 while + if결합 : 1~10 까지 4,7,9 출력
 
 연산기호
 || : 여러개의 조건 중 한가지라도 맞을 경우
 && : 여러개의 조건이 모두 맞을 경우
 */
 
var e=1;
while(e < 11){
    if( e==4 || e ==7 || e==9 ){ //or 연산자 사용
        console.log(e)
    }
    e++;
}

/*
    [응용문제3]
    1~20까지의 숫자중 짝수의 숫자 모든 합계와
    홀수의 숫자 모든 합게의 결과값을 각각 출력하시오
*/

var f=0;
var f1 = 0; //짝수
var f2 = 0; //홀수
while(f < 21){
    if(f%2==0){ //짝수일 경우
        f1 += f; //f=f1+f; 와 같음
    }else{
        f2 += f;
    }
    f++;
}

console.log("짝수 합게 : " + f1);
console.log("홀수 합게 : " + f2);

 

do~while문 
while문보다빠름(사실 차이 별로 없음)

while문은 초기값 세팅을 반드시 해줘야함 
-> var a; (X) var a=0;(O)

var a = 0; //초기값
do{ //do시작
    console.log(a)
    a++;
}while(a<10); //종료값(범위값)


/*
[응용문제4]
20~27까지 모든 숫자의 곱한 결과값 출력
*/

var b=20;
var sum=1;
do{
    sum *= b;
    b++;
}while(b<=27)

console.log(sum); //89513424000

/*
사용자가 임의의 구구단 수를 입력합니다.
해당 구구단 결과값 중 짝수에 해당 되는 숫자만 출력하는 반복문 제작  
*/

var no=5; //사용자가 입력한 값
var w=1; //반복문 기초값
var sum=0;
do{
    var sum = no*w; //산술연산
    if(sum%2 == 0){ //짝수 조건
        console.log(no*w)
    }
    w++;
}while(w <= 9);

/*
[응용문제5]
1~100까지 숫자 중 2의배수와 3의배수가 모두 포함한 숫자 결과에 대한
카운팅 값을 출력 하시오
(== 2의배수와 3의배수의 공통 숫자 갯수는?)
*/

var z=1; //초기값
var count=0; //카운팅

do{
    if(z%3==0){
        if(z%2==0){
            count+=1; //2의배수와 3의배수 공통숫자가 등장할때마다 1씩 +
        }
    }
    z++;
}while(z < 101)

console.log(count);

 

더블 반복문
실무에서 무지 많이 쓰임
배열에 주로 사용

-더블 반복문(for)
var a,b;
for( a = 2; a <= 9; a++){ //큰 반복문 (2~9)
    for( b=1; b <= 9; b++){ //작은 본복문 (1~9) : 큰 반복문 한번 돌때 작은 반복문 9번 돈다
        console.log(a+" x "+b+" = "+(a*b)); //구구단 2단~9단 출력
    }
}



var c,d; //반복문 변수선언
for( c=1; c<=3; c++ ){ 
    for (d=1; d<=c; d++){ //큰 반복문 숫자에 따라 반복횟수가 달라짐
        console.log( c +" + " + d + " = " + (c+d))
    }
}
/* 
1 + 1 = 2
2 + 1 = 3
2 + 2 = 4
3 + 1 = 4
3 + 2 = 5
3 + 3 = 6   출력
*/

/*---------------------------------------------*/

/*
    [응용문제]
    해당 범우에 맞게 구구단 역순으로 출력하는 더블 반복문을 작성하시오

    결과
    5*1=5
    5*2=10
    5*3=15
    4*1=4
    4*2=8
    4*3=12
    ...
    2*3=6
*/

var aa,bb;
for( aa=5; aa>=2; aa-- ){
    for( bb=1; bb<=3; bb++ ){
        console.log(aa+"x"+bb+"="+aa*bb)
    }
}

 


- 더블for + if

var z,zz;
for(z=2; z<=9; z++){ //2~9
if(z%2==0){
    for(zz=1; zz<10; zz++){ //1~10
        var sum = z*zz;
        // console.log(z+" x "+ zz + " = " + sum)
    }
}
}

/*------------------------------------------*/
/*
[응용문제]
구구단 2~9단 중 결과값이 미만 미만의 구구단만 출력
*/

var s,ss;
for(s=2; s<=9; s++){
    for(ss=1; ss<=9; ss++){
        var sum = s*ss;
        if(sum < 50){
            console.log(s+" x "+ss+" = "+sum);
        }
    }
}

- 더블반복문 while
큰 반복문 -> 작은반복문 들어갈때 변수값을 초기화하기 때문에
작은 반복문의 변수값은 안쪽에 선언해줘야한다

/* 구구단 */
var a=2; //큰 반복문 초기값 
while(a<=9){ //큰 반복문 범위값 2~9

	//큰 반복문이 실행되며 변수값을 초기화
    var aa=1; //작은 반복문 초기값 
    while(aa<=9){ //작은반복문 범위값 1~9
        var sum = a*aa;
        console.log(sum);
        aa++;
    }   
    a++;
    
}

/*
[응용문제]
다음 결과처럼 출력이 되도록 while문으로 코드를 작성하시오

결과 
9*9 = 81
9*8 = 72
..
9*5 = 45

8*9 = 72
8*8 = 64
..
8*5 = 40

6*9 = 54
6*8 = 45
..
6*5 = 30
*/

var b = 9;
while( b >= 6 ){
    var bb= 9;
    while( bb >= 5){
        var sum = b*bb;
        console.log(b+"x"+ bb +"="+ sum);
        bb--;
    }
    b--;
}

- 더블while + for

/* 7단 ~ 8단 중에서 홀수 결과 */
var x = 7;
while(x <= 8){
    var xx=1;
    while(xx <= 9){
        var total = x*xx;
        if(total%2 != 0){ //홀수 조건일 경우
            console.log(total)
        }
        xx++;
    }
    x++;
}



/*
[응용문제]

구구단 2~9단까지 중 
홀수에 해당되는 구구단과
1~9까지 곱하는 결과값 중 홀수값의 총 합계는?

*/
var s = 2;
var total = 0;
while(s<=9){
    var ss=1;
    if(s%2 == 1){ //홀수에 해당되는 구구단
        while(ss <= 9){
            var sum = s*ss;
            if(sum%2 == 1){ //결과값의 홀수조건
                total += sum;
            }
            ss++;
        }
    }
    s++;
}
console.log(total) //600

- 더블 반복문(do~while)

var a=4; //큰 반복문 초기값
do{
    var b=4; //작은 반복문 초기값
    do{
        console.log(a+" x "+b +" = "+ a*b)
        b++;
    }while(b<=9)
    a++;
}while(a<=5);

/*-------------[응용문제]-----------------*/
/*
다음과 같이 출력되도록 더블 반복문을 이용하여
코드를 작성하시오.

5+5=10
6+5=11
6+6=12
7+5=12
7+6=13
7+7=14
8+5=13
8+6=14
8+7=15
8+8=16
9+5=14
9+6=15
9+7=16
9+8=17
9+9=18
*/

var z = 5;
do{
    var zz= 5;
    do{
        var sum = z+zz;
        console.log(z +"+"+ zz +"="+ sum)
        zz++;
    }while(zz <= z)
    z++;
}while(z <= 9)


/*-------------[응용문제]----------------*/
/* 
do~while문으로 해당 조건에 맞는 결과로 출력되도록 코드를 작성하시오.
(반복문,조건문)

결과
21 3
35 5
42 6
49 7
63 9
*/

var t=3;
do{
    if(t!=8 && t!=4){
        console.log(7*t);
    }
    t++;
}while(t<=9)

/*-----------------[응용문제]----------------*/
/*
더블 do~while문과 조건문을 이용하여 다음과 같은 결과와 동일하게
출력되는 코드를 작성하시오. (구구단)

2 
6
10
14
18

3
9
15
21
27

5
15
25
35
45
*/

var e=2;
do{
    if(e != 4){
        var ee=1;
        do{
            if(ee%2 ==1){
                console.log(e*ee);
            }
            ee++;
        }while(ee<=9)
    }
    e++;
}while(e<=5)

 


⭐ 복합 더블 반복문 : 실무에서는 거의 이렇게 섞어서 씀ㅋ

//구구단 2~5 출력
for(var a=2; a<=5; a++){ //for문
    var b=1; //do~while의 시작값
    do{
        console.log(a*b) //연산 및 출력
        b++; //do~while문 증감
    }while(b<=9)
}

 

⚡ 선택문(switch ~ case)
조건문과 다른점 : 조건문과 다르게 범위를 정할 수 없음 . 딱 지정값에만 실행
- 라디오버튼에 주로 사용 
- 문자와 숫자를 구분하며, 해당 case가 맞을 경우 break를 이용하여 해등 프로세스를 종료
- default 는 else와 비슷한 속성을 가진다
- 안에 조건무 반복문 모두 들어갈 수 있음^^(단, 무조건 case 안에만 들어 갈 수 있음)
  -> JAVA도 마찬가지ㅎ

var no=1; 
//문자와 숫자 구분 var no="1"; 작성시 default로 넘어감
//문자일경우 : 인자값 / 숫자일경우 : 인수값 (Java에서는 인자값이고만 함)

//switch 함수
switch(no){ //해당 변수값을 받음
    case 1: //파트
        console.log("숫자 1 선택하셨습니다.")
    break;
    case 2:
        console.log("숫자 2 선택하셨습니다.")
    break;
    default: //생략 가능 case만 써두됨
        console.log("기타 선택");
    break;
}

/*-----------------------------------------------*/

var lebel = 3;
var messeage;

switch(lebel){
    case 1:
        messeage = "일반회원";
    break;
    case 2:
        messeage = "실버회원";
    break;
    case 3:
        messeage = "골드회원"    
    break;
    default:
        messeage = "비회원"    
    break;
}
console.log(messeage)

/*-----------------------------------------------*/

//multi case(멀티 케이스)
var pay = "vbank";
switch(pay){
    case "무통장":
        console.log("무통장 입금")
    break;

	//multicase 사용함
    case "신용카드":
    case "card":
    case "CARD":
        console.log("신용카드 결제")
    break;

	//multicase 사용함
    case "가상계좌이체": case "bank": case "vbank":  //이렇게 쭉 붙여서 써도 됨
        console.log("가상계좌이체")
    break;

    case "휴대폰":
        console.log("휴대폰 결제")
    break;
}

- swich & 조건문 or 반복문

var lebel = 1;
var messeage;
var deep = true;

switch(lebel){
	//if,for,do~while,while 은 무조건 case 안에 작성
    case 1:
        if(deep == false){
            messeage = "일반회원";
        }else{
            messeage = "휴면회원";
        }
    break;
    case 2:
        messeage = "실버회원";
    break;
    case 3:
        messeage = "골드회원"    
    break;
    default:
        messeage = "비회원"    
    break;
}
console.log(messeage) //휴면회원

 

'CLASS > HTLML,CSS,JS' 카테고리의 다른 글

#6-1 / 배열,랜덤함수  (0) 2024.04.25
#5-2 / Js(함수)  (0) 2024.04.24
#4 / Js.1  (0) 2024.04.23
#3  (0) 2024.04.22
#2  (0) 2024.04.21