C++ 프로그래밍 수업 내용 및 수업

2024. 9. 3. 13:30C++프로그래밍/수업 내용 및 수업 후 과제

반응형

Claude와 뤼튼을 활용해서 C++언어의 문법을 알고 있으면 어떤 언어를 배울 때 도움이 되는지 물어보고 차이점을 확인

 

C++ 언어의 발전 과정
C++의 역사

C/C++/C#/Objective-C/JAVA/Kotlin/Rust/Go 소스 비교 ↓

 

#include <stdio.h>
int main()
{
printf("Hello World");
return 0;
}//.c
 
#include <iostream>
int main()
{
std::cout<<"Hello World";
return 0;
}//.cpp
 
#import <Foundation/Foundation.h>
intmain(intargc, char const*argv[])
{ NSLog(@"Hello World!");
return 0;
} //Objective-C(.m)
 
fun main() {
println("Hello World")
}//Rust(.rs)
 
fun main() {
println("Hello World")
}//Kotlin(.kt)
 
public class HelloWorld
{ public static voidmain(String[] args)
{ System.out.println("Hello, World!");
}
} // JAVA (.java)
class HelloWorldApp
{ public static void Main()
{ System.Console.WriteLine("Hello,
World!");
}
} // C# (.cs)
package main
import "fmt"
func main() {
fmt.Println("Hello World")
}//Go(.go)

각 언어별 "Hello World" 프로그램을 자세히 설명해 드리겠습니다.

### 1. C (`.c`)

```c
#include <stdio.h>

int main() {
    printf("Hello World");
    return 0;
}
```
- **`#include <stdio.h>`**: 표준 입력/출력 라이브러리를 포함합니다. `printf` 함수를 사용하기 위해 필요합니다.
- **`int main()`**: 프로그램의 진입점입니다. `int`는 반환값의 타입을 나타냅니다.
- **`printf("Hello World");`**: "Hello World"를 출력합니다.
- **`return 0;`**: 프로그램이 정상적으로 종료되었음을 나타냅니다.

### 2. C++ (`.cpp`)

```cpp
#include <iostream>

int main() {
    std::cout << "Hello World";
    return 0;
}
```
- **`#include <iostream>`**: C++의 입력/출력 스트림 라이브러리를 포함합니다.
- **`int main()`**: 프로그램의 진입점입니다.
- **`std::cout << "Hello World";`**: "Hello World"를 출력합니다. `std::cout`은 C++의 표준 출력 스트림입니다.
- **`return 0;`**: 프로그램이 정상적으로 종료되었음을 나타냅니다.

### 3. Objective-C (`.m`)

```objc
#import <Foundation/Foundation.h>

int main(int argc, char const *argv[]) {
    NSLog(@"Hello World!");
    return 0; 
}
```
- **`#import <Foundation/Foundation.h>`**: Objective-C의 기본 라이브러리를 포함합니다.
- **`int main(int argc, char const *argv[])`**: 프로그램의 진입점입니다. `argc`는 인자의 수, `argv`는 인자 배열입니다.
- **`NSLog(@"Hello World!");`**: "Hello World!"를 출력합니다. `NSLog`는 Objective-C의 출력 함수입니다.
- **`return 0;`**: 프로그램이 정상적으로 종료되었음을 나타냅니다.

### 4. Rust (`.rs`)

```rust
fn main() {
    println!("Hello World");
}
```
- **`fn main()`**: Rust 프로그램의 진입점입니다.
- **`println!("Hello World");`**: "Hello World"를 출력합니다. `println!` 매크로를 사용합니다.

### 5. Kotlin (`.kt`)

```kotlin
fun main() {
    println("Hello World")
}
```
- **`fun main()`**: Kotlin 프로그램의 진입점입니다.
- **`println("Hello World")`**: "Hello World"를 출력합니다.

### 6. Java (`.java`)

```java
public class HelloWorld {
    public static void main(String[] args) {
        System.out.println("Hello, World!");
    }
}
```
- **`public class HelloWorld`**: `HelloWorld`라는 클래스를 정의합니다.
- **`public static void main(String[] args)`**: Java 프로그램의 진입점입니다.
- **`System.out.println("Hello, World!");`**: "Hello, World!"를 출력합니다.

### 7. C# (`.cs`)

```csharp
class HelloWorldApp {
    public static void Main() {
        System.Console.WriteLine("Hello, World!");
    }
}
```
- **`class HelloWorldApp`**: `HelloWorldApp`라는 클래스를 정의합니다.
- **`public static void Main()`**: C# 프로그램의 진입점입니다.
- **`System.Console.WriteLine("Hello, World!");`**: "Hello, World!"를 출력합니다.

### 8. Go (`.go`)

```go
package main

import "fmt"

func main() {
    fmt.Println("Hello World")
}
```
- **`package main`**: 패키지 이름을 정의합니다. `main` 패키지는 실행 가능한 프로그램을 나타냅니다.
- **`import "fmt"`**: `fmt` 패키지를 포함하여 출력 기능을 사용합니다.
- **`func main()`**: Go 프로그램의 진입점입니다.
- **`fmt.Println("Hello World")`**: "Hello World"를 출력합니다.

이와 같이 각 언어는 "Hello World"라는 간단한 프로그램을 작성하는 방식이 다르지만, 기본적인 구조는 유사합니다. 

 

아래는 위의 소스들의 장단점을 비교한 표이다.

언어 장점 단점
C - 시스템 프로그래밍에 적합<br>- 성능이 우수<br>- 하드웨어 접근 용이 - 메모리 관리가 복잡<br>- 포인터 사용의 어려움
C++ - 객체 지향 프로그래밍 지원<br>- 다양한 라이브러리와 툴 제공 - 복잡한 문법<br>- 컴파일 시간이 길어질 수 있음
Objective-C - iOS/macOS 개발에 최적화<br>- 동적 타이핑 지원 - 문법이 복잡<br>- C++에 비해 상대적으로 느림
Rust - 메모리 안전성 보장<br>- 뛰어난 성능 - 학습 곡선이 가파름<br>- 생태계가 상대적으로 작음
Kotlin - 간결한 문법<br>- Java와의 높은 호환성 - JVM에 의존<br>- 상대적으로 느린 성능
Java - 플랫폼 독립성<br>- 풍부한 생태계와 라이브러리 - 메모리 소모가 큼<br>- 느린 실행 속도
C# - .NET 생태계와의 통합<br>- 객체 지향 프로그래밍 지원 - Windows에 최적화되어 있음<br>- 상대적으로 복잡한 문법
Go - 간결한 문법<br>- 높은 동시성 지원 - 제네릭 지원 부족 (구 버전 기준)<br>- 패키지 관리가 복잡할 수 있음

C++은 다양한 방식으로 프로그래밍 할 수 있는 언어이다.

 

프로그래밍 언어별로 작은따옴표(')와 큰따옴표(")의 사용법을 정리

언어 작은따옴표 (') 사용법 큰따옴표 (") 사용법
C - 문자(character) 리터럴을 나타냄<br>: char c = 'A'; - 문자열(string) 리터럴을 나타냄<br>: printf("Hello");
C++ - 문자 리터럴을 나타냄<br>: char c = 'A'; - 문자열 리터럴을 나타냄<br>: std::cout << "Hello";
Objective-C - 문자 리터럴을 나타냄<br>: char c = 'A'; - NSString 객체를 생성할 때 사용<br>: NSLog(@"Hello");
Rust - 문자 리터럴을 나타냄<br>: let c: char = 'A'; - 문자열 리터럴을 나타냄<br>: println!("Hello");
Kotlin - 문자 리터럴을 나타냄<br>: val c: Char = 'A' - 문자열 리터럴을 나타냄<br>: println("Hello")
Java - 문자 리터럴을 나타냄<br>: char c = 'A'; - 문자열 리터럴을 나타냄<br>: System.out.println("Hello");
C# - 문자 리터럴을 나타냄<br>: char c = 'A'; - 문자열 리터럴을 나타냄<br>: Console.WriteLine("Hello");
Go - 문자 리터럴을 나타냄<br>: var c rune = 'A' - 문자열 리터럴을 나타냄<br>: fmt.Println("Hello")

 

가장 많이 사용하는 10개 프로그래밍 언어에서 for 문의 사용법을 예제로 보여주는 표

언어 예제 코드 설명
C c<br>for (int i = 0; i < 5; i++) {<br> printf("%d\n", i);<br>}<br> 0부터 4까지의 숫자를 출력합니다.
C++ cpp<br>for (int i = 0; i < 5; i++) {<br> cout << i << endl;<br>}<br> 0부터 4까지의 숫자를 출력합니다.
Java java<br>for (int i = 0; i < 5; i++) {<br> System.out.println(i);<br>}<br> 0부터 4까지의 숫자를 출력합니다.
Python python<br>for i in range(5):<br> print(i)<br> 0부터 4까지의 숫자를 출력합니다.
JavaScript javascript<br>for (let i = 0; i < 5; i++) {<br> console.log(i);<br>}<br> 0부터 4까지의 숫자를 출력합니다.
C# csharp<br>for (int i = 0; i < 5; i++) {<br> Console.WriteLine(i);<br>}<br> 0부터 4까지의 숫자를 출력합니다.
Go go<br>for i := 0; i < 5; i++ {<br> fmt.Println(i)<br>}<br> 0부터 4까지의 숫자를 출력합니다.
Swift swift<br>for i in 0..<5 {<br> print(i)<br>}<br> 0부터 4까지의 숫자를 출력합니다.
PHP php<br>for ($i = 0; $i < 5; $i++) {<br> echo $i . "\n";<br>}<br> 0부터 4까지의 숫자를 출력합니다.
Ruby ruby<br>for i in 0..4 do<br> puts i<br>end<br> 0부터 4까지의 숫자를 출력합니다.

이 표는 각 언어에서 for 문을 사용하는 방법을 간단하게 보여줍니다