(C++) 스마트팩토리 -12일차

내 이름 안찬찬·2023년 2월 1일
0

C++

C언어란?

  • 처음엔 C언어의 확장판으로 만들어진 언어
    - 객체 지향 언어 (C는 절차 지향 언어)
    - 객체 지향적이기 때문에 구조화된 프로그램을 짤 수 있음
절차 지향 언어란?
개체를 순차적으로 처리하여 프로그램 전체가 유기적으로 연결되어야 한다.

객체 지향 언어란?
프로그램을 다수의 객체로 만들고, 서로 상호작용 하도록 만드는 프로그래밍 언어이다.
  • 객체 지향 개념을 도입하여 C언어에 비해 효율성 저하를 최소화

  • 타입체크가 엄격
    - 실행 시간 오류의 가능성을 줄이고 디버깅을 돕는다.

  • 이식성이 좋음
    - 다양한 운영체제에서 사용할 수 있는 언어

  • 활용 분야
    - 임베디드
    - 금융, 통신 애플리케이션
    - 서버 구축
    - 검색엔진 등



입력, 출력, 개행

입력(cin)

  • std::cin >>
    - cin은 console in 이라는 의미로 콘솔이 열리고 값을 입력할 수 있도록 한다.
    - 입력한 값을 이용하려면 입력된 값을 변수에 담아서 저장해야 한다.
int int1;
std::cin >> int1;

출력(cout)

  • std::cout <<
    - cout은 console out이라는 의미로 콘솔에 값을 출력해 준다.
std::cout << int1;

개행

  • \n
  • std::endl;
std::cout << "Hello World!\n";
	//또는
std::cout << "Hello World!";
std::cout << std::endl;


변수

변수란?

  • 데이터 저장공간
    - 데이터에는 숫자, 문자, 객체, 함수, ...등이 있다.

  • 변수가 어떤 유형(data type, 자료형)인지 정하고 변수 이름을 지정
    - int num1 = 5;
    - 자료형 int, 변수이름 num1 에 5라는 숫자를 초기화(대입)한다는 의미

  • 변수에 값을 넣을 때는 대입 연산자 (=)를 이용하여 값 저장


식별자(변수명) 규칙

  • 예약어(do, while, if 등) 사용 X

  • 소문자와 대문자를 구분
    - age와 AGE은 다른 변수

  • 대소문자, 숫자, 문자로만 구성할 수 있음
    - 문자는 _와 $만 허용

  • 숫자로 시작될 수 없음


Data Type (자료형)

외에도 많으나 지금은 이정도만 알고있으면..!

자료형 - string과 char

  • 문자('')와 문자열("")은 따옴표로 둘러싸서 사용
    - "Hello World" == 문자열
    - 'A' == 문자

  • 문자에는 숫자도 저장이 가능하다.
    - ASCII 코드 범위 내의 숫자라면!
    - 숫자값을 저장해도 출력은 문자가 된다.

  • std::string a = 5; (X), std::string a = "5"; (O)
    - 따옴표 안에 있으면 5라는 문자열, 따옴표 안에 없으면 숫자 자체를 의미

char character1 = 100;

std::cout << character1;
//출력값 = d;

string을 이용해 변수를 선언하려면?

  • string은 표준 라이브러리를 선언해서 사용해야 한다.
  • 표준 라이브러리란?
    - 라이브러리는 특정한 기능들을 모아둔 것
    - 표준 라이브러리는 C++가 기본적으로 가지고 있는 라이브러리
    - 표준 라이브러리 사용법



실습 1

  • "이름을 입력하세요: " 라는 문구를 출력하고 사용자로 부터 이름을 입력 받기
  • "나이를 입력하세요: " 라는 문구를 출력하고 사용자로 부터 나이를 입력 받기
  • 이름과 나이의 입력이 끝나면 "안녕하세요! OOO님(OO세)" 라는 문구 출력
std::string name; // 문자열 변수 선언
int age; // int형 변수 선언

std::cout << "이름을 입력하세요:";
std::cin >> name;
std::cout << std::endl;

std::cout << "나이를 입력하세요:";
std::cin >> age;
std::cout << std::endl;

std::cout << "안녕하세요! " + name + "님 (" << age << ")세";


연산자

산술 연산자, 증감 연산자

int a = 10;
double b = 3.14;
short c = 3;
std::string str1 = "5";
std::string str2 = "10";

//산술 연산자
std::cout << a + b << std::endl;
std::cout << a - b << std::endl;
std::cout << a * b << std::endl;
std::cout << a / c << std::endl;
std::cout << a % c << std::endl;
std::cout << str1 + str2 + std::to_string(c) << std::endl; //5103

//증감 연산자
std::cout << a << std::endl; // 10
std::cout << a++ << std::endl; // 10
std::cout << a << std::endl; // 11

std::cout << ++a << std::endl; // 12
std::cout << a << std::endl; // 12

논리 연산자

  • ! (NOT)
  • && (AND)
  • || (OR)

비교 연산자

  • <, >, <=, >=
  • !=(not equal), ==(equal)
std::cout << !false << std::endl; // true
std::cout << !(!false) << std::endl; // false
std::cout << (false && false) << std::endl; // false
std::cout << (false && true) << std::endl; // false
std::cout << (true && true) << std::endl; // ture
std::cout << (false || false) << std::endl; // false
std::cout << (true || false) << std::endl; // true
std::cout << (true || true) << std::endl; // true

std::cout << ((2 > 1 && -2 < 1) || 5 > 2) << std::endl; // true


조건문

if문

int a;
std::cout << "숫자를 입력해 주세영: ";
std::cin >> a;

if (a < 10) {
	std::cout << "입력한 수가 10보다 작습니다.\n";
}
else if (a == 10) {
	std::cout << "10을 입력하셨군요!\n";
}
else {
	std::cout << "입력한 수가 10보다 큽니다.\n";

if문을 이용한 학점 계산기

int a;

std::cout << "점수를 입력해 주세영: ";
std::cin >> a;

if (a > 100 || a < 0) {
	std::cout << "점수를 잘 못 입력 하셨어용";
}
else if (a >= 90) {
	std::cout << "A학점 입니다~~";
}
else if (a >= 80) {
	std::cout << "B학점 입니다~";
}
else if (a >= 70) {
	std::cout << "C학점 입니다..";
}
else if (a >= 60) {
	std::cout << "D...";
}
else
	std::cout << "F";

std::cout << std::endl;

중첩 if문

std::string userId, userPw;
std::string inputId = "user01", inputPw = "1234";
std::cout << "아이디를 입력해주세요: ";
std::cin >> userId;
std::cout << "비밀번호를 입력해주세요: ";
std::cin >> userPw;

if (userId == inputId) {
	if (userPw == inputPw) {
		std::cout << "로그인 성공!!\n";
	}
	else {
		std::cout << "비밀번호가 틀렸습니다.\n로그인 실패\n";
	}
}
else {
	std::cout << "아이디가 틀렸습니다.\n로그인 실패\n";

switch문을 이용한 학점 계산기

char grade;

switch (a/10) {
case 10:
	std::cout << 'A';
	grade = 'A';
	break;
case 9:
	std::cout << 'A';
	grade = 'A';
	break;
case 8:
	std::cout << 'B';
	grade = 'B';
	break;
case 7:
	std::cout << 'C';
	grade = 'C';
	break;
case 6:
	std::cout << 'D';
	grade = 'D';
	break;
case 5:
case 4:
case 3:
case 2:
case 1:
case 0:
	std::cout << "F";
	grade = 'F';
	break;
default:
	std::cout << "잘 못 입력";

삼항연산자

  • 간단한 조건문

조건 ? 조건이 참일 때 실행할 코드 : 조건이 거짓일 때 실행할 코드;

ex) score == 'F' ? std::cout << "재수강" : std::cout << "잘해써용~";

ex2) grade == 'F'||'D' ? std::cout << "재수강 ㅠ" : std::cout << "잘했어영~";
  • if~else문과 동작 방법 일치


실습 2 (if문 이용)

  • "나이를 입력하세요: "라는 문구를 출력하고 사용자로부터 숫자를 입력 받기

  • 입력된 숫자가 1부터 7 까지면 "유아", 8~13까지면 "초등학생", 14~16은 중학생, 17~19는 고등학생 20살 이상이면 성인

  • 200살 이상이면 "나이가 너무 많습니다" 출력

	int age;
	std::cout << "나이를 입력하세요: ";
	std::cin >> age;

	if (0 <= age && age <= 7) {
		std::cout << "유아";
	}

	else if (age <= 13) {
		std::cout << "딩초";
	}

	else if (age <= 16) {
		std::cout << "중학생";
	}

	else if (age <= 19) {
		std::cout << "고등학생";
	}

	else if (age <= 199) {
		std::cout << "성인";
	}

	else if (200 <= age) {
		std::cout << "나이가 너무 많습니다..!";
	}

	else {
		std::cout << "잘 못 입력";
	}
	std::cout << std::endl;


실습3 (if문 이용)

  • "이름을 입력하세요: "라는 문구 출력 후 사용자로부터 이름을 입력 받기
  • 홍길동이 입력되면 "남자", 성춘향이 입력되면 "여자", 그 외의 내용이 입력되면 "모르겠어요" 출력
	std::string name;
	std::cout << "이름을 입력하세요: ";
	std::cin >> name;

	if (name == "홍길동") {
		std::cout << "남자";
	}
	else if (name == "성춘향") {
		std::cout << "여자";
	}
	else {
		std::cout << "모르겠어용";
	}
	std::cout << std::endl;


실습4 (삼항현산자 이용)

  • 숫자 입력 받기
  • 5의 배수이면 5의 배수입니다.
  • 5의 배수가 아니하면 5의 배수가 아닙니다
  • 출력
	int a;
	std::cout << "숫자를 입력하세요: ";
	std::cin >> a;

	a % 5 == 0 ? std::cout << a + " 는 5의 배수입니다." : std::cout << a + "는 5의 배수가 아닙니다.";
	std::cout << std::endl;


실습5

  • 두 개의 변수와 연산자를 입력 받아 계산할 수 있는 프로그램 만들기
  • 조건문의 종류는 자유롭게!

if문 사용시

	int int1, int2;
	std::string w;
	
	std::cout << "숫자1을 입력하세요: ";
	std::cin >> int1;
	std::cout << "숫자2를 입력하세요: ";
	std::cin >> int2;
	std::cout << "원하는 계산을 입력하세요 (+, -, *, /): ";
	std::cin >> w;

	if (w == "+") {
		std::cout << "값: " << int1 + int2;
	}
	else if (w == "-") {
		std::cout << "값: " << int1 - int2;
	}
	else if (w == "*") {
		std::cout << "값: " << int1 * int2;
	}
	else if (w == "/") {
		std::cout << "몫: " << int1 / int2 << ", 나머지" << int1 % int2;
	}

switch문 사용시

	char op;
	int a, b;
	std::cout << "연산할 정수 두 개를 입력해 주세요.";
	std::cin >> a >> b;
	std::cout << "연산자를 입력해주세요. (+ - * /)";
	std::cin >> op;
	std::cout << "**** 연산결과 --->";
	switch (op) {
	case '+':
		std::cout << a + b;
		break;
	case '-':
		std::cout << a - b;
		break;
	case '*':
		std::cout << a * b;
		break;
	case '/':
		std::cout << "몫:" << a / b << "나머지는" << a % b << "입니다.";
		break;
	default:
		std::cout << "잘못된 연산자입니다.";
	}


마무으리!

HMI나 PLC를 쓰면서 스크립트를 얼추 써봤지만,
부트캠프 신청한 목적이라고도 볼 수 있는 C++을 배우기 시작하였다.
대학교 1학년 때로 돌아간 느낌이 들어 추억 새록새록!!

사실 대학교 1학년 2학년 때 열심히 놀기도 하고 프로그래밍에 관심이 없어서 기초가 비실비실한 상태로 급하게 졸업하기 위해 지식을 마구잡이로 습득했던 느낌이 있었다.

처음 느낀 것은 아니었기에 방학 동안 코딩 학원도 다녀봤었는데,
다급한 마음 때문인지 지금은 더 처절하게 수업에 임하고 있다.

덕분에 기초가 단단하게 다져지고 있는 기분!! 아주 조와~

요즘 수업에 뒤쳐지지 않기를 바라는 마음이 한 가득이다.

내일도 열심히 듣고 뒤쳐지지 말자!

profile
스마트팩토리 개발자가 되기 위한 □□ !!

0개의 댓글