어서 오세요
네 네 이번 강의에서는 이전 과제에서 언급했던 날씨 프로그램에
대한 해결책을 제시하려고 합니다
그럼 코드블록을 시작해보죠 프로젝트 생성
이 날씨 프로젝트에 이름을 붙일게요
네 다시 말씀드리지만 이 앱을 이용하면
연간 총계와 월간 강우량 평균을 알 수 있어요
맨 위에 어떤 프로그램인지 코멘트를 달아주세요
네 다시 말씀드리지만 이 프로그램은 연간 총합과 연간 평균과
월간 강우량 데이터를 계산할 거예요 5년요 그런 셈이죠
네 맨 위에 몇 가지 상수를 정의할 거예요 정의 전처리 지시 사항을
아직 상세히 다루진 않았지만 이건 익숙하죠
별로 복잡하지 않아요
이것을 포함시키고 좋은 품질의 코드를 쓰고 싶어요.
달은 12와 상수와 같다고
정의할 수 있어요
네 상수 Modifier도 사용할 수 있어요 연도는
5와 같다고 정의해 볼게요
스타로 가는 거예요
네 주요 함수에서 가장 먼저 할 일은 배열을 만드는
거예요 2차원 배열이죠 데이터를 초기화하고 싶어요
네 우선 강우량과 2010년 강우량 데이터로
시작해 볼게요. 2011년과 2015년 그쯤 될 거예요
네 그래서 2차원 배열을 만드는 법을 알죠 방금
데이터 형식 이름을 명시했죠 부동 소수점
수가 돼야 할 것 같아요 부동 소수점 수는 소수점 점이 있고 강우량도 소수점이 될 수 있으니까요
부동 소수점이라고 하죠 float라고 하고 이름은 레인이라고
하겠습니다 그런 다음 지정합니다 5개의 행과 12개의 열이 있어야 한다고요
네 연도라고 입력할게요 연도는 상수죠 월도요 그런 다음 초기화할
거예요
그 크기로 선언했으니 이제 초기화해야죠
네 이렇게 괄호를 이용해 초기화할 수 있어요 각 행을 위한 괄호
안에 들어갈 수 있죠
원하면 상수도를 만들 수도 있지만
안 만들 거예요
저는 이미 thisdata를 마쳤는데 이게 무엇일까를
입력하고 싶지는 않아요
이건 10 곱하기 50이나 12 곱하기 5니까 60개죠
네 지금은 60개의 요소를 입력하고 싶지 않아요.
왜냐하면 시간도 오래 걸리고 당신은 그냥 앉아서 잠들 테니까요.
초기화에서 복사를 하고 데이터를
초기화할게요
이건 가짜 데이터예요 정확하지 않을 수도 있어요
각 행에 대한 괄호가 있는 것이 보이시죠. 5개의 행이 있네요.
각 행을 acomma로 나누고 있고 그 안에 각 행에 대한
중괄호가 있어요
구불구불한 지지대 안에서 각 월
값을 쉼표로 나누죠
그래서 행을 쉼표로 구분하고 행 안의 값을
쉼표로 구분했죠
이건 엄청난 강우량이에요
예를 들어 이 첫 번째 줄은 2011년이고 첫 번째 줄은
1월이에요
2011년 1월에는 위하드 4였어요 강수량이 8cm예요
6을 기준으로 보면 이 아래예요 이건 2012년, 13년이에요
3월에는 위하드 6이고요 18cm의 강우량이죠
강우량이 몇 개월이나 되는지 알 수 있죠
네 네 이제 모든 데이터를 초기화했으니 다른 로컬 변수를 초기화하거나
생성할 수 있어요
네 그래서 1년 1개월을 만들
거예요 그래야 1년과 1개월이 계속 이어지거든요
네 연도를 입력할게요 월도요
같은 선에 두 개를 만들고 플로트 두 개도 만들 거예요 부단, 총 두 개요
네 네 연간 강수량과 강우량을 합산해서 연간 평균을
계산할 거예요
월평균도 확인할 수 있어요
네 가장 먼저 해야 할 일은 for 루프를
갖는 것입니다 특정 해에 대한 강우량을 프린트할 것입니다
먼저 한 줄로 토프프린트를 칠 거예요
연도를 출력하고 탭을 추가할 거예요
탭을 추가해 서식을 개선하세요
탭 2개를 추가할게요 디스플레이하면 어떤지 보죠
네 그리고 몇 센티미터 간격으로 비를 뿌리고 호스를 연결할
거예요
어떻게 생겼는지 보고 싶을 거예요
이제 루프로 들어갈게요
네 그럼 각 연도의 세부 항목을 계산하기 위해 무엇을
해야 할까요? 보여주세요. 모든 행을 다 보고 싶어요. 모든 연도요. 그리고 한
해마다 모든 달을 보고 싶어요. 달들을 더해야
하니까요.
네 외부 루프는 첫 해인 2011로 시작할 거예요 하지만
배열 내부는 0이죠 배열은 0 인덱싱돼 있으니까요
그리고 이 안에 local 변수를 초기화할 거예요.
포 루프는 아주 유연해요
for 문에서 다른 변수를 만들 수 있어요
19행이나 20행에 for문 밖에서 사용되는
변수를 만들 필요는 없었어요
여기에 Total이라는 변수를 생성하거나 Total 변수를
초기화할게요
네 그런 다음 연도가 연도보다 적을 때까지 입력합니다 그건 변함없죠 그리고 counter
loop control 변수 연도를 증가시킬 거예요
19번째 줄의 루프 컨트롤 변수예요
바깥쪽 고리가 찢어질 것 같아요
2차원 배열이니까 내부 고리도 필요해요
내부 루프는 매달 돌아다녀요
네 여기 이렇게 쓸게요 월 = 0 각 달에 대한 부제도 역시
0이죠 초기화해
몇 달이 다 될 때까지 버틸 거예요
루프 제어 변수를 증폭시킬게요 이게 내부 루프예요
내부 루프에서 세부 항목을 지명할 수 있어요 아무것도 보여줄
필요가 없죠
네 이 내부 루프에서 제가 할 일은 1년이라는
시간을 세부 항목에 추가하는 거예요 내 1년 치가 소작본이야
이제 배열에 접근할 거예요
제 배열 이름은 비가 될 거예요
네 이렇게 입력할게요 비가 내립니다 이건 전부 2011이죠 처음엔
OUT 루프니까요 그리고 매월이요
거기에 더할 거예요
즉, 부문은 부문플로스의 비에 배열값을 더하는 거죠
그래서 그 해의 수개월에 걸친 내용이
축약된 거죠
네 이제 부분문을 루프 밖에서 보여주고 싶어요
5년 동안 부분문을 5번만 보여주고 싶거든요
네 여기 멋진 print 문이 있어요 데이터
형식을 좀 잡도록 돕고 적절히 디스플레이하도록 돕죠
이건 세이어와 부문이에요
네 그래서 부제목에 탭을 몇 개 추가할 거예요 어떻게 되는지 보죠 슬래시
t 슬래시 t
네 다음으로 하고 싶은 건 합계에
추가하는 겁니다 연간 합계가 있어야 하니까요
여기서 += subtotal이라고 말할 수 있어요
네 내부 루프에 갈 때마다 부제가 다시 초기화되는 걸 보실
수 있습니다 다시 설정할 필요가 없습니다
들여쓰기가 괜찮다는 걸 표시하고 싶어요
네 다시요 다시 각각의 블록에 들여쓰기를 보세요 사실 27과 29에는
괄호가 필요 없어요 단일 문장이니까요 하지만 저기 놔두죠
네 좋아요 이제 다 됐어요 연간 강수량이나 강수량을 프린트해
봤으니 연간 평균을 출력할 수 있어요 데이터가 충분하니까요
매달 내리는 강수량이 나와
그렇군요 여기 연간 평균을 표시해 볼게요 연간 평균을
연도로 나누는 거예요
여기에 print문을 추가하세요
이것도 테스트하기 좋은 곳이죠
그럼 빌드this로 가보죠 코드가 많으니
오류가 없는지 확인하고요
aunndeclred 변수 년도가 있어요
컴파일러 오류를 볼 때 실제 오류가 뭔지에 대해 때때로
잘못 전달되거든요
이 경우엔 19번째 줄에 오류가 있다고 하네요 하지만 정말
오류를 야기한 건 엔딩 세미콜론이 없는
이전 문이에요
이걸 실행해서 매년 내리는 강우량과 어떻게 형성되는지
보죠
이렇게 해서 2010인치 폴을 발표할게요
네 탭을 너무 많이 추가한 것 같아요 아까 부분 탭을 표시했는데 연간 평균이
39개예요 4개요
여기 탭을 없애는 걸 고쳐야 할 것 같아요
탈출 시퀀스/t를 이용해 에이탑을
추가할 수 있어요
이 정도면 괜찮네요
또다른룹이 필요합니다 월간 평균을
보여주는 것이죠
월간지수를 보여주기 전에 한 줄로
전부 출력하고 싶어요
printf를 이용해서 정보를 출력할 거예요
월례 평균을 출력하고 2줄 전송을 추가하면
형식이 더 좋아져요
그럼 다른 정보를 출력할게요
월을 몇 칸씩 나눠서 새 라인을 추가할 거예요
for 루프를 할 때 같은 작업을 할 거예요
이제 월평균을 얻기 위해 루프노우가 또 필요해요
이 for 루프에서 OUTLoop은 월에 시작해요
네 각 행을 살펴보는 대신 각 열을 살펴볼
겁니다 월별 평균을 얻어야 하니까요
네 이제 각 열의 순서를 살펴볼게요 1월이에요
2월 3월은 기둥을 나타냅니다
각 칼럼마다 그 칼럼에 대한 연도를 모두 입력할
수 있습니다. 그리고 subtotal과 또 다른 변수를 사용할 수 있어요.
여기 monthequals 0이라고 쓸게요 월은
월보다 작고 월 + 더하기예요
그런 다음 제 내면의 루프로 몇 년을 보내죠
여기서 for year = 0이라고 입력할게요
하부 조직도 초기화하고 싶단 걸 기억하세요
네 그래서 여기에 subtotal = 0이라고 적겠습니다.
왜냐하면 새해가 되면 0에서 시작하고 싶기 때문입니다. 연도를 모두 확인하고 연도를 증가시키기
위해서죠. 도약 제어 변수입니다
이 안에 제 부문을 넣을게요 1년, 1개월 동안 제 배열과
같을 거예요
그래서 여기서 무슨 일이 일어나는지 이해하는 게 중요해요 배열을 통해 ID 설정
방식을 바꿀까요?
첫 번째 루프는 각 행을 통해 각 열을 살펴보는
거죠
네 여기선 각각의 열을 살펴보고 특정
행을 살펴보고 있어요 월간 평균을 계산하고 있으니까요
네 세부 항목을 출력합니다 그리고 연도로 나눈 세부
항목을 출력합니다
37번째 라인의 출력과 일치하도록요
이렇게 도메싱을 할 거예요
4로 해보죠 형식이 하나고 부분으로 나누면 연도죠
그리고 빈칸을 몇 개 추가해서 최대한 정렬을 맞춰요 빈칸을
하나 더 추가해야 할 수도 있어요
네 그런 다음 모든 걸 프린트한 후 가독성을 위한 라인 피드를
추가하면 끝이죠
네 그럼 월평균이 나오죠 모든 부문을 입력한 다음 연도로
나누면 돼요
이제 이걸 빌드하죠 오류 없이 실행해요
월간 총액 또는 월간 평균의 추가 출력량을
알아보죠
월 단위로 결제하는 걸 볼 수 있죠 형식이
좋지 않아요
캐릭터의 출력에 따라 달라요
네 공간은 줄여야겠죠 한 칸만 추가하세요 한 칸만요 더 잘되는지
보죠
네 이제 실행해 보면 더 나아 보이는지 보죠 매달
평균을 맞추고 싶으니까요 그게 좀 더 낫죠
약간 빗나갔어요 달은 3글자고
정수는 2거든요
10월과 11월 사이에 망쳤어요 공간이 하나밖에
없거든요
이렇게 하면 고칠 수 있어요
포맷이 아주 근사할 거예요
몇 년 동안 강우량과 월평균만 표시한
게 보이시죠?
네 이제 2차원 배열에 익숙해졌길 바랍니다 그걸 반복하는 방법과
배열을 할당하는 방법 데이터에 접근하는 방법도요
고마워요