Tài liệu về C, C++

pdf 60 trang phuongnguyen 4032
Bạn đang xem 20 trang mẫu của tài liệu "Tài liệu về C, C++", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên

Tài liệu đính kèm:

  • pdftai_lieu_ve_c_c.pdf

Nội dung text: Tài liệu về C, C++

  1. Tài liệu C, C++ 1. Lập trình hướng thủ tục (POP) 2. Giới thiệu (Introduction) 3. Cài đặt (Setup) 3.1. Borland C++ 4. Cửa sổ làm việc (Window) 4.1. Khởi động (Open),Thoát (Exit) - Là 1 trình biên dịch, giúp người lập trình viên viết ra các chương trình ứng dụng như quản lý, hệ thống Giới thiệu - Mở Windows Explorer > chọn thư mục BORLANDC > chọn thư mục BIN > Click chuột phải lên tập tin Khởi động- BC.exe > chọn Send To > chọn Desktop (create shorcut). Open - Double Click lên Shortcut to Borland C++ for DOS . - Ấn phím Alt + Enter để phóng to hay thu nhỏ cửa sổ. Click chọn menu File > Quit. Thoát-Exit C1: Ấn phím F10 > chọn File > chọn Quit. C2: Ấn phím Alt + X. 5. File mã nguồn - CPP Khởi động-Open Tạo 1 file mã nguồn mới, dùng tên tạm-New Lưu file mã nguồn-Save Viết chương trình-Coding Chạy chương trình-Compile Viết chương trình tiếp-Coding next Cập nhật file mã nguồn-Save Lưu 1 bản sao của file mã nguồn-Save as Đóng-Close Mở file mã nguồn đã lưu-Open Tạo mới-New Click chọn menu File > chọn New. Ấn phím F10 > chọn File > chọn New. * Lưu file mã nguồn: Click chọn menu File > chọn Save. C1: Ấn phím F10 > chọn File > chọn Save. C2: Ấn phím F2. - Xuất hiện hộp thoại Save File As: + Nhập đường dẫn vào hộp Save File As dưới dạng [Ổ đĩa]:\[Thư mục]\[Tập tin] > ấn phím Enter. -> VD: D:\BaiTap\Bai-1. Lưu trữ-Save -> Tên thư mục và tập tin tối đa 8 kí tự. * Cập nhật file mã nguồn: Click chọn menu File > chọn Save. C1: Ấn phím F10 > chọn File > chọn Save. C2: Ấn phím F2. * Lưu 1 bản sao của file mã nguồn: Click chọn menu File > chọn Save as. Ấn phím F10 > chọn File > chọn Save as. - Xuất hiện hộp thoại Save File As tương tự như Lưu file mã nguồn. Chạy chương trình- Biên dịch-Compile Chạy-Run Biên dịch,Chạy-Compile,Run Compile Chạy từng bước-Debug * Biên dịch-Compile: o Xác định nơi chứa file đã biên dịch: Click chọn menu Options > chọn Directories. Ấn phím F10 > chọn Options > chọn Directories. - Sau đó xuất hiện hộp thoại : + Nhập đường dẫn vào hộp Output directory dưới dạng [Ổ đĩa]:[Thư mục] > ấn phím Enter. leonguyen.com 1
  2. Tài liệu C, C++ -> VD: D:\BaiTap. Click chọn menu Compile > chọn Make. C1: Ấn phím F10 > chọn Compile > chọn Make. C2: Ấn phím F9. Hay C1: Click chọn menu Compile > chọn Compile. C2: Ấn phím F10 > chọn Compile > chọn Compile. Ấn phím Alt + F9. * Chạy-Run: - Double click lên file *.exe vừa biên dịch ở đường dẫn đã xác định trước lúc biên dịch. * Biên dịch,Chạy-Compile,Run: Click chọn menu Run > chọn Run. C1: Click chọn menu Run > chọn Run. C2: Ấn phím Ctrl + F9. * Chạy từng bước-Debug: Ấn phím F7 hay F8 hay F4. * Theo dõi giá trị của biến: Ấn phím Ctrl + F7 > xuất hiện hộp thoại Add watch. - Nhập biến cần theo dõi giá trị. Click chọn menu Window > chọn Close. Đóng-Close C1: Ấn phím F10 > chọn Window > chọn Close. C2: Ấn phím Alt + F3. Click chọn menu File > chọn Open. C1: Ấn phím F10 > chọn File > chọn Open. C2: Ấn phím F3. Mở-Open - Xuất hiện hộp thoại Open A File: + Nhập đường dẫn vào hộp Name dưới dạng [Ổ đĩa]:\[Thư mục] > ấn phím Enter. -> VD: D:\BaiTap. + Dùng mũi tên để chọn file mã nguồn C++ trong khung Files > ấn phím Enter. 5.1. Chọn khối mã nguồn (Select) Khối mã nguồn Khối mã nguồn Chọn khối Bỏ chọn khối - Chọn 1 kí tự bên phải con trỏ nháy: Shift + . - Chọn 1 kí tự bên trái con trỏ nháy: Shift + . - Chọn 1 dòng ở dưới: Shift + . Chọn khối mã nguồn - Chọn 1 dòng ở trên: Shift + . - Chọn 1 từ bên trái con trỏ nháy: Ctrl + Shift + . - Chọn 1 từ bên phải con trỏ nháy: Ctrl + Shift + . - Chọn từ vị trí con trỏ nháy đến đầu dòng: Shift + Home. - Chọn từ vị trí con trỏ nháy đến cuối dòng: Shift + End. Bỏ chọn khối mã nguồn - Click chọn tại vị trí bất kì trên file. leonguyen.com 2
  3. Tài liệu C,C++ 5.2. Hiệu chỉnh (Edit) Xóa-Delete Tìm kiếm-Find Di chuyển-Move Phục hồi-Undo Sửa-Edit Thay thế-Replace Sao chép-Copy Lặp lại-Redo B1: Chọn khối mã nguồn cần xóa. B2: Click chọn menu Edit > chọn Clear. Xóa-Delete C1: Ấn phím F10 > chọn Window > chọn Close. C1: Ấn phím Ctrl + Delete. - Xóa 1 dòng > Ấn phím Ctrl + Y. B1: Chọn khối mã nguồn cần sửa. Sửa-Edit B2: Xóa và nhập mã nguồn mới. Click chọn menu Search > chọn Find. Tìm kiếm-Find Ấn phím F10 > chọn Search > chọn Find. - Nhập mã cần tìm ở hộp Text to Find. Click chọn menu Search > chọn Replace. Thay thế-Replace Ấn phím F10 > chọn Search > chọn Replace. - Nhập mã cần tìm ở hộp Text to Find. - Nhập mã cần thay thế ở hộp New Text. B1: Chọn khối văn bản cần di chuyển (nguồn). B2: Click chọn menu Edit > chọn Cut. C1: Ấn phím F10 > chọn Edit > chọn Cut. C2: Ấn phím Shift + Delete. Di chuyển-Move B3: Chọn vị trí con trỏ nháy tại vị trí sẽ di chuyển đến (đích). B4: Click chọn menu Edit > chọn Paste. C1: Ấn phím F10 > chọn Edit > chọn Paste. C2: Ấn phím Shift + Insert. B1: Chọn khối văn bản cần sao chép (nguồn). B2: Click chọn menu Edit > chọn Copy. C1: Ấn phím F10 > chọn Edit > chọn Copy. C2: Ấn phím Ctrl + Delete. Sao chép-Copy B3: Chọn vị trí con trỏ nháy tại vị trí sẽ sao chép đến (đích). B4: Click chọn menu Edit > chọn Paste. C1: Ấn phím F10 > chọn Edit > chọn Paste. C2: Ấn phím Shift + Insert. Click chọn menu Edit > chọn Undo. Phục hồi-Undo C1: Ấn phím F10 > chọn Edit > chọn Undo. C2: Ấn phím Alt + BackSpace. Click chọn menu Edit > chọn Redo. Lặp lại-Redo C1: Ấn phím F10 > chọn Edit > chọn Redo. C2: Ấn phím Alt + Shift + BackSpace. Biên soạn: Nguyễn Viết Nam 3
  4. Tài liệu C,C++ 6. Cấu trúc chương trình (Program Structure) Cấu trúc chương trình C++ [Ghi chú] Khai báo các Tập tin Thư viện Hàm int main() { Các lệnh; Cú pháp return 0; } //Phần_ghi_chú #include int main() { Các lệnh; return 0; } * Viết chương trình: //Day la chuong trinh C++ dau tien cua toi #include #include int main() { Ví dụ clrscr(); //Lenh xoa man hinh cout Cú pháp Hay #include"tên_tập_tin.h" Biên soạn: Nguyễn Viết Nam 4
  5. Tài liệu C,C++ #include -> chứa các lệnh nhập vào từ bàn phím, xuất ra màn hình. Ví dụ #include -> chứa lệnh dừng chương trình, chờ ấn 1 phím bất kì. Biên soạn: Nguyễn Viết Nam 5
  6. Tài liệu C,C++ 6.3. Hàm main - Là hàm chính của chương trình, chương trình luôn luôn bắt đầu chạy từ hàm main. int main() -> Trong chương trình C++ phải tồn tại hàm main. { } - Là kí hiệu cho biết bên trong là toàn bộ lệnh của chương trình. - Là các lệnh của ngôn ngữ C++ mà chúng ta viết ra để xử lý các dữ liệu theo yêu cầu của chương trình. - Lưu ý: + Mỗi khi kết thúc lệnh chúng ta phải sử dụng dấu chấm phẩy (;). + Để chương trình dễ đọc, dễ sửa chúng ta nên viết mỗi lệnh trên 1 dòng. Các lệnh + Chiều dài một dòng lệnh tối đa 127 kí tự. - VD: clrscr(); -> Lệnh dùng để xóa màn hình. cout Lệnh dùng để xuất ra câu chào ra màn hình. getch(); -> Lệnh dùng để dừng chương trình, chờ ấn 1 phím bất kì. return 0 - Là lệnh kết thúc hàm main và trả về giá trị 0. Biên soạn: Nguyễn Viết Nam 6
  7. Tài liệu C,C++ 7. Giao diện (Interface) 7.1. Lệnh xuất ra màn hình (Output) cout Mục đích - Là lệnh cho phép in ra màn hình các giá trị thuộc các kiểu dữ liệu khác nhau. (Purpose) Mô hình (Model) cout #include int main() { clrscr(); cout #include int main() { clrscr(); cout<<"\n1"<<"\t2"<<"\t3"; //Xuat o dong so 1 Biên soạn: Nguyễn Viết Nam 7
  8. Tài liệu C,C++ cout<<"\n4"<<"\t5"<<"\t6"; //Xuat o dong so 2 cout<<"\n7"<<"\t8"<<"\t9"; //Xuat o dong so 3 getch(); return 0; } Biên soạn: Nguyễn Viết Nam 8
  9. Tài liệu C,C++ 7.2. Lệnh nhập vào từ bàn phím (Input) - Là lệnh cho phép ghi nhận từ bàn phím các giá trị thuộc các kiểu dữ liệu khác nhau vào cho Mục đích biến. (Purpose) - Khi nhập xong thì ấn phím Enter để kết thúc việc nhập. Mô hình (Model) cin>>Biến_1>> >>Biến_n; - Là tên một lệnh trong C++ đại diện cho thiết bị dùng để nhập dữ liệu là bàn phím. cin cin - Được định nghĩa trong tập tin thư viện iostream.h. Cú pháp >> - Là kí hiệu ngăn cách các thành phần nhập khác nhau. (Syntax) Biến - Là vùng nhớ lưu trữ giá trị được nhập vào. puts(Biến_chuỗi); //stdio.h putchar(c); //stdio.h Ví dụ (Example) - Viết chương trình cho phép nhập vào họ tên của 1 người từ bàn phím. Sau đó, xuất ra 1 câu chào người đó ra màn hình. * Mô tả giải thuật: Bước 1: Nhập vào họ tên của 1 người từ bàn phím. Bước 2: Xuất ra câu chào người đó ra màn hình. * Viết chương trình: /* Day la chuong trinh cho phep nhap vao ho ten cua 1 nguoi tu ban phim Sau do, xuat ra 1 cau chao nguoi do ra man hinh */ #include Ví dụ #include 1 int main() { char name[25]; //Khai bao bien ki tu ten name clrscr(); cout >name; //Nhap vao ho ten cout #include Ví dụ int main() 2 { int x; //Khai bao bien so nguyen ten x clrscr(); cout >x; //Nhap vao x cout<<"y=5x^2+7x-2="<<5*x*x+7*x-2; //Xuat ra ket qua getch(); return 0; } Biên soạn: Nguyễn Viết Nam 9
  10. Tài liệu C,C++ 8. Dữ liệu (Data) 8.1. Kiểu dữ liệu (Data Type) - Là cách phân biệt những dữ liệu có sự khác nhau về kiểu, từ đó giúp quản lý và kiểm soát Định nghĩa-Definition tốt dữ liệu. Kiểu dữ liệu-Data type Kiểu Số nguyên-Integer Type Phân loại- Kiểu Số thực-Real Type Classification Kiểu Kí tự-Character Type Kiểu Luận lý-Logic Type 8.1.1. Kiểu Số nguyên (Integer Type) Đặc điểm - Là số có dạng dương-positive (không dấu-unsign) và âm-negative0 (có dấu-sign). Số nguyên-Integer Phân loại Dương-Positive Âm-Negative (Không dấu-Unsign) (Có dấu-Sign) Số (đối với số dương) Cú pháp -Số (đối với số âm) Số nguyên dương (không dấu) là 12345. Ví dụ Số nguyên âm (có dấu) là -110. Kiểu-Type Độ dài-Length Phạm vi-Scope int 16 bit hay 2 byte Từ -32.768 đến 32.767 long 32 bit hay 4 byte Từ 231 đến 231-1, khoảng +- 2,1 tỷ 8.1.2. Kiểu Số thực (Real Type) - Là số có phần nguyên và phần thập phân. Đặc điểm - Kí hiệu ngăn cách là dấu chấm (.). - Kí hiệu khoa học đại diện cho 10 lũy thừa là kí tự E (hay e). Số thực-Real Phân loại Tự nhiên-Nature Khoa học-Scientific Cú pháp Số_nguyên.SốESố_nguyên Số thực Pi dạng tự nhiên là 3.14. Ví dụ Số thực Pi dạng khoa khọc là 314E-2. Kiểu-Type Độ dài-Length Phạm vi-Scope float 32 bit hay 4 byte Từ -3,4x1038 đến 3,4x1038 double 64 bit hay 8 byte Từ -1,7x10308 đến 1,7x10308 8.1.3. Kiểu Kí tự (Character Type) - Là các chữ cái trong bảng chữ cái Latin. - Có kí tự và kí số. Đặc điểm - Kí tự thì có kiểu chữ hoa và kiểu chữ thường. - Giá trị thực chất là mã trong bảng mã ASCII. (VD: a là 97, A là 65, cách nhau 32 vị trí) Kiểu-Type Độ dài-Length Phạm vi-Scope Cú pháp-Syntax Ví dụ-Example Kí tự a là ‘a’. char 8 bit hay 1 byte Từ 1 đến 255 ‘Kí_tự’ Kí tự A là ‘A’. Kí tự số không là ‘0’. Biên soạn: Nguyễn Viết Nam 10
  11. Tài liệu C,C++ 8.1.4. Kiểu Chuỗi (String Type) Đặc điểm - Là nhóm kí tự. Cú pháp “Chuỗi_kí_tự” Chuỗi kí tự abc123 là “abc123”. Ví dụ Chuỗi kí tự Viet Nam là “Welcome to Viet Nam”. 8.1.5. Kiểu Luận lý (Logic Type) Đặc điểm - Là giá trị đại diện cho Đúng và Sai. 1 -> Đúng Cú pháp 0 -> Sai //Day la chuong trinh ve kieu du lieu #include #include int main() { clrscr(); cout<<”Day la so nguyen duong: ”<<12345; Ví dụ cout<<”\nDay la so nguyen am: ”<<-100; cout<<”\nDay la so thuc tu nhien: ”<<3.14; cout<<”\nDay la so thuc khoa hoc: ”<<314E-2; cout<<”\nDay la ki tu: ”<<’A’; cout<<”\nDay la chuoi: ”<<”Welcome to Viet Nam”; getch(); return 0; } Biên soạn: Nguyễn Viết Nam 11
  12. Tài liệu C,C++ 8.2. Biến (Variable) - Là tên đại diện cho ô nhớ được dùng để lưu trữ giá trị thuộc 1 kiểu dữ liệu tại 1 thời điểm nhất định. Định nghĩa - Biến có thể thay đổi trong chương trình. - 1 biến phải được khai báo trước khi được truy xuất. - Lúc 0 giờ 0 phút 0 giây, ngày 1 tháng 1 năm 2007 Giá trị Mô hình Tên biến a 10 Ô nhớ Kiểu số nguyên Biến-Variable Biến Số nguyên-Integer Variable Biến Số thực-Real Variable Phân loại Biến Kí tự-Character Variable Biến Chuỗi-String Variable Biến Luận lý-Logic Variable 8.2.1. Tên biến (Identifier) - Là nhóm kí tự do người lập trình tự đặt ra. Định nghĩa - Là tổ hợp các kí tự chữ, số và dấu gạch dưới "_". Ví dụ a1, may_tinh, a_b, - Một danh hiệu phải bắt đầu bằng một kí tự chữ hoặc dấu gạch dưới "_". VD: a1 -> đúng, 1a -> sai. - Các kí tự theo sau có thể là kí tự chữ, số hoặc dấu gạch dưới "_". VD: may_tinh -> đúng, may tinh -> sai. - Không được phép sử dụng các kí tự đặc biệt ( + - * / { } ' " . ) Quy tắc VD: a_b -> đúng, a-b -> sai. - Đặt tên không trùng với từ có sẵn. VD: main -> sai. - Phân biệt chữ hoa và chữ thường. VD: MAIN khác với main. - Chiều dài tối đa của 1 danh hiệu là 32 kí tự. - Tên dùng chữ hoa được dùng để đặt tên cho hằng. VD: PI. Lời khuyên - Tên dùng chữ thường được dùng để đặt tên cho biến, hàm, cấu trúc, kiểu dữ liệu mới, VD: a, b, c, them, xoa, sua, sinhvien, hoadon, matran. 8.2.1.1. 1. Khai báo (Declaration) Định nghĩa - Là cấp phát và định nghĩa 1 vùng nhớ để lưu trữ giá trị nào đó thuộc 1 kiểu dữ liệu nhất định. Tên biến ??? 1 ô nhớ Mô hình hay 1 phần tử Kiểu dữ liệu Khai báo-Declaration Kiểu dữ liệu Cú pháp-Syntax Tên biến [, ] ; [, ]; Ví dụ-Example int n; -> Khai báo biến n thuộc kiểu số nguyên. 8.2.1.2. 2. Gán giá trị (Assignment) Định nghĩa - Là lưu trữ giá trị viết trong mã nguồn hay nhập vào từ bàn phím. Biên soạn: Nguyễn Viết Nam 12
  13. Tài liệu C,C++ 10 Mô hình a ??? a a 10 Gán giá trị-Assignment Tên biến = Cú pháp-Syntax Giá trị ; = ; n=10; -> Gán giá trị 10 cho biến n. Ví dụ-Example cin>>n; -> Gán giá trị có được từ việc nhập vào từ bàn phím. Biên soạn: Nguyễn Viết Nam 13
  14. Tài liệu C,C++ 8.2.1.3. 3. Lấy giá trị (Access) Mô hình a 10 Cú pháp Tên_biến Ví dụ cout Xuất dữ liệu của biến n ra màn hình. 8.2.2. Biến Số nguyên (Integer Variable) Khai báo Kiểu_số_nguyên Biến_số_nguyên; Ví dụ int n; -> Khai báo biến n thuộc kiểu số nguyên. Gán giá trị Biến_số_nguyên=Giá_trị_nguyên; Ví dụ n=10; -> Gán số nguyên 10 cho biến n. 8.2.3. Biến Số thực (Real Variable) Khai báo Kiểu_số_thực Biến_số_thực; Ví dụ float x; -> Khai báo biến x thuộc kiểu số thực. Biến_số_thực=Giá_trị_thực; Gán giá trị hay Biến_số_thực=Giá_trị_nguyên; Ví dụ x=3.14; -> Gán số thực 3.14 cho biến x. 8.2.4. Biến Kí tự (Character Variable) Khai báo Kiểu_kí_tự Biến_kí_tự; Ví dụ char x; -> Khai báo biến x thuộc kiểu số thực. Gán giá trị Biến_kí_tự=Giá_trị_kí_tự; Ví dụ c=’A’; -> Gán kí tự A cho biến c. 8.2.5. Biến Chuỗi (String Variable) Giới thiệu - Là nhóm kí tự, viết trong cặp dấu nháy kép (“ ”). Khai báo Kiểu_kí_tự Biến_chuỗi[Số_kí_tự]; Ví dụ char s[25]; -> Khai báo chuỗi s thuộc kiểu kí tự và khởi tạo cho chuỗi 10 kí tự. strcpy(Biến_chuỗi, Giá_trị_chuỗi); Gán giá trị hay strcpy(Biến_chuỗi, Giá_trị_kí_tự); Ví dụ strcpy(s,”Chuong trinh C++”); -> Gán dòng chữ Chuong trinh C++ cho chuỗi s. 8.2.6. Biến Luận lý (Logic Variable) Khai báo Kiểu_số_nguyên Biến_luận_lý; Ví dụ int flag; -> Khai báo biến flag thuộc kiểu luận lý. Gán giá trị Biến_ luận_lý=Giá_trị_ luận_lý; flag=1; -> Gán giá trị Đúng cho biến flag. Ví dụ flag=0; -> Gán giá trị Sai cho biến flag. Ví dụ //Day la chuong trinh ve bien #include #include #include int main() { //Khai bao int n; float x; char c; Biên soạn: Nguyễn Viết Nam 14
  15. Tài liệu C,C++ char s[25]; //Gan gia tri n=10; x=3.14; c='A'; strcpy(s,"Chuong trinh C++"); clrscr(); //Gia tri ban dau cout >n; cout >x; cout >c; cout >s; //Gia tri sau khi cap nhat cout<<" Gia tri sau khi cap nhat cua cac bien:"; cout<<"\n\t So nguyen n="<<n; cout<<"\n\t So thuc x="<<x; cout<<"\n\t Ki tu c="<<c; cout<<"\n\t Chuoi s="<<s; getch(); } 8.3. Hằng (Constant) 8.3.1. Khai báo (Declaration) Biên soạn: Nguyễn Viết Nam 15
  16. Tài liệu C,C++ 9. Giải thuật (Algorithm) 9.1. Biểu thức (Expression) Định nghĩa - Là sự kết hợp giữa toán hạng và toán tử theo 1 công thức toán học nào đó. Ví dụ 1 + 2 = 3 - Là đại lượng có 1 giá trị xác định nào đó. Toán hạng-Operand - Gồm có: Hằng, biến, phần tử mảng, lời gọi hàm có trả về giá trị. - Trong toán hạng có thể lại có biểu thức. - Là đại lượng có ý nghĩa tính toán. Toán tử-Operator Toán tử-Operator Phép toán-Operation Hàm-Function 9.1.1. Phép toán (Operation) Định nghĩa - Là kí hiệu có ý nghĩa tính toán. Ví dụ + -> Phép toán cộng. 9.1.2. Hàm (Function) Định nghĩa - Là lệnh giúp thực hiện 1 công việc nào đó. Ví dụ abs(-10) -> Hàm trị tuyệt đối của số -10. 9.1.3. Phép toán số (Number Operation) Kí Loại Tên Kết quả Mô hình Cú pháp Ghi chú hiệu - Nếu có 1 toán Số hạng 1 Số hạng 1 + Cộng Tổng + Cộng Tổng hạng thuộc kiểu kí Số hạng 2 Số hạng 2 tự thì báo lỗi. - Nếu có 1 toán Số hạng 1 Số hạng 1 - Trừ Hiệu - Trừ Hiệu hạng thuộc kiểu kí Số hạng 2 Số hạng 2 tự thì báo lỗi. - Không dùng chữ 2 Thừa số 1 Thừa số 1 * Nhân Tích * Nhân Tích x hay dấu dấu ngôi Thừa số 2 Thừa số 2 chấm (:). Số bị chia Số bị chia / - Không dùng dấu Chia Thương / Chia Thương Số chia Số chia hai chấm (:). Lấy số dư Chia Số bị chia Lấy số dư của Số bị chia của phép % Chia lấy dư lấy dư phép chia % Số chia chia Số chia x=++i; -> tăng i Cộng 1 Tăng 1 ++ Số hạng Cộng 1 trước Tăng 1 ++Số hạng trước rồi mới gán i trước cho x x=i++; -> gán i cho Cộng 1 Tăng 1 ++ Số hạng Cộng 1 sau Tăng 1 Số hạng++ x trước rồi mới sau 1 tăng i ngôi x= i; -> giảm i Trừ 1 Giảm 1 Số hạng Trừ 1 trước Giảm 1 Số hạng trước rồi mới gán i trước cho x x=i ; -> gán i cho x Trừ 1 Giảm 1 Số hạng Trừ 1 sau Giảm 1 Số hạng trước rồi mới giảm sau i Ví dụ 1 //Day la chuong trinh ve cong 1 truoc, sau #include #include int main() Biên soạn: Nguyễn Viết Nam 16
  17. Tài liệu C,C++ { clrscr(); int x; int i; i=5; x=0; //Cong 1 truoc cout #include int main() { clrscr(); int x; int i; i=5; x=0; //Cong 1 truoc Ví dụ 2 cout số Số mũ Căn bậc 2 của 1 Số Căn bậc 2 sqrt sqrt Căn bậc 2 sqrt(Số) #include số (không âm) Trị tuyệt Số dương abs Số abs Số dương abs(Số) #include đối Biên soạn: Nguyễn Viết Nam 17
  18. Tài liệu C,C++ //Day la chuong trinh bieu thuc so #include #include #include int main() { //Khai bao int a; int b; clrscr(); //Nhap gia tri ban dau cout >a; cout >b; 1 //Gia tri sau khi tinh toan cout<<" Gia tri sau khi tinh toan cua cac bien:"; cout<<"\n\t Tong="<<a+b; cout<<"\n\t Hieu="<<a-b; cout<<"\n\t Tich="<<a*b; cout<<"\n\t Thuong="<<a/b; cout<<"\n\t Cong 1 sau cua a="<<a++; cout<<"\n\t Ket qua Cong 1 sau cua a="<<a; cout<<"\n\t Tru 1 sau cua a ="<<a ; cout<<"\n\t Ket qua Tru 1 sau cua a ="<<a; cout<<"\n\t Luy thua="<<pow(a,b); cout<<"\n\t Can bac 2 cua a="<<sqrt(a); cout<<"\n\t Tri tuyet doi cua b="<<abs(b); getch(); return 0; } - Viết chương trình tính chu vi, diện tích của 1 hình chữ nhật với chiều dài và chiều rộng nhập vào từ bàn phím. * Kiến thức cơ sở: Gọi: - Chiều dài là h. - Chiều rộng là w. - Chu vi hình chữ nhật là c. - Diện tích hình chữ nhật là s. Như vậy chúng ta có các công thức sau: Ví dụ - Chu vi c = (h+w).2 2 - Diện tích s = h.w * Mô tả giải thuật: Bước 1. Nhập vào chiều dài h. Bước 2. Nhập vào chiều rộng w. Bước 3. Tính chu vi c. Bước 4. Tính diện tích s. Bước 5. Xuất chu vi c, diện tích s ra màn hình. Ví dụ - Viết chương trình tính chu vi, diện tích của 1 hình tròn với bán kính hình tròn nhập vào từ bàn phím. 3 * Kiến thức cơ sở: Gọi: - Bán kính hình tròn là r. - Chu vi hình tròn là c. - Diện tích hình tròn là s. Như vậy chúng ta có các công thức sau: - Chu vi c = 2.π.r - Diện tích s = π.r2 Trong đó π là một hằng số có giá trị là 3.14159. * Mô tả giải thuật: Bước 1: Nhập vào bán kính hình tròn r. Bước 2: Tính chu vi c. Biên soạn: Nguyễn Viết Nam 18
  19. Tài liệu C,C++ Bước 3: Tính diện tích s. Bước 4: Xuất chu vi c, diện tích s ra màn hình. 9.1.5. Hàm Kí tự (Character Function) Tên Kết quả Kí hiệu Mô hình Cú pháp Ghi chú Mã ASCII của Kí tự toupper In hoa Kí tự hoa toupper Kí tự HOA toupper(Kí_tự) #include Mã ASCII của Kí tự tolower In thường Kí tự thường tolower Kí tự THƯỜNG tolower(Kí_tự) #include 9.1.6. Hàm Chuỗi (String Function) Kết Kí Tên Mô hình Cú pháp Ghi chú quả hiệu Chiều Số dài lượng strlen Chuỗi strlen Số lượng kí tự strlen(Chuỗi) #include chuỗi kí tự Nối Chuỗi Chuỗi con 1 strcat strcat Chuỗi cha strcat(Chuỗi_con_1,Chuỗi_con_2) #include chuỗi cha Chuỗi con 2 //Day la chuong trinh ve ki tu va chuoi #include #include #include #include int main() { //Khai bao char c1; char c2; char s1[25]; char s2[25]; clrscr(); //Nhap gia tri ban dau cout >c1; cout >c2; cout >s1; cout >s2; //Gia tri sau khi tinh toan cout<<" Gia tri sau khi tinh toan cua cac bien:"; cout<<"\n\t Ki tu hoa cua c1="<<(char)tolower(c1); cout<<"\n\t Ki tu thuong cua c2="<<(char)toupper(c2); cout<<"\n\t Chieu dai Chuoi con s1="<<strlen(s1); cout<<"\n\t Chieu dai Chuoi con s2="<<strlen(s2); cout<<"\n\t Chuoi cha s="<<strcat(s1,s2); getch(); return 0; } 9.2. Cấu trúc điều khiển (Flow Control) Cấu trúc điều khiển-Flow Control Cấu trúc chọn (rẽ nhánh) Cấu trúc lặp (chu trình) Biên soạn: Nguyễn Viết Nam 19
  20. Tài liệu C,C++ Hằng Luận lý-Logic Constant 1 -> Đúng Cú pháp 0 -> Sai Ví dụ cout Khai báo biến flag thuộc kiểu luận lý. Gán giá trị Biến_ luận_lý=Hằng_ luận_lý; flag=1; -> Gán giá trị Đúng cho biến flag. Ví dụ flag=0; -> Gán giá trị Sai cho biến flag. 9.2.1. Điều kiện (Criteria) Điều kiện-Criteria Đơn-Single Hỗn hợp-Multiple Chính xác-Exact Gần đúng-Approximate Và-And Hoặc-Or 9.2.1.1. Phép toán So sánh Số (Number Compare Operation) Điều Kí Tên Kết quả Mô hình Cú pháp Ghi chú kiện hiệu Chính Số 1 == Bằng nhau == xác Số 2 Số 1 != - Không dùng dấu Khác nhau != Số 2 sọc lưới (#). - 1 nếu Số 1 > Lớn hơn > Số 1 + 1 nếu Đúng Đúng So sánh Số Số 2 Gấn - 0 nếu + 0 nếu Sai Số 1 = >= hoặc bằng Số 2 Nhỏ hơn Số 1 0 strcmp So sánh chuỗi + >0 nếu chuỗi 1 > chuỗi 2 strcmp(Chuỗi_1,Chuỗi_2) #include Gấn hơn Chuỗi 2 + <0 nếu chuỗi 1 < chuỗi 2 đúng Nhỏ <0 hơn Biên soạn: Nguyễn Viết Nam 20
  21. Tài liệu C,C++ 9.2.1.3. Bảng chân trị (Logic Table) A B Phủ định A A và B A hoặc B Đúng Đúng Sai Đúng Đúng Đúng Sai Sai Sai Đúng Sai Đúng Đúng Sai Đúng Sai Sai Đúng Sai Sai 9.2.1.4. Phép toán Luận lý (Logic Operation) Kết Kí Tên Mô hình Cú pháp quả hiệu Kết Phủ quả ! Biểu thức luận lý Phủ định Kết quả Phủ định !Biểu_thức_luận_lý định Phủ định Kết Biểu thức luận lý 1 Và quả && Và Kết quả Và Biểu_thức_luận_lý_1&&Biểu_thức_luận_lý_2 Và Biểu thức luận lý 2 Kết Biểu thức luận lý 1 Hoặc quả || Hoặc Kết quả Hoặc Biểu_thức_luận_lý_1||Biểu_thức_luận_lý_2 Hoặc Biểu thức luận lý 2 9.2.2. Lưu đồ (Flow Chart) Định nghĩa - Là cách thể hiện giải thuật bằng mô hình. Lưu đồ Kí hiệu Bắt đầu-Start Kết thúc-End Chú thích-Annotation Đường kết nối - Flow line Nhập-Input Xuất-Output Hiển thị-Display Xử lí-Process Quyết định – Decision Thủ tục-Procedure Kết nối trên cùng một trang-On page connector Kết nối ở trang khác – Off page connector 9.2.3. Cấu trúc chọn (rẽ nhánh) (Choice) Cấu trúc chọn (rẽ nhánh) Nếu-If Lựa chọn-Select Biên soạn: Nguyễn Viết Nam 21
  22. Tài liệu C,C++ 9.2.3.1. Nếu (If) Định nghĩa - Là lệnh ra những quyết định rẽ nhánh (nhảy) đến những câu lệnh cần thực hiện nào đó. Nếu-If Phân loại 1 trường hợp 2 trường hợp Biên soạn: Nguyễn Viết Nam 22
  23. Tài liệu C,C++ 9.2.3.1.1. 1 trường hợp Bắt đầu if Đầu if ( Điều kiện Điều kiện ) Lưu đồ-Flow Đúng Thân if Cú pháp-Syntax Chart Sai { Khối lệnh Các_lệnh; } Kết thúc if ( ) { Các_lệnh; } Ví - Viết chương trình kiểm tra đăng nhập gồm tên người dùng và mật khẩu. Nếu đúng thì thông báo đăng nhập dụ thành công và chào mừng người đó, ngược lại thì thông báo không thành công. (Tên người dùng và mật khẩu tự 1 chọn). * Vẽ lưu đồ: Bắt đầu Khai báo chuỗi us Khai báo chuỗi pw Nhập tên người dùng= us Nhập mật khẩu= pw us=”abc” Sai và pw=”123” Đúng Bạn đăng nhập Bạn đăng nhập ko thành công thành công Kết thúc * Viết chương trình: //Day la chuong trinh kiem tra dang nhap #include #include #include int main() { //Khai bao char us[8]; char pw[6]; clrscr(); //Nhap cout >us; Biên soạn: Nguyễn Viết Nam 23
  24. Tài liệu C,C++ cout >pw; //Kiem tra dang nhap if (strcmp(us,"abc")==0 && strcmp(pw,"123")==0) { cout =8 - Loại Khá nếu 7 #include int main() { //Khai bao float dtb; //Gan gia tri dtb=0.0; clrscr(); //Nhap Ví cout >dtb; 2 //Xep loai if (dtb>=8) { cout =7 && dtb =5 && dtb<7) { cout<<"Loai Trung binh!"; } if (dtb<5) { cout<<"Loai Yeu!"; } getch(); return 0; } Ví - Viết chương trình nhập vào thứ dạng số và xuất ra thứ dạng chữ. dụ - 1 là Chủ nhật, 2 là thứ hai, , 7 là thứ bảy. 3 * Vẽ lưu đồ: Biên soạn: Nguyễn Viết Nam 24
  25. Tài liệu C,C++ Bắt đầu Khai báo số nguyên thứ Nhập thứ dạng số= thứ 1 Đúng Chủ nhật Sai 2 Đúng Thứ hai Sai 7 Đúng Thứ bảy Sai Số bạn nhập ko phải thứ trong tuần Kết thúc - Viết chương trình nhập vào tháng dạng số và xuất ra tháng dạng chữ. - 1 là Tháng một, 2 là Tháng hai, , 12 là Tháng mười hai. * Vẽ lưu đồ: Bắt đầu Khai báo số nguyên tháng Nhập tháng dạng số= tháng Ví Đúng Tháng một dụ 1 4 Sai 2 Đúng Tháng hai Sai 7 Đúng Tháng mười hai Sai Số bạn nhập ko phải tháng trong năm Kết thúc Ví - Viết chương trình nhập vào giờ dạng số và xuất ra giờ dạng chữ. dụ - 1 là Một giờ, 2 là Hai giờ, , 12 là Mười hai giờ. 5 Viết chương trình nhập vào số km và tính ra tổng cước taxi như sau: Ví - Nếu 10 km đầu tiên, giá 5000 đồng/km. dụ - 10 km tiếp theo, giá 3000 đồng/km. 6 - Từ km thứ 21 về sau thì tính giá 2000 đồng/km. Ví - Viết một chương trình có yêu cầu xác định tình trạng kết hôn của một công dân dựa vào các thông tin như tuổi, dụ giới tính, và tình trạng hôn nhân, dựa trên một số thông tin như sau: 7 + Nếu công dân là nam thì độ tuổi có thể kết hôn là 20 với điều kiện là chưa có gia đình. Biên soạn: Nguyễn Viết Nam 25
  26. Tài liệu C,C++ + Nếu công dân là nữ thì độ tuổi có thể kết hôn là 19 cũng với điều kiện là chưa có gia đình. + Tất cả các công dân có tuổi nhỏ hơn 19 điều không được kết hôn. 9.2.3.1.2. 2 trường hợp Bắt đầu Nếu if (Điều_kiện_đú ng) Đầu if Điều kiện ( Sai Điều kiện Đúng ) Khối lệnh Khối lệnh Thân if { Các_lệnh; Kết thúc Lưu đồ-Flow } Cú pháp-Syntax else Chart //điều_kiện_s ai { Các_lệnh; } if (Điều_kiện) { Các_lệnh; } else { Các_lệnh; } Biên soạn: Nguyễn Viết Nam 26
  27. Tài liệu C,C++ - Viết chương trình so sánh 2 số. - Viết chương trình so sánh 2 chuỗi. * Viết chương trình: * Viết chương trình: //Day la chuong trinh so sanh 2 so //Day la chuong trinh so sanh 2 chuoi #include #include #include #include int main() #include { int main() //Khai bao { int a; //Khai bao int b; char s1[25]; //Gan gia tri char s2[25]; a=0; b=0; clrscr(); //Nhap 2 chuoi clrscr(); cout >s1; Ví dụ Ví dụ cout >a; cin>>s2; cout >b; if (strcmp(s1,s2)>=0) //So sanh 2 so { if (a>=b) cout - a#0: #include + Tính =b2 - 4ac int main() + >0: Phương trình có 2 nghiệm là { − b + ∆ − b − ∆ và //Khai bao 2a 2a float a; + =0: Phương trình có nghiệm kép là float b; − b 2a //clrscr(); + >a; cout >b; //Giai phuong trinh if (a==0) { if (b==0) { cout<<"Phuong trinh co vo so nghiem!"; } else //b khac 0 { cout<<"Phuong trinh vo nghiem!"; } Biên soạn: Nguyễn Viết Nam 27
  28. Tài liệu C,C++ } else //a khac 0 { cout<<"Phuong trinh co 1 nghiem x="<<-b/a; } getch(); return 0; } Biên soạn: Nguyễn Viết Nam 28
  29. Tài liệu C,C++ 9.2.3.2. Lựa chọn (Select) Bắt đầu switch Đầu switch Điều kiện 1 Đúng Các lệnh 1 ( Sai Biến Điều kiện 2 Đúng Các lệnh 2 ) Sai Thân switch Điều kiện n Đúng Các lệnh n { Sai Khối lệnh n+1 Các trường hợp biết trước Kết thúc case Giá_trị Lưu : Cú đồ- pháp- Flow Syntax Chart Các_lệnh; break; Trường hợp còn lại default : Các_lệnh; break; } switch ( ) { case : ; break; //Các trường hợp biết trước default: ; break; //Trường hợp còn lại } Ví dụ 1 - Viết chương trình nhập vào thứ dạng số và xuất ra thứ dạng chữ. - 1 là Chủ nhật, 2 là thứ hai, , 7 là thứ bảy. * Vẽ lưu đồ: Biên soạn: Nguyễn Viết Nam 29
  30. Tài liệu C,C++ Bắt đầu Khai báo số nguyên thứ Nhập thứ dạng số= thứ 1 Đúng Chủ nhật Sai 2 Đúng Thứ hai Sai 7 Đúng Thứ bảy Sai Số bạn nhập ko phải thứ trong tuần Kết thúc * Viết chương trình: //Day la chuong trinh xuat thu dang chu #include #include int main() { //Khai bao int thu; clrscr(); //Nhap thu cout >thu; //Xuat thu switch (thu) { case 1: cout<<"Chu nhat"; break; case 2: cout<<"Thu hai"; break; case 3: cout<<"Thu ba"; break; case 4: cout<<"Thu tu"; break; case 5: cout<<"Thu nam"; break; case 6: cout<<"Thu sau"; break; case 7: cout<<"Thu bay"; break; default: cout<<"So ban nhap ko phai thu trong tuan"; break; } getch(); return 0; } Ví dụ 2 - Viết chương trình nhập vào tháng dạng số và xuất ra tháng dạng chữ. - 1 là Tháng một, 2 là Tháng hai, , 12 là Tháng mười hai. * Vẽ lưu đồ: Biên soạn: Nguyễn Viết Nam 30
  31. Tài liệu C,C++ Bắt đầu Khai báo số nguyên tháng Nhập tháng dạng số= tháng 1 Đúng Tháng một Sai 2 Đúng Tháng hai Sai 7 Đúng Tháng mười hai Sai Số bạn nhập ko phải tháng trong năm Kết thúc - Viết chương trình nhập vào giờ dạng số và xuất ra giờ dạng chữ. Ví dụ 3 - 1 là Một giờ, 2 là Hai giờ, , 12 là Mười hai giờ. 9.2.4. Cấu trúc lặp (chu trình) (Cycle) Cấu trúc lặp (chu trình) Biết số lần lặp Không biết số lần lặp 9.2.4.1. Tập trị (Set) Biết số lần lặp 1 n Không biết số lần lặp 1 ??? -> có điều kiện lặp (điểm bắt đầu) và dừng (điểm kết thúc). Biên soạn: Nguyễn Viết Nam 31
  32. Tài liệu C,C++ 9.2.4.2. Biết số lần lặp for Bắt đầu Đầu for Lệnh khởi động ( Lệnh khởi động ; Điều kiện lặp Điều kiện lặp ; Đúng Lệnh trước lần lặp kế Lưu Các lệnh Cú đồ Sai pháp ) Lệnh trước lần lặp kế Thân for { Các lệnh; Kết thúc } for (Lệnh _khởi_động;Điều_kiện_lặp;Lệnh_trước_lần_lặp_kế) { Các_lệnh; } Ví dụ - Viết chương trình xuất dãy số tăng tuần tự từ 1 Ví dụ - Viết chương trình xuất dãy số giảm tuần tự từ n 1 đến n. 2 đến 1. * Vẽ lưu đồ: * Vẽ lưu đồ: Bắt đầu Bắt đầu Khai báo số nguyên n Khai báo số nguyên n Khai báo số nguyên i Khai báo số nguyên i Nhập n= Nhập n= n n i=n i=1 i>=1 i #include #include int main() { //Khai bao Biên soạn: Nguyễn Viết Nam 32
  33. Tài liệu C,C++ int n; int i; clrscr(); //Nhap cout >n; for (i=1;i<=n;i++) { cout<<" "<<i; delay(500); } getch(); return 0; } Biên soạn: Nguyễn Viết Nam 33
  34. Tài liệu C,C++ - Viết chương trình xuất dãy số tăng theo số chẵn từ - Viết chương trình xuất dãy số tăng theo số lẻ từ 2 đến n. (Vd: 2 4 6 8 10) 1 đến n. (Vd: 1 3 5 7 9) * Vẽ lưu đồ: * Vẽ lưu đồ: Bắt đầu Bắt đầu Khai báo số nguyên i Khai báo số nguyên i i=2 i=1 i #include #include int main() { //Khai bao int n; int i; clrscr(); //Nhap cout >n; for (i=2;i<=n;i=i+2) { cout<<" "<<i; delay(500); } getch(); return 0; } 9.2.4.3. Không biết số lần lặp Không biết số lần lặp Lặp ít nhất là 0 lần Lặp ít nhất là 1 lần 9.2.4.3.1. Lặp ít nhất là 0 lần Biên soạn: Nguyễn Viết Nam 34
  35. Tài liệu C,C++ Bắt đầu while Đầu while ( Điều kiện lặp Điều kiện lặp ) Đúng Thân while Lưu đồ Cú pháp Các lệnh Sai { Các lệnh; Kết thúc } while (Điều_kiện_lặp) { Các_lệnh; } Biên soạn: Nguyễn Viết Nam 35
  36. Tài liệu C,C++ Ví dụ - Viết chương trình xuất dãy số tăng theo số chẵn từ 2 đến n. Sau đó đếm số lượng, tính tổng, tính tích, tính 1 trung bình cộng các số đó. Bắt đầu A Khai báo số nguyên n i #include #include int main() { //Khai bao bien dem int i; int dem; int n; int s; int p; float tbc; clrscr(); //Nhap cout >n; //Xuat i=2; dem=0; s=0; p=1; tbc=0; while (i<=n) { cout<<" "<<i; delay(500); dem=dem+1; Biên soạn: Nguyễn Viết Nam 36
  37. Tài liệu C,C++ s=s+i; p=p*i; i=i+2; } tbc=tong/dem; cout<<"\nTong="<<s; cout<<"\nTich="<<p; cout<<"\nTrung binh cong="<<tbc; getch(); return 0; } Ví dụ - Viết chương trình xuất dãy số tăng theo số lẻ từ 1 đến n. Sau đó đếm số lượng, tính tổng, tính tích, tính 2 trung bình cộng các số đó. Biên soạn: Nguyễn Viết Nam 37
  38. Tài liệu C,C++ 9.2.4.3.2. Lặp ít nhất 1 lần Bắt đầu do Đúng { Các lệnh Các lệnh; } Điều kiện lặp while Lưu đồ Cú pháp ( Sai Điều kiện lặp Kết thúc ) ; do { Các_lệnh; } while (Điều_kiện_lặp); Ví - Viết chương trình kiểm tra tên người dùng và mật khẩu. Nếu đúng thì thông báo đăng nhập thành công, ngược lại dụ thì thông báo không thành công và yêu cầu đăng nhập lại đăng nhập lại. (Tên người dùng và mật khẩu tự chọn). * Vẽ lưu đồ: Kiểm tra đăng nhập Bắt đầu Khai báo chuỗi us Khai báo chuỗi pw Nhập tên người dùng= us Nhập mật khẩu= pw us ”123” Đúng Bạn đăng nhập ko thành công Bạn đăng nhập Mời bạn đăng nhập lại thành công Kết thúc Biên soạn: Nguyễn Viết Nam 38 Biến Mảng-Array Variable
  39. Tài liệu C,C++ * Viết chương trình: //Day la chuong trinh kiem tra dang nhap #include #include #include #include int main() { //Khai bao char us[8]; char pw[6]; int dk1; int dk2; do { clrscr(); cout >us; cout >pw; dk1=strcmp(us,"abc")!=0; dk2=strcmp(pw,"123")!=0; if (dk1||dk2) { cout<<"Ban dang nhap ko thanh cong! Moi ban dang nhap lai"; delay(1000); } } while (dk1||dk2); cout<<"Ban dang nhap thanh cong!"; getch(); return 0; } Biên soạn: Nguyễn Viết Nam 39 Biến Mảng-Array Variable
  40. Tài liệu C,C++ 10. Mảng (Array) Biến-Variable Phân loại BiếnBiến đơn đơn trị-Single trị-Single value value variable Biến đa trị-Multiple value variable variable Biến Số nguyên-Integer Variable Biến đơn trị Biến Số thực-Real Variable Biến Kí tự-Character Variable Biến Luận lý-Logic Variable Biến đa trị-Multiple variable variable Biến Mảng-Array Variable Biến đa trị Biến Ma trận-Matrix Variable Biến Chuỗi-String Variable Định - Là 1 dãy các ô nhớ có chung 1 tên được đánh dấu bằng chỉ số (từ 0 đến n-1) trong bộ nhớ và có cùng nghĩa kiểu dữ liệu. Giá trị Chỉ số 0 1 n-2 n-1 Ví dụ Tên mảng a 5 3 7 2 Kiểu số nguyên Ô nhớ 10.1. Khai báo (Declaration & Khởi tạo-Initial) Định nghĩa - Là cấp phát và định nghĩa n ô nhớ để lưu trữ các giá trị nào đó thuộc 1 kiểu dữ liệu nhất định. n Ô nhớ hay n phần tử 0 1 n-2 n-1 Mô hình Tên mảng ??? ??? ??? ??? Kiểu dữ liệu Kiểu dữ liệu Tên mảng Phần xác định Cú pháp [ Số phần tử ]; Kiểu_dữ_liệu Tên_mảng[Số_phần_tử]; int a[10]; -> Khai báo mảng a thuộc kiểu số nguyên và khởi tạo cho mảng 10 phần tử. 10 phần tử 0 1 8 9 Ví dụ a ??? ??? ??? ??? Kiểu số nguyên 10.2. Khai báo (Declaration & Khởi gán-Assignment) Định nghĩa - Là cấp phát và định nghĩa 1 dãy ô nhớ để lưu trữ các giá trị xác định thuộc 1 kiểu dữ liệu nhất định. Biên soạn: Nguyễn Viết Nam 40
  41. Tài liệu C,C++ 0 1 n-2 n-1 Tên mảng Mô hình Giá trị 1 Giá trị 2 Giá trị n-1 Giá trị n Kiểu dữ liệu Kiểu dữ liệu Tên mảng [ ] Cú pháp = { Giá_trị_1 , , Giá trị n }; Kiểu_dữ_liệu Tên_mảng[ ] = {Giá_trị_1, ,Giá_trị_n}; int a[]={2,0,0,7}; -> Khai báo mảng a thuộc kiểu số nguyên và khởi gán các giá trị 2, 0, 0, 7 cho mảng. 0 1 2 3 Ví dụ a 2 0 0 7 Kiểu số nguyên 10.3. Gán giá trị (Assignment) Tên mảng Phần xác định [ Chỉ số ] Cú pháp Phần gán giá trị = Giá trị ; Tên_mảng[Chỉ_số]=Giá_trị; a[0]=10; -> Gán giá trị 10 cho phần tử thứ 0 của mảng a. 10 phần tử 10 0 1 8 9 a ??? ??? ??? Ví dụ Kiểu số nguyên 10 phần tử 0 1 8 9 a 10 ??? ??? ??? Kiểu số nguyên 10.4. Lấy giá trị (Access) 0 1 n-2 n-1 Mô hình a 10 Biên soạn: Nguyễn Viết Nam 41
  42. Tài liệu C,C++ Tên mảng [ Cú pháp Chỉ số ] Tên_mảng[Chỉ_số]; Ví dụ cout Xuất giá trị của phần tử thứ 0 trong mảng a ra màn hình. Biên soạn: Nguyễn Viết Nam 42
  43. Tài liệu C,C++ - Viết chương trình khai báo mảng và xuất mảng - Viết chương trình khai báo mảng và xuất mảng bằng bằng tay. vòng lặp. //Day la chuong trinh ve khai bao mang va //Day la chuong trinh ve khai bao mang va xuat xuat mang bang tay mang bang vong lap #include #include #include #include int main() int main() { { //Khai bao va khoi tao //Khai bao va khoi tao int a[4]; int a[4]; //Khai bao va khoi gan //Khai bao va khoi gan int b[]={2,0,0,7}; int b[]={2,0,0,7}; //Khai bao bien chay Ví clrscr(); Ví int i; dụ 1 //Xuat mang a dụ 2 cout #include int main() { //Khai bao va khoi tao int a[4]; //Khai bao va khoi gan int b[]={2,0,0,7}; clrscr(); //Xuat mang a Ví dụ 1 cout #include int main() { //Khai bao va khoi tao int a[4]; //Khai bao va khoi gan Biên soạn: Nguyễn Viết Nam 43
  44. Tài liệu C,C++ int b[]={2,0,0,7}; //Khai bao bien chay int i; clrscr(); //Xuat mang a for (i=0;i #include int main() { //Khai bao va khoi tao int a[4]; //Khai bao bien chay int i; clrscr(); //Nhap Ví dụ 3 for (i=0;i >a[i]; } //Xuat for (i=0;i #include int main() { //Khai bao va khoi tao int a[100]; //Khai bao so phan tu cua mang int n; //Khai bao bien chay int i; clrscr(); //So phan tu cout >n; //Nhap for (i=0;i<n;i++) { Biên soạn: Nguyễn Viết Nam 44
  45. Tài liệu C,C++ cout >a[i]; } //Xuat for (i=0;i<n;i++) { cout<<"\na["<<i<<"]"<<a[i]; } getch(); return 0; } Ví dụ 5 - Viết chương trình nhập 1 mảng gồm n số. Sau đó xuất ra tổng, tích, số lượng và trung bình các số đó. Biên soạn: Nguyễn Viết Nam 45
  46. Tài liệu C,C++ 11. Chuỗi (String) Định - Là 1 dãy các ô nhớ có chung 1 tên được đánh dấu bằng chỉ số (từ 0 đến n-1) trong bộ nhớ và có kiểu nghĩa kí tự. Kí tự Chỉ số 0 1 n-2 n-1 Ví dụ Tên chuỗi s a b z \0 Kiểu kí tự Ô nhớ Biên soạn: Nguyễn Viết Nam 46
  47. Tài liệu C,C++ 11.1. Khai báo (Declaration & Khởi tạo-Initial) Định nghĩa - Là cấp phát và định nghĩa n ô nhớ để lưu trữ các giá trị kí tự nào đó thuộc kiểu kí tự. n Ô nhớ hay n kí tự 0 1 n-2 n-1 Mô hình Tên chuỗi ??? ??? ??? ??? Kiểu kí tự char Tên chuỗi Phần xác định Cú pháp [ Số kí tự ] ; char Tên_chuỗi[Số_kí_tự]; char s[10]; -> Khai báo chuỗi s thuộc kiểu kí tự và khởi tạo cho chuỗi 10 kí tự. 10 kí tự 0 1 8 9 Ví dụ s ??? ??? ??? ??? Kiểu kí tự 11.2. Khai báo (Declaration & Khởi gán-Assignment) Định - Là cấp phát và định nghĩa 1 dãy ô nhớ để lưu trữ các giá trị kí tự xác định thuộc 1 kiểu kí tự. nghĩa 0 1 n-2 n-1 Mô Tên chuỗi Kí tự 1 Kí tự 2 Kí tự n \0 hình Kiểu kí tự Cú pháp char Tên chuỗi Phần xác định [ ] Phần gán giá trị = { ‘Kí tự 1’ , , ‘Kí tự n’,’\0’ } ; char Tên_chuỗi[ ]={‘Kí_tự_1’, ,’Kí_tự_n’,’\0’}; Hay Biên soạn: Nguyễn Viết Nam 47
  48. Tài liệu C,C++ char Tên chuỗi Phần xác định [ ] Phần gán kí tự = “Chuỗi” ; char Tên_chuỗi[ ]=”Giá_trị_Chuỗi”; char s[]={‘A’,’B’,’C’,’\0’}; -> Khai báo chuỗi s thuộc kiểu kí tự và khởi gán các kí tự A, B, C cho chuỗi s. char s[]=”ABC”; -> -> Khai báo chuỗi s thuộc kiểu kí tự và khởi gán chuỗi ABC cho chuỗi s. 0 1 2 3 Ví dụ s A B C \0 Kiểu kí tự 11.3. Gán kí tự (Character Assignment) Tên chuỗi Phần xác định [ Chỉ số ] Cú pháp Phần gán kí tự = ‘Kí tự’ ; Tên_chuỗi[Chỉ_số]=’Kí_tự’; s[0]=’A’; -> Gán kí tự A cho phần tử thứ 0 của chuỗi s. A 0 1 8 9 s Ví dụ ??? ??? ??? 0 1 8 9 s A ??? ??? ??? 11.4. Gán chuỗi (String Assignment) Chuỗi đích strcpy Chuỗi đích=Chuỗi nguồn Cú pháp Chuỗi nguồn strcpy(Biến_chuỗi, Giá_trị_chuỗi); Ví dụ strcpy(s,”ABC”); -> Gán chuỗi ABC cho chuỗi s. Biên soạn: Nguyễn Viết Nam 48
  49. Tài liệu C,C++ C B A 0 1 2 8 9 s ??? ??? 0 1 2 8 9 s A B C ??? ??? 11.5. Lấy kí tự (Access) 0 1 n-2 n-1 Mô hình s A \0 Tên Chuỗi [ Chỉ số Cú pháp ] ; Tên_chuỗi[Chỉ_số]; Ví dụ cout Xuất kí tự của phần tử thứ 0 trong chuỗi s ra màn hình. 11.6. Xuất chuỗi (String Output) cout Xuất chuỗi s ra màn hình. Biên soạn: Nguyễn Viết Nam 49
  50. Tài liệu C,C++ 11.7. Nhập chuỗi (có khoảng trắng) (String Input) cin.getline ( Tên Chuỗi , Cú pháp Số kí tự ) ; cin.getline(Tên_Chuỗi,Số_kí_tự); cin.getline(s); -> Nhập chuỗi s có khoẳng trắng. C B A 0 1 2 8 9 Ví dụ s ??? ??? 0 1 2 8 9 s A B C ??? ??? 11.8. Hàm Kí tự (Character Function) Tên Kết quả Kí hiệu Mô hình Cú pháp Ghi chú Mã ASCII của Kí tự toupper In hoa Kí tự hoa toupper Kí tự HOA toupper(Kí_tự) #include Mã ASCII của Kí tự tolower In thường Kí tự thường tolower Kí tự THƯỜNG tolower(Kí_tự) #include 11.9. Hàm Chuỗi (String Function) Kết Kí Tên Mô hình Cú pháp Ghi chú quả hiệu Chiều Số dài lượng strlen Chuỗi strlen Số lượng kí tự strlen(Chuỗi) #include chuỗi kí tự Chuỗi con 1 Nối Chuỗi Chuỗi con 1 (mới)= strcat strcat strcat(Chuỗi_con_1,Chuỗi_con_2) #include chuỗi cha Chuỗi con 2 Chuỗi con 1(cũ)+Chuỗi con 2 Biên soạn: Nguyễn Viết Nam 50
  51. Tài liệu C,C++ - Viết chương trình khai báo, khởi tạo, khởi gán, gán - Viết chương trình nhập số kí tự của chuỗi là n, sau kí tự, gán chuỗi và xuất chuỗi. đó nhập từng kí tự và xuất từng kí tự. //Day la chuong trinh ve khai bao, khoi tao, khoi //Day la chuong trinh nhap so ki tu cua chuoi la n gan //Sau do nhap tung ki tu va xuat tung ki tu //gan gia tri, gan chuoi va xuat chuoi #include #include #include #include int main() #include { int main() //Khai bao va khoi tao { char s[100]; //Khai bao va khoi tao //Khai bao so ki tu cua chuoi char s1[4]; int n; //Khai bao va khoi gan //Khai bao bien chay char s2[]={‘A’,’B’,’C’,’\0’}; int i; char s3[]=”DEF”; //Khai bao bien chay clrscr(); int i; //So ki tu cout >n; //Xuat chuoi s1 luc vua khai bao //Nhap cout >s[i]; //Gan ki tu cho chuoi s1 } s1[0]=’a’; s[n]='\0'; s1[1]=’b’; //Xuat s1[2]=’c’; for (i=0;i #include #include int main() Biên soạn: Nguyễn Viết Nam 51
  52. Tài liệu C,C++ { //Khai bao va khoi tao char s[50]; clrscr(); //Nhap chuoi s cout<<"Nhap s="; cin.getline(s,50); //Xuat chuoi s1 cout<<"s="<<s; //Xuat so luong ki tu cout<<"\nSo luong ki tu="<<strlen(s); getch(); return 0; } Ví dụ 4 - Viết chương trình nhập 1 chuỗi in thường rồi xuất ra chuỗi đó dưới dạng in hoa Ví dụ 5 - Viết chương trình nhập 1 chuỗi in hoa rồi xuất ra chuỗi đó dưới dạng in thường Biên soạn: Nguyễn Viết Nam 52
  53. Tài liệu C,C++ Biên soạn: Nguyễn Viết Nam 53
  54. Tài liệu C,C++ 12. Hàm (Function) - Là lệnh giúp thực hiện 1 công việc nào đó, giúp ta dễ dàng quản lý và tái sử dụng mã Định nghĩa nguồn. - Khi 1 hàm được gọi: B1: Cấp phát bộ nhớ cho các đối số và biến trong hàm. Nguyên tắc hoạt B2: Gán giá trị của các đối số thực cho các đối số hình thức. động B3: Thực hiện các lệnh bên trong hàm. B4: Hủy các đối số và biến trong hàm. B5: Thoát ra khỏi hàm rồi trở về nơi gọi hàm để thực hiện các lệnh ngay sau lệnh gọi hàm. 12.1. Khai báo (Declaration) Vị trí - Viết trước hàm main. (Kiểu dữ liệu của đối số 1) Mô hình Tên hàm (Kiểu dữ liệu trả về) (Kiểu dữ liệu của đối số n) Kiểu dữ liệu trả về Tên Hàm Đầu hàm ( Danh sách kiểu dữ liệu của đối số ) ; Kiểu_dữ_liệu_trả _về Tên_Hàm(Danh_sách_kiểu_dữ_liệu_của_đối_số); - Kiểu dữ liệu trả về viết là: Cú + Kiểu_dữ_liệu khi có giá trị trả về. pháp + void khi không có giá trị trả về. Danh sách kiểu dữ liệu của đối số Kiểu dữ liệu của đối số 1 , , Kiểu dữ liệu của đối số n Kiểu_dữ_liệu_của_đối_số_1, , Kiểu_dữ_liệu_của_đối_số_n - Kiểu dữ liệu của đối số viết là : + Kiểu_dữ_liệu_của_đối_số khi truyền tham trị. + Kiểu_dữ_liệu_của_đối_số & khi truyền tham biến. int SoLonNhat(int,int); -> Khai báo hàm trả về số nguyên, tên hàm là Số lớn nhất và hàm nhận vào 2 số Ví dụ nguyên. 12.2. Cài đặt (Define) Vị trí - Viết sau hàm main. Đối số hình thức 1 (Kiểu dữ liệu của đối số n) Giá trị trả về Mô hình Tên hàm (Kiểu dữ liệu trả về) Đối số hình thức n (Kiểu dữ liệu của đối số n) Thân hàm Biên soạn: Nguyễn Viết Nam 54
  55. Tài liệu C,C++ Kiểu dữ liệu trả về Tên Hàm Đầu hàm ( Danh sách các đối số hình thức ) Thân hàm { Các lệnh; return Giá trị trả về; } Kiểu_dữ_liệu_trả _về Tên_Hàm(Danh_sách_các_đối_số_hình_thức) { Các_lệnh; return Giá_trị_trả_về; Cú pháp } - Kiểu dữ liệu trả về viết là: + Kiểu_dữ_liệu khi có giá trị trả về. + void khi không có giá trị trả về. Danh sách đối số hình thức (ĐSHT) Kiểu dữ liệu của ĐSHT 1 Tên ĐSHT 1 , , Kiểu dữ liệu của ĐSHT n Tên ĐSHT n Kiểu_dữ_liệu_của_ĐSHT_1 Tên_ĐSHT_1, , Kiểu_dữ_liệu_của_ĐSHT_n Tên_ĐSHT_n - Kiểu dữ liệu của đối số viết là : + Kiểu_dữ_liệu_của_đối_số Tên_ĐSHT khi truyền tham trị. + Kiểu_dữ_liệu_của_đối_số &Tên_ĐSHT khi truyền tham biến. int SoLonNhat(int x,int y) { int max; if (x>y) max=x; else max=y; return tam; Ví dụ } -> Đầu hàm: - Khai báo hàm trả về số nguyên, tên hàm là Số lớn nhất và hàm nhận vào 2 số nguyên x và y. -> Thân hàm: - Khai báo biến số nguyên max - Nếu số x lớn hớn số y thì số max bằng số x. Ngược lại thì số max bằng số y. - Trả về số max. Biên soạn: Nguyễn Viết Nam 55
  56. Tài liệu C,C++ 12.3. Gọi (Call) Đối số thực 1 Mô hình Tên hàm Giá trị trả về Đối số thực n Tên hàm ( Danh sách đối số thực ) Tên_Hàm(Danh_sách_đối_số_thực) Danh sách đối số thực (ĐST) Cú pháp Tên ĐST 1 , , Tên ĐST n Tên_ĐSHT_1, , Tên_ĐST_n Ví dụ cout Xuất số lớn nhất trong 2 số a và b. Biên soạn: Nguyễn Viết Nam 56
  57. Tài liệu C,C++ - Viết hàm trả về số lớn nhất trong 2 số nhập vào từ - Viết hàm trả về số lớn nhất trong 2 số nhập vào bàn phím. từ bàn phím.   #include #include #include #include int SoLonNhat(int,int); void DoiCho(int &,int &); int main() int main() { { int a; int a; int b; int b; clrscr(); clrscr(); cout >a; cin>>a; cout >b; cin>>b; cout y) { max =x; int tam; else tam=x; max =y; x=y; return tam; y=tam; } }   Ví Nhap so a=4 Ví Nhap so a=10 dụ 1 Nhap so b=7 dụ 3 Nhap so b=5 So lon nhat=7 a=5 Ban đầu b=10 main a 7 b 4 Ban đầu main a 10 b 5 Cấp phát x ? y ? So lon nhat Cấp phát x ? y ? max ? Doi cho tam ? Gán giá trị main a 7 b 4 Gán giá trị main a 10 b 5 x y So lon nhat x y max ? Doi cho tam ? Số lớn nhất x y x 7 y 4 Đổi chỗ 10 5 So lon nhat Doi cho a b max tam x y Xuất 10 5 x 7 y 4 Doi cho a b So lon nhat tam 10 max 7 y x 5 5 Doi cho a b tam 10 x y 5 10 Hủy x 7 y 4 Doi cho a b So lon nhat tam 10 max 7 Xuất Hủy x 5 y 10 Doi cho tam 10 Ví - Viết hàm trả về số nhỏ nhất trong 2 số nhập vào từ Biên soạn: Nguyễn Viết Nam 57
  58. Tài liệu C,C++ dụ 2 bàn phím. Biên soạn: Nguyễn Viết Nam 58
  59. Tài liệu C,C++ 1. Lập trình hướng thủ tục (POP) 1 2. Giới thiệu (Introduction) 1 3. Cài đặt (Setup) 1 3.1. Borland C++ 1 4. Cửa sổ làm việc (Window) 1 4.1. Khởi động (Open),Thoát (Exit) 1 5. File mã nguồn - CPP 1 * Lưu file mã nguồn: 1 Click chọn menu File > chọn Save 1 1 C1: Ấn phím F10 > chọn File > chọn Save 1 C2: Ấn phím F2. 1 Click chọn menu File > chọn Save 1 5.1. Chọn khối mã nguồn (Select) 2 5.2. Hiệu chỉnh (Edit) 3 6. Cấu trúc chương trình (Program Structure) 4 6.1. Phần ghi chú (Comment) 4 6.2. Phần Khai báo các Tập tin Thư viện (Library) 4 6.3. Hàm main 6 7. Giao diện (Interface) 7 7.1. Lệnh xuất ra màn hình (Output) 7 7.2. Lệnh nhập vào từ bàn phím (Input) 9 8. Dữ liệu (Data) 10 8.1. Kiểu dữ liệu (Data Type) 10 8.1.1. Kiểu Số nguyên (Integer Type) 10 8.1.2. Kiểu Số thực (Real Type) 10 8.1.3. Kiểu Kí tự (Character Type) 10 8.1.4. Kiểu Chuỗi (String Type) 11 8.1.5. Kiểu Luận lý (Logic Type) 11 8.2. Biến (Variable) 12 8.2.1. Tên biến (Identifier) 12 8.2.2. Biến Số nguyên (Integer Variable) 14 8.2.3. Biến Số thực (Real Variable) 14 8.2.4. Biến Kí tự (Character Variable) 14 8.2.5. Biến Chuỗi (String Variable) 14 8.2.6. Biến Luận lý (Logic Variable) 14 8.3. Hằng (Constant) 15 8.3.1. Khai báo (Declaration) 15 9. Giải thuật (Algorithm) 16 9.1. Biểu thức (Expression) 16 9.1.1. Phép toán (Operation) 16 9.1.2. Hàm (Function) 16 9.1.3. Phép toán số (Number Operation) 16 9.1.4. Hàm số (Number Function) 17 9.1.5. Hàm Kí tự (Character Function) 19 9.1.6. Hàm Chuỗi (String Function) 19 9.2. Cấu trúc điều khiển (Flow Control) 19 9.2.1. Điều kiện (Criteria) 20 9.2.2. Lưu đồ (Flow Chart) 21 9.2.3. Cấu trúc chọn (rẽ nhánh) (Choice) 21 9.2.4. Cấu trúc lặp (chu trình) (Cycle) 31 10. Mảng (Array) 40 Biên soạn: Nguyễn Viết Nam 59
  60. Tài liệu C,C++ 10.1. Khai báo (Declaration & Khởi tạo-Initial) 40 10.2. Khai báo (Declaration & Khởi gán-Assignment) 40 10.3. Gán giá trị (Assignment) 41 10.4. Lấy giá trị (Access) 41 11. Chuỗi (String) 46 11.1. Khai báo (Declaration & Khởi tạo-Initial) 47 11.2. Khai báo (Declaration & Khởi gán-Assignment) 47 11.3. Gán kí tự (Character Assignment) 48 11.4. Gán chuỗi (String Assignment) 48 11.5. Lấy kí tự (Access) 49 11.6. Xuất chuỗi (String Output) 49 11.7. Nhập chuỗi (có khoảng trắng) (String Input) 50 11.8. Hàm Kí tự (Character Function) 50 11.9. Hàm Chuỗi (String Function) 50 12. Hàm (Function) 54 12.1. Khai báo (Declaration) 54 12.2. Cài đặt (Define) 54 12.3. Gọi (Call) 56 Biên soạn: Nguyễn Viết Nam 60