IT/C

2-2

오오렌지 2022. 12. 29. 19:41

divide and conquer (분할정복)  

 

가장 강력한 알고리즘

 

문제를 한꺼번에 해결하려면 너무 복잡해서 이 문제들을 분할해서 작은 문제들로 만들고, 한번에 하나씩 해결하는거임

 

스크래치 : mit에서 개발한 프로그래밍 학습 환경

 

 

프로그래밍 작성과정 

 

요구사항을 정확하게 분석하고 거기에 맞춰서 문제를 해결할 수 있는 알고리즘을 설계해야됨

그것을 코딩을 통해 코드로 구현

코딩이 끝나면 테스트과정을 거침

디버깅은 테스팅과정에서도 하고 코딩과정에서도 함

디버깅은 버그를 제거했다는 의미로 오류를 잡는 과정을 말 함 

코딩에서의 디버깅은 코드의 오류를 찾아서 제거하거나 알고리즘을 수정함

보통 알고리즘을 수정함 

 

테스팅의 두가지 과정 

 

알파테스트

 

회사내부적으로 하는 테스트

예를들어 하나의 회사에 a가 게임을 만들면, b,c가 테스트함

왜냐하면 자기가 짠 코드에서 버그찾기가 힘들기때문 

 

베타테스트

 

그 후 테스트를 거치기 위해 사람들을 모집하여 베타테스트를 통해 버그를 최대한 줄임

 

 

통합 개발 환경(IDE: Integrated Development Environment)

 

이는 에디터와 컴파일러와 디버거가 합쳐진 형태로, 컴파일부터 실행까지 일괄처리한다

원래는 따로 했었음

에디터 : 코드를 작성하는 창

에디터 안에 자연어로 작성하고 이렇게 만들어진 파일은 소스파일, 혹은 소스코드라고 말 한다.

확장자는 .c 이여야 컴파일러가 동작을 함

자연어로 작성된 소스파일은 컴파일러에 의해 컴파일링 과정을 거친 후 기계어로 바뀐다.

그렇게 변역된 기계어 문서는 .obj파일이고 이것을 오브젝트 파일이라고 부른다.

.c파일은 메모장에서도 읽을 수 있고, 자연어로 작성한 코드가 바로 보이나, 컴파일링 과정 후 생성한 .obj 파일은 우리가 기계어라 볼 수 없다

그 후 링크라는 과정을 거쳐서 소스코드를 돌리기 위해 추가적으로 라이브러리가 필요함

여러 오브젝트 파일들과 라이브러리들을 하나로 모아서 링킹한 후에 실행파일을 만들어 실행시킴

 

라이브러리는 컴파일러가 .c파일을 번역하는데 필요한 사전임

여러개의 문서와 라이브러리가 필요해서 하나의 실행파일을 만들어 실행시켜야함

이것을 모아 연결시키는건 링커가 함

소스코드를 만들고 오브잭트파일을 만들고 그 후에 실행파일을 만드는거임

이 과정에 개입하는건 소스파일까지만 작성하는거고 나머지는 IDE가 수행함

 

소스파일(.c) -----------------> 오브젝트 파일(.obj) -------------------> 실행파일(.exe)

                 컴파일(컴파일러)                                   링크(링킹)

 

 

에디터창은 비쥬얼스튜디오에서 작성

비쥬얼스튜디오를 사용하는 이유는 문법적 오류를 쉽게 잡기 위함임

컴파일하고나면 오브젝트파일이 생긴다

문법적인오류는 컴파일러가 잡아준다

 

코드 작성 시 오류의 형태

 

문법적 오류 : 문법적 오류는 비쥬얼스튜디오에의해 잡음 

 

논리적 오류 : 틀린 결과가 나와도 결과가 맞았다고 착각할 수 있음

프로그램이 일단 돌았으니까 문제가 없다고 생각함

논리적 오류가 오류찾기 힘든 이유

따라서, 결과가 나오더라도 결과가 맞는지 틀렸는지 논리적오류가 있는지 없는지 검증해야한다. 

 

 

 

실행시간오류 ( run time error )

 

예를들어 0으로 나누는 것

잘못된 메모리 주소에 접근하는것 

할당되어있는 범위에서만 메모리를 사용해야되는데 다른영역에 침범하면 오류가 발생하는것임

논리오류는 문법은 틀리지 않았으나 논리적으로 정확하지 않은 오류임