마음만은 새내기

항상 초심을 잃지 않고 생활하겠습니다~!

2019 수업 노트

2019-1학기 수업 노트 (C++ 프로그래밍 실습, 2019.03.18.)

동동매니저 2019. 3. 25. 17:12

「2019학년도 1학기」 ///

by. 동동매니저 >_<


일자 : 2019년 03월 18일 (월)

과목 : C++ 프로그래밍 실습

담당 교수님 : SCH 한상욱 교수님


실습 내용을 요약해보면?

★ 연산자 복습!! 다음 수식의 결과는?

(int a = 5, b = 10으로 가정)

1. a+b/3*3

2. b<<2

3. a!=b

4. b%a

5. (a>b)?a:b

6. sizeof(a)

7. c=a++; (c의 값은?)

8. a+=b; (a의 값은?)

9. a&b

10. c=(a+b,a-b); (c의 값은?)


☆ 풀이 ☆

1.

▶ 앞에서부터 순서대로 계산하시는 분들도 계신데요... (정말로 이러시면 안돼요!!)

▶ 사칙 연산에서는, 곱셈과 나눗셈의 우선 순위가 높아서, 이들을 먼저 계산해 주셔야 합니다.

▶ 즉, b/3*3을 먼저 계산하고, 이 값에 a를 더하는 것이죠.

▶ 하지만, a, b가 모두 int고, 나누기 연산자 뒤에 나온 수도 정수이기 때문에, 나누는 과정에서 소수점 이하가 잘리게 됩니다.

▶ 즉, 10/3 = 3.333...이고, 이를 3으로 해석하게 됩니다.

▶ 여기에 3을 곱하고, 5를 더하면 3*3+5 = 14가 되는 것이죠.


2.

▶ 이 연산자는 비트 연산자로, 비트를 좌측으로 옮기고, 새로 생긴 자리에 0을 채우는 것입니다.

▶ 즉, 한 번 옮길 때 마다 2씩 곱해지는 것이죠.

▶ 여기에서는 2가 주어졌으므로, 10*2*2 = 40이 됩니다.


3.

▶ a와 b가 다른지를 검사합니다. (당연히 다르겠죠?)

▶ 따라서 이 식은 거짓이 되고, C에서는 이를 0으로 처리합니다.


4.

▶ b를 a로 나눈 나머지를 계산합니다. (당연히 0이겠죠?)


5.

▶ 삼항 연산자로, ? 앞의 조건이 참이면 앞의 수식을, 거짓이면 뒤의 수식을 반환합니다.

▶ 여기에서는, 두 수 중에서 큰 수를 찾는 수식으로 보셔도 무방합니다.

▶ 따라서, 10이 반환됩니다.


6.

▶ 자료형의 크기를 반환합니다.

▶ C언어에서는, int를 4바이트로 처리합니다.


7.

▶ 여기에서는 후위 연산자를 사용했습니다.

▶ 즉, a의 값이 c에 대입되고 나서 a가 증가하게 됩니다.

▶ 따라서, 정답은 5입니다.


8.

▶ 이는 a=a+b와 같은 의미입니다. (당연하겠지만, 15가 대입되겠죠?)


9.

▶ 비트 연산자가 한 번 더 나왔어요...

▶ 이는 비트 AND 연산으로, 각 비트가 모두 1일 때에만 1로 처리합니다.

▶ a = 5 = 0101(2), b = 10 = 1010(2)가 되겠죠?

▶ 따라서, 정답은 0!!


10.

▶ 제가 유일하게 모르는 부분인데요...

▶ 이 연산자의 의미는, 가장 뒤의 연산이 실행됩니다.

▶ 따라서 가장 뒤에 나온 a-b가 실행되고, -5가 대입됩니다.


오늘 실습한 문제!!

▶ 문제 1

사용자로부터 문자열을 계속 입력받는 프로그램을 작성하시오. 단, "yes"를 입력하면 프로그램을 종료한다.

(대소문자 구분!!)

★ 실행 예시

문자열을 입력하세요>>no

문자열을 입력하세요>>SCH

문자열을 입력하세요>>yes

종료합니다...


문제를 풀어보면? (C++ 소스 코드)

★ 문제 1

#include <iostream>
#include <cstring>

using namespace std;

int main(void) {
	char input[100];
	while (true) {
		cout << "문자열을 입력하세요>>";
		cin.getline(input, 100);
		if (strcmp(input, "yes") == 0) {
			cout << "종료합니다..." << endl;
			break;
		}
	}
	return 0;
}

수업을 듣고 나서 느낀 점!!

C언어의 연산자 문제에서 살짝 가물가물한 부분이 있었는데, 생소한 부분을 제외하고는 그래도 기억력이 좋은 느낌?

언젠가는 LAB에도 돌어가서 실력도 키우고 싶어요...


기타 참고 사항!!

Report : 교재 2장 연습문제 풀어오기!!