JS_명령형 스타일의 코딩 방법

dev.dave·2023년 7월 26일

Javascript

목록 보기
84/167

명령형 스타일의 코딩 방법//

함수형 자바스크립트와

동시성 프로그래밍

===========================

문제>

// ( f 함수에 파라미터로 있는) list에서 홀수를 length 만큼 뽑아서 제곱한 후 모두 더하기

기본 코드

function f(list,length){

log(list);

}

function main(){

f([1,2,3,4,5], 2); // 여기는 f함수 실행부분이고, 실행할때 인자를 가지고 실행을 함

}

main();

=============================

============================

명령형 코드<<<<<<<<<<<<<<<<<<<<<

일단 명령형 전체 코드

function f(list,length){

let i = 0;

let acc =0;

for(const a of list){

if(a % 2){

acc = acc + a * a;

if(++i == length) break;

};

};

log(acc);

};

function main(){

f([1,2,3,4,5], 1); //1

f([1,2,3,4,5], 2); //10

f([1,2,3,4,5], 3); //35

};

main();


팁1>

일단 자바스크립트에서 리스트를 순회하는 방법은

for문을 이용해서 함

for(const a of list){

log(a); // 콘솔로그로 a 를 찍어보면 로그에 쫘르륵 찍히죠.

};


팁2>

위의 코드에서 또 홀수만 뽑아 보려면

if문으로 조건 걸어서 걸러주면 되겠죠.

for(const a of list){

if(a % 2){ //여기 조건문은 a 배열에서 나누기 2 하면 홀수만 출력이 되죠

log(a);

};

};


팁3>

위의 코드에서 또 홀수만 뽑았는데,,,이제는 또 length만큼만 뽑고싶다면

그렇다면 그 말은

어떤 값이 length와 동일해져야 되니까 (현재 length의 값은 2임)

(즉, 어떤 값이 2가 되야된다)

그러면

일단

어떤값을 만들어야되니까 !

변수 i를 만들고

let i = 0;

이 i 를 비교시키면되니까

if문을 만들고

조건을 어떻게 넣냐면,

if(++i == length) break;

이렇게 넣는데

이거는

i를 증가시키면서 length랑 비교를 하면서 값이 조건에 만족하면(값이 똑같다면)

순회를 하지말아라 라고하는 break; 를 걸어주면 된다.

그러면

for문은 브레이크가 걸려서 더이상 순회(반복문을)를 하지않고 멈춘다.

그래서 결과 값은 2개가 나오게된다.

코드는 이렇게 된다.

function f(list,length){

let i = 0;

for(const a of list){

if(a % 2){

log(a);

if(++i == length) break;

};

};

};

이렇게 코드가 되는데

function f(list,2){

let i = 0;

for(const a of list){

if(a % 2){

log(a);

if(++i == 2) break;

};

};

};

length 를 2로 바꿔 보았다.

즉, i 가 2 가 되면 반복문이 멈추는 것이다.

i 는

0

1

까지만 돌고

2가되면 멈추는거죠.

그니까

일단 반복문 돌아

그럼 값 찍히고

i는 1이되고

또 반복문돌고

찍어

i는 2야 그럼 멈춤

그럼 로그에는 총 2개만 찍혔죠.

끝.


팁4>

참고로...

여기서 ++i 는

전치 연산 후치연산이 있는데,

여기는 전치 연산인데,

++i

전치는 1을 더한후 값을 돌려주고

후치는 값을 돌려준후에 1을 증가시킨다.

a=10;

b=++a; // 11

b=a++; // 10


팁5>

이어서

제곱한후 는

로그에서 제곱을 하면 됩니다.

log(a * a) 이렇게 하면되쥬~


팁6>

그리고

모두 더하기는,,,

일단 그럼

모든 값을 누적을해야되니까

누적할 임시 변수를 하나 만들고,

let acc = 0;

acc = acc + a * a;

이렇게 하고

로그에서

acc를 찍어 보면 되쥬

코드는

function f(list,length){

let i = 0;

let acc =0;

for(const a of list){

if(a % 2){

acc = acc + a * a;

if(++i == length) break;

};

};

log(acc); //여기서 찍어봅니다. 왜냐면 함수 안에서 실행 시켜야되니까요. 물런 밖으로 빼서할수도있긴하죠...

};

1*1+0 = 1

3*3+1 = 10


이런 명령형 코드에 쓰인 기술들을 요약해보자면,

-for 반복문을 썻고

-if문으로 제어를 했고

  • 연산자를 썻고

-시간을 조절/제어 하기위해 break 를 썻음

여기까지가 명령형 스타일의 코딩이다.

profile
🔥개인 메모 / 다른블로그 자료 참조 / 다른블로그 자료 퍼옴 (출처표기) /여기저기서 공부 했던 내용 개인메모 & 참고 / 개인 기록 용도 블로그 입니다.🔥

0개의 댓글