Bài 10: Cấu trúc dữ liệu

Similar documents
TÀI LIỆU THỰC HÀNH MÔN CƠ SỞ DỮ LIỆU NÂNG CAO

CẤU TRÚC DỮ LIỆU NÂNG CAO

STACK và QUEUE. Lấy STACK

Nội dung chính của chương. Các công nghệ đĩa cứng Cấu tạo vật lý của đĩa cứng Cấu tạo logic của đĩa cứng Cài đặt đĩa cứng như thế nào?

Khối: Cao Đẳng nghề và Trung Cấp Năm 2009

Tài liệu hướng dẫn: Stored Procedure

Bộ môn MMT&TT, Khoa Công Nghệ Thông Tin và TT, ĐH Cần Thơ

Khoa KH & KTMT Bộ môn Kỹ Thuật Máy Tính

BẢO MẬT TRONG SQL SERVER

Lecture 12. Trees (1/2) Nội dung bài học:

Cụ thể những công việc mà AndroidManifest.xml thực hiện: - Đặt tên cho Java package của ứng dụng.

Bộ môn HTMT&TT, Khoa Công Nghệ Thông Tin và TT, ĐH Cần Thơ

Internet Protocol. Bởi: Phạm Nguyễn Bảo Nguyên

Cài đặt và cấu hình StarWind iscsi trên Windows. iscsi SAN là gì?

HƯỚNG DẪN CÀI ĐẶT PHẦN MỀM DIỆT VIRUS AVIRA

BÀI TẬP THỰC HÀNH LẬP TRÌNH WINDOWS C#

ĐỌC, GHI XML VỚI C# TRONG ADO.NET --- SỬ DỤNG VISUAL STUDIO

LÂ P TRI NH WEB ASP.NET

NHẬP MÔN LẬP TRÌNH KHOA HỌC DỮ LIỆU. Bài 10: Thư viện Pandas (2)

HƯỚNG DẪN SỬ DỤNG PLESK PANEL

BÀI 1: VBA LÀ GÌ? TẠO MACRO, ỨNG DỤNG CÁC HÀM TỰ TẠO (UDF), CÀI ĐẶT ADD-INS VBA là gì?

Chương 5. Network Layer 19/09/2016 1

Bài 7: Các cấu trúc điều khiển

Tình huống 1: PPPoE với Username và Password

Chương 5. Network Layer. Phần 1 - Địa chỉ IPv4. Tài liệu : Forouzan, Data Communication and Networking

NHÚNG. Vi ñiều khiển BM Kỹ Thuật ðiện Tử - ðh Bách Khoa TP.HCM 2

Giáo trình này được biên dịch theo sách hướng dẫn của Sun Light. Vì là hướng dẫn kỹ thuật, trong này những thuật ngữ kỹ thuật bằng tiếng Anh tôi chỉ

SIMULATE AND CONTROL ROBOT

Bài tập lớn số 1. Giả lập bộ định thời

HƯỚNG DẪN SỬ DỤNG ĐẦU GHI H.264 DVR VISION VS (4CH - 8CH - 16CH)

Chương 6. Transport Layer. Tài liệu : Forouzan, Data Communication and Networking

PHÁT TRIỂN ỨNG DỤNG WEB

CHƯƠNG 2: CÁC ĐẶC ĐIỂM VỀ MÔI TRƯỜNG PHÁT TRIỂN (IDE)

Phần 2. SỬ DỤNG POWERPOINT ĐỂ CHUẨN BỊ NỘI DUNG TRÌNH BÀY

Bài Thực hành Asp.Net - Buổi 1 - Trang: 1

Nhấn nút New để tạo 1 biến mới Trang 17

LẬP TRÌNH WINDOWS FORM VỚI CÁC CONTROL NÂNG CAO (Các control trình bày dữ liệu dưới dạng danh sách)

Tröôøng Ñaïi Hoïc Baùch Khoa Tp.HCM LẬP TRÌNH MINICHAT. Bài giảng 3. Trang1. Khoa Khoa Học Và Kỹ Thuật Máy Tính

Chương 7. Application Layer. Tài liệu : Forouzan, Data Communication and Networking

HƯỚNG DẪN CÁCH SỬ DỤNG WINDOWS MOVIE MAKER

Bài 13: C++11. EE3490: Kỹ thuật lập trình HK1 2017/2018 TS. Đào Trung Kiên ĐH Bách khoa Hà Nội

Ôn tập Thiết bị mạng và truyền thông DH07TT - Lưu hành nội bộ (không sao chép dưới mọi hình thức)

TỔNG QUAN VỀ.NET VÀ C#

SIEMENS INDUSTRIAL NETWORKS

Môn Học: Cơ Sở Dữ Liệu 2. Chương 3 LẤY DỮ LIỆU TỪ NHIỀU NGUỒN

GV: Phạm Đình Sắc or

HƯỚNG DẪN SỬ DỤNG HỆ THỐNG CẬP NHẬT CHỨNG THƯ SỐ HOTLINE:

GIẢI THUẬT ĐỊNH TUYẾN (ROUTING ALGORITHM)

HƢỚNG DẪN TRIỂN KHAI KASPERSKY - MOBILE DEVICE MANAGEMENT

Dọn "rác" Windows 7 vào dịp cuối năm

Tạo Project với MPLAB

Bài tập căn bản Visual Basic.Net Vòng lặp. txtn. txtketqua. btntinh. txtn. txtketqua. btntinh. Trang 1

Entity Framework (EF)

Tạo repository mới. The working tree. The staging index. Lệnh git init tạo một repository loại git. tại thư mục hiện tại: $ git init

B5: Time to coding. Tới thư mục src/example.java và thay đổi nội dung file như sau: Mã: package at.exam;

Kỹ thuật thu nhỏ đối tượng trong Design (Layout)

Lab01: M V C Lưu ý: Để thực hành, các bạn phải cài Visual Studio 2013 trở lên mới hỗ trợ MVC5.

I. Hướng Dẫn Đăng Nhập:

Hướng dẫn cài đặt FPT

Mô hình dữ liệu quan hệ (Relational data model)

Tính kế thừa-2. Bởi: Thanh Hiền Vũ. Định nghĩa lại các thành viên lớp cơ sở trong một lớp dẫn xuất:

Đa ngôn ngữ (Internationalization) trong Servlet

BÀI THỰC HÀNH SỐ 1. Quản trị tập tin: 1/ Tạo các thư mục sau: Bài tập thực hành linux Linuxlab. bt1 bt11 bt111. bt121. bt12. bh1 bh11 bh111.

CHƯƠNG 5: LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG TRONG VB.NET

ĐỀ CƯƠNG CHI TIẾT HỌC PHẦN

HƯỚNG DẪN SỬ DỤNG DỊCH VỤ CDN

HỢP ĐỒNG MUA BÁN HÀNG HÓA QUỐC TẾ GV: NGUYỄN THỊ BÍCH PHƯỢNG

BÀI GIẢNG CHƯƠNG 3 GIAO TIẾP KẾT NỐI SỐ LIỆU

Khoa Công Nghệ Thông Tin Trường Đại Học Cần Thơ. Những hỗ trợ tiên tiến khác của SQL. Đỗ Thanh Nghị

Bài thực hành số 2 QUYỀN và ROLE

Lập trình chuyên nâng cao. Lập trình phân tán (Distributed computing

Mạng máy tính - Computer Network: Hệ. Giao thức - Protocol:

KIẾN TRÚC MÁY TÍNH. Giảng viên: ThS. Phan Thanh Toàn. v

Google Search Engine. 12/24/2014 Google Search Engine 1

Tìm hiểu Group Policy Object và các ví dụ

Online Appointment System will work better with below conditions/ Hệ thống đặt hẹn online sẽ hoạt động tốt hơn với điều kiện sau đây:

Khối: Cao Đẳng nghề và Trung Cấp Năm 2009

Bài 10. Cấu trúc liên nối. khác nhau được gọi là cấu trúc liên nối. nhu cầu trao đổi giữa các module.

Hướng Dẫn Thực Hành Tập tin & Thư mục

MỤC LỤC. Giáo trình Thiết kế web Trang 1

BELGIUM ONLINE APPOINTMENT

TÀI LIỆU HƯỚNG DẪN SỬ DỤNG HOSTING PLESK PANEL

NỘI DUNG ÔN TẬP MÔN HỆ CƠ SỞ DỮ LIỆU

LINQ TO SQL & ASP.NET

Các kiểu định địa chỉ họ MSC-51

HƯỚNG DẪN SỬ DỤNG DỊCH VỤ CDN

Cập nhật ResultSet trong JDBC

Câu 1: (2 điểm) So sách giữa 2 đối tượng Response và Request. Cho ví dụ minh hoạ.

BÀI 6a LẬP TRÌNH ĐA TUYẾN (MULTI THREAD)

LẬP TRÌNH 8051 SỐ HỌC VÀ LÔ GIC

LAB IP SLA Bài 1. Bùi Quốc Kỳ ***

HƯỚNG DẪN SỬ DỤNG NHANH MINDJET MIND MANAGER

Chủ đề 7: Triển khai và Bảo trì. COMP1026 Introduction to Software Engneering CH7-1 HIENLTH

Phần 1: Hướng dẫn sử dụng PictureBox tạo Slide Show

CHAPTER 6: DANH SÁCH LIÊN KẾT (LINKED LISTS)

LỖI LÚC THỰC THI và QUÁ TRÌNH GOM RÁC

BÀI 6 LÀM VIỆC VỚI THÀNH PHẦN MỞ RỘNG CỦA CSS3

PHÁT TRIỂN ỨNG DỤNG DI ĐỘNG NÂNG CAO

Nội dung. Thêm về Java 2. Nguyễn Việt Hà

Exceptions. Outline 7/31/2012. Exceptions. Exception handling is an important aspect of objectoriented. Chapter 10 focuses on:

Transcription:

KHOA CÔNG NGHỆ THÔNG TIN BỘ MÔN CÔNG NGHỆ PHẦN MỀM Bài 10: Bài giảng LẬP TRÌNH CƠ BẢN

Tài liệu tham khảo Kỹ thuật lập trình C: cơ sở và nâng cao, Phạm Văn Ất, Nhà xuất bản KHKT Chương 7 2

Mục tiêu Tìm hiểu kiểu dữ liệu cấu trúc và công dụng Định nghĩa cấu trúc Khai báo các biến kiểu cấu trúc Cách truy cập vào các phần tử của cấu trúc Khởi tạo biến cấu trúc Sử dụng biến cấu trúc trong câu lệnh gán Cách truyền tham số cấu trúc Sử dụng mảng các cấu trúc Tìm hiểu cách khởi tạo mảng các cấu trúc 3

Mục tiêu Con trỏ cấu trúc Cách truyền tham số kiểu con trỏ cấu trúc Tìm hiểu từ khóa typedef Sắp xếp mảng bằng phương pháp Bubble sort và Insertion sort. 4

Cấu Trúc Một cấu trúc bao gồm các mẫu dữ liệu, không nhất thiết cùng kiểu, được nhóm lại với nhau. Một cấu trúc có thể bao gồm nhiều mẫu dữ liệu như vậy. Biến 1 I I L L U S I O N B A C H 1 5 L L U S I O N Mảng Tên sách Tác giả Lần xuất bản

Định Nghĩa Cấu Trúc Việcđịnh nghĩa cấu trúc sẽ tạo ra kiểu dữ liệu mới cho phép người dùng sử dụng chúngđể khai báo các biến kiểu cấu trúc. Các biến trong cấu trúcđược gọi là các phần tử của cấu trúc hay thành phần của cấu trúc Ví dụ: struct cat { char bk_name [25]; char author [20]; int edn; float price; }; 6

Khai Báo Biến Cấu Trúc Khi một cấu trúc đã được định nghĩa, chúng ta có thể khai báo một hoặc nhiều biến kiểu này. Ví dụ: struct cat books1; Câu lệnh này sẽ dànhđủ vùng nhớđể lưu trữ tất cả các mục trong một cấu trúc. struct cat { char bk_name[25]; char author[20]; int edn; float price; } books1, books2; 7 struct cat books1, books2; hoặc struct cat books1; struct cat books2;

Truy Cập Phần Tử của Cấu Trúc Các phần tử của cấu trúc được truy cập thông qua việc sử dụng toán tử chấm (.), toán tử này cònđược gọi là toán tử thành viên - membership. Cú pháp: structure_name.element_name Ví dụ: scanf( %s, books1.bk_name); 8

Khởi Tạo Cấu Trúc Giống như các biến khác và mảng, các biến kiểu cấu trúc có thể được khởi tạo tại thời điểm khai báo struct employee { int no; char name [20]; }; Các biến emp1 và emp2 có kiểu employee có thể được khai báo và khởi tạo như sau: struct employee emp1 = {346, Abraham }; struct employee emp2 = {347, John }; 9

Câu Lệnh Gán Sử Dụng Các Cấu Trúc Có thể sử dụng câu lệnh gánđơn giảnđể gán giá trị của một biến cấu trúc cho một biến khác có cùng kiểu Chẳng hạn, nếu books1 và books2 là các biến cấu trúc có cùng kiểu, thì câu lệnh sau là hợp lệ books2 = books1; 10

Câu Lệnh Gán Sử Dụng Các Cấu Trúc Trong trường hợp không thể dùng câu lệnh gán trực tiếp, thì có thể sử dụng hàm tạo sẵn memcpy() Cú pháp: memcpy (char * destn, char &source, int nbytes); Ví dụ: memcpy (&books2, &books1, sizeof(struct cat)); 11

Cấu Trúc Lồng Trong Cấu Trúc Một cấu trúc có thể lồng trong một cấu trúc khác. Tuy nhiên, một cấu trúc không thể lồng trong chính nó. struct issue { }issl; char borrower [20]; char dt_of_issue[8]; struct cat books; Việc truy cập vào các phần tử của cấu trúc này tương tự như với cấu trúc bình thường khác, issl.borrower Để truy cập vào phần tử của cấu trúc cat là một phần của cấu trúc issl, issl.books.author 12

Truyền tham số kiểu cấu trúc Tham số của hàm có thể là một cấu trúc. Là một phương tiện hữu dụng khi muốn truyền một nhóm các thành phần dữ liệu có quan hệ logic với nhau thông qua một biến thay vì phải truyền từng thành phần một Kiểu của tham số thực phải trùng với kiểu của tham số hình thức. 13

Mảng Cấu Trúc Một áp dụng thường gặp là mảng cấu trúc Một kiểu cấu trúc phảiđượcđịnh nghĩa trước, sauđó một biến mảng có kiểuđó mớiđược khai báo Ví dụ: struct cat books[50]; Để truy cập vào thành phần author của phần tử thứ tư của mảng books: books[4].author 14

Khởi Tạo Các Mảng Cấu Trúc Mảng cấu trúcđược khởi tạo bằng cách liệt kê danh sách các giá trị phần tử của nó trong một cặp dấu móc Ví dụ: struct unit { char ch; int i; }; struct unit series [3] = {{ a, 100}{ b, 200}{ c, 300}}; 15

Con TrỏĐến Cấu Trúc Con trỏ cấu trúcđược khai báo bằng cáchđặt dấu * trước tên của biến cấu trúc. Toán tử ->được dùngđể truy cập vào các phần tử của một cấu trúc sử dụng một con trỏ Ví dụ: struct cat *ptr_bk; ptr_bk = &books; printf( %s,ptr_bk->author); Con trỏ cấu trúcđược truyền vào hàm, cho phép hàm thayđổi trực tiếp các phần tử của cấu trúc. 16

Từ Khóa typedef Một kiểu dữ liệu có thểđượcđịnh nghĩa bằng cách sử dụng từ khóa typedef Nó không tạo ra một kiểu dữ liệu mới, màđịnh nghĩa một tên mới cho một kiểuđã có. Cú pháp: typedef type name; Ví dụ: typedef float deci; typedef không thể sử dụng với storage classes 17

Sắp xếp mảng Sắp xếp liên quanđến việc thayđổi vị trí các phần tử theo thứ tự xácđịnh như tăng dần hay giảm dần Dữ liệu trong mảng sẽ dễ dàng tìm thấy hơn nếu mảngđược sắp xếp Hai phương pháp sắp xếp mảngđược trình bày: Bubble Sort và Insertion Sort Trong phương pháp Bubble sort, việc so sánh bắtđầu từ phần tử dưới cùng và phần tử có giá trị nhỏ hơn sẽ chuyển dần lên trên (nổi bọt) Trong phương pháp Insertion sort, mỗi phần tử trong mảngđược xem xét, và đặt vào vị tríđúng của nó giữa các phần tửđãđược sắp xếp 18

Bubble Sort 19

Bubble Sort - tt #include <stdio.h> void main() { int i,j,temp,arr_num[5]={23,90,9,25,16}; clrscr(); for(i=3;i>=0;i--) /* Tracks every pass */ for(j=4;j>=4-i;j--) { /* Compares elements */ if(arr_num[j]<arr_num[j-1]) { temp=arr_num[j]; arr_num[j]=arr_num[j-1]; arr_num[j-1]=temp; } } Contd.. 20

Bubble Sort - tt printf("\nthe sorted array"); for(i=0;i<5;i++) printf("\n%d", arr_num[i]); getch(); } 21

Insertion Sort 22

Insertion Sort - tt #include<stdio.h> void main() { int i, j, arr[5] = { 23, 90, 9, 25, 16 }; char flag; clrscr(); }23 /*Loop to compare each element of the unsorted part of the array*/ for(i=1; i<5; i++) /*Loop for each element in the sorted part of the array*/ for(j=0,flag='n'; j<i&&flag=='n'; j++) { if(arr[j]>arr[i]) { /*Invoke the function to insert the number*/ insertnum(arr, i, j); flag='y'; } } printf("\n\nthe sorted array\n"); for(i=0; i<5; i++) printf("%d\t", arr[i]); getch();

Insertion Sort-3 insertnum(int arrnum[], int x, int y) { int temp; /*Store the number to be inserted*/ temp=arrnum[x]; /*Loop to push the sorted part of the array down from the position where the number has to inserted*/ for(;x>y; x--) arrnum[x]=arrnum[x-1]; /*Insert the number*/ arrnum[x]=temp; } 24

Tóm tắt nội dung Khái niệm về cấu trúc dữ liệu Định nghĩa cấu trúc dữ liệu đơn giản nâng cao (mảng, con trỏ, tích hợp,..) Một số thuật t toán sắp xếp 25

Thảo luận Sử dụng mảng cấu trúc Tìm hiểu cách truyền tham số kiểu cấu trúc 26

CÂU HỎI VÀ BÀI TẬP Bài 26: Xây dựng cấu trúc phân số (PS1) gồm: Tử số, mẫu số và các hàm: nhập, in, tối giản Bài 27: Xây dựng cấu trúc Sinh viên: Viết chương trình nhập vào họ tên, điểm của n học sinh. Xếp loại văn hóa theo cách sau: Điểm Xếp loại 9, 10 Giỏi 7, 8 Khá 5, 6 Trung bình dưới 5 Không đạt In danh sách lên màn hình 27

HỎI VÀ ĐÁP