쉽게 풀어쓴 C언어 Express(이승재, 이기정)-1주차

Jaylee
Quantum Ant
Published in
8 min readJul 13, 2019

목차

<1장>

1.1 프로그램이란?

1.2 프로그래밍 언어들

1.3 C언어와 알고리즘

<2장>

2.1 프로그램 개발 과정

2.2 통합개발환경

2.3 비주얼 스튜디오 이용

2.4 소스코드 작성과 컴파일, 실행

2.4,1 예제코드와 설명

2.5 오류

<3장>

3.1 주석

3.2 변수

3.3 연산자

3.4 출력

3.5 입력

본문

1.1 프로그램이란?

프로그램은 특정한 작업을 수행하도록 설계된 명령어들의 리스트이다. 프로그램은 찰스 배비지가 해석기관을 고안하면서 시작되었다. 전자공학의 발전으로 전자 스위치가 부울 대수의 참과 거짓을 나타낼 수 있다는 것을 알게 되면서 애니악이 만들어 졌다. 다만 애니악은 다른 프로그램을 가동할 때마다 스위치를 다시 연결해야 했다. 이를 해결하기 위해 프로그램을 메모리에 저장하는 프로그램 내장 구조(폰 노이만 구조)가 고안되었다.

1.2 프로그래밍 언어들

프로그래밍 언어는 크게 기계어, 어셈블리어, 고급언어로 분류(Fig1)할 수 있다. 기계어는 컴퓨터가 바로 이해할 수 있는 언어이다. 모든 프로그래밍 언어는 전처리단계와 컴파일 단계를 거치면 기계어가 된다. 하지만 기계어는 cpu에 따라 언어가 달라지고 이진수로만 이루어져 있어 사람이 사용하기엔 너무 불편하다. 어셈블리 언어는 cpu의 명령어를 기호로 표시한다. 다만 cpu가 달라지면 어셈블리어의 문법도 달라진다. 기계어, 어셈블리어를 저급언어라고 부른다. 마지막으로 고급언어는 cpu에 독립적으로 사용되는 언어를 말한다. 고급언어는 저급언어에 비해 사람이 사용하기 쉽다. 다만 컴퓨터가 읽을 수 없는 고급언어를 기계어로 바꾸는 프로그램이 필요한데, 이러한 프로그램을 컴파일러라고 한다. 현재 많이 사용되는 고급언어에는 FORTRAN,COBEL,Python,C,C++등이 있다.

Fig1. 프로그래밍 언어들

1.3 C언어와 알고리즘

C언어는 벨 연구소의 데니스 리치에 의해 개발되었다. C언어의 장점은 간결함, 효율적, 여러 수준에서의 프로그래밍 개발 가능, 뛰어난 이식성이다. 알고리즘은 문제를 풀기 위하여 컴퓨터가 수행해야 할 단계적인 절차를 기술한 것이다. 알고리즘을 기술하기 위해서는 순서도, 의사코드를 사용하는 것이 좋다.

2.1 프로그램 개발 과정

프로그램 개발 과정은 요구사항 분석->설계->구현->테스팅->유지보수(Fig2) 로 이루어져 있다.

Fig2. 프로그램 개발 과정

[요구사항 분석]

어떤 프로그램을 만들 것인지 결정하는 과정이다.

[설계]

설계는 순서도와 의사코드로 알고리즘을 개발하는 것을 말한다.

[구현]

소스코드를 작성하고 소스코드를 기계어로 된 오브젝트 파일로 컴파일하고 오브젝트 파일과 라이브러리를 링크시켜 실행파일(.exe)를 만드는 것을 말한다. 빌드라고도 한다.

[테스팅]

프로그램 실행하면서 논리적인 오류같은 예기치 않은 오류를 수정하는 작업을 말한다.

[유지보수]

프로그램을 상황에 맞춰 고치거나 추가 요구사항을 반영하는 것을 말한다.

2.2 통합개발환경

통합개발환경은 에디터, 컴파일러, 디버거를 하나로 통합한 프로그래밍 도구이다. 가장 대표적인 통합개발환경은 마이크로소프트의 비주얼 스튜디오이다. 비주얼 스튜디오는 20년도 넘게 사용되었고, C뿐만 아니라 자바스크립트, 파이썬 ,C++,C#등 여러 프로그래밍 언어도 사용가능하다. 통합개발환경은 비주얼 스튜디오 외에도 이클립스, Dev-C++등이 있다.

2.3 비주얼 스튜디오 이용

[프로젝트를 생성]

1. [파일]->[새로만들기]->[프로젝트] 메뉴를 선택

2. 나타나는 화면에서 [Window 데스크톱]->[Window 데스크톱 마법사]를 선택

3. 이름을 입력하고 확인을 누름.

4.Win32 응용 프로그램 마법사가 시작되면 [빈 프로젝트]는 체크, [미리 컴파일된 헤더]는 해제하고 확인을 누름

[소스파일 작성]

1. 솔루션 탐색기의 소스파일에서 마우스 오른쪽 버튼을 누르고 [추가]->[새 항목]

2. 설치된 템블릿 중에 C++(.cpp)을 선택하고 파일 이름을 입력한다. 확장자는.c로 한다.

3. 솔루션 탐색기의 소스 파일에서 추가한 소스파일을 더블클릭하고 에디터에서 작성

2.4 소스코드 작성, 컴파일, 실행

[소스코드를 입력할 때 주의해야할 사항]

1. 1개의 단어에 속하는 문자와 기호는 붙여쓴다. 하지만 단어와 단어 사이에는 1개의 공백을 넣어야 한다.

2. 대문자와 소문자를 구별한다.

3. 특수문자를 주의한다.

4. 철자에 주의한다.

5. 들여쓰기를 한다.

6. 문장과 문장 사이에 공간을 둘 수 있다.

[컴파일,실행]

소스코드로 실행파일을 만들려면 [빌드]->[솔루션 빌드]를 누르면 된다. 에러나 경고가 뜨면 출력에서 어느 부분에서 에러나 경고가 뜨는 지 알아볼 수 있다. 실행을 할 때는 [디버그]->[디버깅하지 않고 시작]을 선택한다.

2.4.1 예제코드와 설명

#include <stdio.h> — — ①

int main(){ — — ②

printf(“Hello World!”); — — ③

return 0; — — ④

} — — ⑤

실행결과: Hello World!

① #으로 시작하는 문장은 전처리기 지시자이다. 전처리기는 컴파일을 하기 전 사전 정지 작업을 하는 컴파일러의 일부분이다. #include는 소스 코드 안에 특정 파일을 현재의 위치에 포함시키라고 지시한다. 포함되는 파일을 헤더 파일이라고 한다. stdio.h는 입출력함수에 대한 정보를 갖고 있는 헤더 파일이다.

② main(void)함수를 정의하는 문장이다(Fig4). 함수는 프로그램에서 입력이 주어지면 출력을 만들어낸다. main()함수는 c언어에서 처음으로 실행된다. 모든 c프로그램은 최소 1개의 main()이 있어야 한다. int main(void)에서 int는 함수가 출력하는 값의 타입이 정수라는 것을 의미한다. void는 비어있다는 의미로 함수의 입력이 없다는 것을 의미한다. int, void같은 용어들은 키워드 또는 예약어라고 한다.

Fig4. 함수 int main()

③ printf()함수는 큰 따옴표 안에 있는 텍스트를 화면에 출력한다. 큰 따옴표 안에 있는 텍스트를 문자열이라고 한다.

④ return은 함수가 작업을 끝내고 작업의 결과를 외부로 반환할 때 사용한다. 여기서의 외부는 운영체제를 가르킨다.

⑤ 함수의 시작과 끝은 { 과 }로 나타낸다. {}안에는 문장들이 들어간다. 문장들은 보통 한줄에 1개씩 쓰이고 문장이 끝날 때는 반드시 ;를 붙인다. 함수 안의 문장들은 기본적으로 순차적으로 실행된다.

2.5 오류

오류에는 컴파일 단계에서 발생하는 컴파일 시간 오류, 실행시간에 오류가 발생하는 실행 시간 오류, 실행은 되지만 의도한 대로 되지 않는 논리 오류가 있다. 오류에는 컴파일, 링크가 되지 않는 에러가 있고, 잠재적인 문제를 일으킬 수 있는 경고가 있다.

3.1 주석

주석은 /*와*/로 묶여진 부분이다. 주석은 코드에 영향을 주지 않는다. 주석은 프로그램의 가독성을 높여준다. /* */외에도 //을 입력하면 줄 끝까지 주석을 줄 수 있다.

3.2 변수

변수는 데이터를 일시적으로 저장할 목적으로 사용하는 메모리 공간이다.

[변수선언]

자료형 변수이름( = 값); 으로 변수를 선언할 수 있다. 자료형은 변수에 저장할 데이터가 정수, 실수같은 어떤 데이터인지를 지정하는 것이다. 변수는 항상 사용되기 전에 선언되어야 한다. 같은 자료형의 여러 개의 변수를 선언할 경우 자료형 변수 이름1( = 값), 변수 이름2( = 값); 과 같이 선언할 수도 있다.

[변수의 이름에 관한 규칙]

1.변수의 이름은 영문자, 숫자, 밑줄문자로 이루어진다.

2.변수의 이름 중간의 공백이 들어가면 안된다.

3.변수의 이름은 숫자로 시작될 수 없다.

4.대문자와 소문자는 구별된다.

5.예약어(int, void, long)는 변수의 이름으로 사용할 수 없다.

3.3연산자

= 연산자를 대입 연산자라고 한다. =의 좌변에는 변수가 위치하고 우변에는 값이 위치한다. 다른 연산자들은 표(Table1)에서 볼 수 있다.

Table1. 연산자

3.4 출력

출력은 printf()함수를 이용한다. 문자열을 출력하려면 “ ”안에 텍스트를 쓰고 ()안에 넣으면 된다. 변수를 출력하려면 서식 지정자를 사용해야 한다. 서식 지정자에 변수의 값이 대치되어 출력된다. 자료형에 따라 사용해야 하는 서식 지정자가 다른데, 이는 표(Table2)에서 확인할 수 있다.

Table2. 서식지정자

[줄바꿈문자]

화면에 두 줄로 텍스트를 출력하려면 줄바꿈문자(\n)을 이용해야한다. 예를 들어 화면에

hello

world!

라고 출력하려면 printf(“hello\nworld!”)라고 출력하면 된다.

3.5 입력

입력은 scanf()함수를 이용한다. scanf(“%서식지정자”,&변수이름);과 같이 사용한다. 서식지정자의 개수, 변수의 개수가 같아야 하고 순서 또한 같아야 한다.

--

--