Giáo trình Lập trình căn bản (Nghề: Lập trình máy tính - Trình độ CĐ/TC) - Trường Cao đẳng Nghề An Giang

100 2 0
Giáo trình Lập trình căn bản (Nghề: Lập trình máy tính - Trình độ CĐ/TC) - Trường Cao đẳng Nghề An Giang

Đ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

Mục tiêu của Giáo trình Lập trình căn bản là phân tích chương trình: xác định nhiệm vụ chương trình (phải làm gì), xác định dữ liệu và cấu trúc dữ liệu của hệ thống. Phân tích và xây dựng thuật toán. Thiết kế chương trình: tìm giải pháp kỹ thuật (làm thế nào) đối với những công việc đã xác định trong giai đoạn phân tích. Mời các bạn cùng tham khảo!

ỦY BAN NHÂN DÂN TỈNH AN GIANG TRƯỜNG CAO ĐẲNG NGHỀ AN GIANG GIÁO TRÌNH LẬP TRÌNH CĂN BẢN NGHỀ: LẬP TRÌNH MÁY TÍNH Trình độ trung cấp/cao đẳng (Ban hành theo Quyết định số: /QĐ-CĐN ngày tháng năm 20 Hiệu trưởng trường Cao đẳng nghề An Giang) Tác giả: Vương Thị Minh Nguyệt Năm ban hành : 2017 TUYÊN BỐ BẢN QUYỀN Tài liệu thuộc loại sách giáo trình nên nguồn thơng tin đƣợc phép dùng nguyên trích dùng cho mục đích đào tạo tham khảo Mọi mục đích khác mang tính lệch lạc sử dụng với mục đích kinh doanh thiếu lành mạnh bị nghiêm cấm LỜI GIỚI THIỆU Trƣớc đây, để tạo chƣơng trình máy tính ngƣời ta phải làm việc trực tiếp với số 1, hay gọi ngơn ngữ máy Cơng việc vơ khó khăn, chiếm nhiều thời gian, công sức đặc biệt dễ gây lỗi Để khắc phục nhƣợc điểm này, ngƣời ta đề xuất hợp ngữ, ngôn ngữ cho phép thay dãy từ gợi nhớ tiếng Anh Tuy nhiên, cải tiến cịn chƣa thật thích hợp với đa số ngƣời dùng máy tính, ngƣời ln mong muốn lệnh ý nghĩa thao tác mà mơ tả Vì vậy, từ năm 1950, ngƣời ta xây dựng ngơn ngữ lập trình mà câu lệnh gần với ngơn ngữ tự nhiên Các ngôn ngữ đƣợc gọi ngôn ngữ lập trình bậc cao Lập trình với Pascal C, C++ Đây ngôn ngữ phổ biến mà hầu nhƣ sinh viên cần phải học qua giai đoạn bắt đầu học lập trình Giáo trình đƣợc thiết kế theo mô đun/ môn học thuộc hệ thống mô đun/môn học chƣơng trình, để đào tạo hồn chỉnh nghề Lập trình máy tính cấp trình độ bậc cao đƣợc dùng làm giáo trình cho học viên khóa đào tạo, đƣợc sử dụng cho đào tạo ngắn hạn cho công nhân kỹ thuật Mục tiêu thực môn học: - Phân tích chƣơng trình: xác định nhiệm vụ chƣơng trình (phải làm gì), xác định liệu cấu trúc liệu hệ thống Phân tích xây dựng thuật tốn - Thiết kế chƣơng trình: tìm giải pháp kỹ thuật (làm nào) công việc xác định giai đoạn phân tích - Viết chƣơng trình - Vận dụng điều kiện, trợ giúp mơi trƣờng ngơn ngữ lập trình, chẳng hạn: trình biên tập mã lệnh - Mô tả đƣợc biến dùng chƣơng trình - Vận dụng quy tắc cú pháp ngơn ngữ lập trình - Vận dụng cấu trúc điều khiển, cấu trúc lặp - Trình bày chƣơng trình có thích (tóm tắt) cho đoạn mã, thuận lợi cho việc theo dõi chức chúng - Thử nghiệm đƣợc chƣơng trình: - Sử dụng liệu thử, thử nghiệm giai đoạn, phân tích giá trị biến qua đoạn mã (mơ đun chƣơng trình) - Sử dụng cơng cụ: dùng Debugger hệ thống để phân tích biến cấu trúc liệu tƣơng ứng Nội dung mơn học: CHƢƠNG 1: THUẬT TỐN CHƢƠNG 2: GIỚI THIỆU NGƠN NGỮ LẬP TRÌNH C++ CHƢƠNG 3: CÁC THÀNH PHẦN VÀ CÁC KIỂU DỮ LIỆU CƠ BẢN CHƢƠNG 4: CÁC CẤU TRÚC ĐIỀU KHIỂN CHƢƠNG 5: HÀM CHƢƠNG 6: MẢNG CHƢƠNG 7: CON TRỎ CHƢƠNG 8: CẤU TRÚC Trong trình biên soạn, cố gắng tham khảo nhiều tài liệu giáo trình khác nhƣng tác giả khơng khỏi tránh đƣợc thiếu sót hạn chế Tác giả chân thành mong đợi nhận xét, đánh giá góp ý sinh viên đồng nghiệp để giáo trình ngày hồn thiện An Giang, ngày tháng năm 20 Tham gia biên soạn Vương Thị Minh Nguyệt MỤC LỤC ĐỀ MỤC TRANG LỜI GIỚI THIỆU CHƢƠNGTRÌNH MƠN HỌC .6 CHƢƠNG 1: THUẬT TOÁN I.KHÁI NIỆM II.CÁC ĐẶC TRƢNG CỦA THUẬT TOÁN 10 III PHƢƠNG PHÁP BIỂU DIỄN THUẬT TOÁN 10 BÀI TẬP 16 CHƢƠNG 2: GIỚI THIỆU NGƠN NGỮ LẬP TRÌNH C++ 17 I.LỊCH SỬ HÌNH THÀNH 17 II.ĐẶC ĐIỂM 17 III.CẤU TRÚC MỘT CHƢƠNG TRÌNH C++ 18 IV.MỘT SỐ VÍ DỤ MẪU 19 V CÀI ĐẶT CHƢƠNG TRÌNH 20 VI KHỞI ĐỘNG CHƢƠNG TRÌNH 20 VII.SOẠN THẢO CHƢƠNG TRÌNH 21 VIII.THỐT KHỎI CHƢƠNG TRÌNH 23 BÀI TẬP 23 CHƢƠNG 3: CÁC THÀNH PHẦN VÀ CÁC KIỂU DỮ LIỆU CƠ BẢN .24 I.CÁC THÀNH PHẦN 24 II.CÁC KIỂU KIỂU DỮ LIỆU CƠ BẢN 26 III HẰNG 28 VI CÁC PHÉP TOÁN CỦA C++ 29 V.XUẤT, NHẬP DỮ LIỆU 32 BÀI TẬP 39 CHƢƠNG 4: CÁC CẤU TRÚC ĐIỀU KHIỂN 40 I.LỆNH ĐƠN VÀ LỆNH PHỨC 40 II.CẤU TRÚC ĐIỀU KIỆN if else 41 III CẤU TRÚC LỰA CHỌN switch case 44 IV CÁC CẤU TRÚC LẶP 46 V.CÂU LỆNH break, continue, goto hàm exit 52 BÀI TẬP 55 CHƢƠNG 5: HÀM 57 I.KHÁI NIỆM 57 II.KHAI BÁO HÀM 57 III KẾT QUẢ TRẢ VỀ CỦA HÀM 60 IV CÁCH TRUYỀN THAM SỐ CHO HÀM 60 V.ĐỆ QUI 62 BÀI TẬP 66 CHƢƠNG 6: MẢNG 67 I.KHÁI NIỆM 67 II.KHAI BÁO MẢNG 67 III.KHỞI TẠO MẢNG 68 IV DÙNG MẢNG LÀM THAM SỐ 70 V MẢNG NHIỀU CHIỀU 72 BÀI TẬP 74 CHƢƠNG 7: CON TRỎ 75 I.KHÁI NIỆM 76 II.CON TRỎ VÀ ĐỊA CHỈ 76 III.KHAI BÁO BIẾN KIỂU CON TRỎ 78 IV CÁC PHÉP TOÁN 78 V.CON TRỎ MẢNG 80 VI CON TRỎ HẰNG 82 VII.CON TRỎ KHÔNG KIỂU 83 VIII.KHỞI TẠO CON TRỎ 84 IX CON TRỎ TRỎ TỚI CON TRỎ 85 X.CON TRỎ HÀM 85 BÀI TẬP 87 CHƢƠNG 8: CẤU TRÚC 88 I.KHÁI NIỆM 88 II.KHAI BÁO CẤU TRÚC 88 III.TRUY CẬP ĐẾN CÁC THÀNH PHẦN CỦA CẤU TRÚC 92 IV CON TRỎ CẤU TRÚC VÀ ĐỊA CHỈ CẤU TRÚC 95 BÀI TẬP 98 CÁC THUẬT NGỮ CHUYÊN MÔN 99 TÀI LIỆU THAM KHẢO 99 CHƢƠNGTRÌNH MƠN HỌC Tên mơn học: LẬP TRÌNH CĂN BẢN Mã số môn học: MH 10 Thời gian thực môn học: 75 (Lý thuyết: 20 giờ, thực hành, thí nghệm, thảo luận: 51 giờ, kiểm tra: giờ) I VỊ TRÍ, TÍNH CHẤT CỦA MƠN HỌC: Vị trí: - Thuộc nhóm mơn: Cơ sở - Đƣợc bố trí sau mơn: Mơn học đƣợc bố trí sau học sinh học xong mơn: tốn cho tin học tin học 2.Tính chất: - Là mơn học chuyên môn nghề bắt buộc, tảng để HSSV làm quen với kiến thức lập trình học môn học mô đun liên quan II MỤC TIÊU CỦA MÔN HỌC: Về kiến thức - Phân tích chƣơng trình: xác định nhiệm vụ chƣơng trình (phải làm gì), xác định liệu cấu trúc liệu hệ thống Phân tích xây dựng thuật tốn - Thiết kế chƣơng trình: tìm giải pháp kỹ thuật (làm nào) công việc xác định giai đoạn phân tích Về kỹ - Vận dụng điều kiện, trợ giúp môi trƣờng ngơn ngữ lập trình, chẳng - Trình bày chƣơng trình có thích (tóm tắt) cho đoạn mã, thuận lợi cho việc theo dõi chức chúng - Thử nghiệm đƣợc chƣơng trình Về lực tự chủ trách nhiệm - Nghiêm túc học tập thực tốt yêu cầu đƣợc giao - Luôn động não suy nghĩ Thƣờng xuyên luyện tập tƣ việc học - Thực học tập thực hành nhóm III NỘI DUNG MƠN HỌC: Chƣơng 1: Thuật toán I Khái niệm II Các đặc trƣng thuật toán III Phƣơng pháp biểu diễn Chƣơng 2: Giới thiệu ngơn ngữ lập trình C++ I Lịch sử hình thành II Đặc điểm III Cấu trúc chƣơng trình C++ IV Một số ví dụ mẫu V Cài đặt chƣơng trình VI Khởi động chƣơng trình VII Soạn thảo chƣơng trình VIII Thốt khỏi chƣơng trình Chƣơng 3: Các thành phần kiểu liệu I Các thành phần II Các kiểu liệu III Hằng IV Các phép toán C++ V Xuất nhập liệu Chƣơng 4: Các cấu trúc điều khiển I Lệnh đơn lệnh phức II Cấu trúc điều kiện: if else III Cấu trúc lựa chọn: switch case IV Các cấu trúc lặp V Câu lệnh break, continue, goto hàm exit Chƣơng 5: Hàm I Khái niệm II Khai báo hàm III Kết trả hàm – Lệnh return IV Cách truyền tham số cho hàm V Đệ qui Chƣơng 6: Mảng I Khái niệm II Khai báo mảng III Khởi tạo mảng IV Dùng mảng làm tham số Chƣơng 7: Con trỏ I Khái niệm II Toán tử lấy địa (&) III Toán tử tham chiếu (*) IV Khai báo biến kiếu trỏ V Các phép toán VI Con trỏ VII Con trỏ mảng VIII Khởi tạo trỏ IX Con trỏ trỏ tới trỏ X Con trỏ không kiểu XI Con trỏ hàm Chƣơng 8: Cấu trúc I Khái niệm cấu trúc II Khai báo cấu trúc III Truy cập đến thành phần cấu trúc IV Ví dụ cấu trúc CHƢƠNG THUẬT TỐN Giới thiệu Thuật tốn hệ thống chặt chẽ rõ ràng qui tắc nhằm xác định dãy thao tác đối tƣợng, cho sau số hữu hạn bƣớc thực thao tác, ta đạt đƣợc mục tiêu định trƣớc Bài trình bày khái niệm thuật tốn, đặc trƣng thuật toán, phƣơng pháp biểu diễn thuật tốn Mục tiêu Trình bày đƣợc khái niệm thuật toán, đặc trƣng thuật toán, phƣơng pháp biểu diễn thuật tốn Nội dung I KHÁI NIỆM Thuật toán hệ thống chặt chẽ rõ ràng qui tắc nhằm xác định dãy thao tác đối tƣợng, cho sau số hữu hạn bƣớc thực thao tác, ta đạt đƣợc mục tiêu định trƣớc Ví dụ 1: Giải phƣơng trình bậc hai ax2 + bx + c = Nhập a, b, c Nếu a = kết thúc thuật tốn (phƣơng trình cho khơng phải phƣơng trình bậc hai) Nếu a ≠ tính delta = b2 – 4ac Nếu delta > Phƣơng trình có hai nghiệm phân biệt x1   b  delta 2a ; x2   b  delta 2a Kết thúc thuật toán Nếu delta = Phƣơng trình có nghiệp kép x  b 2a Kết thúc thuật tốn Nếu delta < Phƣơng trình vơ nghiệm Kết thúc thuật toán Cần phải nhắc lại terry mang giá trị 1702 'h' hay "hello" Biến trỏ terry trỏ tới xâu kí tự đƣợc sử dụng nhƣ mảng (hãy nhớ mảng đơn trỏ hằng) Ví dụ, muốn thay kí tự 'o' dấu chấm than, thực việc hai cách: terry[4] = „!‟; *(terry+4) = '!'; Hãy nhớ viết terry[4] hoàn toàn giống với viết *(terry+4) biểu thức thông dụng IX CON TRỎ TRỎ TỚI CON TRỎ C++ cho phép sử dụng trỏ trỏ tới trỏ khác giống nhƣ trỏ tới liệu Để làm việc cần thêm dấu (*) cho mức tham chiếu char a; char *b; char **c; a = „z‟; b = &a; c = &b; giả sử a,b,c đƣợc lƣu ô nhớ 7230, 8092 and 10502, ta mơ tả đoạn mã nhƣ sau: a “z” 7230 b ß 7230 ß 8092 c 8092 10502 Điểm ví dụ biến c, nói theo cách khác nhau, cách tƣơng ứng với giá trị khác nhau: c biến có kiểu char ** mang giá trị 8092; *c biến có kiểu char * mang giá trị 7230; **c biến có kiểu char mang giá trị „z‟; X CON TRỎ HÀM 85 Cách khai báo trỏ hàm mảng trỏ hàm: Ta trình bày quy tắc khai báo thơng qua ví dụ: Ví dụ 1: Câu lệnh: float (*f)(float),(*mf[50])(int); Để khai báo:  f trỏ hàm kiểu float có đối float  mf mảng trỏ hàm kiểu float có đối kiểu int (có 50 phần tử) Ví dụ 2: Câu lệnh: double (*g)(int, double),(*mg[30])(double, float); Để khai báo:  g trỏ hàm kiểu double có đối kiểu int double  mg mảng trỏ hàm kiểu double có đối kiểu double float (có 30 phần tử) Tác dụng trỏ hàm: Con trỏ hàm dùng để chứa địa hàm Muốn ta thực phép gán tên hàm cho trỏ hàm Để phép gán có ý nghĩa kiểu hàm kiểu trỏ phải tƣơng thích Sau phép gán, ta dùng tên trỏ hàm thay cho tên hàm Ví dụ : #include double fmax(double x, double y) /* Tính max x,y */ { return(x>y ? x:y); } double (*pf)(double,double)=fmax; /*Khai báo gán tên hàm cho trỏ hàm */ void main() /* Sử dụng trỏ hàm*/ { printf("\n max=%f",pf(5.0,9.6)); } 86 Ví dụ : #include double fmax(double x, double y) /* Tính max x,y */ { return(x>y ? x:y); } double (*pf)(double,double); /* Khai báo trỏ hàm*/ void main() /* Sử dụng trỏ hàm*/ { pf=fmax; printf("\n max=%f",pf(5.0,9.6)); } Đối trỏ hàm: C cho phép thiết kế hàm mà tham số thực lời gọi tới lại tên hàm khác Khi tham số hình thức tƣơng ứng phải trỏ hàm Cách dùng trỏ hàm thân hàm: Nếu đối đƣợc khai báo: double (*f)(double, int); thân hàm ta dùng cách viết sau để xác định giá trị hàm (do trỏ f trỏ tới): f(x,m) (f)(x,m) (*f)(x,m) x biến kiểu double m biến kiểu int BÀI TẬP Dùng mảng trỏ để lập bảng giá trị cho hàm: x*x, sin(x), cos(x), exp(x) sqrt(x) Sử dụng kiểu trỏ viết chƣơng trình xếp tăng dần mảng chiều Sử dụng kiểu trỏ viết chƣơng trình cộng, nhân ma trận Nhập vào chuỗi, xóa khoảng trắng in hình Nhập vào chuỗi đảo ngƣợc thứ tự từ chuỗi 87 CHƢƠNG CẤU TRÚC Giới thiệu Cấu trúc tập hợp nhiều biến, chúng khác kiểu nhau, đƣợc nhóm lại dƣới tên để tiện sử lý Cấu trúc gọi ghi số ngôn ngữ khác Bài trình bày cách khai báo sử dụng đƣợc cấu trúc, truy cập đến thành phần cấu trúc, vận dụng kiểu cấu trúc lập trình Mục tiêu - Khai báo sử dụng đƣợc cấu trúc - Truy cập đƣợc đến thành phần cấu trúc - Vận dụng đƣợc kiểu cấu trúc lập trình Nội dung I KHÁI NIỆM Cấu trúc tập hợp nhiều biến, chúng khác kiểu nhau, đƣợc nhóm lại dƣới tên để tiện sử lý Cấu trúc gọi ghi số ngôn ngữ khác, chẳng hạn nhƣ PASCAL Cấu trúc giúp cho việc tổ chức liệu phức tạp, đặc biệt chƣơng trình lớn nhiều tình chúng cho phép nhóm biến có liên quan lại để xử lý nhƣ đơn vị thay thực thể tách biệt Một ví dụ đƣợc đề cập nhiều đến cấu trúc phiếu ghi lƣơng, nhân viên đƣợc mơ tả tập thuộc tính chẳng hạn nhƣ: tên, địa chỉ, lƣơng, phụ cấp vv số thuộc tính lại cấu trúc chứa nhiều thành phần: Tên (Họ, đệm, tên), Địa (Phố, số nhà) vv II KHAI BÁO CẤU TRÚC Khi xây dựng cấu trúc, ta cần mơ tả kiểu Điều tƣơng tự nhƣ việc phải thiết kế kiểu nhà trƣớc ta xây dựng nhà thực địa điểm khác Công việc định nghĩa kiểu cấu trúc bao gồm việc nêu tên kiểu cấu trúc thành phần theo mẫu sau: struct tên_kiểu _cấu_trúc { Khai báo thành phần cấu trúc (1) }; Trong đó: 88  struct từ khố  tên_kiểu _cấu_trúc tên ngƣời lập trình tự đặt theo qui tắc đặt tên nêu chƣơng Thành phần cấu trúc là: biến, mảng, cấu trúc khác đƣợc định nghĩa trƣớc vv Ví dụ 1: Đoạn chƣơng trình: struct { int ngaythu; char thang[12]; int nam; }; mô tả kiểu cấu trúc có tên gồm có ba thành phần: Biến nguyên ngaythu, mảng thang, biến ngun nam Ví dụ 2: Đoạn chƣơng trình: struct nhancong { char ten[15]; char diachi[20] double bacluong; struc ngaysinh; struc ngaybatdaucongtac; }; tạo kiểu cấu trúc có tên nhancong gồm có năm thành phần Ba thành phần đầu khơng có cần nói thêm Chỉ có hai thành phần cịn lại cấu trúc ngaysinh ngaybatdaucongtac đƣợc xây dựng theo cấu trúc đƣợc định nghĩa ví dụ Định nghĩa cấu trúc typedef: Có thể dùng tốn tử typedef để định nghĩa kiểu cấu trúc nhancong nhƣ sau: typedef struct 89 { int ngaythu; char thang[12]; int nam; } ngay; typedef struct { char ten[15]; char diachi[20] double bacluong; struc ngaysinh; struc ngaybatdaucongtac; } nhancong; Khai báo theo kiểu cấu trúc định nghĩa: Xây dựng cấu trúc thực theo kiểu khai báo trƣớc Vấn đề hoàn toàn giống nhƣ việc khai báo biến mảng Giả sử ta có kiểu cấu trúc nhancong nhƣ mục Khi ta khai báo: Ví dụ 1: struct ngaydi, ngayden; cho ta hai cấu trúc với tên ngaydi ngayden Cả hai cấu trúc đƣợc xây dựng theo cấu trúc kiểu Ví dụ 2: struct nhancong nhom1,nhom2; cho ta hai cấu trúc với tên nhom1 nhom2 Cả hai cấu trúc đƣợc xây dựng theo cấu trúc kiểu nhancong Nhƣ vậy, cách tổng quát, việc khai báo cấu trúc đƣợc thực theo mẫu sau: Cách 1: struct tên_kiểu_cấu_trúc_đã_khai_báo danh_sách_tên_các_cấu_trúc; (2) Chú ý: Các biến cấu trúc đƣợc khai báo theo mẫu đƣợc cấp phát nhớ cách đầy đủ cho tất thành phần 90 Việc khai báo thực đồng thời với việc định nghĩa kiểu cấu trúc Muốn vậy, cần đặt danh sách tên biến cấu trúc cần khai báo sau dấu } (*) nhƣ Nói cách khác, để vừa khai báo kiểu vừa khai báo biến ta dùng cách sau: Cách 2: struct tên_kiểu_cấu_trúc { Các thành phần cấu trúc (3) } danh_sách_tên_các_cấu_trúc; Ví dụ: struct { int ngaythu; char thang[12]; int nam; } ngaydi,ngayden; Ví dụ: struct nhancong { char ten[15]; char diachi[20]; double bacluong; struc ngaysinh; struc ngaybatdaucongtac; } nhom1,nhom2; Khi vừa định nghĩa kiểu cấu trúc vừa khai báo cấu trúc nhƣ ví dụ trên, ta khơng thể khơng cần đến tên kiểu cấu trúc Nói cách khác cấu trúc đƣợc khai báo theo cách sau: struct { Các thành phần cấu trúc (4) 91 } danh_sách_tên_các_cấu_trúc; Ví dụ: struct { int ngaythu; char thang[12]; int nam; } ngaydi,ngayden; Sự khác cách khai báo cấu trúc (3) (4) chỗ: Với (3) ta vừa khai báo đƣợc kiểu cấu trúc vừa khai báo đƣợc cấu trúc, dùng kiểu cấu trúc để khai báo cho cấu trúc khác nhƣ (2), (4) khai báo đƣợc cấu trúc Chú ý: Nếu dùng từ khoá typedef để định nghĩa kiểu cấu trúc nhƣ mục 8.1 khai báo cấu trúc ta khơng cần dùng từ khố struct, cần dùng tên kiểu Ví dụ nhƣ kiểu cấu trúc đƣợc khai báo typedef 8.1 khai báo cấu trúc ngaydi ngayden có kiểu ta dùng dịng lệnh sau: ngaydi,ngayden; III TRUY CẬP ĐẾN CÁC THÀNH PHẦN CỦA CẤU TRÚC Ta quen với việc sử dụng biến, phần tử mảng tên mảng câu lệnh Trên ta đề cập đến thành phần cấu trúc biến mảng Việc xử lý cấu trúc phải đƣợc thực thông qua thành phần Để truy cập đến thành phần (là biến mảng) cấu trúc ta sử dụng cách viết sau: tên_cấu_trúc.tên_thành_phần tên_cấu_trúc.tên_cấu_trúc.tên_thành_phần tên_cấu_trúc tên_cấu_trúc.tên_cấu_trúc.tên_thành_phần Cách viết thứ nhƣ đƣợc sử dụng biến mảng thành phần trực tiếp cấu trúc Ví dụ nhƣ biến ngaythu, biến nam mảng thang thành phần trực tiếp cấu trúc ngaydi, ngayden Các biến bacluong, mảng ten, diachi thành phần trực tiếp cấu trúc nhancong 92 Các cách viết lại nhƣ đƣợc sử dụng biến mảng thành phần trực tiếp cấu trúc mà thân cấu trúc lại thành phần cấu trúc lớn Ví dụ: Ta xét phép tốn thành phần cấu trúc nhom1, nhom2: Câu lệnh: printf("%s",nhom1.ten); đƣa lên hình tên nhom1 Câu lệnh: tongluong=nhom1.bacluong+nhom2.bacluong; gán tổng lƣơng nhom1 nhom2 gán cho biến tongluong Câu lệnh: printf("%d",nhom1.ngaysinh.ten); đƣa lên hình ngày sinh nhom1 Câu lệnh: printf("%d",nhom1 ngaybatdaucongtac.nam); đƣa lên hình ngày bắt đầu cơng tác nhom1 Chú ý:  Có thể sử dụng phép toán lấy địa thành phần cấu trúc để nhập số liệu trực tiếp vào thành phần cấu trúc Ví dụ nhƣ ta viết: scanf("%d",&nhom1 ngaybatdaucongtac.nam); Nhƣng thành phần không nguyên, việc làm dẫn đến treo máy Vì nên nhập số liệu vào biến trung gian sau gán cho thành phần cấu trúc Cách làm nhƣ sau: int year; scanf("%d",&year); nhom1 ngaybatdaucongtac.nam=year;  Để tránh dài dòng làm việc với thành phần cấu trúc ta dùng lệnh #define Ví dụ câu lênh scanf ví dụ trên, ta viết nhƣ sau: #define p nhom1 ngaybatdaucongtac 93 scanf("%d",&p.nam); Ví dụ: Giả sử ta lập trình quản lý thông tin cán Giả sử liệu cán gồm:  Ngày tháng năm sinh  Ngày tháng năm vào quan  Bậc lƣơng Yêu cầu viết chƣơng trình để:  Xây dựng cấu trúc sở liệu cho cán  Vào số lệu cán  Đƣa số liệu máy in Chƣơng trình đƣợc viết nhƣ sau: #include typedef struct { int ngay; char thang[10]; int nam; } date; typedef struct { date ngaysinh; date ngayvaocq; float luong; } canbo; void main() { canbo p; printf("\n Sinh ngay: "); scanf("%d",&p.ngaysinh.ngay); printf("\n Thang: "); 94 scanf("%d",&p.ngaysinh.thang); printf("\n Nam: "); scanf("%d",&p.ngaysinh.nam); printf("\n Vao co quan ngay: "); scanf("%d",&p.ngayvaocq.ngay); printf("\n Thang: "); scanf("%d",&p.ngayvaocq.thang); printf("\n Nam: "); scanf("%d",&p.ngayvaocq.nam); printf("\n Luong: "); scanf("%d",&p.luong); fprintf(stdprn,"\n sinh:%d%s%d",p.ngaysinh.ngay,p.ngaysinh.thang, p.ngaysinh.nam); fprintf(stdprn,"\n Ngay vao co quan:%d%s%d",p.ngayvaocq.ngay, p.ngayvaocq.thang,p.ngayvaocq.nam); fprintf(stdprn,"\n Luong: %8.2f",p.luong); } IV CON TRỎ CẤU TRÚC VÀ ĐỊA CHỈ CẤU TRÚC Con trỏ địa chỉ: Ta xét ví dụ sau: struct { int ngaythu; char thang[10]; int nam; }; struct nhancong { char ten[20]; char diachi[25]; 95 double bacluong; struct ngaysinh; }; Nếu khai báo: struct nhancong *p,*p1,*p2,nc1,nc2,ds[100]; ta có:  p, p1, p2 trỏ cấu trúc  nc1, nc2 biến cấu trúc  ds mảng cấu trúc Con trỏ cấu trúc dùng để lƣu trữ địa biến cấu trúc mảng cấu trúc Ví dụ: p1=&nc1; /* Gửi địa nc1 vào p1 */ p2=&ds[4]; /* Gửi địa ds[4] vào p2 */ p=ds; /* Gửi địa ds[0] vào p */ Truy nhập qua trỏ: Có thể truy nhập đến thành phần thông qua trỏ theo hai cách sau: Cách 1: Tên_con_trỏ->Tên_thành_phần Cách 2: (*Tên_con_trỏ).Tên_thành_phần Ví dụ: nc1.ngaysinh.nam p1-> ngaysinh.nam ds[4].ngaysinh.thang (*p2) ngaysinh.thang Phép gán qua trỏ: Giả sử ta gán: p1=&nc1; p2=&ds[4]; Khi dùng: 96 *p1 thay cho nc1 *p2 thay cho ds[4] Tức viết: ds[5]=nc1; ds[4]=nc2; Tƣơng đƣơng với: ds[5]=*p1; *p2=nc2; Phép cộng địa chỉ: Sau phép gán: p=ds; p2=&ds[4]; p trỏ thới ds[[0]] p2 trỏ tới ds[4] Ta dùng phép cộng, trừ địa để làm cho p p2 trỏ tới thành phần khác Ví dụ: Sau lệnh: p=p+10; p2=p2-4; p trỏ tới ds[10] cịn p2 trỏ tới ds[0] Con trỏ mảng: Giả sử trỏ p trỏ tới đầu mảng ds, đó:  Ta truy nhập tới thành phần cấu trúc cách sau: + ds[i].thành_phần ds[i].ngaysinh.nam + p[i].thành_phần p[i].ngaysinh.nam + (p+i)->thành_phần (p+i)->ngaysinh.nam  Khi ta sử dụng cấu trúc cách viết sau tƣơng đƣơng: ds[i] p[i] *(p+i) 97 BÀI TẬP Xây dựng mảng cấu trúc mà cấu trúc (ứng với sinh viên) bao gồm trƣờng sau: - Họ tên - Tuổi - Lớp - Điểm thi : điểm thi cấu trúc gồm trƣờng: tốn, lý hóa Nhập số liệu 10 sinh viên, hiển thị sinh viên có điểm trung bình lớn theo thứ tự tăng dần tổng số điểm Nhập tên sinh viên cần tìm, có nhiều sinh viên tên in ngƣời Nhập vào tọa độ điểm A, B, C, D Kiểm tra điểm D có nằm tam giác ABC khơng, hai đoạn thẳng AC BD có cắt khơng Viết chƣơng trình cộng trừ nhân chia số phức Viết chƣơng trình cộng trừ nhân chia phân số, xuất phân số tối giản 98 CÁC THUẬT NGỮ CHUYÊN MÔN File: tập tin Struct: cấu trúc Array: mảng Terminator: điểm cuối Decision: thao tác chọn lựa Route: đƣờng Connector: điểm nối Off-page connector: điểm nối sang trang TÀI LIỆU THAM KHẢO Tài liệu Kỹ Thuật Lập Trình C – Cơ bàn nâng cao – GS Phạm Văn Ất Lập Trình C – Aptech Ngơn Ngữ Lập Trình C++ - Học viện Cơng Nghệ Bƣu Chính Viễn Thơng – GS.TS Trần Đình Quế, KS Nguyễn Mạnh Hùng Giáo trình C++ - Đại học quốc gia Hà Nội Giáo trình Kỹ Thuật Lập Trình – Đại học Đà Lạt – Trần Tuấn Minh Trang web www.gnacademy.org/text/cc/Tutorial/tutorial.html www.brpreiss.com/books/opus4/html/book.html 99 ... đun/ môn học thuộc hệ thống mô đun/môn học chƣơng trình, để đào tạo hồn chỉnh nghề Lập trình máy tính cấp trình độ bậc cao đƣợc dùng làm giáo trình cho học viên khóa đào tạo, đƣợc sử dụng cho... tích - Viết chƣơng trình - Vận dụng điều kiện, trợ giúp mơi trƣờng ngơn ngữ lập trình, chẳng hạn: trình biên tập mã lệnh - Mô tả đƣợc biến dùng chƣơng trình - Vận dụng quy tắc cú pháp ngơn ngữ lập. .. liệu Tính hiệu Tính hiệu thuật toán đƣợc đánh giá dựa tiêu chuẩn sau: - Dung lƣợng nhớ cần có - Số phép tính cần thực - Thời gian cần thiết để chạy - Có dễ hiểu ngƣời khơng - Có dễ cài đặt máy

Ngày đăng: 30/08/2022, 12:13

Tài liệu cùng người dùng

Tài liệu liên quan