ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 전북대 C++프로그래밍 강의 1(1-3)
    DSP/C++ 2024. 4. 19. 09:38

    좋은 강의를 공유해주신 김형기 교수님께 무한 감사를 드리고 완강 기원하며

    강의소개

    강의 초반부의 목표

    메모리 레이아웃명렁어에 의메모리 변화 이해 + 디버거를 사용한 관찰 방법을 배운다!

     

    질문) 아래 명령문을 실행하면 어떻게 될까요?

    int a  = 10;
     
    X a라는 정수형 변수를 10으로 초기화하여 생성한다
    O  스택 메모리의 어떤주소(e.g, 0x1000)에 4 바이트 메모리가 할당되고 10이라는 값이 저장된다.
    해당주소에 a라는 이름이 붙는다.

     

     

     

    역시 교수님 선경지명 클라스 오짐 "나는 다 이해했으니 안해봐도 됨ㅋ" ,"딱보니까 이렇게 되겠네" 학기내내 ㅇㅈㄹ해서

    사망년인대 1학년 수업듣는 나레기 클라스....^,ㅠ

     

    1.Intro & Variable - (1) Compile and Linking

    1. 빌드 프로세스
    2. 오류 종류
    3. 신탁스

     

    • 프로그래밍 언어: 고수준의 소스 코드 작성에 사용, human-readable
      • .cpp 소스 코드/.h헤더 파일의 편집기
    • 오브젝트 코드: Machine-readable,컴퓨터가 실행 할 수 있는 코드
    • 컴파일러:소스코드를 오브젝트 코드로 변환하는 도구
    • 링커:오브젝트 코드를 실행 파일(exe)로 변환하는 도구
    • 테스트&디버깅:프로그램에 존재하는 오류를 찾고, 수정함
    • IDE(Intergrated Development Environment)->통합 개발 환경
      • 텍스트 에디터+컴파일러+링커+(디버거)

     

     

    C++ Build Process

     

    1.Intro & Variable - (2) Build Process and Errors

    내가 작성한 cpp파일이 오브젝트 파일로 변환되었다는 뜻.

    실행이 가능한 exe파일로 변환하려면 링(linking)을 해줘야하는데 비쥬얼스튜디오에선 링킹이 따로 있진않고 빌드를 통해서 컴파일과 링킹을 동시에 수행.

     

    Ctrl+F7 / Build 버튼

     

    저 주소로 들어가면 프로그램 실행됨

    그치만 실행창이 실험 후 사라짐

     

    F5

    컴파일/링킹/실행을 진행함

    프로그램을 실행해도 창이 닫히지않음

     

    Ctrl+F5 기능은 정확히 뭘 하는건지 알기 전에는 그냥 사용하지 마세요!

     

    문법적 오류

    "가 안닫힘 

     

    의미 오류

    data type이 다름


    문법적 오류

    세미콜론이 빠짐

    에러 리스트보다는 아웃풋 확인을 추천

    Syntax error:missing ';'

    문법적 오류,세미콜론 빠짐이라고 적혀있음

     

    의미 오류

    data type이 다름

     

    Compiler Warnings

    코드에 잠재적인 문제가 있을 것으로 예상될 때

    빌드는 가능하지만, 무시하면 안됨!

    Linker Errors / Runtime Errors

    링크에러

    • obj파일의 링크 과정에서 오류가 있을 경우
    • 주로 라이브러리 또는 obj 파일을 (어떤 이유에서)찾을 수 없을 경우

     

    런타임 에러

    • 프로그램의 실행 도중 발생하는 오류
    • Dividied by zero, file not found, out of memory, etc...
    • 프로그램의 crash
    • 예외 처리를 통해 문제 발생에 따르는 처리를 할 수 있음

    Logical Errors(가장 많이 만날 에러)

    • 프로그램의 동작에 관한 논리적 오류
    • 프로그램 작성자의 실수가 원인
    • 테스트 과정을 통해 찾아내고, 수정해야 함
    if(age>19)
    {
    	std::cout<<"you can vote!";
    }

    20살부터 가능한대 19살로 잘못적음

    프로그램은 잘 돌아가겠지만 문제가 있음

    그러므로 테스트를 해야함

     

    1.Intro & Variable - (3) Basic Components

    C++Keyword, Identifier, Operator

    키워드는 예약어인듯

    식별자는 변수, 함수 이름

     

    C++ preprocessor

    전처리기

    • 컴파일 이전에 처리됨
    • #으로 시작

     

    #include?

    단순한 복사 붙여넣기

    프로젝트 속성->c/c++->전처리기->파일로 전처리를 통해 확인

     

     

    주석

    //,/**/

     

    main() function

    • 모든 c++ 프로그램으 하나의 main함수를 가져야 함
    • 프로그램의 진입점: 프로그램이 실행되면 가장 먼저 실행되는 함수
    • 리턴값 0이 올바른 프로그램 실행을 의미함(지금은 생략해도 무방)

     

    한 프로젝트에 main함수가 두개 이상 있으면 오류남

     

    C++  namespace

    • std::cout
    • 충돌 방지를 위함
      • 외부 라이브러리와 구현한 소스 코드간의 이름 충돌 가능성
    • 코드의 "그룹화"로 이해
      • 서로 다르 namespace로 그룹화하여 충돌을 방지할 수 있음
    • "::":scope resolution operator
    #include<iostream>
    
    void function()
    {
    	std::cout << "function 2";
    }
    
    void function()
    {
    	std::cout << "function 2";
    }
    
    int main()
    {
    	return 0;
    }

    같은 이름의 fucntion 함수가 2개가 있으므로 에러 뜸

     

    #include<iostream>
    
    namespace A
    {
    	void function()
    	{
    		std::cout << "function 1";
    	}
    }
    
    namespace B
    {
    	void function(){
    		std::cout << "function 2";
    	}
    }
    
    int main()
    {
    	A::function();
    }

    namespace로 분리해서 실행가능

     

    Using namespace

    • 특정 namespace 내의 함수들을 사용하겠다는 선언
    • 남용은 금물
      • Using namespace를 모든 코드에 넣는다면 namespace 기능을 상실함
      • 강의 자료에는 코드의 단축 표현을 위해 사용

     

    Basic I/O

    • cout과 <<
      • c++의 표준 출력 스트림, 삽입 연산자
    • cin과>>
      • c++의 표준 입력 스트림, 추출 연산

     

     

    int main()
    {
    	int age = 38;
    	float height = 180.7;
    
    	std::cout << "my age is " << age << " Hello. "<< std::endl;
    	std::cout << "my height is " << height;
    }

    'DSP > C++' 카테고리의 다른 글

    전북대 C++프로그래밍 강의 1(4-6)  (0) 2024.04.21
Designed by Tistory.