자료구조 실험 PSLab. 이태호.

Slides:



Advertisements
Similar presentations
1.1 구조체란 1.2 중첩 구조체 1.3 구조체와 배열 1.4 구조체와 포인터 1.5 구조체와 함수 1.6 공용체와 열거형.
Advertisements

1. 2 차원 배열  배열은 동일한 데이터 유형으로 여러 개의 변수를 사용할 경우 같은 이 름으로 지정하여 간편하게 사용할 수 있도록 하는 것으로서 앞에서 1 차원 배열을 공부하였습니다.  2 차원 배열은 바둑판을 생각하면 되며, 1 차원 배열에서 사용하는 첨자를 2.
1 구조체 윤 홍 란 컴퓨터 프로그래밍 2 구조체 정의  구조체란 ? o 서로 다른 형의 변수들을 하나로 묶어주는 mechanism. (cf. 배열 : 같은 형의 변수들을 하나로 묶어주는 mechanism) o 예 : 카드의.
ㅎㅎ 구조체 구조체 사용하기 함수 매개변수로서의 구조체 구조체 포인터와 레퍼런스 구조체 배열.
ㅎㅎ 구조체 C++ 프로그래밍 기초 : 객체지향의 시작 구조체 사용하기 함수 매개변수로서의 구조체 구조체 포인터와 레퍼런스
쉽게 풀어쓴 C언어 Express 제11장 포인터 C Express Slide 1 (of 27)
2장. 프로그램의 기본 구성. 2장. 프로그램의 기본 구성 2-1"Hello, World!" 들여다 보기 /* Hello.c */ #include int main(void) { printf("Hello, World! \n"); return 0;
제14장 동적 메모리.
제 9 장 구조체와 공용체.
-Part2- 제3장 포인터란 무엇인가.
11장 구조체와 열거형 구조체의 정의 구조체 변수의 선언 구조체 초기화 및 사용 구조체 재정의 포인터를 이용해서 구조체 사용
C 8장. 포인터 #include <stdio.h> int main(void) { int num;
자료 구조: Chapter 3 (2)구조체, 포인터
3장. 변수와 연산자. 3장. 변수와 연산자 3-1 연산자, 덧셈 연산자 연산자란 무엇인가? 연산을 요구할 때 사용되는 기호 ex : +, -, *, / 3-1 연산자, 덧셈 연산자 연산자란 무엇인가? 연산을 요구할 때 사용되는 기호 ex : +, -, *, /
윤성우의 열혈 C 프로그래밍 윤성우 저 열혈강의 C 프로그래밍 개정판 Chapter 12. 포인터의 이해.
제 6장. 생성자와 소멸자 학기 프로그래밍언어및실습 (C++).
5장. 참조 타입.
제 3장. C보다 나은 C++ II.
P150 문제를 프로그래밍 할 것 Source file (헤더파일포함), 실행화면 (학번_이름_1.txt)
C 프로그래밍.
11장. 포인터 01_ 포인터의 기본 02_ 포인터와 Const.
SqlParameter 클래스 선문 비트 18기 발표자 : 박성한.
컴퓨터 프로그래밍 기초 #02 : printf(), scanf()
23장. 구조체와 사용자 정의 자료형 2.
임베디드 실습 # LED, 7’Segment 제어
14장. 포인터와 함수에 대한 이해.
C 8장. 포인터 #include <stdio.h> int main(void) { int num;
C#.
13. 연산자 오버로딩.
C 프로그래밍 C언어 (CSE2035) (Chap11. Derived types-enumerated, structure, and union) (1-1) Sungwook Kim Sogang University Seoul, Korea Tel:
사용자 함수 사용하기 함수 함수 정의 프로그램에서 특정한 기능을 수행하도록 만든 하나의 단위 작업
어서와 C언어는 처음이지 제14장.
Chap 6.Assembler 유건우.
박성진 컴퓨터 프로그래밍 기초 [09] 배열 part 1 박성진
13. 포인터와 배열! 함께 이해하기 IT응용시스템공학과 김 형 진 교수.
3장 상수 변수 기본 자료형 키워드와 식별자 상수와 변수 기본 자료형 형변환 자료형의 재정의.
Java의 정석 제 5 장 배 열 Java 정석 남궁성 강의 의
쉽게 풀어쓴 C언어 Express 제14장 포인터 활용 C Express Slide 1 (of 22)
19. 함수 포인터와 void 포인터.
3장. 변수와 연산자 교안 : 전자정보통신 홈페이지 / 커뮤니티/ 학술세미나
구조체.
Chapter6 : JVM과 메모리 6.1 JVM의 구조와 메모리 모델 6.2 프로그램 실행과 메모리 6.3 객체생성과 메모리
에어 조건문.
컴퓨터 프로그래밍 기초 - 10th : 포인터 및 구조체 -
2장. 변수와 타입.
컴퓨터 프로그래밍 기초 - 5th : 조건문(if, else if, else, switch-case) -
컴퓨터 프로그래밍 기초 - 8th : 함수와 변수 / 배열 -
Chapter 08. 함수.
5강. 배열 배열이란? 배열의 문법 변수와 같이 이해하는 배열의 메모리 구조의 이해 레퍼런스의 이해 다차원 배열
^^ Computer Programming 2 dmpr.cnu.ac.kr/~daygax.
함수(Function) ◈ 함수의 개념 및 사용 이유 ◈ 함수 정의, 호출 및 선언 ◈ 지역변수와 전역변수 ◈ return 문
디버깅 관련 옵션 실습해보기 발표 : 2008년 5월 19일 2분반 정 훈 승
에어 PHP 입문.
구조체 (Structure).
4장. 데이터 표현 방식의 이해. 4장. 데이터 표현 방식의 이해 4-1 컴퓨터의 데이터 표현 진법에 대한 이해 n 진수 표현 방식 : n개의 문자를 이용해서 데이터를 표현 그림 4-1.
제 8장. 클래스의 활용 학기 프로그래밍언어및실습 (C++).
컴퓨터 프로그래밍 기초 - 9th : 배열 / 포인터 -
구조체(struct)와 공용체(union)
Numerical Analysis Programming using NRs
Chapter 11 구조체.
실습과제 (변수와 자료형, ) 1. 다음 작업 (가), (나), (다)를 수행하는 프로그램 작성
동적메모리와 연결 리스트 컴퓨터시뮬레이션학과 2016년 봄학기 담당교수 : 이형원 E304호,
제 4 장 Record.
어서와 C언어는 처음이지 제21장.
개정판 누구나 즐기는 C언어 콘서트 제13장 동적 메모리 출처: pixabay.
13. 포인터와 배열! 함께 이해하기.
Pointers summary.
7 생성자 함수.
6 객체.
2019 2학기 9장 배열과 포인터 1. 주소, 주소연산자(&) 2. 포인터, 역참조연산자(*) 3. 배열과 포인터.
Presentation transcript:

자료구조 실험 PSLab. 이태호

Big O 실습-1 2의 세제곱을 구하는 프로그램을 작성하시오. O(n)의 시간복잡도를 가지는 프로그램을 작성하 시오.

구조체 구조체 구조체도 배열처럼 여러 개의 데이터를 그룹으로 묶어서 하나의 자료형으로 정의하고 사용하는 자료형 구조체도 배열처럼 여러 개의 데이터를 그룹으로 묶어서 하나의 자료형으로 정의하고 사용하는 자료형 배열은 같은 자료형 만을 그룹으로 묶을 수 있지만, 구조체는 서로 다른 자료형을 그룹으로 묶을 수 있으므로 복잡한 자료 형태를 정의하는데 유용하게 사용 레코드(record) 자료를 체계적으로 관리하기 위해서 구성한 일정한 단위 형식 으로 필드(field) 레코드를 구성하는 하위 항목 파일(file) 여러 레코드가 모여서 하나의 파일을 구성 여러 자료형의 필드를 가지고 있는 레코드를 만들 때 구조 체 사용

구조체 필드와 레코드, 파일의 관계

구조체 구조체 선언 여러 자료형의 변수들을 그룹으로 묶어서 하나의 자료형으로 선언 구조체이름, 자료형, 데이터 항목으로 구성 여러 자료형의 변수들을 그룹으로 묶어서 하나의 자료형으로 선언 구조체이름, 자료형, 데이터 항목으로 구성 구조체의 이름 - 구조체로 정의하는 새로운 자료형의 이름 항목 - 구조체를 구성하는 내부 변수들의 이름 구조체의 항목은 배열의 각 배열요소에 해당 배열요소는 모두 같은 자료형으로 되어있으므로 배열요소 에 대한 선언 없이 사용이 가능하지만, 구조체에서는 각 항 목이 다른 자료형을 가질 수 있기 때문에 항목별로 자료형 과 항목이름(변수이름)을  선언해야 한다.

구조체 구조체 사용 예) 직원 관리 구조체 구조체 선언 구조체 employee의 구조

구조체 구조체 변수 선언 struct  employee  Lee, Kim, Park;

구조체 구조체 변수의 선언 유형 struct employee Park; Park.year = 1983; Lee.year = 1982; Lee.year = 1982;

구조체 구조체의 초기화 구조체 변수 선언 시에 각 데이터 항목에 대한 값 을 중괄호 안에 나열

구조체 구조체 데이터 항목의 참조 구조체 변수에 있는 각 데이터 항목을 참조하기 위해서 구조체 연산자 사용

구조체 점 연산자 : . 구조체 변수에 있는 데이터 항목을 개별적으로 지정할 때 사용 예)

구조체 화살표 연산자 : -> 구조체 포인터 변수에서 포인터가 가리키는 구조체 변수의 데이터항목을 지정하기 위해서 화살표 연산자 사용 예)

구조체의 크기 왜 9가 아니고 12일까요?? 1word = 4byte 구조체는 1word 단위로 메모리 공간을 할당한다 #include "stdafx.h“ int _tmain(int argc, _TCHAR* argv[]) { struct Good{ int a; int b; char c; }gh; printf("%d\n", sizeof(int)); printf("%d\n", sizeof(char)); printf("%d", sizeof(gh)); return 0; } 왜 9가 아니고 12일까요?? 1word = 4byte 구조체는 1word 단위로 메모리 공간을 할당한다 어셈블리의 offset, PC 증가와도 관련…

함수 포인터 함수 이름을 저장하는 변수를 선언할 수 있다 규?? #include <stdio.h> void testout1(const char *s) { printf("시험출력1:%s\n", s); } void testout2(const char *s) { printf("시험출력2:%s\n", s); // 함수포인터 변수 void (*funcPtr)(const char *s); int main() { // 함수포인터를 testout1, testout2로 각각 대입해보고 실행해본다. funcPtr = testout1; funcPtr("테스트"); funcPtr = testout2;

함수 포인터 그럼 어디다가 씁니까? 구조체에 함수를 내장할 수 있다!! Callback 함수를 선언할 때 사용한다.  콜백함수는 또 뭡니까… #include "stdafx.h" int sum(int a, int b){ return a+b; } int _tmain(int argc, _TCHAR* argv[]) { struct Good{ int a; int b; int (*sum)(int a, int b); }gh; scanf("%d", &gh.a); scanf("%d", &gh.b); gh.sum = sum; printf("%d", gh.sum(gh.a,gh.b)); return 0; 마치 구조체에 함수가 내장된 것처럼 사용할 수 있음 즉, sum함수를 구조체의 맴버로 인식시킬 수 있음

콜백함수 우리가 printf 함수를 사용할 때 뭐라고 합니까? 그렇습니다. 시스템이 우리에게 Call 하는 것이 콜백입니다. 그럼 Callback은? 거꾸로 콜?? 그렇습니다. 시스템이 우리에게 Call 하는 것이 콜백입니다. 즉 Call : 우리가 시스템에 만들어진 함수를 부르는 것 Callback : 시스템이 우리가 만든 함수를 부르는 것

콜백함수 음… 그런데 제가 알기론 컴퓨터는 깡통인데 어떻게 우리가 만 든 함수 이름을 알 수 있나요? 그렇습니다. 그래서 시스템 개발자들은 함수 포인터 변수를 선 언해둡니다. 우리는 시스템이 우리 코드를 실행 할 수 있도록 시스템 개발 자들이 선언한 함수 포인터 변수에 우리 함수 이름을 넣기만 하면 됩니다. //콜백이 일어날 때 sum 함수를 실행 시키도록 하고 싶다 int sum(int a, int b){ return a + b; } … System.callbackPtr = sum; //이렇게 하면 시스템이 프로그램을 실행하다가 특정 이벤트를 만나면 //자동으로 sum 함수를 실행 할 것이다

함수 포인터 a와 b에 값을 사용할 수 있음 gh이라는 객체를 생성 sum 함수를 사용할 수 있음 왜 이런 어려운 것을 하나요? 객체지향적 프로그래밍 방법론을 이해하기 위하여… 어떤 언어로든 절차지향, 객체지향 프로그램을 할 수 있다… 다만 언어를 설계할 때 방법론에 최적화되게 설계해서 그런거임… gh이라는 객체를 생성 a와 b에 값을 사용할 수 있음 sum 함수를 사용할 수 있음

함수 포인터 a와 b에 값을 사용할 수 있음 gh이라는 객체를 생성 sum 함수를 사용할 수 있음 #include "stdafx.h" int sum(int a, int b){ return a+b; } int _tmain(int argc, _TCHAR* argv[]) { struct Good{ int a; int b; int (*sum)(int a, int b); }gh; scanf("%d", &gh.a); scanf("%d", &gh.b); gh.sum = sum; printf("%d", gh.sum(gh.a,gh.b)); return 0; gh이라는 객체를 생성 a와 b에 값을 사용할 수 있음 sum 함수를 사용할 수 있음

구조체 실습 실습-2 구조체를 이용한 성적관리 프로그램 미리 하다가 걸리지 마세요. 구조체에 들어갈 데이터들 학생 5개 입력 학생 이름 국어 영어 수학 총점 학생 5개 입력 입력을 마쳤으면 화면에 입력한 것을 출력하도록 합니 다. 미리 하다가 걸리지 마세요.

구조체 + 포인터 실습-3 위 성적관리 프로그램에서 생성한 구조체의 포인 터를 생성 생성한 포인터로 값을 넣고 빼세요

향상 문제!! – 구조체 + 함수포인터 실습-4 총점을 내는 함수를 구조체에 내장해보자!! 함수 포인터를 사용하여 총점을 구하는 함수를 구 조체에 내장합니다. 총점 필드를 제거합니다. 내장한 함수의 리턴값을 이용하여 총점을 출력하 도록 만듭니다.