본문 바로가기
엘리스 AI 트랙 4기/elice AI track

[2주차] JavaScript의 조건문과 반복문

by _sweep 2022. 1. 20.

1월 20일 자 학습 내용 정리입니다.

 

 

 조건문

조건문이란 주어진 조건에 따라 결괏값을 출력하는 구문이다.

조건으로는 비교 연산자 또는 논리 연산자를 사용한다.

 

if문

if(조건) { ... }

 

if문에 주어진 조건이 참이라면 중괄호 안의 코드를 실행한다.

코드가 한 줄로 간단한 형식이라면 중괄호를 생략하고 작성해도 된다.

 

if ... else문

if(조건) { ... }
else { ... }

 

if문의 조건이 참이라면 if문의 코드를 실행하고 if문의 조건이 거짓이라면 else문의 코드를 실행한다.

 

if ... else if ... else문

if (조건) { ... }
else if (조건) { ... }
else { ... }

 

여러 개의 조건 분기를 생성할 때 사용한다.

if문이 거짓이라면 다음 줄에 있는 else if문의 조건을 살펴보고 참/거짓을 판별한다.

만약 참인 else if문이 있을 경우 해당 else if문의 코드를 실행한 뒤 아래의 else if문과 else문은 평가하지 않고 if문을 빠져나간다.

if문과 else if문이 모두 거짓일 경우 else문의 코드를 실행한다.

 

중첩 if문

if (조건) {
    if (조건) { ... }
    ...
}

 

if문이 중첩된 형태이다.

바깥의 if문이 참일 경우에만 안쪽 if문이 실행된다.

 

 

 반복문

for문

for(초기화한 변수값; 조건; 증감표시) { ... }

 

for문은 초기화한 변수값을 조건과 비교해 참/거짓을 판별한다.

참일 경우 중괄호 안의 코드를 수행한 후 증감표시에 의해 변수의 값이 증감한다.

바뀐 변수의 값을 또 조건과 비교한 후 참일 경우 다시 중괄호 안의 코드를 실행한다.

이 과정은 바뀐 변수의 값이 조건과 비교해 false의 값을 얻을 때까지 계속 반복된다.

 

while문

while(조건) { ... }

 

while문은 for문과 달리 변수를 초기화하고 증감할 부분이 없다.

그렇기 때문에 이 부분에 대해서는 따로 사용자가 설정해 주어야 한다.

 

while문은 조건이 참일 동안 중괄호 안의 코드를 실행한다.

따라서 무한루프에 빠지지 않으려면 while문을 탈출하는 조건을 잘 설정해 주는 것이 중요하다.

 

do ... while문

do { ... }
while (조건)

 

do ... while문은 while의 조건과 관계없이 먼저 do 키워드로 선언된 중괄호 안의 코드를 실행한다.

이후 while문의 조건을 살펴보며 참/거짓을 판별해 조건이 참일 경우 다시 중괄호 안의 코드를 실행하고 거짓일 경우 while문을 빠져나간다.

 

 

✏️ 예제

소수 판별

소수는 1과 자기 자신으로만 나누어 떨어지는 수이며 이외의 수로 나누어 떨어질 수 없다.

입력받은 수가 소수인지 판별하는 과정은 다음과 같다.

 

function isPrime(num) {
    if(num === 1) return false;
    let div = 2;
    
    while(num > div){
        if(num % div === 0) return false;
        else div++;
    }
    
    return true;
}

 

먼저 함수의 매개변수로 판별하고자 하는 수인 num을 입력받았다.

이때 1은 소수가 아니기 때문에 num이 1이면 바로 false를 리턴한다.

num이 1이 아닐 경우 2부터 나누어 보기 시작해야 하기 때문에 div라는 변수를 선언한 뒤 2로 초기화한다.

 

이후 나누고자 하는 수인 div가 num과 같아질 때까지 while문 안에서 num과 div를 나누어 보는 작업을 반복한다.

num이 div로 나누어 떨어진다면 num은 소수가 아니다.

따라서 이때에는 더이상 다음 결과를 계산해보지 않아도 되기 때문에 false를 리턴하고 즉시 함수를 종료한다.

num이 div로 나누어지지 않는다면 div의 값을 1 증가시키고 다시 while문의 조건과 비교해 loop를 돈다.

 

문자열 거꾸로 출력하기

function reverseString(str) {
    let reverseStr = "";
    
    for(let i = str.length - 1; i >= 0; i--)
    	reverseStr += str.charAt(i);
    
    return reverseStr;
}

 

함수의 매개변수로 입력받은 문자열을 str에 저장했다.

for문에서 변수 i를 입력받은 문자열 str의 길이 - 1로 초기화해 str의 인덱스에 접근하도록 했다.

이후 str의 0번째 인덱스까지 접근할 수 있도록 for문의 조건을 i >= 0으로 설정, i를 1씩 감소시키도록 했다.

 

for문 안에서 반복해서 loop를 돌며 입력받은 str의 마지막 문자부터 첫번째 문자까지 차례로 reverseStr이라는 빈 문자열에 삽입한다.

따라서 for문의 반복이 끝났을 때 reverseStr에는 str을 거꾸로 출력한 것과 같은 형태의 문자열이 저장되어 있다.

 

 

 

 

 

댓글