TIL

25.12.08일자 - TIL

csh8696nb 2025. 12. 8. 20:52

C++ 문법

C++문법 1-5, 1-6강 일부, C언어 기초 라이브(복습) 세션
Calss

많은 코드는 유지 보수에 더 많은 시간이 소요된다.
이를 위해 필요한 것은
재사용성, 필수 과정이 쉽게 수정되지 않아야 한다는 특징 등이 있다.
세부 사항은 숨겨져 있어야 한다.
시험 성적/자동차 예시
이것을 위해 필요한 것이 class (객체 지향 프로그래밍)
===
class  이름 {
  맴버(변수, 함수)
}
===
헤더 파일과 소스 파일로 나눠지는 것을 이걸로 알 수 있다.

public/private
기본 값은 private 이며 :: 연산자에 접근 할 수 있는 권한이 없다.
일반적으로 멤버함수는 Public  멤버 변수는 Private

=====
#include <iostream>
#include <algorithm> //max 함수 사용
#include <string>
using namespace std;

class Student
{
public:
    //동작 정의(이를 멤버함수라고 합니다)
    double getAvg();
    int getMaxScore();

private:
    //데이터 정의(이를 멤버변수라고 합니다.)
    int kor;
    int eng;
    int math;
};

double Student::getAvg()
{
    return (kor + eng + math) / 3.0;
}

int Student::getMaxScore()
{
    return max(max(kor, eng), math);
}

int main()
{
    Student s;
    s.getAvg();

    return 0;
}
=====

getter, setter
맴버 변수를 변경할 때 setter를 값을 가져올 때 geter를 사용한다.

this math -> 클래스 내의 매스

==========
#include <iostream>
#include <algorithm> //max 함수 사용
#include <string>

using namespace std;

class Student
{
public:
    //값이 주어지지 않을경우 기본값을 할당하는 생성자
    Student(int math = 32, int eng = 17, int kor = 52)
    {
        this->math = math;
        this->eng = eng;
        this->kor = kor;
    }
    double getAvg();
    int getMaxScore();

    //동작 정의(이를 멤버함수라고 합니다)
    void setMathScore(int math)
    {
        this->math = math;
        //this.math = math;와 동일
    }
    void setEngScore(int eng)
    {
        this->eng = eng;
        //this.eng = eng;와 동일
    }
    void setKorScore(int kor)
    {
        this->kor = kor;
        //this.kor = kor;와 동일
    }

    int  getMathScore() { return math; }
    int  getEngScore() { return eng; }
    int  getKorScore() { return kor; }

private:
    //데이터 정의(이를 멤버변수라고 합니다.)
    int kor;
    int eng;
    int math;
};

double Student::getAvg()
{
    return (kor + eng + math) / 3.0;
}

int Student::getMaxScore()
{
    return max(max(kor, eng), math);
}


int main()
{
    Student s;
    //아래와 같이 사용할 수도 있음
    //Student s(1);
    //Student s(1, 2);
    //Student s(32, 52, 74);

    //평균 최대점수 출력
    cout << s.getAvg() << endl;
    cout << s.getMaxScore() << endl;

    return 0;
}
==========


소스 파일과 헤더 파일을 분리하는 이유는 중복 정의를 피하기 위해서 이다.

==============================
1-6

기본 클래스(부모 클래스), 파생클래스(자식 클래스)
protected -> 외부 접근 -X, 상속받은 클래스는 접근 가능



====================

#include <iostream>

using namespace std;

/*7시30분 기상 9시까지 내배캠 출석로그인
13시와 18시가 되면 1시간 식사시간
21시 퇴실 24시에는 취침*/

int main() {
    int WakeUpTime;

    cout << "WakeUpTime" << endl;
    cin >> WakeUpTime;
    if (WakeUpTime < 9) {
        cout << "good boy Have a good day" << endl;
    } else cout << "Wake Up earlier!" << endl;

    int Time;

    for(int i i=10, i < 24 , i++;) {
        Time = i;
        cout << Time << endl;
        if (i== 12) {
            cout << "It's Lunch Time!" << endl;
        }else if (i==18) {
            cout << "Ti's Dinner Time!" << endl;
        }else if (i==21) {
            cout << "It's Leave Work Time!" << endl;
        }

    return 0;
}

====================
라이브 세션

암기는 중요하니까 매번 숙제로 제출된다.


프로그래밍을 잘하는 방법
*인내 - 프로그래밍 책을 처음부터 끝까지 읽어보는 것 (괜찮은 것 같다)
읽기 
오류/버그 - 그냥 버그 생겼다고 알려주는 것만 보는 게 아니라 흐름을 읽을 수 있어야 한다.(오류 부분의 위아래부터)

출력 C언어
printf( );   - f-format   /  ("  " ,  );
%d,             %f,            %c,            %p
정수(십진법), 실수, 캐릭터(단일 문자), 포인터(주소)
int 변수 =10;
printf("n: %d", 변수); - n : 10

형식은 외워야만 한다.
언리얼도 C++기 때문에 블프가 아닌 C++를 활용할 때 이것이 사용된다.

변수 == 메모리
int - 정수, flat - 실수, char - 문자
케멀 케이스
===
배열
int arr[]
자료형 이름 []



===
#include <stdio.h>

int main(void)
{
    printf("Hello, World!\n");
    return 0;
}
===
#include <stdio.h>

int main(void)
{
    int a, b;
    scanf("%d %d", &a, &b);

    printf("%d + %d = %d\n", a, b, a + b);
    return 0;
}
===
#include <stdio.h>

int main(void)
{
    int a, b;
    int sum, diff, mul;

    scanf("%d %d", &a, &b);

    sum = a + b;
    diff = a - b;   // a - b
    mul = a * b;

    printf("합: %d\n", sum);
    printf("차: %d\n", diff);
    printf("곱: %d\n", mul);

    return 0;
}
===
#include <stdio.h>

int main(void)
{
    int arr[5];
    int i;

    for (i = 0; i < 5; i++)
    {
        scanf("%d", &arr[i]);
    }

    for (i = 0; i < 5; i++)
    {
        printf("%d", arr[i]);
        if (i != 4)
            printf(" ");
    }
    printf("\n");

    return 0;
}
===
#include <stdio.h>

int main(void)
{
    int arr[5];
    int i;
    int sum = 0;
    int avg;

    for (i = 0; i < 5; i++)
    {
        scanf("%d", &arr[i]);
        sum += arr[i];
    }

    avg = sum / 5;   // 정수 나눗셈

    printf("합: %d\n", sum);
    printf("평균: %d\n", avg);

    return 0;
}
===

관계 연산자
== / = 의 차이
!=, <, >, <=, >=
위의 종류들은 암기하고 있어야 한다.
&& - and
|| - or

else if - 앞의 if가 틀리면   / else - 나머지
scanf - &변수 -> &변수 의 주소 값을 참조하겠다. (스캔 받은 값을 이 주소에 참고[넣겠]하겠다)

====================

클래스 (청사진, 설계도, 붕어빵 기계) -> 객체(클래스가 메모리에 올라간 형태)
객체, 인스턴스화
생성자
getter, setter
맴버 변수를 변경할 때 setter를 값을 가져올 때 geter를 사용한다.

this math -> 클래스 내의 매스
<stdio.h> - stdio라는 기본 제공되는 헤더파일을 활용하는 것이었다.
using namespace std; 를 사용해야 cin cout을 사용할 수 있고 cout << / cin >> 을 지켜야한다.
구조체는 public 클래스는 private를 기본으로 가진다.
====
반환 값.
함수의 전과 후의 프로그램의 상태가 바뀌는 게
글을 쓰는 것. 허공에 글을 쓰는 것(보이드)를 사용하는 것).
꼭 써야 하는 것은 아니지만 다른 함수 등에 익숙해지고 그것을 계속 사용하다 필요가 느껴지면 써보는 것도 괜찮다.
====
A. x - A클래스에 상속된 x

과제는 다음 주인 16(화)이니까 벌써 머리를 뜨겁게 할 필요는 없다.


.

'TIL' 카테고리의 다른 글

25.12.10일자 - TIL  (0) 2025.12.10
25.12.09일자 -TIL  (0) 2025.12.09
25.12.05일자 - TIL  (0) 2025.12.05
25.12.04 - TIL  (1) 2025.12.04
25.12.03일자 - TIL  (0) 2025.12.03