#include <iostream>
int main()
{
std::cout << "Hello World!\n";
}
*일반 변수는 . / 포인터 변수는 ->
#include <iostream>
struct Man {
int age; //멤버
double weight;
//int getAge() { return age; }//멤버함수
// void setAge(int a) { age = a; } //c언어에서는 구조체에 변수만 가능, c++에서는 구조체 안에 함수도 넣을 수 있다
};
int main()
{
Man han = { 1, 3.5 }, han1; //c++은 struct 생략 가능(c언어는 생략 불가능)
han1 = han; //대입하면 멤버들이 모두 복사됨
std::cout << han1.age << " " << han1.weight << std::endl;
std::cout << han.age << " " << han.weight << std::endl;
// Man *kim;
// kim->age = 2;
// std::cout << kim->age;
han.age = 10;
han.weight = 30.5;
std::cout << han.age <<" "<< han.weight << std::endl;;
}
*영어로도 기억
*자료와 처리하는 동작이 나눠져 있다
*객체지향프로그래밍 (OOP)
*객체에는 data와 methods가 있다
*객체지향 프로그래밍의 3가지 특징
- 캡슐화
- 상속성
- 다형성
*구조적에서는 따로 / 객체지향에서는 자료와 처리하는 동작을 class로 묶는다
*클래스는 설계도이고 객체는 설계도로 만들어진 집이다./ 객체 Instance
* 클래스 설계도로부터 만들어진 객체를 Instance라고 한다
* 클래스와 객체 ex) 고양이: 우리집 3살 해피 (객체는 구체적이고 실제 존재하는 하나)
* class만드는 것이 캡슐화시키는 것이다
상속(inheritance)
파생 클래스(derived class), 자식 클래스(child class, subclass) : 상위 클래스의 속성을 상속받은 하위 클래스
기본 클래스(base class), 부모 클래스(parent class, superclass) : 상위 클래스
다형성(polymorphism)
-이름을 하나만 쓴다
*클래스 다이어그램 그리기
고양이
<특성 멤버 변수> 털 색, 눈 색, 고양이 이름, 나이, 품종, 주인 이름
<행위 멤버 함수> 이름 짓기, 이름 변경하기, 이름 알아내기, 1년이 지나면 한살 증가, 태어나면 1살이다, 점프를 잘한다, 쥐를 는다
#include <iostream>
class Man {
//private: //private:을 쓰면 밑에 있는 변수들은 class안에서만 접근할 수 있다
public: //public:을 쓰면밑에 나오는 변수들은 어디에서나 접근할 수 있다
int age; //멤버
double weight;
};
int main()
{
Man han = { 1, 3.5 }, han1;
han1 = han;
std::cout << han1.age << " " << han1.weight << std::endl;
std::cout << han.age << " " << han.weight << std::endl;
han.age = 10;
han.weight = 30.5;
std::cout << han.age <<" "<< han.weight << std::endl;;
}
#include <iostream>
class Man {
private: //캡슐화, 감춘다. 클래스 내에서만 접근 가능
int age; //멤버
double weight;
public: //어디서나 접근 가능
int getAge() { //출력, 리턴, getAge는 age가 튀어나오는 함수
return age;
}
void setAge(int a) { //입력, 대입
age = a;
}
void run() {
std::cout << "달린다~~~\n";
}
};
int main()
{
Man han;
han.setAge(3); //han.age는 불가능
std::cout << han.getAge() << std::endl;;
han.run();
}
#include <stdio.h>
int add(int a, int b) {
return a + b;
}
int main() {
int result = add(5, 3);
printf("결과: %d\n", result);
return 0;
}
<c++>
#include <iostream>
int add(int a, int b) {
return a + b;
}
int main() {
int result = add(5, 3);
std::cout << "결과: " << result << std::endl;
return 0;
}
<java>
public class Main {
public static int add(int a, int b) {
return a + b;
}
public static void main(String[] args) {
int result = add(5, 3);
System.out.println("결과: " + result);
}
}
< JavaScript>
function add(a, b) {
return a + b;
}
var result = add(5, 3);
console.log("결과: " + result);
<c#>
using System;
class Program {
static int Add(int a, int b){
return a+b;
}
static void Main() {
var result = Add(5 ,3 );
Console.WriteLine($"결과: {result}");
}
}
* 하나의 프로그램에서 main 함수는 정확히 한 번만 정의되어야 한다
int main1()
{
std::cout << "Hello World!\n";
}
int main()
{
std::cout << "Hello World!\n";
}
#include <stdio.h> // 표준 입출력 함수를 사용하기 위한 헤더 파일
#include <stdlib.h> // rand() 함수를 사용하기 위한 헤더 파일
#include <time.h> // time() 함수를 사용하기 위한 헤더 파일
int main() {
srand(time(NULL)); // 난수 생성기 초기화. 현재 시간을 기반으로 초기화하여 매번 다른 결과가 나오도록 함
int randomValue = rand() % 6 + 1; // rand() 함수로 난수 생성 후, 이를 6으로 나눈 나머지에 1을 더함으로써 1~6 사이의 숫자를 얻음
printf("생성된 랜덤 값은 %d입니다.
", randomValue); // 생성된 랜덤값 출력
return 0;
}
#include <iostream>
struct Man {
int age; //멤버
double weight; //멤버
std::string name;
};
int main()
{
Man kdh = { 1, 3.5,"aaaa"};
std::cout << kdh.name << kdh.age <<" "<<kdh.weight<< std::endl;
kdh.age = 10;
kdh.weight = 20.5;
kdh.name = "현";
std::cout << kdh.name << kdh.age << " " << kdh.weight << std::endl;
}
//초기화를 할때는 중괄호를 열고 닫기를 해서 차례대로 멤버들을 초기화 한다
c언어의 구조체는 멤버 변수만!
c++ class는 멤버 함수도! (c++의 구조체= 확장자cpp)
구조체(struct) 를 활용한 c++ 예시
#include <iostream> // 표준 입출력 함수를 사용하기 위한 헤더 파일
// 'Person'이라는 이름의 구조체 정의
struct Person {
std::string name; // 이름을 저장하는 문자열 변수
int age; // 나이를 저장하는 정수형 변수
};
int main() {
Person person1; // 'Person' 구조체 타입의 'person1' 객체 생성
person1.name = "홍길동"; // 'person1' 객체의 'name' 멤버에 값을 할당
person1.age = 30; // 'person1' 객체의 'age' 멤버에 값을 할당
std::cout << "이름: " << person1.name << ", 나이: " << person1.age << std::endl;
// 홍길동 객체의 이름과 나이 출력. 출력 결과: 이름: 홍길동, 나이: 30
return 0;
}
#include <stdio.h>
int main(void)
{
int x;
int y[10];
printf("%d\n", sizeof("I love you!"));//12
printf("%d\n", sizeof("대한"));// 5(cp949) or 7(utf-8)
printf("%d\n", sizeof(int));// 4
printf("%d\n", sizeof(x));// 4, sizeof x라고 써도 됨
printf("%d\n", sizeof(y));// 40, sizeof y라고 써도 됨
return 0;
}
sizeof 연산자 예(C++ 프로그래밍)
#include <iostream>
int main() {
int x;
int y[10];
std::cout << sizeof("I love you!") << std::endl; // 13 in C++
std::cout << sizeof("대한") << std::endl; // It depends on encoding
std::cout << sizeof(int) << std::endl; // 4
std::cout << sizeof(x) << std::endl; // 4, 'sizeof x' is also fine
std::cout << sizeof(y) << std::endl; // 40, 'sizeof y' is also fine
return 0;
}
시프트 연산자는 2의 n으로 곱이나 나누기가 되는 연산자 인데 나중에 c++ cout를 만나면 다른 의미로 쓰인다
c,c++,자바 스크립트 ,c#,자바 연산자의 공통점
if문 예제 1
#define _CRT_SECURE_NO_WARNINGS //Visual Studio에서만 사용
#include <stdio.h>
int main(void)
{
int score;
printf("당신의 점수를 입력하고 Enter를 누르세요=");
scanf("%d", &score);
if (score < 60) printf("60점 미만이므로 재수강해야 합니다.\n");
//if문 4가지 방법으로 만들어보기
return 0;
}
if문 다음에 나오는 조건은 소괄호를 사용하고 실행문은 중괄호를사용
if~else문 예제 2 : 60 미만 판단, 양자택일
#define _CRT_SECURE_NO_WARNINGS //Visual Studio에서만 사용
#include <stdio.h>
int main(void)
{
int score;
printf("당신의 점수를 입력하고 Enter를 누르세요=");
scanf("%d", &score);
if (score < 60) {
printf("60점 미만이므로 재수강해야 합니다.\n");
}
else {
printf("60점 이상이므로 Pass입니다.\n");
}
return 0;
}
다중 if~else문 1 : 주민등록번호로 성별 판단
#define _CRT_SECURE_NO_WARNINGS //Visual Studio에서만 사용
#include <stdio.h>
int main(void)
{
int num;
printf("당신의 주민등록번호 뒷 자리의 첫 번째 숫자를 입력하세요=");
scanf("%d", &num);
if (num == 1 || num == 3)
printf("당신은 남성이군요!\n");
else if (num == 2 || num == 4)
printf("당신은 여성이군요!\n");
else
printf("당신은 대한민국 사람이 아니군요!\n");
retu
다중 if~else문 3 : 숫자 입력받아 판단
#define _CRT_SECURE_NO_WARNINGS //Visual Studio에서만 사용
#include <stdio.h>
int main(void)
{
int value;
printf("1~3까지의 수를 입력하세요:");
scanf("%d", &value);
if (value == 1) printf("1을 입력하셨습니다.\n");
else if (value == 2) printf("2를 입력하셨습니다.\n");
else if (value == 3) printf("3을 입력하셨습니다.\n");
else printf("잘못 입력하셨습니다.\n");
return 0;
}
switch∼case문 예제 1 : 다중 if~else와 비교
#define _CRT_SECURE_NO_WARNINGS //Visual Studio에서만 사용
#include <stdio.h>
int main(void)
{
int value;
printf("1~3까지의 수를 입력하세요:");
scanf("%d", &value);
switch (value) {
case 1:
("1을 입력하셨습니다.\n");
break;
case 2:
("2를 입력하셨습니다.\n");
break;
case 3:
("3을 입력하셨습니다.\n");
break;
default:
printf("잘못 입력하셨습니다.\n");
break;
}
return 0;
}
이름 10번 출력
#define _CRT_SECURE_NO_WARNINGS //Visual Studio에서만 사용
#include <stdio.h>
int main(void)
{
int i;
for (i = 0; i < 10; i++) {
printf("%2d:김다현\n", i + 1);
}
return 0;
}
#include <iostream>
#include <iomanip> //setw()
int main()
{
for (int i = 1; i <= 10; i++) {
std::cout << std::setw(2) << i << " : 김다현\n";
}
}
#include <iostream>
#include <iomanip> //setw()
using namespace std;
int main()
{
for (int i = 1; i <= 10; i++) {
cout << setw(2) << i << " : 김다현\n";
}
}
#include <iostream>
using namespace std;
int main()
{
for (int i = 1; i <= 10; i++) {
cout.width(2); //다음에 출력되는 하나(i)를 두칸에 출력
cout << i << " : 김다현\n";
}
}
#include <iostream>
int main()
{
for (int i = 1; i <= 10; i++) {
std::cout.width(2); //다음에 출력되는 하나(i)를 두칸에 출력
std::cout << i << " : 김다현\n";
}
}
switch∼case문 계산기(반복) (c프로그래밍)
#define _CRT_SECURE_NO_WARNINGS //Visual Studio에서만 사용
#include <stdio.h>
int main(void)
{
char op;
int num1, num2;
for (; ; ) //추가
{ //추가
printf("\n덧셈과 뺄셈만 가능합니다\n");
printf("끝내려면 0+0을 입력하세요\n"); //추가
printf("계산하려는 수식(예:10+20)을 입력하세요:");
scanf("%d%c%d", &num1, &op, &num2); //10+20
if (num1 == 0 && num2 == 0) break; //추가
switch (op) {
case '+':
printf("덧셈 결과는 %d입니다.\n", num1 + num2);
break;
case '-':
printf("뺄셈 결과는 %d입니다.\n", num1 - num2);
break;
default:
printf("다시 입력하세요\n");
break;
}// switch~case문 끝
} //추가, for문 끝
return 0;
}
switch∼case문 계산기(반복) (c++프로그래밍)
#include <iostream>
using namespace std;
int main() {
char op;
int num1, num2;
for (;;) {
cout << "\n덧셈과 뺄셈만 가능합니다" << endl;
cout << "끝내려면 0+0을 입력하세요" << endl;
cout << "계산하려는 수식(예:10+20)을 입력하세요: ";
cin >> num1 >> op >> num2; // 10+20
if (num1 == 0 && num2 == 0)
break;
switch (op) {
case '+':
cout << "덧셈 결과는 " << num1 + num2 << "입니다." \n;
break;
case '-':
cout << "뺄셈 결과는 " << num1 - num2 << "입니다." \n;
break;
case '*':
cout << "곱셈 결과는 " << num1 * num2 << "입니다." \n;
break;
case '/':
cout << "나머지 결과는 " << (double)num1 * num2 << "입니다." \n;
break;
else
cout <<"0으로는 나눌 수 없습니다. 다시 입력해주세요\n;";
default:
cout<<"\n다시 입력하세요\n";
break;
}
}
return 0;
}
메뉴를 가지고 있는 프로그램의 기본 틀(c프로그래밍)
#include <stdio.h>
int main() {
int menu;
do {
printf("\n메뉴\n");
printf("1: 추가\n");
printf("2: 삭제\n");
printf("3: 저장\n");
printf("원하는 작업을 선택하세요 -> ");
scanf("%d", &menu);
} while (!(menu >= 1 && menu <= 3));
printf("\n%d를 선택했습니다.\n", menu);
return 0;
}
메뉴를 가지고 있는 프로그램의 기본 틀(c++프로그래밍)
#include <iostream>
using namespace std;
int main() {
int menu;
do {
cout << "\n메뉴\n";
cout << "1: 추가\n";
cout << "2: 삭제\n";
cout << "3: 저장\n";
cout << "원하는 작업을 선택하세요 -> ";
cin >> menu;
} while (!(menu >= 1 && menu <= 3));
cout << "\n" << menu << "를 선택했습니다.\n";
return 0;
}
4. 불린 (Boolean): 참(True) 또는 거짓(False) 값을 저장하는 데 사용됩니다.
5. 배열 (Array): 동일한 타입의 여러 값들을 하나의 변수에서 관리할 수 있게 해줍니다.
6. 객체(Object)/구조체(Structure): 서로 관련된 데이터와 함수(메서드)를 그룹화하여 복잡성을 관리합니다.
7. 튜플(Tuple): 서로 다른 타입의 요소들을 가질 수 있는 컬렉션 형태입니다.
8. 리스트(List)/벡터(Vector): 일련의 항목들을 저장하고, 크기가 동적으로 변할 수 있습니다.
9. 딕셔너리(Dictionary)/해시맵(HashMap): 키-값 쌍으로 데이터를 저장하고 관리합니다.
자료형
C언어
Java
C++
정수형(integer)
int, short, long
byte, short, int, long
short, int, long
실수형(Floating point)
float, double
float, double
float, double, long double
문자(Character)
char
char
char, wchar_t
불린(Boolean)
-
boolean
bool
문자열(String)
-
string(클래스)
string(클래스), char 배열
c++
#include <iostream>
using namespace std;
int main()
{
cout <<"Hello World!\n";
}
#include <iostream>
int main()
{
std::cout <<"Hello World!\n";
}
#include <iostream>
using std::cout;
using std::endl;
int main()
{
cout <<"소프트웨어"<<endl;
return 0;
}
나이 출력하기
#include <iostream>
using std::cout;
using std::cin;
int main()
{
int input;
cout <<"나이 입력:";
cin >> input;
cout <<"당신의 나이는"<<input <<"살 입니다.\n";
return 0;
}
여러 변수 값 출력(printf vs cout)
#include <iostream>
#include <stdio.h>
using namespace std;
int main()
{
int a, b, c;
a =100;
b =200;
c = a + b;
printf("%d, %d, %d\n", a, b, c);//C, 함수
cout << a <<','<< b <<','<< c;//C++, 객체
return 0;
}
숫자 하나를 입력받아 출력
#include <stdio.h>
#include <iostream>
using std::cout;
using std::cin;
int main(void)
{
int num;
//printf("숫자 하나를 입력하세요=");
cout <<"숫자를 입력하세요=";
//scanf("%d", &num);
cin >> num;
//printf("입력받은 수는 %d입니다.\n", num);
cout <<"입력받은 수는"<<num<<"입니다";
return 0;
}
프로그래밍 언어에서 (), {}, []의 목적과 의미
괄호 ():
함수 호출: 예를 들어, C++에서 print()와 같이 함수를 호출할 때 사용
연산자 우선순위: 예를 들어, (2+3) * 4에서 괄호 안의 연산이 먼저 수행
특정 언어의 문법 요소: 예를 들어, Python에서 튜플을 정의하는데 사용
중괄호 {}:
코드 블록: 대부분의 프로그래밍 언어(C++, Java, JavaScript 등)에서 함수나 제어 구조(if문, for문 등)의 범위(scope)을 정의하는데 사용
객체 리터럴: JavaScript 같은 일부 언어에서는 객체를 생성하는데 사용
초기화 리스트: C++에서 배열이나 컨테이너 등을 초기화하는데 사용
대괄호 []:
배열 인덱싱: 대부분의 프로그래밍 언어에서 배열 원소에 접근할 때 사용, 예시로 arr[0]은 'arr' 배열의 첫 번째 원소를 나타냄
리스트 리터럴: Python과 같은 일부 언어에서는 리스트를 생성하는데 사용
세미콜론(;)을 문장의 끝으로 사용하는 언어
C
C++
C#
Java
JavaScript
PHP
Swift (하지만, Swift에서는 대부분의 경우 세미콜론을 생략할 수 있습니다.)
Go
식별자/상수/자료형/변수/함수 예제
#include <iostream>
int main(void) //콘솔 기반 C프로그램의 시작점
{ //main()함수의 시작
int num1, num2; //변수 선언문, 실행문 보다 먼저 씀
/* 변수명: 영문자(A-Z, a-z), 숫자(0-9), 밑줄(_)로 구성
변수(variable):프로그램이 실행되는 동안 자료를
기억시키기 위한 기억장소의 이름 */
num1 =100; //대문자와 소문자는 다른 변수로 인식
num2 =-300; //변수에 상수 대입
//printf("두 수의 합은 %d입니다.\n", num1 + num2);
std::cout<<"두 수의 합은 "<<num1 + num2<<"입니다.\n";
//표준 라이브러리 함수
return 0;
} //main()함수의 끝
자동형 변환
#include <iostream>
using std::cout;
int main()
{
int a =10;
cout <<10 /4<<" "<<10.0 /4 <<" "<<10 /4.0 <<" "<<10.0 /4.0;
return 0;
}
증가, 감소 연산자 예
#include <stdio.h>
int main(void)
{
int a =10, b =10, c =20, d =20;
int ap, bp, cm, dm;
ap =++a; // a=a+1; ap=a; ap=11, a=11
printf("a=%d, ap=%d\n", a, ap);
bp = b++; // bp=b; b=b+1; bp=10, b=11
printf("b=%d, bp=%d\n", b, bp);
cm =--c; // c=c-1; cm=c; cm=19, c=19
printf("c=%d, cm=%d\n", c, cm);
dm = d--; // dm=d; d=d-1; dm=20, d=19
printf("d=%d, dm=%d\n", d, dm);
printf("%d\n", dm++);//나중에 증가(후치)
printf("%d\n", ++dm);//먼저 증가(전치)
return 0;
}