21.08.16 - 웹 개발 입문 4일차
프로그래밍 계산 코드 작성해보기
자바 뿐 아니라 프로그래밍 언어에서는 다음의 전제조건에 의해 데이터를 구분한다.
- 단위는 계산을 복잡하게 하므로 단위는 생략한다.
- 같은 분류의 값들은 변환을 통해서 계산할 수 있다.
- 다른 분류의 값들은 당연히 계산할 수 없다.
- 프로그래머는 이 사실을 반드시 알고 있어야 한다.
Q : 5000원짜리 자장면 3그릇의 가격은 얼마인가요?
import java.lang.*;
public class Calculate {
public static void main(String[] args) {
System.out.println("15000");
System.out.println(15000);
System.out.println(5000*3);
}
}
-> 결과값이 모두 동일하게 출력된다.
Q : 5000원짜리 자장면 2그릇과 6000원짜리 짬뽕 2그릇을 주문할 때
자장면 합계, 짬뽕 합계, 총 가격 합계를 출력하시오
import java.lang.*;
public class Calculate2 {
public static void main(String[] args) {
System.out.println(5000*2);
System.out.println(6000*2);
System.out.println(5000*2+6000*2);
}
}
-> 문제점
1. 무슨 값이 얼마 인지 알 수 없다.
2. 매번 식을 입력 해야한다.
3. 자장면, 짬뽕, 개수 등이 변하면 식을 일일이 고쳐야 한다.
변수로 표현하기
import java.lang.*;
public class Calculate3 {
public static void main(String[] args) {
System.out.println(5000*2);
System.out.println(6000*2);
System.out.println(5000*2+6000*2);
int a = 5000*2; //a 라는 이름으로 5000 * 2의 결과를 저장하세요
int b = 6000*2; //b 라는 이름으로 6000 * 2의 결과를 저장하세요
System.out.println(a);
System.out.println(b);
System.out.println(a+b);
}
}
더 세부적으로 표현하기
import java.lang.*;
public class Calculate4 {
public static void main(String[] args) {
int c = 5000; // 자장면 가격
int d = 3; // 자장면 수량
int e = 6000; // 짬뽕 가격
int f = 2; // 짬뽕 수량
int a = c*d; //a 라는 이름으로 c * d의 결과를 저장하세요
int b = e*f; //b 라는 이름으로 e * f의 결과를 저장하세요
System.out.println(a);
System.out.println(b);
System.out.println(a+b);
}
}
-> 아직 무슨 값이 얼마 인지 알 수없다
누구나 알 수 있게 변수 이름 정하기
import java.lang.*;
public class Calculate5 {
public static void main(String[] args) {
//입력
int chinaNoodlePrice = 5000; // 자장면 가격
int chinaNoodleCount = 3; // 자장면 수량
int champonPrice = 6000; // 짬뽕 가격
int champonCount = 2; // 짬뽕 수량
//처리
int chinaNoodleTotal = chinaNoodlePrice*chinaNoodleCount;
int champonTotal = champonPrice*champonCount;
int total = chinaNoodleTotal + champonTotal;
//출력
System.out.println(chinaNoodleTotal);
System.out.println(champonTotal);
System.out.println(total);
}
}
Q. 우리 가족은 성인 2명, 청소년 2명, 어린이 1명으로 구성되어 있습니다.
지하철 요금이 다음과 같을때 우리 가족이 지하철을 타기 위해 내야할 금액을 출력
성인, 청소년, 어린이, 총 금액을 출력
<요금표> 성인 : 1250원, 청소년 : 720원, 어린이 : 450원
import java.lang.*;
public class Calculate6 {
public static void main(String[] args) {
//입력
int adultPrice = 1250, adultCount = 2;
int teenPrice = 720, teenCount = 2;
int childPrice = 450, childCount = 1;
//처리
int adultTotal = adultPrice*adultCount;
int teenTotal = teenPrice*teenCount;
int childTotal = childPrice*childCount;
int total = adultTotal + teenTotal + childTotal;
//출력
System.out.println(adultTotal);
System.out.println(teenTotal);
System.out.println(childTotal);
System.out.println(total);
}
}
- 정답
adultTotal = 2500
teenTotal = 1440
childTotal = 450
total = 4390
자료형
- 자바는 값(data)을 8개의 기본형으로 구분 (boolean, char, byte, short, int, long, float, double)
자료형 정수 알아보기
정수를 변수에 저장한다는 개념
ex) int a = 10; -> "a는 10과 같다"는 잘못된 표현, "a에 10을 넣다"가 맞는 표현
1. 변수의 형태마다 정해진 크기가 있으며 넘어갈 수 없다.
2. 정수 계산시 범위가 초과되면 순환한다.
3. 모든 정수의 계산은 최소 int 이상의 정수 결과가 나온다.
( 정수끼리 계산하면 정수가 나온다.)
package decimal; //현재 이 파일의 위치가 첫 줄에 나와야 한다.
import java.lang.*;
public class test01 {
public static void main(String[] args) {
// 1
//byte a = 1000; X
byte a = 100;
System.out.println(a);
int b = 2100000000;
System.out.println(b);
long c = 2500000000L; // long은 L표시를 추가한다.
System.out.println(c);
// 2
//int d = 1234567 * 1234567; X
long d = 1234567L * 1234567L;
System.out.println(d);
int e = 2147483647 + 1;
System.out.println(e);
// 3
System.out.println(10 + 20);//30
System.out.println(10 - 20);//-10
System.out.println(10 * 20);//200
System.out.println(10 / 20);//0
System.out.println(10 % 20);//10
}
}
Q. 편의점에서 삼각김밥이 1000원에 판매중입니다. 오늘은 특별히 1+1행사를 진행합니다.
삼각김밥 5개를 구매할 때 예상되는 결제금액을 화면에 출력
(직원은 개수에 대해서 간섭하지 않고 계산만 합니다)
-> 먼저 질문에 과정을 정리 해보고 풀어 보면 쉽게 접근할 수 있다.
package decimal;
import java.lang.*;
public class test02 {
public static void main(String[] args) {
int triangleKimbapPrice = 1000;
int triangleKimbapCount = 5;
int freeCount = triangleKimbapCount / 2;
int payCount = triangleKimbapCount - freeCount;
int totalPrice = payCount * triangleKimbapPrice;
System.out.println(totalPrice);
System.out.println(payCount);
System.out.println(freeCount);
}
}
- 정답
totalPrice = 3000
payCount = 3
freeCount = 2
Q. 다음 시간과 관련된 계산을 수행하고 결과를 출력해보세요
1. 3시간 35분은 몇 분인지 계싼하여 출력해보세요
2. 어제와 오늘 공부한 시간의 합계를 출력해보세요
어제 : 2시간 50분, 오늘 : 4시간 30분 = 7시간 20분
(사람이 푸는 방식, 컴퓨터가 푸는 방식으로 둘다 해보기)
package decimal;
import java.lang.*;
public class test03 {
public static void main(String[] args) {
//입력(준비)
int hour = 3, minute = 35;
//처리 : 1시간은 60분이다
int total = hour * 60 + minute;
//출력(결과)
System.out.println(total);
//2번 문제
//입력
int yesterdayHour = 2 , yesterdayMinute = 50;
int todayHour = 4 , todayMinute = 30;
//처리1 : 사람이 푸는 방식(비추천)
int totalHour = yesterdayHour + todayHour + (yesterdayMinute + todayMinute) / 60;
int totalMinute = (yesterdayMinute + todayMinute) % 60;
//출력1
System.out.println(totalHour);
System.out.println(totalMinute);
//처리2 : 컴퓨터가 푸는 방식(가장 낮은 단위로 변환하여 계산 후 복원)
int yesterdayTime = yesterdayHour * 60 + yesterdayMinute;
int todayTime = todayHour * 60 + todayMinute;
int totalTime = yesterdayTime + todayTime;
int totalHour2 = totalTime / 60;
int totalMinute2 = totalTime % 60;
//출력2
System.out.println(totalTime);
System.out.println(totalHour2);
System.out.println(totalMinute2);
}
}
- 정답
1
total = 215
2-1
totalHour = 7
totalMinute = 20
2-2
totalTime = 440
totalMHour2 = 7
totalMinute2 = 20
Q. 하루에 1시간 30분씩 20일간 공부했을 때의 총 공부 시간을 계산해서 출력하세요.
package decimal;
import java.lang.*;
public class test04 {
public static void main(String[] args) {
//입력
int hourPerDay = 1;
int minutePerDay = 30;
int period = 20;
//처리
int totalPerDay = hourPerDay * 60 + minutePerDay; //하루의 총 시간(분)
int totalTime = totalPerDay * period;
int totalHour = totalTime / 60;
int totalMinute = totalTime % 60;
//출력
System.out.println(totalHour);
System.out.println(totalMinute);
}
}
- 정답
totalHour = 30
totalMinute = 0
Q. pc방에서 7시 50분부터 9시 15분 까지 이용한 손님이 있습니다
이 손님의 총 이용시간을 계산하여 출력하세요
1시간 이용요금이 600원일 때 이 손님이 계산해야 할 금액을 출력하세요 (1분당 계산)
-> 가장 작은 단위로 변환하여 계산 후 복원, 금액을 분단위로 환산하여 시간과 합산
package decimal;
import java.lang.*;
public class test05 {
public static void main(String[] args) {
//입력(준비)
int inHour = 7, inMinute = 50;
int outHour = 9, outMinute = 15;
int pricePerHour = 600;
// 처리
int inTime = inHour * 60 + inMinute;
int outTime = outHour * 60 + outMinute;
int time = outTime - inTime;
int hour = time / 60;
int minute = time % 60;
int pricePerMinute = pricePerHour / 60;
int totalPrice = time * pricePerMinute;
//출력(결과)
System.out.println(hour);
System.out.println(minute);
System.out.println(totalPrice);
}
}
- 정답
hour = 1
minute = 25
totalPrice = 850