윈도우 프로그래밍

Download Report

Transcript 윈도우 프로그래밍

프로그래밍1 및 실습 (C언어)
- 0장 및 1장-
숭실대학교 컴퓨터학부
2007년 1학기
김완섭
[email protected]
이 과목에서는 무엇을 배우는가?
• 이 과목에서는 무엇을 배우는가?
– C언어를 배운다.
– 프로그래밍을 배운다.
• 궁금한 내용들
–
–
–
–
–
왜 언어 (Language)라고 하는가 ?
왜 언어의 이름이 C 일까?
프로그래밍 ?
프로그램과 소프트웨어 ? 차이점이 무엇인가?
프로그래머? 개발자(Developer)?
2
숭실대학교 컴퓨터학부
왜 이름이 C일까? (p.1)
• ABCD?
• B언어
– 1967년, Martin Richards에 의해 개발된 언어
– BCPL 언어에 기반을 두고 있다.
• C언어
– 1972년 개발된 Dennis Ritchie에 의해 만들어진 언어
– UNIX 운영체제를 위한 시스템 언어로 개발됨
• C++ 언어
– C에 기반을 두고 있다.
• JAVA 언어
– C++에 기반을 두고 있다.
3
숭실대학교 컴퓨터학부
프로그램과 소프트웨어
• 프로그램(Program) ?
– 프로그램은 컴퓨터에게 어떤 일의 수행을 지시하는 명령어(instruction)의 집
합이다. 쉽게 말하면, 실행파일들.
• 소프트웨어(Software) ?
– 일반적으로 프로그램과 같은 의미로 사용된다.
– 사전 : 컴퓨터 프로그램 및 그와 관련된 문서들을 통들어 이르는 말. 컴퓨터
를 관리하는 시스템 프로그램과 문제 해결에 이용되는 다양한 형태의 응용
프로그램으로 나뉜다.
• 예)
– 아래아 한글 (워드 프로세서)
– 프로그램 : 실행파일들
– 소프트웨어 : 실행파일들 + 매뉴얼 등
4
숭실대학교 컴퓨터학부
용어정리
• 컴퓨터에서 특정 목적의 일을 수행하는 프로그램을 만드는 과정을 프로
그래밍한다 라고 한다.
• 이러한 프로그램을 만드는 사람을 프로그램 개발자(Developer) 또는 프
로그래머(Programmer)라고 한다.
• 개발자란 그 범위가 상당히 넓을 수 있고, 프로그래머란 개발자 중에서
도 프로그램 원시 코드를 만드는 개발자를 의미한다.
5
숭실대학교 컴퓨터학부
C 프로그래밍을 왜 배우는가?
• 컴퓨터란 무엇인가?
– Compute(계산)하는 기계
– 더하기, 빼기 등의 단순한 숫자연산을 처리하는 기계이다.
– 컴퓨터에게 어떤 일을 시키기 위해서는 프로그래밍을 배워야 한다.
• 프로그래밍 언어의 종류
– Assembly, Cobol, Fortran, Basic, C, C++, JAVA 등의 다양한 언어
– 각 언어의 특징, 장단점이 있다.
– 적절한 언어 및 개발 툴을 선택하여 사용한다.
• 개발툴
– C언어 : Visual C++, Borland C++, Turbo C++
– JAVA 언어 : Jbuilder, Eclipse, Kawa 등등
6
숭실대학교 컴퓨터학부
0장. 영으로부터 시작 (p.1)
• 왜 이 책은 1장이 아니라 0장에서부터 시작하는가?
• C언어에서 0이라는 숫자가 갖는 특별한 의미
– C에서는 1이 아니라 0이 시작이다.
– C에서 0은 거짓을 의미하고 0이외의 숫자는 참을 의미한다.
– C에서 포인터의 널 값은 0으로 나타낸다.
7
숭실대학교 컴퓨터학부
0.1 왜 C언어인가? (P.2)
• C는 작은 언어이다. ( 외울 것이 적고 배우기 쉽다. )
• 대부분의 프로그램이 C언어로 만들어졌다.
• C는 이식성이 좋다.
• C는 간결하다.
• C는 모듈성이 좋다.
• C는 C++과 Java의 기반이 되는 언어이다.
• (참고) 각각의 장점에 대해서 책을 참고하시오.
8
숭실대학교 컴퓨터학부
0.2 ANSI C 표준 (p.3)
• ANSI ?
– American National Standards Institute
– 미국 표준 협회
• ANSI C
– 미국표준협회(ANSI)에서 표준화(약속) 한 C언어이다.
• ANSI/ISO C
– ISO (International Organization for Standardization)
– 국제적으로 공인된 표준이다.
• 개발회사들은 이 표준에 맞추어 컴파일러를 개발한다.
9
숭실대학교 컴퓨터학부
프로그래밍의 절차
• 아래와 같은 순서로 프로그램을 작성한다.
1단계
소스코드
작성
2단계
컴파일
3단계
디버그
10
4단계
실행
숭실대학교 컴퓨터학부
프로그래밍의 절차
• 좀 더 정확하게 설명하면
–
–
–
–
소스코드 작성
컴파일 (by 컴파일러)
링크 (by 링커)
실행파일 생성
11
숭실대학교 컴퓨터학부
프로그래밍의 절차 : 컴파일
• 컴파일
• 목적파일의 생성, Ctrl+F7
• [Build] 메뉴에서 [Compile HelloWorld.c] 라는 메뉴 실행
12
숭실대학교 컴퓨터학부
프로그래밍의 절차 : 디버깅(에러 수정)
• 에러
– 프로그램 과정에서 나타나는 문제를 에러(Error)
– 에러는 크게 컴파일 시간에 발생하는 에러와 실행 시간에 발생한 에러로 구
분
• 컴파일 시간에 발생하는 에러를 “컴파일 (시간) 에러”
• 실행 시간에 발생한 에러는 “실행 (시간) 에러
–
실행 시간 에러는 넓은 의미로 링크 과정과 실행 과정에서 발생하는 에러로 볼 수 있음
• 디버깅
– 컴파일 에러나 실행 에러를 수정하는 과정을 디버깅(debugging)
• 디버깅이란 버그를 잡는다는 의미로 여기서 버그란 바로 에러를 의미
13
숭실대학교 컴퓨터학부
통합개발환경
• 통합개발환경
– 컴파일러, 디버거, 링커, 에디터 등을 통합적으로 제공하는 개발 환경
을 통합 개발 환경(Integrated Development Environments)
– 통합 개발 환경의 대표적 제품이 MS의 비쥬얼 C++(MS Visual C++)
• Visual C++
– 프로그램 언어 C와 C++를 이용하여 응용 프로그램을 개발할 수 있는
개발 도구
– 이용할 버전은 Microsoft Visual C++ 6.0 Professional Edition
14
숭실대학교 컴퓨터학부
프로그래밍의 예 : 1단계 소스코드 작성
• 화면에 Hello World 라고 출력하는 간단한 프로그램을 작성.
– Visual C++ 프로그램을 사용한다. (또는 UNIX에서 vi 편집기 사용)
– HelloWorld.c 라는 이름으로 파일을 생성한다.
– 아래와 동일하게 입력한다.
#include <stdio.h>
int main(void)
{
printf( “ Hello World \n");
return 0;
}
15
숭실대학교 컴퓨터학부
프로그래밍의 예 : 2단계 컴파일
• UNIX 환경이라면,
– $ cc HellowWorld.c
• 윈도우 환경에서 Visual C++을 사용하는 경우라면
– 단축키로 [Ctrl+F5]
– 메뉴에서 [Build] – [Execute HelloWorld.exe]를 실행
16
숭실대학교 컴퓨터학부
프로그래밍의 예 : 3단계 디버그(에러수정)
• Error를 수정한다.
• Warning은 우선 무시해도 좋다.
17
숭실대학교 컴퓨터학부
프로그래밍의 예 : 4단계 실행
• UNIX 환경이라면
$ a.out
Hello World
 프로그램 수행 결과
• Windows 환경이라면
– [Ctrl + F5] 단축키를 실행하면 자동으로 실행된다.
– 또는 HelloWorld.exe 파일을 찾아서 직접 실행한다.
C:\StartC\debug\HelloWorld.exe
Hello World
 프로그램 수행 결과
18
숭실대학교 컴퓨터학부
프로그램 이해하기 (1, #include)
• 전처리기 지시자(Preprocessor directives)
#include <stdio.h>
• Stdio.h 라는 파일을 포함(사용)하겠다는 것을 의미한다.
• Stdio.h 는 어떤 파일인가?
– Standard Input Output 의 약자이다.
– 이 파일 안에서 입력, 출력에 해당하는 기능들이 정의되어 있다.
– Printf(), Scanf() 함수를 사용하기 위해서는 이 파일을 포함해야 한다.
• #으로 시작되는 것을 전처리문이라고 한다.
– 컴파일러는 전처리기를 포함하고 있다.
– 컴파일을 하기 전에 전처리 기능을 수행한다.
19
숭실대학교 컴퓨터학부
프로그램 이해하기 (2, #include)
• 전처리기 지시자(Preprocessor directives)
#include <stdio.h>
– #으로 시작하는 문장을 전처리기 지시자(preprocessor directives)
– 컴파일 하기 전에 먼저 처리해야 할 일을 수행하도록 명령을 내리는 문장
– 문장 #include는 다음에 나오는 헤더 파일(header file)을 이 문장이 있는 부
분에 삽입하는 역할을 수행
– 즉 문장 #include 다음에는 헤더 파일의 이름을 <파일이름> 형식으로 반드시
기술
#include <헤더파일이름>
– #include 문장은 반드시 한 줄에 모두 기술
20
숭실대학교 컴퓨터학부
프로그램 이해하기 (3, main)
• Main 이라는 함수 이해하기
int main(void)
• main() 이라는 함수를 정의한다.
• 모든 프로그램은 main 함수로부터 시작한다.
• 하나의 프로그램은 1개 이상의 함수로 구성된다.
• 함수를 이해하기
– 두수를 더하는 함수
– 제곱하는 함수
• 함수의 입력과 출력을 표시해야 한다.
– 출력 : int (정수)
– 입력 : void (없음)
21
숭실대학교 컴퓨터학부
프로그램 이해하기 (4, main)
• 함수 main()은 C 언어에서 프로그램이 시작되는 함수로, 프로그램이 실
행되려면 프로그램은 반드시 main() 함수를 가져야 함
• 함수 main()에서 기술되는 단어인 int, main, void는 모두 소문자로 대소
문자를 구분하여 정확히 기술
– int 와 main 사이의 공백은 단어를 구별하는 중요한 의미가 있으므로, 하나
이상의 공백은 반드시 필요
– main 이후의 라인의 집합기호 {는 반드시 있어야 하며, 이는 main() 함수의
시작을 의미
– 마찬가지로 마지막 줄에 있는 집합 기호 }는 main 함수의 끝을 의미하고
main() 함수의 마지막에 반드시 기술
• 함수 main(void) 이후의 문장에서 여러 줄에 걸쳐 문장이 있는 것을 볼
수 있는데, 이것은 프로그램 읽기(readability)를 쉽게 하기 위함
– 반드시 줄마다 하나의 문장을 기술해야 하는 것은 아님
22
숭실대학교 컴퓨터학부
프로그램 이해하기 (5, main)
• main 함수의 형식 (1)
int main(void)
{
printf(“ Hello World “);
return 0;
}
• main 함수의 형식 (2)
void main(void)
{
printf(“ Hello World “);
}
• main 함수의 형식 (3)
main() {
printf(“ Hello World “);
}
23
숭실대학교 컴퓨터학부
프로그램 이해하기 (6, printf)
• printf 라는 함수 이해하기
printf(“ Hello World \n”);
– 화면에 출력할 때 사용하는 함수이다.
– Stdio.h 라는 헤더파일에 이 함수가 정의되어 있다.
– 두개의 “…” 사이에 들어있는 문장을 그대로 출력한다.
– 그런데 \n 은 화면에 그대로 출력되지 않는 것을 볼 수 있다.
– 역슬래시( \ or 키보드에서 통화표시) 가 있으면 특수한 의미로 해석
– \n 은 New Line 즉 한 칸을 내려온다는 것을 의미한다.
– 함수의 마지막에는 세미콜론 ( ; ) 이 꼭 나와야 한다. 주의하자
24
숭실대학교 컴퓨터학부
프로그램 이해하기 (7, printf)
• 아래의 코드를 실행하면 무엇이 출력되겠는가?
#include <stdio.h>
int main(void)
{
printf(“from sea to “);
printf(“shining C”);
printf(“\n”);
return 0;
}
25
숭실대학교 컴퓨터학부
프로그램 이해하기 (8, printf)
• %s 를 사용하여 문자열 출력하기
#include <stdio.h>
int main(void)
{
printf(“ 최초에서 최고로~ 숭실대학교 \n“);
printf(“ 최초에서 최고로~ %s \n”, “숭실대학교” );
printf(“ %s %s\n”, “최초에서 최고로~”, “숭실대학교”)
return 0;
}
26
숭실대학교 컴퓨터학부
프로그램 이해하기 (9, 정수형 변수사용하기)
• 변수를 사용하기 ( 정수 )
#include <stdio.h>
main()
{
int age = 25;
printf(“ 안녕하세요. 제 이름은 김숭실입니다. \n “);
printf(“ 제 나이는 %d 입니다. ”, age);
}
27
숭실대학교 컴퓨터학부
프로그램 이해하기 (10, 변수 계산하기)
• 변수를 사용하기 ( 계산하기 )
#include <stdio.h>
main()
{
int a = 25;
int b = 2;
int c = a*b;
printf(“ %d 곱하기 %d는 %d 입니다. ”, a,b);
}
28
숭실대학교 컴퓨터학부
프로그램 이해하기 (11, 문자형 변수 사용하기)
• 변수를 사용하기 ( 문자 )
#include <stdio.h>
main()
{
char c1 = ‘A’;
printf(“ 안녕하세요. 제 이름은 김숭실입니다. \n “);
printf(“ 제가 좋아하는 알파벳은 %c 입니다. ”, c1);
}
29
숭실대학교 컴퓨터학부
프로그램 이해하기 (12, 실수형 변수 사용하기)
• 변수를 사용하기 ( 실수 )
#include <stdio.h>
main()
{
char c1 = ‘A’;
int
age = 25;
float height = 170.5;
printf(“ 안녕하세요. 제 이름은 김숭실입니다. \n “);
printf(“ 제 나이는 %d 입니다. ”, age);
printf(“ 제가 좋아하는 알파벳은 %c 입니다. ”, c1);
printf(“ 저의 키는 %f 입니다. “, height);
}
30
숭실대학교 컴퓨터학부
프로그램 이해하기 (13, scanf 함수)
• 사용자로 부터 입력받는 함수 (키보드) : 정수 입력
#include <stdio.h>
main()
{
int
age;
printf(“당신의 나이를 입력하세요 : “);
scanf(“%d”, &age);
}
printf(“ 당신은 %d 살 이군요 ”, age);
printf(“ 5년 후에는 %d살입니다. “, age+5);
31
숭실대학교 컴퓨터학부
프로그램 이해하기 (14, scanf 함수)
• 사용자로 부터 입력받는 함수 (키보드) : 문자입력
#include <stdio.h>
main()
{
char c1;
printf(“당신의 좋아하는 알파벳을 입력하세요 : “);
scanf(“%c”, &c1);
}
printf(“ 당신은 %c 를 좋아하는군요 ”, c1);
32
숭실대학교 컴퓨터학부
프로그램 이해하기 (15, scanf 함수)
• 사용자로 부터 입력받는 함수 (키보드) : 연속된 문자입력
– ABC 입력, A B C 입력
#include <stdio.h>
main()
{
char c1, c2, c3;
printf(“3개의 알파벳을 입력하세요 : “);
scanf(“%c%c%c”, &c1, &c2, &c3);
}
printf(“ 당신은 %c%c%c 를 좋아하는군요 ”,c1,c2,c3);
printf(“ 당신은 %3c%3c%3c 를 좋아하는군요 ”,c1,c2,c3);
33
숭실대학교 컴퓨터학부
프로그램 이해하기 (16, scanf 함수)
• 사용자로 부터 입력받는 함수 (키보드)
#include <stdio.h>
main()
{
float
height;
printf(“당신의 키를 입력하세요(센치) : “);
scanf(“%f”, &height);
}
printf(“ 당신의 키는 %f 센치 이군요 ”, height);
printf(“ 5센치더 자라면 %f 가 됩니다. “, height+5);
printf(“ 5센치더 자라면 %8.2f 가 됩니다. “, height+5);
34
숭실대학교 컴퓨터학부
프로그램 이해하기 (17, scanf 함수)
• 교재의 20 페이지 중간의 표를 참고하자.
•
•
•
•
•
c : 단일문자.
d : 십진 정수
f : 부동 소수점 숫자 (float)
lf : 부동 소수점 숫자 (double)
s : 문자열
35
숭실대학교 컴퓨터학부
1.5 Printf()와 Scanf()의 사용
• 20-21 페이지의 예제
#include <stdio.h>
int main(void)
{
char c1, c2, c3;
int i;
float x;
double y;
printf(“\n%s\n%s”, “input three characters”,
“an int, a float, and a double : “ );
scanf(“%c%c%c%d%f%lf”, &c1, &c2, &c3, &I, &x, &y);
printf(“\nHere is the data that you typed in:\n”);
printf(“%3c%3c%3c%5d%17e%17e\n\n”, c1, c2, c3, i, x, y);
}
return 0;
36
숭실대학교 컴퓨터학부
1.5 Printf()와 Scanf()의 사용
• 앞의 예제를 실행한 후 입력하기
– ABC 3 55 77.7
– A B C 3 55 77.7
37
숭실대학교 컴퓨터학부
참고
• 지금까지 배운 내용
–
–
–
–
–
–
–
왜 C언어인가?
Visual C++ 을 이용한 프로그램 개발 방법
1.1 1.2 간단한 C언어 프로그램 맛보기
1.3 변수, 수식, 배정 (int, float, char, = )
1.4 #define 과 #include
1.5 printf() 함수와 scanf()의 사용 방법
1.10 운영체제의 고찰 (UNIX에서의 C 프로그램 개발 방법)
• 1장 수업에서 제외한 내용
–
–
–
–
1.6의 예제 프로그램 (p.24-29)
1.7 함수
1.8 배열, 문자, 포인터
1.9 파일
38
숭실대학교 컴퓨터학부