1. Trang chủ
  2. » Giáo án - Bài giảng

Chương 03: TỔ CHỨC DỮ LIỆU TRONG CHƯƠNG TRÌNH C

60 346 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Nội dung

Chương 03 TỔ CHỨC DỮ LIỆU TRONG CHƯƠNG TRÌNH Lê Thành Sách Trường Đại Học Bách Khoa Trung Tâm Kỹ Thuật Điện Toán © 2016 Lập trình C/C++ Nội dung n n n n n n n n n Dữ liệu Kiểu liệu Từ khoá Biến Khai báo biến Tầm vực biến Phép toán biểu thức Kiểu enum Hằng số Chuyển đổi kiểu liệu Bài tập Trường Đại Học Bách Khoa Trung Tâm Kỹ Thuật Điện Toán © 2016 Lập trình C/C++ Dữ liệu Kiểu liệu n Tại phải cần đến kiểu liệu? n n Mọi chương trình cần đến liệu Ví dụ: n Một chương trình in tên đơn giản int main(){ printf(“LAP TRINH C/C++”); return 0; } n => Cần lưu trữ liệu “LAP TRINH C/C++” để xuất hình Trường Đại Học Bách Khoa Trung Tâm Kỹ Thuật Điện Toán © 2016 Lập trình C/C++ Dữ liệu Kiểu liệu n Tại phải cần đến kiểu liệu? n n Mọi chương trình cần đến liệu Ví dụ: n Một chương trình giải Phương trình bậc n Dữ liệu: n Các hệ số A,B,C Phương trình bậc n Delta n Các nghiệm phương trình n Một chương trình Quản lý nhân n Dữ liệu: n Mã số nhân sự, họ tên, hệ số lương, v.v Trường Đại Học Bách Khoa Trung Tâm Kỹ Thuật Điện Toán © 2016 Lập trình C/C++ Dữ liệu Kiểu liệu n Tại phải cần đến kiểu liệu? n n Mọi chương trình cần đến liệu Người lập trình cần vùng nhớ (thuộc RAM máy tính) để lưu trữ liệu trình chương trình thực thi n Khi người dùng nhập liệu (thông qua bàn phím, chọn hình, đọc từ sensor, v.v): liệu lưu vào vùng nhớ RAM n Ví dụ: Đọc hệ số A,B,và C cho Phương trình bậc từ bàn phím n Trong trình chương trình thực thi: vùng nhớ đọc xử lý n Ví dụ: tính DELTA giải Phương trình bậc 2, hệ số đọc giá trị dùng biểu thức để tính DELTA (DELTA = B*B – 4*A*C;) Trường Đại Học Bách Khoa Trung Tâm Kỹ Thuật Điện Toán © 2016 Lập trình C/C++ Dữ liệu Kiểu liệu n Các kiểu liệu n Dữ liệuchương trình lưu trữ thuộc nhiều dạng (gọi kiểu hay kiểu liệu, data type) khác n n n n n n n n Ký tự (character) Một hai trạng thái: có hay không, hay sai Các số n Số nguyên n Số thực Một chuỗi: “LAP TRINH C/C++” Một dãy giá trị Một tổ hợp giá trị (struct, class) Một số giá trị cho trước (enum) … Trường Đại Học Bách Khoa Trung Tâm Kỹ Thuật Điện Toán © 2016 Lập trình C/C++ Dữ liệu Kiểu liệu n Các kiểu liệu n Ngoài tính chất lưu trữ khác nhau, chương trình cần thiết phân biệt kiểu liệu nói trên, kiểu quy định thông tin kèm khác n n Cách tổ chức bit (lưu trữ) n Ví dụ: n Với số nguyên: Ý nghĩa bit có trọng số lớn (MSB) phụ thuộc vào có kiểu số có dấu hay không dấu n Số không dấu: bit tham gia vào tính độ lớn giá trị n Số có dấu: bit số dương hay âm Các phép toán n Ví dụ: n Với hai số: thực phép toán: nhân hay chia n Không thực nhân hay chia với hai chuỗi ký tự Trường Đại Học Bách Khoa Trung Tâm Kỹ Thuật Điện Toán © 2016 Lập trình C/C++ Dữ liệu Kiểu liệu n Ngôn ngữ lập trình phân biệt kiểu liệu nào? n n n Ngôn ngữ C/C++ (các ngôn ngữ khác vậy) gắn ngữ nghĩa (quy ước ngữ nghĩa) với loạt tên kiểu mà cung cấp sẵn Các kiểu gọi kiểu (fundamental data types) Tên kiểu có sẵn gắn sẵn ngữ nghĩa nên từ khoá Người lập trình không dùng tên để đặt tên cho kiểu (hàm, biến, v.v) mà họ tạo Trường Đại Học Bách Khoa Trung Tâm Kỹ Thuật Điện Toán © 2016 Lập trình C/C++ Dữ liệu Kiểu liệu n Các loại kiểu n n Kiểu liệu (fundamental data type) n Tên kiểu từ khoá n Ngữa nghĩa tên quy định ngôn ngữ lập trình Kiểu liệu người lập trình định nghĩa (user-defined data type) n Tên kiểu người lập trình đặt n Ngữ nghĩa người lập trình quy định thông qua n Kiểu người lập trình tạo trước n Và/hoặc, kiểu liệu n Các kiểu tiếng C/C++ n C: struct, enum n C++: class Trường Đại Học Bách Khoa Trung Tâm Kỹ Thuật Điện Toán © 2016 Lập trình C/C++ Dữ liệu Kiểu liệu n Các loại kiểu n n n Kiểu liệu (fundamental data type) Kiểu liệu người lập trình định nghĩa (user-defined data type) Kiểu liệu dẫn xuất (derived data type) n C/C++ cung cấp ký hiệu để tạo kiểu từ kiểu khác (cơ hay người lập trình định nghĩa) n Ví dụ: n Mảng (array) n Mảng ký tự, số nguyên, số thực, v.v n Con trỏ (pointer) n Con trỏ đến ký tự, đến số, v.v Trường Đại Học Bách Khoa Trung Tâm Kỹ Thuật Điện Toán © 2016 Lập trình C/C++ 10 Các giá trị bất biến n Giá trị bất biến gì? n n n Là giá trị không thay đổi trình chương trình thực thi Do đó, n giá trị bất biến phải xác định thời điểm biên dịch (lập chương trình) Ví dụ n n n (1) Sử dụng từ khoá const const int MAX = 50; (2) Sử dụng macro #define MAX 50 (3) Sử dụng enum enum {MAX}; enum {MAX = 50}; Trường Đại Học Bách Khoa Trung Tâm Kỹ Thuật Điện Toán © 2016 Lập trình C/C++ 46 Các giá trị bất biến n Giá trị bất biến cách thể mã chương trình n n n Kiểu ký tự const char c = ‘a’; const char c = ‘A’; Kiểu chuỗi const char c[] = “LAP TRINH C/C++”; const char c[] = “SAI GON”; Kiểu số const int a = 100; const float f = 10.5f; const double d = 10.5; Trường Đại Học Bách Khoa Trung Tâm Kỹ Thuật Điện Toán © 2016 Lập trình C/C++ 47 Chuyển đổi kiểu n Chuyển đổi kiểu gì? n Khi ta gán giá trị vào biến kiểu liệu, hay thực phép toán nhị phân hai giá trị kiểu liệu không cần chuyển đổi kiểu xảy n Ví dụ int a = 100; int b; b = a; float f = 10.5f; float fa; fa = f; Trường Đại Học Bách Khoa Trung Tâm Kỹ Thuật Điện Toán © 2016 Lập trình C/C++ 48 Chuyển đổi kiểu n Chuyển đổi kiểu gì? n n Khi người lập trình thực phép gán mà kiểu bên phải phép gán (kiểu nguồn) kiểu bên trái phép gán (kiểu đích) nhau, chuyển đổi giá trị từ kiểu nguồn sang kiểu đích cần thiết Khi hai toán hạng phép toán nhị phân khác kiểu với cần chuyển đổi liệu n Ví dụ short a = 100; Int b; b = a; double d = 10.5; float fa; fa = d; Trường Đại Học Bách Khoa Trung Tâm Kỹ Thuật Điện Toán © 2016 Lập trình C/C++ 49 Chuyển đổi kiểu n Các dạng chuyển đổi n n Chuyển đổi ngầm (mặc nhiên) n Có thể nguyên giá trị nguồn n Có thể biến đổi giá trị nguồn Ép kiểu n Người lập trình can thiệp toán tử đặc biệt: cặp dấu ”(” “)” Trường Đại Học Bách Khoa Trung Tâm Kỹ Thuật Điện Toán © 2016 Lập trình C/C++ 50 Chuyển đổi kiểu n Chuyển đổi ngầm (mặc nhiên) n n Áp dụng giá trị kiểu nguồn cópy vào kiểu đích tương thích với kiểu nguồn Ví dụ: short s = 100; int a = s; // có chuyển đổi giá trị n n n Biến a có kiểu “int” kiểu đích phép chuyển đổi Biến s có kiểu “short” kiểu nguồn “short” tương thích với “int” nên trình biên dịch không báo lỗi chương trình chuyển tự động mà không cần người lập trình đặt tả thêm Trường Đại Học Bách Khoa Trung Tâm Kỹ Thuật Điện Toán © 2016 Lập trình C/C++ 51 Chuyển đổi kiểu n Chuyển đổi ngầm n Trường hợp giữ nguyên giá trị nguồn n Khi kiểu nguồn có số bit thấp kiểu đích n Ví dụ n char vào short n short vào int n Int vào long long n Int vào double Trường Đại Học Bách Khoa Trung Tâm Kỹ Thuật Điện Toán © 2016 Lập trình C/C++ 52 Chuyển đổi kiểu n Chuyển đổi ngầm n n Trường hợp giữ nguyên giá trị nguồn Trường hợp cần thay đổi n unsigned vào signed ngược lại n Áp dụng nguyên tắc “bù 2” (two’s complement) n Bù = Bù + n Bù = Bù bit (0 1, 0) n Luận lý vào số: n true n false n số vào Luận lý n Khác true n Bằng false Trường Đại Học Bách Khoa Trung Tâm Kỹ Thuật Điện Toán © 2016 Lập trình C/C++ 53 Chuyển đổi kiểu n Chuyển đổi ngầm n n Trường hợp giữ nguyên giá trị nguồn Trường hợp cần thay đổi n unsigned vào signed ngược lại n Luận lý vào số: n số vào Luận lý n float hay double vào số nguyên (char, short, int, v.v) n Phần thập phân bị cắt bỏ (2.456 2) n Nếu sau cắt mà phần nguyên nằm phạm vi kiểu đích … tuỳ vào thực (không xác định) Trường Đại Học Bách Khoa Trung Tâm Kỹ Thuật Điện Toán © 2016 Lập trình C/C++ 54 Chuyển đổi kiểu n Ép kiểu (type casting) n n n Là chuyển đổi kiểu tường minh, người lập trình đặt tả kiểu đích Cú pháp n Dạng hàm double x = 10.5; int a = int(x); n Dạng c double x = 10.5; int a = (int) x; Ví dụ n Xác định giá trị x y ví dụ cho sau Trường Đại Học Bách Khoa Trung Tâm Kỹ Thuật Điện Toán © 2016 Lập trình C/C++ 55 Chuyển đổi kiểu n Ép kiểu (type casting) #include #include int main(){ double x = 3/2; double y = (double)3/2; printf("x = %4.2g\n", x); printf("y = %4.2g\n", y); system("pause"); return 0; } Trường Đại Học Bách Khoa Trung Tâm Kỹ Thuật Điện Toán © 2016 Lập trình C/C++ 56 Chuyển đổi kiểu n Ép kiểu (type casting) n Ví dụ n Xác định giá trị a b kết xuất hình ví dụ cho sau Trường Đại Học Bách Khoa Trung Tâm Kỹ Thuật Điện Toán © 2016 Lập trình C/C++ 57 Chuyển đổi kiểu n Ép kiểu (type casting) #include #include int main(){ unsigned char a; signed char b; a = -1; b = 255; printf("a= %3d\n", a); printf("b= %3d\n", b); printf("a < is %s\n", a < ? "true": "false"); printf("b > is %s\n", b > ? "true": "false"); system("pause"); return 0; } Trường Đại Học Bách Khoa Trung Tâm Kỹ Thuật Điện Toán © 2016 Lập trình C/C++ 58 Bài tập Trường Đại Học Bách Khoa Trung Tâm Kỹ Thuật Điện Toán © 2016 Lập trình C/C++ 59 Tổng kết Chủ đề Yêu cầu (Kiến thức & Kỹ năng) Dữ liệu Kiểu liệu - Biết danh mục kiểu liệu - Biết kích thước, phép toán áp dụng với kiểu - Quy tắc tên danh hiệu - Khai báo biến & khở động chúng Từ khoá Biến Khai báo biến Tầm vực biến Các loại tầm vực ý nghĩa Phép toán biểu thức Sử dụng phép toán biểu thức Kiểu enum Định nghĩa sử dụng enum Kiểu cấu trúc Hằng số Sử dụng nhiều cách Chuyển đổi kiểu liệu Hiểu quy tắc chuyển đổi sử dụng ép kiểu Trường Đại Học Bách Khoa Trung Tâm Kỹ Thuật Điện Toán © 2016 Lập trình C/C++ 60 ... Lập trình C/ C++ Dữ liệu Kiểu liệu n C c kiểu liệu n Ngoài tính chất lưu trữ kh c nhau, chương trình c n thiết phân biệt kiểu liệu nói trên, kiểu quy định thông tin kèm kh c n n C ch tổ ch c bit... đến liệu Ví dụ: n Một chương trình giải Phương trình b c n Dữ liệu: n C c hệ số A,B ,C Phương trình b c n Delta n C c nghiệm phương trình n Một chương trình Quản lý nhân n Dữ liệu: n Mã số nhân sự,... kiểu liệu n C c kiểu tiếng C/ C++ n C: struct, enum n C+ +: class Trường Đại H c Bách Khoa Trung Tâm Kỹ Thuật Điện Toán © 2016 Lập trình C/ C++ Dữ liệu Kiểu liệu n C c loại kiểu n n n Kiểu liệu

Ngày đăng: 29/03/2017, 17:56

TỪ KHÓA LIÊN QUAN

w