[C] 1강. 프로그래밍

프로그래밍 절차


프로그래밍의 개념

정보처리 시스템

Data(Input)을 받아서 Transform(정보처리 시스템)을 통해
Information(Output)으로 나오는 것을 의미한다.

자료(Data) : 관찰, 실험으로 얻은 사실, 이미 존재하는 것
정보(Information) : 조직화되고 처리된 자료
컴퓨터의 역할 : 정해진 절차대로 원시 자료를 조직화해서 의미 있고 유용한 정보로 출력


컴퓨터 프로그램


프로그래밍 언어


기계어


저급 언어


고급 언어


4세대 언어


C Program 언어의 역사

ALGOL60 -> CPL -> BCPL -> B -> C


프로그래밍의 단계

  1. 문제이해

    • 문제가 무엇인지 어떻게 해결해야할지 무엇이 필요한지 생각하고 이해한다.
  2. 논리설계

    • 어떤 단계로 나누어서 어떤 순서로 처리할 것인가를 계획함
    • 계획, 순서, 필요도구등.. 필요에 따라 기록
    • 다양한 조건에 대해 나열해보기도 하고, 필요에 따라 그림 및 구조를 그리기도 한다.
  3. 코딩

    • 선택한 프로그래밍 언어를 사용하여 프로그램을 작성
    • 텍스트 편집기 또는 개발도구를 이용
  4. 번역

    • 고급 언어로 쓰인 프로그램을 컴퓨터에서 즉시 실행될 수 있는 형태의 목적 프로그램(기계어)으로 바꾸어 줌
    • 그 과정에서 구문 오류(Syntax Error)를 발견하면 이를 수정
    • compile, link (여러 C파일을 하나로 합쳐주는 작업), build (compile + link) 등의 용어를 사용
    • 개발도구의 사용이 필요
  5. 실행

    • 기계어로 만들어진 최종본을 수행하는 작업
    • 개발도구를 사용하거나 독립적으로 실행할 수 있음
  6. 활용

    • 사용설명서를 제작하여 배포하고, 사용자를 교육
    • 개발과정에서 만들어진 명세서를 정리
    • 작성된 프로그램이 잘 활용되도록 관리


논리 설계


일반 순서도

논리 설계


순서도


순서도 규칙

순서도 기호 알아보기


순서도 작성

순서도 그려보기


프로그램 순서도

미지수 (변수)

입력


처리


출력


ex) 두 수를 입력 받아 합을 계산하여 출력하라

1. 시작
2. SUM, a, b (초기화)
3. a,b (파라미터)
4. sum <- a+b (a,b 더한 값을 SUM으로 할당)
5. SUM 출력
6. 종료


프로그램의 코딩


변수의 사용

변수 (Variable)


변수 이름 규칙

  1. 영문자와 숫자의 조합

    • 특수 문자 중에는 ‘_‘(Under bar)만 가능
    • 한글은 안 됨
  2. 첫 글자는 숫자가 아니어야 함

    • 즉, 영문자 또는 ‘_’
  3. 공백(space) 사용불가

    • 변수 이름 중간에 공백 넣으면 안됨
  4. 영문 대소문자 구분 있음

    • 즉, 대소문자에 따라 다른 변수로 취급함
  5. 의미있는 이름 선택 (권고 사항, 강제는 아님)

    • 약자 사용하는 것은 바람직하지 않음 (쉽게 알아보기 힘들다.)
    • 영어 단어 활용


변수 선언


선언 방법

// 선언 방법
int inum;           //  정수형 변수는 inum
float fnum;         //  실수형 변수는 fnum과 dnum
double dnum;
char ch;            //  문자형 변수는 ch


// 복수 개의 변수 선언 (변수의 타입이 같을 경우)
// 아래처럼 한번에 정의가능하다.

int inum1, inum2, inum3;


변수 선언 - 자료형의 종류

자료형 keyword 크기
문자 char 1 byte
정수 int 4 byte (short: 2 byte, long: 8 byte)
실수 float, double 4 byte, 8 byte


변수 치환 : 할당같은 개념

// 변수명 = 실행문;
// 실행문은 상수, 변수, 식 등..

int inum;
float dnum;
char ch;

inum = 54;      //  inum은 정수형 변수니까 정수인 54가 들어감
dnum = 3.14;    //  dnum은 실수니까 실수인 3.14가 들어감
ch = 'A';       //  ch는 문자형 변수니까 문자인 'A'가 들어감


변수의 사용 - Memory


|------|4 byte|1 byte|4 byte|--- 8 btye---|
|------|------|------|------|------|------|
|------|0x0000|0x0004|0x0008|0x000c|0x0010|
|0x0000|------|ch(a)-|-inum-|----dnum-----|


// 한 칸은 4 byte 씩
// - 1 byte는 8 bit로서 한 글자를 표현하는 기본단위
// ch는 1 byte, inum은 4 byte, dnum은 8 byte로 서로 크기가 다름

// 정수형 4 byte에 들어갈 수 있는 숫자의 범위 : -2,147,483,648 ~ 2,147,483,647

// 2,147,483,648이란 2^31이고 따라서 범위는 2^-31 ~ 2^31-1
// 31승 = 32bit (4 byte) - 1 bit (부호를 나타내는 sign bit)
// 1 byte에 들어갈 숫자의 범위는 -128 ~ 127까지 임 (-2^7 ~ 2^7-1)


입출력 함수

입력 : scanf()


치환과의 비교

  1. 치환

    • 정해진 상수 넣기 (pi = 3,14;)
    • 초기값 넣기 (int num = 0;)
    • 계산에 의해 넣기 (area = width * height;)


  1. 입력

    • 프로그래머가 임의로 정할 수 없는 값을 사용자로부터 입력 받아 넣기
      (학생의 성적, 물건 값, 은행 입출금액등..)


int inum;

scanf("%d", &inum);

// 3이라는 숫자를 사용자가 직접 입력하게 되면
// 변수 inum에 3이 들어간다.


입력 - 형식 지정자의 사용 예

형식 의미 C언어의 type
%d 정수(10진수) int
%c 문자 char
%f 실수 float
%lf 실수 double


출력 : printf()


int inum = 54;
double dnum = 3.14;
char ch = 'A';

printf("This displays %d %f %c, too.", inum, dnum, ch);

// This displays 54 3.140000 A, too.
// 3.140000은 실수형 변수를 출력할 떄 기본적으로 채워야하는 자릿수가 있기때문


출력 - 형식 지정자의 사용 예

형식 의미 C언어의 type
%d 정수(10진수) int
%c 문자 char
%f 실수 float, double


int a = 10, b = 20;
double times = 3.14;
printf("Hello!! a, b, times", a, b, times);

// 형식 지정자를 앞에 안붙였으므로 Hello!! a, b, times가 출력됨

int a = 10, b = 20;
double times = 3.14;
printf("Hello!! a %, b %, times %", a, b, times);

// 형식 지정자를 잘못 붙였으므로 Hello!! a, b, times

int a = 10, b = 20;
double times = 3.14;
printf("Hello!! a %d, b %d, times %d", a, b, times);

// Hello!! a 10, b 20, times 1374389535
// times가 1374389535인 이유는 정수형으로 출력을 하고자 했지만
// times가 실수값이 들어왔기 때문에 정수형으로 해석해서 출력하다보니
// 1374389535가 나오게 된다.

int a = 10, b = 20;
double times = 3.14;
printf("Hello!! a %d, b %d, times %f", a, b, times);

// Hello!! a 10, b 20, times 3.140000
// times가 3.140000인 이유는 double이라서!

int a = 10, b = 20;
double times = 3.14;
printf("Hello!! a %d, b %d, times %.2f", a, b, times);

// Hello!! a 10, b 20, times 3.14
// %.2f의 뜻은 소수점 2자리로 지정하는 것 : toFixed(2)와 비슷


주석

주석


주석 쓰는 방법

  1. /* */ : /*로 시작해서 */로 끝남 (슬래시 스타)
    (한줄, 여러줄 가능 : 보통 여러줄일 때 사용함)

  2. // : 한줄 짜리 주석을 사용할 수 있다.


VS(Visual Studio) 설치


설치 끝

C언어로 “Hello World!” 출력해보기