본문 바로가기
C++

[C++ 프로그래밍] 1주차 C++ 개요

by heeaeeeee 2023. 9. 8.

1. 사람인에서 IT개발, 데이터 분야에서 공고 많은 순으로 검색

2. c++ 언어의 중요문법 표로 정리

문법 설명 예제
변수 선언 변수를 선언하고 초기화하는 방법입니다. C++에서는 타입이 중요합니다. int x = 10;
조건문(If-else) 조건에 따라 다른 코드를 실행하는 구조입니다. if (x > 0) { cout << "Positive"; } else { cout << "Negative"; }
반복문 (For, While) 코드를 여러 번 실행하기 위한 구조입니다. For는 정해진 횟수만큼, While은 조건이 참인 동안 반복합니다. for (int i = 0; i < 10; i++) {} while (x > 0) {}
함수(Function) 재사용 가능한 코드 블록을 정의하는 방법입니다. 입력 파라미터를 받아 결과를 반환할 수 있습니다. int add(int a, int b) { return a + b; }
클래스(Class) & 객체(Object) 객체 지향 프로그래밍의 핵심 요소로, 관련된 데이터와 함수를 하나로 묶어서 사용합니다. class Car { public: int speed; void accelerate() { speed++; }}; Car myCar;
배열(Array) 동일한 타입의 여러 값을 저장할 수 있는 데이터 구조입니다. int numbers[5] = {1, 2, 3, 4, 5};
포인터(Pointer) 메모리 주소에 직접 접근할 수 있게 해주는 도구입니다. int x = 10; int* p = &x; *p = 20;// x is now 20
예외 처리(Exception Handling) 프로그램에서 예외적인 상황이 발생했을 때 그 상황을 처리하는 방법입니다. try{ throw std::runtime_error("Error");}catch(const std::exception& e){ std::cerr << e.what();}

3.  아마존에서 c++ 언어를 배우는 책들 중에 4권을 골라서 목차 정리

1. "C++ Primer" by Stanley B. Lippman, Josée Lajoie, and Barbara E. Moo

  • Part I: The Basics
    • Chapter 1: Getting Started
    • Chapter 2: Variables and Basic Types
    • Chapter 3: Strings, Vectors, and Arrays
    • ...
  • Part II: The C++ Library
    • Chapter 7: Input and Output Streams
    • Chapter 8: The IO Library
    • ...
  • Part III: Tools for Class Authors
    • Chapter 13: Copy Control
    • Chapter 14: Overloaded Operations and Conversions

2. "Effective Modern C++" by Scott Meyers

  • Item 1: Deducing Types
  • Item 2: Auto
  • Item 3: Moving to Modern C++
  • ... (이 책은 특정 주제에 초점을 맞춘 일련의 항목(Item)으로 구성되어 있습니다.)

3. "C++ Concurrency in Action" by Anthony Williams

  • Part I: Introduction to Concurrency
    • Chapter 1 : Hello, World of concurrency in C++
  • Chapter 2 : Managing threads
  • ...

4. "The C++ Programming Language" by Bjarne Stroustrup

  • Part I : Basics -Chapter1 : A Tour of C++ -Chapter2 : Overview of the language ..

4. c++ 개요를 5개의 절로 만들어주고 2000자 이내로 정리

1. C++ 언어의 소개 : C++은 범용 프로그래밍 언어로,  Bjame Stroustrup이 개발한 확장된  C 언어입니다. C++은 객체

    지향 프로그래밍과 제네릭 프로그래밍을 지원하며, 고성능 및 시스템 수준의 프로그래밍에 적합합니다. C++은 다양한

    플랫폼에서 실행되며, 널리 사용되는 라이브러리와 도구가 있습니다.

2. 객체 지향 프로그래밍 (OOP) : C++은 클래스와 객체를 사용하여 데이터와 함수를 캡슐화하는 객체 지향 프로그래밍을

    지원합니다. 상속, 다형성, 캡슐화 등의 개념을 활용하여 코드 재사용성과 유지 보수성을 향상시킬 수 있습니다.

3.제네릭 프로그래밍 : 제네릭 프로그래밍은 타입에 독립적인 알고리즘과 컴포넌트를 작성할 수 있는 기법입니다.

   C++에서 템플릿(Template)을 사용하여 제네릭 코드를 작성할 수 있으며, 컴파일 타임에 타입 검사 및 코드 생성이

   이루어집니다.

4. 메모리 관리 : C++은 메모리 관리를 개발자가 직접 처리해야 합니다. 포인터와 참조를 사용하여 메모리 주소에 직접

    접근할 수 있으며, new와 delete 연산자를 통해 동적으로 메모리 할당과 해제가 가능합니다.

5. 다양한 용도와 확장성 : C++은 시스템 및 응용 소프트웨어 개방에 널리 사용됩니다. 게임 엔진, 임베디드 시스템,

    고성능 컴파일러 등 다양한 분야에서 활용됩니다. 또한 표준 라이브러리와 외부 라이브러리들을 통해 기능 확장이

    가능하며, 다른 언어들과의 인터페이스도 가능합니다.

5. c언어, c++, c#, javascript, python 연산자들 차이점

연산자 C/C++ C# JavaScript Python
산술 연산자 (+, -, *, /, %) 지원함 지원함 지원함 지원함
증감 연산자 (++, --) 지원함 지원함 지원함 (단, '--'와 '++'는 변수에 할당하지 않음) 지원하지 않음
비교 연산자 (==, !=, <, >, <=, >=) 지원함 지원함 ==와 !=는 형변환 후 비교. ===와 !==는 형변환 없이 비교. ==와 !=은 값 자체를 비교하고 is 와 is not은 객체 식별을 위해 사용됨
논리 연산자 (&&,   , ! ) &&는 AND연산. ||는 OR연산. !는 NOT연산  
비트 단위 연산자 (& , | , ~ , ^ , >> , << )   지 원 함   지 원 함
할당 연산자 (= , += , -= 등등)   지 원 함   지 원 함
삼항 조건 연사자 ( ? : )   지 원 함   지 원 함

6. c++ 기본소스

#include <iostream>
using namespace std;
int main()
{
     cout<<"Hello World";
     return 0;
} //.cpp

7. c언어 기본소스

#include <stdio.h>
int main()
{
     printf("Hello World");
     return 0;
} //.c

8. java 기본소스

public class Main
{
     public static void main(String[] args) {
          System.out.println("Hello World");
     }
} //.java

9. c# 기본소스

using System;
class HelloWorld {
     static void Main() {
          Console.WriteLine("Hello World");
     }
} //.cs

10. kotlin 기본소스

fun main() {
     println("Hello World")
} //.kt

11. rust 기본소스

fn main() {
     println!("Hello World");
} //.rs

12. go 기본소스

package main
import "fmt"
func main() {
     fmt.Println("Hello World")
} //.go

13. 프로그래밍 언어 인기도

14. 프로그래밍 기본 용어

15. c++, c#, java 차이점을 표로 정리

특징 C++ C# Java
메모리 관리 개발자가 직접 관리해야 함. delete 등의 연산자를 사용하여 메모리 해제 필요 자동으로 Garbage Collection을 수행하여 더 이상 참조되지 않는 객체를 메모리에서 제거함 자동으로 Garbage Collection을 수행하여 더 이상 참조되지 않는 객체를 메모리에서 제거함
다중 상속 지원함 지원하지 않음. 대신 인터페이스를 활용할 수 있음  
컴파일 방식   기계 코드로 직접 컴파일됩니다.  
플랫폼 독립성   부분적입니다. 소스 코드가 여러 플랫폼에서 재컴파일될 수 있지만, 종속성과 호환성은 주의 깊게 관리해야 합니다.  
예외 처리 방식   구조화된 예외 처리와 비구조화된 예외 처리 모두 지원합니다.(try-catch와 setjmp/longjmp)  
포인터 사용   포인터 사용 가능하며, 메모리에 직접 접근할 수 있습니다.  

16. c++, java의 공통점

  1. 객체 지향 프로그래밍 (OOP): 둘 다 객체 지향 프로그래밍을 지원하며, 클래스와 객체를 통해 데이터와 함수를 하나로 묶는 방식을 제공합니다.
  2. 기본 데이터 타입: 두 언어 모두 기본적인 데이터 타입을 제공합니다. 예를 들면 int, float, double, char 등입니다.
  3. 제어 구조: if-else 문장, for/while 반복문 등의 제어 구조가 유사합니다.
  4. 예외 처리: try-catch-finally 문법을 통한 예외 처리 방식이 비슷합니다.
  5. 클래스와 인터페이스: 클래스를 사용하여 코드를 구조화하고 추상화할 수 있으며, 인터페이스라는 개념도 존재합니다.
  6. 라이브러리 및 API 지원: 표준 라이브러리 및 API가 있으며 이들은 파일 I/O, 문자열 처리, 날짜 및 시간 처리 등에 활용됩니다.

17. 내림차순 > 오름차순

#include <stdio.h> // 전처리기, 5장
#define SIZE 3 // 전처리기, 5장
typedef struct { // 구조체, 12장
             char name[10];
             double w;
}WEIGHT;
void swap(WEIGHT*, WEIGHT*); // 함수 선언, 8장
int main(void)
{
           WEIGHT man[SIZE] = { {"한개발",57.5}, // 배열, 10장
           {"엄청군",125.6},
           {"갈비양",35.7} };
           int i, j; // 변수, 3장, 기억 클래스,9장
           for (i = 0; i < 2; i++) { // 제어문, 7장
                     for (j = i + 1; j < 3; j++) { // 연산자, 6장
                               if (man[i].w > man[j].w) {
                                         swap(&man[i], &man[j]);
                               } // call by reference, 11장
                     }
           }
           printf(" 이름 \t체중\n");// 표준 라이브러리 함수, 4장
           for (i = 0; i < 3; i++) {
                     printf(" %s %5.1f\n", man[i].name, man[i].w);
           }
           return 0;
} //main()함수 끝
void swap(WEIGHT* mani, WEIGHT* manj)// 포인터, 11장
{ //함수 정의
           WEIGHT temp;
           temp = *mani;
           *mani = *manj;
           *manj = temp;
}

18. 토큰과 구두점

19. 구두점

20. 예약어

21. 리터럴

문자형 리터럴은 작은 따옴표, 문자열 리터럴은 큰 따옴표

22. 식별자/상수/자료형/변수/주석문 예제

#include <stdio.h> //printf()함수 원형이 선언되어 있음, 전처리기
int main(void) //콘솔 기반 C프로그램의 시작점
{ //main()함수의 시작
       int num1, num2; //변수 선언문, 보통 실행문 보다 먼저 씀
       /* 변수명: 영문자(A-Z, a-z), 숫자(0-9), 밑줄(_)로 구성
       변수(variable):프로그램이 실행되는 동안 자료를
       기억시키기 위한 기억장소의 이름 */
       num1 = 100; //대문자와 소문자는 다른 변수로 인식
       num2 = -300; //변수에 상수 대입
       printf("두 수의 합은 %d입니다.\n", num1 + num2);
       //표준 라이브러리 함수
      return 0;
} //main()함수의 끝

23. c++ 기본 소스1

#include <iostream>
int main()
{
     std::cout << "Hello World!\n";
}

24. c++ 기본 소스2

#include <iostream>
using namespace std;
int main()
{
     cout << "Hello World" << endl;
     return 0;
}

 

 

C++ 강의 자료 참고했습니다.