Archive
C언어(1) 1-7주차 본문
728x90
메가존아이티평생교육원 C언어(1) 참고
프로그래밍 언어
- 컴파일 언어
장점: 일반적으로 인터프리터를 이용해 실행하는 것보다 빠르게 동작 - 인터프리터 언어
장점: 별도의 컴파일 시간이 없어 처음 실행이 빠름, 한줄 번역 후 바로 실행하기 때문에 오류 수정이 쉬움 - 어셈블리 언어: 명령어를 니모닉 기호로 표시
- 니모닉 기호 mnemonic symbol: 기호와 명령어가 일대일 대응
- 어셈블러 assembler: 니모닉 기호를 이진수로 변환하는 프로그램
- 기계어: 명령어를 이진수로 표시
C언어 특징
- 하드웨어를 직접 제어하는 저수준의 프로그래밍도 가능함
- 이식성이 매우 뛰어남
- 효율적이지만 초보자가 배우기 어려움
프로그램 작성 과정
1. 요구사항 분석
2. 설계 design
- 알고리즘 개발: 프로그래밍 언어와 무관하게 다음을 활용하여 작성
- 자연어 natural language
- 순서도 flow chart
- 의사 코드 pseudocode
3. 구현 및 테스팅
- 코딩: 소스코드 작성해 소스파일 생성
- 컴파일: 소스파일을 목적파일로 전환
- 링크: 목적파일들을 라이브러리 파일들과 연결해 하나의 실행파일 생성
※ 라이브러리 파일은 프로그래머들이 자주 사용하는 기능을 미리 작성해둔 파일로, 컴파일러에 내장되어 있음. - 디버깅 debugging: 오류 수정 작업
- 오류: 컴파일 또는 링크가 불가능한 상태
- 컴파일 시간 오류 compile-time error: 컴파일하는 중에 발생, 대부분 문법 오류 syntax error
- 실행 시간 오류 run-time error: 실행 중에 발생 (e.g. 0으로 나누기, 무한 루프)
- 논리 오류 logic error: 프로그래머가 의도하지 않은 결과가 나오는 경우
- 경고: 컴파일, 링크, 실행 모두 가능하지만 잠재적인 문제를 일으킬 수 있는 상태
- 오류: 컴파일 또는 링크가 불가능한 상태
4. 유지보수
- 디버깅 후에도 버그가 남아있을 수 있고 사용자의 요구가 추가될 수 있기 때문에, 유지보수가 필요함
- 유지 보수 비용이 전체 비용의 50% 이상을 차지하곤 함
통합 개발 환경 integrated development environmnet IDE
editor + compiler + debugger
- visual studio
- eclipse
- dev-C++
프로그램 기본 구조
// 한줄로 된 주석
/*
여러 줄로 된 주석
*/
- 컴파일러는 주석을 무시함, 따라서 아무리 많이 작성해도 실행 프로그램의 크기가 커지지 않음.
#include <stdio.h>
int main(void) {
printf("Hello World!");
return 0;
}
- 전처리기 preprocessor: 프로그램이 컴파일되기 전에 수행되는 명령을 처리하는 도구
(i.e. 소스코드에 포함된 전처리 지시문을 처리하여 컴파일러에 전달할 준비를 함)- 전처리 지시문 preprocessor directives: 세미콜론으로 끝나지 않으며 #으로 시작함
(e.g.#include
는 헤더파일을 소스코드의#include
위치에 포함하라는 의미) - 헤더 파일 header file: 프로그램이 사용할 선언을 미리 정의해둔 파일
(e.g.stdio.h
는 standard input output으로, 표준 입출력에 대한 라이브러리 함수들의 정의를 포함하고 있음)
- 전처리 지시문 preprocessor directives: 세미콜론으로 끝나지 않으며 #으로 시작함
- 함수 function: 특정한 작업을 수행하기 위해 작성된 독립적인 코드
- 사용자 정의 함수와 라이브러리 함수로 구분됨
- 헤더와 몸체로 구성됨
- 반드시 한 개의
main
함수를 포함해야 하고,main
함수는 정수를 반환하는데 0을 반환할 경우 정상 종료를 의미하고 그 외에는 비정상 종료를 의미함 - 표준 출력 라이브러리 함수
printf("형식 지정자", 출력할 값);
- 형식 지정자의 개수와 출력할 값의 개수가 일치해야 함
(i.e. 형식 지정자의 개수가 더 많으면 오류 발생, 출력할 값의 개수가 더 많으면 무시) - 문자 폭을 지정할 경우 오른쪽 끝에 맞춰 출력되며
printf("%8d\n", 12345); // 12345
문자 폭과 함께 0을 지정하면 빈칸 대신 0으로 채워짐printf("%08d\n", 12345); //00012345
- 원래 실수는 소수점 이하 6자리로 출력되나,
정밀도를 별도로 지정할 수 있음printf( "%.2f\\n", 12.34567); // 12.35
정수 출력에 정밀도를 지정한다면printf( "%8.4d\\n", 123); // 0123
- 형식 지정자의 개수와 출력할 값의 개수가 일치해야 함
- 표준 입력 라이브러리 함수
scanf("형식 지정자", &값을 저장할 변수의 주소);
- 여러 변수를 입력하고자 한다면 공백으로 구분
- 형식 지정자 format specifier
%d
10진 정수%f
float형 실수%lf
double형 실수%c
문자%s
문자열
- 문장 statement: 프로그램을 이루는 가장 기본적인 단위로, 항상 세미콜론으로 끝나야 함
- 변수 variable
int age = 25;
- 상수 constant
const int MAX_AGE = 100;
- 이름 없이 값 자체를 직접 사용할 경우 리터럴 상수 literal constant
- 수식 expression
- 피연산자
- 연산자
- 기능에 따라
- 피연산자 수에 따라
- 단항 연산자
- 이항 연산자
- 삼항 연산자
- 기능에 따라
- 피연산자가 모두 정수인 경우, 연산 결과도 정수가 됨
피연산자 중 하나 이상이 실수인 경우, 연산 결과는 실수가 됨
- 식별자 identifier: 변수명, 배열명, 함수명, 구조체명 모두 포함하는 개념
- 변수명 작성 규칙: 영문자, 숫자, 밑줄 사용 가능하나 첫 번째 문자로 숫자 사용 불가능. 대소문자 구별 가능.
- 제어 문자 escape sequence
\0
문자열의 끝\n
줄바꿈\t
다음 탭 위치로 커서 이동\'
작은 따옴표\"
큰 따옴표\\
역 슬러시
표준 자료형
- 정수형 - short, int, long
실수형 - double, float
문자형 - char - 형 변환 type conversion
- 자동 형 변환
- 올림 변환 promotion (e.g. 정수형 상수를 실수형 변수에 저장 가능)
- 내림 변환 demotion (e.g. 실수형 상수를 정수형 변수에 저장 가능, 단 소수점 이하를 버리면서 데이터 손실)
- 정수 연산 시 char형이나 short형은 int형으로 변환하여 계산
- 서로 다른 자료형을 혼합하여 사용하는 경우, 더 큰 자료형으로 통일하여 계산
- 명시적인 형 변환 type cast (e.g.
(int) 1.2345
)
- 자동 형 변환
Structure Programming
중괄호를 사용하여 문장을 그룹핑하는 것을 복합문 compound statement 또는 블록 block이라고 함
- 순차 구조 sequence: 위에서 아래로 순서대로 실행하는 구조
- 선택 구조 selection: 조건에 따라 둘 중 하나의 명령을 선택하여 실행하는 구조
- IF
if (condition) { statement; } else if { statement; } else { statement; }
(condition) ? (true_statement) : (false_statement);
- if문 안에 또 다른 if문이 있다면 중첩 if문 nested if
- 서로 독립적인 조건을 여러 개 비교한다면 다중 if문 multiple if
- SWITCH
switch (condition) { case c1: statement1; break; case c2: statement2; break; default: statementn; }
- break 및 default는 생략 가능, case는 반드시 하나 이상 있어야 함
- 조건으로 정수 상수, 문자 상수만 가능함 (i.e. 실수 상수나 문자열 상수는 사용 불가)
- SWITCH문은 모두 IF문으로 변경할 수 있음
하지만 모든 IF문을 SWITCH문으로 변경할 수 있는 건 아님
- GOTO: 조건 없이 특정 위치로 점프하게 만드는 제어문, 사용을 지양할 것
- IF
- 반복 구조 iteration: 조건이 만족하는 동안 일정 처리 과정을 반복 실행하는 구조
- WHILE
while (condition) { statement; }
- DO WHILE
do { statement; } while (condition);
- FOR
for (initialization; condition; increment) { statement; }
- 초기식, 조건식, 증감식은 생략 가능
- 반복문 안에 다른 반복문을 포함한다면 중첩 반복문 nested loop
- 외부에 위치하는 반복문을 외부 반복문 outer loop
- 내부에 위치하는 반복문을 내부 반복문 inner loop
- WHILE
728x90
'데이터분석 > CS 기초' 카테고리의 다른 글
알고리즘 총 정리 (1) | 2025.02.21 |
---|---|
자료구조 1-7주차 (0) | 2025.02.21 |
알고리즘 1-7주차 (1) | 2025.02.21 |