[JS] 기본문법 활용하기
조건문, 반복문을 구성하는 블록 {}
안에 다른 문법 표현이 포함될 수 있습니다. 이러한 규칙으로 다양한 문법 중첩 패턴이 생기는데 이 중에서 자주 사용되는 패턴으로는 if-if
, if-for
, for-if
, for-for
가 있습니다.
학습목표
- 변수, 연산자, 기본 문법을 활용하여 주어진 문제를 해결할 수 있다.
- 중첩된 조건문으로 구성된 프로그램을 작성하여 문제를 해결할 수 있다.
- 조건문 안에 반복문을 배치하여 주어진 문제를 해결할 수 있다.
- 반복문 안에 조건문을 배치하여 반복 수행 도중에 조건을 검사할 수 있다.
- 반복문을 중첩하여 주어진 문제를 해결할 수 있다.
#01. 변수의 유효성 범위 (변수의 스코프)
1. var 키워드로 선언된 변수의 경우
블록 ‘{}’ 안에서 선언된 변수는 블록의 실행 여부에 따라 블록 밖에서의 식별 여부가 결정됨.
블록 ‘{}’을 갖는 부분이 실행되지 않을 경우 블록 안에서 선언된 변수를 블록 밖에서 사용할 경우 할당되지 않은 undefined가 됨
2. let 키워드로 선언된 변수와 const 키워드로 선언된 상수의 경우
블록 밖에서 선언된 변수는 블록 안으로 침투할 수 있지만 블록 안에서 선언된 변수는 블록을 빠져나올 수 없음.
변수의 범위가 블록안으로 한정되므로 서로 다른 블록끼리는 중복 선언 가능
3. for문의 초기식에 대한 유효성 범위
var 키워드를 사용한 경우에는 초기식에서 선언된 변수가 for문 밖에서 식별 가능함.
let 키워드를 사용한 경우에는 초기식에서 선언된 변수는 for문 밖에서 식별 할 수 없음.
#02. if문 안에 포함된 흐름제어
1. if-if구조
특정 조건이 참으로 판단되어 블록안에 진입했을 때, 상세조건을 판별하는 구조.
if (조건) {
if (조건) {
...
}
} else if (조건) {
if (조건) {
...
} else {
...
}
} else {
if (조건) {
...
} else if (조건) {
...
} else {
...
}
}
2. if-for 구조
특정 조건이 참으로 판단되어 블록안에 진입했을 때, 반복을 수행하는 구조.
if (조건) {
for (초기식; 조건식; 증감식) {
...
}
}
#03. for문 안에서의 흐름제어
1. 반복문 안에서의 조건문
반복문 안에서 매 반복 수행시마다 조건을 판별한다.
주로 반복문에 사용되는 조건값(=초기식에서 생성한 변수)에 대한 조건 판별을 위해 사용된다.
2. For문 안의 For문
바깥의 반복문(부모)이 1회 수행할 때 마다 안쪽의 반복문(자식)이 매번 처음부터 새로 시작하는 이중 반복문 구조.
두 반복문간의 조건값이 서로 달라야 한다.
3. 반복범위 동적설정
자식 반복문의 조건식이 부모 반복문의 조건변수를 활용하여 구성되면 자식 반복문의 반복 범위에 변화를 줄 수 있다.
4. 반복문 안에서의 흐름 제어
무한루프
절대로 조건식이 종료되지 않는 형태의 반복문.
while (true) { // 무조건 반복. 종료되지 않는다 (무한루프)
...
}
반복문 제어하기
반복을 몇 번 수행해야 하는지 판단할 수 없는 경우 무한루프 형태로 지정하고 특정 조건이 충족되는지에 따라 반복의 중단 여부를 결정한다.
반복문의 흐름제어 기능을 갖는 키워드
continue
: 조건식으로 강제 이동 (for문의 경우는 증감식으로 이동함)break
: 현재 반복문을 강제로 종료하고 블록을 빠져 나간다.
연습문제
문제 1.
for문을 사용하여 0부터 10미만의 정수 중에서 홀수만을 큰수부터 출력하시오.
문제 2.
while문을 사용하여 0 부터 10 미만의 정수 중에서 홀수만을 큰수부터 출력하시오.
문제 3.
1부터 20 미만의 정수 중에서 2 또는 3의 배수인 수의 총합을 구하시오.
문제 4.
두 개의 주사위를 던졌을 때, 눈의 합이 6이 되는 모든 경우의 수를 출력하고 경우의 수는 총 몇가지 인지를 아래와 같이 출력하는 코드를 작성하시오.
[ 1, 5 ]
[ 2, 4 ]
[ 3, 3 ]
[ 4, 2 ]
[ 5, 1 ]
경우의 수는 5개 입니다.
문제 5.
for문을 중첩하여 실행하여 아래와 같은 출력 결과를 만드시오.
0 1 2 3
1 2 3 4
2 3 4 5
3 4 5 6
문제 6.
아래와 같은 출력 결과가 나타나도록 중첩 반복문을 for 문 형식으로 구현하시오.
1
12
123
1234
12345
123456
1234567
문제 7.
number라는 변수를 정의하고 1 혹은 2의 값을 임의로 할당하시오. 이 변수에는 1이나 2밖에 저장될 수 없습니다.
구구단 프로그램을 만들고자 한다.
전체를 출력하는 구구단이 아니라 number가 1일 때는 홀수 단(3, 5, 7, 9), number가 2일 때는 입력하면 짝수 단(2, 4, 6, 8)을 출력하는 프로그램을 완성하시오.