자격증/정보처리기사 실기

정보처리기사 실기 - 프로그래밍 언어 이해(C언어)

비뀨_ 2023. 7. 21. 22:22

프로그래밍 언어 이해는 정보처리기사 실기 시험에 많이 나오기 때문에 한 번은 읽어봐야 하는 것 같다.

 

C 언어는 전처리 부분 + 본문으로 구성되어 있다.

헤더는 xxx.h 파일로 되어있고, 헤더 안에는 프로그래밍에 필요한 함수들이 포함되어 있다.

 

전처리기 (Preprocessor)

C언어에서 #이 붙으면 전처리 지시문 (전처리기)라고 한다.

 

종류

  • #include : 헤더 파일을 포함할 때 사용하는 전처리기
  • #define :
    • 매크로를 정의할 때 사용.
    • 상수값을 지정하기 위한 예약어.

자료형

유형 설명 선언 형식
문자
(Character)
- 문자 하나를 저장하고자 할 때 사용
- 메모리에 저장은 숫자로 저장
char
정수
(Integer)
- 정수 값을 저장할 때 사용 int
부동 소수점
(Floating Point)
- 소수점을 포함하는 실수값을 저장하고자 할 때 사용 float, double

 

표기법

  • 카멜 표기법 (Camel Case) : 첫 단어 시작만 소문자, 그 뒤의 단어는 대문자
    • ex : memberStatus, memberType, accountAmount 등
  • 파스칼 표기법(Pascal Case) : 여러 단어가 이어지면 각 단어의 첫글자는 대문자로
    • ex : MemberStatus, MemberType, AccountAmount 등
  • 스네이크 표기법(Snake Case) : 여러 단어가 이어지면 단어 사이에 언더바 넣음
    • ex : member_status, member_type, account_amount 등
  • 헝가리안 표기법 (Hungarian Case) : 식별자 표기 시 두어에 자료형 붙이는 방법
    • int : n , char c, 문자열 sz
    • nScore, szName 등

 

 

표준 출력 함수 (printf)

지정된 포맷 스트링으로 데이터를 출력하는 함수

 

이스케이프 문자를 이용한 출력

\n : 커서를 다음 줄의 맨 앞으로 이동(개행문자)

\t : 커서를 tab 간격만큼 이동

 

포맷 스트링을 이용한 변수 출력

문자(Character) : %c - 문자 한 글자에 대한 형식

문자열(String) : %s - 문자열에 대한 형식

정수

Unsigned Decimal : %u 부호 없는 10진수 정수

Decimal : %d 10진수 정수

Octal : %o 8진수 정수

Hexa Decimal : %x, %X  16진수 정수

부동 소수점

%e , %E Exponenet : 지수 표기

%f : Floating Point 부동 소수점

$lf : Long Floating Point 긴 부동 소수점 표기

 

포맷 스트링 변수 상세 출력

 

%[-][0][전체자리수][소수점자리수]문자열

 

#include <studio.h>
void main() {
	float a = 1.2345;
    
    printf("%.2f\n", a); // 1.23
    printf("%5.1f\n", a); //  1.2
    printf("%05.1f\n", a); //001.2
    printf("%-05.1f\n", a); //1.2  
}

위에서

  • .2f 는 소수점 둘째자리까지 표시하라는 것이다.
  • 5.1f는 전체 출력 문자가 5글자까지인데, 소수점 첫재짜리까지 나타내라는 것이다.
  • 05.1f는 위와 동일하지만, 앞의 공백을 0으로 채우라는 것이다.
  • -05.1f는 왼쪽정렬로 하고 앞의 공백을 0으로 채우라는 것인데, - (왼쪽정렬) 로 앞의 공백이 없기 때문에 1.2가 나온다.

 

 

배열 

int a[3] = {1,2};
int b[3]; // 쓰레기 값으로 초기화 됨

위와 같이요소 갯수보다 적게 초기화를 하면 각 자료형의 기본 값으로 초기화 된다

  • int : 0
  • 실수 : 0.0
  • 문자형 : NULL

2차원 배열

int a[2][3] = {1, 2, 3, 4};
int b[2][3]; // 쓰레기 값으로 초기화 됨

2차원 배열도 그냥 배열과 같다.

a의

  • a[0][0] = 1
  • a[0][1] = 2
  • a[0][2] = 3 

이런식으로 채워지고, a[1][0] 은 4가 들어간다.

배열은 이미 다 썼기 때문에 나머지 a[1][1], a[1][2]는 int의 기본 값인 0이 들어간다.

 

 

문자열

문자열은 char형 배열로 표현된다.

문자열 초기화할 때 마지막에 NULL이 삽입되어 초기화하는 글자 수보다 1 이상 큰 값으로 배열을 선언한다.

printf의 %s로 문자열을 읽고 출력할 떄, 시작 주소부터 NULL직전까지의 값을 읽어서 출력함.

구조체

기본 자료형을 가지고 새롭게 정의할 수 있는 자료형

 

struct 구조체이름 {
  char gender;
  int height;
};

void main() {
	struct Student s = {'F', 160};
    s.gender = 'M';
    printf("%c", s.gender);
    printf("%d", s.height);
}

 

함수

매개변수 전달 방법

 

전달인자(Argument) - 실제 매개변수라고 불림. 함수를 호출하는 쪽에서 전달하는 변수 값 또는 변수의 주소값

매개변수(Parameter) - 형식 매개변수, 함수를 호출받는 쪽에서 전달받는 변수 값 또는 변수 주소의 값

int sum (int x, int y){ // 매개변수 parameter
  return x + y;
};

void main() {
	int x = 5;
    int y = 3;
	int sumResult = sum(x, y); // 인자 argument
    printf("%d", sumResult);
}

 

  • 매개변수 전달 방법 종류
    Call by Value - 값을 넘겨 새로운 공간에 할당해 사용하는 방식, 변화가 있어도 원래 넘긴 쪽에서 변화가 일어나지 않음.
  • Call by Reference - 변수가 사용중인 주소값을 넘겨주는 방식, 변화가 생기면 넘긴 쪽에서 변화가 일어남.

 

포인터

포인터는 변수의 주솟값을 저장하는 공간이다.

 

선언

자료형* 포인터_변수명 = &변수명;

 

void main() {
	int x = 15;
    int* y = &x;

    printf("%d %d %d", x, *y, *(&x); // 10 10 10
}