1 / 26

Arrays

Arrays. 01204111 Computer & Programming Group 350-352 Dept. of Computer Engineering Kasetsart University. Adopted from Thanomkulabut’s experiences. Brushed up by MikeLab .Net Factory @KU. Version 2012. Review. An array is an indexed collection of objects, all of the same type

teige
Télécharger la présentation

Arrays

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Arrays 01204111 Computer & Programming Group 350-352 Dept. of Computer Engineering Kasetsart University Adopted from Thanomkulabut’s experiences. Brushed up by MikeLab.Net Factory @KU. Version 2012

  2. Review • An array is an indexed collectionof objects, all of the same type • Array declaration double[] score; score = new double[5]; double[] score; score = new double[5]{1,2,3,3,5}; score score 1 2 3 4 5

  3. Review (2) • Declaration only • int [] ai; • Declaration & creation • int [] ai =newint[4]; • Declaration & creation & initialization • int [] ai=newint[4]{1, 2, 3, 4}; • int [] ai= newint[]{1, 2, 3, 4}; • int [] ai= {1, 2, 3, 4};

  4. 3 0 1 2 score Review (3) • Access array elements int [] score = newint[4]; Runtime Error!! -3 4 7 score[4] = 5; score[0] = -3; score[2+1] = 7; Score[3-1] = score[0]+score[3] Console.WriteLine(score[2]); 4

  5. Arrays Concept • Array is a reference data type. • Reference variables are used to refer to the data, not the data themselves. score Create Label double[] score; score = new double[5]; Reserve Memory id 0 1 2 3 4

  6. Arrays with Methods :Example1 11 14 15 micky 1 4 5 class AM { static void Main(){ int[] Arr = {1, 4, 5}; Console.WriteLine (“1:{0} {1} {2}”,Arr[0],Arr[1],Arr[2]); Add10(Arr); Console.WriteLine (“2:{0} {1} {2}”,Arr[0],Arr[1],Arr[2]); } static void Add10(int[] micky){ for(int i=0;i<micky.Length;i++) micky[i] += 10; } } Arr id 0 1 2 Output 1: 1 4 5 2: 11 14 15

  7. Arrays with Methods :Example2 static void Main(){ char[] data; data = ReadArray(4); showArray(data); } static char[] ReadArray(int N){ char[] info = new char[N]; for(int i=0;i<N;i++) info[i] = char.Parse(Console.ReadLine()); return info; } static void showArray(char[] Nobi){ for(int i=0;i<Nobi.Length;i++) Console.Write(Nobi[i]); } data info Nobi info B e a r N=4 id 0 1 2 3 B e a r B e a r Monitor

  8. Self test static void Main(){ int[] mynum; mynum = new int[5] {4,0,-1,2,3}; Change(mynum); for(inti=0; i<mynum.Length; i++) Console.Write("{0} ",mynum[i]); } static void Change(int[] arr){ arr[0] = 5; arr[2] = 7; arr[3] = -8; } • What is the output of this partial program?

  9. Example 1 static void Main(){ char[] name1,name2; name1 = new char[4] {'N','O','B','I'}; name2 = reverse(name1); showArr(name1); showArr(name2); } static char[] reverse(char[] arr){ int j=0; char[] arr_re = new char[arr.Length]; for(int i=arr.Length-1;i>=0;i--){ arr_re[j] = arr[i]; j++; } return arr_re; } static void showArr(char[] arr){ foreach(char x in arr) Console.Write(x); Console.WriteLine(); } • What is the output of this partial program? Output NOBI IBON

  10. Pass by value VS by reference • Pass by value • We can only change the elements inside the array • Pass by reference • We can change the elements inside the array • We can change the array that variable refers to

  11. mynum Pass by Value 5 0 -1 4 id id 0 2 0 2 1 1 static void Main(){ int[] mynum; mynum = new int[3] {4,0,-1}; Console.WriteLine ("Before mynum[0] = {0}",mynum[0]); Change(mynum); Console.WriteLine ("After mynum[0] = {0}",mynum[0]); } static void Change(int[] arr){ arr[0] = 5; arr = new int[3] {10,13,15}; Console.WriteLine ("In Change arr[0] = {0}",arr[0]); } arr 13 15 10 Output Before mynum[0] = 4 In Change arr[0] = 10 After mynum[0] = 5

  12. Pass by Reference mynum arr 5 0 -1 4 id id 0 2 0 2 1 1 static void Main(){ int[] mynum; mynum = new int[3] {4,0,-1}; Console.WriteLine ("Before mynum[0] = {0}",mynum[0]); Change(ref mynum); Console.WriteLine ("After mynum[0] = {0}",mynum[0]); } static void Change(ref int[] arr){ arr[0] = 5; arr = new int[3] {10,13,15}; Console.WriteLine ("In Change arr[0] = {0}",arr[0]); } mynum arr 13 15 10 Output Before mynum[0] = 4 In Change arr[0] = 10 After mynum[0] = 10

  13. Multi-dimensional Array (introduction) • If you want to keep score of 50 students • If each student have 10 test double[] score = new double[50]; double[] score0 = new double[50]; double[] score1 = new double[50]; double[] score2 = new double[50]; double[] score9 = new double[50];

  14. Multi-dimensional Array Declaration • 1 dimension • <type> [] <name>; • int [] score; • Multi-dimensional • 2 Dimension • <type> [ , ] <name>; • int [ , ] score; • 3 Dimension • <type> [ , , ] <name>; • int [ , , ] score;

  15. Multi-dimensional Array Declaration score • 1 Dimension • <name> = new <type>[<dim size>]; • score = new int[4]; • 2 Dimension • <name> = new <type>[<dim1 size >,<dim2 size>]; • score = new int[4,2]; • 3 Dimension • <name> = new <type>[<dim1 size>,<dim2 size>,<dim3 size>]; • score = new int[4, 2, 3]; score score

  16. Multi-dimensional Array Declaration with Initialization • 1 Dimension • int[] score = new int[3] {6, 1, 3}; • 2 Dimension • int [,] score = new int[2, 3] { {1, 8, 4} ,{3, 6, 9} }; • int [,] score = { {1, 8, 4} ,{3, 6, 9} }; • int [,] score = { {1, 8, 4} ,{3, 6, 9} }; score 6 1 3 score 1 8 4 3 6 9

  17. Index of Multi-dimensional Array int[,] score = { {5,3,1}, {9,2,4} }; 0 1 2 • score[0,1] = 7; • score[2-1 , 1+1] = 0; • Console.Write(score[0,0]); • for(int i = 0; i<=2 ; i++) score[0,i] = 3; • Console.Write(score.Length); score 0 7 3 5 3 3 1 3 1 0 9 2 4 5 6

  18. Selftest Matrix • Declare, create and initialize array name Matrix ‘v’ ‘a’ ‘y’ ‘q’ ‘p’ ‘z’ Format I char[,] Matrix; ‘s’ ‘b’ Matrix = new char[4,2]{ {'v','a'}, {'y','q'}, {'p','z'}, {'s','b'} };

  19. 0 1 2 Array.GetLength() score 0 5 3 1 1 9 2 4 • Get numbers of ROW in ARRAY • arrayname.GetLength(0); • score.GetLength(0); • Get numbers of Column in ARRAY • arrayname.GetLength(1); • score.GetLength(1); • Get numbers of all elements in ARRAY • arrayname.Length; • score.Length; 2 3 6

  20. Example 2 Student 1 • Write the program to get score from 4 students (each student has 2 test) score1= 3 score2= 8 Student 2 score1= 6 score2= 7 Student 3 score1= 8 score2= 10 Student 4 score1= 9 score2= 7

  21. Student 1 Example 2 score1= 3 score2= 8 Student 2 score1= 6 score2= 7 • Write the program to get score from 4 students (each student has 2 test) Student 3 score1= 8 score2= 10 double[,] score = new double[4,2]; for(int i=0;i<score.GetLength(0);i++){ Console.WriteLine("Student {0}",i+1); for(int j=0;j<score.GetLength(1);j++) { Console.Write("score{0} = ",j+1); score[i,j] = double.Parse(Console.ReadLine()); } Console.WriteLine(); } Student 4 score1= 9 score2= 7 score 0 1 0 3 8 1 6 7 2 8 10 3 9 7

  22. Example 2 with Method static void Main(){ double [,] arr; arr = ReadArray2(2,4); } static double[,] ReadArray2(int row, int col){ double[,] score = new double[4,2]; for(int i=0;i<score.GetLength(0);i++){ Console.WriteLine("Student {0}",i+1); for(int j=0;j<score.GetLength(1);j++){ Console.Write("score{0} = ",j+1); score[i,j] = double.Parse(Console.ReadLine()); } Console.WriteLine(); } return score; }

  23. Self test 3 8 6 7 • From previous example, write the partial program to find summation of all scores of all students 8 10 9 7 double sum = 0; for(int i=0;i<score.GetLength(0);i++){ for(int j=0; j<score.GetLength(1); j++){ sum += score[i,j]; } } Console.WriteLine("Sumation = {0}",sum); score 0 1 0 1 2 3

  24. Self test 3 8 6 7 • From previous example, write the partial program to find average of scores of all students in first test 8 10 9 7 double sum = 0; for(int i=0;i<score.GetLength(0);i++){ sum += score[i,0]; } double avg = sum/score.GetLength(0); Console.WriteLine ("Average of First test = {0}",avg); score 0 1 0 1 2 3

  25. Self test 3 8 6 7 • From previous example, write the partial program to find average scores of all test of last student 8 10 9 7 double sum = 0; for(int j=0;j<score.GetLength(1);j++){ sum += score[3,j]; } double avg = sum/score.GetLength(1); Console.WriteLine ("Average of last student = {0}",avg); score 0 1 0 1 2 3

  26. How to find Array’s #dimension? • By property Rank int [] matrix = new int[5]; Console.WriteLine(matrix.Rank); 1 int [,] matrix = new int[5,2]; Console.WriteLine(matrix.Rank); 2 int [,,] matrix = new int[5,2,3]; Console.WriteLine(matrix.Rank); 3

More Related