728x90

노마드 코더 챌린지 2일차이다!

이번 포스팅에서는 기존에 나도 새롭게 알게 되었던 C, C++, C#의 차이에 대해 알아보려 한다.

 

모두가 알듯이 프로그래밍 언어는 정말 다양하다.

단순히 여러 종류만 있는 것이 아니다. 각 언어별로 쓰이는 분야와 범위가 있고 역사가 매우 깊은 언어들이 많다.

따라서 본인이 어떤 분야에서의 프로그래머가 되고 싶은지에 따라 집중적으로 공략해야 할 언어들이 존재한다.

(물론 다양한 언어를 접해보는 것을 추천한다.)

 

이러한 수만은 언어중 C, C++, C#에 대해 알아보도록 하겠다.

 


 C

 

 

1972년 UNIX 개발을 위해 만들어진 C언어는 하드웨어에 직접 접근이 가능한 저수준 언어이다.

당시 유명했던 B언어의 이름을 따라 지었고, B언어의 영향을 실제로 많이 받았다.

 

하드웨어 직접 접근 뿐만아니라. 메모리 등의 운영체제 자원을 효율적으로 이용을 하기 위한 시스템 레벨의 작업을 수행할 수 있는 언어이다.

한정된 메모리 자원을 하드웨어가 효율적으로 사용하기 위해 사용자가 직접 프로그래밍을 할 수 있으므로, 실제로 나사의 화성 탐지선은 C언어로 프로그래밍되었다고 한다.

 

이러한 특징으로 인해 C언어는 임베디드, IOT 분야에서 주로 이용하는 언어이다.

 

C언어는 절차 지향 프로그래밍 언어이다.

절차 지향 프로그래밍이란 아주 간단히 말하면 여러 함수들로 이루어진 구조이다.

 

아래는 C로 작성한 절차 지향 프로그래밍 예시 코드이다.

add라는 함수를 정의하고, 이를 사용해 두 값을 입력받아 더하기 연산을 수행하는 코드이다.

 

// C언어 절차 지향 프로그래밍 예시

#include <stdio.h>

// 함수 정의
int add(int a, int b) {
    return a + b;
}


int main() {
    int result, num1, num2;
	
    // 두 수 입력받음
    scanf_s("%d%d", &a, &b);

    // 함수 호출
    result = add(num1, num2);

    // 결과 출력
    printf("덧셈 결과: %d\n", result);

    return 0;
}

 

 

 

 C++

 

 

프로그래밍에서 ++는 단항 증감 연산자 중 하나로, 값을 1만큼 증가시킨다는 의미이다.

여기서 볼 수 있듯이 C++은  C언어를 포함하고, 이를 확장한 언어로

C언어의 슈퍼셋이라 부르기도 한다.

 

그렇다면 어느 부분에서 C언어를 확장했다고 보는 것일까?

C언어는 절차 지향 프로그래밍을 지원한다.

반면 C++는 이러한 C언어의 특징을 포함하여 절차 지향 뿐만 아니라 객체 지향 프로그래밍도 지원한다.

따라서 C++에는 C언어에는 없는 class 문법이 존재한다.

 

아래는 c++로 작성한 객체지향 프로그래밍 예시 코드이다.

Rectangle 클래스를 정의하고, 객체를 생성하여 이용하는 코드이다.

// 객체지향 프로그래밍으로 Rectangle 클래스 정의하고 객체 생성 예시

#include <iostream>

// 클래스 정의
class Rectangle {
private:
    double width;
    double height;

public:
    // 생성자
    Rectangle(double w, double h) : width(w), height(h) {}

    // 넓이 계산
    double calculateArea() {
        return width * height;
    }

    // 둘레 계산
    double calculatePerimeter() {
        return 2 * (width + height);
    }

    // Getter와 Setter 함수
    double getWidth() {
        return width;
    }

    void setWidth(double w) {
        width = w;
    }

    double getHeight() {
        return height;
    }

    void setHeight(double h) {
        height = h;
    }
};

int main() {
    // Rectangle 클래스의 객체 생성
    Rectangle rect(5.0, 4.0);

    // 넓이와 둘레 출력
    std::cout << "넓이: " << rect.calculateArea() << std::endl;
    std::cout << "둘레: " << rect.calculatePerimeter() << std::endl;

    // 너비와 높이 변경 후 다시 출력
    rect.setWidth(7.0);
    rect.setHeight(3.0);
    std::cout << "넓이: " << rect.calculateArea() << std::endl;
    std::cout << "둘레: " << rect.calculatePerimeter() << std::endl;

    return 0;
}

 

 

 

C#

 

 

음악에서 #은 반올림을 뜻한다.

혹은 ++에서 ++을 더한, 즉 +기호 4개의 조합이기도 하다.

하지만 C#은 C언어와 C++과는 다른 언어이다. 오히려 JAVA와 비슷하다.

 

C#은 마이크로소프트가 자신들만의 개발 유니버스를 구축하기 위해 만든 언어이다.

따라서 MS는 닷넷이라 하는 윈도우 프로그램 개발 도구를 제공하는데 여기에서 C#을 이용한다.

 

보통은 유니티 등 게임 개발을 할 때 많이 쓰인다.

 

아래는 C#의 예시 코드이다.

이름을 입력받고, 이를 출력한다. 실제로 JAVA와 매우 유사한 것을 볼 수 있다.

 

// C# 예시코드

using System;

class Program
{
    static void Main(string[] args)
    {
        // 사용자로부터 이름을 입력 받음
        Console.WriteLine("이름을 입력하세요:");
        string name = Console.ReadLine();

        // 메시지 출력
        Console.WriteLine($"안녕하세요, {name}님! 환영합니다.");
    }
}

 

728x90

+ Recent posts