이것저것
[2020 모각코] 2회차(2020.07.02.) 본문
# 2회차 목표: 컴프 4주차 때 했던 연산자와 수식에 대한 복습, 해당 주차의 과제를 다시 하고 전에 했던 과제와 비교
연산자
: 특정한 연산을 나타내는 기호
연산자의 종류 & 우선순위
1. 단항 연산자
후위증감(연산방향◀) : 피연산자++, 피연산자--
단항(연산방향◀) : ++피연산자, --피연산자, +피연산자, -피연산자, ~, !
+) ~는 비트가 0이면 1로, 1이면 0으로 바꿔주는 연산자
2. 산술 연산자
곱셈 : *, /, %
덧셈 : +. -
3. 관계 연산자
관계 : <. >, <=, >=, instanceof
동등 : ==, !=
4. 비트 연산자
이동 : <<, >>>, >>
비트별 AND : &
비트별 XOR : ^
비트별 OR : |
++) >>>연산자
>>연산자처럼 비트를 오른쪽으로 이동시켜주지만 빈 공간을 모두 0으로 채워버리기 때문에, 음수일 경우 수가 달라질 수 있으므로 주의해야한다.
5. 논리 연산자
논리적 AND : &&
논리적 OR : ||
6. 조건 연산자
조건 : ?, :
+++) "같은sentence가 참이면 result를 answer1로, 거짓이면 answer2로 설정하시오" 는 아래처럼 표현할 수 있다.
result = sentence ? answer1 : answer2
▲ 조건 연산자를 사용
if (sentence) {
result = answer1
}
else {
result = answer2
}
▲ if-else문을 사용
7. 대입 연산자
대입(연산방향◀) : =, +=, -=, *=, /=, %=, &=, ^=, |=, <<=, >>=, >>>=
+) 0xfffff000
fffff000은 이진수로 1111 1111 1111 1111 1111 0000 0000 0000이다.
++) printf()
지시자와 함께 쓰이며 형식을 정하여 출력할 때 사용되며,
위에서 쓰인 %x는 16진수 출력 지시자, %s는 문자열 출력 지시자이다.
+++)
Integer.toBinaryString(i) 10진수를 2진수로 변환
Integer.toOctalString(i) 10진수를 8진수로 변환
Integer.toHexString(i) 10진수를 16진수로 변환
4주차 과제_1: 두 개의 정수를 입력 받고, 큰 수를 작은 수로 나눈 몫과 나머지 출력
import java.util.Scanner;
public class WEEK4 {
public static void main(String[] args) {
Scanner Num = new Scanner(System.in);
System.out.print("큰 수를 입력하시오 : ");
int x = Num.nextInt();
System.out.print("작은 수를 입력하시오 : ");
int y = Num.nextInt();
int quot = x/y;
int rem = x%y;
System.out.println(x+"를 "+y+"로 나눈 몫은 "+quot+"이고 나머지는 "+rem+"입니다.");
}
}
4주차 과제_2: 실수로 입력 받은 주행거리와 휘발유의 양으로 자동차 연비를 계산하는 프로그램 작성
import java.util.Scanner;
public class WEEK4 {
public static void main(String[] args) {
System.out.println("연비계산 프로그램");
Scanner input = new Scanner(System.in);
System.out.print("주행거리(km):");
double x = input.nextDouble();
System.out.print("사용한 휘발유 양(l):");
double y = input.nextDouble();
System.out.println("연비는 "+(x/y)+"km/l입니다.");
}
}
4주차 과제_3: 빛이 태양에서 출발하여 지구에 도착하는데 몇 분 몇 초가 걸리는지 계산 후, 10분 이상 걸리는지 판별
(빛의 속도 : 초속 30만 km) (지구로부터 태양까지의 거리 : 1억 5000만 km)
public class WEEK4 {
public static void main(String[] args) {
int vel = 300000;
int dis = 150000000;
int min = (dis/vel)/60;
int sec = (dis/vel)%60;
boolean answer = min>10 ? true : false;
System.out.println("빛이 태양에서 출발하여 지구까지 오는 시간 : "+min+"분 "+sec+"초");
System.out.println("질문 : 태양에서 출발하여 지구까지 오는 시간은 10분이 넘는다");
System.out.println("대답 : "+answer);
}
}
학기 중 제출했던 과제와 실행 결과
4주차 과제_1
: 몫과 나머지를 새로운 변수에 넣어 출력한 것이 학기 중 제출했던 과제와의 차이점인데, 짧은 연산이라 출력할 때 위와 같이 적어도 크게 상관은 없으나 만약 연산이 길어지고 복잡해질 경우에는 이번에 했던 것처럼 새로운 변수에 연산 결과를 넣는 편이 코딩할 때 더 편리할 것 같다는 생각이 들었다.
4주차 과제_2
: 큰 차이점이 없어 비교 생략
4주차 과제_3
: 과제3에서도 역시 과제1과 비슷한 부분에서 차이점이 생겼는데, 위에선 println으로 출력할 때 분과 초를 바로 계산하여 출력했고 이번에는 분과 초를 새로운 변수로 두고 계산 값을 그 변수에 넣는 식으로 코드를 작성했다. 확실히 이 방법이 보기도 편하고 수정도 쉬웠다.
두 번째 차이점은 이번에 대답을 출력할 때는 이번 내용을 복습하면서 한번도 사용해보지 않았던 조건 연산자를 사용한 부분이다. 사실 이 부분은 위와 같이 min>10을 사용하여 true혹은 false를 출력하는 것이 편하지만, 마침 조건 연산자를 사용할 수 있을 것 같은 부분이라 개념을 보기만 하고 넘어가는 것 보다는 한 번 적용해보는 것이 나을 것 같아서 사용했다. 나중에 두 개 중에 하나의 값을 출력하는 if-else문을 쓸 때 잘 활용할 수 있을 것 같다.
2회차 회고록
: 학기 중에 해당 주차의 강의를 들을 때 과제에 사용되지 않는 연산자를 주의깊게 보지 못해서 이번에 복습할 때 '이런 것도 있었지' 라는 생각이 들 때가 있어서 소홀했던 부분에 대해 반성할 수 있었다. 이번에는 학기 중에 제출했던 과제와 차이점이 조금 있어서 지난 회차와 다르게 코드의 비교가 가능했는데, 확실히 학기를 끝내고 복습을 한 이후에 다시 과제를 해보니 조금이지만 코드에서 예전과는 달라진 점이 보여서 재미를 느끼며 할 수 있지 않았나싶다.
'2020 하계 모각코' 카테고리의 다른 글
[2020 모각코] 6회차(2020.07.16.) (0) | 2020.07.16 |
---|---|
[2020 모각코] 4회차(2020.07.09.) (0) | 2020.07.09 |
[2020 모각코] 3회차(2020.07.07.) (0) | 2020.07.07 |
[2020 모각코] 1회차(2020.06.30.) (0) | 2020.06.30 |
[2020 모각코] 목표 및 회차별 계획 (0) | 2020.06.19 |