선형대수학 Linear Algebra

Similar documents
Microsoft PowerPoint - 07-C#-2-기초문법.ppt [호환 모드]

PowerPoint Presentation

Microsoft PowerPoint - CSharp-2-기초문법

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

JAVA PROGRAMMING 실습 08.다형성

JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 ( ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각

gnu-lee-oop-kor-lec11-1-chap15

PowerPoint Presentation

gnu-lee-oop-kor-lec06-3-chap7

슬라이드 1

JAVA PROGRAMMING 실습 05. 객체의 활용

PowerPoint Presentation

JAVA PROGRAMMING 실습 02. 표준 입출력

Microsoft PowerPoint 자바-기본문법(Ch2).pptx

PowerPoint 프레젠테이션

<4D F736F F F696E74202D20C1A63038C0E520C5ACB7A1BDBABFCD20B0B4C3BC4928B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

쉽게 풀어쓴 C 프로그래밍

PowerPoint Presentation

PowerPoint Presentation

PowerPoint Presentation

(8) getpi() 함수는정적함수이므로 main() 에서호출할수있다. (9) class Circle private double radius; static final double PI= ; // PI 이름으로 로초기화된정적상수 public

q 이장에서다룰내용 1 객체지향프로그래밍의이해 2 객체지향언어 : 자바 2

PowerPoint Presentation

Design Issues

슬라이드 1

설계란 무엇인가?

Microsoft Word - java19-1-midterm-answer.doc

PowerPoint Presentation

Microsoft PowerPoint - ch07 - 포인터 pm0415

유니티 변수-함수.key

PowerPoint 프레젠테이션

교육자료

07 자바의 다양한 클래스.key

Microsoft PowerPoint - hci2-lecture4.ppt [호환 모드]

비긴쿡-자바 00앞부속

PowerPoint Presentation

PowerPoint Presentation

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

untitled

PowerPoint Presentation

1. 객체의생성과대입 int 형변수 : 선언과동시에초기화하는방법 (C++) int a = 3; int a(3); // 기본타입역시클래스와같이처리가능 객체의생성 ( 복습 ) class CPoint private : int x, y; public : CPoint(int a

chap01_time_complexity.key

chap 5: Trees

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

설계란 무엇인가?

PowerPoint Presentation

JVM 메모리구조

슬라이드 1

Microsoft PowerPoint - 04-UDP Programming.ppt

Microsoft PowerPoint - Lect04.pptx

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

11장 포인터

<322EBCF8C8AF28BFACBDC0B9AEC1A6292E687770>

Microsoft PowerPoint - 2강

PowerPoint Presentation

ilist.add(new Integer(1))과 같이 사용하지 않고 ilist.add(1)과 같이 사용한 것은 자바 5.0에 추가된 기본 자료형과 해당 객체 자료 형과의 오토박싱/언박싱 기능을 사용한 것으로 오토박싱이란 자바 컴파일러가 객체를 요구하는 곳에 기본 자료형

JAVA PROGRAMMING 실습 05. 객체의 활용

슬라이드 1

Microsoft PowerPoint - hci2-lecture4 [호환 모드]

02장.배열과 클래스

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

JAVA PROGRAMMING 실습 02. 표준 입출력

제11장 프로세스와 쓰레드

신림프로그래머_클린코드.key

예제 2) Test.java class A intvar= 10; void method() class B extends A intvar= 20; 1"); void method() 2"); void method1() public class Test 3"); args) A

PowerPoint Presentation

Microsoft PowerPoint - Lect07.pptx

쉽게 풀어쓴 C 프로그래밍

목차 INDEX JSON? - JSON 개요 - JSONObject - JSONArray 서울시공공데이터 API 살펴보기 - 요청인자살펴보기 - Result Code - 출력값 HttpClient - HttpHelper 클래스작성 - JSONParser 클래스작성 공공

2002년 2학기 자료구조

03_queue

PowerPoint 프레젠테이션

11강-힙정렬.ppt

(Microsoft Word - \301\337\260\243\260\355\273\347.docx)

JAVA PROGRAMMING 실습 09. 예외처리

Microsoft PowerPoint - java1-lab5-ImageProcessorTestOOP.pptx

쉽게 풀어쓴 C 프로그래밍

11 템플릿적용 - Java Program Performance Tuning (김명호기술이사)

Microsoft PowerPoint - C++ 5 .pptx

Microsoft PowerPoint - logo_3.ppt [호환 모드]

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

C# Programming Guide - Types

Chapter 4. LISTS

11장 포인터

adfasdfasfdasfasfadf

자바 프로그래밍

Microsoft PowerPoint - hci2-lecture12 [호환 모드]

쉽게 풀어쓴 C 프로그래밍

PowerPoint Presentation

Microsoft PowerPoint - Java7.pptx

JUNIT 실습및발표

Microsoft PowerPoint - 08-chap06-Queue.ppt

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

쉽게 풀어쓴 C 프로그래밍

09-interface.key

Microsoft PowerPoint 세션.ppt

Frama-C/JESSIS 사용법 소개

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션

슬라이드 1

Transcription:

배열, 컬렉션, 인덱서 array, collection, indexer 소프트웨어학과 HCI 프로그래밍강좌

배열 배열 (array) 동일한자료형을다수선언 선언형식 데이터형식 [ ] 배열이름 = new 데이터형식 [ 개수 ]; int[ ] array = new int[5]; 인덱스 (index) 는 0 에서시작 scores[0] = 80; scores[1] = 74; scores[2] = 81; scores[3] = 90; scores[4] = 34 [0] [1] [2] [3] [4] 80 74 81 90 34 for (int k=0; k < 5; k++) Console.WriteLine( scores[k] ); foreach (int score in scores) Console.WriteLine( score );

배열 초기화방법 string[ ] array1 = new string[3] " 안녕 ", "Hello", "Halo" ; string[ ] array2 = new string[ ] " 안녕 ", "Hello", "Halo" ; string[ ] array3 = " 안녕 ", "Hello", "Halo" ; 선언후메모리할당 string[ ] array4; // 참조변수 array4 = new string[3];

배열 참조배열 값타입 (value type) 배열의메모리생성 배열생성과동시에메모리확보 int[ ] array = new int[5]; 참조타입 (reference type) 배열의메모리생성 각원소의참조값을저장하는공간만확보 실제원소의객체를저장하기위한공간별도생성필요 Animal[ ] stock = new Animal[3]; stock[0] = new Animal( goat ); stock[1] = new Animal( cow ); stock[2] = new Animal( pig ); stock stock[0] stock[1] stock[2] goat cow pig

배열 class Animal private string species; public Animal(string name) this.species = name; public override string ToString() return species; class MainApp static void Main(string[] args) Animal[] stock = new Animal[3]; stock[0] = new Animal("goat"); stock[1] = new Animal("cow"); stock[2] = new Animal("pig"); Stock : goat = HashCode : 46104728 Stock : cow = HashCode : 12289376 Stock : pig = HashCode : 43495525 해시코드 (hashcode) : 객체의메모리가생성될때객체에부여되는 32 비트정수값 foreach (Animal name in stock) Console.WriteLine("Stock : 0 = HashCode : 1", name, name.gethashcode());

System.Array 클래스 System.Array 클래스 모든배열이상속받는클래스 분류 이름 설명 Sort() 배열정렬 BinarySearch<T>( ) 이진탐색수행 IndexOf( ) 배열에서찾고자하는특정데이터의인덱스반환 TrueForAll<T>( ) 배열의모든요소가지정한조건에부합하는지의여부반환 정적메소드 FindIndex<T>( ) Resize<T>( ) Clear( ) ForEach<T>( ) 배열에서지정한조건에부합하는첫번째요소의인덱스반환. IndexOf( ) : 특정값을갖는것의인덱스반환. FindIndex<T>( ) : 지정한조건의값을찾아인덱스반환. 배열의크기재조정 배열의모든요소초기화 배열의모든요소에대해동일한작업수행 인스턴스메소드 프로퍼티 Length Rank GetLength( ) 배열에서지정한차원의길이반환. 다차원배열에서유용 배열의길이반환 배열의차원반환

정적메소드 / 인스턴스메소드 정적메소드 (static method) 클래스의인스턴스를생성하지않아도호출할수있는메소드 static 키워드사용선언 class StClass public static void StaticMethod( ) // StClass.StaticMethod( ); 인스턴스메소드 (instance method) 클래스의인스턴스를생성해야만호출할수있는메소드 class InsClass public void InstanceMethod( ) // InsClass myobj = new InsClass(); MyObj.InstanceMethod( );

형식매개변수 / 델리게이트 형식매개변수 (type parameter) 메소드를호출할때 T 대신에기반자료형을변수처럼전달 BinarySearch<T>( ) Array.BinarySearch<int>(scores, 81); 델리게이트 (deligate, 대리인 ) 메소드를참조하는것 delegate int MyDeligate (int a, int b); public int Plus(int x, int y) return x+y; // MyDeligate Ops = new MyDeligate(Plus); ConsoleWrite(Ops(5,10)); Action 델리게이트 이름이없는델리게이트선언에사용 new Action<int>(Print);

class MainApp private static bool CheckPassed(int score) if ( score >= 60 ) return true; else return false; private static void Print(int value) Console.Write("0 ", value); int index = Array.FindIndex<int>(scores, delegate(int score ) if (score < 60) return true; else return false; ); scores[index] = 61; Console.WriteLine("Everyone passed? : 0", Array.TrueForAll<int>(scores, CheckPassed)); static void Main(string[ ] args) int[ ] scores = new int[ ]80, 74, 81, 90, 34; Console.WriteLine("Old length of scores : 0", scores.getlength(0)); Array.Resize<int>(ref scores, 10); foreach (int score in scores) Console.Write("0 ", score); Console.WriteLine("New length of scores : 0", scores.length); Array.ForEach<int>(scores, new Action<int>(Print)); Array.Sort(scores); Array.ForEach<int>(scores, new Action<int>(Print)); Console.WriteLine("Number of dimensions : 0", scores.rank); Console.WriteLine("Binary Search : 81 is at 0", Array.BinarySearch<int>(scores, 81)); Console.WriteLine("Linear Search : 90 is at 0", Array.IndexOf(scores, 90)); Console.WriteLine("Everyone passed? : 0", Array.TrueForAll<int>(scores, CheckPassed)); Array.Clear(scores, 3, 7); Array.ForEach<int>(scores, new Action<int>(Print)); 80 74 81 90 34 34 74 80 81 90 Number of dimensions : 1 Binary Search : 81 is at 3 Linear Search : 90 is at 4 Everyone passed? : False Everyone passed? : True Old length of scores : 5 New length of scores : 10 61 74 80 81 90 0 0 0 0 0 61 74 80 0 0 0 0 0 0 0

2 차원배열 2 차원배열 선언방법 데이터형식 [,] 배열이름 = new 데이터형식 [ 행의크기, 열의크기 ]; int[, ] array = new int[ 2, 3 ]; 배열사용 array[ 0, 0 ] = 1; array[ 0, 1 ] = 2; array[ 0, 2 ] = 3; array[ 1, 0 ] = 4; array[ 1, 2 ] = 5; array[ 1, 3 ] = 6; 배열의초기화 int[,] arr1 = new int[2, 3] 1, 2, 3, 4, 5, 6; int[,] arr2 = new int[,] 1, 2, 3, 4, 5, 6; int[,] arr3 = 1, 2, 3, 4, 5, 6;

class MainApp static void Main(string[] args) int[,] arr = new int[2, 3] 1, 2, 3, 4, 5, 6 ; GetLength(int dim) 메소드 지정된차원의크기반환 dim == 0 일때, 첫번째차원의크기반환 for (int i = 0; i < arr.getlength(0); i++) for (int j = 0; j < arr.getlength(1); j++) Console.Write("[0, 1] : 2 ", i, j, arr[i, j]); int[,] arr2 = new int[,] 1, 2, 3, 4, 5, 6 ; for (int i = 0; i < arr2.getlength(0); i++) for (int j = 0; j < arr2.getlength(1); j++) Console.Write("[0, 1] : 2 ", i, j, arr2[i, j]); int[,] arr3 = 1, 2, 3, 4, 5, 6 ; for (int i = 0; i < arr2.getlength(0); i++) for (int j = 0; j < arr2.getlength(1); j++) Console.Write("[0, 1] : 2 ", i, j, arr3[i, j]); [0, 0] : 1 [0, 1] : 2 [0, 2] : 3 [1, 0] : 4 [1, 1] : 5 [1, 2] : 6 [0, 0] : 1 [0, 1] : 2 [0, 2] : 3 [1, 0] : 4 [1, 1] : 5 [1, 2] : 6 [0, 0] : 1 [0, 1] : 2 [0, 2] : 3 [1, 0] : 4 [1, 1] : 5 [1, 2] : 6

다차원배열 다차원배열 2 차원이상의차원을갖는배열 2 차원배열의선언및사용방법동일 3 차원배열의선언및초기화예 int[,,] array = new int[4, 3, 2] 1, 2, 3, 4, 5, 6, 1, 4, 2, 5, 3, 6, 6, 5, 4, 3, 2, 1, 6, 3, 5, 2, 4, 1, ;

class MainApp static void Main(string[ ] args) int[,,] array = new int[4, 3, 2] 1, 2, 3, 4, 5, 6, 1, 4, 2, 5, 3, 6, 6, 5, 4, 3, 2, 1, 6, 3, 5, 2, 4, 1, ; for (int i = 0; i < array.getlength(0); i++) for (int j = 0; j < array.getlength(1); j++) Console.Write(" "); for (int k = 0; k < array.getlength(2); k++) Console.Write("0 ", array[i, j, k]); Console.Write(" ");

가변배열 가변배열 (Jagged Array) 배열의요소가배열이므로배열요소마다차원과크기가다르게지정가능 데이터형식 [ ][ ] 배열이름 = new 데이터형식 [ 가변배열의용량 ][ ]; int[][] jagged = new int[3][]; jagged[0] = new int[5] 1, 2, 3, 4, 5 ; jagged[1] = new int[] 10, 20, 30 ; jagged[2] = new int[] 100, 200 ; int[][] jagged2 = new int[2][] new int[] 1000, 2000, new int[4] 6, 7, 8, 9 ; jagged jagged[0] 1 2 3 4 5 jagged[1] 10 20 30 jagged[2] 100 200

class MainApp static void Main(string[ ] args) int[ ][ ] jagged = new int[3][ ]; jagged[0] = new int[5] 1, 2, 3, 4, 5 ; jagged[1] = new int[ ] 10, 20, 30 ; jagged[2] = new int[ ] 100, 200 ; foreach( int[ ] arr in jagged ) Console.Write("Length : 0, ", arr.length); foreach( int e in arr) Console.Write("0 ", e ); Console.WriteLine(""); Console.WriteLine(""); int[ ][ ] jagged2 = new int[2][ ] new int[ ] 1000, 2000, new int[4] 6, 7, 8, 9 ; foreach (int [ ] arr in jagged2) Console.Write("Length : 0, ", arr.length); foreach (int e in arr) Console.Write("0 ", e); Length : 5, 1 2 3 4 5 Length : 3, 10 20 30 Length : 2, 100 200 Length : 2, 1000 2000 Length : 4, 6 7 8 9

컬렉션 컬렉션 (collection) 같은성격의데이터를모아놓은자료구조 용량크기지정불필요, 필요에따라메모리용량증감 배열도.NET 프레임워크가제공하는컬렉션중의하나 ICollection 인터페이스를상속 ArrayList 리스트 (list) 자료구조지원 배열과유사 [ ] 사용원소접근 Queue Stack HashTable

컬렉션 ArrayList 리스트 (list) 자료구조지원 배열과유사 [ ] 사용원소접근 주소메소드 Add( ) : 컬렉션맨마지막에새원소추가 RemoveAt( ) : 특정인덱스위치의원소삭제 Insert( ) : 원하는위치에새원소추가 ArrayList list = new ArrayList(); list.add( 10 ); list.add( 20 ); list.add( 30 ); list.removeat( 1 ); // 20 을삭제 list.insert( 25, 1 ); // 25 를 1 번인덱스에삽입. 즉, 10 과 30 사이에 25 를삽입

ArrayList 사용예 class MainApp static void Main(string[] args) ArrayList list = new ArrayList(); for (int i = 0; i < 5; i++) list.add(i); foreach (object obj in list) Console.Write("0 ", obj); list.removeat(2); foreach (object obj in list) Console.Write("0 ", obj); list.insert(2, 2); foreach (object obj in list) Console.Write("0 ", obj); list.add("abc"); list.add("def"); for ( int i=0; i<list.count; i++ ) Console.Write("0 ", list[i]); 0 1 2 3 4 0 1 3 4 0 1 2 3 4 0 1 2 3 4 abc def

컬렉션 Queue 선입선출 (First In First Out) 구조의자료구조 주요메소드 Enqueue( ) : 큐의맨끝에원소추가 Dequeue( ) : 큐의맨앞에서원소삭제및반환 class MainApp static void Main(string[] args) Queue que = new Queue(); que.enqueue(1); que.enqueue(2); que.enqueue(3); que.enqueue(4); que.enqueue(5); while (que.count > 0) Console.WriteLine(que.Dequeue());

컬렉션 Stack 선입후출 (Firs In Last Out) 구조의자료구조 주요메소드 Push( ) Pop( ) class MainApp static void Main(string[ ] args) Stack stack = new Stack(); stack.push(1); stack.push(2); stack.push(3); stack.push(4); stack.push(5); while (stack.count > 0) Console.WriteLine(stack.Pop());

컬렉션 Hash Table 키 (Key) 와값 (Value) 으로이루어진데이터관리 키의해싱 (Hashing) 을통해테이블내의주소계산 탐색속도빠름 키를인덱스처럼사용 class MainApp static void Main(string[] args) Hashtable ht = new Hashtable( ); ht[" 하나 "] = "one"; ht[" 둘 "] = "two"; ht[" 셋 "] = "three"; ht[" 넷 "] = "four"; ht[" 다섯 "] = "five"; Console.WriteLine( ht[" 하나 "] ) ; Console.WriteLine( ht[" 둘 "] ); Console.WriteLine( ht[" 셋 "] ); Console.WriteLine( ht[" 넷 "] ); Console.WriteLine( ht[" 다섯 "] );

인덱서 인덱서 (Indexer) 인덱스를사용하여객체내의데이터를접근할수있도록하는프로퍼티 인덱서선언방법 class 클래스이름 한정자인덱서형식 this[ 형식 index] get // index 를이용하여내부데이터반환 set // index 를이용하여내부데이터저장

class MyList private int[ ] array; public MyList( ) array = new int[3]; class MainApp static void Main(string[] args) MyList list = new MyList(); for (int i = 0; i < 5; i++) list[i] = i; public int this[int index] get return array[index]; for (int i = 0; i<list.length; i++) Console.WriteLine(list[i]); set if (index >= array.length) Array.Resize<int>(ref array, index + 1); Console.WriteLine("Array Resized : 0", array.length); array[index] = value; public int Length get return array.length;

foreach 가능객체생성방법 foreach 가능객체 IEnumerable 과 IEnumerator 를상속하는형식만지원 class MyList : IEnumerable, IEnumerator // IEnumerator 멤버 public object Current // public void Reset() position = -1; public bool MoveNext() // MyList list = new MyList(); for (int i = 0; i < 5; i++) list[i] = i; // IEnumerable 멤버 public IEnumerator GetEnumerator() for (int i = 0; i < array.length; i++) yield return (array[i]); // foreach (int e in list) Console.WriteLine(e);

class MyList : IEnumerable, IEnumerator private int[] array; int position = -1; public MyList() array = new int[3]; public int this[int index] get return array[index]; set if (index >= array.length) Array.Resize<int>(ref array, index + 1); Console.WriteLine("Array Resized : 0", array.length); array[index] = value; // IEnumerator 멤버 public object Current get return array[position]; // IEnumerator 멤버 public bool MoveNext() if (position == array.length - 1) Reset(); return false; position++; return (position < array.length); public void Reset() position = -1; // IEnumerable 멤버 public IEnumerator GetEnumerator() for (int i = 0; i < array.length; i++) yield return (array[i]); yield return 을만나면, return 이일어나고, 다음번호출에지난번이후부분에서재시작 class MainApp static void Main(string[ ] args) MyList list = new MyList( ); for (int i = 0; i < 5; i++) list[i] = i; foreach (int e in list) Console.WriteLine(e);