1. Trang chủ
  2. » Công Nghệ Thông Tin

Giáo trình Ngôn ngữ lập trình 2

50 6 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

Định dạng
Số trang 50
Dung lượng 706,36 KB

Nội dung

Giáo trình Ngôn ngữ lập trình giới thiệu sơ lược về ngôn ngữ lập trình C++ cho các học sinh sinh viên đã có kiến thức căn bản về công nghệ thông tin; giới thiệu những vấn đề cơ bản nhất về ngôn ngữ C++; giới thiệu cho người đọc hiểu được công dụng của ngôn ngữ lập trình, hiểu cú pháp, công dụng của các câu lệnh dùng trong ngôn ngữ lập trình;... Mời các bạn cùng tham khảo để biết thêm các nội dung chi tiết.

LỜI TỰA Đây tài liệu xây dựng theo chương trình khung chương trình đào tạo trung cấp nghề Kỹ thuật Sửa chữa lắp ráp máy tính Trong giai đoạn viết giáo trình chúng tơi có điều chỉnh để giáo trình có tính thiết thực phù hợp với phát triển lĩnh vực cơng nghệ thơng tin Ngơn ngữ lập trình môn học đào tạo nghề Kỹ thuật Sửa chữa lắp ráp máy tính trình độ trung cấp nghề lĩnh vực Công nghệ thông tin Ngày nay, sản xuất hệ thống phần mềm lớn hữu ích nhờ phần lớn vào phát triển ngơn ngừ lập trình Trong phạm vi giáo trình Ngơn ngữ lập trình này, giới thiệu sơ lược ngôn ngữ lập trình C++ cho học sinh sinh viên có kiến thức công nghệ thông tin Giới thiệu vấn đề ngôn ngữ C++ Giới thiệu cho người đọc hiểu công dụng ngơn ngữ lập trình, hiểu cú pháp, cơng dụng câu lệnh dùng ngơn ngữ lập trình Phân tích chương trình: xác định nhiệm vụ chương trình (phải làm gì).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: thao tác biên tập chương trình, 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 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 tác giả khơng tránh khỏi thiếu sót hạn chế Tác giả chân thành mong đợi nhận xét, đánh giá góp ý để giáo trình ngày hồn thiện Mọi thơng tin đóng góp xin gửi thư điện tử địa ngothienhoang@cdndalat.edu.vn Tài liệu 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 hoàn chỉnh nghề Kỹ thuật Sửa chữa lắp ráp máy tính cấp trình độ trung cấp nghề dùng làm Giáo trình cho học sinh sinh viên khóa đào tạo, sử dụng cho đào tạo ngắn hạn cho đào tạo công nhân kỹ thuật, nhà quản lý lập trình viên tham khảo Đà lạt Tháng 06 năm 2012 Tác giả MỤC LỤC TRANG MỤC LỤC BÀI TỔNG QUAN VỀ NGƠN NGỮ LẬP TRÌNH 1.1 Giới thiệu 1.2 Thuật toán 1.3 Diễn đạt thuật toán 1.4 Chương trình 1.5 Giới thiệu C/C++ 1.6 Khởi động thoát khỏi C++ Bài tập 11 BÀI CÁC THÀNH PHẦN CƠ BẢN 12 2.1 Hệ thống ký hiệu từ khóa 12 2.2 Các Kiểu Dữ Liệu Cơ Bản Trong C++ 13 2.3 Biến, hằng, biểu thức 14 2.4 Các phép toán 18 2.5 Lệnh, khối lệnh 20 2.6 Câu lệnh gán, lệnh xuất nhập 21 2.7 Cách chạy chương trình 21 Bài tập 22 BÀI CÁC LỆNH CẤU TRÚC 24 3.1 Câu lệnh if 24 3.2 Câu lệnh switch 25 3.3 Câu lệnh for 26 3.4 Câu lệnh while ( Lặp với điều kiện kiểm tra trước ) 27 3.5 Câu lệnh while ( Lặp với điều kiện kiểm tra sau ) 28 3.6 Câu lệnh goto nhãn 29 3.7 Các câu lệnh break, continue 29 3.8 Câu lệnh rỗng 29 3.9 Vịng lặp vơ hạn 30 Bài tập 30 BÀI HÀM 31 4.1 Khái niệm 31 4.2 Quy tắc xây dựng hàm 31 4.3 Sử dụng hàm 32 4.4 Nguyên tắc hoạt động hàm 33 4.5 Cánh truyền tham số 33 4.6 Câu lệnh return 34 4.7 Một số thư viện C++ 34 Bài tập 35 BÀI KIỂU MẢNG 36 5.1 Khai báo mảng 36 5.2 Mảng tham số 37 5.3 Sắp xếp mảng 37 5.4 Gán giá trị cho mảng 38 Bài tập 39 BÀI CHUỖI KÝ TỰ 40 6.1 Khái niệm 40 6.2 Khai báo biến chuỗi 40 6.3 Nhập xuất xâu ký tự 40 6.4 Các phép toán chuỗi ký tự 41 6.5 Các thao tác chuỗi ký tự 41 Bài tập 42 BÀI BIẾN CON TRỎ 43 7.1 Biến trỏ 43 7.2 Con trỏ mảng chiều 44 7.3 Con trỏ xâu ký tự 45 7.4 Con trỏ mảng nhiều chiều 46 Bài tập 47 TÀI LIỆU THAM KHẢO 50 - BÀI TỔNG QUAN VỀ NGÔN NGỮ LẬP TRÌNH Mã : MH 13.1 Mục tiêu bài: Hiểu lịch sử phát triển ngôn ngữ Biết ngữ có ứng dụng thực tế Biết cách khởi động thoát khỏi chương trình Sử dụng hệ thống trợ giúp từ help file 1.1 Giới thiệu Lập trình thực chất điều khiển - ngơn ngữ lập trình cụ thể - xử lý thông tin máy tính điện tử theo u cầu tốn đặt Kết lập trình chương trình hợp thức hóa Thơng tin gửi đến CT, CT xử lý, kết gửi Nhập Chương Trình Xuất Để lập trình phải biết cách tổ chức liệu (cấu trúc liệu) cách thức xử lý liệu( thuật tốn ) để tạo chương trình mong muốn K Wirth đưa công thức : CHƯƠNG TRÌNH = CẤU TRÚC DỮ LIỆU + THUẬT TỐN Có nhiều cách tổ chức liệu có nhiều thuật toán để giải toán Đưa cách tổ chức liệu tốt thuật tốn tốt cơng việc người lập trình Các phương pháp lập trình thường sử dụng lập trình có cấu trúc lập trình theo hướng đối tượng Các phương pháp lập trình phản ánh quan niệm lập trình hoạt động khoa học có phương pháp khơng phải cơng việc ngẫu hứng Đặc trưng lập trình có cấu trúc chương trình phải có cấu trúc Tính cấu trúc chương trình thể mặt sau :  Cấu trúc mặt liệu : Từ liệu có , xây dựng liệu có cấu trúc phức tạp  Cấu trúc mặt lệnh : Từ lệnh đơn giản có, xây dựng lệnh có cấu trúc phức tạp  Cấu trúc mặt chương trình : Một chương trình lớn phân rã thành nhiều modul (hay chương trình ) độc lập, chương trình lại chia thành chương trình khác nên chương trình tổ chức thành hệ phân cấp Nhờ mà chương trình lớn, phức tạp phân thành modul chương trình đơn giản, dễ viết, dễ đọc, dễ sửa 1.2 Thuật toán 1.2.1 Định nghĩa trực quan thuật toán Thuật toán dãy hữu hạn thao tác, xếp theo trình tự xác định, đề nhằm giải lớp toán định Các thao tác biến đổi trạng thái toán trước thực tháo tác thành trạng thái kết Dãy thao tác thuật toán biến đổi trạng thái ban đầu thuật toán thành trạng thái cuối toán 1.2.2 Các đặc trưng thuật toán  Tính xác định  Tính dừng ( hữu hạn )  Tính đắn 1.2.3 Đặc tả thuật tốn Đặc tả thuật toán ( hay đặc tả toán ) định rõ lớp toán mà thuật tốn giải quyết, cần đặc điểm sau : Các đối tượng phương tiện Thuật toán cần sử dụng (nhập) Điều kiện ràng buộc (nếu có) đối tượng phương tiện Các sản phẩm, kết (xuất) Các yêu cầu sản phẩm kết Thường xuất dạng quan hệ sản phẩm kết đối tượng, phương tiện sử dụng Ta viết : INPUT : (1) (2); OUTPUT : (3) (4); 1.2.4 Độ phức tạp Thuật toán Mỗi Thuật toán cần thời gian nguồn lực khác để giải toán cụ thể Các tiêu hao đặc trưng độ phức tạp thuật tốn Có nhiều thuật tốn giải lớp tốn, ta mong muốn có thuật tốn hiệu hơn, tức tiêu hao loại nguồn lực Đối với máy tính, ta quan tâm đến thời gian kích thước nhớ mà thuật tốn sử dụng 1.3 Diễn đạt thuật tốn 1.3.1 Ngơn ngữ tự nhiên Mô tả bước thực thuật tốn dạng văn ngơn ngữ tự nhiên tiếng Việt, Anh, 1.3.2 Lưu đồ Sơ đồ tồn cảnh có cấu trúc biểu diễn bước thực thuật tốn, sử dụng hình vẽ có quy ước sau: Mũi tên luồng lưu chuyển liệu Bắt đầu, kết thúc Điểm bắt đầu, kết thúc Xử lý Hình chữ nhật biểu diễn bước xử lý Nhập, Xuất Điều kiện Hình bình hành biểu thị nhập xuất Hình thoi biểu thị thời điểm định Hình trịn biểu thị điểm ghép nối 1.3.3 Mã giả Dựa vào cú pháp ngữ nghĩa ngơn ngữ lập trình (chẳng hạn C, Pascal, ) Cho nên mã giả dựa sở sau đây:  Ký tự  Các từ  Các xâu ký tự (Chuỗi)  Hằng  Biến  Kiểu liệu  Lệnh gán  Khối lệnh  Các cấu trúc điểu khiên  Câu lệnh trả  1.3.4 Ngôn ngữ lập trình 1.4 Chương trình 1.4.1 Khái quát chương trình Thuật tốn phải diễn đạt cho máy tính hiểu thi hành Ngơn ngữ lập trình ( programming language ) sử dụng vào mục đích Ngơn ngữ lập trình tập hợp qui tắc chặt chẻ cú pháp (syntax), ngữ nghĩa (semantic) cho phép tạo văn để diễn đạt thuật toán Một văn gọi chương trình ( program ) Chương trình viết ngơn ngữ lập trình cấp cao gọi chương trình nguồn (Source program ) Chương trình viết ngơn ngữ máy gọi chương trình đích (Target program ) Máy thi hành chương trình dạng ngơn ngữ máy, chương trình nguồn muốn khai thác phải chuyển đổi thành chương trình đích tương đương Chương trình có nhiệm vụ chuyển đổi chương trình nguồn thành chương trình đích tương đương gọi chương trình dịch Có loại dịch khác : biên dịch ( Complier ) thông dịch ( Interpreter) 1.4.2 Mã liệu Một chương trình bao gồm hai phần : mã liệu Khi nạp chương trình dịch sang mã máy vào RAM, phần RAM chứa đọan mã máy lệnh thể thao tác gọi code segment Trong code segment chứa phần mã chương trình Phần RAM chứa liệu đối tượng thao tác gọi data segment Trong data segment chứa phần liệu chương trình Trong lần chạy khác nhau, có phần liệu chương trình thay đổi, cịn phần mã khơng đổi Data Segment  Biến tồn cục, liệu chương trình Code Segment  Mã chương trình 1.5 Giới thiệu C/C++ Ý tưởng quan trọng C xuất phát từ ngôn ngữ BCPL Martin Richards thiết kế Anh hưởng BCPL lên C gián tiếp thông qua ngôn ngữ B Ken Thompson viết năm 1970 cho hệ thống UNIX máy PDP-7 Từ ngôn ngữ B, Dennish Ritchie Brian Kernighan phát triển thành ngôn ngữ C vào năm 1970 phịng thí nghiệm hãng AT & T để phát triển cốt lõi hệ điều hành UNIX Trong nhiều năm, chuẩn cho C thực tế phiên cung cấp với hệ điều hành Unix version Nó mơ tả lần : ” The C programming language “ Dennish Ritchie Brian Kernighan Năm 1983 hội đồng thành lập để tạo chuẩn cho C, gọi chuẩn ANSI (American National Standards Institute : Viện định chuẩn Quốc gia Mỹ) Sau năm, chuẩn cuối ANSI C đề nghị vào tháng 12/1989, dùng vào năm 1990 Ngày trình biên dịch C giữ theo ANSI chuẩn C ngơn ngữ có khả tổ hợp thành phần tốt ngôn ngữ bậc cao điều khiển linh hoạt ngôn ngữ assembly Năm 1987 hãng Borland đưa ngôn ngữ C vào thị trường IBM-PC thông qua Turbo C Vào năm 1980, Bjarne Stroustrup cho đời ngôn ngữ C++ cách cài vào ngôn ngữ C khái niệm lập trình hướng đối tượng Năm 1988, hãng Zortech giới thiệu trình biên dịch C++ cho máy tính MS-DOS Cho tới xuất nhiều phiên C++ môi trường Microsoft Windows: Borland C++, Turbo C++ hãng Borland; Visual C++ Microsoft Hiện có nhiều chương trình lớn viết hay viết lại C/C++:  Hệ điều hành UNIX  Hệ điều hành Windows  Hệ quản trị sở liệu Dbase  Các chương trình soạn thảo văn  Các bảng tính điện tử  1.6 Khởi động thoát khỏi C++ Sử dụng Turbo C++ 3.0 để thực việc cài đặt Ta thực việc chuyển thư mục đến thư mục chứa tập tin cài đặt Chẳng hạn E:\SOFT\TC30 Và gõ lệnh Install Ví dụ: CD E:\SOFT\TC30 Install Sau cài đặt TC xong nằm thư mục C:\TC Cửa sổ soạn thảo TC hình sau Hình 1: Cửa sổ soạn thảo TC *Menu - Thanh Menu Để mở menu ta nhấn phím F10 sau dùng phím mũi tên qua lại để đưa đến mục chọn thích hợp nhấn phím Enter; - Dùng phím mũi tên lên xuống để chọn mục chọn thích hợp, xong nhấn Enter * Cửa sổ soạn thảo Cửa sổ soạn thảo chứa tiêu đề tên tập tin hình vẽ VIDU.CPP Chúng ta soạn thảo chương trình vào cửa sổ nhớ chương trình hay mođun chứa tập tin, nghĩa tập tin không chứa chương trình mà chứa chương trình Để phóng to cửa sổ , ta nhấn phím F5 Để chuyển qua lại cửa sổ, ta gõ F6 Để đóng cửa sổ, ta gõ Alt+F3 * Làm việc với tập tin - Lưu tập tin soạn thảo: Khi lưu trữ tập tin lần đầu hộp thoại Gõ vào tên tập tin cần lưu trữ Mặc định TC C++ 3.0 tự động thêm vào phần mở rộng CPP Sau lưu trữ tên tập tin đưa tiêu đề cửa sổ soạn thảo chương trình Hãy ý đường dẫn cuối hộp thoại, chọn lại đường dẫn cách nhấn phím Tab cho sáng danh sách, dùng mũi tên lên xuống để di chuyển đến thư mục cần chọn Thư mục có tên \ thư mục cha, ta di chuyển thư mục cha cách chọn mục nhấn phím Enter Hình 2: Hộp thoại lưu trữ tập tin lần đầu Mở tập tin lưu trữ: Nhấn phím F3 Hình 3: Mở tập tin lưu trữ Nhấn phím Tab để điểm sáng nằm bên danh sách dùng phím mũi tên để chọn tập tin chương trình cần mở Nhấn Enter Trong trình mở tập tin, ý đường dẫn hộp thoại - Có thể tạo thư mục cần lưu trữ tập tin vào thư mục tạo Bằng thao tác sau: Trong Turbo C++, chọn Menu File/DOS Shell, hình DOS ra, ta tiến hành tạo thư mục Tạo thư mục xong gõ lệnh Exit để vào lại Turbo C++ Vào Menu File/Change Dir để thay đổi mặc định lưu trữ tập tin thư mục Và hộp thoại sau Nhấn phím Tab để di chuyển điểm sáng sang thư mục Chọn thư mục cần chuyển, nhấn Enter Nhấn phím Tab để di chuyển điểm sáng đến nút OK nhấn phím Enter Công việc nên làm lần vào Turbo C++ để việc lưu tập tin mở tập tin cho xác * Các thao tác soạn thảo Copy nội dung: Di chuyển nội dung: * Các tài liệu sẵn có: - Để tra cứu hướng dẫn, nhấn F1 - Để tra cứu hướng dẫn dành cho từ trỏ đứng, ta gõ Ctrl+F1 * Các thao tác biên dịch chạy chương trình - Biên dịch chương trình ta nhấn: F9 Để chạy chương trình ta nhấn: Ctrl + F9 - Để xem kết chương trình ta nhấn Alt + F5 - Nhấn Alt+X File/Exit để khỏi chương trình Những tập tin chưa lưu trình soạn thảo,chương trình hỏi có lưu tập tin khơng? Nếu muốn lưu trước chọn Yes, Khơng chọn No Muốn huỷ việc khỏi TC chọn Cancel Thao tác chọn thực phím Tab Hình 4: Hộp thoại hỏi có lưu tập tin hay khơng? 10 BÀI KIỂU MẢNG - Mã : MH 13.5 Mục tiêu bài: Hiểu khái niệm mảng Khai báo mảng chiều, mảng hai chiều, mảng nhiều chiều Biết cách gán giá trị cho mảng trực tiếp, gián tiếp Vận dụng mảng làm tham số cho hàm Sắp xếp mảng theo thứ tự tăng dần giảm dần 5.1 Khai báo mảng 5.1.1 Khái niệm  Mảng tập biến kiểu gọi chung tên  Các phần tử mảng được truy cập đến số (index) mảng  Mảng có chiều hay nhiều chiều Dữ liệu mảng chứa vùng nhớ liên tục 5.1.2 Mảng chiều I) Khai báo: KDL Ten_Mang[KT]; Trong đó:  KDL kiểu liệu mảng, char, int, float,  Ten_Mang tên, tên mảng  KT: Là số nguyên dương kích thước khai báo mảng: xác định số phần tử mảng II) Chỉ số mảng: Mỗi phần tử mảng xác định số mảng Chỉ số mảng phải có giá trị int khơng vượt kích thước mảng Chỉ số mảng Ký pháp a[i] để phần tử thứ i mảng a Các phần tử a đánh số (mặc định) bởi: a[0], a[1], III) Lấy địa mảng: Các phần tử mảng chiều có địa liên tiếp nhớ Lấy địa phần tử mảng chiều phép toán &, với cú pháp: &a[i] // a[i] phần tử thứ i mảng a Ghi chú: Địa đầu mảng tên mảng, ta có: a == &a[0] IV) Kích thước nhớ (số bytes) sử dụng để lưu trử mảng chiều là: Tong (Bytes) = sizeof(KDL)* KT V) Một số thao tác thường gặp mảng chiều: Nhập xuất liệu cho mảng chiều: Thường liên kết với vòng lặp for Sắp xếp mảng theo thứ tự tăng hay giảm Gán mảng: Hai mảng a, b kiểu, thực trực tiếp việc gán a cho b câu lệnh gán: 36 b = a; Ta thực việc gán a cho b cách gán giá trị phần tử a tương ứng cho phần tử b VI) Hàm mảng chiều  Hàm trả trị mảng chiều  Đối hàm tên mảng chiều: Khi tham số thực truyền cho đối tương ứng tên mảng chiều, kiểu kích thước với đối Tên tham số thực tên đối trùng khác Đối Tên mảng chiều Tham số thực Tên mảng chiều ( kiểu, kích thước với đối) 5.1.3 Mảng chiều Trong mảng nhiều chiều, hình thức đơn giản mảng chiều I) Cách tiếp cận khai báo: Mảng chiều mảng chiều mảng chiều Có thể khai báo sau: KDL Ten_Mang[KT1][ KT2]; II) Cơng thức tính số bytes cần thiết nhớ lưu trư mảng chiều: Tong (Bytes) = sizeof(KDL)* KT1* KT2 III) Nhập, xuất mảng chiều (ma trận): Thường liên kết với vòng for duyệt theo số để nhập liệu cho phần tử, xuất liệu phần tử hình IV) Hàm mảng chiều:  Hàm trả giá trị mảng chiều  Đối hàm tên mảng chiều: Khi tham số thực truyền cho đối tương ứng tên mảng chiều, kiểu kích thước với đối Tên tham số thực tên đối trùng khác Đối Tên mảng chiều Tham số thực Tên mảng chiều ( kiểu, kích thước với đối) 5.2 Mảng tham số Dùng từ khoá typedef để định nghĩa, cách trước định nghĩa mảng thơng thường, ta đặt từ khố typedef Ví dụ: a) typedef float Day10[10];// Day10 kiểu liệu mảng chiều kích thước 10 Day10 a,b; // a,b biến kiểu mảng chiều có kích thước 10 b) typedef float Mat10_20 [10][20]; // Mat10_20 kiểu liệu mảng chiều kích thước 10x20 Mat10_20 c,d; // c,d biến kiểu mảng chiều có kích thước 10x20 5.3 Sắp xếp mảng Kỹ thuật thử sai Cần xác định Kq biết Kq{a1, ,an }:  Giả sử Kq = a1; 37  Duyệt phần tử cịn lại để xác giá trị Kq Kỹ thuật duyệt  Toàn cục: duyệt tất phần tử tập hợp  Cục bộ: Chỉ miền tập hợp xét Miền xác định từ giá trị hàm, lập bảng Kỹ thuật kiểm tra tính đúng, sai: Dạng 1:  Đúng: i, phải thỏa mãn  Sai: i, không thỏa mãn Cách thực sau:  Kq = 1; // Đúng  Duyệt để tìm điều kiện gán Kq = 0; // Sai Dạng 2:  Đúng: i, thỏa mãn  Sai: i, không thỏa mãn Cách thực sau:  Kq = 0; //Sai  Duyệt để tìm điều kiện gán Kq = 1; // Đúng 5.4 Gán giá trị cho mảng Sử dụng Khi khởi đầu khơng cần kích thước mảng Khi máy dành cho mảng vùng nhớ đủ để thu nhận danh sách giá trị khởi đầu Trong trường hợp mảng chiều kích thước chiều phải ra: Đối với mảng chiều khởi đầu theo cách số giá trị hàng khác với điều kiện là:  Kích thước chiều phải  Kích thước chiều khơng ra, có giá trị phải lớn kích thước thực mảng Ví dụ: int a[6][3] = { {1,2}, {3}, {4,5,6}, {0,3,1} }; // Thực mảng a[3][3] 38 Bài tập Bài1: Viết chương trình theo hàm sau, cho phép nhập xuất mảng chứa số nguyên, tìm số cho trước có mảng hay khơng, xếp mảng nhập thành mảng số nguyên tăng dần typedef int mangsonguyen[100]; Hàm void nhap(mangsonguyen a,int n); Cho phép nhập vào mảng số nguyên void xuat(mangsonguyen a,int n); xuất mảng chứa số nguyên nhập hình void tim(mangsonguyen a,int n,int &x); tìm số cho trước có mảng hay khơng void SapXep(mangsonguyen a, int n); xếp mảng nhập thành mảng số nguyên tăng dần Viết hàm main gọi thực hàm Bài 2: Viết chương trình theo hàm sau: Ta có khai báo kiểu liệu ma trân sau: typedef matran[100][100]; Viết hàm: void nhap(matran x,int m,int n); cho phép nhập vào ma trận với cấp ma trận người dùng nhập từ bàn phím void xuat(matran x,int m,int n); Xuất ma trận nhập hình int cong(matran u,matran v,int m,int n); Cộng hai ma trận cấp int tru(matran u,matran v,int m,int n); Trừ hai ma trận cấp int tich(matran u,matran v,int m,int n); tính tích hai ma trận Bài 3: Viết chương trình thực thao tác dãy a gồm n số nguyên Yêu cầu chương trình : - In hình menu có chức sau : Đếm số lần xuất x dãy a Tổng phần tử dãy trung cộng dãy Tổng số lẽ Tổng số chẳn Tổng số chia hết cho Tìm phần tử x có dãy hay khơng? Sắp theo yêu cầu: - Đầu dãy: Các số dương tăng dần - Tiếp theo: Các số âm giảm dần - Cuối cùng: Các số Thóat khỏi chương trình - Muốn thực thao tác chọn chức tương ứng menu 39 BÀI CHUỖI KÝ TỰ Mã : MH 13.6 - Mục tiêu bài: Hiểu chuỗi kí tự Khai báo biến chuỗi Biết cách nhập vào chuỗi kí tự cho chương trình trước sau runtime Hiểu áp dụng phép toán chuỗi Vận dụng hàm xử lý chuỗi để xử lý 6.1 Khái niệm Một xâu ký tự (chuỗi) mảng chiều ký tự kết thúc ký tự NULL (\0) Số lượng ký tự khác NULL xâu gọi chiều dài xâu 6.2 Khai báo biến chuỗi char a[KT];  a tên, tên xâu ký tự  KT số nguyên dương, kích thước xâu ký tự  a[i] ký tự thứ i a Chỉ số Trong khai báo, ta phải khai báo xâu ký tự có chiều dài lớn mảng sử dụng ký tự để đủ chỗ chứa ký tự NULL Kiểu xâu ký tự Cách tạo đặt từ khoá typedef trước khai báo xâu thông thường 6.3 Nhập xuất xâu ký tự Xuất: cout a ; Với a xâu ký tự không chứa ký tự tách ( khoảng trắng, tab …), iostream xem ký tự ký tự tách liệu Để nhập xâu ký tự có chứa ký tự tách dùng cách sau: a) Dùng hàm gets tệp tiêu đề : gets(a); b) Dùng hàm thành phần iostream: Cin.getline(a, so_ky_tu); Hàm đọc vào tối đa so_ky_tu – ký tự, kể ký tự trắng Các xử lý thường gặp xâu ký tự xác định chiều dài xâu, chép xâu s vào xâu t, nối xâu, 40 6.4 Các phép toán chuỗi ký tự 6.4.1 Gán giá trị cho xâu kí tự Vế trái lệnh gán phần tử mảng mảng, gán xâu kí tự cho mảng kiểu char sử dụng phương pháp sau: mystring[0] = 'H'; mystring[1] = 'e'; mystring[2] = 'l'; mystring[3] = 'l'; mystring[4] = 'o'; mystring[5] = '\0'; Nhưng rõ ràng phương pháp thực tế Để gán giá trị cho xâu kí tự, sử dụng loạt hàm kiểu strcpy (string copy), hàm định nghĩa string.h gọi sau: strcpy (string1, string2); Lệnh copy nội dung string2 sang string1 string2 mảng, trỏ hay xâu kí tự, lệnh sau cách để gán xâu "Hello" cho mystring: strcpy (mystring, "Hello"); 6.4.2 Chuyển đổi xâu kí tự sang kiểu khác Vì xâu kí tự biểu diễn nhiều kiểu liệu khác dạng số nên việc chuyển đổi nội dung sang dạng số hữu ích Ví dụ, xâu mang giá trị "1977"nhưng chuỗi gồm kí tự (kể kí tự null) khơng dễ chuyển thành số nguyên Vì thư viện cstdlib (stdlib.h) cung cấp macro/hàm hữu ích sau: atoi: chuyển xâu thành kiểu int atol: chuyển xâu thành kiểu long atof: chuyển xâu thành kiểu float 6.5 Các thao tác chuỗi ký tự 6.5.1 Các hàm để thao tác chuỗi Thư viện cstring (string.h) hàm strcpy mà cịn có nhiều hàm khác để thao tác chuỗi Dưới giới thiệu lướt qua hàm thông dụng nhất: strcat: char* strcat (char* dest, const char* src); Gắn thêm chuỗi src vào phía cuối dest Trả dest strcmp: int strcmp (const char* string1, const char* string2); So sánh hai xâu string1 string2 Trả hai xâu strcpy: char* strcpy (char* dest, const char* src); Copy nội dung src cho dest Trả dest strlen: size_t strlen (const char* string); Trả độ dài string Chú ý: char* hoàn toàn tương đương với char[] Cũng theo quy tắc chung mảng (1 chiều) giới thiệu Bộ khởi đầu mảng chiều ký tự là:  Danh sách ký tự, cuối ký tự ‘\0’ 41  Hoặc xâu ký tự 6.5.2 Hàm xâu ký tự Hàm trả giá trị xâu ký tự Đối hàm tên xâu ký tự, tham số thực phải tên xâu ký tự Đối Tham số thực Xâu ký tự Tên xâu ký tự 6.5.3 Mảng xâu ký tự  Cách tiếp cận mảng chiều ký tự  Khai báo: char a[KT1][KT2];  Nhập xuất mảng xâu ký tự nhập xuất xâu ký tự mảng  Khởi đầu: Khởi đầu xâu ký tự xâu ký tự Bài tập Bài 1: Viết Chương trình thực đảo ngược chuỗi ký tự Ví dụ: Kết thực thi chương trình: - Nhap vao chuoi : Khoa Cong Nghe Thong Tin - Chuoi co : 13 ky tu ke ca ky tu - Dao nguoc chuoi niT gnohT ehnN gnoC aohK Bài 2: Viết chương trình: Nhập danh sách có tối đa 100 nhân viên gồm thơng tin: họ tên, năm sinh tuổi Tính tuổi trung bình nhân viên cơng ty in danh sách nhân viên có tuổi lớn tuổi trung bình Xuất thơng tin nhân viên có năm sinh nhỏ 1985 Bài 3: Nhập vào danh sách lớp gồm n học viên (nhập vào) Thông tin học viên gồm Họ tên, phái , điểm, kết Xét kết theo điều kiện sau : Ðiểm>= ( đậu ), điểm >Chuoi; // Chuoi khơng có ký tự tách  gets(Chuoi); Xuất liệu: cout

Ngày đăng: 09/05/2021, 01:50