안녕하세요, 어서 오세요
주급 계산 문제에 대한 해결책을
제시하고 싶어요
멋진 시범을 보여드리죠 코드 블록을 불러오고
프로젝트를 닫겠습니다 현재 열고
열고 이 응용 프로그램을 위한 새 프로젝트를 생성하는 거죠
콘솔 어플리케이션을 생성해서 C에 둘게요.
이건 주급 계산이라고 부를게요
전 메인 요리를 먹을 거예요 c 파일은 훌륭한
시작점을 제공하죠
하지만 이 솔루션에서 제가 하려는 건 좀 다를 수도 있어요
하지만 몇 가지 개념을 소개할 거예요
그에 관해 얘기할 테지만 이 프로그램에선 상수를 많이
사용할 겁니다 주로 임금과 세금에 관해서요
그래서 저는 아직 본 적 없는 정의라는 걸 사용할 거예요
상수를 생성하는 건 사전 처리자의 지시예요
프리 프로세서 지시문이 뭔지 아는 방법은 우물정자를 쓰는 거죠
그래서 저는 파운드 정의라고 쓸게요 상수를 만드는 방법이죠
이 프로그램의 모든 데이터에 대한 5개의 상수를
만들 거예요 우리 임금은 12달러예요 00이에요
정의가 작동하는 방법은 우물 정자
다음에 오는 정의된 키워드예요 그런 다음 이름을 입력하죠
대개는 전부 대문자로요 그게 표준 관습이죠 그런 다음 빈칸, 그런 다음 값이요
할당 같은 건 없어요 이건 근본적으로 상수 변수를 생성하죠
300세 납세율을 위해 하나를 만들게요
세율은 150 혹은 300 이하로 하겠습니다 세율은
0이 되겠군요 15살요
보다시피 데이터는 부동 소수점 정수나 스트링도
할당할 수 있죠 데이터 유형은 중요하지 않아요
150달러의 세금은 0달러가
될 수도 있어요 20살요 전 보통 파일 상단에 메인 밖의 정의를 작업해요
상단과 소스 코드 전체에 주석을 추가하는 것도 잊지 마세요
그리고 나머지 세금에 대한 마지막 세율인 0을
정할 거예요 25살요
마지막으로 하고 싶은 건 초과 근무 수당으로 상호를 생성하는 거예요 그냥 초과
근무를 호출하고 40이라고 하는 거죠 이건 우리가 40보다
큰 걸 확인하고 싶을 때를 나타내죠
변수 안에 마법의 숫자를 두는 건 좋은 생각이
아니죠 이제 뭔가가 변하면 예를
들어 초과 근무가 45로 변하면 한 곳에서만 바꾸면 되니까요
제 프로그램도 똑같이 작동할 거예요
이 상수가 없고 비교나 변수에서
마법 숫자를 쓴다면 40을 쓰는 모든
곳에서 바꿔야 해요
그러니 마법수라는 걸 쓰지 않고 상수를 쓰는 습관을 들이세요
메인 상단에서 변수를 선언하고 싶어요
주요 기능에 대한 로컬 변수들이죠
변수 선언에 주석을 달게요
필요한 변수는 몇 시간 동안 정수를 만들어 0으로
초기화할 거예요
사용자가 시간을 입력하고 두
배를 생성하면 출력이 표시됩니다 주로 0으로
초기화한 총 지급액이죠 두 마리니까 0마리요
세금도요 0도 초기화할 거예요 0에서 세미콜론으로
끝나요 세미콜론과 실질 임금 잊지 마세요
이게 제가 원하는 3가지 결과물이니까요
상단에 결과물 3개를 만들 거예요 입력 시간과 함께요
가장 먼저 할 일은 입력을 받는 것입니다 사용자에게 무언가를
입력하라고 할 거예요 엔터를 누르고
이번 주 작업 시간을 입력하고
콜론과 스페이스, 세미콜론을
입력하죠
그런 다음 scanf 함수를 사용해서 입력을 받을 거예요.
그냥 Scanf라고 할게요 정수를 읽고 싶어요 %d라고 입력할 거예요
쉼표를 찍고 몇 시간을 표시한 다음 문자열이나
문자가 아니기 때문에 앞에
&&를 넣고 세미콜론으로 끝내야 해요
그게 눈에 띌 거예요 이 시점에서 제가 해야
할 일은 이스몰 덩어리를 계속 테스트하는 거예요
코드를 계속 쓰고 컴파일하려 하면 어디서든 문제가 생길 수 있어요 작은
영역에서 일할 수 있죠
하지만 잘 될 거예요 어떻게 하는지 시범을 보여 드릴게요
말씀드렸다시피 가장 먼저 총수입을 계산할 거예요
여기 논리를 보면 if문이 필요해요
근무 시간이 40시간이 넘으면 초과
근무 수당을 받아요
그래서 제가 하려는 것은 작업 시간이 40시간보다 적거나
같을 경우 아주 쉽게 계산만
하면 돼요 유급비율과 작업 시간의
비율일 뿐이니까요
24번째 줄에 if 키워드랑
시간표가 있어요
비교하고 있어요 관계 연산자를 이용합니다 동등하지 않게요 4보다 작거나 같을 경우 괄호를
사용하지 않을 겁니다 단일 문을 사용해야 하니까요
그냥 총수입이라고 할게요 변수를 설정할
건데 거기에 시간, 상수, 임금율을 곱하면 끝이에요
40보다 크거나 같으면 다른
걸 하고 싶어요 그 조건이 거짓으로 판명되면 else가
있어야 합니다 여기서 else를 사용하죠 다른 건 블록에 줄이 여러 개니까
저는 괄호를 쓸 거예요 27번 줄에서 시작해서
29번 괄호로 끝나죠
괄호가 맞지 않거나 괄호가 없는 것은 컴파일러가 발견할 수 있는 흔한 오류예요
괄호와 일치하는지 확인하세요 IDE는 하이라이트를 줘서 도움이 많이 돼요
괄호가 여러 개면 언제든 다른 괄호로 갈 수 있어요
아래 괄호로 가면 시작 괄호가 어디 있는지 알려주는 하이라이트가 뜨죠
이 테이프에서 40보다 크면 먼저
제 총 급여를 40배로 설정하고 싶어요 첫 40시간은
시간당 12달러거든요
그 이후의 일은 더 많아지겠죠
초과 근무 수당이라는 로컬 변수를
만들어서 40시간을 뺀 시간으로
설정할게요 40을 입력하면 여기서 5가 되죠
그런 근무 시간을 확보하면 급여 금액의 곱을 합니다
시간당 12달러죠 거기에
1을 더하고요 그 중 5개는 시간당 18달러예요
그리고 세미콜론으로
마무리하죠
이 시점에서 초과 수당은 5 곱하기 18,90달러가
될 겁니다 사용자로 45를 입력하면요
첫 40시간은 40에 12를
곱하면 570이
되죠 40 곱하기 12는 480이에요
이제 마지막으로 할 일은 초과 근무 수당에 총수입을 더하는 거예요
총수입보다 나은 이름을 쓸 걸 그랬어요 아직 은총수입을 못 받았거든요
저는 괜찮은 연산자를 사용할
겁니다 배정 연산자 + = 초과
근무 수당이죠
총수입은 총수입에 초과근무 수당을 더하는 거예요
속기로 표기할 거예요
이제 총수입이 끝났으니 총수입은 끝난 거죠
그래서 이걸 테스트하고 총 지급액을 출력해 올바른지 확인하죠
효과가 있다는 걸 알았으니 다음 단계로 넘어가야죠
다음은 세금 계산이에요
세금을 계산할 때 기억하세요 여러분이 얼마를 버느냐에
따라 해야 할 일이 있어요 그래서 총수입을 따져 봐야 해요
총 임금이 300보다 적거나 같다면 조치를 취해야죠
총수입이 300에 450이면
조치를 취해야죠 450보다 크면 다른 걸 할 거예요
여기 중복된 코드가 있어요
지금은 괜찮습니다 왜냐하면 if문을 시연하고 있으니까요
좀 더 깔끔하게 쓸 수 있을 거예요
제가 하려는 건 첫 번째 조건을 확인하는 겁니다 총 지급액이 300보다
적거나 같을 때요 세금을 계산하는
건 아주 쉬워요
세금은 총 지급액에 300달러의 세율을
곱할 거예요
300달러의 세율을 기억하시나요?
300달러 이하는 원래 15%였던 것 같아요
300보다 적거나 같다면 그렇게 하면
돼요
여기서 또 주목해야 할 건 들여쓰기예요
코드 블록이 있으면 단일 문장이라도 괄호를 넣을
수 있어요
블록을 표시하면 읽기가 훨씬 쉬워요 새 선에 들어간
자국도 잊지 마세요
보통 탭 대신 스페이스를 두는데 그건 다른 얘기고요
다른 것일 수도 있어요
34번 라인에서 이런 질문을 했죠 총 임금이
300보다 적거나 같다면 36번 라인에서 어떻게 하라고요
if 키워드도 쓰고 괄호 안에 부울 식도 넣죠
300 이하가 아니면요? 그럼 다른
걸 해야죠 특히 총수익이 300보다
크면요 저는 논리적인
연산자 앰퍼와 앰퍼 그리고 앰퍼로 두 가지 질문을
할 거예요 총수입이 300보다
크고 총수입이 450보다 작으면 다른 걸 하고
싶어요
제 총수입이 300에서 450 사이란 거죠?
300에서 450 사이면 먼저
세금을 계산합니다 아까
했던 것처럼요
처음 300달러는 세율에 곱해서 300달러 내고 싶어요
처음 300달러는 세금이 붙거든요
다른 금액은 세율인 0.20%인
150으로 책정하고 싶어요
우선 300달러가 넘는
수익이 얼마인지 알아야 해요 하지만 한 줄로
할 수 있죠 세금 +=라고 쓸게요
세금은 세금 ==입니다 이미 세율의 300배예요
세금 + 그 이상이죠
40번째
라인의 계산된 첫 번째 세금에 추가하고 싶은 것은 추가 금액을
더하는 것입니다 그러면
총 지급액에서 300을 빼야 합니다 이미 450을 넘지
않는다고 판명되었죠
총수입에서 세율의 300배인 150을
빼면요?
제가 한 걸 보세요
제가 38번 라인에서 300-450달러를 벌었다면 처음 300달러에
대한 세금을 받고 싶을 거예요 그건 세율의 300배인 300달러인데 제가 받은
총수입이 그 세율의 300배가 넘는 150달러라는 것에 더하고 싶겠죠
이제 두 가지 조건을 충족했어요 마지막으로 확인하려는 조건은 450개 이상 만들었냐는 거죠
그러니까 총수입이 450보다 크면 다른 걸
할 수 있는 거죠
명확히 하기 위해 else if를 넣겠습니다
전체 유급이 450보다 크다고 할게요
사실 이걸 할 필요는 없어요 if 없이 else를 가질 수 있으니까요 else
if를 보여드리고 싶어요
이 경우엔 처음 300의 세금을 계산하고 싶어요 코드를
복사할 수 있죠
150에 대한 세금도 계산하고 싶어요
그래서 다음 150에 대한 += 300에서
450으로 할게요 세율의 150배가
되는 거죠
마지막으로 하고 싶은 건 나머지에게 특정 비율로 세금을 부과하는 거예요
여기에 세금 +=라고 쓸게요 +=은 세금 +=이죠
총 임금에서 450을 빼겠습니다
전체 임금에서 450 이상의 임금에만
세금을 부과하고 싶지 않기
때문이죠
거기에 세율을 곱하고 REST와 같다고 하면 REST는
우리가 위에서 정의한 상수 변수죠
그게 다예요 세금 계산은 끝났어요
역시 각 단계 후에 테스트합니다 올바른 컴파일인지 확인하고
테스트하죠
움푹 들어간 게 보이실 거예요 쉽게 읽을 수 있어요 댓글도 달고 있어요
실질 임금 계산은 하고 싶지 않아요
간단할 겁니다 순임금은 총임금과 동일하고
세금은 뺀 것이니까요 아주 간단하죠
제 출력을 표시하고 싶어요
총수입, 세금, 실소득을
표시해야 한다는 걸 기억하세요
여기 printf를 쓸 수 있어요
시간을 많이 뺏지 않도록 복사해서 붙여 넣을게요
복사 붙여넣기를 하면 화를 내는 학생들도 있어요 프로그래밍에서는
복사 붙여넣기를 하면 안 된다고 하죠 어느 정도는 사실이죠
뭔가를 복사해 붙여넣기를 하면 코드를 완전히 이해할 수 있어요 더 효율적이죠
복사 붙여넣기의 문제점은 많은 개발자들이 복사 붙여넣기를 할
때 코드가 어떻게 작동하는지 모르고 그냥 되기만을 바란다는 거죠
이 경우엔 printout 문이 어떻게 작동하는지 알아요 여기서 무슨 일이 벌어지는지 보여드릴게요
그럼 키보드 치느라 시간 낭비 안 해도 되죠
54번 라인에서 총수입을 공개할 거예요
부표예요 변수의 값을 표시할 줄 알죠
여기서 특이한 점은 소수점 2개로 출력값을 형식화하고 있다는 겁니다
그러니 %를 보세요 2f와 백슬래시 n은
탈출 시퀀스를 위한 라인 피드예요
모든 걸 소수점 2개로 형식화하고 있어요 지폐를 표시하면 1센트짜리만
있고 1센트짜리가 없으니까요
세금과 동일한 형식과 실질 임금을 표시했어요
아주 좋아요
이 프로그램에선 들여쓰기를 할 수 있어요
쉽게 읽을 수 있어요 상단에 변수를 계속 사용하고 있어요
변수를 계산하고 있어요 왜 신고하냐고요?
모든 게 깔끔해요 전 논평만 하는 거예요 만일의 사태에
대한 진술서를 쓰고 있어요
아무 문제 없었으면 좋겠네요 따라 하기 어려운 논리는 아니죠
하지만 소스 코드가 있으면 다운로드할 수 있으니
더 분석할 수 있어요 빌드하고 컴파일하면 어떻게 되는지
보죠 잘못된 게 없도록요
사용하지 않는 경고 기능이 있다고 뜨죠
여기 같아요
브래킷 전에 세미콜론을 빼먹었어요 말이 안 되죠
브래킷 전에 세미콜론을 빼먹었어요
말이 안 되죠 지금 제가 놓치고 있는 건 다른 걸
가질 수 없다는 거예요 만약이어야 해요 말이 안
돼요, 만약을 잊었어요 만약에요
어떻게 되는지 보세요 else가 있고 그 아래 else if가 있어요
말이 안 돼요 다른 상황과 만약의 상황이 있을 수 없어요
이제 어떻게 되는지 보죠
에러 0개, 경고 0개예요
바이러스 스캐너를
작동해 볼게요
이걸 실행하면 가장 먼저 하는 일은 이번 주 작업 시간을 입력하라는 거죠
45보다 높은 걸 넣을게요 초과 근무를 증명하는 거죠
40달러보다 45달러나 4달러는 더 받을 거예요 45달러에 570달러 벌었다고
쓰여 있어요 최대 40달러까지가 시간당
12달러인데 계산해 보니 400달러와 80달러예요
5시간은 18달러니까 90 더하기 480은 570이죠
이번 주 세금은 105달러였고 순급은 465달러였어요
숫자가 짝수예요 계산을 통해 정확한지 확인할 수 있어요
이렇게 여러 번 실행해 다양한 데이터 출력을 볼 수 있어요
4만 달러 이하로
하죠 이번 주에 30시간만
일해도 초과 근무 수당은 못 받아요 30 곱하기 12는
360이 되죠
처음 300달러는 15%의 세금을 낼 거예요
그게 45달러고 60달러를 내면
20%의 세금을 내고 그게 12달러가
되죠 45 더하기 12, 57은 맞는 것 같네요
이번 주 순급은 303,360에서 57을 빼요
잘 작동하는 것 같아요
수익이 450보다 크면 더 시험해보고 싶을 거예요
테스트에서 또 중요한 건 모든 경계를 테스트하는 거예요
한 가지 테스트만 해선 안 돼요 모든 게 작동해요
좋은 케이스와 나쁜 케이스 둘 다 제공하고 싶어 하죠
이 프로그램에는 다양한 사례가 있어요 40시간
이상을 버는 사례가 있죠
초과근무 수당을 받는군요 수입이 300달러 이하인
사례 300-450달러인 사례 450달러보다
많은 사례가 있어요
이 프로그램에서는 적어도 4번 혹은
5번의 테스트 케이스들을 수행해야 합니다. 왜냐하면
초과 근무를 계산해야 하기 때문이죠.
3백 달러도 안 되는 초과근무
수당을 받으니 4건 정도는 무마할 수 있을 거예요
하지만 정말 실험하고 싶은 건 초과 근무와 세율이에요
도움이 됐으면 좋겠네요 제 시범을 충분히 이해하셨길 바라요
if문과 관련해서 이해하셨으면 좋겠고요 코드를 읽기 쉽게 만들고 의미
있는 이름을 사용하는 방법도요 고마워요