슬라이드 1

Similar documents
Microsoft PowerPoint - chap02-C프로그램시작하기.pptx

OCW_C언어 기초

OCW_C언어 기초

C 프로그램의 기본

PowerPoint Presentation

untitled

Microsoft PowerPoint - ch07 - 포인터 pm0415

금오공대 컴퓨터공학전공 강의자료

Microsoft PowerPoint - [2009] 02.pptx

C++-¿Ïº®Çؼ³10Àå

<4D F736F F F696E74202D20C1A633C0E52043C7C1B7CEB1D7B7A5B1B8BCBABFE4BCD2>

untitled

Microsoft PowerPoint - chap12-고급기능.pptx

Microsoft PowerPoint - chap-03.pptx

Microsoft PowerPoint - chap01-C언어개요.pptx

Microsoft PowerPoint - chap06-2pointer.ppt

PowerPoint Presentation

< E20C6DFBFFEBEEE20C0DBBCBAC0BB20C0A7C7D12043BEF0BEEE20492E707074>

untitled

Microsoft PowerPoint - Lesson2.pptx


쉽게 풀어쓴 C 프로그래밍

<4D F736F F F696E74202D20C1A632C0E520C7C1B7CEB1D7B7A5B0B3B9DFB0FAC1A4>

본 강의에 들어가기 전

untitled

중간고사

C 프로그래밊 개요

Microsoft PowerPoint - 08-C-App-19-Quick-Preprocessor

PowerPoint 프레젠테이션

K&R2 Reference Manual 번역본

Microsoft PowerPoint - additional01.ppt [호환 모드]

프로그래밍개론및실습 2015 년 2 학기프로그래밍개론및실습과목으로본내용은강의교재인생능출판사, 두근두근 C 언어수업, 천인국지음을발췌수정하였음

PowerPoint 프레젠테이션

Microsoft PowerPoint - chap03-변수와데이터형.pptx

C 언어 프로그래밊 과제 풀이

프로그램의실행화면 주석 (comment) 두수의합 : 300 /* 두개의숫자의합을계산하는프로그램 */ 주석은코드를설명하는글입니다. 주석 3 가지방법의주석 주석의예 /* 한줄로된주석 */ /* 저자 : 홍길동날짜 : 2013.

Microsoft PowerPoint - chap04-연산자.pptx

슬라이드 1

<4D F736F F F696E74202D20B8AEB4AABDBA20BFC0B7F920C3B3B8AEC7CFB1E22E BC8A3C8AF20B8F0B5E55D>

Microsoft PowerPoint - 2주차-1차시 (강의자료) ch01 - C Programming 기초 (part 2)

Microsoft PowerPoint - C프로그래밍-chap03.ppt [호환 모드]

C 언어와 프로그래밍 개요

[ 마이크로프로세서 1] 2 주차 3 차시. 포인터와구조체 2 주차 3 차시포인터와구조체 학습목표 1. C 언어에서가장어려운포인터와구조체를설명할수있다. 2. Call By Value 와 Call By Reference 를구분할수있다. 학습내용 1 : 함수 (Functi

3. 1 포인터란 3. 2 포인터변수의선언과사용 3. 3 다차원포인터변수의선언과사용 3. 4 주소의가감산 3. 5 함수포인터

윤성우의 열혈 TCP/IP 소켓 프로그래밍

Microsoft PowerPoint - Perpect C 02.ppt [호환 모드]

Microsoft PowerPoint - 08_(C_Programming)_(Korean)_Preprocessing

歯9장.PDF

11장 포인터

02장.배열과 클래스

슬라이드 1

Microsoft PowerPoint - CP_02_Convert_To_C_02_Step.pptx

int main(void) int a; int b; a=3; b=a+5; printf("a : %d \n", a); printf("b : %d \n", b); a b 3 a a+5 b &a(12ff60) &b(12ff54) 3 a 8 b printf(" a : %x \

<322EBCF8C8AF28BFACBDC0B9AEC1A6292E687770>

목차 포인터의개요 배열과포인터 포인터의구조 실무응용예제 C 2

금오공대 컴퓨터공학전공 강의자료

비트와바이트 비트와바이트 비트 (Bit) : 2진수값하나 (0 또는 1) 를저장할수있는최소메모리공간 1비트 2비트 3비트... n비트 2^1 = 2개 2^2 = 4개 2^3 = 8개... 2^n 개 1 바이트는 8 비트 2 2

Microsoft PowerPoint - ch 전처리기, 다중 소스파일 pm1015

C++ Programming

PowerPoint 프레젠테이션

1 장 C 언어복습 표준입출력배열포인터배열과포인터함수 const와포인터구조체컴파일러사용방법 C++ 프로그래밍입문

PowerPoint 프레젠테이션

Microsoft PowerPoint - chap13-입출력라이브러리.pptx

11장 포인터

컴파일러

슬라이드 1

1.2 자료형 (data type) 프로그램에서다루는값의형태로변수나함수를정의할때주로사용하며, 컴퓨터는선언된 자료형만큼의메모리를확보하여프로그래머에게제공한다 정수 (integer) 1) int(4 bytes) 연산범위 : (-2 31 ) ~ (2 31 /2)-

A Dynamic Grid Services Deployment Mechanism for On-Demand Resource Provisioning

Microsoft PowerPoint - 03_(C_Programming)_(Korean)_Pointers

Microsoft PowerPoint - 1장 C 프로그래밍 시작하기 pptx

Microsoft PowerPoint - chap4_2013 [호환 모드]

Microsoft PowerPoint - chap08-1 [호환 모드]

13 주차문자열의표현과입출력

Microsoft PowerPoint - 제11장 포인터

1. 표준입출력 C++ : C의모든라이브러리를포함 printf, scanf 함수사용가능예 : int, double, 문자열값을입력받고출력하기 #include <cstdio> int ivar; double dvar; char str[20]; printf("int, dou

Microsoft PowerPoint - Chapter 1-rev

Microsoft PowerPoint - chap06-4 [호환 모드]

목차 배열의개요 배열사용하기 다차원배열 배열을이용한문자열다루기 실무응용예제 C 2

PowerPoint 프레젠테이션

Microsoft PowerPoint - chap11-포인터의활용.pptx

본 강의에 들어가기 전

<4D F736F F F696E74202D20C1A632B0AD20BAAFBCF6BFCD20C0DAB7E12C20C0FCC3B3B8AEBFCD20C0D4C3E2B7C2>

PowerPoint Presentation

Microsoft PowerPoint - chap06-1Array.ppt

PowerPoint Presentation

Microsoft PowerPoint - chap10-함수의활용.pptx

PowerPoint 프레젠테이션

슬라이드 1

PowerPoint Template

KNK_C_05_Pointers_Arrays_structures_summary_v02

Microsoft PowerPoint - ch01.ppt

Chapter_06

Microsoft PowerPoint - chap06-5 [호환 모드]

Microsoft PowerPoint - chap11.ppt [호환 모드]


<4D F736F F F696E74202D204C BAB8C3E6BCB3B8ED202D20C7C1B7CEB1D7B7A1B9D6C0DBBCBAB0FAC1A42C C F>

학습목차 2.1 다차원배열이란 차원배열의주소와값의참조

금오공대 컴퓨터공학전공 강의자료

ABC 2장

Microsoft PowerPoint - chap05-제어문.pptx

Transcription:

5. 표준입력 : scanf

scanf 의기본사용법 키보드로값을입력받아지정한변수에저장함 scanf( %d, &i ); 키보드로정수를입력받아, i 변수에저장함 scanf( %d %d, &i, &j ); 키보드로정수두개를입력받아, 각각 i, j 변수에저장함 scanf( %d %f, &i, &f ); 키보드로정수와실수를각각입력받아, 정수형변수 i, 실수형변수 f 에저장함 변수앞에 & 를붙이는것이중요하다. 강 C 프로그래밍 2

scanf 의서식문자 서식문자 입력형태 중요도 ( 빈도 ) %d int형정수 상 %u 부호없는정수 중 %o 8진수 하 %x 16진수 중 %f float형실수 상 %e, %E 지수형태로표시되는실수 중 %g, %G %f와 %e 중간단한쪽 하 %c 문자 (ASCII Code의문자 ) 상 %s 문자열 ( 연속된문자 ) 상 %p 포인터주소값 하 서식문자와변수의자료형이일치해야한다. 강 C 프로그래밍 3

scanf 의특성 원하는형태의자료가입력될때까지기다린다. scanf( %d %f %d, &kor, &ave, &mat); 는세개의변수가입력될때까지기다린다. 잘못된데이터가들어와도별도의처리를하지않는다. 엔터키, 공백문자는모두생략한다. 잘못된서식문자, 변수의개수, 변수의자료형의오류는컴파일시지적하지않는다. 서식과변수의자료형이맞지않으면엉뚱한값이들어가거나입력이무시된다. 강 C 프로그래밍 4

scanf 의특성 (1) // 잘못된서식문자 int i; float f; scanf( %f %f, &i, &f ); printf( %d %f\n, i, f ); (2) // 문자와숫자의이해 %c 와 %d 의이해 char c; scanf( %d, &c ); printf( %d, c); 강 C 프로그래밍 5

scanf_s error C4996: 'scanf': This function or variable may be unsafe. Consider using scanf_s instead. scanf 함수의보안상문제때문에가능하면 scanf_s를쓰라는 Visual Studio의권고 (VS 2013 이후부터 ) scanf_s 를쓰거나, ( 하지만, 호환성을해친다. 반대한다.) 프로그램첫줄에 #define _CRT_SECURE_NO_WARNINGS 를입력 강 C 프로그래밍 6

scanf 의단점 사용자가지정한양식에맞추어입력해야한다. 잘못된입력을판단하지못한다. 입력이란숫자, 문자와같이단순한형태가아닐때가많다. scanf는사용자의입력을기다린다. 그시간은아무것도하지않는다. 고급입력방식이필요하다. 강 C 프로그래밍 7

4.4 Visual Studio 의디버깅

개발과정에서의디버깅이란 디버깅 (debugging) 원하는결과가나오지않으면원인을찾아야한다. 프로그램의실행은빠르게지나가지만, 개발자는실행단계를순차적으로생각해야한다. 개발자가원인을찾을수있도록실행속도와단위를조절하고, 각단계에서변수의값을추적할수있어야한다. 개발자는변수의값을보고전체적인흐름을확인하고문제점을찾아간다. 강 C 프로그래밍 9

디버깅도구 한단계씩실행하기 (F10/F11) 소스코드를기준으로한행씩실행한다. 각행을실행한후의결과를확인할수있다. 한단계씩실행하더라도실행순서와결과는동일하다. 대부분의개발도구에기능이포함되어있다. 변수확인하기 실행중간단계에서변수의값을볼수있다. 개발자가예상한결과와동일한변수값인지를확인하여문제의위치를발견한다. 강 C 프로그래밍 10

디버깅방법 값입력후 i 값이제대로들어가지않은것으로보아 scanf 의양식을잘못사용한것같다. 강 C 프로그래밍 11

디버깅방법 - 조사식 원하는수식을넣어값을확인할수있다. 강 C 프로그래밍 12

4.5 쉽게이해하는코드만들 기

좋은소스코드 이해하기쉬운코드가좋은소스코드이다. 어떻게더이해하기쉬운코드로만들수있는지고민해야한다. 주석, 들여쓰기, 공백넣기등을이용하여보기좋게만들어야한다. 소스코드는나만보는것이아니라, 많은사람들이볼수있다. 강 C 프로그래밍 14

주석 프로그램을쉽게이해할수있도록붙이는설명컴파일시에는모두제거되며, 프로그램에영향을주지않음 age = age + 1; /* 나이를한살추가함 */ 주석시작 주석끝 주석시작 (/*) 과끝 (*/) 은쌍으로이루어져있어야한다. // 을사용할수도있다. (C99) age = age + 1; 주석시작 // 나이를한살추가 행의끝이주석끝 강 C 프로그래밍 15

주석의예 i = i + 1 ; /* 이부분은나이를하나증가시키는것인데 이문장을넣은이유는, 12 개월이지나서나이를증가해야하는데 직접 i 변수를증가시키는것이가장간단하기때문이다 */ /***************************************** * Copyright 2015, Kim * * 지금까지며칠이지났는지카운트하는프로그램 * * 2015년 9월 1일첫번째과제 * *****************************************/ /* 여기부터주석이다. 여기에설명을한다. 마지막설명이다. */ 강 C 프로그래밍 16

주석의활용 변수의선언시, 용도나목적을미리설명함수선언시, 함수의기능과사용법설명 C 문장에대하여목적을설명 모든문장에다붙일필요는없다. 붙여야할문장에만붙인다. 알고리즘 ( 방법 ) 을말로설명변수의예측되는값을기록 ( 디버깅시 ) 강 C 프로그래밍 17

들여쓰기 int main (void) { 안쪽으로넣어서 main 의영역을쉽게구분할수있다. int i; i = 0; printf( %d\n, i ); } C 프로그램은 { } 로구분된블록단위로구성되어다단계 의들여쓰기를해야한다. ( 조건문참고 ) 강 C 프로그래밍 18

공백추가 공백문자의추가 i=i+1; 보다 i = i + 1; 이눈에잘들어온다. 적절히넣어주는공백은프로그램의가독성 (readability) 을향상시 킨다. 문자와기호사이에공백을넣어서문자의내용을강조한다. 빈행추가 동일한단위목적을위한코드는모아놓고 scanf ( %d %d %d, &kor, &eng, &mat ); 다른목적을위한코드사이에는빈행을추가한다. 분을뗀다. total = kor + eng + mat; average = total / 3 ; 분을뗀다 printf ( total %d average %d\n ); // 입력부분과계산부 // 계산부분과출력부 강 C 프로그래밍 19

4.6 전처리기

전처리기 (preprocessor) 본처리 ( 컴파일 ) 전에소스코드에필요한처리를진행 소스코드에지정된규칙을적용함 효율적인컴파일, 소스코드관리, 가독성향상, 컴파일러에지시 강 C 프로그래밍 21

전처리기 전처리지시자 # # 으로시작하는문장은전처리기가해야할일이다. 전처리기가작업진행후에는모두제거된상태에서컴파일이진행된다. 강 C 프로그래밍 22

#include 해당파일을로딩하여소스코드를대체 main.c #include <stdio.h> int main (void) { int value = 10; #include source2.c return 0; } 1 2 3 4 5 6 7 1 2 3 4 5 6 7 stdio.h source2.c 작은크기의파일이사용하기더편하다. 강 C 프로그래밍 23

stdio.h stdio.h 는 C 에서기본제공되는시스템헤더파일 표준입출력에필요한정의, 선언이포함됨 표준입출력기능을사용하려면이파일이꼭필요 시스템헤더파일 개발자가꼭필요한기능들을편리하게사용할수있도록필수 기능별로모아놓은헤더파일 string.h( 문자열처리 ), math.h( 수학함수 ), stdlib.h( 유용한기능 ) 등 필요하면몇개든불러와쓸수있다. 강 C 프로그래밍 24

#define 문자열을대체 #define RATE 0.03 int main(void) { float in, balance; } { } scanf("%f", &in); balance = in + in * RATE; // 합계 = 원금 + 원금 * 이율 printf("rate is %f, balance is %f\n", RATE, balance); float in, balance; 전처리기 scanf("%f", &in); balance = in + in * 0.03; // 합계 = 원금 + 원금 * 이율 printf("rate is %f, balance is %f\n", 0.03, balance); 강 C 프로그래밍 25

#define 의장점 이름상수와같이가독성향상 #define RATE 0.03 balance = in + in * RATE; // 합계 = 원금 + 원금 * 이율 프로그램입력이용이해짐 #define HELLOMSG Hello World. Nice to meet you. printf(hellomsg); 프로그램의융통성 #define TOTALMAN 300 // 270으로바꾸면전체프로그램이 270명에맞추어동작 totalave = totalscore / TOTALMAN; 강 C 프로그래밍 26

전처리기연산자의위치 #include <stdio.h> // 1 시스템헤더파일 #include user.h // 2 사용자헤더파일 #define RATE 0.03 int main(void) // 3 #define // 4 소스코드 { } 강 C 프로그래밍 27

그외의전처리지시자 #pragma 컴파일러에게알리기위한목적 #pragma warning (disable:4996) : scanf 관련경고를꺼라. #ifdef, ifndef, endif 조건에따른전처리 조건문에서다시다룬다 강 C 프로그래밍 28