4차시:
C의 개요,
어휘 원소, 연산자, C 시스템
• 프로그래밍 및 실험
• 제 4주
• 동국대학교 조영석
이 문서는 나눔글꼴로 작성되었습니다. 설치하기
2
- while문
while (expr) statement
(예) /* 1부터 5까지의 합을 구하는 program */
int i = 1, sum = 0; /* 초기화에 주의! 곱을 구하려면 i=1; */
while (i <= 5) { sum += i;
++i;
}
/* 'sum = sum + i;'와 동일, -=, *=, /=, %= */
/* 'i = i + 1;'과 동일, 'i++;'를 쓸 수도 있음. */
/* ++i 와 i++는 차이가 있음 */
/* 반드시 manual execution (수동 실행)을 통해 확인할 것 */
3
- do-while문
do
statement while (expr);
(예)
int sum = 0, i = 1;
do {
sum = sum + i;
i = i + 1;
} while (i <= 5);
4
- while v.s. do-while: 같은 목적의 program의 작성이 가능 int i = 1, sum = 0;
while (i <= 5) { sum += i;
++i;
}
int sum = 0, i = 1;
do {
sum = sum + i;
i = i + 1;
} while (i <= 5);
5
- for문
for (expr1; expr2; expr3) statement
(예)
int i, sum = 0;
for (i=1; i<=5; ++i) sum += i;
실행순서:
expr1, expr2, {statement, expr3, expr2}*
6
- while 문 v.s. for 문: 같은 목적의 program의 작성이 가능
int i, sum = 0;
for (i=1; i<=5; ++i) sum += i;
int i = 1, sum = 0;
while (i <= 5) { sum += i;
++i;
}
7
강조
- for 문: 반복횟수가 분명할 경우 사용하는 것을 권장함.
- while 문: 반복횟수가 불분명할 경우 사용 반복조건을 처리 전에 확인
처리가 skip될 경우도 있음.
- do - while 문: 반복횟수가 불분명할 경우 사용 반복조건을 처리 후에 확인
최소한 1회 처리됨.
8
1.7 함수: chapter 5에서 상세히 강의함.
1.8 배열, 문자, 포인터: chapter 6에서 상세히 강의함.
1.9 파일: chapter 11에서 상세히 강의함.
9
1.10 운영체제의 고찰 - C Program의 작성
vi sea.c gcc sea.c a.out
move a.out sea
gcc -o sea sea.c /*compile 결과를 sea에 저장 */
- 입출력 재지정
sea > outfile sea < infile
sea < infile > outfile
10
Chapter 2: 어휘 원소, 연산자, C 시스템
구문: 알파벳, 단어, 구두점을 사용 하는 규칙 컴파일러(compiler):
preprocessor가 작동 C 코드가 올바른지 검사 if syntax error가 있으면,
then error message를 출력하고 실행을 멈춤 else object code를 생성
loader: object code를 실행화일로 변환
11
2.1 문자와 어휘원소
- C program에서 사용할 수 있는 문자 소문자: a b c … z
대문자: A B C … Z 숫자: 0 1 2 … 9
특수문자: + - * / = ( ) { } [ ] < > ' " ! @ # $ % & _ | \ . , ; : ?
여백문자: 공백, 탭, newline
- 토큰: 위의 문자들의 조합으로 된 기본 단어에 해당 - 토큰의 종류: 키워드(keywords), 식별자(identifiers),
상수(constants), 문자열 상수(string constants), 연산자(operators), 구두점(punctuators)
12
/* in file sum.c */ 주석문
#include <stdio.h> a preprocessor directive int main ()
{
int a, b, sum;
printf ("Input two integers: ");
scanf ("%d%d", &a, &b);
sum = a + b;
printf ("%d + %d = %d\n", a, b, sum);
return 0; }
키워드, 연산자, 식별자, 구두점, 문자열상수, 상수
13
2.2 구문규칙
digit ::= 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 letter_or_digit ::= letter | digit
letter ::= lowercase_letter | uppercase_letter lowercase_letter ::= a | b | c | … | z
uppercase_letter ::= A | B | C | … | Z alphanumeric_string ::= {letter_or_digit}0+
conditional_statement ::= if (expression) statement {else statement}opt
14
2.3 주석
- /* 임의의 문자열 */
- 토큰이 아님
- compiler는 주석을 하나의 공백문자로 대치함
15
2.4 키워드(keywords)
- C언어에서 고유한 의미를 가지는 토큰 (token), 예약어 (reserved words)
- 키워드 auto break case char const
continue default
do
double else enum extern float for
goto if
int long
register return short
signed sizeof static struct switch typedef union
unsigned void
volatile while
16
2.5 식별자(identifiers)
- 문자, 숫자, _(underscore)
- 소문자와 대문자를 구별 ('a' != 'A')
- 식별자의 정의 : 의미가 쉽게 파악될 수 있게 정의할 것 - identifier ::= {letter | underscore}1
- identifier ::= {letter | underscore | digit}0+
underscore ::= _
17
- (예) 사용가능 k
_id
iamanidetifire2 → IamAnIdetifire_2 so_am_I
- (예) 사용불가능 not#me 101_south -Plus
- (주의) underscore(_)로 시작하는 식별자는 시스템 이름과 충돌 가능
18
2.6 상수
- 정수 상수 : 0, 17
- 실수 상수 : 0.0, 3.14159
- 문자상수 : 'A', 'b', '+', '3', '\n'
- 열거상수 : enum day {sun, mon, tue, wed, thu, fri, sat};
- 열거상수 : enum day d1 = fri;
- 10진 상수 : 17
- 8진 상수 : 017 (== 15)
- 16진 상수 : 0x17 (== 23), 0X10 (== 16) - 상수 수식 : -33, -9.0
19
2.7 문자열 상수
- "abc", "I am a student."
- 'a' != "a"
- "\"" → "를 출력 -"\\" → \를 출력
이 문서는 나눔글꼴로 작성되었습니다. 설치하기