Post

[JavaScript] 제어문 (control statements)

[JavaScript] 제어문 (control statements)

제어문이란?

프로그램의 실행 과정을 제어하기 위해 사용하는 구문

조건문

조건에 따라 다음 문장을 선택적으로 실행

  • if
  • if~else
  • 다중 if~else
  • switch~case
반복문

동일한 명령을 여러 번 처리하거나 특정 연산을 반복적으로 처리

  • for
  • while
  • do~while
보조 제어문

조건문을 만나면 건너가거나 반복 수행을 종료, 반복문 내에서 사용

  • continue
  • break
  • label


조건문

if

조건식이 참(true)이면 블록 내의 문장을 처리하고, 거짓이면 블록을 빠져나감

1
2
3
4
5
6
7
8
9
10
if (조건식) {
  실행 문장;
}

if (조건식A) {
  실행 문장;
  if (조건식B) {
    실행 문장;
  }
}

if~else

조건식이 참(true)인 경우와 거짓(false)인 경우 처리할 문장이 각각 따로 있을 때 사용하는 제어문

1
2
3
4
5
6
if (age >= 19){
  result = "성인입니다";
}
else {
  result = "미성년자입니다.";
}

ex) 성별과 성년 구분하는 프로그램 만들기

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
var genter = "M"; // 남자(M), 여자(F)
var age = 21;

if(genter == "M"){
  if(age>=19){
    result = "남자 성인입니다.";
  } else {
    result = "남자 미성년자입니다.";
  }
} else {
  if(age>=19){
    result = "여자 성인입니다.";
  } else {
    result = "여자 미성년자입니다.";
  }
}
document.write("당신은"+ result +"<br>");

다중 if~else

여러 조건을 체크해야 할 때 사용

1
2
3
4
5
6
7
if(조건식-1){
  조건식-1 결과가 참일  실행할 문장;
} else if (조건식-2){
  조건식-2 결과가 참일  실행할 문장;
} else {
  조건식-1, 조건식-2 모두 거짓일  실행할 문장;
}

ex) 학점 환산 프로그램 만들기

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
var point = 93; //과목 점수
var grade = "";

if(point>100){
  document.write("0~100점 사이 값을 입력해야 합니다."+"<br>");
} else if(point>=90){
  grade = "A";
  document.write("아주 잘했어요."+"<br>");
} else if(point>=80){
  grade = "B";
  document.write("잘했어요"+"<br>");
} else if(point>=70){
  grade = "C";
  document.write("조금만 노력하면 잘할 수 있어요."+"<br>");
} else if(point>=60){
  grade = "D";
  document.write("좀 더 노력하세요."+"<br>");
} else {
  grade = "F";
  document.write("많이 노력하시기 바랍니다."+"<br>");
}

document.write("학생의 학점은 <b>"+ grade +"</b>입니다.");

switch~case

조건문을 체크하여 다음에 처리할 문장의 위치를 파악한 후 해당 문장으로 바로 가서 처리

1
2
3
4
5
6
7
8
9
10
switch (상수값){
  case n:
    실행 문장;
    break;
  case n:
    실행 문장;
    break;
  default:
    기본 실행 문장;
}

ex) 요일을 알려주는 프로그램 만들기

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
var day;
var week = new Date().getDay(); // 0(일요일)~6(토요일)

switch(week){
  case 0:
    day="일요일";
    break;
  case 1:
    day="월요일";
    break;
  case 2:
    day="화요일";
    break;
  case 3:
    day="수요일";
    break;
  case 4:
    day="목요일";
    break;
  case 5:
    day="금요일";
    break;
  case 6:
    day="토요일";
    break;
  default:
    day="없는 요일";
}
document.write("오늘은<b>"+ day +"</b>입니다.<br>");


반복문

for

1
2
3
4
// for문 형식
for(초기식; 조건식; 증감식){
  실행 문장;
}
  • 초기식: 반복 변수값을 초기화하여, for문이 처음 시작할 때 단 한 번만 실행
  • 조건식: 블록 내 문장을 얼마나 반복할지 결정하며, 조건식이 참인 동안 반복
  • 증감식: 초기식에서 초기화한 변수의 값을 증가 또는 감소

ex) 구구단 프로그램 만들기

1
2
3
4
5
6
7
8
var x, y;

for(x=2; x<=5; x++){
  document.write("<b>"+ x + "단<br>");
  for(y=1; y<=9; y++){
    document.write(x + "*" + y + "=" + x*y + "<br>");
  }
}

while

ex) 1부터 100까지 합 구하기

1
2
3
4
5
6
7
8
var a = 1;
var sum = 0;

while(a<=100){
  sum += a;
  a++;
}
document.write("1~100까지 합 : <b>"+ sum +"</b><br>");

ex) 1부터 10000까지 합 구하기

1
2
3
4
5
6
7
8
9
10
var b = 1;
var summ = 0;

while(1){
  summ += b;
  b++;
  if(b==10001)
  break;
}
document.write("1~10000 까지의 합 : <b>"+ summ + "<b>");

do~while문

ex) 1부터 100까지 합 구하기

1
2
3
4
5
6
7
8
9
var c = 1;
var summm = 0;

do {
  summm += c;
  c++;
} while(c<=100);

document.write("1~100까지 합 : <b>"+ summm +"</b><br>");


보조 제어문

break

for문, while문, do~while문과 같은 반복문이나
switch~case문 내에서 해당 블록을 강제적으로 벗어나 다음 문장을 처리하도록 할 때 사용

ex) break문으로 1부터 100까지 수 중 3의 배수 합 구하기

1
2
3
4
5
6
7
8
9
10
11
12
var d = 0;
var sum = 0;

while(1){
  d += 3;
  if(d>100)
    break;
  sum += d;
  document.write(d + " ");
}
document.write("<br><Br>");
document.write("1~100까지 수 중 3의 배수 합 : <b>"+ sum +"</b><br>");

continue

if문의 조건식이 참이면 continue문 이후 문장을 처리하지 않고 제어를 반복문의 시작 위치로 옮김

ex) continue문으로 1부터 100까지 수 중 3의 배수 합 구하기

1
2
3
4
5
6
7
8
9
10
11
var e = 0;
var sum = 0;

for(e=1; e<=100; e++){
  if(e%3 != 0)
    continue;
  sum += e;
  document.write(e + " ");
}
document.write("<br><br>");
document.write("1~100까지 수 중 3의 배수 합 : <b>" + sum + "</b><br>");

label

제어를 블록 바깥으로 옮김

1
2
3
4
5
6
7
8
9
10
11
var i, j;
outloop;
for(i=0; i<3; i++){
  inloop;
  for(j=0; j<3; j++){
    if(i===0 && j===0){
      continue outloop;
    }
    document.write("i = "+ i +", j = "+ j +"<br>");
  }
}
This post is licensed under CC BY 4.0 by the author.