1 / 47

Instructor:

CS 111. Fundamental Data Structure. อ. ดร. ชุรี เตชะวุฒิ. Instructor:. Lecture:. M Th 14:30 – 15:45 CSB308 Tu F 8:00 – 9:15 CSB309 Tu F 9:30 – 10:45 CSB309. Outlines. 1) Primitive data types 2) Variables 3) Arrays 4) Strings. 2 values On/Off. Light switch.

Download Presentation

Instructor:

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. CS 111 Fundamental Data Structure อ. ดร. ชุรี เตชะวุฒิ Instructor: Lecture: M Th 14:30 – 15:45 CSB308 Tu F 8:00 – 9:15 CSB309 Tu F 9:30 – 10:45 CSB309

  2. Outlines 1) Primitive data types 2) Variables 3) Arrays 4) Strings

  3. 2 values On/Off Light switch Computer type Size=2 Operation: turn on & turn off Primitive Data Types • Data type Defines a set of values and a set of operations that can be applied to those values. • The set of values for each type = the domain of the type

  4. int char float pointer array structure Primitive Data Types • 2 categories: Standard types atomic eg. Derived types complex structures using standard types eg.

  5. Primitive Data Types : Integer • int (Integer) • Number without fraction part • Integral number int long int short int Define a number of bytes allocated for an integer by the compiler.

  6. Primitive Data Types : Character • char (Character) • A character is any value that can be represented in the computer’s alphabet. • ASCII alphabet.

  7. Primitive Data Types : Floating Point • float (Floating point) • Number with a fraction part float double long double Float types are defined from smallest to largest e

  8. Name_1 Name_2 Variables • Variables are names for memory locations. • Each memory locations (or word) in a computer has an address. 000...000 … … 111...111 Addresses Memory

  9. score Variables • e.g. score  integer value of a score received in a test (88). 000...000 … … 88 111...110 111...111 Addresses Memory

  10. code B char code; i 14 int i; balance 1000000000 long balance; float payRate; payRate 15.25 pi 3.1414926536 double pi; Program Memory Variables Variable’s type Variable’s identifier

  11. Variables • The type defines: the range of the data that can be stored on the variable and the number of bytes that can be allocated for that variable.

  12. #include <stdio.h> void main ( ) { } char code; int m,n,result; result=m+n; ... Program Variables Declaration Operation e

  13. Arrays • Imagine: Processing 20 numbers  read – process – print Name_0 Name_1 … … … Name_ 18 Name_ 19 Memory 20 individual variables

  14. Arrays • Processing large amount of data (e.g. 200, 2000 numbers) • Need a powerful data structure called ARRAY. • Properties of arrays: • Fixed-size • Sequenced collection of elements of the same data type • Referring to the elements in the array as the 1st element, the 2nd element and so forth (subscripts). • Naming

  15. … … … Arrays Number 0 Number 1 Number[0] … Number[1] Number 18 … Number 19 Numbers Number[18] Number[19] Subscript form Numbers Index form

  16. Loops can be used to: • read/write elements • add/subtract/multiply/divide elements • more complex processing such as calculating average indexes Arrays • Processing the array by using a powerful set of programming constructs called LOOPS. • How can you write an instruction so that one time it refers to the 1st elements of an array and the next time it refers to another element?

  17. 0 0 ... 0 score[0] score[1] score[4] Arrays • How to use LOOPs for initializing elements in the array ? Example: Initialize zero value to every elements in the array named SCORE Let I  0 Repeat Set 0 to score[I] Add 1 to I Until I= 5 >> While and For loops<<

  18. Arrays • Draw a flow chart of processing an array of 20 numbers. - READ - PROCESS - PRINT

  19. Arrays START for i=0 to 19 READ number [i] PROCESS 20 numbers for i=0 to 19 PRINT number [i] STOP

  20. Arrays • One-dimensional arrays: Data are organized linearly in only one direction. (Previously described) • Two-dimensional arrays: Data are stored in rows and columns (table). • Multidimensional arrays

  21. First dimension (rows) 0 1 2 3 0 1 2 Second dimension (columns) Arrays • Properties of two-dimensional arrays: • Same as one-dimensional arrays. • But, the indexes represent rows and columns.

  22. Arrays User’s view row 0 row 1 00 01 02 10 11 12 [0][0] [0][1] [0][2] [1][0] [1][1] [1][2] row 2 20 21 22 [2][1] [2][2] [2][0] Memory’s view

  23. Arrays : Implementation • One dimensional array Simple problems Bubble sort Binary search Merge • Two dimensional array Operation on elements

  24. Simple problems : Example • สมมติคะแนนสอบของนักศึกษา 10 คน มีดังนี้ 56 78 45 41 52 60 49 65 67 64 • ต้องการทราบจำนวนนักศึกษา ที่มีคะแนนเกินค่าเฉลี่ย • วิเคราะห์ • ผลลัพธ์ที่ต้องการ: จำนวนนักศึกษาที่มีคะแนนเกินค่าเฉลี่ย(COUNT) • ข้อมูลที่กำหนดให้: คะแนนสอบของนักศึกษา 10 คน (A(10)) • ข้อมูลที่ต้องทราบ: • จำนวนนักศึกษา (N) • ผลรวมคะแนน = ผลบวกคะแนนสอบของนักศึกษาทั้งหมด(SUM) • วิธีคำนวณ: • ค่าเฉลี่ย = ผลรวมคะแนน / จำนวนนักศึกษา(MEAN)

  25. Simple problems : Algorithm Start Let SUM0 Let I  1 Let N  10 /* Read score to array */ Repeat Read A[I] Add 1 to I Until I = N /* Find summation of scores */ For I = 0 to N Read A[I] Add A[I] to SUM EndFor

  26. Simple problems : Algorithm /* Find average scores */ Compute MEAN  SUM / N /* Find No. of students */ For I = 1 to N If A[I] > MEAN Then Add 1 to COUNT EndIf EndFor /* Display result */ Display “No. of student is”, COUNT End

  27. Simple problems : Exercise • จงใช้ตัวแปรชุด (arrays)เพื่อเขียนอัลกอริทึม ผังงานและรหัสลำลองของปัญหาต่อไปนี้ ปัญหา 1: หาค่าที่มากที่สุดและค่าที่น้อยที่สุดของเลข 3 จำนวน ปัญหา 2: หาค่าที่มากที่สุดและค่าที่น้อยที่สุดของเลข N จำนวน ปัญหา 3: หาค่าที่มากที่สุดและค่าที่น้อยที่สุดของเลขจำนวนเต็มชุดหนึ่งไม่ทราบจำนวน โดยเลขชุดนี้เป็นเลขที่มีจำนวนหลักไม่เกิน 3 หลัก แบบฝึกหัดจากเอกสารประกอบการสอน CS111อ.ดร.วัชรี จำปามูล

  28. Simple problems : Exercise • ปัญหา 1: หาค่าที่น้อยที่สุดของเลข 3 จำนวน Start Let MIN0 Let I  1 Let N 3 /* Read number to array */ Repeat Read NUM[I] Add 1 to I Until I = N

  29. Simple problems : Exercise /* Compare numbers in array */ Let MIN  NUM[0] Repeat Read NUM[I] If NUM[I] <= MIN Then Let MIN  NUM[I] EndIf Add 1 to I Until I = N /* Display result */ Display “Minimum number is”, MIN End

  30. Simple problems : Exercise • ปัญหา 1: หาค่าที่มากที่สุดของเลข 3 จำนวน Start Let MAX0 Let I  1 Let N 3 /* Read number to array */ Repeat Read NUM[I] Add 1 to I Until I = N

  31. Simple problems : Exercise /* Compare numbers in array */ Let MAX NUM[0] Repeat Read NUM[I] If NUM[I] >=MAXThen Let MAX NUM[I] EndIf Add 1 to I Until I = N /* Display result */ Display “Maximum number is”, MAX End

  32. Bubble Sort : Example • สมมติเรามีลิสต์ (8, 1, -5, 2, 9) ต้องการเรียงข้อมูลในลิสต์ให้มีลำดับจากน้อยไปมาก นั่นคือเมื่อเรียงสำเร็จจะได้ลิสต์เป็น(-5, 1, 2, 8, 9) • การเปลี่ยนแปลงของข้อมูลในลิสต์เป็นดังนี้ 1 -5 2 8 9 -51 2 8 9 -5 1 2 8 9 -5 1 2 8 9 -5 1 2 8 9 -5 1 2 8 9 -5 1 2 8 9 -5 1 2 8 9 8 1 -5 2 9 18 -5 2 9 1-58 2 9 1 -5 28 9 ตัวอย่างจากเอกสารประกอบการสอน CS111อ.ดร.วัชรี จำปามูล

  33. Bubble Sort : Example x[0] x[1] ……… x[2] x[3] x[4] x

  34. Bubble Sort : Algorithm Module Bubble_Sort (x[ ], N) { X เป็นลิสต์หรือชุดของข้อมูลที่ต้องการเรียงจากน้อยไปมาก โดยมีจำนวนข้อมูลทั้งสิ้น N จำนวน } Exchanged  True /* ตัวบันทึกว่าได้ทำการสลับค่า */ I  1 /* I เป็นตัวเก็บตำแหน่งของมูลที่กำลังสนใจ */ While (I < N and Exchanged) Exchanged  False J  1 While (J < N) If (X[J] > X[J+1]) then Temp  X[J] X[J]  X[J+1] X[J+1]  Temp Exchanged  True Endif J  J + 1 EndWhile I  I + 1 EndWhile EndModule จากเอกสารประกอบการสอน CS111อ.ดร.วัชรี จำปามูล

  35. Bubble Sort : Algorithm(using array) Module Bubble_Sort (x[ ], N) { X เป็นลิสต์หรือชุดของข้อมูลที่ต้องการเรียงจากน้อยไปมาก โดยมีจำนวนข้อมูลทั้งสิ้น N จำนวน } Exchanged  True /* ตัวบันทึกว่าได้ทำการสลับค่า */ I  1 /* I เป็นตัวเก็บตำแหน่งของมูลที่กำลังสนใจ */ While (I < N and Exchanged) Exchanged  False J  0 While (J < N) If (X[J] > X[J+1]) then Temp  X[J] X[J]  X[J+1] X[J+1]  Temp Exchanged  True Endif J  J + 1 EndWhile I  I + 1 EndWhile EndModule จากเอกสารประกอบการสอน CS111อ.ดร.วัชรี จำปามูล

  36. Operations on Elements : Example • สมมติเรามีเมตริกซ์ ขนาด 2x3 ต้องการคูณข้อมูลในเมตริกซ์ให้มีค่าเพิ่มขึ้นสองเท่า • นั่นคือเมื่อคูณเสร็จจะได้เมตริกซ์ เป็น

  37. Operations on Elements : Algorithm Module Multiply_Elements (x[ ][ ], M, N) { X เป็น array ที่ต้องการคูณ 2 โดยมีจำนวนข้อมูลทั้งสิ้น M*N จำนวน } I  0 While (I < M) J  0 While (J < N) Temp  X[I][J] * 2 X[I][J]  Temp J  J + 1 EndWhile I  I + 1 EndWhile EndModule

  38. Operations on Elements : Example • สมมติเราต้องการบวกข้อมูลในสองเมตริกซ์ขนาด 3x3 • นั่นคือเมื่อบวกเสร็จจะได้เมตริกซ์ เป็น

  39. Operations on Elements : Algorithm Module Add_Two_Matrixes (x[][], y[][], M, N) { X และ Y เป็น array ที่ต้องการบวกมีขนาด M*N Z เป็น array ที่ใช้เก็บผลบวกมีขนาด M*N} I  0 While (I < M) J  0 While (J < N) Temp  X[I][J] + Y[I][J] Z[I][J]  Temp J  J + 1 EndWhile I  I + 1 EndWhile EndModule e

  40. Operations on Elements : Exercise จงเขียนรหัสลำลองเพื่อเปรียบเทียบค่าของสองเมตริกซ์ต่อไปนี้ M1= M2= ผลที่ได้จะแสดงเมตริกซ์ที่ค่าของสมาชิกแสดงผลของการเปรียบเทียบ ถ้า สมาชิกใน M1 มีค่ามากกว่า สมาชิกใน M2 ให้แทนค่าด้วย 1 ถ้า สมาชิกใน M1มีค่าเท่ากับ สมาชิกใน M2 ให้แทนค่าด้วย 0 ถ้า สมาชิกใน M1มีค่าน้อยกว่า สมาชิกใน M2ให้แทนค่าด้วย -1 ผลลัพธ์ที่ได้คือ

  41. Strings • Strings A sequence of characters. • Implementations Arrays (1 dimension) e.g. computer

  42. Strings : Example • สมมติเราต้องการเปรียบเทียบ String สองชุดที่มีความยาวเท่ากัน ที่ได้จากการ input ผ่านแป้นพิมพ์ ตัวอย่างเช่น • ให้เปรียบเทียบโดยแสดงผลว่า String ทั้งสองชุดนั้นคือ String ตัวเดียวกันหรือไม่

  43. Strings : Example Start /* this is a calling pseudo code */ Call input_data(A[ ], N) Call input_data(B[ ], N) Call Compare_data(A[ ], B[ ], N) Call Display_result(Identical) End

  44. Strings : Algorithm Module Input_data (X[], Size) { X เป็น array ที่เก็บ string ที่ได้จากการ input มีจำนวนเท่ากับSize} I  0 While (I < Size) Read X[I] I  I + 1 EndWhile EndModule

  45. Strings : Algorithm Module Compare_data (X[], Y[], Size) {X และ Y เป็น arrays ที่เก็บ string ที่ได้จากการ input มีจำนวนเท่ากับSize} Identical  true /* เป็นตัวบันทึกว่า เปรียบเทียบแล้วเหมือนกัน */ I  0 /* เป็นตัวเก็บตำแหน่งอักขระที่ต้องการเปรียบเทียบ */ While (I < Size and Identical) If (X[I] = Y[I]) then Identical  true else Identical  false Endif I  I + 1 EndWhile Call Display_result(Identical) EndModule

  46. Strings : Algorithm Module Display_result(Same_String) { Same_String เป็นตัวแปรบอกผลการเปรียบเทียบ } If (Same_String = true) then Display “Both strings are identical.” Else Display “Both strings are NOT identical.” Endif EndModule

  47. Strings : Exercise จงเขียนรหัสลำลองเพื่อเปลี่ยนลำดับ (reverse)ของstring ใดๆ ที่รับเข้ามาจากการป้อนข้อมูลเข้า แล้วแสดงผลลัพธ์เป็น stringที่ทำการ reverseแล้ว เช่น STUDENT ผลลัพธ์ที่ได้คือ TNEDUTS หมายเหตุ: ให้ใช้วิธี calling pseudo code end

More Related