16. for 문
16. for 문
16-1. for 문의 활용
도시 배열을 다시 한 번 봅시다.
let cities = ["서울", "대전", "대구", "부산", "광주", "제주도"];
만약 home
이 "서울"이면, "아, 여기 사시는군요"라고 alert
를 띄우고 싶습니다.
let home = "서울";
if (cities[0] === home) {
alert("아, 여기 사시는군요");
} else if (cities[1] === home) {
alert("아, 여기 사시는군요");
} else if (cities[2] === home) {
alert("아, 여기 사시는군요");
} else if (cities[3] === home) {
alert("아, 여기 사시는군요");
}
만약 도시가 50개라면, 코드에 index
를 0부터 49까지 추가하여 코드가 최소 100줄 정도 늘어날 것 같습니다 😆 (아이고...!)
let home = "서울";
if (cities[0] === home) {
alert("아, 여기 사시는군요");
} else if (cities[1] === home) {
alert("아, 여기 사시는군요");
}
// cities[2] ... cities[47] 까지 계속..
else if (cities[48] === home) {
alert("아, 여기 사시는군요");
} else if (cities[49] === home) {
alert("아, 여기 사시는군요");
}
그러나 우리가 프로그래밍을 배우는 가장 큰 이유는 단순 반복을 줄이기 위해서가 아닐까요? 이렇게 비효율적인 코드를 for
반복 문을 사용하면 짧게 줄일 수 있습니다.
for (let i = 0; i <= 50; i++) {
if (cities[i] === home) {
alert("아, 여기 사시는군요");
}
}
16-2. for 문의 사용법
for
문을 사용하면 코드를 원하는 만큼 반복시킬 수 있습니다.
실행 조건에 따라 언제부터 언제까지 반복하게 될 것이라고 알려주기만 하면 됩니다.
for
문이 사용된 조금 더 간단한 예시를 보겠습니다. 아래 코드를 실행해봐주세요.
let count = 1;
for (let i = 0; i <= 5; i++) {
count = count + 1;
}
형태는 아래와 같습니다.
for (반복조건) {
// 반복조건이 맞으면 실행할 코드
}
반복조건을 말로 표현하면,
- 0부터 5까지 1씩 증가 시키면서 for 문의
{}
내부를 실행 하라는 뜻입니다. i
는 1씩 증가하면서 0, 1, 2, 3, 4, 5까지 증가하고,for
문 내부의 코드 총 6번 실행됩니다.i
가 5가 될때까지for
문의{}
안을 실행하다가, 6이 되면i <= 5
라는 식은false
가 됩니다. (6 > 5)- 따라서
{}
내부로 들어가지 못하고,{}
밖으로 벗어납니다. - 그렇다면
i
가 0, 1, 2, 3, 4, 5 일 때 실행하게 되니for
문이 총 6번 실행됩니다.
조건의 표현은 다른데 결과는 똑같은 코드를 짜보았습니다.
let count = 1;
for (let i = 0; i < 6; i++) {
count = count + 1;
}
for
문의 종료 조건(끝 값)을i <= 5
에서i < 6
으로 변경하였습니다.- 코드에서
<=
와5
를 수정해서 직접 확인해보세요. - 6보다 작을때까지 실행하고
for
문이 끝나기 때문에, i
가 0, 1, 2, 3, 4, 5일때만 실행하여 결국for
문을 반복하는 횟수는 똑같습니다.
16-3. 반복문 내부의 조건문
const home = "대전";
const cities = ["서울", "대전", "대구", "부산", "광주", "제주도"];
for (let i = 0; i <= 5; i++) {
if (cities[i] === home) {
console.log("아, "+ cities[i] +" 사시는군요");
}
}
-
i
가 0일 때,cities[0]
과home
을 비교합니다. -
"서울" === "대전"
-
false
이므로if
문{}
내부로 들어가지 않고i
가 0일때의for
문은 끝납니다. -
그 다음,
i
가 1이 증가하여i
가 1이 되면,cities[1]
과home
을 비교합니다. -
"대전" === "대전"
-
true
이므로if
문이 실행됩니다. -
이렇게
i
가 5가 될 때까지if
조건을 확인하며for
문이 실행되고 종료 조건을 만족하면 반복이 마무리됩니다. -
만약 배열이 아래와 같았다면
console.log
가 세번 떴을 것입니다.const cities = ["서울", "대전", "대구", "대전", "광주", "대전"];
for
문에서i
가 1, 3, 5일 때if
문이 실행되는 것이죠.
이해 되셨나요? 반복문과 조건문은 매우 중요합니다. 확실히 이해가 될 때까지 코드를 작성해보시고, 변수 값이나, 배열의 길이, 배열의 요소를 수정해 가면서 console.log
로 출력하여 확인해보세요.
16-4. 반복문의 다양한 활용
더 다양한 반복조건을 한 번 봅시다.
for (var i = 2; i < 10; i = i + 2)
다른 것은 비슷해 보이는데, 증가 값이 i++
으로 1씩 증가하는게 아니라 i = i + 2
라고 작성되어 있네요.
i
는 2부터 시작하여- 10보다 작을 때까지
- 2씩 증가 시키면서
for
문을 돌린다. i
가 2,4,6,8 으로 2씩 증가하며for
문을 총 4번 반복합니다.i
도for
문을 돌며 계속 변하는 값입니다.for
문 조건의 마지막에i = i + 2
는 원래의i
에 2씩 더한다는 뜻이므로for
문이 한 번 돌 때마다i
는 2씩 증가하는 것입니다.
또 다른 예시를 살펴보겠습니다.
for (var i = 10; i > 7; i--)
i
는 10부터 시작하여- 7보다 클때까지 (7보다 클 동안만)
- 1씩 감소하면서
for
문 안의 코드를 실행합니다. i
가 10, 9, 8 으로 1씩 감소하며for
문을 총 3번 반복합니다.
16-5. 반복문과 배열
직접 작성하고 확인해보고 계신거 맞으시죠?!! 다시 한 번 처음에 봤던 코드를 보겠습니다.
cities
배열의 길이는 4 이므로, for
문을 4번 돌리기 위해 i
가 0부터 3까지 1씩 증가하여 (0,1,2,3) 총 4번 실행할 수 있도록 조건을 작성하였습니다.
const home = "대전";
let cities = ["서울", "대전", "대구", "부산"];
for (let i = 0; i <= 3; i++) {
if (cities[i] === home) {
console.log("아, "+ cities[i] +" 사시는군요");
}
}
하지만 대부분의 경우 배열의 길이가 얼마나 되는지 알지 못합니다. 프론트엔드 코드에서 직접 배열을 생성하지 않고 외부에서 받아오는 경우가 있고, 또 너무 배열이 길어서 길이를 셀 수 없는 경우도 있습니다.
이러한 경우, 배열의 길이가 얼마나 되는지 알 수 있는 방법이 있습니다. 배열의 길이를 알면 그만큼 for
문을 반복하면 되겠죠. 배열은 length
라는 속성을 가지고 있습니다.
let cities = ["서울", "대전", "대구", "대전", "광주", "대전"];
console.log(cities.length) // cities 배열의 요소는 총 6개 이므로 6 이라는 숫자가 반환됩니다.
for (var i = 0; i < cities.length; i++) {
if (cities[i] === home) {
alert("아, 여기 사시는군요");
}
}
- `for (var i = 0; i<cities.length; i++)`
- 가운데 비교연산자를 주의하세요.
<=
가 아닌<
를 사용하고 있습니다. - 배열의 길이는 6 이므로 총 6번의 반복문이 실행되어야 합니다.
i
는 0부터 5까지 총 6번이 실행되어야 하므로 배열의 길이보다 작을때까지 반복문을 실행합니다.- 만약
<=
작거나 같다는 비교연산자를 사용하면 i
는 0,1,2,3,4,5,6 까지 실행되어 총 7번의 반복문을 실행합니다.
Assignment
findSmallestElement 함수를 구현해 주세요.
-
findSmallestElement
의 arr
인자는 숫자 값으로만 이루어진 배열입니다.
-
arr
의 값들 중 가장 작은 값을 리턴 해주세요.
-
만일 arr
가 비어있으면 0을 리턴 해주세요.
-
예를 들어, 다음과 같은 배열이 인자(input)으로 들어왔다면 1이 리턴 되어야 합니다.
[20, 200, 23, 1, 3, 9]
// 강의 내용과 관련된 코드를 작성해주세요.
let count = 1;
for (let i = 0; i <= 5; i++) {
count = count + 1;
console.log('i가 ' + i + '일 때, count 값은 ' + count + '이 되었습니다.');
}
console.log('count 최종 값: ' + count);
// Assignment - 다음 함수 안에 코드를 구현하세요
function findSmallestElement(arr) {
// your code here
if(arr.length < 1){
return 0; //빈 배열 0을 리턴
} else {
let min = arr[0];
// 변수 min에 배열의 아무 값을 임의로 설정. (가상의 최솟값)
for(let i = 0; i < arr.length; i++){
if(arr[i] < min){
min = arr[i];
}
}return min;
}
}
findSmallestElement([2000000, 30, 5, 7, 200, 1, 0, 9]);
// 아래의 코드는 절대로 수정하거나 삭제하지 마세요.
module.exports = { findSmallestElement};
Author And Source
이 문제에 관하여(16. for 문), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://velog.io/@qqbck123/16.-for-문
저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
findSmallestElement
의 arr
인자는 숫자 값으로만 이루어진 배열입니다.
arr
의 값들 중 가장 작은 값을 리턴 해주세요.
만일 arr
가 비어있으면 0을 리턴 해주세요.
예를 들어, 다음과 같은 배열이 인자(input)으로 들어왔다면 1이 리턴 되어야 합니다.
[20, 200, 23, 1, 3, 9]
// 강의 내용과 관련된 코드를 작성해주세요.
let count = 1;
for (let i = 0; i <= 5; i++) {
count = count + 1;
console.log('i가 ' + i + '일 때, count 값은 ' + count + '이 되었습니다.');
}
console.log('count 최종 값: ' + count);
// Assignment - 다음 함수 안에 코드를 구현하세요
function findSmallestElement(arr) {
// your code here
if(arr.length < 1){
return 0; //빈 배열 0을 리턴
} else {
let min = arr[0];
// 변수 min에 배열의 아무 값을 임의로 설정. (가상의 최솟값)
for(let i = 0; i < arr.length; i++){
if(arr[i] < min){
min = arr[i];
}
}return min;
}
}
findSmallestElement([2000000, 30, 5, 7, 200, 1, 0, 9]);
// 아래의 코드는 절대로 수정하거나 삭제하지 마세요.
module.exports = { findSmallestElement};
Author And Source
이 문제에 관하여(16. for 문), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@qqbck123/16.-for-문저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)