프로그래밍 언어/C언어_기초 프로그래밍

[C언어 기초] 1. 기초사항

딩드 2024. 7. 9. 12:41
반응형

< 기본 용어 >

  • 기계어 : 컴퓨터가 이해하는 언어로, 이진수(0과 1)로 구성된다.
  • 컴파일러(compiler) : 작성한 프로그래밍 언어를 기계어로 바꿔주는 소프트웨어.

 

 

< C언어의 특징 >

 

1. C언어 = 저급언어의 특징 + 고급언어의 특징

 => 메모리와 하드웨어를 직접 조작하면서도 복잡한 앱을 쉽게 작성 가능

 - 따라서 UNIX(운영 체제)를 비롯한 많은 운영체제 및 시스템 소프트웨어 개발에서 사용 됨.

2. 단순하고 간결한 문법으로 프로그램 이해가 쉬움. (간결함)

3. 속도와 메모리 사용량이 중요한 시스템 프로그래밍이나 게임 라이브러리 개발에 많이 사용됨.

 - 매우 효율적으로 실행될 수 있는 기계어 코드로 컴파일 되기 때문. (효율적임)

4. 저수준과 고수준 모두 가능.

5. 이식성이 뛰어남.

6. 배우기 어려움.

 

 

 

< C언어의 용도 >

 

- 시스템 프로그래밍, 게임 개발, 임베디드 시스템, 인공지능 등

 

 

 

< 프로그램 개발 과정 >

 

 1. 텍스트 에디터(예 : 메모장)로 C언어 소스파일(확장자: '.c')을 작성

 2. 컴파일러(compiler)가 소스파일을 기계어로 변환

 3. 컴파일 성공시 exe파일이 생성됨. (예 : hello.c -> hello.exe) 이 프로그램을 실행.

 *빌드(build) : 컴파일과 링크 하여 완전한 실행 파일을 생성하는 것.

 

  • IDE(통합 개발 환경, Integrated Development Environment) : 프로그램에 필요한 에디팅, 컴파일, 실행, 디버깅 기능을 하나의 프로그램 안에 모두 넣어서 프로그램 개발을 쉽게 해주는 도구. (예 : Visual Studio, Eclipse)

참고1) Visual Studio 설치 시, C가 아니고 C++ 개발 환경을 설치해야함. 그 이유는 C++은 C의 상위 집합이라고 불리기 때문. 즉, C++언어는 C언어를 완벽하게 포함하고 있음.

참고2) Visual Studio에서 소스 코드 추가시 .cpp로 돼있는 파일을 .c로 바꿔줘야함.

참고3) 솔루션(solution) : 문제 해결에 필요한 프로젝트들이 들어있는 컨테이너.

참고4) 프로젝트(project) : 하나의 실행 파일을 만드는데 필요한 여러 가지 항목들(소스 코드, 아이콘, 데이터,...)이 들어 있는 컨테이너.

 

 

 

< "Hello World!"를 출력시키는 코드 >

 

#include <stdio.h>

 

int main(void)

{   

        printf("Hello World!");

        retrun 0;

}

 

- 입출력을 위한 #include <stdio.h>

  • 전처리기(=매크로, preprocessor) : '#'으로 시작하는 문장은 전처리기 지시자. 보통 전처리기는 본격적으로 컴파일하기 전 사전 작업을 하는 컴파일러의 일부분. 
  • 헤더 파일(header file) : 컴파일에 필요한 정보들이 저장되어 있음. '.h'의 확장자를 가짐

'#include'는 소스 코드 안에 특정 파일을 포함시키라고 지시하는 명령어이며, 'stdio.h'파일은 입출력 함수에 대한 정보를 가지고 있는 헤더 파일(라이브러리).

* 함수(function) : 특정한 작업을 수행하는 코드의 집합.

 

- main : 함수, 모든 C 프로그램은 main함수로부터 시작하며 이 함수의 반환값은 int형이다.

- printf : 괄호 안에 있는 문자열을 출력하는 함수.

- return 0 : main 함수가 0 값을 반환하고 프로그램을 종료한다는 것을 나타냄.

- {,} : 함수의 시작과 종료를 알리는 기호.

- 세미콜론(;) : 문장이 끝남을 알리는 기호.

 

 

 

< 주석 >

 

- 문장이 길어질수록 중요해진다.

 

1. /* + 주석 처리 할 내용 + */

 : /* 이후 부터 */까지 전체 주석 처리.

 

2. // + 주석 처리 할 문장

 : 한줄 주석 처리.

 

 

 

< 줄바꿈 기호 >

 

- 문장을 출력할 때 'hello'와 'world'를 각기 다른 줄에 출력하고 싶은 경우 :

 

1) printf("hello");

     printf("world");

          (X)

=> 줄이 바뀌지 않은채, 'helloworld' 로 출력됨.

 

2) printf("hello\nworld");

          (O)

 

- 위와 같이, '\n'은 줄바꿈(newline)을 의미하며 커서를 다음 줄의 시작 위치로 옮겨줌.

 

 

 

< 알고리즘(algorithm) >

 

- 알고리즘 : 문제를 풀기 위하여 컴퓨터가 수행해야 할 단계적인 절차를 기술한 것.

 

- 기술 방법 :

 

   1) 자연어(natural language) : 일상적으로 사용하는 언어로 문제 해결 과정을 순서대로 나열하는 방법.

 

자연어 알고리즘 예시

 

   2) 순서도(flow chart) : 프로그램에서 논리 순서 또는 작업 순서를 그림으로 표현하는 방법.

 

순서도 기호

  * 순서도 프로그램 : 파워포인트, Draw.io, GitMind 등

 

   3) 의사 코드(= ,pseudo code) : 자연어보다는 체계적이고 프로그래밍 언어보다는 덜 엄격한 언어, 알고리즘의 표현에 주로 사용되는 코드.

 

의사코드 예시

 

 

반응형