교육 60일차 강의

구성본·2022년 6월 13일

1. 학습한 내용

함수

<함수(function)>
-각 명령의 시작과 끝을 명확하게 구별할 수 있다
-함수에 별도의 이름을 붙이면 같은 기능이 필요할 때 마다 해당 함수를 실행할 수 있다

<함수 선언(함수 정의)>
-함수가 어떤 명령을 처리해야 할지 미리 알려주는 것
-function 예약어를 사용하고, { }안에 실행할 명령을 작성

<함수 호출(함수 실행)>
-함수 이름을 사용해 함수 실행

let, const = ES6버전 이후 변수를 선언하는 예약어
<var가 있는데  const, let이라는 예약어가 필요할까?>

<변수의 사용>
-변수를 사용하면 컴퓨터 메모리 공간을 차지하게 된다 
-> 여기엔 계속해서 구동되는 메모리(전역변수), 필요할 때 불러오는 메모리(지역변수)가 존재한다
-전역변수가 늘어날수록 컴퓨터 입장에선 리소스를 계속 잡아먹게되면서 성능을 저하시키게 된다

-전역변수는 최소한으로 사용한다
-var 변수는 함수의 시작부분에서 선언한다(호이스팅 방지)
-for문의 카운터 변수는 블록변수(let)를 사용하는게 좋다
-ES6를 사용한 프로그램이라면 var보다 let을 사용한다(IT업계에서 트렌드는 따라가는게 좋다, 아니면 도태되기 쉽상)

여러번 사용할 수 있는 함수 만들기

함수 실습

  • 구구단 만들기(설정한 숫자 이후의 모든 단을 같이 출력)

  • 별찍기(다양한 모양의 별찍기)

for(let i = 0; i<10; i++){
            document.write('*'.repeat(i + 1) + '<br>')
        }
        for(let i=10; i>=1; i=i-1){
            document.write('*'.repeat(i) + '<br>')
        }
        for(let i=0; i<10; i++){
            document.write('*'.repeat(10-i) + '<br>')
        }

        // 홀수만
        for(let i=0; i<=10; i++){
            if(i % 2 === 0) continue
            document.write('*'.repeat(i) + '<br>')
        }
        for(let i=10; i>=0; i--){
            if(i % 2 === 0) continue
            document.write('*'.repeat(i) + '<br>')
        }
        // 짝수만
        for(let i=10; i>=0; i--){
            if(i % 2 === 0) continue
            document.write('*'.repeat(11-i) + '<br>')
        }
        for(let i=0; i<=10; i++){
            if(i % 2 === 0) continue
            document.write('*'.repeat(11-i) + '<br>')
        }
        // 빈칸 채우고 별찍기
        for(let i=0; i<10; i++){
            document.write('   '.repeat(10-i) + '*'.repeat(i) + '<br>')
        }
        for(let i = 0; i<5; i++){
            document.write('   '.repeat(1) + '*'.repeat(i + 1) + '<br>')
        }

        // 마름모
        for(let i=0; i<=11; i++){
            if(i % 2 === 0) continue
            console.log(' '.repeat((11-i)/2) + '*'.repeat(i))
        }
        for(let i=11; i>=1; i-= 2){
            if(i % 2 === 0) continue
            console.log(' '.repeat((11-i)/2) + '*'.repeat(i))
        }
        for(let i=0; i<=10; i++){
            console.log('*'.repeat(i))            
        }

2. 학습한 내용 중 어려웠던 점

간단한 별찍기 같은 경우는 몇 번 해보니 감이 오는데 모양을 다양하게 바꾸기 시작하니 좀 어려운 것 같다. 하지만 오늘 함수에 대한 정의를 다시 강의 받으니 훨씬 알기 편한 것 같다.

3. 해결방법

별 찍기를 다양한 모양으로 계속 해보는 게 좋을 것 같다. 조금씩 뭔가 생각하게 되는 듯한 느낌을 받는다. 이왕 만들어보기 시작한 것 여러가지 시도해봐야겠다.

4. 학습소감

역시 반복적으로 뭔가 해보는게 가장 좋은 방법인 것 같다. 저번주까지만 해도 전혀 감이 안잡혔는데 조금은 감이 잡히는 것 같기도 하다. 더욱이 함수란 개념에 대해서 조금은 이해한 것 같아서 다행이라는 생각이든다. 일단은 별찍기 만드는데 좀 더 집중해봐야겠다. 아직 내가 혼자서 모양을 만들고 전부 이해하기는 힘들지만 따라하다보면 좀 더 감이 잡히고 완전히 이해할 수 있지 않을까싶다.

profile
코딩공부중

0개의 댓글