C 프로그래밊 개요

Similar documents
untitled

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

OCW_C언어 기초

C 프로그래밊 개요

<322EBCF8C8AF28BFACBDC0B9AEC1A6292E687770>

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

; struct point p[10] = {{1, 2, {5, -3, {-3, 5, {-6, -2, {2, 2, {-3, -3, {-9, 2, {7, 8, {-6, 4, {8, -5; for (i = 0; i < 10; i++){ if (p[i].x > 0 && p[i

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

untitled

Microsoft PowerPoint - chap04-연산자.pptx

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

11장 포인터

구조체정의 자료형 (data types) 기본자료형 (primitive data types) : char, int, float 등과같이 C 언어에서제공하는자료형. 사용자정의자료형 (user-defined data types) : 다양한자료형을묶어서목적에따라새로운자료형을

슬라이드 1

K&R2 Reference Manual 번역본

이번장에서학습할내용 동적메모리란? malloc() 와 calloc() 연결리스트 파일을이용하면보다많은데이터를유용하고지속적으로사용및관리할수있습니다. 2

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

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

untitled

PowerPoint 프레젠테이션

본 강의에 들어가기 전

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

02장.배열과 클래스

Microsoft PowerPoint - ch07 - 포인터 pm0415

Microsoft PowerPoint - chap06-2pointer.ppt

< E20C6DFBFFEBEEE20C0DBBCBAC0BB20C0A7C7D12043BEF0BEEE20492E707074>


PowerPoint 프레젠테이션

0. 표지에이름과학번을적으시오. (6) 1. 변수 x, y 가 integer type 이라가정하고다음빈칸에 x 와 y 의계산결과값을적으시오. (5) x = (3 + 7) * 6; x = 60 x = (12 + 6) / 2 * 3; x = 27 x = 3 * (8 / 4

중간고사

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

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

11장 포인터

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

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

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 \

PowerPoint 프레젠테이션


PowerPoint 프레젠테이션

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

Microsoft PowerPoint - chap-05.pptx

chap8.PDF

제 14 장포인터활용 유준범 (JUNBEOM YOO) Ver 본강의자료는생능출판사의 PPT 강의자료 를기반으로제작되었습니다.

<4D F736F F F696E74202D20B8AEB4AABDBA20BFC0B7F920C3B3B8AEC7CFB1E22E BC8A3C8AF20B8F0B5E55D>

PowerPoint 프레젠테이션

4. 1 포인터와 1 차원배열 4. 2 포인터와 2 차원배열 4. 3 포인터배열 4. 4 포인터와문자그리고포인터와문자열

KNK_C_05_Pointers_Arrays_structures_summary_v02

11장 포인터

Microsoft PowerPoint - chap12-고급기능.pptx

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

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

Microsoft PowerPoint - chap05-제어문.pptx

OCW_C언어 기초

Microsoft PowerPoint - C++ 5 .pptx

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

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

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

Microsoft PowerPoint - [2009] 02.pptx

Microsoft PowerPoint - Chapter_04.pptx

쉽게 풀어쓴 C 프로그래밍

기초컴퓨터프로그래밍

<4D F736F F F696E74202D20C1A63132B0AD20B5BFC0FB20B8DEB8F0B8AEC7D2B4E7>

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

chap7.key

Lab 3. 실습문제 (Single linked list)_해답.hwp

untitled

14 주차구조체와공용체

Microsoft PowerPoint - 제11장 포인터

제 15 장전처리및비트연산 유준범 (JUNBEOM YOO) Ver 본강의자료는생능출판사의 PPT 강의자료 를기반으로제작되었습니다.

PowerPoint Presentation

슬라이드 1

Lab 4. 실습문제 (Circular singly linked list)_해답.hwp

ch15

프로그램을 학교 등지에서 조금이라도 배운 사람들을 위한 프로그래밍 노트 입니다. 저 역시 그 사람들 중 하나 입니다. 중고등학교 시절 학교 도서관, 새로 생긴 시립 도서관 등을 다니며 책을 보 고 정리하며 어느정도 독학으르 공부하긴 했지만, 자주 안하다 보면 금방 잊어

<4D F736F F F696E74202D20C1A63134C0E520C6F7C0CEC5CD5FC8B0BFEB>

Microsoft PowerPoint - Chapter_09.pptx

Microsoft PowerPoint - ch08 - 구조체 (structure) am0845

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

컴파일러

PowerPoint 프레젠테이션

Microsoft PowerPoint - ch09 - 연결형리스트, Stack, Queue와 응용 pm0100

<4D F736F F F696E74202D20C1A635C0E520BCF6BDC4B0FABFACBBEAC0DA>

Microsoft PowerPoint - 제11장 포인터(강의)


<4D F736F F F696E74202D20C1A63137C0E520B5BFC0FBB8DEB8F0B8AEBFCD20BFACB0E1B8AEBDBAC6AE>

歯9장.PDF

A Hierarchical Approach to Interactive Motion Editing for Human-like Figures

Microsoft PowerPoint - Chapter_08.pptx

歯7장.PDF

chap7.PDF

JAVA PROGRAMMING 실습 02. 표준 입출력

ABC 2장

1장. 유닉스 시스템 프로그래밍 개요

03장.스택.key

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

Chapter_06

Microsoft PowerPoint - ch07 - 포인터 pm0415

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

Microsoft PowerPoint - chap-06.pptx

ABC 9장

Transcription:

구조체 2009 년 5 월 19 일 김경중

강의계획수정 일자계획 Quiz 실습보강 5 월 19 일 ( 화 ) 구조체 Quiz ( 함수 ) 5 월 21 일 ( 목 ) 구조체저녁 6 시 5 월 26 일 ( 화 ) 포인터 5 월 28 일 ( 목 ) 특강 (12:00-1:30) 6 월 2 일 ( 화 ) 포인터 Quiz ( 구조체 ) 저녁 6 시 6 월 4 일 ( 목 ) 포인터저녁 6 시 6 월 9 일 ( 화 ) 특강 (12:00-1:30) 6 월 11 일 ( 목 ) 프로젝트발표 Quiz ( 포인터 ) 저녁 6 시 6 월 18 일 ( 화 ) 기말고사

프로젝트중간제출 기한 : 2009 년 5 월 25 일월요일오후 2 시까지 점수 : 50 점 채점 : 제출하면 50 점, 아니면 0 점 제출방법 : 이메일 (kimkj@sejong.ac.kr) 자유소프트웨어 : 제안서와현재진행중인소스코드를보낸다. 제안서는필수이고소스코드는현재작업이진행된사람만보낸다. 제안서의분량에는제한이없으며, 무엇을만들려고하는지를적는다. 문제풀기 : 50 문제중 10 문제를풀어서낸다. 자동차경주 : 현재까지작업한자기자신만의운전프로그램을제출한다.

디버깅

디버깅 #include <stdio.h> void main(void){ int i; for(i=0;i<10;i++){ printf("%d",i);

F10 을누르세요.

F10 을누르세요.

F10 을누르세요.

디버깅종료

간단한디버깅방법 #include <stdio.h> void main(void){ int i; for(i=0;i<10;i++){ printf("%d",i); getchar();

구조체

실생활과자료형 실생활자료형나이이름키학번주소신상정보

구조체정의 struct sinsang { int age; char name[20]; float height; int studentid; char address[100]; ;

구조체정의 ( 변수선언포함 ) struct sinsang { int age; char name[20]; float height; int studentid; char address[100]; kim, lee, park, han, yoon;

값입력 kim.age = 33; strcpy(kim.name, 김경중 ); kim.height = 180.0; kim.studentid = 0; strcpy(kim.address, 광개토관 619호 );

출력 printf( %d \n, kim.age); printf( %s \n, kim.name); printf( %f \n, kim.height); printf( %d \n, kim.studentid); printf( %s \n,kim.address);

실제코드 #include <stdio.h> #include <string.h> void main(void){ // 구조체정의 ( 변수선언포함 ) 여기에넣으세요. // 값넣기 // 출력하기

실제코드 #include <stdio.h> #include <string.h> void main(void){ struct sinsang { int age; char name[20]; float height; int studentid; char address[100]; kim, lee, park, han, yoon; kim.age = 33; strcpy(kim.name, 김경중 ); kim.height = 180.0; kim.studentid = 0; strcpy(kim.address, 광개토관 619 호 ); printf( %d \n, kim.age); printf( %s \n, kim.name); printf( %f \n, kim.height); printf( %d \n, kim.studentid); printf( %s \n,kim.address);

결과

실습 본인의신상정보를이용하여값을넣고출력해보아라.

정답 #include <stdio.h> #include <string.h> void main(void){ struct sinsang { int age; char name[20]; float height; int studentid; char address[100]; kim, lee, park, han, yoon; kim.age = 33; strcpy(kim.name, 김경중 ); kim.height = 180.0; kim.studentid = 0; strcpy(kim.address, 광개토관 619 호 ); printf( %d \n, kim.age); printf( %s \n, kim.name); printf( %f \n, kim.height); printf( %d \n, kim.studentid); printf( %s \n,kim.address);

100 명이라면? struct sinsang { int age; char name[20]; float height; int studentid; char address[100]; kim, lee, park, han, yoon;

구조체배열 struct sinsang { int age; char name[20]; float height; int studentid; char address[100]; saram[100];

값입력 saram[0].age = 33; strcpy(saram[0].name, 김경중 ); saram[0].height = 180.0; saram[0].studentid = 0; Strcpy(saram[0].address, 광개토관 619호 );

출력 printf( %d \n, saram[0].age); printf( %s \n, saram[0].name); printf( %f \n, saram[0].height); printf( %d \n, saram[0].studentid); printf( %s \n, saram[0].address);

실제코드 #include <stdio.h> #include <string.h> void main(void){ // 구조체정의 ( 변수선언포함 ) 여기에넣으세요. // 값넣기 // 출력하기

실제코드 #include <stdio.h> #include <string.h> void main(void){ struct sinsang { int age; char name[20]; float height; int studentid; char address[100]; saram[100]; saram[0].age = 33; strcpy(saram[0].name, " 김경중 "); saram[0].height = 180.0; saram[0].studentid = 0; strcpy(saram[0].address, " 광개토관 619호 "); printf("%d \n", saram[0].age); printf("%s \n", saram[0].name); printf("%f \n", saram[0].height); printf("%d \n", saram[0].studentid); printf("%s \n",saram[0].address);

실습 자신의신상정보와친구의신상정보를각각 saram[0] 과 saram[1] 에저장하고출력하여라.

정답 #include <stdio.h> #include <string.h> void main(void){ struct sinsang { int age; char name[20]; float height; int studentid; char address[100]; saram[100]; saram[0].age = 33; strcpy(saram[0].name, " 김경중 "); saram[0].height = 180.0; saram[0].studentid = 0; strcpy(saram[0].address, " 광개토관 619호 "); printf("%d \n", saram[0].age); printf("%s \n", saram[0].name); printf("%f \n", saram[0].height); printf("%d \n", saram[0].studentid); printf("%s \n",saram[0].address);

구조체를어디에사용할까? 주소록 이름, 연락처, 주소, 이메일 게임 현재위치, 현재모양, 보유한아이템, 에너지상태 제품관리 상품명, 제조사, 용량, 입고일, 매입가, 판매가, 할인율 도서관리 저자, 출판사, 출판년도, 총페이지수, 가격, 도서번호

다음시간에는 간단한신상정보관리프로그램을작성해보겠습니다. -신상정보의입력 -신상정보의추가 -신상정보의검색 -신상정보의삭제 -등등

참고자료 ( 시험에안나오지만알아두면유용한 )

unsigned 음수를표현할필요가없는경우 unsigned 를사용하면더큰수를표현 #include <stdio.h> void main(void){ char a=255; // 표현범위가 -128에서 127까지 unsigned b=255; // 표현범위가 0에서 255까지 printf( %d %d\n,a,b);

강제형변환 #include <stdio.h> void main(void){ int a=3; int b=2; printf( 3/2=%d\n,a/b); printf( 3/2=%f\n,(float)(a)/(float)(b));

축약연산자 축약표현 a++; a--; a+=3; a-=3; a*=3; a/=3; a%=3; 원래표현 a=a+1; a=a-1; a=a+3; a=a-3; a=a*3; a=a/3; a=a%3;

% 연산자 % 연산자는나머지를계산하기위한연산자이다. A%B 를계산하면 A 를 B 로나눌때나머지이다. A 와 B 는반드시정수이어야한다. 10%2=0 10%3=1 10%4=2 3%4=3

3 항연산자 조건? 결과 1 : 결과 2 만약조건이참이면결과 1 만약조건이거짓이면결과 2 #include <stdio.h> void main(void){ int a=2; printf( a가 3보다작다는것은 %s,a<3? 참입니다 : 거짓입니다 );

비트단위연산자 비트수준에서연산을수행함 & : 비트단위 AND : 비트단위 OR ^ : 비트단위 XOR ~ : 비트단위 NOT << : 왼쪽으로이동 >> : 오른쪽으로이동

비트단위연산 (2) #include <stdio.h> void main(void){ int a=15; // 00000000 00000000 00000000 00001111 int b=20; // 00000000 00000000 00000000 00010100 printf( AND 연산결과 : %d\n, a&b); // 출력결과 4 printf( OR 연산결과 : %d\n, a b); // 출력결과 31 printf( XOR 연산결과 : %d\n,a^b); // 출력결과 27 printf( <<2 연산결과 : %d\n, a<<2); // 출력결과 60

goto 구문 그냥알고만있고사용할필요는없다. #include <stdio.h> void main(void){ printf( A\n ); printf( B\n ); goto kim; printf( C\n ); kim: printf( D\n );

sizeof 함수 각자료형이몇바이트의메모리공간을차지하는지확인하는용도 #include <stdio.h> void main(void){ printf( char 형은 %byte입니다\n,sizeof(char)); printf( int 형은 %byte입니다\n,sizeof(int)); printf( float 형은 %byte입니다\n,sizeof(float)); printf( double 형은 %byte입니다\n,sizeof(double));

system 함수 도스명령어를 C 프로그램에서실행할수있다. #include <stdlib.h> void main(void){ system( dir );

난수 #include <stdio.h> #include <time.h> void main(void){ srand(time(null)); // 현재시간을이용하여난수발생초기화 while(1){ printf( %d\n,rand()); getchar();

일차원배열을인자로사용하기 #include <stdio.h> void print_array(int a[]){ int i; for(i=0;i<5;i++) printf( %d,a[i]); void main(void){ int a[5]={1,2,3,4,5; print_array(a);

이차원배열을인자로사용하기 #include <stdio.h> void print_array(int a[][5]){ int i,j; for(i=0;i<2;i++) for(j=0;j<5;j++) printf( %d,a[i][j]); void main(void){ int a[2][5]={{1,2,3,4,5,{6,7,8,9,10; print_array(a);

재귀함수 자기자신을호출하는함수 // factorial 계산 #include <stdio.h> int f(int n) { if(n==0) return 1; else return n*f(n-1); void main(void){ printf( 5! = %d\n,f(5));

ASCII 코드

ASCII 코드 (2) #include <stdio.h> void main(void){ printf( %c\n,65); printf( %c\n,66);

Quiz