---
# System prepended metadata

title: 9. for문

---

# swich문과 삼항연산식
swich 문은 if문과 비슷하나 값이 딱 떨어질때만 사용 가능합니다.
```javascript=
let menu = 3

if(menu == 1){

  console.log("물건 사기")

} else if(menu == 2){  

  console.log("잔고 확인")

} else if(menu == 3){  

  console.log("히스토리확인")

} else {  

  console.log("홈으로 돌아가기")

}  
```
위의 if 문을 swich 문으로 바꿔 보겠습니다.
```javascript=
let menu = 3

switch (menu){

   case 1 :

     console.log("물건 사기")

     break; // case가 끝났음을 의미

   case 2 :

     console.log("잔고 확인")

     break;

   case 3 : 

     console.log("히스토리 확인")

     break;

   default : // if문의 else와 비슷한 역할

     console.log("홈으로 돌아가기")

 }
```
삼항 연산식은 if와 else만 있는 경우를 한줄로 써 줄 수 있는 기능입니다.
```javascript=
let menu = 8

if (menu <= 3) {

  console.log("범위안의 숫자입니다.")  

} else {

  console.log("범위 밖의 숫자입니다.")

}
```
위 if문을 삼항 연산식으로 사용하면 아래와 같습니다.
```javascript=
let menu = 8

//삼항연산식 조건 ? true 값 : false 값

let answer = menu <= 3 ? "범위안의 숫자입니다." : "범위 밖의 숫자입니다."

console.log(answer)

```
3항연산식은 조건이 많지 않고 return 하는게 딱 하나일때 쓰면 좋습니다.

3항연산식 안에 있는 값("범위안의 숫자입니다")이 반환되서 변수로 들어감

# 9.for문

for문은 반복문을 나타냅니다.

i를 변수로 만들고 i가 10보다 작을때까지 계산하게 됩니다.

```javascript=
for (let i = 0; i < 10; i++) {

  console.log("누나",i);

}
```
1에서 10까지 나오게 하려면 아래같이 작성하면 됩니다.
```javascript=
for (let i = 1 ;  i <= 10 ;  i++) {

console.log("누나",i);

}
```
i++는

i=i+1의 줄임말로

i+=2를 사용하면 짝수로 반복문을 만들 수 있습니다.
```javascript=
for (let i = 0; i <= 10; i +=2) {

console.log(i);

}
```
또는 if문을 사용해서 짝수 반복문을 만들 수도 있습니다.
```javascript=
for (let i = 0; i <= 10; i++) {

  if (i % 2 == 0) { // i를 2로 나눈 나머지 값이 0 이라면

    console.log(i);

  }

}
```
for 문 안에 for 문을 넣어 이중 for문을 만들수도 있습니다.

아래는 이중 for문으로 구구단을 구현한 예제 입니다

```javascript=
for (let i=2 ; i<10 ; i++){

    for(let j=1; j<10; j++){

    console.log( i + "x " + j + "=" + i*j);

    }

}
```
아래와 같이 while문을 사용해도 for문과 같은 값이 나옵니다.
```javascript=
let i=2

while(i<10){

  console.log("while문 실행", i)

  i++;

}
```
while문은 정확히 범위를 알때 사용하면 좋습니다. 보통은 아래와 같이 사용됩니다.
```javascript=
while(buttonclick == true){

  console.log("while문 실행")

}
```
for문은 배열이랑 같이 사용되는데
```javascript=
let fruit = ["banana","apple","grape","mango",]

for(let i=0; i<fruit.length; i++){ // length는 배열의 길이를 나타냄

  console.log(fruit[i])

}
```
이렇게 되면 결과값이 banana, apple, grape, mango가 나오게 됩니다.

만약에 반복문 끝에 탈출하고 싶다면 break를 쓰면 됩니다.
```javascript=
for(let i=1; i<=10; i++){

  console.log(i);

}
```
이 경우 0~10까지 출력
```javascript=
for(let i=1; i<=10; i++){

  console.log(i);

  if(i%7==0){  // i % 7는 변수 i를 7로 나눈 나머지를 나타냅니다. 

    console.log("i를 7로 나눈 값이 0이므로 7의 배수입니다.");

    break;

  }

}
```

1÷7= 0.1428
2÷7= 0.2857
3÷7= 0.4285
4÷7= 0.5714
5÷7= 0.7142
6÷7= 0.8571
7÷7= 1

이 경우는 7 이후로 출력이 되지 않습니다.

그렇다면 7÷7= 1인데 왜 7까지 출력이 되느냐

```nu=
if(i%7==0)는 반복문 바깥에서 실행되기 때문에

i가 이미 7일 때 이 부분이 실행됩니다.

그렇기 때문에 7의 배수를 출력한 이후에 

"i를 7로 나눈 값이 0이므로 7의 배수입니다." 문구가 출력됩니다.

```
for문, while문을 무한으로 반복하고 싶다면! 아래와같이 쓰면 됩니다.
```javascript=
for(;;){

  console.log("for문의 무한 반복")

}

while(true){

  console.log("while문의 무한 반복")

}
```
단 브라우저가 멈출 수 있으시 테스트시 주의!

### array.length

length란 모든 배열이 가지고 있는 기본 속성입니다. 

배열의 길이값을 반환해줍니다(배열의 아이템 개수)
```javascript=
for(let i=0;i<array.length;i++)
```
그래서 이렇게 작성하게되면 배열의 시작부터 끝까지 반복이 됩니다.

# 문제1. 
### 1~100까지 더하는 for 문을 만들고 결과를 출력
```javascript=
let sum = 0

for(let i=1;i<=100;i++){
    
 sum+=i //sum에 i를 더하고 다시 sum에 넣으시오    
}
//0+1 = 1
//1+2 = 3
//3+3 = 6
//6+4 = 10
//10+5 = 15
//이런식으로 100까지 진행됩니다.

console.log(sum)
```

# 문제2.
### 1~100까지 홀수만 출력
```javascript=
for(let i=1;i<=100;i+=2){
  console.log(i)
}
```
정답에는 위 같이 나와있으나 shall 에서 실행하면 1부터 99까지 나옴
```javascript=
for(let i = 1; i <= 100; i++) {
  if(i % 2 == 0) {
    console.log(i);
  }
}
```
그래서 위와 같은 결과 재 도출

참고로 홀수만 나오는 프로그램은 아래와 같습니다.
```javascript=
for(let i = 1; i <= 100; i++) {
  if(i % 2 !== 0) {
    console.log(i);
  }
}
```


# 문제3.
### 3,6,9 게임에서 3이랑 6, 9가 나올때마다 짝 하는 프로그램을 짜 보세요
```javascript=
// 36 에서 3, 6 을 두번 짝짝 해야 하므로 문자로 변환
for (let i = 1; i <= 50; i++) {

    let stringValue = i.toString()//i라는 숫자를 문자열로 변환

    let result = "" // 나중에 프린트 하고 싶은 결과 값 1,2 짝, 짝짝 등

    for (let j = 0; j < stringValue.length; j++) { 
      // 문자열의 길이 1,1,1,1,1,1,1,1,1,2,2,2,2, 이런식의 길이

        if (stringValue[j] === "3" || stringValue[j] === "6" || stringValue[j] === "9") {

            result += "짝" // result에 짝을 넣으세요
          //result = result + "짝"
          
          //result + "짝" 이 경우는 result에 짝짝이 안되고 항상 짝만 가능함

        }

    }

  console.log(result.length > 0 ? result : i)
    
  //result의 길이에 0보다 큰 1이상 있으면(짝,짝짝) 짝 종류를 프린트 해주고
  //result에 결과가 아무것도 없으면 i(숫자)를 프린트 해주세요
}
```
# 문제4.
### 주어진 변수가 소수이면 true 아니면 false를 출력하는 프로그램

소수(Prime number)는 1보다 크고 자기 자신과 1을 제외한 다른 어떤 자연수로도 나누어 떨어지지 않는 자연수입니다. 다시 말해, 소수는 오직 1과 자기 자신으로만 나누어 떨어지는 수를 말합니다. 예)2, 3, 5, 7, 11, 13, 17, 19

```javascript=
let n = 11 // 변수

let isPrime = true // isPrime이라는 변수를 선언하고 일단, true로 초기화합니다.

if (n === 1) { // 1은 소수가 아니므로 isPrime을 false로 설정합니다.

  isPrime = false

}

for (let i = 2; i < n; i++) { // 그 후, 2부터 n전까지 반복문을 실행합니다

  if (n % i == 0) {      
      
      // 각 반복에서 n을 i로 나누었을 때 나머지가 0인지 확인합니다. 
      // 즉, n은 i로 나누어 떨어지는 수이므로 n은 소수가 아닙니다. 
      // 따라서 isPrime을 false로 설정합니다.

    isPrime = false
      // 마지막으로, isPrime 변수의 값을 출력하여 n이 소수인지 아닌지를 확인합니다.

  }

}

console.log("변수는 소수가 맞나요? :",isPrime)
```
