[하버드 CS50강의] 더 좋은 프로그래밍을 보는 관점 / Arrays[배열] - 티스토리
IT/공부자료

[하버드 CS50강의] 더 좋은 프로그래밍을 보는 관점 / Arrays[배열] - 티스토리

https://www.youtube.com/watch?v=tI_tIZFyKBw&list=RDCMUCcabW7890RKJzL968QWEykA&start_radio=1&rv=tI_tIZFyKBw&t=9

harvard -cs50 : Arrays

유명한 하버드 CS50강의를 수강했습니다. 

굉장히 차근차근 기초적인 코드를 이용하여 보여줄 수 있는 버그들과,

more dynamic하게 코드를 수정해가면서 코드를 보는 관점을 이해시켜줍니다.

 

이번 강의의 제목은 Arrays 배열이었습니다. 이 배열을 통해 어떤 식으로 코드를 바라보는지 같이 살펴보겠습니다.  

 

다음과 같이 C언어로 이루어진 가장 기본적인 코드를 교수는 작성하여 학생들에게 보여주며 말합니다. 

교수 "Code smell"이 납니다. 

다음 코드가 좋게 프로그래밍이 되었다고 생각하십니까?

 

좀 더 좋게 프로그래밍하려면 어떻게 해야할까요?
생각하시고 펼쳐주세요!

더보기

이 영상에서 교수의 질문에 몇몇 학생들은 다음과 같이 대답을 했습니다. 

 

첫 번째 학생.  평균을 계산하는 변수를 하나더 만들어서 사용을 하겠다. 굳이 printf 안에서 계산을 하는 지저분한 코드를 피해서 직관적이게 만든다는 것 습니다.

 

두 번째 학생.  프로그래밍이 다이나믹 하지 않다. 만약 다른 score4를 입력받을 수 없는 코드이다. 오직 score1, score2, score3의 값만 이용할 수 있는 코드이다.  나였다면 입력을 받을 수 있게 처리하겠다. 

 

여러분들의 생각은 어떠셨나요?

 

이 영상에서 교수의 질문에 몇몇 학생들은 다음과 같이 대답을 했습니다. 

 

첫 번째 학생.  평균을 계산하는 변수를 하나더 만들어서 사용을 하겠다. 굳이 printf 안에서 계산을 하는 지저분한 코드를 피해서 직관적이게 만든다는 것 습니다.

 

두 번째 학생.  프로그래밍이 다이나믹 하지 않다. 만약 다른 score4를 입력받을 수 없는 코드이다. 오직 score1, score2, score3의 값만 이용할 수 있는 코드이다.  나였다면 입력을 받을 수 있게 처리하겠다. 

 

여러분들의 생각은 어떠셨나요?

 

우리는 어떻게 할 수 있을까요?

더보기

같은 종류의 score1, score2, score3 의 변수들은 같은 종류이기 때문에 카테고리화 시키는게 좀 더 좋지 않을까요?

같은 속성의 변수들을 한 배열"Array"에 담아낼 수 있습니다.

(좀 더 역동적으로, C언어의 라이브러리를 이용해서 사용자의 입력을 받아낼 수 있습니다.) 

score[0] = get_int("Score: ');

score[1] = get_int("Score: ');

score[2] = get_int("Score: ');

...

 

같은 종류의 score1, score2, score3 의 변수들은 같은 종류이기 때문에 카테고리화 시키는게 좀 더 좋지 않을까요?

같은 속성의 변수들을 한 배열"Array"에 담아낼 수 있습니다.

(좀 더 역동적으로, C언어의 라이브러리를 이용해서 사용자의 입력을 받아낼 수 있습니다.) 

score[0] = get_int("Score: ');

score[1] = get_int("Score: ');

score[2] = get_int("Score: ');

...

 

교수는 여전히 "Code Smell"이 난다. 그리고 학생은 굳이 "hard cording"을 할 필요가 없다. 라고 얘기를 합니다. 

여전히 생각의 여지가 남아있는 것 같죠?

 

어떻게 해야할까요?

더보기

for문(반복문)을 이용해 다음과 같이 입력을 받으려고 합니다.

for문(반복문)을 이용해 다음과 같이 입력을 받으려고 합니다.

어떤가요 조금 더 깔끔해지지 않았나요?

 

조금만 더

다이내믹하게 프로그래밍을 짜 봅시다. 

printf의 평균계산을 average함수를 이용을 해서 좀 더 직관적으로 코드를 작성했습니다. 

average함수는 바로 밑에 생성합니다.

 

우리는 이제 평균을 계산할 필요가 없어졌습니다. average라는 함수가 평균을 계산해줍니다.

 

 

처음코드와 마지막의 코드를 비교해보니 어떤가요. 

좋은 프로그래밍이란

1. 필요없는 연산을 줄이고

2.동적으로?유하게?사용자 친화적으로 활용될 수 있고 ex) score를 직접 입력하게 해서 동작할 수 있게

3. 우리의 머리를 쓰는 것보다 컴퓨터가 더 많은 일을 시킬 수 있게 하는 쪽으로

 라고 저는 이번 강의를 통해 느꼈습니다.

여러분은 어떠셨나요?

 

코딩에 진심이시고, 처음이신 분들은 CS50강의를 들어보시는 걸 강추합니다.