네트워크 보안

Download Report

Transcript 네트워크 보안

Chapter 2
기초사항
Http://netwk.hannam.ac.kr
HANNAM UNIVERSITY
목차
2.1 첫 번째 프로그램
2.2 화면 출력
2.3 연산이 있는 프로그램
2.4 입력과 출력이 있는 프로그램
2.5 오류 수정 및 디버깅
2.6 응용 프로그램
Http://netwk.hannam.ac.kr
HANNAM UNIVERSITY
2.1 첫 번째 프로그램
주석
헤더파일 포함
함수의 시작
실행되는 문장
함수의 종료
Http://netwk.hannam.ac.kr
HANNAM UNIVERSITY
2.1.1 주석(Comment)
 주석(Comment) : 프로그램에 대한 설명
 /* 한 줄로 된 주석 */
 /* 여러
줄로
된 주석 */
 이중 슬래시를 이용한 편리한 주석
 // 이 줄은 전체가 주석
 printf(“Hello World!”); // 문자열을 화면으로 출력
Http://netwk.hannam.ac.kr
HANNAM UNIVERSITY
2.1.2 헤더 파일 포함
 #include <stdio.h>
 #include는 소스 코드 안에 특정 파일을 현재의 위치에 포함
 헤더 파일(header file) : 컴파일러가 필요로 하는 정보를 가지고 있
는 파일
 stdio.h : STanDart Input Output Header file
 전처리기 지사자 문장 끝에는 세미콜론을 붙이지 않음
stdio.h
…
int printf(char *,...);
…
printf()문은 stdio.h 헤더
파일 안에 원형이 있어
stdio.h 헤더 파일을 포함
하면 곧바로 호출 해서 사용
가능
Http://netwk.hannam.ac.kr
HANNAM UNIVERSITY
2.1.3 줄 바꿈 및 들여쓰기
줄 바꿈을 하여 의미
별로 구분
같은 내용의 처리이면 탭이나
공백을 넣어 들여쓰기를
하는 것이 효과적
좋은 방법
Http://netwk.hannam.ac.kr
나쁜 방법
HANNAM UNIVERSITY
2.1.4 함수
 함수(function) : 특정한 작업을 수행하기 위하여 작성된 독
립적인 코드
3
7
add()
10
함수
int add (int x, int y)
{
int sum;
sum = x + y;
return sum;
}
Http://netwk.hannam.ac.kr
※ 함수는 특정한 작업을 수행하기 위하여 main()함수 바깥 부분
에 정의
미리 정의된 함수의 원형을 프로토타입이라고 함
HANNAM UNIVERSITY
2.1.4 함수
모든 C 프로그램에는 반드시 하나의 main() 함수가 있어야 함
입력은 없음
출력은 int형
main()
0
int main(void)
{
printf(“Hello World!”);
return 0;
}
함수의 출력 타입
함수의 이름
int main (void)
{
printf(“Hello World!”);
return 0;
}
Http://netwk.hannam.ac.kr
함수의 입력 타입
함수의 시작
함수의 몸체
함수의 끝
HANNAM UNIVERSITY
2.1.5 문장
 함수는 여러 개의 문장으로 구성
 문장들은 순차적으로 실행
 문장은 『;』(세미콜론)으로 끝남
운영 체제
main()
printf(“Hello World!”);
printf()함수를 호출하여
콘솔 화면에 Hello World!를
출력하는 문장
printf(“Hello World!”);
return 0;
운영 체제
Http://netwk.hannam.ac.kr
return 0;
main함수가 작업을 끝내고
OS에게 0값을 반환하는 문장
main함수가 0을 반환하면
프로그램이 정상적으로
종료하였음을 나타냄
HANNAM UNIVERSITY
2.2 화면 출력
 printf()는 컴파일러가 제공하는 함수로서 화면에
“ ”안의 내용을 출력
Http://netwk.hannam.ac.kr
HANNAM UNIVERSITY
2.2.1 줄 바꿈 기호
다음과 같은 출력을 하는 프로그램
문장은 순차적으로 실행된다는 사실을 이용
printf()문을 2번 사용하여 프로그램 작성
원하는 결과가 아님
Http://netwk.hannam.ac.kr
HANNAM UNIVERSITY
2.2.1 줄 바꿈 기호
 \n은 화면에서 커서는 다음 줄로 이동
 \n처럼 역슬래시(\)가 먼저 나타나면 특별한 의미를 지님
 \n은 줄 바꿈(new line)을 의미
현재 커서의 위치.
다음 문자를 표시할 때는
이곳부터 시작
Http://netwk.hannam.ac.kr
HANNAM UNIVERSITY
2.2.1 줄 바꿈 기호
 줄 바꿈 문자를 사용하면 원하는 결과를 얻을 수 있음
Http://netwk.hannam.ac.kr
HANNAM UNIVERSITY
2.2.2 일반적인 프로그램의 형태
 프로그램 실행의 단계
 데이터 입력(입력단계)
 데이터 처리(처리단계)
 결과를 화면에 출력(출력단계)
데이터입력
Http://netwk.hannam.ac.kr
데이터처리
결과출력
HANNAM UNIVERSITY
2.3 연산이 있는 프로그램
주석
전처리기
지시어
/* 두개의 숫자의 합을 계산하는 프로그램*/
#include <stdio.h>
int main(void)
{
int x;
int y;
int sum;
// 첫번째 정수를 저장할 변수
// 두번째 정수를 저장할 변수
// 두 정수의 합을 저장하는 변수
x = 100;
y = 200;
함수
변수선언
문장
sum = x + y;
printf("두수의합: %d", sum);
연산
return 0;
}
Http://netwk.hannam.ac.kr
HANNAM UNIVERSITY
2.3.1 변수
 프로그램이 사용하는 데이터를 일시적으로 저장할
목적으로 사용하는 메모리 공간
int x;
// 첫번째 정수를 저장하는 변수
int y;
// 두번째 정수를 저장하는 변수
int sum; // 두 정수의 합을 저장하는 변수
그릇 = 변수
프로그램
Http://netwk.hannam.ac.kr
HANNAM UNIVERSITY
2.3.1 변수
 변수는 데이터를 담는 상자로 생각할 수 있음
데이터
2
변수의 이름
Number
 변수에는 데이터의 종류에 따라 여러 가지 타입이 존재
‘A’
Http://netwk.hannam.ac.kr
12
12.345
HANNAM UNIVERSITY
2.3.1 변수
 식별자(identifier): 변수나 함수의 이름
 식별자를 만드는 규칙
 식별자는 영어의 대소문자, 숫자, 밑줄 문자 『_』 로 구성
 식별자는 숫자로 시작할 수 없음
 대문자와 소문자를 구별하며 C 언어의 키워드와 똑같은 이름은 사용
불가
 식별자의 예
 s, s1, student_number: 올바른 식별자
 $s, 2nd_student, int: 잘못된 식별자
‘A’
ch
Http://netwk.hannam.ac.kr
12
i
12.345
fvalue
HANNAM UNIVERSITY
2.3.2 변수 선언
 변수 선언: 컴파일러에게 어떤 타입의 변수가
사용되는지를 미리 알리는 것
int x;
int x;
int y;
int sum;
변수의 이름
자료형
컴파일러
Http://netwk.hannam.ac.kr
HANNAM UNIVERSITY
2.3.2 변수 선언
 자료형(data type): 변수가 저장할 데이터가 정수인지,
실수인지, 아니면 또 다른 어떤 데이터인지 지정하는 것
Http://netwk.hannam.ac.kr
HANNAM UNIVERSITY
2.3.2 변수 선언
int x;
// 첫번째 정수를 저장하는 변수
int y;
// 두번째 정수를 저장하는 변수
int sum; // 두 정수의 합을 저장하는 변수
정수
x
각 변수에는 정수를 저장
y
sum
메모리 공간에 변수가 만들어지고 이름이 붙여짐
Http://netwk.hannam.ac.kr
HANNAM UNIVERSITY
2.3.3 상수
 상수(constant)란 그 값이 프로그램이 실행되는 동안
변경 할 수 없는 값
x를 상수로 선언했기 때문에
값을 변경하려 하면 컴파일시
에러 발생
※ C언어에서 『=』 는 수학적인 등호가 아님
Http://netwk.hannam.ac.kr
HANNAM UNIVERSITY
2.3.4 산술 연산
 컴퓨터는 기본적으로 계산을 하는 기계
 프로그램 안에서 산술 연산을 할 수 있다는 것은 당연
연산
연산자
C 수식
수학에서의 기호
덧셈
+
x+y
x+y
뺄셈
-
x-y
x-y
곱셈
*
x*y
xy
나눗셈
/
x/y
나머지
%
x%y
x / y 또는
x mod y
sum = x + y;
sum
Http://netwk.hannam.ac.kr
또는 x ÷ y
5
=
2
x
+
3
y
HANNAM UNIVERSITY
2.3.5 변수 값 출력
 printf()는 모니터에 출력을 하기 위한 표준 출력
라이브러리 함수
 printf(“형식 제어 문자열”, 변수);
 printf(“%d”, sum);
형식 지정자
의미
예
%d
정수를 10진수로 출력
1, -2, 10 …
%f
소수점이 있는 실수를 출력
0.1, 10.1, 3.14 …
%c
문자 형태로 출력
‘a’, ‘A’ …
%s
문자열 형태로 출력
“abc”, “ABC”
Http://netwk.hannam.ac.kr
HANNAM UNIVERSITY
2.4 입력과 출력이 있는 프로그램
 고정된 값이 아닌 입력 받은 값으로 연산하는 프로그램
시작
두개의 정수를
입력 받음
입력단계
두 개의 정수를
더하여 합을 계산
처리단계
합을
화면에 출력
출력단계
첫 번째 숫자를 입력하시오: 10
두 번째 숫자를 입력하시오: 20
두 수의 합: 30
종료
Http://netwk.hannam.ac.kr
HANNAM UNIVERSITY
2.4 입력과 출력이 있는 프로그램
Http://netwk.hannam.ac.kr
HANNAM UNIVERSITY
2.4.1 scanf()
 scanf()함수는 키보드로부터 입력된 데이터를 지정된
형식으로 변수에 저장하는 라이브러리 함수

scanf(“%○ %○ ...”, &변수1, &변수2, ...);

형식지정자와 변수의 개수는 같아야 함

scanf(“%d %f”, &number, &height);
※ number라는 int변수와 height라는 float변수에 값을 입력 받는 방법

scanf(“%d , %f”, &number, &height);
scanf() 함수에 의한 입력 값은
100 , 12.345 처럼“ ”안의 형식대로
입력해야 함
Http://netwk.hannam.ac.kr
HANNAM UNIVERSITY
2.5 오류 수정 및 디버깅
 에러(error)와 경고(warning)
 에러(error) : 심각한 오류
에러가 검출되면 컴파일, 링크 불가
 경고(warning) : 경미한 오류
경고가 검출되면 컴파일, 링크 및 실행도 가능하지만 잠재적인 문제를
일으킬 우려가 있음
 오류의 종류
 컴파일 시간 오류 : 대부분 문법적인 오류
 실행 시간 오류 : 실행되는 도중에 발생하는 오류
 논리 오류 : 논리적으로 잘못되어서 의도한 결과가 나오지 않는 오
류
Http://netwk.hannam.ac.kr
HANNAM UNIVERSITY
2.5.1 오류 메시지의 분석
에러가 발견된 소스 파일명
의미
return앞에 ; 를 빠뜨렸다는
Compiling...
test.c
c: \cprogram \test \test.c(7) : error C2143: syntax error : missing ';' before 'return'
Error executingcl.exe
.
에러가 발견된 라인의 번호
Http://netwk.hannam.ac.kr
문법적인오류(syntax error)
가 있었음을 나타냄
HANNAM UNIVERSITY
2.5.2 오류 수정 과정
 오류 수정 과정
컴파일러
(compiler)
소스파일
test.c
링커
(linker)
오브젝트
파일
test.obj
컴파일 시간 오류
Http://netwk.hannam.ac.kr
실행파일
실행
(execution)
ERROR!!
test.exe
실행 시간 오류
논리 오류
HANNAM UNIVERSITY
2.5.2 오류 수정 과정
 오류 1
/* 에러가 발생하는 프로그램 */
#include <stdio.h>
int main(void)
{
printf("Hello World!\n")
return 0;
}
문장의 끝
에 『;』이
없음!!
--------------------Configuration: test - Win32 Debug------------------Compiling...
test.c
C:\PROJECT\test\test.c(7) : error C2143: syntax error : missing ';'
before 'return'
Error executing cl.exe.
test.exe - 1 error(s), 0 warning(s)
Http://netwk.hannam.ac.kr
HANNAM UNIVERSITY
2.5.2 오류 수정 과정
 오류 2
/* 에러가발생하는프로그램* /
#include <stdio.h>
int main(void)
{
printf("Hello World!\n")
return 0;
}
『*』과 『/』
이 떨어져 있
음
전체가 주석
처리됨
--------------------Configuration: test - Win32 Debug------------------Compiling...
test.c
c:\project\test\test.c(9) : fatal error C1071: unexpected end of file found
in comment
Error executing cl.exe.
test.exe - 1 error(s), 0 warning(s)
Http://netwk.hannam.ac.kr
HANNAM UNIVERSITY
2.5.2 오류 수정 과정
 오류 3
/* 첫번째 프로그램*/
#include <stdio,h>
int main(void)
{
print("Hello World!");
return 0;
}
stdio.h로
적어주어야
됨
--------------------Configuration: test - Win32 Debug------------------Compiling...
test.c
c:\project\test\test.c(2) : fatal error C1083: Cannot open include file:
'stdio,h': No such file or directory
Http://netwk.hannam.ac.kr
HANNAM UNIVERSITY
2.5.2 오류 수정 과정
 오류 4
/* 첫번째프로그램*/
#include <stdio.h>
int main(void)
{
print("Hello World!");
return 0;
}
print가
아니고
printf
-------------------Configuration: test - Win32 Debug-------------------Compiling...
test.c
C:\CPROGRAM\test\test.c(6) : warning C4013: 'print' undefined; assuming extern
returning int
Linking...
test.obj : error LNK2001: unresolved external symbol _print
Debug/test.exe : fatal error LNK1120: 1 unresolved externals
Error executing link.exe.
test.exe - 2 error(s), 1 warning(s)
Http://netwk.hannam.ac.kr
HANNAM UNIVERSITY
2.6 응용 프로그램
 연봉 계산 프로그램
 10년 동안 월급을 모두 저금할 경우, 얼마나 모을 수 있는지 계산
하는
프로그램 (단 이자는 생각하지 않음)
Http://netwk.hannam.ac.kr
HANNAM UNIVERSITY
2.6 응용 프로그램
 원의 면적 구하기 프로그램
 원의 반지름을 입력 받고, 이 원의 면적을 구한 후 화면에 출력해 주
는
프로그램
Http://netwk.hannam.ac.kr
HANNAM UNIVERSITY
2.6 응용 프로그램
 원 달러 환율 계산 프로그램
 원 달러 환율과 한화 금액을 입력하면 몇 달러인지 계산해서 화면에
출력해주는 프로그램
Http://netwk.hannam.ac.kr
HANNAM UNIVERSITY
QnA
Http://netwk.hannam.ac.kr
HANNAM UNIVERSITY