Chapter 8 Arrays.

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.
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;
제 9 장 구조체와 공용체.
C 8장. 포인터 #include <stdio.h> int main(void) { int num;
자료 구조: Chapter 3 (2)구조체, 포인터
3장. 변수와 연산자. 3장. 변수와 연산자 3-1 연산자, 덧셈 연산자 연산자란 무엇인가? 연산을 요구할 때 사용되는 기호 ex : +, -, *, / 3-1 연산자, 덧셈 연산자 연산자란 무엇인가? 연산을 요구할 때 사용되는 기호 ex : +, -, *, /
개정판 누구나 즐기는 C언어 콘서트 제9장 포인터 출처: pixabay.
5장 배열 작성자 : 변재현.
Lesson 5. 레퍼런스 데이터형.
누구나 즐기는 C언어 콘서트 제8장 배열.
Chapter 10 Pointer Applications.
5장. 참조 타입.
Heesang kim PL/SQL 3 Heesang kim.
11장. 포인터 01_ 포인터의 기본 02_ 포인터와 Const.
컴퓨터 프로그래밍 기초 #02 : printf(), scanf()
쉽게 풀어쓴 C언어 Express 제10장 배열 C Express Slide 1 (of 32)
2주차: 변수, 수식, Control Flow.
제8장 배열 1부 8.1 배열 8.2 배열의 초기화 8.3 배열의 응용 8.4 정렬과 탐색 8.5 다차원 배열.
6장. printf와 scanf 함수에 대한 고찰
11장. 1차원 배열.
C 8장. 포인터 #include <stdio.h> int main(void) { int num;
JA A V W. 03.
프로그래밍 개요
어서와 C언어는 처음이지 제14장.
인터넷응용프로그래밍 JavaScript(Intro).
박성진 컴퓨터 프로그래밍 기초 [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 객체생성과 메모리
포인터 1차원 배열과 포인터 2차원 배열과 포인터 문자열 배열과 포인터 포인터 배열
인터넷응용프로그래밍 JavaScript(Intro).
컴퓨터 프로그래밍 기초 - 10th : 포인터 및 구조체 -
제 1 강.
처음으로 배우는 C 프로그래밍 제4부 복합 데이터 형 제 7 장 배열.
5장 배열과 문자열 C 프로그래밍.
컴퓨터 프로그래밍 기초 - 8th : 함수와 변수 / 배열 -
8주차: Strings, Arrays and Pointers
5강. 배열 배열이란? 배열의 문법 변수와 같이 이해하는 배열의 메모리 구조의 이해 레퍼런스의 이해 다차원 배열
Choi Seong Yun 컴퓨터 프로그래밍 기초 #03 : 변수와 자료형 Choi Seong Yun
Canary value 스택 가드(Stack Guard).
균형이진탐색트리 이진 탐색(binary search)과 이진 탐색 트리(binary search tree)와의 차이점
^^ Computer Programming 2 dmpr.cnu.ac.kr/~daygax.
데이터 동적 할당 Collection class.
에어 PHP 입문.
4장. 데이터 표현 방식의 이해. 4장. 데이터 표현 방식의 이해 4-1 컴퓨터의 데이터 표현 진법에 대한 이해 n 진수 표현 방식 : n개의 문자를 이용해서 데이터를 표현 그림 4-1.
7주차: Functions and Arrays
Chapter 10 데이터 검색1.
11장 배열 1. 배열이란? 1.1 배열의 개요 1.2 배열의 선언과 사용.
컴퓨터 프로그래밍 기초 - 9th : 배열 / 포인터 -
구조체(struct)와 공용체(union)
Summary of Pointers and Arrays
Numerical Analysis Programming using NRs
어서와 C언어는 처음이지 제21장.
개정판 누구나 즐기는 C언어 콘서트 제13장 동적 메모리 출처: pixabay.
13. 포인터와 배열! 함께 이해하기.
Pointers summary.
6 객체.
2019 2학기 9장 배열과 포인터 1. 주소, 주소연산자(&) 2. 포인터, 역참조연산자(*) 3. 배열과 포인터.
Presentation transcript:

Chapter 8 Arrays

구조화 데이터 원소 간의 연관성이 있는 자료 구조화 형 배열, Structure형, 문자열, union 데이터 구성 원소들 간에 연관이 있을 때 이를 표현한 형 기본형의 확장으로 사용자가 새로운 형을 선언 궁극적으로 C++ 등에서는 더욱 확대됨 배열, Structure형, 문자열, union

배열 C언어는 배열을 연속된 메모리 위치로 봄. 실제 메모리 배정은 다를 수 있으나 연속된 메모리로 봄 배열은 실제 포인터와 위치계산 방법으로 구성 0번부터 위치 부여(첨자, 인덱스)

Figure 8-1

Figure 8-2

Figure 8-3

Figure 8-4

Figure 8-5

배열 선언과 접근 선언 접근 C의 배열의 특징 형 배열이름 [배열 크기] 배열이름[위치] int sum[100]; char elmt[50]; float avg[100] 접근 배열이름[위치] sum[59], elmt[0], avg[j] 오류: sum[100], elmt[-10], avg[990] 문제는 범위를 넘어도 오류로 나타내지 않음 C의 배열의 특징 속도를 고려 … sum[i]  sum+i*sizeof(sum) 범위 검증을 하지 않음  비교연산을 줄임, 범위를 넘어선 자료를 접근해도 오류를 주지 않음 !!!!!

Figure 8-6

변수 초기화, 우선순위 선언시 초기화 가능 후에 초기화할 수도 있음 Static변수와 전역변수에 대해서는 0으로 초기화할 필요가 없음  number[3]*7  배열이 우선

Figure 8-7

값 지정 scores[4] = 23; for(i=0;i<25;i++) second[i] = first[i]; for(i=0;i<9;i++) scores[i] = i*2; 값 바꾸기 temp=numbers[1]; numbers[1]=number[3]; numbers[3]=temp; 한 칸씩 밀 때 ---- 배열에서 …. 설명(실습문제) 앞에서 temp1= temp2; temp2=number[i+1]; number[i+1]=temp1; 다른 방법???

Figure 8-8

Figure 8-9

다른 여러 재미있는 처리 예제 값을 제곱하기 값을 읽어서 반대로 출력하기 값을 합하여 평균 구하기 등등

반대로 출력 printf("\nYour numbers reversed are: \n"); for (i = readNum - 1, numPrinted = 0; i >= 0; i--) { printf("%3d", numbers[i]); if (numPrinted < 9) numPrinted++; else printf("\n"); numPrinted = 0; } /* else */ } /* for */

배열 인자 배열을 함수의 파라미터로 보내기 배열 이름 자체가 포인터임, 따라서 이름 자체를 파라미터로 쓸 수 있음 따라서 포인터를 보내고 받는 개념임 값 전달방식이지만 배열 자체가 포인터이므로 주소전달처럼 처리됨 단, f(num[i])처럼 전달하면 이때는 num[i]의 값이 전달됨

Figure 8-10

Figure 8-11

Figure 8-12

Figure 8-13

히스토그램 성적분포 구하기 문자인식 영상검색 기울어진 문서 바로 잡기

Figure 8-14

Figure 8-15

Figure 8-16

정렬 선택정렬 – 가장 작은 값을 찾아서 정렬 안 된 것 중 제일 앞과 바꿈 버블정렬 – 가장 작은 값을 뒤에서부터 찾으면서 이동시킴 삽입정렬 – 처음부터 정렬된 것에 정렬 안 된 값을 끼워 넣는 방법

Figure 8-17

Figure 8-18

Figure 8-19

Figure 8-20

Figure 8-21

Figure 8-22

검색 순차탐색(sequential search) --처음부터 모두 검색 이진탐색 O(n) O(log(n)) 정렬된 자료에 한함. 가운데 값을 비교하면서 검색범위를 줄임 ‘n/2’를 적용

Figure 8-23

순차탐색 /* ==================== seqSearch ==================== Post FOUND: matching index stored in locn address return 1 (found) NOT FOUND: last stored in locn address return 0 (not found) */ int seqSearch (int list[], int last, int target, int *locn) { /* Local Definitions */ int looker; /* Statements */ looker = 0; while (looker < last && target != list[looker]) looker++; *locn = looker; return (target == list[looker]); } /* seqSearch */

Figure 8-24

Figure 8-25

이진탐색 int binarySearch (int list[], int end, int target, int *locn) { /* Local Definitions */ int first; int mid; int last; /* Statements */ first = 0; last = end; while (first <= last) mid = (first + last) / 2; if (target > list[mid]) /* look in upper half */ first = mid + 1; else if (target < list[mid]) /* look in lower half */ last = mid - 1; else /* found equal: force exit */ first = last + 1; } /* end while */ *locn = mid; return target == list [mid]; } /* binarySearch */

Figure 8-26

Figure 8-27

2차원 배열 int a[10][20] 행(row), 열(column) Row-major 위치 계산 a[i][j]  a+(i*20+j)*sizeof(a)로 계산하여 메모리에 연속으로 저장 및 접근

Figure 8-28

Figure 8-29

Figure 8-30

초기화/값입력 초기화 값 입력 값 전달 int table[2][3]={0,1,2,3,4,5}; 뒤 예문 참조 값 전달 전체 전달 : 배열 이름 : table 행만 전달 : 행 부분까지만 표시 : table[1] table, table[0], table[1]도 포인터 값이다….

Figure 8-31

Figure 8-32

재미있는 예제 프로그램들 장방형 값 채우기 매트릭스 곱하기 히스토그램 구하기

Figure 8-33

다차원 배열 2차원 배열의 확장 다차원의 경우 마지막 차원까지 표현되지 않으면 주소임 int a[5][6][7][8] a[i][j][k][l]  ((((i*6)+j)*7+k)*8+l)*sizeof(int)

Figure 8-34

Figure 8-35

Figure 8-36

여러 가지 예 행과 열의 값 합하기/평균내기 다차원 배열의 응용을 생각해보자!!!

Figure 8-37

Figure 8-38

Figure 8-39

Figure 8-40

Figure 8-41

실습문제 및 예습 실습 예습 1차원 배열의 값을 한 칸씩 오른쪽 또는 왼쪽으로 옮기는 함수를 구함. 첫 번째 값이 1이면 오른쪽, -1이면 왼쪽 아니면 오류임, 오른쪽으로 옮기면 마지막 값이 첫 번째로, 왼쪽은 반대로 됨 어떤 문서를 읽어서 알파벳과 숫자의 개수를 세는 프로그램 작성… 대문자와 소문자는 구별하지 않음 31번, 38번, 52번 예습 9장 19, 21, 22, 28