Đề cương môn Lập trình Cơ bản (Phần 1)
1. Ví dụ
+ Thuật toán giải phương trình bậc 1, giải phương trình bậc 2.
+ Thuật toán tìm số lớn nhất trong 3 số a, b, c.
+ Thuật toán tính trung bình cộng của 4 số a, b, c, d.
+ Thuật toán tìm đường đi ngắn nhất.
2. Khái niệm
Thuật ngữ thuật toán (Algorithm) là từ viết tắt của tên một nhà toán học ở
thế kỷ IX: Abu Ja’fa Mohammed ibn Musa al-Khowarizmi. Đầu tiên, thuật toán
được hiểu như là các quy tắc thực hiện các phép toán số học với các con số
được viết trong hệ thập phân. Cùng với sự phát triển của máy tính, khái niệm
thuật toán được hiểu theo nghĩa rộng hơn. Một định nghĩa hình thức về thuật
toán được nhà toán học người Anh là Alanh Turing đưa ra vào năm 1936 thông
quá máy Turing. Có thể nói lý thuyết thuật toán được hình thành từ đó.
Lý thuyết thuật toán liên quan đến vấn đề sau:
+ Giải được bằng thuật toán: Thay những thuật toán chưa tốt bằng những
thuật toán tốt hơn.
+ Triển khai thuật toán: Xây dựng những ngôn ngữ thực hiện trên máy tính
để mã hóa thuật toán.
Vậy, Thuật toán là một dãy hữu hạn các thao tác được bố trí theo một trình
tự xác định, được đề ra trước, nhằm giải quyết một bài toán nhất định.
Thao tác hay còn gọi là tác vụ, phép toán (Operation) hay lệnh
(Command), chỉ thị (Instruction) là một hành động cần được thực hiện bởi cơ
chế thực hiện thuật toán.
Mỗi thao tác biến đổi bài toán từ một trạng thái trước (hay trạng thái nhập)
sang trạng thái sau (hay trạng thái xuất). Thực tế mỗi thao tác thường sử dụng
một số đối tượng trong trạng thái nhập (các đối tượng nhập) và sản sinh ra các
đối tượng mới trong trạng thái xuất (các đối tượng xuất). Quan hệ giữa 2 trạng
thái xuất và nhập cho thấy tác động của thao tác. Dãy các thao tác của thuật toán
nối tiếp nhau nhằm biến đổi bài toán từ trạng thái ban đầu đến trạng thái kết quả.
Mỗi thao tác có thể phân tích thành các thao tác đơn giản hơn.
Trang 1
Trang 2
Trang 3
Trang 4
Trang 5
Trang 6
Trang 7
Trang 8
Trang 9
Trang 10
Tải về để xem bản đầy đủ
Tóm tắt nội dung tài liệu: Đề cương môn Lập trình Cơ bản (Phần 1)
< email_add; Cần phải nhấn mạnh rằng cout không nhảy xuống dòng sau khi xuất dữ liệu, vì vậy hai câu lệnh sau: cout << "This is a sentence."; cout << "This is another sentence."; sẽ được hiển thị trên màn hình: This is a sentence.This is another sentence. Bởi vậy khi muốn xuống dòng chúng ta phải sử dụng ký tự xuống dòng, trong C++ là \n: cout << "First sentence.\n "; cout << "Second sentence.\nThird sentence."; sẽ viết ra màn hình như sau: First sentence. Second sentence. Third sentence. Thêm vào đó, để xuống dòng bạn có thể sử dụng tham số endl. Ví dụ: cout << "First sentence." << endl; cout << "Second sentence." << endl; sẽ in ra màn hình: 25 Đề cương môn: Lập trình Cơ bản First sentence. Second sentence. Tham số endl có một tác dụng đặc biệt khi nó được dùng với các dòng dữ liệu sử dụng bộ đệm: Các bộ đệm sẽ được flushed (chuyển toàn bộ thông tin từ bộ đệm ra dòng dữ liệu). Tuy nhiên, theo mặc định cout không sử dụng bộ đệm. Các ký tự điều khiển Đây là các kí tự đặc biệt, bắt đầu bằng kí tự \ tiếp theo là 1 kí tự dùng để điều khiển: chuyển con trỏ màn hình, vị trí in dữ liệu,.. - \n : chuyển con trỏ màn hình xuống dòng mới - \t : dấu tab - \b : (backspace) lùi một kí tự (xoá kí tự trước vị trí con trỏ hiện tại). 5.2. Nhập dữ liệu (cin) Thao tác vào chuẩn trong C++ được thực hiện bằng cách sử dụng toán tử đã quá tải >> với dòng cin. Theo sau toán tử này là biến sẽ lưu trữ dữ liệu được đọc vào. Ví dụ: int age; cin >> age; khai báo biến age có kiểu int và đợi nhập dữ liệu từ cin (bàn phím) để lưu trữ nó trong biến kiểu nguyên này. cin chỉ bắt đầu xử lý dữ liệu nhập từ bàn phím sau khi phím Enter được gõ. Vì vậy dù bạn chỉ nhập một ký tự thì cin vẫn sẽ kiên nhẫn chờ cho đến khi bạn gõ phím Enter. 26 Đề cương môn: Lập trình Cơ bản Chương 4. Các cấu trúc điều khiển 1. Lệnh đơn và lệnh phức 1.1. Lệnh đơn Một biểu thức kiểu như: a =5; a+ =6; trở thành câu lệnh khi có đi kèm theo dấu chấm phẩy (;) phía cuối câu. Ví dụ: a = 5; a+=6; 1.2. Lệnh phức hay khối lệnh Lệnh phức là một dãy các các câu lệnh được bao bởi cặp dấu ngoặc nhọn {}. Ví dụ 1: { S+=(i*i); i++; } Ví dụ 2: { cout<<a[i][j]<<" "; if (j==i) cout<<"\n"; } 2. Cấu trúc điều kiện if..else 2.1. Dạng khuyết If (biểu thức điều kiện) { Khối lệnh; } Cách hoạt động: Đầu tiên, chương trình kiểm tra biểu thức điều kiện sau if. Nếu biểu thức điều kiện đúng thì các câu lệnh trong khối lệnh trong cấu trúc if được thực hiện. Ngược lại, chương trình sẽ thoát ra khỏi cấu trúc if và thực hiện các lệnh tiếp theo sau cấu trúc if. 27 Đề cương môn: Lập trình Cơ bản Biểu diễn dưới dạng lưu đồ cách hoạt động của cấu trúc if: Sai Biểu thức đk Đúng Khối lệnh 2.2. Dạng đầy đủ if (biểu thức điều kiện) { Khối lệnh 1; } else { Khối lệnh 2; } Cách hoạt động: Đầu tiên, chương trình kiểm tra biểu thức điều kiện sau if, nếu biểu thức điều kiện đúng thì thực hiện các câu lệnh trong khối lệnh 1. Ngược lại, nếu biểu thức điều kiện sai sẽ thực hiện các câu lệnh trong khối lệnh 2. Biểu diễn bằng lưu đồ của cấu trúc if..else: 28 Đề cương môn: Lập trình Cơ bản Sai Biểu thức đk Đúng Khối lệnh 2; Khối lệnh 1; Ví dụ 1: Sử dụng cấu trúc if và if..else để nhập vào điểm của 3 môn: Toán, lý, hóa và tính điểm trung bình: #include int main() { double dtb,dt,dl,dh; cout<<"Diem toan la:"; cin>>dt; cout>dl; cout>dh; dtb = (dt+dl+dh)/3; cout<<"diem trung binh 3 mon la:"<<"="<<dtb<<"\n"; if (dtb<5) cout<<"Hoc luc yeu"; if (dtb>=5&&dtb<7) cout<<"Hoc luc trung binh"; if (dtb>=7 && dtb<8) cout<<"Hoc luc kha"; else cout<<"Hoc luc gioi"; return 0; } Ví dụ 2: Giải phương trình bậc 1: ax + b = 0 29 Đề cương môn: Lập trình Cơ bản #include #include int main() { int a,b; float x; cout<<"Nhap a va b:"<<"\n"; cin>>a>>b; if (a==0 && b==0) cout<<"Bat phuong trinh co vo so nghiem"; if (a==0 && b!=0) cout<<"Bat phuong trinh vo nghiem"; if (a!=0) cout<<"Bat phuong trinh co nghiem x = "<<-b/a; } Ví dụ 3: Viết chương trình nhập vào 1 số, tính căn bậc 2 của số đó //Chuong trinh tinh can bac 2 #include #include main() { int a; cout>a; if (a<0) cout<<"Khong tinh duoc"; if (a>0) cout<<"Can bac hai cua a la: "<< sqrt(a); } 3. Cấu trúc lựa chọn: switch..case Cấu trúc switch..case cho phép lựa chọn một nhánh trong nhiều khả năng tùy vào điều kiện xảy ra. Cú pháp: switch (Biểu thức nguyên) { 30 Đề cương môn: Lập trình Cơ bản case n1: Khối lệnh 1; case n2: Khối lệnh 2; case nk: Khối lệnh k; [default: Khối lệnh; ] } Trong đó: ni là các số nguyên, hằng ký tự hoặc biểu thức hằng. Các ni cần có giá trị khác nhau. Đoạn chương trình nằm trong cặp ngoặc nhọn {} là thân của switch. default, case là các từ khóa. default là thành phần không bắt buộc. Cách hoạt động: sự hoạt động của cấu trúc switch..case phụ thuộc vào giá trị của biểu thức nguyên sau switch. Đầu tiên được tính, sau đó lần lượt so sánh giá trị của với các biểu thức hằng , ,... Nếu giá trị của một biểu thức hằng thứ k trong các biểu thức này trùng với giá trị của thì chương trình sẽ thực hiện các lệnh bắt đầu từ khối lệnh k và tiếp tục các lệnh phía dưới cho tới khi: + Gặp câu lệnh : break (tất nhiên nếu gặp các câu lệnh return, exit thì cũng kết thúc). + Gặp dấu đóng móc } hết cấu trúc switch. Nếu không trùng với giá trị nào trong các biểu thức hằng thì khối lệnh (các lệnh sau mệnh đề default nếu có) sẽ được thực hiện, rồi ra khỏi cấu trúc switch. Ví dụ 1: Sử dụng cấu trúc switch..case, hãy viết chương trình: nếu nhập vào là ‘P’ hoăc ‘p’ thì hiển thị dòng chữ “Cao dang co dien Ha Noi”. #include main() { char ch; cout>ch; switch (ch) { case 'P': case 'p': cout<<"Cao dang co dien Ha Noi"; 31 Đề cương môn: Lập trình Cơ bản } } Ví dụ 2: Viết chương trình sử dụng cấu trúc switch..case, nhập 2 số nguyên x, y từ bàn phím, chương trình đưa ra lựa chọn: + Nếu người sử dụng nhập ‘+’: Thực hiện: x + y; + Nếu người sử dụng nhập ‘-‘: Thực hiện: x – y; + Nếu người sử dụng nhập ‘*’: Thực hiện: x * y; + Nếu người sử dụng nhập ‘/‘: Thực hiện: x / y; Nếu người sử dụng không nhập một trong các toán tử trên thì đưa ra dòng thông báo: “Khong hieu toan tu nay!”. #include int main() { int X; cout<< "Nhap vao so thu nhat:"; cin>>X; int Y; cout<< "Nhap vao so thu hai:"; cin>>Y; char Op; cout<<"Nhap vao toan tu (+-*/):"; cin>>Op; switch(Op) { case '+': cout<<"Ket qua:"<<X+Y<<"\n"; break; case '-': cout<<"Ket qua:"<<X-Y<<"\n"; break; case '*': cout<<"Ket qua:"<<long(X)*Y<<"\n"; break; case '/': if (Y) 32 Đề cương môn: Lập trình Cơ bản cout<<"Ket qua:"<<float(X)/Y<<"\n"; else cout<<"Khong the chia duoc!" <<"\n"; break; default : cout<<"Khong hieu toan tu nay!"<<"\n"; } return 0; } 4. Các cấu trúc lặp 4.1. Cấu trúc lặp while Cú pháp: while(biểu thức) Khối lệnh; // Hay thân while Sự hoạt động của vòng lặp while: Bước 1: tính giá trị của Bước 2: nếu giá trị tính được của là ‘sai’ (==0) thì kết thúc vòng lặp while. Bước 3: nếu giá trị của là ‘đúng’ (!=0) thì thực hiện khối lệnh sau while. Bước 4: quay lại bước 1 Chú ý: Thân while có thể được thực hiện một lần hoặc nhiều lần và cũng có thể không được thực hiện lần nào nếu ngay từ đầu biểu thức sau while đã sai. Biểu diễn bằng lưu đồ: Đúng Biểu thức Khối lệnh Sai Ví dụ 1: 33 Đề cương môn: Lập trình Cơ bản #include main() { int n; cout>n; while (n>0) { cout<< n<< ","; --n; } cout<< "Ket thuc"; return 0; } Ví dụ 2: Viết chương trình tính và in S = 1 +1/(2!) +1/(3!)+..+1/(n!) với n nhập từ bàn phím, 0<n<10. #include const int Max =10; // gioi han void main() { int n, k ; float S, pt; cout<<"\nNhap n = "; cin>>n; while((nMax)) { cout<<"\nNhap lai n (0<n<="<<Max; cin>>n; } S=pt=1; k=2; while(k<=n) { pt /=k; S+=pt; k++; } cout<<"\nGia tri tong S = “<<S; 34 Đề cương môn: Lập trình Cơ bản } Ví dụ 3: Viết chương trình nhập số nguyên n từ bàn phím, n 0, tính và in giá trị n! (giai thừa của n), với n! = 1*2**(n-1)*n #include const int Max =10; // giới hạn giá trị cần tính void main() { int n, i; long gt; cout<<"\nNhap n = "; cin>>n; while((nMax)) { cout<<"\nNhap lai n (0<n<= : "<< Max; cin>>n; } gt=i=1; while(i<=n) { gt*=i; i++; } cout<<"\nGia tri n = “<<gt; } 4.2. Cấu trúc lặp do..while Trong toán tử while việc kiểm tra điều kiện kết thúc đặt ở đầu chu trình. Khác với while, do..while việc kiểm tra điều kiện kết thúc đặt cuối chu trình. Như vậy thân của chu trình bao giờ cũng được thực hiện ít nhất một lần. Cú pháp: do Khối lệnh; while (biểu thức); Sự hoạt động của vòng lặp do..while: 35 Đề cương môn: Lập trình Cơ bản Bước 1: thực hiện khối lệnh sau do. Bước 2: kiểm tra giá trị biểu thức sau while, nếu có giá trị ‘đúng’ ( khác 0) thì lặp lại bước 1, nếu ‘sai’ (=0) thì kết thúc vòng lặp. Biểu diễn dưới dạng lưu đồ: Khối lệnh Đúng Biểu thức Sai Ví dụ 1: #include main() { unsigned long n; do { cout>n; cout<< "Ban da nhap so"<<n<<endl; } while (n!=0); return 0; } Ví dụ 2: #include int main() { unsigned long n; do { 36 Đề cương môn: Lập trình Cơ bản cout<<"Nhap vao 1 day so:"; cin>>n; cout<<" Ban vua nhap day so la:"<<n<< "\n"; } while (n!=0); return 0; } 4.3. Cấu trúc lặp for Cú pháp: for (biểu thức 1; biểu thức 2; biểu thức 3) Khối lệnh; Trong đó: Biểu thức 1: biểu thức khởi đầu. Biểu thức 2: biểu thức điều kiện - điều kiện lặp. Biểu thức 3: bước nhảy - thường dùng với ý nghĩa là thay đổi bước nhảy. Cả 3 biểu thức này đều là tuỳ chọn, chúng có thể vắng mặt trong câu lệnh cụ thể nhưng các dấu chấm phẩy vẫn phải có. Sự hoạt động của vòng lặp for: Hoạt động của for theo các bước sau: Bước 1: Thực hiện biểu thức khởi đầu – Biểu thức 1. Bước 2: Tính giá trị biểu thức 2 để xác định điều kiện lặp. Nếu biểu thức 2 có giá trị ‘sai’ (==0) thì ra khỏi vòng lặp. Ngược lại, nếu biểu thức có giá trị ‘đúng’ ( khác 0) thì chuyển tới bước 3. Bước 3: Thực hiện khối lệnh sau for ( thân của for ), chuyển tới bước 4. Bước 4: Thực hiện biểu thức, rồi quay về bước 2. Biểu diễn dưới dạng lưu đồ: 37 Đề cương môn: Lập trình Cơ bản Biểu thức 1 Sai Biểu thức 2 Đúng Khối lệnh Biểu thức 3 Ví dụ 1: #include main() { for (int n = 10; n>0; n--) { cout<< n<< ","; } cout<< "Ket thuc"; return 0; } Ví dụ 2: Nhập vào một dãy số nguyên, tìm số lớn nhất và nhỏ nhất trong dãy. #include void main() { int n,a,max,min,i; do { 38 Đề cương môn: Lập trình Cơ bản cout<<"Nhap so phan tu cua day : "; cin>>n; }while(n<1); cout<<"Nhap so thu nhat : "; cin>>a; max=min=a; for(i=2; i<=n; i++) { cout<<"Nhap so thu nhat : "; cin>>a; if(a>max) max=a; else if(a<min) min =a; } cout<<"\nGia tri lon nhat =”<<max<<”\nGia tri nho nhat = "<<min; } 5. Câu lệnh break, continue, goto và hàm exit 5.1. Câu lệnh break Câu lệnh break cho phép ra khỏi các chu trình với các toán tử for, while và switch. Khi có nhiều chu trình lồng nhau, câu lệnh break sẽ kết thúc câu lệnh điều khiển đang sử dụng và ra khỏi bên trong nhất chứa nó không cần điều kiện gì. Mọi câu lệnh break có thể thay bằng câu lệnh goto với nhãn thích hợp. Ví dụ: Cho phép người dùng nhập liên tục giá trị n cho đến khi nhập âm thì dừng. #include void main() int n; { while (1) { cout<<“\nNhap n: ”; cin>>n; 39 Đề cương môn: Lập trình Cơ bản if(n<0) break; } } 5.2. Câu lệnh continue Trái với câu lệnh break, continue dùng để bắt đầu một vòng mới của chu trình chứa nó. Trong while và do .. while, lệnh continue chuyển điều khiển về thực hiện ngay phần kiểm tra, còn trong vòng lặp for điều khiển được chuyển về bước khởi đầu lại (tức là bước: tính biểu thức 3, sau đó quay lại bước 2 để bắt đầu một vòng mới của chu trình). Chú ý: Lệnh continue chỉ áp dụng cho chu trình, không áp dụng cho switch. Ví dụ: In ra màn hình giá trị từ 10 đến 20 trừ đi số 13 và số 17. #include void main() { for(int i=10 ; i<=20; i++) { if(i==13||i==17) continue; cout<<i<<","; } cout<<"Ket thuc;"; } 5.3. Câu lệnh goto Lệnh goto cho phép nhảy vô điều kiện tới bất kỳ điểm nào trong chương trình. Ví dụ: #include int main () { int n=10; loop: ; cout << n << ", "; n--; 40 Đề cương môn: Lập trình Cơ bản if (n>0) goto loop; cout << "Kết thúc!"; return 0; } 5.4. Hàm exit Hàm exit() trong C/C++ được sử dụng để thoát khỏi chương trình. Hàm này, khi được triệu gọi sẽ ngay lập tức kết thúc chương trình và chuyển quyền điều khiển cho hệ điều hành. Cú pháp: exit (int mã_trả_về); mã_trả_về thường là số 0. Số 0 sẽ xác định việc kết thúc chương trình một cách bình thường. Tuy nhiên có một vài trường hợp mã_trả_về là những số khác 0 để xác định một vài loại lỗi. Bài tập luyện Bài 1: Viết chương trình giải phương trình bậc nhất ax + b = 0 Bài 2: Viết chương trình giải phương trình bậc hai ax2 + bx + c = 0 (a ≠ 0) Bài 3: Viết chương trình giải phương trình bậc hai ax2 + bx + c = 0 (a bất kỳ) Bài 4: Viết chương trình nhập vào N, kiểm tra N có phải là số nguyên tố không ? Bài 5: Viết chương trình nhập vào N, tính tổng và in ra tất cả các số ước số của N. Ví dụ: N = 20 - Tập các ước số của 20 là: 1, 2, 4, 5, 10, 20 - Tổng các ước số = 42 Bài 6: Viết chương trình nhập vào số nguyên dương N, tính tổng a. S1 = 1 + 2 + 3 + 4 +..+ N b. S2 = 12 + 22 + 32 + 42 +..+ N2 41
File đính kèm:
- de_cuong_mon_lap_trinh_co_ban_phan_1.pdf