최신 C 프로그래밍 언어 문제해결에서 프로그래밍까지

Download Report

Transcript 최신 C 프로그래밍 언어 문제해결에서 프로그래밍까지

최신 C 프로그래밍 언어
문제해결에서 프로그래밍까지
개정판
1장 : C 언어 개발 환경에 익숙해지자!
도서출판 - 인터비젼
1
1장 C 언어 개발 환경에 익숙해지자!

학습목표





1.
2.
3.
4.
5.
C언어의 기본구조를 이해한다.
기본 입출력 문을 이해한다.
프로그램 개발환경을 이해한다.
프로그램 디버깅과 에러의 종류에 대해 이해한다.
프로그램 개발 시 빈번히 사용되는 명령들을 정리한다.
최신 C 프로그래밍 언어 – 문제해결에서 프로그래밍까지
2
목차

1장 C 언어 개발 환경에 익숙해지자!
 예습시간
– C 언어 기본 구문 익히기
– C 언어 개발 환경 익히기
 실습시간
– 프로그램 디버깅 문제 다루기
– 구문 및 로직 에러 이해
 연습시간
– 구문 및 로직 에러 분석
최신 C 프로그래밍 언어 – 문제해결에서 프로그래밍까지
3
예습시간 – 1 교시
C언어의 기본문법과 입출력
최신 C 프로그래밍 언어 – 문제해결에서 프로그래밍까지
4
C언어의 기본문법과 입출력

학습 개요





C 프로그램 기본 구조를 익힌다.
프로그램 골격과 C언어 특징 이해
기본 함수의 이해 – main()
기본 프로그램에서 자주 사용되는 입출력 함수를 이해
입출력 함수에서 사용되는 문자들에 대해 이해
– 개행 문자
– 형식 지정 문자
최신 C 프로그래밍 언어 – 문제해결에서 프로그래밍까지
5
C언어의 기본문법과 입출력

C 프로그램의 기본 구조
 함수 기반의 언어로 최소한 1개 이상의 함수들로
구성된다.
 함수는 여러 개의 문장들로 구성된다.
 프로그램의 시작을 알리는 함수는 main() 함수라고 하고
하나의 프로그램은 단 하나의 main()함수를 가져야 한다.
 기본 형식 – 프로그램 구조
– #include <stdio.h> // 1) 선행 처리 지시자
– void main()
// 2) 프로그램 시작 함수
–{
// 3) 프로그램의 시작
» // contents
–}
// 4) 문장들
// 5) 프로그램의 종료
최신 C 프로그래밍 언어 – 문제해결에서 프로그래밍까지
6
C언어의 기본문법과 입출력

C 언어의 특징






1.
2.
3.
4.
5.
칼럼이나 행의 제약 없이 자유로운 코딩이 가능하다.
문장과 문장은 세미콜론(;)으로 구분한다.
main()
프로그램의 시작은 __________
함수를 통해 시작한다.
{ }은 함수의 범위를 나타낸다.
C언어는 함수 기반의 언어이다.
함수의 종류
 1) 사용자 정의 함수 (9장)
– 사용자에 의해 만들어 지는 함수
라이브러리 함수
 2)표준
_________________
– ANSI C 표준으로 모든 컴파일러에서 제공되는 기본 함수
최신 C 프로그래밍 언어 – 문제해결에서 프로그래밍까지
7
C언어의 기본문법과 입출력

함수의 구성 요소





1) 리턴 타입 : 함수 처리후 반환될 자료형
2) 함수 이름 : 함수의 이름
3) 파라메터 리스트 : 함수에 전달할 매개변수 리스트
4) 문장들 : 함수 안에서 처리되는 명령 단위
형식 [리턴타입] [함수이름]( [매개변수리스트] )
{
[문장들];
}
 예
int sum(int x, int y){
int result = x + y;
return result;
}
최신 C 프로그래밍 언어 – 문제해결에서 프로그래밍까지
8
C언어의 기본문법과 입출력

표준 라이브러리 함수 종류






입출력 함수
스트링 조작 함수
수학 계산 함수
날짜 및 시간 관련 함수
메모리 관리 함수 등등…
어떻게 프로그램에서 이 표준 라이브러리 함수를 사용할 수
있을까?




프로그램 코드에 사용될 라이브러리 함수 정보를 알려 준다.
방법  선행 처리 지시자(#include) 이용
사용되는 함수의 해더파일(*.h) 정보 알려 준다.
예> #include <stdio.h>
최신 C 프로그래밍 언어 – 문제해결에서 프로그래밍까지
9
C언어의 기본문법과 입출력

표준 라이브러리 함수 – 기본 입출력 함수
 printf() 출력 함수
 scanf() 입력 함수
 입출력 관련 함수 정보는 stdio.h 파일에서 제공된다.
 사용자의 프로그램에 입출력 함수 사용하고자 할 경우
이 헤더 파일을 프로그램의 시작부분에 다음과 같이
포함한다.
#include <stdio.h>
최신 C 프로그래밍 언어 – 문제해결에서 프로그래밍까지
10
C언어의 기본문법과 입출력

printf() 함수
 사용자가 표현하고자 하는 정보를 화면 상에 출력
 함수의 형식
출력함수 : printf( “문자열”, 인수1, 인수2, ...);
 문자열
– 일반 문자, 개행 문자 그리고 형식 지정 문자들로 구성
 인수
– 값을 포함하는 변수나 계산식으로 구성
최신 C 프로그래밍 언어 – 문제해결에서 프로그래밍까지
11
C언어의 기본문법과 입출력

개행 문자
 화면상의 제어를 위해 사용되는 문자들
개행 문자
설명
개행 문자
설명
\a
Bell
\t
HTAB
\b
Back space
\v
VTAB
\f
Form feed
\\
Back slash
\n
Line feed
\'
Apostrophe
\r
Carriage return
\"
Quote
\0
null
\N, \xN (N은 상수)Octal, Hex
최신 C 프로그래밍 언어 – 문제해결에서 프로그래밍까지
12
C언어의 기본문법과 입출력

형식지정 문자
 인수 값을 받아 출력시키는 위해 사용
 각각의 인수는 해당 형식 지정 문자에 순서대로 할당
최신 C 프로그래밍 언어 – 문제해결에서 프로그래밍까지
13
C언어의 기본문법과 입출력

printf() 함수 사용 예

printf("C Program \t is simple and good \n");
C Program
_


is simple and good
int a=3,b=5,c=6;
printf(" %d * %d + %d = %d \n",a,b,c,a*b+c);
3 * 5 + 6 = 90
_
최신 C 프로그래밍 언어 – 문제해결에서 프로그래밍까지
14
C언어의 기본문법과 입출력

scanf() 입력 함수
 키보드로부터 값을 입력 받는 함수
 함수의 형식
scanf( “형식지정문자”, &변수이름);
– 형식 지정 문자
» printf()함수에서 사용되는 동일한 형식 지정 문자
– 변수 이름
» 키보드로부터 입력 받은 값을 저장할 변수 이름
» 변수 이름 앞에 &(주소)를 포함하여 입력함수에 전달
최신 C 프로그래밍 언어 – 문제해결에서 프로그래밍까지
15
C언어의 기본문법과 입출력

scanf() 활용 예
 키보드로부터 하나의 정수 값 입력
– int input;
– scanf("%d",&input);
 키보드로부터 3개의 정수 값 입력
– int a,b,c;
– scanf("%d%d%d",&a,&b,&c);
– 입력된 순서대로 a,b,c값에 저장
 타입이 서로 다른 4개의 값을 입력
–
–
–
–
int a,b;
float c;
char d;
"%d%d%f%c",&a,&b,&c,&d
scanf(_____________________________);
최신 C 프로그래밍 언어 – 문제해결에서 프로그래밍까지
16
예습시간 – 2 교시
C언어 개발 환경 익히기
최신 C 프로그래밍 언어 – 문제해결에서 프로그래밍까지
17
C언어 개발 환경 익히기

학습개요




C언어 개발 환경의 이해
비주얼 C++ 통합 개발 환경 활용하기
프로그램 작성과 컴파일 그리고 실행 하기
자주 사용되는 명령어 정리하기
최신 C 프로그래밍 언어 – 문제해결에서 프로그래밍까지
18
C언어 개발 환경 익히기

프로그램 작성과 컴파일 그리고 실행
 컴퓨터 환경
– UNIX 계열
» C 프로그램에 대한 컴파일러 내장
» 편집기를 통해 코드 작성 후 명령라인에서 컴파일과 실행
– PC 계열
» 운영체제 자체에서 C언어의 컴파일러 제공하지 않음
» 사용하고자 하는 컴파일러 인스톨 후 사용
» 대표적 컴파일러 종류
 Turbo C/C++
 Borlad C/C++
 Microsoft Visual C++
» 이들 컴파일러는 프로그램 개발 환경을 포함하고 있기 때문에
프로그램 개발이 편리함
» 해당 통합 환경에 대한 코드 작성, 컴파일 그리고 실행 방법의 학습
필요
최신 C 프로그래밍 언어 – 문제해결에서 프로그래밍까지
19
C언어 개발 환경 익히기

비주얼 C++ 통합 개발 환경 활용하기
 프로젝트 단위의 관리방법 제공

프로그램 작성과 컴파일 그리고 실행 과정
 1 단계
– 통합 환경 실행
» [시작][모든 프로그램][MicrosoftVisual Studio 6.0][Microsoft
Visual C++ 6.0]
최신 C 프로그래밍 언어 – 문제해결에서 프로그래밍까지
20
C언어 개발 환경 익히기

2단계
 프로젝트 생성 [File][New]
최신 C 프로그래밍 언어 – 문제해결에서 프로그래밍까지
21
C언어 개발 환경 익히기

3 단계 – 프로젝트 설정
프로젝트 설정 Tab
프로젝트 이름
프로젝트
이름을 가진
폴더가
만들어 진다.
프로젝트 및
파일 생성 위치
프로젝트 타입 선택
콘솔기반 프로그램 작성
최신 C 프로그래밍 언어 – 문제해결에서 프로그래밍까지
22
C언어 개발 환경 익히기

4단계 – 프로그램 기본 골격 생성 및 프로젝트 생성 완료
 프로젝트 형식에 따른 기본 프로그램 생성을 도와줌
 빈 프로젝트로 설정 (An empty project)
최신 C 프로그래밍 언어 – 문제해결에서 프로그래밍까지
23
C언어 개발 환경 익히기

4 단계 (계속)
 생성된 파일 위치와 구조
 파일 생성 위치 : C:\PUBLICDATA\Lab1 폴더
 Lab1 프로젝트에 생성된 파일과 폴더
– Debug 폴더
» 컴파일 과정에서 생기는 임시 파일 및 최종 실행 파일 저장 위치
– Lab1.dsp
» 프로젝트 파일
– Lab1.dsw
» 프로젝트를 포함하는 작업공간 (하나 이상의 프로젝트 관리 가능)
» 프로젝트를 불러오기 위해 이 파일을 오픈 한다.
최신 C 프로그래밍 언어 – 문제해결에서 프로그래밍까지
24
C언어 개발 환경 익히기

5단계 – 코드(소스) 파일 생성
 [Project][Add to Project][New]
 코드 파일을 만들고 프로젝트에 추가
최신 C 프로그래밍 언어 – 문제해결에서 프로그래밍까지
25
C언어 개발 환경 익히기

6단계 – 코드(소스)파일 설정
 파일 유형 선택 및 파일 이름 할당
파일 선택 Tab
C++ Source File
타입 선택
파일 이름 지정 (예:MagicNumber.c)
※확장자를 .c로 지정
※새로운 파일 추가 시 5단계와 6단계 반복
최신 C 프로그래밍 언어 – 문제해결에서 프로그래밍까지
설정 후 OK 버튼 클릭
26
C언어 개발 환경 익히기

7단계 – 프로그램 작성
 다음과 같이 작성해 보자
 #include <stdio.h>
 void main(){
printf("Welcome to C World ! \n");
 }
최신 C 프로그래밍 언어 – 문제해결에서 프로그래밍까지
27
C언어 개발 환경 익히기

8단계 – 파일 저장
 [File]  [Save]
최신 C 프로그래밍 언어 – 문제해결에서 프로그래밍까지
28
C언어 개발 환경 익히기

9단계 – 컴파일 및 빌드(링크)
 C 프로그램은 실행 파일을 만들기 위해 컴파일과
빌드(링크) 과정인 두 단계를 거친다.
 컴파일 과정을 통해 .obj 파일이 만들어지고 링크
과정에서 필요한 라이브러리와 결합되어 .exe 형태의
실행 파일이 만들어진다. (Debug 폴더에 생성)
 비주얼 C++ 통합환경에서는 두 단계를 동시에 처리 가능
– 실행 명령 : [Build]  [Build Lab1.exe]
최신 C 프로그래밍 언어 – 문제해결에서 프로그래밍까지
29
C언어 개발 환경 익히기

10단계 – 컴파일 및 빌드(링크) 오류 확인
 프로그램 컴파일 및 빌드 관련 정보는 아래의 빌드 창에
제공
빌드 창
최신 C 프로그래밍 언어 – 문제해결에서 프로그래밍까지
30
C언어 개발 환경 익히기

11단계 – 프로그램 실행
 정상적으로 빌드가 완성될 경우 이 프로그램은 실행
가능하다.
 프로그램 실행 명령
– [Build][Execute Lab1.exe]
 실행 결과는 명령 프롬프트 창을 통해 확인
실행 결과
최신 C 프로그래밍 언어 – 문제해결에서 프로그래밍까지
31
C언어 개발 환경 익히기

C 프로그램 개발 통합 환경 정리
 프로그램 작성과정은 프로젝트 생성, 코드 작성, 컴파일
및 링크 그리고 실행 과정을 포함
 이들 명령어들과 친숙할 수 있도록 자주 사용해 볼 필요
존재
 단축키를 통해 보다 효율적은 프로그램 방법 제공
 자주 사용되는 명령과 메뉴 그리고 단축키 정리
– 비주얼 C++ 통합 개발 환경을 참조하여 18페이지의 활용
가이드를 완성해 보자…!
최신 C 프로그래밍 언어 – 문제해결에서 프로그래밍까지
32
실습시간 – 1 교시
프로그램 디버깅 문제 다루기
최신 C 프로그래밍 언어 – 문제해결에서 프로그래밍까지
33
프로그램 디버깅 문제 다루기

학습개요
 프로그래밍과정의 실수(Bugs) 분석하기
 통합개발환경의 디버깅 도구 이용하기
 프로그램 실행과정에서 변수의 변화된 값 추적
– 중단점 설정 방법
– 값 식별
최신 C 프로그래밍 언어 – 문제해결에서 프로그래밍까지
34
프로그램 디버깅 문제 다루기


C 프로그램 디버깅하기
문제
 19페이지의 프로그램을 MagicNumber.c 파일로
작성하고 아래의 실습 단계를 진행하여보자.

실습








1.
2.
3.
4.
5.
6.
7.
8.
14라인에 중단점 설정
디버그 모드로 실행
14라인의 num 변수 값 확인
한 스텝 증가 후 매직 숫자 입력
이후 저장된 num 값 확인
다음 라인(17)으로 진행 이때의 num값은?
다음 라인(18)으로 진행 이때의 num값은?
나머지 단계 진행
최신 C 프로그래밍 언어 – 문제해결에서 프로그래밍까지
35
프로그램 디버깅 문제 다루기

실습 계속
 9 설정된 중단점 해제
 10 16라인과 17라인을 하나의 문장으로 변경
– num = num / 3 – 8;
 11 수정된 프로그램 저장
 12 수정 후 컴파일, 링크 과정을 거친 후 실행
최신 C 프로그래밍 언어 – 문제해결에서 프로그래밍까지
36
프로그램 디버깅 문제 다루기

비주얼 C++ 통합 환경에서 디버깅 도구 사용

중단점 설정
 1. 먼저 중단할 위치로 커서를 옮김
 2. 오른쪽 마우스 클릭을 통해 팝업 메뉴 불러오기
 3. [Insert/Remove Breakpoint] 메뉴선택
중단점
설정 후
최신 C 프로그래밍 언어 – 문제해결에서 프로그래밍까지
37
프로그램 디버깅 문제 다루기

디버깅 모드로 실행
 [Build][Start Debug][Go] 메뉴 선택 (F5)
 시작된 프로그램은 설정된 처음 중단점에서 멈춘다.
최신 C 프로그래밍 언어 – 문제해결에서 프로그래밍까지
38
프로그램 디버깅 문제 다루기

디버깅 스텝 증가 방법
 멈춤 위치에서 다음 단계로 진행하는 방법
 디버깅 모드 실행 시 디버깅 관련 메뉴가 다음과 같이
나타남
 나타나지 않을 경우 23페이지 참조
 중단점 위치에서 다음단계 진행 방법
– 1) 은 한 스텝 증가 시키는데 그 문장이 함수를 호출할 경우 그
함수 내부로 진행. 그렇지 않을 경우 다음 라인으로 진행.
– 2) 한 스텝 증가 시키는데 함수에 상관없이 다음 라인으로 진행.
– 3) 해당 블록을 벗어남.
– 4) 커서가 위치한 곳까지 진행.
최신 C 프로그래밍 언어 – 문제해결에서 프로그래밍까지
39
프로그램 디버깅 문제 다루기

디버깅 과정에서 변수 값 확인
 현재 진행되는 시점에서 값의 내용 추적
 [Variables]나 [Watch]윈도우를 통해 확인
 [Variables]윈도우 활용
– 디버깅하는 현재 상황에 포함된 변수들의 값이 자동적으로
보여줌
– 디버깅 모드 동작 시 왼쪽 하단에 자동적으로 나타남
– 보이지 않을 경우 – [View][Debug
Windows][Variables]선택
최신 C 프로그래밍 언어 – 문제해결에서 프로그래밍까지
40
프로그램 디버깅 문제 다루기

디버깅 과정에서 변수 값 확인 (계속)
 [Watch]윈도우를 이용한 변수 값 확인
– 사용자가 보고자 하는 변수를 지정하여 확인 가능
– [Name]필드에 확인을 원하는 변수 이름 입력
– [Value]필드는 현재 시점에서의 변수 값 보여줌
– 보이지 않을 경우 – [View][Debug Windows][Watch]선택
최신 C 프로그래밍 언어 – 문제해결에서 프로그래밍까지
41
프로그램 디버깅 문제 다루기

디버깅 중단과 재실행
 디버깅 중단 및 재실행 명령  디버깅 메뉴를 통해
이루어짐
 디버깅의 재실행
– 처음부터 디버깅 과정 다시 수행
 디버깅 중단
– 더 이상 디버깅 과정이 필요하지 않을 경우
– 디버깅 작업 완료 시킴
최신 C 프로그래밍 언어 – 문제해결에서 프로그래밍까지
42
프로그램 디버깅 문제 다루기

중단점 해제
 설정된 중단점을 제거하고자 할 때
 해제 단계
– 1. 제거하고자 하는 중단점 위치로 커서를 이동시킨다.
– 2. 오른쪽 마우스 버튼 클릭하여 팝업 메뉴 얻기
– 3. [Remove Breakpoint] 메뉴 선택
최신 C 프로그래밍 언어 – 문제해결에서 프로그래밍까지
43
프로그램 디버깅 문제 다루기

디버깅 메뉴 정리
 프로그램 과정 중 디버깅 작업은 빈번하게 발생
 대형 프로젝트에서는 디버깅 도구가 필수적인 요소
 디버깅 도구에 관련된 메뉴 정리 중요
 디버깅 메뉴 정리하기
– 26페이지는 디버깅 관련 메뉴에 대한 표를 보여주고 있는 부족한
부분의 메뉴와 단축키를 통합 도구를 분석하여 작성해 보자... !
최신 C 프로그래밍 언어 – 문제해결에서 프로그래밍까지
44
실습시간 – 2 교시
구문 및 로직 에러 이해
최신 C 프로그래밍 언어 – 문제해결에서 프로그래밍까지
45
구문 및 로직 에러 이해

학습 개요
 프로그램 작성시 발생되는 구문 및 로직상의 에러를
식별한다.
 구문(Syntactic) 에러
– C의 문법에 적합하지 않게 작성된 에러
– 컴파일러에 의해 식별됨
 로직(Logic) 에러
– 구문상의 에러는 가지고 있지 않지만 원하는 결과를 이끌어 내지
못하는 에러
– 구문에러보다 분석이 어려움
최신 C 프로그래밍 언어 – 문제해결에서 프로그래밍까지
46
구문 및 로직 에러 이해

구문 및 로직 에러 문제

문제 – 보석 무게 변환 프로그램
 이 프로그램은 carot(캐럿)의 무게를 ounce(온스)로
변환하는 프로그램으로 구문 및 로직 상의 에러를 포함
 컴파일 과정을 통해 구문에러 수정
 디버깅 과정을 통해 로직 상의 에러 발견 및 수정

관련 수식
 1 carot = 200mg
 1 ounce = 28.35g

28페이지 문제 작성 후 각 단계 진행하고 결과 작성!
최신 C 프로그래밍 언어 – 문제해결에서 프로그래밍까지
47
구문 및 로직 에러 이해

문제에 대한 해답
 ①. Compiling...
– carot.c
– c:\sample\carot.c(15) : error C2065: 'millitWt' : undeclared identifier
– c:\sample\carot.c(15) : warning C4244: '=' : conversion from 'int ' to 'float
', possible loss of data
– c:\sample\carot.c(18) : warning C4244: '=' : conversion from 'double ' to
'float ', possible loss of data
– Error executing cl.exe.







②. 400.000000
③. 400000.000000
④. 14109.347443
⑤. 400.000000
⑥. 0.400000
⑦. 0.014109
구문 과 로직에러 설명 :
– 1) 구문에러
» 15라인의 gramWt = millitWt * 1000;에서 millitWt의 변수 이름이 잘못 작성 되어있다.
millitWt -->milliWt로 변환한다.
– 2) 로직에러
» 15라인은 밀리그램을 그램으로 변환하는 문제이다. 1 gram은 1000mg이므로 gramWt
= milliWt * 1000; 으로 작성된 이 식은 gramWt = milliWt / 1000로 변경해야 한다.
최신 C 프로그래밍 언어 – 문제해결에서 프로그래밍까지
48
C 언어 개발 환경에 익숙해지자!
The End.
최신 C 프로그래밍 언어 – 문제해결에서 프로그래밍까지
49