티스토리 뷰
Chapter 01 C언어 기반의 C++1
01-1 printf와 scanf를 대신하는 입출력방식
관찰결과 1: 헤더파일 선언문 #include <iostream>
C++에서는 .h를 생략하기로 한다.
관찰결과2:std::cout과 <<를 이용한 출력
printf와 달리 %d와 %s와 같은 서식문자를 이용한 별도의 출력포맷을 지정하지 않아도 적절한 출력이 이뤄진다.
관찰결과 3: <<연산자를 이용한 출력대상의 연이은 표현과 개행
std::cout<<'출력대상1'<<'출력대상2'<<'출력대상3';
scanf를 대신하는 데이터의 입력
std::cin>>val1;
변수의 선언은 어디서든 가능하다.
관찰결과 1: std::cin >> 연산자
std::cin>>val1;
C++에서는 데이터 입력도 데이터의 출력과 마찬가지로 별도의 포맷이 필요하지 않다.
int형이 오면 int가 입력이 double형이 오면 double이 입력된다.
관찰결과 2: C++의 지역변수 선언
C언어는 맨 위에 지역변수의 선언을 해야했지만, C++은 함수 내 어디든 삽입이 가능하다.
배열 기반의 문자열 입출력
#include <iostream>
int main(void
{
char name[100];
char lang[100];
std::cout<<"이름은 무엇입니까? ";
std::cin>>name;
std::cout<<"좋아하는 프로그래밍 언어는 무엇인가요? ";
std::cin>>lang;
std::cout<<"내 이름은 "<name<<"입니다.\n";
std::cout<<"제일 좋아하는 언어는 "<<lang<<"입니다."<<std::endl;
return 0;
}
연습문제
문제 1: 사용자로부터 총 5개의 정수를 입력 받아서, 그 합을 출력하는 프로그램을 작성해보자.
#include <iostream>
int main(void)
{
int sum = 0,k=0;
for (int i = 0; i < 5; i++)
{
std::cout << i + 1 << "번째 정수 입력: ";
std::cin >> k;
sum += k;
}
std::cout << "합계: " << sum;
return 0;
}
문제 2
프로그램 사용자로부터 이름과 전화번호를 문자열의 형태로 입력 받아서, 입력 받은 데이터를 그대로 출력하는 프로그램을 작성해 보자.
#include <iostream>
int main(void)
{
char arr[100];
char bunho[100];
std::cout << "이름 입력: ";
std::cin >> arr;
std::cout << "번호입력 ";
std::cin >> bunho;
std::cout << "이름: " << arr << std::endl;
std::cout << "번호: " << bunho << std::endl;
return 0;
}
번호를 int형 배열로 선언하면 안 된다. 문자열로 취급해야한다.
문제 3
숫자를 하나 입력 받아서 그 숫자에 해당하는 구구단을 출력하는 프로그램을 작성해보자. 예를 들어서 사용자가 5를 입력한다면 구구단에서 5단을 출력해야한다.
#include <iostream>
int main(void)
{
int num;
std::cout << "숫자 입력:";
std::cin >> num;
for (int i = 1; i <= 9; i++)
{
std::cout << num << " X " << i << std::endl;
}
return 0;
}
문제 4
판매원들의 급여 계산 프로그램을 작성해 보자. 이 회사는 모든 판매원에게 매달 50만원의 기본 급여와 물품 판매 가격의 12%에 해당하는 돈을 지급한다. 예를 들어서 민수라는 친구의 이번 달 물품 판매 금액이 100만원이라면, 50+100*0.12=62, 따라서 62만원을 급여로 지급 받는다. 단, 아래의 실행의 예에서 보이듯이 이러한 급여의 계산은 -1이 입력될 떄까지 계속 되어야 한다.
#include <iostream>
int main(void)
{
while (1)
{
int num;
std::cout << "판매 금액을 만원 단위로 입력(-1 to end):";
std::cin >> num;
if (num == -1)
{
std::cout << "프로그램을 종료합니다.";
break;
}
else
std::cout <<"이번 달 급여:" << 50 + (num * 0.12) << "만원" << std::endl;
}
return 0;
}
01-2 함수 오버로딩(Function Overloading)
함수 오버로딩의 이해
함수호출 시 전달되는 인자를 통해서 호출하고자 하는 함수의 구분이 가능
->이름은 같지만 매개변수나 변수형에 따라 구분가능
함수 오버로딩의 예
int MyFunc(char c)
int MyFunc(int n)
int MyFunc(int a, int b)
잘못된 예
void MyFunc(int n)
int MyFunc(int n)
반환형으로는 구분할 수 없다.
01-3 매개변수의 디폴트 값(Default Value)
매개변수에 설정하는 '디폴트 값'의 의미
int MyFuncone(int num=7)
{
return num+1;
}
인자가 전달되지 않으면 7을 전달한 거로 간주.
디폴트 값은 함수의 선언 부분에만 표현하면 됩니다.
#include <iostream>
int Adder(int nu,1=1,int num2=2);
int main(void)
{}
int Adder(int num1, int num2)
{
return num1+num2;
}
부분적 디폴트 값 설정
int YourFunc(int num1, int num2=5, int num3=7)
뒤에서부터 채우면 입력시 하나만 입력하면 뒷 값은 입력된 거로 간주할 수 있다.
01-4 인라인(inline) 함수
매크로 함수의 장점
일반적인 함수에 비해서 실행속도가 빠르다.
그러나 복잡한 형태의 함수를 정의하는데 한계가 있다.
C++기반의 인라인 함수 정의
inline int SQUARE(int x)
{
return x*x;
}
매크로를 이용한 함수는 전처리기에 의해 처리되지만, 인라인화는 컴파일러가 처리한다.
매크로 함수에는 있지만, 인라인 함수에는 없는 장점
매크로 함수는 자료형에 의존적이지 않다.
인라인 홈수는 자료형에 의존적이고, 데이터 손실이 발생할 수가 있다.
01-5 이름공간(namespace)에 대한 소개
이름공간의 등장배경
여러 회사가 참여했을 경우, 같은 함수의 이름이 있을 수가 있다.
이름공간의 기본원리
202호에 사는 철수야
201호에 사는 철수야
이름공간 기반의 함수 선언과 정의의 구분
이름 공간 안에 선언만 삽입할 수도 있다.
이름공간의 중첩
이름공간 안에 또 다른 이름공간이 삽입될 수 있다.
std::cout, std::cin, std::endl
모두 std라는 이름공간 안에 삽입된 함수다.
using을 이용한 이름공간의 명시
using namespace std;
->std의 입력을 생략할 수 있다.
이름공간의 별칭 지정
namespace ABC=AAA::BBB:CCC;
AAA::BBB:CCC -> ABC라는 이름공간으로 쓸 수 있다.
01-6 OOP 단계별 프로젝트 01단계
책 한바퀴 돌리고 한다.
'프로그래밍 > 윤성우의 열혈 C++' 카테고리의 다른 글
Chapter 06 friend와 static 그리고 const (0) | 2022.03.08 |
---|---|
05 복사생성자(copy constructor) (0) | 2022.03.07 |
Chpater 04 클래스의 완성 (0) | 2022.03.05 |
Chapter 03 클래스의 기본 (0) | 2022.03.04 |
Chapter 02 C언어 기반의 C++ 2 (0) | 2022.03.04 |
- Total
- Today
- Yesterday
- Python
- 심리학
- 사회심리학
- 데이터분석
- 여인권
- 류근관
- stl
- 인지부조화
- 일본어
- 열혈프로그래밍
- 윤성우
- 강화학습
- 통계
- K-MOOC
- 코딩테스트
- c++
- 일본어문법무작정따라하기
- C
- 파이썬
- 회계
- 티스토리챌린지
- 일문따
- C/C++
- 보세사
- 통계학
- 정보처리기사
- 백준
- 뇌와행동의기초
- 오블완
- 조건형성
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |