본문 바로가기

프로그래밍기초

C/C++ 프로그램 구조 개발 처음시작하기

C나 C++이나 C#이나 비슷하니 말 할때 그냥 C로 통칭할께요

자 프로그래밍 언어로 코드를 짜서 우리가 원하는 프로그램을 만들 수 있다는 걸 알아요

하지만 프로그램을 만들어봐 하면 막막하잖아요 어떻게 시작하지? 뭐부터 짜야하지?

오늘은 C언어로 프로그램을 짜기 전에 어떤 구조로 짜야할지 어떻게 구조가 이루어져있는지

각각 구조는 무엇을 의미하는지에 대해 한번 훑고 넘어가는 시간을 가질께요

그리고 각각에 해당하는 부분은 나중에 조금더 상세하게 다루도록 하겠습니다

 

C프로그램의 구조 (Structure of a C program)

 

프로그램은 대게 이런구조를 띄고 있습니다 꼭 이렇게 작성해야 되는건 아니지만

모든 개발자가 지키고 있는 룰이죠

 

이렇게 해야 코드를 나중에 수정하기도쉽고 알아보기도 쉽고 쉽게말해서 짜임새 있는 구조로 작성하기

위함이애요

 

전처리기 섹션이 가장 먼저

그리고 그 다음은 전역변수 선언구간

그 다음이 프로그램이 실질적으로 시작되는 메인 섹션

마지막이 함수를 정의해논걸 모아두는 공간입니다.

 

먼저 전처리기 구간을 볼께요

얘는 좀 특별한 코드 구간인데, 컴파일러 한테 컴파일하기 위해서 뭘 준비해야하는지 말해주는

부분이죠 그래서 이름이 전처리기 입니다. 처리하기 전에 확인하는..

예를 들어 내가 십진수를 이진수로 변환하는 코드를 짤건데 내가 직접 다 이런거까지

일일이 짜기에 비효율적이니깐 남이 짠 것 좀 갖다가 쓸거야 그러니까 컴파일하기전에

나 얘가 짠거 쓸거니까 알고 있엉~

 

One of the most important of the preprocessor directives, and one that is used in virtually all programs, is include.

The include command tells the preprocessor that we need information from selected libraries known as header files.

In today's complex programming environments, it is almost impossible to write even the smallest of programs without at least one system library.

 

전처리 구간에서 하는 가장 중요한 일은, 사실상 거의 모든 프로그램에서 사용하는 기능은

include 입니다.

include명령어는 전처리 한테 야 우리 어떤 라이브러리에대한 정보가 필요해 라고 알려줘요

사실 오늘날 점점 더 프로그램이 커지고 복잡해지는 환경에서는

아주 작은 프로그램조차도 이러한 시스템 라이브러리 갖다쓰는거 없이 만드는건 거의 불가능합니다

 

대략 이해가 되었죠? 이런역할입니다. 그외에 전처리구간에서는 치환의 역할을 하기도하고

디버깅에도 도움을 주며 헤더파일 중복 방지도 해주는 컴파일 전 컴파일에 도움되기 위한

여러 일을 수행한답니다. 어떤 일을 수행하는지만 이해하고 넘어가도록 하고,

더더 자세한건 나중에 한 파트로 따로 빼서 자세히 배울거예요.

즉 요 맨 앞의 전처리기는 파일 하기 직전에 처리하는 컴파일러의

한부분이예요 무조건 앞에 와있어야 합니다.

 

전역변수 선언구간

변수의 개념에 대해서는 전체적으로 이전 포스팅에서 훑었습니다.

 

Every C++ program is made up of a global definitions section and one or more functions.

The global definitions section comes at the beginning of the program.

 

자 모든 C프로그램은 전역변수구간과 함수들로 이뤄졌다고 말할 수 있어요. (나중에 배우겠지만 메인도 함수거든요)

전역변수 구간은 대게 프로그램의 맨 앞에 나옵니다 컴파일러 전에 처리되는 전처리기 구간을 제외하고!

 

The basic idea of global definitions is that they are visible to all parts of the program.

 

전역변수란 변수는 변수인데 전역! global~ 즉 어디서든 접근 가능하고 정보를 볼 수 있는 변수를 말해요

당연히.... 개인정보 같은 데이터들을 전역 변수로 두면 안되겠죠? 탈탈털리니까ㅎㅎ

그래서 전역변수 선언할 때에는 매우 조심해야 해요. (전역변수는 지양하는 방식으로 코드를 짜는게 옳습니다)

전역변수의 경우 어떻게 저장하는지, 언제 전역변수를 쓰는게 좋은지 등등 자세한 내용은

역시 해당 파트가서 이어나가도록 할게요 오늘은 프로그램의 구조도만!

 

메인 구간 (Main section)

 

One and only one, of the functions in a program must be named main.

 

프로그램에서 단 한개만 존재하는 함수는 바로! Main함수입니다.

main is starting point for the program. 메인은 프로그램의 시작 지점을 뜻해요

여기서부터 프로그램 흐름이 시작됩니다.

그러므로 프로그램의 흐름이나 로직, 순서 등은 어디다 짜야겠어요?

메인 구간에다가 작성하는거예요!

 

사용자 정의 함수 구간(User-defined functions)

 

이전포스팅 함수를 간략히 살펴보면서 언급했었어요.

함수에는 두 종류가 있다! 사용자 정의 함수 라이브러리 함수가 있다.

Library = 도서관! 라이브러리 함수는 결국 도서관에서 책 빌려서 보듯이,

함수나 필요한 기능을 빌려다가 쓸 수 있는 것!

사용자 정의 함수는 내가! 필요에 따라 함수를 만들어서 활용하는거!

 

사용자 정의 함수가 없으면 오른쪽 사진처럼

main내부에다가 작성해줘야 하기 때문에 main이 길어져요

그러면 프로그램의 흐름을 딱 보면 이해하기 쉽게 만들기 어렵겠죠?

코드도 길어지고 난잡해지고..

그래서 아래에다가 함수를 작성하는 공간을 따로 빼준 후, 정리해줍니다.

그리고 메인에서는 그 함수를 호출해서 마치 뗏다 붙였다 하는 스티커처럼

기능을 가져와서 씁니다.

프로그램이 흘러가는 시작 지점은 Main부터지만 컴파일러는 코드 맨 윗줄부터

해석해서 정보를 가지고 있습니다.

즉 프로그램은 위에서부터 읽기 때문에 sum이라는 함수를 쓰려고

내가 저 맨 밑 구간에 정의를 해놔도

main에서는 몰라요. main에서 sum이라는 사용자 정의 함수를 호출하는

시점이 정의 구간보다 앞서기 때문이죠

그래서 전역변수구간 사진으로 올라가서 다시 보면, int sum(int a, int b);이렇게 선언해줬는데

이 문장이 'sum이라는 함수가 저 밑에 정의되어있으니까

메인에서 호출돼도 당황하지마'라고 알려줘서 메인이 sum을 봐도

사용자 정의 함수 구간으로 내려와 sum함수를 차장 실행할 수 있게 됩니다.

 

 

 

 

이런식으로 프로그램을 짜게 될 겁니다

정말 개략적인 프로그램 구조와 각각의 역할을 알아봤어요 자세한건 추후에 보도록 하고

오늘은 여기 까지 하도록 하겠습니다.