1. 프로그래밍을 위한 기본 사항
(1) 진수(Antilogarithm)
- 특정 개수의 숫자만을 이용하여 수를 나타내는 수 체계
- 10진수 이하일 때는 0~9 사용, 10진수 초과할 경우 10(A), 11(B), 12(C), 13(D), 14(E), 15(F) 알파벳으로 표현
- 아스키 코드(ASCLL; American Standard Code for Information Interchange): 미국 ANSI에서 표준화한 정보교환용 부호체계
- 주요 아스키 코드: 0(NULL, \0), 48(0), 65(A), 97(a)
2. C언어
(1) C언어 기본
- 전처리 부분과 본문으로 구성
- 헤더는 xxx.h 파일로 되어 있고, 헤더 안에는 프로그래밍에 필요한 함수 포함
- #전처리기(Preprocessor): 실행 파일을 생성하는 과정에서 소스 파일 내에 존재하는 전처리 지시문을 처리하는 작업
- 종류: #include, #define
#include <stdio.h>
#define A 5
int main(){
printf("수제비 %d", A);
return 0;
}
- 자료형(Data Type): 프로그래밍 언어에서 정숫값, 실숫값과 같은 여러 종류의 데이터를 식별하는 형태
- 자료형 유형: 문자(char), 정수(int), 부동 소수점(float, double)
- 식별자(Identifier): 변수, 상수, 함수 등 프로그램의 구성요소를 구별하기 위해 사용(대/소문자, 숫자, 밑줄(_) 사용 가능, 예약어 사용 불가)
- 식별자 표기법: 카멜 표기법(inputFunction), 파스칼 표기법(InputFunction), 스네이크 표기법(inpu_function), 헝가리안 표기법(nScore)
(2) 변수(Variable)
- 저장하고자 하는 어떠한 값이 있을 때, 그 값을 주기억장치에 기억하기 위한 공간
- 변수 선언 및 초기화: 자료형 변수명; / 자료형 변수명 = 초깃값;
- 변수 유효범위(Scope): 전역 변수, 지역 변수, static 변수
- 전역 변수: 어떤 블록에도 속하지 않는 변수로 프로그램이 시작되면 변수가 생성되고, 종료되면 소멸
- 지역 변수: 블록 내 선언하는 변수로 블록이 시작되는 부분에 바로 선언해주어야 하고, 해당 블록 안에서만 사용
- static 변수: static 키워드 사용하여 블록 내외부 상관없이 선언 가능한 변수로 프로그램 시작되면 변수가 생성되고, 종료되면 소멸(초기화 한 번만 수행)
(3) 표준 입출력 함수
- <stdio.h> 헤더 선언
- 표준 출력 함수(printf): 지정된 포맷 스트링으로 데이터를 출력하는 함수
- 단순 출력: printf("문자열");
- 이스케이프 문자 이용 출력: 개행(\n), 일정 간격 수평이동(\t)
- 포맷 스트링 이용 출력: printf("포맷_스트링이_포함된_문자열", 인자, …);
- 포맷 스트링 종류: 문자(%c), 문자열(%s), 10진수 정수(%d), 16진수 정수(%x/%X), 부동 소수점(%f)
- 표준 입력 함수(scanf): 키보드로 입력받은 문자열에서 지정된 포맷 스트링으로 데이터를 읽는 함수
- 포맷 스트링 이용 입력: scanf("포맷_스트링이_포함된_문자열", 변수의_주솟값, …);
(4) 연산자(Operator)
- 연산자 우선순위: 증감, 산술, 시프트, 관계, 비트, 논리, 삼항, 대입 연산자 (증산시 관비 논삼대)
- 항의 개수에 따른 연산자 우선수위: 단항→이항→삼항→ 대입 연산자
- 증감 연산자: ++x, x++, --x, x--
- 산술 연산자: +, -, *, /, %
- 시프트 연산자: ≪(2배 증가), ≫(2배 감소)
- 관계 연산자(참이면 1, 거짓이면 0 반환): >, <, >=, <=, ==, !=
- 비트 연산자: &(AND), Ι(OR), ^(XOR), ~(NOT 연산은 부호를 반대로 바꾼 값에 1을 뺀 값)
- 논리 연산자(참이면 1, 거짓이면 0 반환): &&, ΙΙ, !
- 삼항 연산자: 조건식 ? 참 : 거짓;
- 대입 연산자: =, +=, -=, *=, /=, %=
(5) 조건문
- if 문: 조건이 참인지 거짓인지에 따라 경로를 선택하는 명령문
if(조건문){
명령문;
}
else if(조건문){
명령문;
}
else{
명령문;
}
- switch 문: 조건에 따라 여러 개의 선택 경로 중 하나를 취하고자 할 때 사용하는 명령문
- break가 존재하지 않을 경우 진입한 case부터 switch문 끝까지 동작
switch(식){
case 값1:
명령문; break;
case 값2:
명령문; break;
default:
명령문;
}
(6) 반복문
- 특별한 조건이 없으면 무한 처리를 반복(무한 루프)
- while 문: 조건이 참인 동안에 해당 분기를 반복해서 실행하는 명령문
- do while 문: 참, 거짓과 관련 없이 무조건 한 번은 실행하고 그다음부터는 조건이 참인 동안에 해당 분기를 반복해서 실행하는 명령문
while(조건문){
명령문;
}
do{
명령문;
}while(조건문);
- for 문: 초기식, 조건식, 증감식 지정하여 반복하는 명령문
for(초기식; 조건식; 증감식){
명령문;
}
- break 문: 반복문이나 switch 문을 중간에 탈출하기 위해 사용하는 명령어
- continue 문: 반복문에서 다음 반복으로 넘어갈 수 있도록 하는 명령어
(7) 배열(Array)
- 같은 자료형의 변수들로 이루어진 집합
- 1차원 배열 선언 및 초기화: 자료형 배열명[배열_요소_개수]; / 자료형 배열명[배열_요소_개수] = {초깃값};
- 2차원 배열 선언 및 초기화: 자료형 배열명[행의 개수][열의 개수]; / 자료형 배열명[행의 개수][열의 개수] = {초깃값};
- 배열 요소 개수보다 적은 개수만큼 초기화하면 0으로 저장
(8) 문자열
- char 형 배열로 표현
- 문자열 여러 개 정의할 때 char 형 2차원 배열 사용
- 문자열 초기화할 때 마지막에 NULL 문자가 삽입되므로 초기화하는 글자수보다 1 이상 큰 값으로 배열 선언
(9) 구조체(Structure Type)
- 사용자가 기본 자료형을 가지고 새롭게 정의할 수 있는 사용자 정의 자료형
struct 구조체명{
자료형 변수명1;
자료형 변수명2;
};
struct 구조체명 구조체변수; // 구조체 선언
(10) 함수
- main 함수: 프로그램이 제일 처음 실행되는 부분
- main 함수나 사용자 정의 함수는 return 만나면 즉시 함수 종료
void main(){
return; // 생략 가능
}
int main(){
return 반환값;
}
- 사용자 정의 함수(User-Defined Function)
- 매개변수나 생성된 변수는 사용자 정의 함수가 종료되면 소멸
- 전달인자(Agument): 실 매개변수(Actual Parameters)로 함수를 호출하는 쪽에서 전달하는 변수의 값 또는 주솟값
- 매개변수(Parameter): 형식 매개변수(Formal Parameters)로 함수를 호출하는 쪽에서 전달받는 변수의 값 또는 주솟값
- 매개변수 전달 방법 종류: Call by Value, Call by Reference
#include <stdio.h>
int fn(int x){ // 매개변수
return 3;
}
void main(){
printf("%d", fn(5)); // 전달인자
}
- 재귀 함수(Recursive Function): 함수 자신이 자신을 부르는 함수
자료형 함수명(자료형 변수명, …){
함수명(변수명, …)
return 반환값;
}
- 표준 함수: 문자열 함수, 수학 함수, 유틸리티 함수
- 문자열 함수 사용시 <string.h> 헤더 선언
① strcat(문자열 연결) |
strcat(dest, src); | src 문자열을 dest 문자열 뒤에 붙임 |
strncat(dest, src, maxlen); | src 문자열 maxlen만큼 dest 문자열에 붙임 | |
② strcpy(문자열 복사) |
strcpy(dest, src); | src 문자열을 dest 문자열에 복사 |
strcpy(dest, src, maxlen); | src 문자열 maxlen만큼 dest 문자열에 복사 | |
③ strcmp(문자열 비교) |
strcmp(s1, s2); | s1이 s2보다 크면 1, 동일 0, 작으면 -1 반환 |
strcmp(s1, s2, maxlen); | maxlen 길이만큼만 s1, s2 대소 비교 | |
④ strlen(문자열 길이) | strlen(s); | s 길이 |
⑤ strrev(문자열 거꾸로 뒤집음) | strrev(str); | str 문자열을 거꾸로 뒤집음 |
⑥ strchr(문자열 내 일치하는 문자 있는지) | strchr(str, c); | str 내 c 존재하는지 알려줌 |
- 수학 함수 사용시 <math.h> 헤더 선언
① sqrt(양의 제곱근 계산, 소수 확인시 사용) | sqrt(n); | √n 값 계산 |
② ceil(소수점 올림) | ceil(n); | 소수점 올림 |
③ floor(소수점 내림) | floor(n); | 소수점 내림 |
- 유틸리티 함수
- rand, atoi 함수 사용시 <stdlib.h> 헤더 선언
- time 함수 사용시 <time.h> 헤더 선언
① rand(Random) | rand(); | 임의의 정숫값 1개 생성 |
② srand(Seed Random) | srand(seed); | seed 값에 따라 난수 발생기 초기화 |
③ time(현재 시간) | time(NULL); | 파라미터 NULL 현재 시간 리턴 |
④ atoi(ASCll to Integer) | atoi(str); | 문자열(str)→정수형(int) |
⑤ atof(ASCII to Floating Point) | atof(str); | 문자열(str)→실수형(float, double) |
⑥ itoa(Integer to ASCII) | itoa(value, str, radix) | value→문자열(str) radix 진수로 저장 |
(11) 포인터(Pointer)
- 변수의 주솟값을 저장하는 공간
- 포인터 선언: 자료형* 포인터_변수명 = &변수명;
- 주소에 해당하는 값을 가리키는 * 연산과 변수에 주솟값을 나타내는 & 연산은 반대 기능으로 *(&) 두 연산을 같이 쓰면 서로 상쇄
- 배열 i번지 주소: 배열+i == &배열[i];
- 배열 i번지 값: *(배열+i) == 배열[i];
- 2차원 포인터 변수 선언: 자료형 (*포인터 변수)[열의 크기];
- 일반 구조체 변수로 접근(.), 구조체 포인터로 접근(->)
- 함수 포인터: 리턴타입 (*함수_포인터)(함수_파라미터);
'정보처리기사' 카테고리의 다른 글
프로그래밍 언어 활용(파이썬) (0) | 2023.04.17 |
---|---|
프로그래밍 언어 활용(자바) (0) | 2023.04.14 |
인터페이스 구현 (0) | 2023.04.07 |
통합 구현 (0) | 2023.04.06 |
데이터 입출력 구현 (0) | 2023.04.05 |