2장. c 프로그램기본 - parkjonghyuk.net · •c가이는 그림책, ank co., ltd. ,...
TRANSCRIPT
2장. C 프로그램 기본
박 종 혁 교수
서울과학기술대학교 컴퓨터공학과
UCS Lab
Tel: 970-6702
Email: [email protected]
2019-1st 프로그래밍입문(1)
주석(Comment)
주석을 다는 방법• /*과 */을 이용한 여러 줄 주석
• //을 이용한 한 줄 주석
주석의 용도• 프로그램에 대한 설명
• 프로그램 전체에 대한 대략적인 정보를 제공
• 주석 처리(comment out)
4
주석 예제
5
• C 스타일 주석
/* a comment */
/*
* A comment can be written in this fashion
* to set it off from the surrounding code.
*/
/****************************
* If you wish, you can *
* put comments in a box. *
****************************/
• C++ 스타일 주석
// This is a comment in C++
어휘 원소, 연산자, C 시스템
구문• 올바른 프로그램을 만들 수 있게 하는 규칙
컴파일러• C 프로그램이 구문에 맞는지 검사
• 오류가 있다면, 오류 메시지 출력
• 오류가 없다면, 목적 코드 생성
컴파일 과정• C 프로그램 → 토큰으로 분리 → 토큰을 목적 코드로 변환
• 토큰 종류 : 키워드, 식별자, 상수, 문자열 상수, 연산자, 구두점
6
문자와 어휘 원소
7
프로그램에서 사용할 수 있는 문자•소문자 : a b c ... z
•대문자 : A B C ... Z
•숫자 : 0 1 2 3 4 5 6 7 8 9
•특수문자 : + - * / = ( ) [ ] < > ' “
• ! @ # $ % & _ | . , ; : ?
•여백문자 : 공백, 개행, 탭
컴파일러는 이러한 문자들을 구문 단위인 토큰으로 모은다
어휘 분석
/* Read in two integers and print their sum. */• 주석문 : /*부터 */까지는 공백으로 대치
#include<stdio.h>• 전처리 지시자 : 전처리기가 처리
int main(void){
int a, b, sum;• 키워드 : int, void• 식별자 : main, a, b, sum• 연산자 : ( )• 구두점 : “{”, “,”, “;”
inta, b, sum; -> (X)
int absum -->absum을 하나의 식별자8
식별자
10
•식별자는 문자, 숫자, 그리고 특수문자인 밑줄문자(_)로
구성된 토큰으로, 문자 또는 밑줄문자로 시작해야 함
• C 시스템은 소문자와 대문자를 구별함
•식별자의 선택은 의미를 생각하여 함
진입점(entry-point) 함수
• C 프로그램이 처음 시작될 때 호출되는 함수
• main 함수는 콘솔 프로그램의 진입점 함수이다
• C 프로그램에는 main 함수가 반드시 필요하다14
main 함수의 리턴 값
프로그램의 종료 코드(exit code)를 리턴한다• main 함수의 리턴 값은 운영체제로 전달
• 0이면, 정상 종료이고 0이 아니면 비정상 종료
main 함수의 return문은 생략할 수 있다• 프로그램 종료 시 0 리턴
15
들여쓰기
알아보기 쉽도록 한 줄에 한 문장씩 작성한다
블록(block) : { }로 묶인 문장들
Visual Studio의 들여쓰기 단축키• Ctrl+K, Ctrl+D 또는 블록 선택 후 Ctrl+K, Ctrl+F
16
#define 과 #include의 사용
# : 전처리기 지시자 (Preprocessing Directive) • 전처리기(Preprocessor)
- 컴파일 전에 전처리 지시자로 먼저 정의 되어있는 것들을 프로세서에 등록하는 것
• 전처리 지시자(Preprocessor Directives)- #include와 같이 앞에 #이 붙는 명령어들
예)
#include"my_file.h"• my_file.h 파일의 사본 포함• C에서 제공하는 표준 헤더파일 : stdio.h, string,h, math.h, .... <xxx.h>
#define LIMIT 100
#define PI 3.14159
#define C 299792.458
20
프로그램 작성 순서
21
프로그램을 작성하는 순서• 데이터를 입력하기 전에 반드시 입력할 데이터를 저장할 기억공간이있어야 한다 ( 변수선언이 입력문 전에 있어야 한다 )
•일반적인 프로그램의 작성 순서
변수의 선언 및 사용
변수의 선언• 변수명은 영문자와 숫자, 밑줄 기호
(_)를 사용해서 만든다
• 첫 글자로는 반드시 영문자나 밑줄기호가 와야 한다
변수의 사용• 변수에 값을 대입하려면 =을 이용한다
23
입력과 출력: printf() 와 scanf()
printf() : 화면 출력• printf("서식지정문자열", "변수");
서식지정 문자열• 일반문자열, 변환문자열(%), 확장문자열(₩)
printf()의 변환문자열• printf( "%변환문자","변수"); ”변수“를 변환형식에 맞추어 화면 출력
scanf() : 키보드 입력
scanf()의 변환문자열
scanf(“%변환문자”, &변수); 변환문자 형식으로 입력 받아들임
24
printf 함수의 형식 문자열 (1/3)
서식지정자 의미 사용예 실행결과
%d 정수를 10진수로출력 int num = 123;printf(“%d”, num);
123
%x 정수를 16진수로출력(0~6, a~f 이용)
int num = 123;printf(“%x”, num);
7b
%X 정수를 16진수로출력(0~9, A~F 이용)
int num = 123;printf(“%X”, num);
7B
%f, %F 실수를부동소수점표기방식으로출력
float x = 1.23;printf(“%f”, x);
1.230000
%e, %E 실수를지수표기방식으로출력 float x = 1.23;printf(“%e”, x);
1.230000e+00
%c 문자출력 char ch = ‘A’;printf(“%c”, ch);
A
%s 문자열출력 char name[20] = “abc”;printf(“%s”, name);
abc
26
printf() 옵션
printf()의 옵션 지정• %필드 폭자리수변환문자
• %d ->123
• %5d->_ _123
• %10d->_ _ _ _ _ _ _123
• %2d ->123 (지정폭이 작아도 필요한 폭은 확보)
• %f ->654.321000(표준폭으로 출력)
• %12f ->_ _ 654.321000 (소수점 넣어 12자리로출력, 이하는 표준폭으로 출력)
• %9.2f ->_ _ _ 654.32 (소수점 넣어 9자리로출력, 이하는 2자리로출력)
30
scanf 함수의 형식 문자열 (2/3)
문자 배열에 입력받을 때는 &를 지정하지 않는다
서식 지정자를 여러 개 사용할 수도 있다• 서식 지정자와 입력받을 변수의 개수가 같아야 한다
실수형 변수 입력• %f : float 입력
• %lf : double 입력
35
scanf("%s %d %c", name, &age, &gender);
3개 3개
제어의 흐름
if 문• 일반적인 형태 : if (조건식) { 문장1 }• 조건식이 참(true)이면 (0이 아니면) 문장1 실행, 단문이면 {} 생략
a=1
if (b==3) a=5; /* == : ‘--와 같다’ 연산자) */
printf("%d", a);- b가 3이면 a=5
- b가 3이 아니면 문장(a=5) 실행 안함, printf() 문 실행 1 출력
if-else 문• 일반적인 형태 : if (조건식) { 문장1 }
else { 문장2 }• 조건식이 참(true)이면 (0이 아니면) 문장1 실행 그렇지 않으면 문장2 실행
38
제어의 흐름 - 예시
• 예 )
if(cnt==0){
a=2;
b=3;
c=5;
}
else {
a=-1;
b=-2;
c=-3;
}
printf("%d", a+b+c);
cnt 가 0값을 가지면 10 출력, 그렇지 않으면 -6 출력39
반복문 – while
while 루프• 일반적인 형태 : while (조건식) { 문장 }
#include<stdio.h>
int main(void){
int i=1, sum=0; 참고while (i<=5) { ++i, i++; 증가
sum+=i; --i, i--; 감소++i; i=i+1; i=i-1;
}
printf("sum= %d ₩n", sum);
return 0;
}40
반복문 - for
for 루프• 일반적인 형태 : for (조건식) { 문장 }
#include <stdio.h>
int main(void)
{int sum=0,i;for (i=1;i<=5;++i){
sum+=i;}printf(“sum= %d \n”,sum);return 0;
}41
참고문헌
•천정아, 『Core C Programming』, 연두에디션(2019)
• C가 보이는 그림책, ANK Co., Ltd. , 성안당 (2018)
• Greg Perry, Dean Miller 『어서와 C언어는 처음이지』, 천인국옮김, 인피니티북스(2015)
• KELLEY (역 : 김명호 외), 『A Book on C』, 홍릉과학출판사(2003)
•윤성우, 『 열혈 C 프로그래밍』, 오렌지미디어
•천인국, 『 쉽게 풀어쓴 C언어 Express』, 생능출판사
•서현우, 『 뇌를 자극하는 C 프로그래밍』, 한빛미디어
•강성수, 『 쾌도난마 C프로그래밍』, 북스홀릭
•고응남, 『 C프로그래밍 기초와 응용실습』, 정익사
43