Kiểu dữ liệu tự định nghĩ a: 1 Kiểu liệt kê (từ khoá enum)

Một phần của tài liệu Bai giang Co So Lap Trinh docx (Trang 51 - 56)

1. Kiểu liệt kê (từ khoá enum)

- Kiểu dữ liệu liệt kê: là kiểu dữ liệu mà khi định nghĩa, ta liệt kê tất cả các phần tử của nó.

Cú pháp:

enum Tên_kiểu_dữ_liệu_liệt_kê {Danh sach giá trị};

enum Tên_kiểu_dữ_liệu_liệt_kê Tên_biến;

Trong đó: Danh sách các giá trị là dãy các giá trị cụ thể được viết cách nhau bởi dấu “,”

Ví dụ:

enum Mau {trang, den, vang};

enum Mau MauAo;

Ví dụ 28:

#include<stdio.h> #include<conio.h> main()

{ clrscr();

enum Mau{trang, den, vang}; enum Mau MauAo;

MauAo=trang;

if (MauAo==trang) printf("Ao mau trang"); getch();

}

Chú ý: Khi định nghĩa kiểu liệt kê, giá trị đầu tiên của danh sách giá trị có số thứ tự mặc định là 0, các số thứ tự của các phần tử đứng sau nó tăng dần thêm 1 đơn vị.

Trong trường hợp muốn gán số tự ban đầu cho giá trị đầu tiên của danh sách giá trị ta bố sung thêm gtrị1=số thứ tự đầu tiên

Ví dụ:

enum Mau {trang=0, den, vang};

enum Mau MauAo;

ví dụ 29 :

#include<stdio.h> #include<conio.h> main()

{ clrscr();

enum Mau{trang=1, den, vang}; enum Mau MauAo;

printf("%d",den); /*2*/ getch();

2. Kiểu typedef

Từ khoá typedef dùng để đặt tên mới cho kiểu dữ liệu đã có hoặc định nghĩa tên của một kiểu dữ liệu mới.

Ví dụ1:

typedef float So; /* Định nghĩa tên mới của kiểu dữ liệu float là So */

typedef So SoThuc; /* Định nghĩa tên mới của kiểu dữ liệu So là SoThuc */ Ví dụ 2:

typedef struct NhanSu{ char HT[30];

unsigned int GioiTinh; } NS_Phong1;

NS_Phong1 st; /*

struct NhanSu{ char HT[30];

unsigned int GioiTinh; }

struct NhanSu st; */

* Ưu điểm: Khi sử dụng Typedef, mã chương trình ngắn gọn, dễ đọc và dễ chuyển mã sang máy khác. Ví dụ: Cách 1: char st1[50], st2[50], st3[50], st4[50], st5[50] Cách 2: typedef char st[50]; st st1, st2, st3, st4, st5;

BT1: Viết chương trình nhập thông tin Nhân sự cho N nhân viên Công ty THNH Duy Phương (với N nhập vào từ bàn phím)

Trong đó gồm các thông tin về: - Mã nhân viên

- Họ tên nhân viên - Năm sinh

- Quê quán

- Ngày ký hợp đồng - Hệ số lương

1. Đếm xem có bao nhiêu nhân viên sinh năm 1990 2. Hiển thị danh sách những người có hệ số lương > 2.1

3. Hiển thị Họ tên và hệ số lương của người có hệ số lương cao nhất

4. Giả sử những người trên 40 tuổi được hưởng thêm phụ cấp sức khoẻ là 200,000 đồng/tháng. Hãy tính tổng số tiền công ty dùng để chi trả phụ cấp trong một tháng.

BT2:

Viết chương trình tạo một mảng danh sách các loại máy in của một cửa hàng, thông tin của máy in bao gồm:

- Loại máy - Nơi sản xuất

- Thời gian bảo hành - Giá tiền

• Viết hàm nhâp 1 dãy các loại máy in có thông tin trên • In ra màn hình danh sách các loại máy in đó

• In ra màn hình các loại máy in có thời gian bảo hành lớn hơn 3 năm và giá tiền lớn hơn 1000000

CHƯƠNG V: DỮ LIỆU KIỂU TỆPI. Khái niệm về tệp I. Khái niệm về tệp

1. Khái niệm tệp

- Tệp (tệp dữ liệu) là một tập hợp các dữ liệu có cùng một kiểu dữ liệu được gộp lại với nhau thành một dãy và chứa trong thiết bị nhớ ngoài (đĩa cứng, đĩa CD,...).

- Đặc điểm của tệp: + Có tên

+ Chứa dữ liệu, chương trình, ...

+ Tệp chứa trong bộ nhớ ngoài => tồn tại ngay cả khi mất điện

(Các cấu trúc dữ liệu khác như mảng, bản ghi, được tổ chức trong bộ nhớ RAM)

Chú ý: Tệp cũng có thể tổ chức trong bộ nhớ trong của máy tính nhưng nó chỉ là những tệp có tính chất tạm thời, trung gian và sẽ không tồn tại khi dừng chương trình hoặc khi mất điện.

+ Số phần tử của tệp không xác định được khi ta định nghĩa (khác với mảng)

2. Cấu trúc và phân loại tệp* Cấu trúc tệp: * Cấu trúc tệp:

- Các phần tử của tệp được sắp xếp thnàh một dãy. Tại mỗi thời điểm, chương trình chỉ có thể truy nhập được vào một phần tử của tệp thông qua giá trị của một biến đệm (biến đệm được dùng để đánh dấu vị trí truy nhập của tệp).

- Sau khi đọc một phần tử của tệp, biến trỏ tự động chỉ đến phần tử tiếp theo trong tệp đó.

- Khi chạy chương trình, vùng nhớ đệm được thiết lập để lưu trữ tạm thời các thông tin của dữ liệu. Vùng nhớ đệm cho phép thông tin dữ liệu được ghi vào tệp hoặc đọc ra từ tệp một các nhanh chóng nhất bằng cách ghi hoặc đọc cả một khối dữ liệu tương đối lớn.

Cách thiết lập vùng nhớ đệm: Khai báo

FILE *fpt;

trong đó: FILE là một cấu trúc dữ liệu đặc biệt dùng để thiết lập vùng nhớ đệm.

fpt là con trỏ (con trỏ cấu trúc tệp hoặc biến tệp = file point) trỏ tới địa chỉ đầu của bộ nhớ đệm này.

Chú ý: Mỗi tệp được kết thúc bằng một dấu hiệu đặc biệt là EOF (End Of File. Hàm feof sẽ nhận giá trị False nếu biến tệp đang trỏ tới vị trí cuối tệp

Biến tệp (cửa sổ nhìn tệp)

* Phân loại tệp: Dựa vào bản chất của dữ liệu, tệp được chia ra thành 2 loại:

- Tệp văn bản: là tệp chứa các phần tử là các ký tự, các dấu chấm câu. Các ký tự này được tổ chức thành từng dòng với dấu kết thúc dòng là CR và LF (‘\r’ và ‘\n’). Tệp văn bản dùng ký tự ^Z (Ctrl_Z) có mã ASCII là 26 để làm kí hiệu kết thúc tệp.

=> Tệp văn bản có thể đọc được trên màn hình, soạn thảo bằng các phần mềm soạn thảo văn bản, có thể sử dụng hàm xử lí kí tự,…

Chú ý: Màn hình, bàn phím, máy in là các tệp văn bản đặc biệt.

- Tệp dữ liệu nhị phân: Là tệp chứa các phần tử là các số nhị phân biểu diễn thông tin.

Thông tin ở đây có thể là các số thực float, cấu trúc struct, tệp chứa mã lệnh máy tính,...

3. Các bước xử lý tệp

*Bước 1: Khai báo biến tệp

- Mẫu lệnh:

Trong đó : FILE là từ khoá (được viết hoa). Ví dụ : FILE *tep ; * Bước 2: Mở tệp (để ghi, đọc) - Mẫu lệnh: Ví dụ: + Mở tệp để ghi: tep=fopen(“VD.TXT”, “w”); hoặc tep=fopen(“C:\\TC\\VD.TXT”, “w”); + Mở tệp để đọc: tep=fopen(“VD.TXT”, “r”); hoặc tep=fopen(“C:\\TC\\VD.TXT”, “r”); Bảng ký hiệu kiểu xử lí tệp:

Đối với tệp văn bản:

KIỂU

XỬ LÍ Ý NGHĨA

“r” read only: Mở tệp văn bản đã tồn tại để đọc

“w” writing only: Mở tệp văn bản mới để ghi

“a” Mở tệp văn bản đã cóghi thêm dữ liệu tiếp nối vào cuối tệp. Nếu tệp đó chưa có thì máy tính sẽ tự động tạo tệp mới.

“r+” Mở tệp văn bản đã có và đọc, ghi dữ liệu

“w+” Mở tệp văn bản mới để ghi, đọc. Nếu máy tính đã tồn tại tệp có tên trùng với tên tệp trong lệnh thì tệp cũ sẽ bị huỷ, thay vào đó là tệp mới.

“a+” Mở tệp văn bản đã có (nếu chưa có tệp thì máy tính sẽ tự tạo ra một tệp mới) để đọc hoặc ghi thêm dữ liệu tiếp nối vào cuối tệp.

FILE *<Biến_tệp> ;

Đối với tệp nhị phân:

KIỂU

XỬ LÍ Ý NGHĨA

“rb” read only, binary: Mở tệp văn bản đã tồn tại để đọc

“wb” writing only, binary: Mở tệp văn bản mới để ghi

“ab” Mở tệp văn bản đã cóghi thêm dữ liệu tiếp nối vào cuối tệp. Nếu tệp đó chưa có thì máy tính sẽ tự động tạo tệp mới.

“r+b” Mở tệp văn bản đã có và đọc, ghi dữ liệu

“w+b” Mở tệp văn bản mới để ghi, đọc. Nếu máy tính đã tồn tại tệp có tên trùng với tên tệp trong lệnh thì tệp cũ sẽ bị huỷ, thay vào đó là tệp mới.

“a+b” Mở tệp văn bản đã có (nếu chưa có tệp thì máy tính sẽ tự tạo ra một tệp mới) để đọc hoặc ghi thêm dữ liệu tiếp nối vào cuối tệp.

* Bước 3: Ghi, đọc tệp (xử lí dữ liệu)

- Trong bước 3, người lập trình có thể sử dụng các hàm có sẵn hoặc các hàm tự xây dựng để viết chương trình. * Bước 4: Đóng tệp - Mẫu lệnh: fclose(tep); Khung chương trình xử lí tệp: #include <stdio.h> main() { FILE *tep;

tep=fopen(“VD.dat”, “w”);

if (tep = = NULL)

printf(“\n Khong mo duoc tep”); else { /*Xu li du lieu */ ... fclose(tep); } }

Một phần của tài liệu Bai giang Co So Lap Trinh docx (Trang 51 - 56)

w