28
처처처처 처처처 C 처처처처처 처 1 처 처처 처 3 처 처처 , 처처 , 처처처 처처

처음으로 배우는 C 프로그래밍

  • Upload
    avery

  • View
    57

  • Download
    0

Embed Size (px)

DESCRIPTION

처음으로 배우는 C 프로그래밍. 제1부 기초 제3장 치환, 주소, 대화식 입력. 치환. 치환 연산자 : variable = operand 오른쪽에 있는 피연산자의 값을 왼쪽에 있는 변수에 저장 오른쪽 피연산자는 상수나 변수, 도는 유효한 수식이 될 수 있음 모든 연산자 중에 우선순위가 가장 낮음 왼쪽에는 반드시 하나의 변수가 있어야 함. 25. sum = 25 sum 에 저장된 정수 25. sum. 25. Old value is overwritten. New value is stored. - PowerPoint PPT Presentation

Citation preview

Page 1: 처음으로 배우는  C  프로그래밍

처음으로 배우는 C 프로그래밍

제 1 부 기초

제 3 장 치환 , 주소 , 대화식 입력

Page 2: 처음으로 배우는  C  프로그래밍

C 처음으로 배우는 프로그래밍 1제 부

2

치환

• 치환 연산자 : variable = operand

• 오른쪽에 있는 피연산자의 값을 왼쪽에 있는 변수에 저장• 오른쪽 피연산자는 상수나 변수 , 도는 유효한 수식이 될 수 있음• 모든 연산자 중에 우선순위가 가장 낮음• 왼쪽에는 반드시 하나의 변수가 있어야 함

25sumsum = 25sum 에 저장된 정수 25

Old value is overwritten

New value is stored25 35

sum = sum + 10;

치환 연산자를 이용하여 sum 에 새로운 값을 저장

Page 3: 처음으로 배우는  C  프로그래밍

C 처음으로 배우는 프로그래밍 1제 부

3

치환

• 프로그램 3-1# include <stdio.h>

void main(void)

{

float length, width, area ;

length = 27.2 ;

width = 13.6 ;

area = length * width ;

printf (“The length of the rectangle is %f ”, length) ;

printf (“\n The width of the rectangle is %f “, width) ;

printf (“\n The area of the rectangle is %f ”, area) ;

}

Page 4: 처음으로 배우는  C  프로그래밍

C 처음으로 배우는 프로그래밍 1제 부

4

치환

• 프로그램 3-2#include <stdio.h>

void main(void)

{

int sum ;

sum = 25 ;

printf (“\nThe number stored in sum is %d.. “, sum) ;

sum = sum + 10 ;

printf (“\nThe number now stored in sum is %d. ”, sum) ;

}

Page 5: 처음으로 배우는  C  프로그래밍

C 처음으로 배우는 프로그래밍 1제 부

5

치환

• 치환 연산자의 양쪽에 같은 변수를 사용하는 치환문은 다음의 치환 연산자를 사용하여 재작성할 수 있음

• += -= *= /= %=

• 누적

Statement Value in sum

sum = 0 ; 0

sum = sum + 96 ; 96

sum = sum + 70 ; 166

sum = sum + 85 ; 251

sum = sum + 60 ; 311

Page 6: 처음으로 배우는  C  프로그래밍

C 처음으로 배우는 프로그래밍 1제 부

6

치환

• 프로그램 3-3#include <stdio.h>void main(void){

int sum ;sum = 0 ;printf (“\nThe valuse of sum is initially set to %d. ”, sum) ;sum = sum + 96 ;printf (“ \n sum is now %d. ”, sum) ;sum = sum + 70 ;printf (“ \n sum is now %d. ”, sum) ;sum = sum + 85 ;printf (“ \n sum is now %d. ”, sum) ;sum = sum + 60 ;printf (“ \n The final sum is %d. “,sum) ;

}

Page 7: 처음으로 배우는  C  프로그래밍

C 처음으로 배우는 프로그래밍 1제 부

7

치환

• 전위 증가 연산자– k = ++n; n = n + 1; k = n

• 후위 증가 연산자– k = n++; k = n; n = n + 1;

Expression Alternative

i = i + 1 ++i

n = n + 1 ++n count = count + 1 ++count

Expression Alternative

i = i - 1 --i

n = n - 1 --n

count = count - 1 --count

Page 8: 처음으로 배우는  C  프로그래밍

C 처음으로 배우는 프로그래밍 1제 부

8

치환

• 프로그램 3-4#include <stdio.h>void main(void){

int count ;

count = 0 ;printf (“\n The initial value of count is %d. ” , count) ;++count ;printf (\n count is now %d. ” , count) ;++count ;printf (\n count is now %d. ” , count) ;++count ;printf (\n count is now %d. ” , count) ;++count ;printf (\n count is now %d. ” , count) ;

}

Page 9: 처음으로 배우는  C  프로그래밍

C 처음으로 배우는 프로그래밍 1제 부

9

주소

• 변수에 저장된 값은 변수의 내용이라고 하며 , 변수를 위해 사용된 메모리의 첫 번째 주소를 그 변수의 주소라고 함

• 전형적인 변수

Variable ContentsVariable Address

One or More Bytes in Memory(depends on data type)

Page 10: 처음으로 배우는  C  프로그래밍

C 처음으로 배우는 프로그래밍 1제 부

10

주소

• 프로그램 3-5#include <stdio.h>

main()

{

int num ;

num = 22 ;

printf (“The value stored in num is %d. ” , num) ;

printf (“ \nThe computer uses %d bytes to stored this value”, sizeof(int)) ;

}

Page 11: 처음으로 배우는  C  프로그래밍

C 처음으로 배우는 프로그래밍 1제 부

11

주소

• 메모리의 한 부분

• 프로그램 3-6#include <stdio.h>

void main(void)

{

int num;

num = 22;

printf (“num = %d The address of num is %p. ”, num, &num);

}

2 Bytes of Memory

22

Contents of numAddress of FirstByte Used by num

xxxx

Page 12: 처음으로 배우는  C  프로그래밍

C 처음으로 배우는 프로그래밍 1제 부

12

주소

• 변수 num 의 완전한 표현

2 Bytes of Memory

22

Contents of numaddress of rirstbyte used by num

FFE0

Page 13: 처음으로 배우는  C  프로그래밍

C 처음으로 배우는 프로그래밍 1제 부

13

주소

• 선언된 변수의 주소를 저장하는 방법num_addr = &num;

• num 의 주소를 num_addr 에 저장

• 주소 저장

Variable Contents

Num_addr Address of num

Variable

d

tab_point

chr_point

Contents

Address of m

Address of list

Address of ch

Page 14: 처음으로 배우는  C  프로그래밍

C 처음으로 배우는 프로그래밍 1제 부

14

주소

• 저장된 주소의 사용방법 – 포인터 앞에 * 기호가 사용되면 , 주소가 그 포인터에 저장되어 있는

변수를 의미

*num_addr

FFAA

qqqq FFAA

The Contents of y is an Address

A Pointer Variable y :

The Contents of Address FFAA

is qqqq

Page 15: 처음으로 배우는  C  프로그래밍

C 처음으로 배우는 프로그래밍 1제 부

15

주소

• 포인터의 선언– int *num_addr;

• 포인터를 사용한 서로 다른 데이터 형의 주소 지정

A Pointer to a

Character

A Pointer to an

Integer

A Pointer to a Floating

Point Number

An Address

An Address

An Address

One Byte is Retrieved

Two Bytes are Retrieved

Four Bytes are Retrieved

Page 16: 처음으로 배우는  C  프로그래밍

C 처음으로 배우는 프로그래밍 1제 부

16

주소

• 프로그램 3-7#include <stdio.h>void main(void){

int *num_addr; /* declare a pointer to an int */int miles, dist; /* declare two integer variables */

dist = 158; /* store the number 158 into dist */miles = 22; /* store the number 22 into miles */num_addr = &miles; /* store the ‘address of miles’ in num_addr */printf (“The address stored in num_addr is %p\n”, num_addr);printf (“The value pointed to by num_addr is %d\n\n”, *num_addr);

num_addr = &dist; /* now store the address of dist in num_addr */printf (“The address now stored in num_addr is %p\n”, num_addr);printf (“The value now pointed to by num_addr is %d\n”, *num_addr);

}

Page 17: 처음으로 배우는  C  프로그래밍

C 처음으로 배우는 프로그래밍 1제 부

17

scanf() 함수

• 프로그램 3-8#include <stdio.h>void main(void){

float num1, num2, product ;num1 = 300.0 ;num2 = .05 ;product = num1 * num2 ;printf (“%f times %f is %f ”, num1, num2, product) ;

}

• 프로그램 3-9#include <stdio.h>void main(void){

printf (“%f times %f is %f ”, 300.0, .05, 300.0 * .05) ;}

Page 18: 처음으로 배우는  C  프로그래밍

C 처음으로 배우는 프로그래밍 1제 부

18

scanf() 함수

• scanf() 와 printf() 함수

Keyboard

Screen

#include <stdio.h>

void main(void)

{

scanf ( )

printf ( )

}

Page 19: 처음으로 배우는  C  프로그래밍

C 처음으로 배우는 프로그래밍 1제 부

19

scanf() 함수

• 프로그램 3-10#include <stdio.h>

void main(void)

{

float num1, numm2, product ;

printf (“Please type in a number: ”) ;

scanf (“%f”, &num1) ;

printf (“Please type in another number: ”) ;

scanf (“%f”, &num2) ;

product = num1 * num2 ;

printf (“ %f times %f is %f ”, num1, num2, product);

}

Page 20: 처음으로 배우는  C  프로그래밍

C 처음으로 배우는 프로그래밍 1제 부

20

버퍼 입력을 갖는 scanf()

• 프로그램 3-11#include <stdio.h>

void main(void)

{

char fkey ;

printf (“type in a character: ”) ;

scanf (“ %c”, &fkey) ;

printf (“the keystrocke just accepted is %d ”, fkey) ;

}

Page 21: 처음으로 배우는  C  프로그래밍

C 처음으로 배우는 프로그래밍 1제 부

21

버퍼 입력을 갖는 scanf()

• 프로그램 3-12#include <stdio.h>

void main(void)

{

char fkey, skey ;

printf (“Type in a character : ”) ;

scanf (“%c”, &fkey) ;

printf (The keystroke just accepted is %d ”, fkey) ;

printf (“\nType in another character: ”) ;

scanf (“%c”, &skey) ;

printf (The keystroke just accepted is %d ”, skey) ;

}

Page 22: 처음으로 배우는  C  프로그래밍

C 처음으로 배우는 프로그래밍 1제 부

22

버퍼 입력을 갖는 scanf()

• 입력된 키보드 문자는 우선 버퍼에 저장됨

H e l l o \n

Keyboard

Each Character is Sent to a Buffer As It is Typed

Page 23: 처음으로 배우는  C  프로그래밍

C 처음으로 배우는 프로그래밍 1제 부

23

버퍼 입력을 갖는 scanf()

• 프로그램 3-13

#include <stdio.h>

void main(void)

{

char fkey, skey ;

printf (“Type in a character: ”) ;

scanf (“ %c %c”, &fkey, &skey) ; /* the enter code goes to skey */

printf (“the keystrocke just accepted is %d ”, fkey) ;

printf (“\nType in another character: ”) ;

scanf (“%c”, &skey) ; /* accept another code */

printf (The keystroke just accepted is %d ”, skey) ;

}

Page 24: 처음으로 배우는  C  프로그래밍

C 처음으로 배우는 프로그래밍 1제 부

24

기호 상수

• 리터럴 : 프로그램 내에서 그 값이 명확히 구별되는 데이터2 3.14

• #define– 숫자를 기호명으로 정의– #define SAESTEX 0.05

– #define PI 3.141592

Page 25: 처음으로 배우는  C  프로그래밍

C 처음으로 배우는 프로그래밍 1제 부

25

기호 상수

• 프로그램 3-14#define SALESTAX 0.05

#include <stdio.h>

void main(void)

{

float amount, taxes, total;

printf (“\nEnter the amount purchased: ”) ;

scanf (“ %f”, &amount) ;

taxes = SALESTAX * amount ;

total = amount + taxes ;

printf (“The sales tax is $%4.2f ”, taxes) ;

printf (\nThe total bill is $%5.2f ”, total) ;

}

Page 26: 처음으로 배우는  C  프로그래밍

C 처음으로 배우는 프로그래밍 1제 부

26

기호 상수

• 프로그램 3-15#define SALESTAX 0.05#define BEGIN {#define END }

#include <stdio.h>void main(void)BEGIN

float amount, taxes, total;

printf (“\nEnter the amount purchased: ”) ;scanf (“ %f”, &amount) ;taxes = SALESTAX * amount ;total = amount + taxes ;printf (“The sales tax is $%4.2f ”, taxes) ;printf (\nThe total bill is $%5.2f ”, total) ;

END

Page 27: 처음으로 배우는  C  프로그래밍

C 처음으로 배우는 프로그래밍 1제 부

27

일반적인 프로그래밍 오류

• 모든 변수는 식에서 사용되기 전에 초기화 값을 대입해야 함• 증가 또는 감소 연산자를 식에서 사용할 경우 주의해야 함• 포인터로 선언되지 않은 변수에 주소를 저장해서는 안됨• scanf() 함수에는 주소를 넘져주어야 함• scanf() 함수의 제어 문자열에는 메시지가 포함되지 않음• scanf() 함수 호출시 입력될 데이터 값에 따라 정확한 제어문자를

포함해야 함• scanf() 함수에 넘겨지는 제어 문자열을 이중따옴표로 닫아야 하며 ,

모든 인자는 쉼표로 구분해야 함• #define 문은 세미콜론으로 끝나지 않음• 동일한 문장에서 한 번 이상 나타나는 변수에 증가 , 감소 연산자를

사용하면 안됨

Page 28: 처음으로 배우는  C  프로그래밍

C 처음으로 배우는 프로그래밍 1제 부

28

요약

• 치환연산자• 주소의 저장과 주소를 저장할 수 있는 변수의 선언• 포인터의 활용• scanf() 함수• 기호상수 ( 리터럴 )