* 07/16/96 처음으로 배우는 C 프로그래밍 제1부 기초 제3장 치환, 주소, 대화식 입력 *

Slides:



Advertisements
Similar presentations
Chapter 12. 배열. 배열  동일한 항목들이 동일한 크기로 연속적으로 메모리에 저장되는 구조  동일한 자료 유형이 여러 개 필요한 경우에 이용할 수 있는 자료 구조.
Advertisements

6 장. printf 와 scanf 함수에 대한 고찰 printf 함수 이야기 printf 는 문자열을 출력하는 함수이다. – 예제 printf1.c 참조 printf 는 특수 문자 출력이 가능하다. 특수 문자의 미 \a 경고음 소리 발생 \b 백스페이스 (backspace)
1 08 배열. 한국대학교 객체지향연구소 2 C 로 배우는 프로그래밍 기초 2 nd Edition 배열  동일한 자료유형의 여러 변수를 일괄 선언  연속적인 항목들이 동일한 크기로 메모리에 저장되는 구조  동일한 자료 유형이 여러 개 필요한 경우에 이용할 수 있는.
1. 2 차원 배열  배열은 동일한 데이터 유형으로 여러 개의 변수를 사용할 경우 같은 이 름으로 지정하여 간편하게 사용할 수 있도록 하는 것으로서 앞에서 1 차원 배열을 공부하였습니다.  2 차원 배열은 바둑판을 생각하면 되며, 1 차원 배열에서 사용하는 첨자를 2.
제2장 C 언어의 확장 C++(1).
Part 03 상수, 변수, 자료형 ©우균, 창병모 © 우균, 창병모.
ㅎㅎ 구조체 구조체 사용하기 함수 매개변수로서의 구조체 구조체 포인터와 레퍼런스 구조체 배열.
ㅎㅎ 구조체 C++ 프로그래밍 기초 : 객체지향의 시작 구조체 사용하기 함수 매개변수로서의 구조체 구조체 포인터와 레퍼런스
쉽게 풀어쓴 C언어 Express 제11장 포인터 C Express Slide 1 (of 27)
쉽게 풀어쓴 C언어 Express 제11장 포인터 C Express.
2장. 프로그램의 기본 구성. 2장. 프로그램의 기본 구성 2-1"Hello, World!" 들여다 보기 /* Hello.c */ #include int main(void) { printf("Hello, World! \n"); return 0;
쉽게 풀어쓴 C언어 Express 제11장 포인터 C Express.
쉽게 풀어쓴 C언어 Express 제11장 포인터 C Express.
제 9 장 구조체와 공용체.
-Part2- 제3장 포인터란 무엇인가.
C 8장. 포인터 #include <stdio.h> int main(void) { int num;
자료 구조: Chapter 3 (2)구조체, 포인터
처음으로 배우는 C 프로그래밍 제2부 기초 제5장 반복문.
3장. 변수와 연산자. 3장. 변수와 연산자 3-1 연산자, 덧셈 연산자 연산자란 무엇인가? 연산을 요구할 때 사용되는 기호 ex : +, -, *, / 3-1 연산자, 덧셈 연산자 연산자란 무엇인가? 연산을 요구할 때 사용되는 기호 ex : +, -, *, /
개정판 누구나 즐기는 C언어 콘서트 제9장 포인터 출처: pixabay.
윤성우의 열혈 C 프로그래밍 윤성우 저 열혈강의 C 프로그래밍 개정판 Chapter 12. 포인터의 이해.
제 6장. 생성자와 소멸자 학기 프로그래밍언어및실습 (C++).
컴퓨터 프로그래밍 기초 - 2nd : scanf(), printf() 와 연산자 -
쉽게 풀어쓴 C언어 Express 제3장 C프로그램 구성요소 C Express.
C 프로그래밍.
11장. 포인터 01_ 포인터의 기본 02_ 포인터와 Const.
8장 함수 함수의 필요성 라이브러리 함수와 사용자 정의 함수 함수의 정의, 원형, 호출 배열을 함수 인자로 전달 재귀호출.
컴퓨터 프로그래밍 기초 #02 : printf(), scanf()
6주차: Functions in C and Others
2주차: 변수, 수식, Control Flow.
6장. printf와 scanf 함수에 대한 고찰
14장. 포인터와 함수에 대한 이해.
11장. 1차원 배열.
C 8장. 포인터 #include <stdio.h> int main(void) { int num;
처음으로 배우는 C 프로그래밍 제4부 복합 데이터 형 제 8 장 배열, 주소, 포인터.
C 2장. C 프로그램 시작하기 #include <stdio.h> int main(void) { int num;
C 4장. 연산자 #include <stdio.h> int main(void) { int num;
JA A V W. 03.
사용자 함수 사용하기 함수 함수 정의 프로그램에서 특정한 기능을 수행하도록 만든 하나의 단위 작업
어서와 C언어는 처음이지 제14장.
13. 포인터와 배열! 함께 이해하기 IT응용시스템공학과 김 형 진 교수.
3장 상수 변수 기본 자료형 키워드와 식별자 상수와 변수 기본 자료형 형변환 자료형의 재정의.
자전거를 배우려면 안장에 올라가 페달을 밟아라.
쉽게 풀어쓴 C언어 Express 제14장 포인터 활용 C Express Slide 1 (of 22)
C 3장. 변수와 데이터형 #include <stdio.h> int main(void) { int num;
19. 함수 포인터와 void 포인터.
3장. 변수와 연산자 교안 : 전자정보통신 홈페이지 / 커뮤니티/ 학술세미나
컴퓨터 프로그래밍 기초 - 4th : 수식과 연산자 -
연산자 (Operator).
컴퓨터 프로그래밍 기초 - 10th : 포인터 및 구조체 -
2장. 변수와 타입.
컴퓨터 프로그래밍 기초 - 5th : 조건문(if, else if, else, switch-case) -
처음으로 배우는 C 프로그래밍 제4부 복합 데이터 형 제 7 장 배열.
컴퓨터 프로그래밍 기초 - 8th : 함수와 변수 / 배열 -
8주차: Strings, Arrays and Pointers
5장 선택제어문 if 선택문 switch-case 선택문 다양한 프로그램 작성 조건 연산자.
Chapter 08. 함수.
Fucntion 요약.
쉽게 풀어쓴 C언어 Express 제3장 C프로그램 구성요소 C Express Slide 1 (of 25)
4장. 데이터 표현 방식의 이해. 4장. 데이터 표현 방식의 이해 4-1 컴퓨터의 데이터 표현 진법에 대한 이해 n 진수 표현 방식 : n개의 문자를 이용해서 데이터를 표현 그림 4-1.
컴퓨터 프로그래밍 기초 - 9th : 배열 / 포인터 -
Summary of Pointers and Arrays
Numerical Analysis Programming using NRs
실습과제 (변수와 자료형, ) 1. 다음 작업 (가), (나), (다)를 수행하는 프로그램 작성
어서와 C언어는 처음이지 제16장.
제 29 강 스트링(string) 다루기 s a i s . s T i h t g r i n.
어서와 C언어는 처음이지 제21장.
13. 포인터와 배열! 함께 이해하기.
Pointers summary.
2019 2학기 9장 배열과 포인터 1. 주소, 주소연산자(&) 2. 포인터, 역참조연산자(*) 3. 배열과 포인터.
Presentation transcript:

* 07/16/96 처음으로 배우는 C 프로그래밍 제1부 기초 제3장 치환, 주소, 대화식 입력 *

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

치환 ( 1 ) 치환 연산자 : = 오른쪽 피연산자는 상수나 변수, 또는 유효한 수식이 될 수 있음 * 07/16/96 치환 ( 1 ) 치환 연산자 : = variable = operand; 오른쪽 피연산자는 상수나 변수, 또는 유효한 수식이 될 수 있음 오른쪽에 있는 피연산자의 값을 왼쪽에 있는 변수에 저장 예) year = 1988; total = total + newvalue; rate = prime; 모든 연산자 중에 우선순위가 가장 낮음 ( 부록 A, 표 A-1 ) 왼쪽에는 반드시 하나의 변수가 있어야 함 amount + 1892 = 1000 + 10 * 5; /* 에러 */ *

치환 ( 2 ) 동일한 수식에서 여러 개의 치환도 가능 a=b=c=25 ; /* 이때 계산 순서는 아래와 같음 */ c = 25; b = c; a = b; a = ( b = ( c = 25 ) ); a = 25; b = 25; c = 25;

치환 ( 3 ) 프로그램 3-1 # include <stdio.h> void main(void) { * 07/16/96 치환 ( 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) ; } *

치환 연산자 ( 1 ) 등호 왼쪽의 변수가 오른쪽에서 먼저 사용될 수 있음 프로그램 3-2 sum = sum + 10 ; #include <stdio.h> void main(void) { int sum ; sum = 25 ; printf (“\nThe number stored in sum is %d.. ”, sum) ; printf (“\nThe number now stored in sum is %d. ”, sum) ; } 35로 덮어 씌워짐 25 sum = sum + 10 35 sum sum

치환 연산자 ( 2 ) 치환 연산자의 양쪽에 같은 변수를 사용하는 치환문의 경우 다른 치환 연산자를 사용하여 재 작성 가능 * 07/16/96 치환 연산자 ( 2 ) 치환 연산자의 양쪽에 같은 변수를 사용하는 치환문의 경우 다른 치환 연산자를 사용하여 재 작성 가능 += -= *= /= %= 예) sum = sum + 25;  sum += 25; sum *= 10;  sum = sum * 10 sum /= 10;  sum = sum / 10; price *= rate;  price = prince * rate ; *

누적(accumulating ) ( 1 ) Statement Value in sum sum = 0 ; 0 값을 계속해서 누적하는 방법 Statement Value in sum sum = 0 ; 0 sum = sum + 96 ; 96 sum = sum + 70 ; 166 sum = sum + 85 ; 251 sum = sum + 60 ; 311

누적 ( 2 ) 프로그램 3-3 #include <stdio.h> void main() { int sum; * 07/16/96 누적 ( 2 ) 프로그램 3-3 #include <stdio.h> void main() { int sum; sum = 0; printf ( “\nSum 은 %d 로 초기화 됨”, sum); sum = sum + 10; printf ( “\nSum 은 %d 로 변경됨”, sum); sum = sum + 20; printf ( “\nSum 의 최종 값은 %d”, sum); } *

증감 연산자 ( 1 ) 누적문과 유사 변수 = 변수 + 고정 값(1); 변수가 1씩 증/감 되는 경우를 위해 단항 연산자 제공 * 07/16/96 증감 연산자 ( 1 ) 누적문과 유사 변수 = 변수 + 고정 값(1); i = i + 1; n = n - 1; 변수가 1씩 증/감 되는 경우를 위해 단항 연산자 제공 ++, -- ++i, i++, --n, n -- *

증감 연산자 ( 2 ) 전위 증가 연산자 Expression Alternative 후위 증가 연산자 i = i + 1 ++i 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

증감 연산자 ( 3 ) 프로그램 3-4 #include <stdio.h> void main() { * 07/16/96 증감 연산자 ( 3 ) 프로그램 3-4 #include <stdio.h> void main() { int a = 1, b = 1; int aplus, plusb; aplus = a++; plusb = ++b; printf(“a=%d, aplus=%d, b=%d, plusb=%d\n”, a, aplus, b, plusb); } 출력은 ? a=2, aplus=1, b=2, plusb=2 *

주소 ( 1 ) 전형적인 변수 변수에 저장된 값은 변수의 내용이라고 하고 변수에 저장된 값, 변수의 주소, 변수의 데이터 형으로 이루어짐 변수에 저장된 값은 변수의 내용이라고 하고 변수를 위해 사용된 메모리의 첫 번째 주소를 주소라 함 하나 또는 여러 개의 바이트 ( 데이터 형에 따라 다름) 변수 값(내용) 변수의 주소

주소 ( 2 ) 프로그램 3-5 일반적인 프로그래머들은 변수의 이름과 저장된 값, 변수 형에 관심을 두게 됨 #include <stdio.h> void 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)); } 일반적인 프로그래머들은 변수의 이름과 저장된 값, 변수 형에 관심을 두게 됨

주소 ( 3 ) 변수의 주소는 어떻게 알아 볼 수 있을까? 주소의 출력은 프로그램 3-6 & 연산자 사용 &num : 변수 num의 주소 주소의 출력은 %p 사용 프로그램 3-6 #include <stdio.h> void main(void) { int num; num = 22; printf (“num = %d. The address of num is %p.\n”, num, &num); }

22 주소 ( 4 ) 변수 num의 완전한 표현 2byte의 메모리 FFF0 변수 num이 사용한 첫 번째 바이트의 주소

주소의 저장 적절히 선언된 변수에 주소를 저장할 수 있음 주소 저장 포인터 변수 num_addr = &num; /* num의 주소를 num_addr에 저장 */ 주소 저장 d = &m; tab_point = &list; chr_point = &ch; 포인터 변수 포인터를 저장할 수 있는 변수 d, tab_point, chr_point 포인터 변수도 사용되기 위해서는 먼저 선언되어져야 함 int *num_addr; 변수명 변수 내용 num_addr num의 주소 변수명 d tab_point chr_point 변수 내용 Address of m Address of list Address of ch

주소의 사용 간접 연산자(*) 사용 FFAA 10 num_addr 와 b는 포인터 변수 : 주소 저장용 int *num_addr, *a, b, num=10; num_addr = &num; /* num의 시작 주소 FFAA를 저장 */ a = num_addr; /* 주소 FFAA를 a에 저장 */ b = *num_addr; /* 주소 FFAA에 저장된 10을 b에 저장 */ 포인터 변수 num_addr FFAA FFAA 정수변수 num 10

주소 프로그램 3-7 #include <stdio.h> void main(void) { int *num_addr; /* declare a pointer to an int */ int miles, dist; /* declare two integer variables */ miles = 22; /* store the number 22 into miles */ dist = 158; /* store the number 158 into dist */ 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); }

scanf() 함수 Keyboard Screen 대화식 프로그램 작성을 가능하게 함 표준 입력(키보드)로 부터 데이터를 입력 받음 scanf()와 printf()함수 scanf(“%d”, &num1) printf(“%d”, &num2) Keyboard Screen #include <stdio.h> void main(void) { scanf ( ) printf ( ) }

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); }

버퍼 입력을 갖는 scanf() 문자 입력 프로그램 3-11 #include <stdio.h> void main(void) { char fkey ; printf (“Please type in a character: ”) ; scanf (“%c”, &fkey) ; printf (“the keystroke just accepted is %d ”, fkey) ; }

기호 상수 리터럴 : 프로그램 내에서 그 값이 명확히 구별되는 데이터 #define c = 2 * 3.14 * r; 수식에 직접 입력된 상수 2와 3.14를 literal 이라 함 #define 프로그램 내에서 반복 사용되는 literal 값을 손쉽게 정의하는 방법 #define PI 3.141592 c = 2 * PI * r;

기호 상수 프로그램 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 ; /* 세금 5% 부과*/ total = amount - taxes ; /* 수령액 = 금액 - 세금 */ printf (“The sales tax is $%4.2f ”, taxes) ; /* 세금 출력 */ printf (\nThe total bill is $%5.2f ”, total) ; /* 수령액 출력 */ }

일반적인 프로그래밍 오류 모든 변수는 식에서 사용되기 전에 초기화 되어져야 함 증가 또는 감소 연산자를 식에서 사용할 경우 주의해야 함 포인터로 선언되지 않은 변수에 주소를 저장해서는 안됨 scanf()함수에는 주소(&)를 넘겨 주어야 함 scanf()함수의 제어 문자열에는 메시지가 포함되지 않음 scanf()함수 호출시 입력될 데이터 값에 따라 정확한 제어문자(“%d”, “%c”)를 포함해야 함 scanf()함수에 넘겨지는 제어 문자열을 이중따옴표로 닫아야 하며, 모든 인자는 쉼표로 구분해야 함 #define문은 세미콜론으로 끝나지 않음

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