Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 23 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
23
Dung lượng
1,83 MB
Nội dung
22/04/2011 1 LẬPTRÌNHC (CƠ BẢN) 1 YÊU CẦU Môi trường cài đặt: Microsoft Visual C++ 6.0 hoặc Microsoft Visual .Net 2005 (Viết ứng dụng dạng Console) Làm bài tập (tại lớp và ở nhà) đầy đủ Hình thức thi: Viết (60 phút), được tham khảo tài liệu 2 NỘI DUNG Chương 1: Khái niệm cơbản về lậptrình và môi trường cài đặt Chương 2: Giới thiệu ngôn ngữ C Chương 3: Cấu trúc điều khiển Chương 4: Hàm con Chương 5: Kiểu dữ liệu mảng 3 Chương 1 Khái niệm cơbản về lậptrình và giới thiệu môi trường cài đặt 4 LẬPTRÌNH ? Giải thuật Ngôn ngữ Lậptrình 5 Các đặc điểm cần có của một chương trình Đúng đắn, chính xác (correctness). Chắc chắn (robustness). Thân thiện (user friendliness). Khả năng thích nghi (adapability): Chương trìnhcó khả năng để phát triển tiến hóa theo yêu cầu. Tính tái sử dụng (reuseability): Chương trìnhcó thể dùng để làm một phần trong một chương trình lớn khác. Tính hiệu quả (efficiency). Tính khả chuyển (porability): Khả năng chuyển đổi giữa các môi trường. Tính an toàn (security). Tính dừng (halt). 6 22/04/2011 2 CÁC NGÔN NGỮ LẬPTRÌNH Fortran Pascal Java C C++ C# VB.Net …. 7 CÁC MÔI TRƯỜNG HỖ TRỢ LẬPTRÌNH Borland C++ Microsoft Visual Basic Microsoft Visual C++ JBuider Visual .Net … 8 CÁCH VIẾT MỘT CHƯƠNG TRÌNH Đọc kỹ yêu cầu bài toán Xác định dữ liệu đầu vào: giá trị, kiểu Xác định kết quả: giá trị, kiểu Xác định giải thuật / công thức để xử lý dữ liệu đầu vào thành kết quả Kiểm tra lỗi cú pháp Chạy và nhập dữ liệu thử cho nhiều trường hợp khác nhau để đánh giá chương trình 9 Hướng dẫn cài đặt và sử dụng Microsoft Visual C++ 6.0 10 BỘ CÀI ĐẶT GỒM Đĩa Ms Visual Studio 6.0 MSDN cho Visual Studio 6.0 SP6.0 cho Visual Studio 6.0 11 TẠO MỚI PROJECT Bước 1: Khởi động VC++6.0 Bước 2: Chọn menu File/New… 1 2 3 12 22/04/2011 3 Tab Projects chọn Win32 Console Application Project name: Nhập tên của dự án (Ví dụ đặt tên là BaiTap1) Location:Vị trí lưu dự án VC sẽ tạo một thư mục với tên là tên Project tại vị trí đã chỉ định. Bên trong thư mục này sẽ chứa toàn bộ các file liên quan đến Project. Nếu muốn sao chép Project thì chỉ việc chép thư mục này. 1 2 3 13 Bước 3: Chọn OK Bước 4: Chọn An empty Project, sau đó chọn Finish 14 Bước 5: Chọn OK, kết thúc việc tạo Project 15 Giao diện sau khi tạo Project 1. Chọn Tab FileView 2. Chọn dấu + để xem bên trong 16 Giao diện gồm 2 phần chính Cửa sổ bên trái: cửa sổ Workspace (nếu không thấy cửa sổ này thì vào menu View/ Workspace hoặc nhấn phím Alt + số 0) Cửa sổ bên phải: cửa sổ viết code 17 MÔ TẢ CỬA SỔ WORKSPACE Sau khi chọn dấu + ở tab FileView, sẽ xuất hiện 3 thư mục: Source Files (*.cpp): Chứa các file cài đặt các hàm Header Files (*.h): Chứa các file khai báo (hàm, biến toàn cục, kiểu cấu trúc, …) Resource Files: Chứa các tài nguyên (icon, bitmap, dialog, …). Đối với lậptrình ứng dụng Console thì không dùng đến. 18 22/04/2011 4 Để dễ dàng viết và quản lý code theo phương pháp lậptrình thủ tục, mỗi Project mới, ta qui ước như sau: Trong Header File, tạo 1 file tên khaibao.h: Chứa các khai báo hàm, hằng số, … Trong Source File, tạo 2 file cài đặt hàm: File main.cpp: Cài đặt hàm main() File caidat.cpp: Cài đặt các hàm con đã khai báo 19 QUI ƯỚC CÁCH TẠO FILE KHAI BÁO (KHAIBAO.H) Click phải vào thư mục Header File, chọn Add Files to Folder … 20 Nhập khaibao.h vào ô File name Chọn OK, sau đó chọn Yes (Lưu ý: Không thay đổi đường dẫn thư mục – chỉ nhập tên file) 21 CÁCH TẠO FILE CÀI ĐẶT (MAIN.CPP, CAIDAT.CPP) Click phải vào thư mục Source File, chọn Add Files to Folder … Nhập main.cpp vào ô File name, chọn OK, sau đó chọn Yes Tương tự, tiếp tục tạo file caidat.cpp (Mẹo: Có thể tạo 2 file cùng một lúc bằng cách: Nhập “main.cpp” “caidat.cpp” vào ô File name: Tên file phải nằm trong cặp dấu nháy kép (“), mỗi tên file cách nhau bởi khoảng trắng) 22 VIẾT LỆNH CHO FILE KHAIBAO.H Double click vào file khaibao.h trong thư mục Header File Chọn Yes 23 Cửa sổ soạn thảo code cho file khaibao.h chuyển sang chế độ cho phép soạn thảo Nhận biết file đang mở Cửa sổ soạn thảo file khaibao.h 24 22/04/2011 5 CẤU TRÚC FILE KHAIBAO.H #pragma once Các khai báo thư viện, hàm, hằng số, … 25 CẤU TRÚC FILE MAIN.CPP Cách chọn file main.cpp tương tự như chọn file khaibao.h #include “khaibao.h” void main() { Các lệnh; } 26 CẤU TRÚC FILE CAIDAT.CPP #include “khaibao.h” void HamA() { các lệnh; } void HamB() { Các lệnh; } 27 DỊCH, SỬA LỖI VÀ CHẠY CHƯƠNG TRÌNH Biên dịch và kiểm tra lỗi: Nhấn F7 Nếu có thông báo lỗi (error) thì nhấn F4 để tìm, quan sát và sửa lỗi (cửa sổ lỗi xuất hiện bên dưới màn hình soạn thảo code) Chạy chương trình: Ctrl + F5 28 VÍ DỤ Viết chương trình hiển thị lên màn hình dòng chữ: “Xin chào mọi người” Do đây là ví dụ rất đơn giản nên chỉ có phần khai báo (file khaibao.h) và hàm main() (file main.cpp) nên không có phần cài đặt hàm con (file caidat.cpp) 29 FILE KHAIBAO.H #pragma once #include <iostream.h> 30 22/04/2011 6 FILE MAIN.CPP #include "khaibao.h" void main() { cout<<“Xin chao moi nguoi"; } 31 XEM KẾT QUẢ CHẠY CHƯƠNG TRÌNH NHẤN CTRL + F5 32 MỞ PROJECT CÓ SẴN Cách 1: Mở từ menu VC Khởi động VC Vào menu File/ Open Workspace Chọn thư mục chứa Project, chọn tên Project, sau đó chọn Open 33 Cách 2: Mở trực tiếp từ Explore Mở thư mục chứa Project Double click vào 1 trong 2 file có đánh dấu mũi tên (Lưu ý: Khi chép Project có thể xóa thư mục Debug, vì thư mục này sẽ được tạo khi chạy chương trình) 34 CHƯƠNG 2 GIỚI THIỆU NGÔN NGỮ C 35 ĐẶC ĐIỂM NGÔN NGỮ C Bộ lệnh phù hợp với phương pháp lậptrình cấu trúc. Kiểu dữ liệu phong phú, cho phép định nghĩa kiểu dữ liệu mới. Gồm một hoặc nhiều hàm rời nhau. Linh động về cú pháp. 36 22/04/2011 7 CÁC KHÁI NIỆM Lệnh Lệnh thực hiện một chức năng nào đó (khai báo, gán, xuất, nhập, …) và được kết thúc bằng dấu chấm phẩy (;) Khối lệnh Khối lệnh gồm nhiều lệnh và được đặt trong cặp dấu ngoặc { } 37 QUI ƯỚC VIẾT LỆNH TRONG C Mỗi lệnh nằm trên một dòng. Cuối dòng lệnh PHẢI có dấu chấm phẩy (;). Lệnh quá dài có thể được viết thành nhiều dòng sao cho mỗi lệnh phải được quan sát trọn vẹn trong pham vi cửa sổ lệnh. 38 QUI ƯỚC VIẾT LỆNH TRONG C Không nên đặt nhiều lệnh trên cùng một dòng, ngay cả các khai báo biến, nếu các biến có khác kiểu cũng nên đặt trên các dòng khác nhau. Dòng ghi chú (comment): Từ vị trí cụ thể đến cuối dòng: dùng // ngay tại vị trí đó. Tạo nhiều dòng ghi chú: dùng cặp ký tự /* ngay trước dòng đầu tiên, và cặp ký tự */ ngay sau dòng cuối cùng. 39 BIẾN Một biến đại diện cho một vùng nhớ hay tập các vùng nhớ trên bộ nhớ chính của máy tính. Tên biến được dùng để tham khảo đến những vùng nhớ này. Biến để lưu trữ các giá trị do người dùng nhập vào hoặc các giá trị tạm thời trong quá trình tính toán. Mỗi biến sẽ có tên và kiểu dữ liệu tương ứng. Kiểu dữ liệu của biến xác định những giá trị kiểu nào có thể được lưu trong biến (ví dụ số hay chữ…). PHẢI khai báo BiẾN trước khi sử dụng 40 CÁC KIỂU DỮ LIỆU Gồm 2 loại: Kiểu cơ sở Tích hợp sẵn trong ngôn ngữ Số nguyên Số thực Luận lý Mảng (xét sau) Chuỗi (xét sau) Kiểu tự định nghĩa (xét sau) Dùng những kiểu cơ sở để xây dựng thành những kiểu dữ liệu mới cho phù hợp với bài toán. 41 CÁC KIỂU DỮ LIỆU CƠ SỞ STT KIỂU GHI CHÚ KÍCH THƯỚC KIỂU LIÊN TỤC (SỐ THỰC) 1 float 4 bytes 2 double 8 bytes 3 long double 8 bytes KIỂU RỜI RẠC (SỐ NGUYÊN) 1 char Ký tự 1 byte Số nguyên 1 byte 2 unsigned char Số nguyên dương 1 byte 3 short Số nguyên 2 bytes 4 unsigned short Số nguyên dương 2 bytes 5 int Số nguyên 4 bytes 6 unsigned int Số nguyên dương 4 bytes 7 long Số nguyên 4 bytes 8 unsigned long Số nguyên dương 4 bytes KIỂU LUẬN LÝ 1 bool Gồm 2 giá trị: true hoặc false 42 22/04/2011 8 KHAI BÁO BIẾN Cú pháp <Kiểu dữ liệu> tênbiến; Ví dụ: int a; //Khai báo biến để lưu số nguyên tên a float c; //Khai báo biến để lưu số thực tên c Khai báo nhiều biến cùng kiểu <Kiểu dữ liệu> tênbiến1, tênbiến2, tênbiến3; Ví dụ: int a, x, y; 43 KHAI BÁO BIẾN Qui tắc đặt tên biến Bắt đầu bằng một ký tự. Các ký tự trong tên biến chỉ có thể là các ký tự chữ, số hoặc dấu gạch dưới (_) Không có khoảng trắng trong tên biến. Không dài quá 256 ký tự. Không được trùng với các từ khoá của C struct, long, int, while, for, if, else, continue, typedef, do, goto, case, define, … Không được trùng với phạm vi khai báo. Tên gợi nhớ. Phân biệt chữ hoa và thường 44 KHAI BÁO VÀ KHỞI GÁN GIÁ TRỊ BAN ĐẦU CHO BIẾN <Kiểu dữ liệu> tênbiến = giá trị; Ví dụ: int a = 5; float b = 5.4, c = 9.2; char ch = ‘n’; 45 46 STT PHÉP TOÁN Ý NGHĨA GHI CHÚ PHÉP TOÁN SỐ HỌC 1 + Cộng 2 - Trừ 3 * Nhân 4 / Chia lấy phần nguyên 5 % Chia lấy phần dư PHÉP TOÁN QUAN HỆ 1 > Lớn hơn 2 < Nhỏ hơn 3 >= Lớn hơn hoặc bằng 4 <= Nhỏ hơn hoặc bằng 5 = = Bằng nhau 6 != Khác nhau KÝ HIỆU CÁC PHÉP TOÁN 47 PHÉP TOÁN LOGIC 1 ! NOT 2 && AND 3 || OR TOÁN TỬ TĂNG GIẢM 1 ++ Tăng 1 Nếu toán tử tăng giảm đặt trước thì tăng giảm trước rồi tính biểu thức hoặc ngược lại. 2 Giảm 1 PHÉP TOÁN THAO TÁC TRÊN BIT 1 & AND 2 | OR 3 ^ XOR 4 << Dịch trái 5 >> Dịch phải 6 ~ Lấy phần bù theo bit Ví dụ: int x = 5, y = 11; int z = ++x + y++; Kết quả: x=6; y=12; z=17 Toán tử điều kiện (biểu thức điều kiện)?<biểu thức cho trường hợp đúng>:<biểu thức cho trường hợp sai> Ví dụ: int n; (n%2==0)? n ++ : n ; nếu n = 10 thì giá trị n = 11 nếu n = 21 thì giá trị n = 20 48 22/04/2011 9 THỨ TỰ ƯU TIÊN PHÉP TOÁN Toán tử Độ ưu tiên Trình tự kết hợp () [] -> 1 Từ trái qua phải ! ~ ++ - + * & sizeof 2 Từ phải qua trái * / % 3 Từ trái qua phải + - 4 Từ trái qua phải << >> 5 Từ trái qua phải < <= >= > 6 Từ trái qua phải == != 7 Từ trái qua phải & 8 Từ trái qua phải | 9 Từ trái qua phải ^ 10 Từ trái qua phải && 11 Từ trái qua phải || 12 Từ trái qua phải ? : 13 Từ phải qua trái = += -= *= /= %= 14 Từ phải qua trái 49 CÁC LỖI THƯỜNG GẶP KHI VIẾT CHƯƠNG TRÌNH Quên khai báo các biến sử dụng trong chương trình. Lưu một giá trị vào một biến nhưng không cùng kiểu dữ liệu với biến. Sử dụng biến trong một biểu thức khi nó chưa có giá trị. Lỗi này thì không được phát hiện bởi trình biên dịch, khi đó giá trị của biến là một giá trị bất kỳ và kết quả của biểu thức là vô nghĩa. Sử dụng giá trị của phép chia không chính xác. Lỗi này thường xuất hiện trong các biểu thức có nhiều toán hạng và lỗi này rất khó phát hiện. Ví dụ: 3.2 + 2/3 + 1.5 thì sẽ cho kết quả sẽ bằng 4.7 thay vì kết quả đúng phải bằng 5.36666666666667 Sử dụng một biểu thức mà trong đó chứa nhiều loại dữ liệu nhưng lại không biết chắc chắn kiểu dữ liệu của kết quả. 50 HÀM NHẬP XUẤT TRONG CONSOLE Thư viện hàm: iostream.h Hàm nhập giá trị từ bàn phím: cin>>tênbiến; Ví dụ: int a; cin>>a; //Người dùng nhập giá trị từ phím sẽ lưu vào biến a Hàm xuất giá trị ra màn hình: cout<<tênbiến hoặc chuỗi ký tự; Ví dụ: int a = 5; cout<<“Gia tri cua a = “<<a; Các biến và chuỗi cách nhau bởi dấu << (chuỗi nằm trong cặp dấu nháy kép “” ) Ví dụ: int b = 7, c = 9; cout<< “Gia tri của b =“ << b << “ gia tri cua c = “ << c; 51 XUẤT CÓ ĐỊNH DẠNG Thư viện iomanip.h cout<<setw(n)<<tênbiến; Chừa 1 khoảng n ký tự để xuất giá trị Ví dụ: int a=7, b=9; cout<<a<<setw(5)<<b;//Chừa 5 vị trí để xuất giá trị b Kết quả: 7 9 52 XUẤT CÓ ĐỊNH DẠNG cout<<setprecision(n); Xuất số thập phân gồm n-1 chữ số lẻ (phần thập phân) Ví dụ: float a=7.56745F, b=5.339F; cout<<a<<endl; cout<<setprecision(3)<<a<<endl; cout<<setprecision(2)<<b<<endl; cout<<setprecision(5)<<b; Kết quả: 7.56745 7.57 5.3 5.339 53 XUẤT KÝ TỰ ĐẶC BIỆT Ký tự Ý nghĩa Ví dụ \’ Xuất dấu nháy đơn cout<<“ \’ ”; Kết quả: ‘ \” Xuất dấu nháy đôi cout<<“ \” ”; Kết quả: “ \\ Xuất dấu chéo ngược “\” cout<<“ \\ ”; Kết quả: \ \0 Ký tự Null Dùng để gán ký tự kết thúc của chuỗi \a Alert : Tiếng bip \t Tab vào một đoạn ký tự trắng cout<<"xyz\tzyx”; Kết quả: xyz zyx \b Xuất lùi về sau cout<<"xyz\t\bzyx”; Kết quả: xyzzyx \n hoặc endl Xuống dòng cout<<"xyz\nzyx”; Kết quả: xyz zyx \r Về đầu dòng cout<<"xyz\rzyx”; Kết quả: zyx 54 22/04/2011 10 BÀI TẬP Cho biết kết quả của những lệnh sau: int a, b; b=a++ + ++a + a; cout<<"a=“<<a<<“, b=“<<b; Với a = 2 Kết quả: Với a = 9 Kết quả: int a, b; b= a + a; b; cout<<"a=“<<a<<“, b=“<<b; Với a = 19 Kết quả: Với a = 10 Kết quả: 55 int a, b; b=a%2 + a/2 + a; cout<<"a=“<<a<<“, b=“<<b; Với a = 17 Kết quả: Với a = 3 Kết quả: int a, b; b=a/3 + a ; cout<<"a=“<<a<<“, b=“<<b; Với a = 8 Kết quả: Với a =21 Kết quả: int k; cout<<(k%3==0)?k++: k ; Với k =10 Kết quả: Với k =15 Kết quả: 56 Các định danh nào sau đây là không hợp lệ? i. Main ii. Tinh Tong iii. Tinh-Tong iv. Tinh_Tong v. x_Mu_2 vi. 2_Mu_2 vii. using viii. class ix. Tien$ x. default xi. yahoo.com 57 Cho biết những chỗ sai và sửa lại cho đúng int n = -100; uint i = -100; int = 2.9; long m = 2, p = 4; int 2k; float y = y * 2; charch = “b”; Viết chương trình in ra màn hình thông tin cá nhân theo mẫu sau: Ho ten: Lop: Thong tin lien lac: Dia chi: So dien thoai: 58 Viết chương trình nhập vào giờ phút và giây, đổi ra giây và xuất kết quả ra màn hình. Viết chương trình nhập vào 3 số nguyên a, b và c, tính giá trị trung bình cộng của 3 số trên và xuất kết quả ra màn hình. Viết chương trình nhập vào số nguyên dương n, tính tổng từ 1 đến n và xuất kết quả ra màn hình. Viết chương trình cho phép nhập vào một số đo nhiệt độ theo độ Fahrenheit và xuất ra nhiệt độ tương đương của nó theo độ Celsius, sử dụng công thức chuyển đổi: Viết chương trình nhập vào 3 số nguyên a, b và c, cho biết 3 số vừa nhập có thứ tự tăng dần (a<b<c) không? Và xuất kết quả . 59 )32( 9 5 00 FC CHƯƠNG 3 CẤU TRÚC ĐIỀU KHIỂN LƯU ĐỒ (FLOWCHART) 60 [...]... th c hiện cc hàm theo yêu c u c a bài toán 22/04/2011 22/04/2011 Chương 4 CHƯƠNG TRÌNH C CẤU TR C CHƯƠNG TRÌNHC 114 19 22/04/2011 Tham số KHÁI NIỆM Gọi hàm là một đoạn chương trình đ c lập th c hiện trọn vẹn một c ng vi c nhất định sau đó trả về giá trị cho chương trình gọi nó, hay nói c ch kh c hàm là sự chia nhỏ c a chương trình M c đích sử dụng hàm: Khi c một c ng vi c giống nhau c n th c hiện... TR C LỰA CHỌN switch (biểu th c) case n1: c c câu lệnh ; break ; case n2: c c câu lệnh ; break ; ……… case nk: ; break ; [default: c c câu lệnh] 80 Ví dụ: Nhập vào số nguyên n c giá trị từ 1 đến 5 In c ch đ c của số đó ra màn hình void main() { int n; cout