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

Kỹ thuật lập trình

88 4 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

Thông tin cơ bản

Tiêu đề Kỹ Thuật Lập Trình
Tác giả Ngụ Minh Anh Thư
Trường học Trường Cao Đẳng Cồng Nghệ Thủ Đức
Chuyên ngành Công Nghệ Thông Tin
Thể loại Tài Liệu Giảng Dạy
Năm xuất bản 2014
Thành phố TPHCM
Định dạng
Số trang 88
Dung lượng 8,29 MB

Nội dung

TRƯỜNG CAO ĐẢNG CỒNG NGHỆ THỦ ĐỨC KHOA CÔNG NGHỆ THƠNG TIN Bộ MƠN PHẨN MÈM —oOo— aỉ ÍMG CÕNG Tài liệu giảng dạy Kỹ thuật lập trình GV biên soạn: Ngô Minh Anh Thư TPHCM, tháng 06 năm 2014 Mục lục CHƯƠNG 1: MẢNG HAI CHIỀU I Giới thiệu II Khai báo Mảng hai chiều Cú pháp khai báo khởi tạo: 2 Một số ví dụ III Gán giá trị cho Mảng hai chiều Sử dụng câu lệnh gán Sử dụng cin » IV Truy xuất Mảng hai chiều Truy xuất trực tiếp: .* Truy xuất tuần tự: Một số ví dụ V □ Truyền Mảng hai chiều cho hàm Tóm tắt chương □ Câu hỏi củng cố □ Bài tập 10 Chương 2: BIẾN CON TRỎ 12 I Khái niệm trỏ, địa nhớ: .12 II Khai báo, khởi tạo biến trỏ: 12 Cú pháp khai báo : 12 Khởi tạo giá trị: 13 2.1 ■ Toán tử địa chỉ& 13 2.2 Toán tử * 13 2.3 NULL: 14 2.4 Con trỏ kiểu void 14 III Các phép toán trỏ : 15 Phép toán gán: 15 Phép toán tăng, giảm địa chỉ: 15 2.1 Phép toán+ ,-: 15 2.2 Phép-tơám++,—7 /777T77777777.7 .;;ị 16 A u.-â Đ^NG C0NG NGH$ 17 THUbUC Phép toán so sánh 18 IV Cấp phát nhớ động 18 Cấp phát động cấp phát tĩnh 18 Toán tử cấp phát nhớ new 19 Toán tử thu hồi nhớ delete 20 V Gon trỏ Mảng 21 Cú pháp 21 Con trỏ mảng chiều 21 Con trỏ mảng hai chiều 22 □ Tóm tắt chương □ Câu hỏi củng cố 25 * Bài tập : 26 □ CHƯƠNG 3: ĐỆ QUY 24 28 Định nghĩa đệ quy 28 I Định nghĩa 28 Phân loại đệ quy 28 II Thiết kế hàm đệ quy 29 Hai bước giải toán đệ quy , 29 Cấu trúc hàm đệ quy 29 III Ưu điểm nhược điểm hàm đệ quy 31 IV Một số toán đệ quy 31 Tìm Ước số chung lớn (UCLN) hai số nguyên 31 Tính số hạng thứ n dãy Fibonaci 32 Bài toán cổ Tháp HảNộiị 32 □ Tóm tắt chương ; 33 □ Câu hỏi củng cố 34 □ Bài tập 34 CHƯƠNG 4: CHUỖI KÝ Tự 38 Khái niệm chuỗi 38 I Hằng chuỗi ' 38 » Biến chuỗi 38 II Khai báo biến chuỗi 38 III Nhập, xuất chuỗi 39 Nhập chuỗi 39 1.1 Nhập chuỗi bang cin» 39 1.2 Nhập chuỗi cin.get() 40 1.3 Phương thức cin.ignore(l) 42 1.4 Phương thức cin.get(c) .* 42 1.5 Nhập chuỗi cin.getline() 43 1.6 Xuất chuỗi: 43 IV Một số hàm xử lý chuỗi: 43 strcpy(s, t); 43 strcat(s, t); 44 strcmp(s, t); 44 strcmpi(s, t); 45 strupr(s); , 45 strlwr(s); 45 strlen(s); 45 I V Con trỏ chuỗi 48 □ Tóm tắt chương .* 49 □ Câu hỏi củng cố □ Bài tập 50 50 Chương 5: KIÊU DỮ LIỆU CẤU TRÚC .51 I Khái niệm cấu trúc 51 II Khai báo biển cấutrúc 51 Định nghĩa 51 Khai báo kiểu cấu trúc 52 Ví dụ: 52 III Truy nhập thành phần kiểu cấu trúc 54 Đối với biến thường 54 Đối với biến trỏ: 54 Đối với biến mảng: 55 Đối với cấu trúc lồng 55 Phép toán gán cấu trúc 55 Các ví dụ minh hoạ , 57 IV Con trỏ với cấu trúc 59 Con trỏ địa cấu trúc 59 Địa thành phần cấu trúc 61 Đối hàm cấu trúc ' 62 Một số ví dụ: ; 62 □ Tóm tắt chương .67 □ Câu hỏi củng cố 68 □ Bài tập 68 CHƯƠNG 6: TẬP TIN 69 I Khái niệm tập tin : 69 Khái niệm 69 Phân loại 69 2.1 Phân loại theo phương pháp truy cập 69 2.2 Phân loại theo chất liệu tập tin 69 Bộ nhớ đệm (buffer) 70 II Các thao tác têntập tin 70 Khai báo ' 70 Mở tập tin 71 Hàm kiểm tra lỗi mở tập tin: 72 Hàm kiểm tra kết thúc tập tin: 72 Đóng tập tin 72 III Truy xuất tập tin 73 Truy xuất liệu tập tin nhị phân: 73 ’ Truy xuất trực tiếp tập tin nhị phân 74 Truy xuất liệu tập tin văn bản: 77 Một số thao tác khác: 78 □ Tóm tắt chương 79 □ Bài tập 79 CHƯƠNG 1: MẢNG HAI CHIỀU Mục tiêu: Sau học xong chương Sinh viên có khả năng: - Trình bày khái niệm mảng liệu nhiều chiều - Tổ chức, truy xuất liệu mảng hai chiều - Truyền mảng đến hàm I Giới thiệu • Một mảng biến lưu trữ nhóm phần tử có kiểu liệu Đa số mảng dùng ứng dụng thương mại mảng chiều mảng hai chiều Chúng ta hình dung mảng chiều dãy liên tục biến bộ‘nhớ mảng hai chiều bảng biến tổ chức theo dịng cột Nói cách khác, phần tử mảng hai chiều mảng chiều Giả sử có mảng hai chiều tên “order” có bốn dịng ba cột, mảng ký hiệu A[4][3] Lưu ý ràng số dòng đứng trước, số cột đứng sau Trong ngôn ngữ c C++, số dòng cột đánh số theo thứ tự 0, 1,2, Tổng quát hóa, mảng có d dịng c cột, sơ dòng đánh số từ đến d-1 sổ cột từ đến c-1 Tổng số phần tử mảng A tính cách lấy số dịng d nhân với số cột c MảngA[4][3] Tình huống: Cơng Ty Mambo có bốn chi nhánh Hà Nội, Huế, Thành phố Hơ Chí Minh, cân Thơ Cơng ty mn có chương trình quản lý sơ lượng đớn hàng chi nhánh ba tháng đầu năm Như sơ đồ giải thuật IPO chương trình sử dụng mảng hai chiều để lưu trữ số lượng đơn đặt hàng cho bốn chi nhánh ba tháng Chương trình cho phép người dùng nhập vào số lượng đơn hàng tháng chi nhánh in hình máy tính Tài liêu giảng dav Kỹ Thuât Lâp Trình Trang Input: Processing: Output (screen): Số lượng đơn hàng chi nhánh tháng ♦ Mảng (4 dòng cho chi nhánh, cột cho tháng) In mà hình số lượng đơn hàng chi nhánh tháng Chỉ số chi nhánh (từ 0->3) Chỉ số tháng (từ 0->2) Algorithm: //Nhập số lượng đơn hùng chi nhảnh theo tháng Vòng lặpl (chi nhánh đến ) Vòng lặp (tháng thứ đến 2) Nhập số lượng đơn hàng vào phần tử mảng tương ứng vời số chi nhánh sổ tháng Kết thúc lặp Kết thúc lặp //Hiển thị mà hình số lượng đơn hàng chi nhảnh tháng Vòng lặpl (chi nhánh đến ) hiển thị số thứ tự chi nhánh = số chi nhánh +1 Vòng lặp (tháng thứ đến 2) hiển thị số thử tự tháng = số tháng +1 ' hiển số lượng đơn hàng vào phần tử mảng tương ứng với số chi nhánh số tháng Kết thúc lặp Kết thúc lặp Hình 1: Sơ đồ IPO chương trình quản lý số lượng đơn hàng Công ty Mambo II Khai báo Mảng hai chiều Cú pháp khai báo khởi tạo: Kiểu_dữ_liệu Tên_mảng[Số_dòng][Sổ_cột]= {{giá_trị_l}, {gìá_trị_2}, , { giatrin}}; Một số ví dụ Ví dụ 1: Khai báo mảng số ngun có tên order gồm dòng cột, phần tử mảng có giá trị khởi tạo int order[4][3] = {0}; hay: Tài liệu giảng dạy Kỹ Thuật Lập Trình Trang int order[4][3]={{0, 0,0} , {0,0,0} , {0,0,0} , {0,0,0}}; Ví dụ 2: khai báo mảng ký tự có tên grades gồm dịng cột char grades[3][2] = {{‘A’, ‘B’} , {‘C’ , ‘D’} , {‘E , ‘F’}}; Ví dụ 3: khai báo mảng số thực có tên prices gồm dịng cột; phần tử prices[0][0] khởi tạo 2.0; phần tử cịn lại có giá trị khởi tạo 0.0 double prices[6][5] = {?.0}; Câu lệnh tạo mảng prices có 30 phần tử kiểu số thực Phần tử price[0][0] có giá trị 2.0 Trong trường không khởi tạo giá trị cho mảng, giá trị mặc định cho phần tử mảng số nguyên mảng số thực 0.0 Lưu ý số trình biên dịch C/C++ không hổ trợ báo lỗi không khởi tạo giá trị lưu giá trị nhớ gốc trước làm giá trị cho phần tử mảng Điều có làm chương trình bạn cho kết khơng Vì nên khởi tạo giá trị cho phần tử mảng khai báo chúng III Gán giá trị cho Mảng hai chiều Sử dụng câu lệnh gán Cú pháp : Tên_mảng[chỉ_số_dịng][chỉ_số_cột] = biểu thức; Ví dụ 1: grades [1] [0] = ' F' ; Câu lệnh gán giá trị F cho phần tử dòng thứ hai cột thứ ‘ mảng grades Ví dụ 2: (int row = 0; for for row < 4; (int column = 0; row++) column < 3; orders[row][column] column++) = 1; Đoạn lệnh có tác dụng gán giá trị tất phần tử mảng orders Ví dụ 3: int row = 0; ỉnt column = 0; t double tempPrice = 0.0; *TAí liâii rrí^nrr const double INCREASE = 1.15; while (column < 5) { while (row < 6) { cout « "Price: cin » tempPrice; prices[row][column]=tempPrice ỊNCREASE; * row += 1; } //end while column += 1; row = 0; } //end while Đoạn lệnh có tác nhập giá trị cho mảng với giá trị thực tế lưu nhớ phần tử gấp INSCREASE lần giá trị người dùng nhập từ bàn phím Sử dụng cin » Cú pháp: cin » Tên_mảng[chỉ_số dịng]Ịchỉsốcột] Ví dụ 1: cout« "Enter a character:" ein » grades[2][l]; I Phần tử dòng thứ cột thứ có giá trị ký tự người dửng nhập vào từ bàn phím Tài liệu giảng dạy Kỹ Thuật Lập Trình Trang J cấu trúc lồng • S Có hai cách khai báo kiểu liệu cấu trúc: khai báo cấu trúc trước khai báo liệu kiểu cấu trúc sau khai báo cấu trúc liệu kiểu cấu trúc đồng thời J Truy cập thành phần cấu trúc ta sử dụng dấu kiểu cấu trúc tùy vào J Cấu trúc dùng làm tham số cho hàm ❖ Câu hỏi củng cố Hãy trình bày khái niệm kiểu cấu trúc? Hãy nêu cách khai báo kiểu liệu cấu trúc? Hãy nêu cách truy cập đến thành phần cấu trúc? Con trỏ cấu trúc gì? Cho ví dụ sử dụng trỏ cấu trúc? Hãy viết hàm có tham số hình thức kiểu cấu trúc ❖ Bài tập Định nghĩa dãy cấu trúc dùng làm danh bạ điện thoại, gồm có tên, địa chỉ, số điện thoại, với số mẫu tin tối đa 40 Viết chương trình với chức sau: nhập thơng mới, tìm kiếm số điện thoại, in danh sách theo quận Viết chương trình đọc vào tên, địa chỉ, xếp tên địa theo thứ tự alphabet, sau hiển thị danh sách xếp i Viết chương trình nhận vào thơng tin sau: Tên đội bóng, số trận thắng, số trận hịa, số trận thua In đội bóng có số điểm cao (với trận thắng = điểm, trận hòa = điểm trận thua = điểm) Xây dựng cấu trúc gồm: Họ tên, ngày sinh, trường, số báo danh, điểm thi Trong đó, điểm thi cấu trúc gồm mơn: Tốn, Lý, Hóa Nhập liệu vào khoảng 10 thí sinh, tìm in thí sinh có tổng điểm mơn >=15 Viết chương trình tạo lập tìm kiếm liệu Nội dung yêu cầu gồm: Nhập họ tên, địa (gồm: Quận, phường, tổ), tuổi, lương Tìm kiếm người Quận có tuổi 30 thu nhập từ 500.000đ trở lên in hình Tài liệu giảng dạy ' Kỹ Thuật Lập Trình Trang 68 CHƯƠNG 6: TẬP TIN Sau học xong chương Sình viên có thể: Ỷ nghĩa việc sử dụng tập tin (file) Mở, đóng file Ghi, đọc file số nguyên, mảng, chuỗi Một sổ hàm xử lý tập tin Khái niệm tập tin luồng Khai báo biến tập tin I Khái niệm tập tin Khái niệm Dữ liệu kiểu tập tin sử dụng muốn lưu trữ liệu đĩa từ thiết bị lâu dài Kiểu tập tin tập hợp liệu có kiểu nhóm lại với nhau, lưu trữ nhớ ngồi máy tính đặt tên gọi tên tập tin Tên tập tin dùng Phân loại Có hai cách phân loại tập tin Phân loại tập tin theo phương pháp truy cập tập tin phân loại theo chất liệu tập tin 2.1 Phân loại theo phưong pháp truy cập Có hai cách truy cập tập tin: truy cập truy cập trực tiếp Tập tin truy cập tập tin có đặc điểm: để truy cập phần tử tệp ta phải duyệt qua tất cà phầ tử đứng trước phấn tử Hình ảnh tập băng cassette ghi hát Tập tin truy nhập trực tiếp tập tin cho phép truy nhập phàn tử tệp mà duyệt qua phần tử khác Các tập tin đĩa cứng đề tập tin truy nhập trực tiếp Tập tin truy nhập trực tiếp gọi tập tin truy xuất ngẫu nhiên 2.2 Phân loại theo chất liệu tập tin Theo cách phân loại tập tin chia thành tập tin văn (text file) tập tin nhị phân (binary file) Tập tin vãn bản: có phần tử ký tự, phần tử chữ cái, chữ số ký tự đặc biệt không ký tự điều khiển Các phần tử tập tin văn tổ chức thành dòng với dấu kết thúc dòng CR LF (‘\r’ ‘\n’) Vì tập tin văn đọc hình Khi đọc hai kỷ tự CR LH máy biến hai ký tự thành ký tự LF (có mã 10) Khi ghi ký tự LF chuyển thành hai ký tự CR lien tiếp Tập tin văn dùng ký tự AZ(ctrl_Z), mà ASCII 26 làm dấu hiệu kết thức tập tin Khi đọc tập tin gặp dấu hiệu kết thúc tập tin hàm eof() cho giá trị khác Tập tin nhị phân: tập tin mà phần tử số nhị phân biểu diễn thong tin Mỗi số nhị phân chiếm số byte cần thiết để biểu diễn sổ nguyên, số thực, cấu trúc, Tập tin nhị phân chứa liệu ký tự điêu khiển (có mã từ đên 31) Tập tin nhị phân dùng mã kêt thúc tập tin -1 Khi sử dụng lệnh xử lý tập tin phải xác định rõ ràng tập tin xử lý văn hay nhị phân Bộ nhớ đệm (buffer) Bộ nhớ đệm phần nhờ RAM máy tính dùng để lưu trữ thông tin tạm thời trình xử lý tập tin Trong trình xử lý tập tin ta thường phải đọc ghi phần tập tin Như cần xử lý phần tử tập tin phải truy cập đến nhiêu lần.Điều làm giảm tốc độ thực chương trình Để khắc phục nhược điểm máy tính sử dụng nhớ đệm để ghi khối liệu sau đọc từ tập tin Từng phần tử tập tin lấy từ nhớ đệm Khi nhớ đệm hết liệu khối liệu đọc từ tệp vào nhớ đệm Quá trình ngược lại ghi II Các thao tác tên tập tin Có bốn bước xử lý tập tin: + Khai báo biến tập tin (hoặc khai báo luồng nhập - xuất); + Mở tập tin; + Thực công việc đọc, ghi, tìm kiếm tập tin; + Đóng tập tin Khai báo Câu lệnh khai báo biến tập tin có dạng: FILE *fp; fp gọi biến tập tin trỏ tập tin Theo lệnh máy tính tạo đệm xử lý tập tin liên quan đến biến tập tin fp Mối liên hệ tập tin đĩa từ biến fp xác định mở tập tin Tài liệu giảng dạy Kỹ Thuật Lập Trình Trang 70 Mở tập tin Cú pháp: Biến tập tin = fopen(Tên_tập_tin_trên_đĩa, kiểu_xử_lý_tập_tin); Trong đó: fopenO hàm dùng để mở tập tin Hàm dùng cho tập tin văn nhị phân Tên tập tin đĩa: phải phù hợp với quy tắc đặt tên tập tin MS- DOS Kiểu xử lý tệp: dãy ký tự, xác định loại công việc đọc, ghi, thực tập tin Các giá trị cho bảng sau: Ý nghĩa Kiểu xử lý Mở tập tin văn để đọc “w” Tạo tập tin vãn để ghi Neu tập tin có sẵn bị ghi đè lên “a” Mở tập tin có ghi tiếp liệu vào cuối tập tin Neu tập tin chưa có đĩa tạo “r+” Mở tập tin cho phép ghi đọc “w+” Mở tập tin văn cho phép cà ghi đọc Nếu tập tin có sẵn bị ghi đè lên “a+” Mở tập tin văn để đọc ghi liệu nối tiếp vào cuối tập tin Nếu tập tun chưa có dĩa tập tin tạo — - —— 2õ333.3-3 Bảng: Các kiêu xử lý tập tin văn Ý nghĩa Kiểu xử lý “rb” Mở tập tin nhị phân để đọc “wb” Tạo tập tin nhị phân để ghi Nếu tập tin có sẵn bị ghi đè lên “ab” Mở tập tin có ghi tiếp liệu vào cuối tập tin Nếu tập tin chưa có đĩa tạo Trang 71 “r+b” Mở tập tin cho phép ghi đọc “w+b” Mở tập tin nhị phân cho phép cà ghi đọc Nếu tập tin có sẵn bị ghi đè lên Mở tập tin nhị phân để đọc ghi liệu nối tiếp vào cuối tập tin “a+b” ♦ Nếu tập tin chưa có đĩa tập tin tạo Bảng:Các kiểu xử lỷ tập tin nhị phân Ví dụ: FILE * fpl, *fp2; fp 1= fopen(“c:\\baitapc\\vidul.txt” , “r”); //Mở tập tin văn để đọc fpl= fopen(“c:\\baitapc\\vidu2.txt” , “wb”); //Mở tập tin nhị phân để ghi Hàm fopen() thiết lập mối liên hệ tập tin đĩa với biến tập tin Sau thực hàm tập tin đĩa xác định tên biến tập tin Hàm kiểm tra lỗi mở tập tin: int ferror(FILE *fp); Hàm có giá trị q trình mở tập tin khơng có lỗi Ngược lại, xảy lỗi khơng mở tệp hàm cho giá trị Hàm kiểm tra kết thủc tập tin: Trong trình xử lý tập tin thường phải đọc tập tin Hàm kiểm tra kết thúc tập tin dùng để kiểm tra xem đọc hết tập tin chưa Hàm có dạng: int foef(FILE *fp) Hàm cho giá trị đọc ký tự kết thúc tệp EOF, ngược lại cho giá trị Đóng tập tin Đóng tập tin bước cuối công việc xử lý tập tin, sau tập tin dùng xong trước kết thúc chương trình Hàm đóng tập tin ln có dạng: fclose(fp) Hàm đóng tệp gán cho biến fp Hàm bày dùng cho tệp văn tệp nhị phân Tài liệu giảng dạy Kỹ Thuật Lập Trình Trang 72 III Truy xuất tập tin Như giới thiệu, có hai loại tập tin c Tập tin văn tập tin nhị phân Tập tin văn truy xuất tuần tự, tập tin nhị phân cho phép thao tác truy xuất truy xuất ngẫu nhiên Truy xuất liệu tập tin nhị phân: Các hàm khai tệp int putw(int n, FILE *fp) : ghi giá trị n lên tệp fp dạng byte (kiểu int), trả sổ nguyên ghi, có lỗi hàm trả EOF int getw(FILE *fp) đọc sổ hai byte từ tệp, thành công hàm trả số nguyên đọc được, có lỗi hay gặp cuối tệp hàm trả EOF int fwrite(void *ptr, int size, int n, int FILE *fp) ghi n ghi kích thước size byte từ vùng nhớ ptr lên tệp fp, hàm trả số ghi ghi int fread(void *ptr, int size , int n, FILE *fp) đọc n ghi kích thước size byte từ tệp fp chứa vào vùng nhớ ptr Ví dụ 1: Chương trình nhập n sổ ngun từ bàn phím ghi vào tập tin lệnh putw(), sau mở tập tin từ đọc giá trị từ tập tin lệnh getw() in hình # included ostream> #include # included tdio h> using namespace std; int main() int í, n=5, a; FILE * fp; fp = fopen(”D:Wsonguyen.dat","wb"); //Mo tap tin nhi phan de ghi if(fp==NULL) { cout«"Khong mo duoc tap tin"; exit (0); } //Ghi vào tập tin n số nguyên cout

Ngày đăng: 12/10/2022, 17:56

TRÍCH ĐOẠN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w