본문 바로가기

카테고리 없음

20240000066 김태윤 2학기 2주차 수업시간 과제

**아래 자료들은 한성현 교수님 시간에서 배운 자료들입니다**

c++로 개발된 유명한 소프트웨어를 알려달라고 해보았습니다.

 

사용 예 시스템 프로그래밍, 임베디드 시스템, 운영체제 게임 개발, GUI 애플리케이션, 고급 소프트웨어 개발
장점 - 단순하고 직관적인 문법 <br> - 하드웨어에 가까운 프로그래밍 <br> - 높은 성능과 효율성 - 객체 지향 프로그래밍 지원 <br> - 코드 재사용성과 유지보수 용이 <br> - 템플릿과 STL(표준 템플릿 라이브러리) 제공
단점 - 객체 지향 프로그래밍 미지원 <br> - 메모리 관리가 복잡할 수 있음 <br> - 에러 처리와 디버깅이 어려움 - 복잡한 문법 <br> - 컴파일 시간이 길어질 수 있음 <br> - 메모리 관리에 대한 책임 증가

c언어,c++의 사용예와 장단점을 표로 알려달라고해보았습니다(챗gpt에게)

c언어 일떄와 c++언어를 할떄 더 선호하는 방식.두개 결과는 같음.

                                                   \n                                                                                     std::endl

  줄 바꿈을 수행하는 문자 줄 바꿈을 수행하고 출력 버퍼를 비움
성능 빠름 느림 (버퍼를 비우기 때문에)
사용 예 문자열 내에서 줄 바꿈을 할 때 사용 출력 후 즉시 화면에 출력할 때 사용
버퍼 비움 버퍼를 비우지 않음 항상 출력 버퍼를 비움
주요 용도 단순한 줄 바꿈 출력 후 즉시 결과를 확인해야 할 때

/n 과  std::endl의 차이를 표로 작성해 달라고 해보았다. 둘다 개행을 하는 역할을 한다.

주석처리는 ctrl+k+c 하고, 주석처리 푸는것은 ctrl+k+u 이다(단축키)

위의 소스와 다르게 std를 쓰지않고, 앞에 씀으로써 std를 한번만 쓰고 둘 다 적용가능하게함. (using namespace std;) 하지만, 좋은 방법이 아니다. std에만 해당하는것이 아니라, 복잡한 소스라면 각각 다르게 적용해야 하기떄문.

using std:: 함수명; 이렇게 하면 각각 쓴것만 적용되기에,  위 소스처럼 쓰는것이 좋을듯 하다.

// C 언어의 printf 함수를 사용한 예
#include <stdio.h>

int main()
{
    // "kty" 문자열을 출력하고 줄 바꿈
    printf("kty\n");

    return 0; // 프로그램 종료
}

// C++에서 std::cout을 사용한 예
#include <iostream>

int main()
{
    // "kty" 문자열을 출력하고 줄 바꿈, std::endl로 버퍼 비움
    std::cout << "kty\n" << std::endl;

    return 0; // 프로그램 종료
}

// C++에서 std::cout을 사용하며 using 선언을 통해 간편하게 사용한 예
#include <iostream>
using std::cout; // cout을 간편하게 사용하기 위해 using 선언
using std::endl; // endl을 간편하게 사용하기 위해 using 선언

int main()
{
    // "kty" 문자열을 출력하고 줄 바꿈, std::endl로 버퍼 비움
    cout << "kty\n" << endl;

    return 0; // 프로그램 종료
} 

위의 소스들의 차이점을 챗gpt에게 주석을 달아 설명해달라고 해보았다.

(smile han 교수님-출처)

cin>>,cout<<의  사용법. 카보드로 입력받는것(cin>>)과, 화면에 나타나게 할 수 있는 cout<<

 

위->밑소스로 변환.

c to c++ converter 이렇게 하면 변환 사이트가 나옴.

c스타일과 c++스타일로 이름을 입력받아 출력하게 하는 소스를 각각 작성해달라고 해보았다.

c언어 ->c++언어 스타일로 소스를 변경해 달라고 해보았다.

문자는 양쪽에 작은따옴표'a',문자열은 양쪽에 큰따옴표를 씁니다"abc".

이스케이프 시퀀스 escape sequence_(확장문자열을 사용하는 언어를 모두 알려달라고 해보았다.

제대로된 리터럴은 null 문자가 제일뒤에 자동적으로 들어간다.

/n을 단독으로 쓸떄는 '\n'작을따옴표와,"\n" 처럼2가지 방법으로 써도 되지만, 굳이 2byte인 "큰따옴표로 쓸 이유가 없다.

웬만해서 /n을 단독으로 사용할떄는 작은따옴표를 사용하도록 해보자.

정적 타입 언어와 동적 타입 언어의 차이점, 종류, 장단점에 대해 설명하겠습니다.

정적 타입 언어 (Static Typed Languages)

종류:

  • C
  • C++
  • Java
  • C#
  • Swift
  • Go
  • Rust

장점:

  1. 타입 안전성: 컴파일 타임에 타입 오류를 발견할 수 있어, 실행 전에 많은 오류를 방지할 수 있습니다.
  2. 성능: 타입이 고정되어 있어 컴파일러가 최적화를 잘 할 수 있어 실행 속도가 빠릅니다.
  3. 자동 완성 및 IDE 지원: 타입 정보가 명확하므로 IDE에서 코드 자동 완성 및 리팩토링 도구가 더 효과적으로 작동합니다.

단점:

  1. 유연성 부족: 타입을 명시해야 하므로 코드 작성이 번거로울 수 있습니다.
  2. 초기 개발 속도: 타입을 정의하고 관리해야 하므로 초기 개발 속도가 느려질 수 있습니다.

동적 타입 언어 (Dynamically Typed Languages)

종류:

  • Python
  • JavaScript
  • Ruby
  • PHP
  • Perl
  • Swift (일부 경우)
  • TypeScript (옵셔널 타입)

장점:

  1. 유연성: 변수를 선언할 때 타입을 지정할 필요가 없어 더 빠르게 코드를 작성할 수 있습니다.
  2. 빠른 프로토타이핑: 초기 개발 시 코드 작성이 간편해 빠른 프로토타입을 만들 수 있습니다.
  3. 코드 간결성: 타입 선언이 필요 없어 코드가 더 간결해지고 가독성이 높아질 수 있습니다.

단점:

  1. 런타임 오류: 타입 오류가 실행 시간에 발생할 수 있어, 버그를 찾고 수정하는 데 시간이 더 걸릴 수 있습니다.
  2. 성능 저하: 런타임에 타입을 확인해야 하므로 성능이 떨어질 수 있습니다.
  3. IDE 지원 부족: 타입 정보가 명확하지 않아 코드 자동 완성 및 리팩토링 도구의 지원이 제한될 수 있습니다.

결론

정적 타입 언어는 안정성과 성능이 중요할 때, 동적 타입 언어는 유연성과 개발 속도가 중요할 때 선택하는 것이 좋습니다. 각 언어의 특성과 프로젝트의 요구 사항에 따라 적절한 언어를 선택하는 것이 중요합니다.

_________--챗gpt에게  정적타입 언어와 동적타입 언어의 종류와, 장단점을 알려달라고 해보았다.--______________

자동형 변환을 지원하는 언어를 알려달라고해보았다.

이는 자동형 변환으로, 큰 자료형으로 작은 자료형이 바뀌게 된다.

전처리기는 컴파일 하기전에 일어나는 동작이다.(#으로 시작한다)

소스에 define size 가 나오면 컴파일 하기전에 크기를 기계적으로 100으로 바꾸라는뜻이다.

#include는 다른파일을 포함시킬떄 사용하는것이고, 꺽새<>는 이미 만들어져있는 헤더 파일을포함시킬떄 쓰고, 내가 만약 헤더파일을 만들어 포함시킬떄는 큰따옴표를 이용해야한다고 한다.

연산자 종류C/C++ 예시Java 예시JavaScript 예시Python 예시

 

산술 연산자 int sum = a + b; int sum = a + b; let sum = a + b; sum = a + b
  int diff = a - b; int diff = a - b; let diff = a - b; diff = a - b
  int prod = a * b; int prod = a * b; let prod = a * b; prod = a * b
  float div = (float)a / b; float div = (float)a / b; let div = a / b; div = a / b
비교 연산자 if (a == b) { } if (a == b) { } if (a === b) { } if a == b: pass
  if (a != b) { } if (a != b) { } if (a !== b) { } if a != b: pass
  if (a < b) { } if (a < b) { } if (a < b) { } if a < b: pass
논리 연산자 if (a && b) { } if (a && b) { } if (a && b) { } if a and b: pass
  `if (a   b) { }` `if (a
할당 연산자 a += b; a += b; a += b; a += b

연산자를 언어데따라 비교하여 표로 만들어달라고 해보았다.왼쪽부터 c/c++,java,javascript,pyrhon

증가,감소 연산자의 차이. 답이 다를 수 있다는거 신경쓰자.

cast연산자는 잠시동안 강제로 자료형을 바꿀떄사용한다.

cast연산자를 사용하는 언어들의 예를 표를 이용하여 만들어 달라고 해보았습니다.

삼항연산자(?:)를 사용하는 모든언어를 알려달라고 해보았다.

  • C
  • C++
  • Java
  • C#
  • JavaScript
  • PHP
  • Swift
  • Kotlin
       

혼합대입연산자란 =equal 아펭 다른것이 붙어 있는것을 말한다.

and,or,not연산자 이다.

비트연산자 이다.

꺽새 2번쓰는것은 비트 시프트 연산자 인데, 이 꺾새가 cout,cin을 만나면 다른역할을 하게된다(중첩연산자)

#include <stdio.h>// 전처리기 지시문

 

#define PI 3.14 // 상수 정의

 

// 자료형

int main(){

// 식별자 및 변수 선언

int radius;

float area;

 

// 사용자 입력

printf("반지름을 입력하세요: ");

scanf("%d", &radius);

 

// 연산자 사용

area = PI * radius * radius; // 면적 계산

 

// 결과 출력

printf("원주율: %.2f\n", PI);

printf("면적: %.2f\n", area);

 

return 0; // 프로그램 종료

}(c언어 문법정리소스)

________________________________________________________________________________________________

 

#include <iostream>// 입출력 스트림 라이브러리 포함

 

#define PI 3.14 // PI라는 이름의 상수를 정의, 원주율 값 3.14로 설정

 

using namespace std; // std 네임스페이스 사용으로 std:: 생략 가능

 

// main 함수는 프로그램의 시작점

int main(){

// 변수 선언: radius는 정수형, area는 실수형 변수

int radius;

float area;

 

// 사용자에게 반지름 입력 요청

cout << "반지름을 입력하세요: "; // 문자열 출력

// 사용자로부터 입력받은 값을 radius 변수에 저장

cin >> radius; // cin은 표준 입력을 받기 위한 객체

 

// 면적 계산: area = π * r^2 (원 면적 공식을 사용)

area = PI * radius * radius; // PI는 상수로 미리 정의된 값 사용

 

// 계산된 원주율과 면적을 출력

cout << "원주율: " << PI << endl; // << 연산자를 사용하여 출력

cout << "면적: " << area << endl; // 계산된 면적 출력

 

return 0; // 프로그램 정상 종료를 나타내는 값

}

c++언어 문법정리소스.