15 giao trinh LT can ban

87 254 0
15 giao trinh LT can ban

Đ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

BỘ LAO ĐỘNG - THƯƠNG BINH VÀ XÃ HỘI TỔNG CỤC DẠY NGHỀ GIÁO TRÌNH Môn học : Lập trình NGHỀ: QUẢN TRỊ MẠNG TRÌNH ĐỘ: CAO ĐẲNG NGHỀ ( Ban hành kèm theo Quyết định số:120/QĐ-TCDN Ngày 25/2/201 Tổng cục trưởng Tổng cục dạy nghề) 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 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 MÃ TÀI LIỆU: MH15 Trang LỜI GIỚI THIỆU Giáo Trình Lập trình Pascal biên soạn nhằm đáp ứng yêu cầu học tập sinh viên bước đầu làm quen với công việc lập trình, đồng thời giúp cho sinh viên có tài liệu học tập, rèn luyện tốt khả lập trình, tạo tảng vững cho môn học Giáo trình không phù hợp cho người bắt đầu mà phù hợp cho người cần tham khảo Nội dung giáo trình chia thành chương: Chương 1: Làm quen ngôn ngữ lập trình Chương 2: Các thành phần ngôn ngữ lập trình Chương 3: Các cấu trúc điều khiển Chương 4: Hàm thủ tục Chương 5: Dữ liệu kiểu tập hợp, mảng ghi Chương 6: Dữ liệu kiểu chuỗi Khi biên soạn, tham khảo giáo trình tài liệu giảng dạy môn học số trường Cao đẳng, Đại học để giáo trình vừa đạt yêu cầu nội dung vừa thích hợp với đối tượng sinh viên trường Cao đẳng Nghề Chúng hy vọng sớm nhận ý kiến đóng góp, phê bình bạn đọc nội dung, chất lượng hình thức trình bày để giáo trình ngày hoàn thiện Hà Nội, ngày 25 tháng năm 2013 Tham gia biên soạn Chủ biên Võ Thị Ngọc Tú Trần Thị Hà Khuê Đặng Quý Linh Trang MỤC LỤC CHƯƠNG 1: LÀM QUEN NGÔN NGỮ LẬP TRÌNH Khái niệm lập trình Lịch sử phát triển ứng dụng ngôn ngữ lập trình Làm quen với môi trường phát triển phần mềm .7 3.1 Khởi động chương trình Pascal 3.2 Các thao tác sử dụng Turbo Pascal .9 Chương trình mẫu 10 4.1 Cấu trúc 10 4.2 Phương pháp khai báo tổ chức cấu trúc chương trình Pascal: .11 4.3 Các ví dụ đơn giản làm quen với ngôn ngữ Pascal 12 Bài tập .13 CHƯƠNG 2: CÁC THÀNH PHẦN CƠ BẢN .15 Hệ thống từ khóa kí hiệu dùng ngôn ngữ lập trình 15 Các kiểu liệu 15 2.1 Các kiểu liệu dạng số 15 2.2 Kiểu char, logic, string .16 Hằng, biến, hàm, phép toán biểu thức 17 Mục tiêu: Trình bày vận dụng loại biến, biểu thức cho chương trình cụ thể 17 3.1 Hằng 17 3.2 Biến (Variable) 18 3.3 Biểu thức 18 Các lệnh, khối lệnh 19 Mục tiêu: 19 So sánh lệnh, khối lệnh .19 Viết chương trình đơn giản với lệnh gán, lệnh nhập, lệnh xuất 19 4.1 Khối lệnh 19 4.2 Lệnh gán 19 4.3 Lệnh nhập 20 4.4 Lệnh xuất 21 Thực thi chương trình, nhập liệu, nhận kết 23 Mục tiêu: Thực việc chạy chương trình 23 CHƯƠNG : CÁC CẤU TRÚC ĐIỀU KHIỂN 25 Khái niệm lệnh có cấu trúc 25 Các lệnh cấu trúc lựa chọn 25 2.1 Lệnh IF .25 2.2 Lệnh CASE OF .27 Cấu trúc vòng lặp 29 3.1 Vòng lặp FOR 30 3.2 Câu lệnh Repeat .32 3.3 Câu lệnh While 33 Các lệnh chuyển điều khiển 35 Mục tiêu: Hiểu biết cách vận dụng lệnh chuyển điều khiển vòng lặp chương trình .35 4.1 Lệnh Goto: .35 4.2 Lệnh Break: 35 4.3 Lệnh Exit 35 Kết hợp cấu trúc điều khiển chương trình .36 Trang Bài tập .38 6.1 Câu lệnh IF .38 6.2 Câu lệnh rẽ nhánh có điều kiện case of 39 6.3 Câu lệnh for 40 6.4 Cấu trúc vòng lặp while 41 6.5 Cấu trúc vòng lặp repeat until 43 CHƯƠNG : HÀM VÀ THỦ TỤC .46 Khái niệm chương trình 46 Cấu trúc chương trình có sử dụng chương trình .46 Các hàm thủ tục ngôn ngữ lập trình 47 3.1 Hàm 47 3.2 Thủ tục .50 3.3 Bài tập 51 Tham trị tham biến .54 4.1 Tham biến 55 4.2 Tham trị 55 4.3 Bài tập 55 4.4 Hướng dẫn 56 Biến toàn cục biến địa phương 56 5.1 Biến toàn cục 56 5.2 Biến địa phương .57 5.3 Bài tập 57 CHƯƠNG : DỮ LIỆU KIỂU TẬP HỢP, MẢNG VÀ BẢN GHI 59 Kiểu tập hợp, phép toán tập hợp 59 1.1 Định nghĩa 59 1.2 Các phép toán tập hợp .60 1.3 Bài tập 61 Mảng chiều 62 2.1 Khái niệm 62 2.2 Mảng chiều .62 2.3 Khai báo mảng chiều 62 2.4 Khai báo gián tiếp 62 2.5 Khai báo trực tiếp : 63 2.6 Truy nhập truy xuất phần tử mảng chiều: .63 2.7 Bài tập 64 Mảng nhiều chiều 67 3.1 Khái niệm 67 3.2 Khai báo 67 3.3 Truy nhập truy xuất mảng .67 3.4 Bài tập 68 Kiểu ghi 70 4.1 Khái niệm 70 4.2 Sử dụng ghi .73 4.3 Câu lệnh WITH 75 4.4 Bản ghi có cấu trúc thay đổi .76 4.5 Bài tập 78 CHƯƠNG : DỮ LIỆU KIỂU CHUỖI 80 Khai báo phép toán 80 1.1 Khai báo kiểu chuỗi 80 1.2 Các phép toán chuỗi 81 1.3 Phép gán 81 Trang 1.4 Phép nối chuỗi 81 1.5 Các phép toán so sánh 81 Nhập in chuỗi .81 Các thủ tục hàm làm việc với chuỗi 81 3.1 Các thủ tục .81 3.2 Các hàm 82 Bài tập .83 MÔN HỌC LẬP TRÌNH CĂN BẢN Mã số môn học: MH15 Vị trí,tính chất, ý nghĩa vai trò môn học: - Vị trí: Môn học bố trí sau sinh viên học xong môn học chung, môn học tin đại cương, tin văn phòng - Tính chất : Là môn học lý thuyết sở nghề - Ý nghĩa vai trò : Là môn học sở, giúp sinh viên bước đầu làm quen với công việc lập trình Mục tiêu môn học: - Trình bày khái niệm lập máy tính; - Mô tả ngôn ngữ lập trình: cú pháp, công dụng câu lệnh; - Phân tích chương trình: xác định nhiệm vụ chương trình; - Thực thao tác môi trường phát triển phần mềm: biên tập chương trình, sử dụng công cụ, điều khiển, thực đơn lệnh trợ giúp, gỡ rối, bẫy lỗi,v.v.; - Viết chương trình thực chương trình máy tính - Bố trí làm việc khoa học đảm bảo an toàn cho người phương tiện học tập STT I II III IV V VI Tên chương, mục Làm quen ngôn ngữ lập trình Các thành phần ngôn ngữ lập trình Các cấu trúc điều khiển Hàm thủ tục Dữ liệu kiểu tập hợp, mảng ghi Dữ liệu kiểu chuỗi Thời gian Tổng Lý Thực Kiểm tra*(LT số thuyết hành TH) 5 15 25 25 30 10 10 10 14 14 19 1 20 14 Trang CHƯƠNG 1: LÀM QUEN NGÔN NGỮ LẬP TRÌNH Mã chương: MH15-01 Mục tiêu: - Trình bày khái niệm lập trình; - Trình bày lịch sử phát triển, ứng dụng ngôn ngữ lập trình; - Làm quen môi trường phát triển phần mềm; - Sử dụng hệ thống trợ giúp từ help file - Thực thao tác an toàn với máy tính Nội dung: Khái niệm lập trình Mục tiêu : Hiểu khái niệm lập trình Lập trình sử dụng cấu trúc liệu câu lệnh ngôn ngữ lập trình cụ thể để mô tả liệu diễn đạt thao tác thuật toán Những ngôn ngữ lập trình (programming language) máy tính điện tử ngôn ngữ máy (machine language), tổ hợp số hệ nhị phân, hay bit (binary digit) Ngôn ngữ máy phụ thuộc vào hoàn toàn kiến trúc phần cứng máy tính quy ước khắt khe nhà chế tạo Để giải toán, người lập trình phải sử dụng tập hợp lệnh điều khiển sơ cấp mà mỗi lệnh tổ hợp bit nhị phân nên gặp nhiều khó khăn, mệt nhọc, dễ gặp phải sai sót, khó sửa lỗi Từ năm 1950, để giảm nhẹ việc lập trình, người ta đưa vào kỹ thuật chương trình (sub-program hay sub-routine) xây dựng thư viện chương trình (library) để cần gọi đến dùng lại đoạn chương trình viết Như thế, nhận thấy vào giai đoạn sơ khai ban đầu máy tính điện tử, việc sử dụng máy tính khó khăn, ngôn ngữ lập trình phương tiện giao tiếp lại phức tạp người sử dụng Người sử dụng máy tính vào giai đoạn chuyên gia tin học Như thế, ứng dụng máy tính điện tử hạn chế .2 Lịch sử phát triển ứng dụng ngôn ngữ lập trình Mục tiêu : Biết ứng dụng ngôn ngữ lập trình pascal Vào đầu năm 1970 nhu cầu học tập sinh viên, giáo sư Niklaus Writh - Trường Đại Học Kỹ Thuật Zurich - Thụy Sĩ sáng tác ngôn ngữ lập trình cấp cao cho công tác giảng dạy sinh viên Ngôn ngữ đặt Trang tên PASCAL để tưởng nhớ đến nhà toán học người Pháp Blaise Pascal.Pascal ngôn ngữ lập trình có cấu trúc thể phương diện Về mặt liệu: Ngoài kiểu liệu đơn giản có kiểu liệu có cấu trúc Ta xây dựng kiểu liệu phức tạp từ kiểu liệu có - Về mặt câu lệnh: Từ câu lệnh đơn giản lệnh có cấu trúc ta xây dựng câu lệnh hợp thành - Về mặt chương trình: Một chương trình chia làm nhiều chương trình - FORTRAN (55) LISP (58) COBOL (60) ALP (62) ALGOL 60 (63) SIMULA (66) ALGOL 68 (69) PASCAL (71) C (69) SNOBOL4 (71) SMALLTALK (71) PROLOG (72) ADA (75) SCHEME (75) FP (78) SMALLTALK (80) COMMON LISP (81) ADA (83) C++ (86) ADA 9X (90) EIFFEL (90) JAVA (95) Hình 1.1 Tiến trình phát triển ngôn ngữ lập trình Cho đến có hàng trăm ngôn ngữ lập trình đề xuất thực tế có số ngôn ngữ sử dụng rộng rãi Ngoài cách phân loại theo bậc nói trên, người ta phân loại ngôn ngữ lập trình theo phương thức (paradgm), theo mức độ quan trọng, theo hệ, Cách phân loại theo mức hay bậc dựa mức độ trừu tượng so với yếu tố phần cứng, chẳng hạn lệnh (instruction) cấp phát nhớ (memory allocation) đây: Mức Lệnh Sử dụng nhớ Ví dụ Trang Thấp Cao Rất cao Lệnh máy đơn giản Biểu thức điều kiện tương minh Máy trừu tượng Truy cập cấp phát trực tiếp Truy cập cấp phát nhờ phép gán Truy cập ẩn tự động cấp phát Hợp ngữ C, Pascal, Ada Prolog, Miranda Làm quen với môi trường phát triển phần mềm Mục tiêu : Biết cách khởi động chương trình thao tác môi trường turbo pascal .3.1 Khởi động chương trình Pascal Nếu máy tính cài đặt Turbo Pascal đĩa, ta khởi động chúng sau (Nếu máy tính chưa có, phải cài đặt Turbo Pascal sau thực thi được) Từ MS-DOS: Đảm bảo thư mục hành vị trí cài đặt (hoặc dùng lệnh PATH) Turbo Pascal Ta đánh vào TURBO Enter - Từ Windows: Ta nên giả lập MS-DOS Mode cho tập tin TURBO.EXE Shortcut nó, không mỗi ta thực thi TURBO PASCAL chương trình thoát khỏi Windows, trở MS-DOS Sau thoát Turbo Pascal ta phải đánh lệnh EXIT để khởi động lại Windows Cách giả lập sau: · Nhắp chuột phải lên tập tin TURBO.EXE Shortcut nó, chọn Properties · Chọn thẻ Program đánh check hình 1.2 - Trang Click vào chọn hình Hình 1.2 Giả lập MS-DOS Mode cho tập tin TURBO.EXE Chọn OK hộp thoại, sau khởi động Turbo Pascal, hình soạn thảo sau khởi động TURBO PASCAL hình 1.3 Hình 1.3 Màn hình soạn thảo sau khởi động TURBO PASCAL Trang 71 Kiểu ghi mô tả cách dùng từ khóa RECORD kèm theo danh sách khai báo tên trường kiểu liệu tương ứng, kết thúc từ khóa END; , tức là: TYPE Tênkiểu = RECORD Têntrường1 : Kiểudliệu1; Têntrường2 : Kiểudliệu2; Têntrườngk : Kiểudliệuk; End; Ví dụ 1: Ta định nghĩa kiểu KSVIEN sau: TYPE KSVIEN = RECORD Hoten:String[20]; Maso : String[8]; Toan, Ly, DTB: Real; End; Theo mô tả trên, ta có kiểu liệu đặt tên KSVIEN có cấu trúc ghi gồm trường (thuộc tính) là: Tên trường Hoten Massso Toan Ly DiemTB Kiểu liệu String(20) String(8) Real Real Real Ý nghía Họ tên sinh viên Mã số sinh viên Điểm toán sinh viên Điểm lý sinh viên Điểm trung bình sinh viên Ví dụ 2: Ta mô tả thời gian kiểu KDATE có ba trường ngày , tháng, năm sau: Trang 72 TYPE KDATE = RECORD Ngay : 31; Thang : 12; Nam : Integer; End; Ví dụ 3: Ðể quản lý sách thư viện, ta xây dựng kiểu ghi KSACH sau: TYPE KSACH = RECORD Ma_so_sach: String[6]; Ten_doc_gia: String[20]; Nam_xban :Integer; Gia_tien: Real; Ngay_muon : KDATE; End; Kiểu KSACH ghi có trường mô tả thuộc tính sách là: mã số sách, tên độc giả, năm xuất bản, gía tiền ngày mượn Ví dụ cho thấy ghi mô tả lồng nhau: kiểu liệu trường ghi lại kiểu ghi khác định nghĩa trước Trong ghi KSACH, Ngay_muon trường có kiểu liệu ghi kiểu KDATE Mỗi đối tượng cần quản lý có nhiều trường, song tùy yêu cầu quản lý mà ta lựa chọn khai báo trường thật cần thiết Khai báo thừa hao phí nhớ, thiếu công tác quản lý khó khăn thiếu thông tin Vì vậy, nên khai báo trường với số lượng đủ dùng Trang 73 4.2 Sử dụng ghi Kiểu ghi sau định nghĩa dùng khai báo cho biến Ví dụ : Var X, Y, Z : KSVIEN; Trong KSVIEN ghi mô tả phần Theo khai báo này, X ,Y Z ba biến kiểu ghi KSVIEN, mỗi biến có trường Hoten, Maso, Toan, Ly DTB Ðể thâm nhập vào trường ghi ta viết tên biến kiểu ghi, sau dấu chấm ‘.’ tên trường, tức : Tênbiến Têntrường Các lệnh gán gía trị cho trường biến X : X.Hoten :=‘Nguyen Van An’; X.Maso :=‘1973208’; X.Toan :=8.0; X.Ly :=7.0; X.DTB :=(X.Toan+X.Ly)/2; Ðể nhập liệu cho trường Hoten biến Y, ta viết: Write(‘Nhap ho ten sinh vien Y : ‘); Readln(Y.Hoten); Sở dĩ phải viết tên biến ghi trước tên trường để xác định trường biến ghi Mỗi biến X, Y, Z có trường Hoten, nên viết Hoten Hoten ai: X, Y hay Z ? Còn viết X.Hoten rõ Hoten biến X Như vậy, mỗi trường biến ghi thâm nhập sử dụng biến bình thường X.Hoten biến kiểu String[20], X.Maso biến kiểu String[8], , X.DTB biến kiểu Real Ðối với ghi lồng nhau, cách truy xuất đến trường tương tự Trang 74 Ví dụ: Cho khai báo biến S kiểu KSACH: Var S : KSACH ; Ðể truy nhập đến trường Ngay, Thang, Nam Ngay_muon ta viết : S.Ngay_muon.Têntrường Chẳng hạn gán : S.Ngay_muon.Ngay := 2; S.Ngay_muon.Thang := 9; S.Ngay_muon.Nam := 1999; Hai biến ghi kiểu gán cho Lệnh : Y:=X; gán gía trị trường biến X cho trường tương ứng biến Y Vậy lệnh tương đương với khối lệnh sau : begin Y.Hoten :=X.Hoten; Y.Maso :=X.Maso; Y.Toan :=X.Toan; Y.Ly :=X.Ly; Y.DTB :=X.DTB; end; Các ghi so sánh khác nhau: Ví dụ: If X=Y then writeln(‘ X Y người ‘); If XY then writeln(‘ X khác Y ‘); Trang 75 Tuy nhiên phép so sánh = cho ghi Hai ghi hoán đổi gía trị cho theo nghĩa hoán đổi cặp gía trị trường tương ứng Giống biến đơn giản, để hoán đổi hai ghi X Y ta dùng ba lệnh: Z:=X; X:=Y; Y:=Z; Z biến trung gian kiểu ghi với X Y Ví dụ: Nếu biến X Y có trường tương ứng : X.Hoten =‘Nguyen Van An’ Y.Hoten =‘Tran Thi Nga’ X.Maso =‘1973208’ Y.Maso =‘1974564’ X.Toan =8.0 Y.Toan =5.0 X.Ly =7.0 Y.Ly =8.0 X.DTB =7.5 Y.DTB =6.5 sau hoán đổi, ta : X.Hoten =‘Tran Thi Nga’ Y.Hoten =‘Nguyen Van An’ X.Maso =‘1974564’ Y.Maso =‘1973208’ X.Toan =5.0 Y.Toan =8.0 X.Ly =8.0 Y.Ly =7.0 X.DTB =6.5 Y.DTB =7.5 4.3 Câu lệnh WITH Khi làm việc với nhiều trường biến ghi cách thâm nhập tỏ rườm rà phải viết nhiều lần tên biến trước tên trường Ðể đơn giản cách viết, Pascal đưa câu lệnh : WITH Tênbiến DO Lệnh; Tên biến thuộc kiểu ghi Trang 76 Nếu Lệnh có truy xuất đến trường Tên biến không cần phải viết Tên biến dấu chấm trước tên trường Ví dụ, thay viết: X.Hoten:= ‘Nguyen Van An’; ta viết : WITH X DO Hoten:= ‘Nguyen Van An’; Ðể in trường biến X lên hình, ta viết: WITH X DO Begin Writeln(‘ Họ tên :’ , Hoten); Writeln(‘ Mã số sinh viên :’ , Maso); Writeln(‘ Ðiểm Toán :’ , Toan: 4:1); Writeln(‘ Ðiểm Lý :’ , Ly: 4:1); Writeln(‘ Ðiểm trung bình : ‘ , DTB :4:1); End; Tất tên trường nằm khối begin end hiểu trường biến X (nếu không ghi rõ tên biến khác) Các lệnh sau gán gía trị cho trường biến S kiểu KSACH ghi lồng nhau: WITH S DO begin Ma_so_sach:=‘TH-435’; Ten_doc_gia:=‘Nguyen van Mai’; Nam_xban :=1999; Gia_tien:= 15000; WITH Ngay_muon DO begin Ngay:=2; Thang:=9; Nam:=1999; end; end; 4.4 Bản ghi có cấu trúc thay đổi Các kiểu Record trình bày kiểu Record cố định số phần cấu trúc cua Record cố định Bên cạnh Pascal cho phép lập Record có phần cấu trúc thay đổi Trang 77 Trước hết, ta xét ví dụ sau: mục NhanSu, ta xét thêm trường NgheNghiep có nhiều trường hợp xảy ra, chẳng hạn: - Công nhân : Cần ghi rõ ngành ? Bậc thợ ? - Kỹ sư : Ngành ? Trình độ thực tế ? - Bác sĩ : Chuyên khoa ? - Cá biệt : Không ghi thêm ? Tuy ta lập Record gồm đầy đủ trường kể “cồng kềnh” (trong người thời điểm có ngành nghề) chiếm nhiều ô nhớ Tiếp theo ta lập bốn kiểu Record giống phần đầu (HoDem, Ten, NgaySinh, Luong, CoGiaDinh) khác phần cuối nghề nghiệp (NgheNghiep), tức có trường tương ứng với bốn nghề khác Cách làm “cồng kềnh” chương trình ta phải dùng đến bốn kiểu Record Ngôn ngữ Pascal cho phép lập Record có dạng sau để tiết kiệm ô nhớ cho phép linh hoạt sử dụng: Type Nghe = (CongNhan, KySu, BacSi, CaBiet); Nganh = (KhaiThac, CoKhi, CheBien, Nuoi, KinhTe); Khoa = (Noi, Ngoai, Nhi, Phu); NhanSu = Record HoDem: String[20]; Ten: String[7]; NgaySinh: Date; Luong: Real; CoGiaDinh: Boolean; CASE NgheNghiep: Nghe Of CongNhan: (NganhCN: Nganh; BacTho: Byte); KySu: (NganhKS: Nganh; TrinhDoTT: (Kem, TB, kha, Gioi)); BacSi: (ChuyenKhoa: Khoa); CaBiet: (); END; { Of Record } Var NV, NV1: NhanSu; Begin With NV Begin HoDem := ‘Vo Thanh’; Ten := ‘Chau’; NgheNghiep := CongNhan; NganhCN := CoKhi; Trang 78 BacTho := 3; End; With NV1 Begin HoDem := ‘Huynh Dinh’; Ten := ‘Can’; NgheNghiep := KySu; NganhKS := KinhTe; TrinhDoTT := Kha; End; END Giải thích : - HoDem, Ten, NgaySinh, CoGiaDinh thành phần cố định Record NhanSu - NganhCN, NganhKS, BacTho, TrinhDoTT, ChuyenKhoa thành phần thay đổi Record NhanSu - Trong khai báo kiểu Record, có thành phần thay đổi phải đặt sau thành phần cố định phép có trường thay đổi - Phần thay đôi nằm sau danh sách bắt đầu câu lệnh CASE (Phần thay đổi lại chứa Record khác có kiểu cấu trúc thay đổi) Lưu ý : - Phần thay đổi trường gọi trường đánh dấu (Tag Field) đặt câu lệnh CASE (Ví dụ NgheNghiep) Ứng với mỗi giá trị trường đánh dấu, ta có biến dạng Record với danh sách trường tương ứng đặt sau nhãn lệnh CASE toàn danh sách phải đặt hai dấu ngoặc đơn () rỗng trường hợp CaBiet ví dụ - Trường mô tả phải kiểu đơn giản (Byte, Integer, Word, LongInt, Real, Double, Char, Boolean) - Tất tên biến phần thay đổi bắt buột phải khác Theo ví dụ trên, Nganh hai trường hợp NgheNghiep CongNhan KySu ký hiệu hai tên khác là: NganhCN NganhKS .4.5 Bài tập Bài 1: Viết chương trình thực phép cộng số phức Bài 2: Viết chương trình quản lý điểm thi Tốt nghiệp sinh viên với môn thi: Cơ sở chuyên ngành Nội dung công việc quản lý bao gồm: Trang 79 • Nhập điểm cho sinh viên • In danh sách sinh viên hình • Thống kê số lượng sinh viên thi đậu • In hình hình danh sách sinh viên bị thi lại Bài 3: Viết chương trình quản lý sách thư viện gồm trường sau: Mã số sách, Nhan đề, Tên Tác giả, Nhà Xuất bản, Năm xuất a/ Nhập vào kho sách thư viện (gồm tất trường) b/ In hình tất sách có thư viện c/ Tìm sách có mã số nhập vào từ bàn phím Nếu tìm thấy in hình thông tin đầy đủ sách đó, ngược lại thông báo không tìm thấy d/ Tìm in hình tất sách có tác giả nhập vào từ bàn phím e/ Lọc sách xuất năm Trang 80 CHƯƠNG : DỮ LIỆU KIỂU CHUỖI Mã chương: MH15-06 Nội dung chính: Chuỗi (String) kiểu liệu có cấu trúc dùng để xử lý chuỗi ký tự Kiểu String có nhiều điểm tương tự kiểu mảng (Array) có điểm khác là: số ký tự biến kiểu chuỗi thay đổ số phần tử kiểu mảng cố định Mục tiêu: - Trình bày khái niệm liệu kiểu chuỗi kí tự ; - Biết sử dụng liệu kiểu chuỗi chương trình ; - Áp dụng phép toán chuỗi ; Khai báo phép toán Mục tiêu: Biết khai báo sử dụng phép toán chuỗi .1.1 Khai báo kiểu chuỗi VAR Tên_Biến:String[n]; Trong đó: n số ký tự tối đa có chuỗi Chiều dài tối đa chuỗi 255 Nếu phần khai báo không ghi [n] chuỗi có độ dài mặc định 255 Ví dụ: Var HoTen:String[30]; { HoTen chứa tối đa 30 ký tự } St:String; { St chứa tối đa 255 ký tự } Với St chuỗi, để ký tự thứ i St ta viết St[i] Các St[i] có kiểu Char Ví dụ: St := ‘ABCD’; lệnh Write(St[4]) in ký tự ‘D’ Cấu trúc String sau: Trong nhớ chiếm số Byte số ký tự tối đa, cộng với byte (tại vị trí s[0]) chứa ký tự mà mã thập phân ASCII ký tự cho biết chuỗi có độ dài Chẳng hạn biến HoTen bên gán giá trị: HoTen:=‘Nguyen Van An’; Khi đó, độ dài chuỗi 13, độ dài cực đại cho phép 30 khai báo Sau cấu trúc chuỗi HoTen: Chr(13) N G u y E N Chú ý: * ký tự không xác định V a n 11 12 13 A n 30 … * … * Trang 81 1.2 Các phép toán chuỗi 1.3 Phép gán Biến:= Biểu_thức; Đại lương bên phải lệnh phải đặt hai dấu nháy đơn chuỗi dạng Ta sử dụng dấu cộng (+) để ghép chuỗi gán Ví dụ: HoTen:=‘Nguyen Van‘+‘ An‘; 1.4 Phép nối chuỗi Ký hiệu dấu + Ví dụ: ‘Turbo’+‘ Pascal‘= ‘Turbo Pascal‘ 1.5 Các phép toán so sánh Khi so sánh hai chuỗi, ký tự hai chuỗi so sánh cặp từ trái qua phải theo giá trị bảng mã ASCII Ví dụ: Nếu so sánh: ‘ABC’=‘ABC’ có giá trị True ‘ABC’=‘AB’ có giá trị False ‘ABCD’‘AD’ có giá trị False .2 Nhập in chuỗi Mục tiêu: Biết cách nhập in chuỗi Muốn in chuỗi ký tự ta dùng lệnh Write(St) Writeln(St) Lệnh Readln(St) đọc ký tự cho chuỗi St với độ dài thực số ký tự gõ vào từ bàn phím Nếu ta gõ mà không nhập cho ký tự St chuỗi rỗng .3 Các thủ tục hàm làm việc với chuỗi Mục tiêu: Vận dụng thủ tục hàm xử lý chuỗi .3.1 Các thủ tục 3.1.1 Insert(Obj, St, Pos) Chèn vào chuỗi ký tự St chuỗi ký tự Obj kể từ vị trí Pos Ví dụ: St:=‘Thh’; Insert(‘an’,St,3); Writeln(‘Xau ky tu sau chen them la: ‘,St); {Sẽ ‘Thanh’} 3.1.2 Delete(St, Pos, Num) Xóa bỏ chuỗi ký tự St vị trí thứ Pos số ký tự Num Trang 82 Ví dụ: St:=‘Truong Hoc’; Delete(St,4,6); Writeln(‘Xau ky tu sau xoa bot la: ‘,St); {Sẽ ‘Truc’} 3.1.3 Thủ tục Str(Value, St) Sẽ biến đổi giá trị số nguyên số thực Value thành dãy ký tự biểu diễn số Cách biểu diễn St qui định qui cách Value Ví dụ: i:=1234; Str(i:5,St); {ta St = ‘1234’ có ký tự} x:=123.5678901; Str(x:10:5,St); {ta St = ‘ 123.56789’} 3.1.4 Thủ tục Val(St, Var1, Code): Sẽ biến đổi chuỗi ký tự St (biểu diễn số nguyên hay số thực) thành số nguyên hay số thực chứa Var1 Với: Code số nguyên để phát lỗi:  Code = tức phép biến đổi  Nếu St không biểu diễn số nguyên hay số thực Code nhận giá trị vị trí ký tự sai chuỗi St (Code 0) Ví dụ: X biến thực, St = ‘123.56’, Result biến nguyên Val(St, X, Result); Kết qủa: X = 123.56 Result = X biến nguyên, St = ‘123’, Result biến nguyên Val(St, X, Result); Kết qủa: X = 123 Result = X biến thực, St = ‘123.56A’, Result biến nguyên Val(St, X, Result); {St biểu diễn không đúng} Kết qủa: X không xác định Result = 3.2 Các hàm 3.2.1 Hàm Lenght(St) Kết qủa nhận độ dài chuỗi ký tự St Ta tự viết lại hàm Length sau: Function Length(St: String): Byte; Begin Length := Ord(St[0]); Trang 83 End; 3.2.2 Hàm Copy(St, Pos, Size) Sao chép chuỗi lý tự St vị trí Pos nhận Size ký tự Ví dụ: St = ‘ABCDEF’ lệnh Copy(St, 3, 2) = ‘CD’ Copy(St, 4, 10) cho ta ‘DEF Ghi chú: - Nếu Pos + Num > Length(St) hàm trả ký tự chuỗi St - Nếu Pos > Length(St) hàm Copy trả cho ta chuỗi rỗng  3.2.3 Hàm Concat(St1, St2, , Stn) Hàm dùng để ghép tất chuỗi ký tự St1, St2, , Stn thành chuỗi theo thứ tự đối số cung cấp cho hàm  Ghi chú: - Số lượng đối hàm Concat phải >= - Nếu tổng số chiều dài chuỗi >255 máy báo lỗi - Có thể dùng phép cộng (+) để ghép chuỗi ký tự Ví dụ: St:=Concat(St1,St2+’N’); 3.2.4 Hàm Pos(St1, St2) Hàm trả số nguyên biểu diễn vị trí St1 gặp chuỗi St2 Nếu không tìm thấy Pos=0 Trong đó: St1, St2 biểu thức chuỗi ký tự Ví dụ: St:=‘ABCDEFGBCD’ Pos(‘DE’,St)=4, Pos(‘BCD’,St)=2, Pos(‘XY’,St) = .4 Bài tập Câu Viết thủ tục để kiểm tra nhập chuỗi ký tự số nguyên S, tính tổng chữ số chuỗi S, đảo chuỗi Câu Viết chương trình đổi ký tự chữ hoa chữ thường Câu viết chương trình cắt ký tự trống bên trái chuỗi ký tự Câu Viết chương trình cắt ký tự trống bên phải chuỗi ký tự Câu Viết chương trình cắt ký tự trống chuỗi ký tự Câu Viết chương trình kiểm tra chuỗi nhập vào từ bàn phím có đối xứng hay không Ví dụ: - Chuỗi ‘ABCDCBA’ đối xứng - Chuỗi ‘ABCDABC’ không đối xứng Câu Viết chương trình đếm số lần xuất ký tự chuỗi Trang 84 Câu Viết chương trình nhập vào chuỗi từ bàn phím, tách chuỗi gồm n ký tự từ ví trí định Câu Viết chương trình nhập vào câu ca dao, tục ngữ Hãy đếm xem câu có từ Trang 85 TÀI LIỆU THAM KHẢO [1] Quách Tuấn Ngọc Ngôn ngữ lập trình Pascal NXB Thống kê - năm 2001 [2] Hoàng Hồng Lập trình Turbo Pascal 7.0 NXB Thống kê - năm 2007 [3] Bùi Thế Tâm Turbo Pascal 7.0 NXB Giao thông vận tải - năm 2006 [4] Nguyễn Đình Tê Borland Pascal 7.0 NXB Lao động xã hội – năm 2007 [5] Vũ Đức Khánh Kỹ lập trình Pascal NXB Văn hóa thông tin – năm 2010 [6] Nhiều tác giả Giáo trình Turbo Pascal NXB Giao thông vận tải - năm 2007 ... 2: CÁC THÀNH PHẦN CƠ BẢN .15 Hệ thống từ khóa kí hiệu dùng ngôn ngữ lập trình 15 Các kiểu liệu 15 2.1 Các kiểu liệu dạng số 15 2.2 Kiểu char, logic, string ... TinhTong; Uses CRT; Begin ClrScr; Write ( ‘ 30 + 40 + 15 = ‘, 30 + 40 + 15 ); Readln; End Kết quả: Máy thực phép tính hiển thị 30 + 40 + 15 = 85 Bài tập Khởi động Turbo Pascal Nhập vào đoạn chương... trình viết Như thế, nhận thấy vào giai đoạn sơ khai ban đầu máy tính điện tử, việc sử dụng máy tính khó khăn, ngôn ngữ lập trình phương tiện giao tiếp lại phức tạp người sử dụng Người sử dụng

Ngày đăng: 17/12/2016, 00:21

Từ khóa liên quan

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

  • Đang cập nhật ...

Tài liệu liên quan