3.4.1 Bài toán ựếm
Bài toán: Cho một dãy n các phần tử a1, a2,Ầ, an. Hãy ựếm xem trong dãy có bao nhiêu
phần tử thoả mãn ựiều kiện nào đó.
Một cách tự nhiên thì ựể giải bài toán trên, ta thực hiện duyệt qua từng phần tử. Với mỗi phần tử thoả mãn ựiều kiện thì tăng biến ựếm lên một ựơn vị.
Thuật toán
Bước 1. Xác ựịnh n và các phần tử a1, a2, ... an Bước 2. Khởi tạo một biến ựếm với giá trị là 0
Bước 3. Thực hiện duyệt qua từng phần tử. Với mỗi phần tử ựược duyệt, thực hiện kiểm
tra xem nó có thoả mãn ựiều kiện bài tốn khơng?. Nếu thoả mãn thì tăng biến ựếm lên một ựơn vị. Nếu không thoả mãn thì duyệt phần tử tiếp theo.
Mơ tả thuật tốn bằng sơ ựồ khối
Vắ dụ 1: Cho một dãy n số nguyên. đếm xem trong dãy có bao nhiêu số chẵn.
Thuật toán
Sử dụng phương pháp ựặc tả tự nhiên mơ tả thuật tốn
n i = 1, 2, .., n ai Dem = 0 i = 1, 2, .., n Bt Lơgắc Dem S đ Dem = Dem +1 Begin End
http://www.ebook.edu.vn 28
Bước 1. Xác ựịnh n và các phần tử a1, a2, ... an
Bước 2. Khởi tạo một biến ựếm với giá trị là 0
Bước 3. Thực hiện duyệt qua từng phần tử. Với mỗi phần tử ựược duyệt, thực hiện kiểm
tra: Nếu ai chia hết cho 2 thì tăng biến ựếm lên một ựơn vị. Ngược lại, duyệt phần tử tiếp theo.
Sử dụng sơ ựồ khối mơ tả thuật tốn
Mơ tả thuật tốn ựếm các số chẵn trong một dãy số
3.4.2 Bài tốn tìm giá trị lớn nhất, giá trị nhỏ nhất
Trong cuộc sống thực tế, hàng ngày chúng ta luôn phải ựi tìm giá trị lớn nhất, nhỏ nhất trong một tập phần tử. Vắ dụ như tìm người có chiều cao cao nhất (thấp nhất) trong lớp; tìm sinh viên có điểm tổng kết cao nhất (thấp nhất) trong lớp, trong khoa, trong trường; Ầ. Như vậy nếu có một thuật toán giải bài toán này và cài ựặt nó trên máy tắnh ựể máy giải giúp chúng ta thì ựó thực sự là một ứng dụng có ắch. Bài toán cụ thể ựược phát biểu như sau:
Bài tốn: Cho một dãy n số bất kỳ. Hãy tìm giá trị lớn nhất (nhỏ nhất) của dãy số ựó.
để tìm giá trị lớn nhất (nhỏ nhất) của các phần tử trong dãy. Ta thực hiện so sánh các phần tử trong dãy với nhau sẽ tìm ra ựược giá trị mong muốn. Quá trình tìm ựược thể hiện bằng thuật tốn sau đây.
Thuật toán
Sử dụng phương pháp ựặc tả tự nhiên mơt tả thuật tốn Bước 1. Xác ựịnh n và các số a1, a2, Ầ, an
Bươc 2. Sử dụng Max lưu giá trị lớn nhất. Giả sử giá trị lớn nhất là a1 (tức là Max = a1). Bước 3. Duyệt lần lượt qua các phần tử a2, a3, Ầ, an. So sánh giá trị của phần tử ai với
Max. Nếu ai > Max (i=2..n) thì gán giá trị của ai cho Max (Max = ai). Nếu ai < Max thì chuyển xét phần tử tiếp theo.
Giá trị cuối cùng lưu trong Max chắnh là giá trị lớn nhất của dãy số. Input: n i = 1, 2, .., n Input: ai Dem = 0 i = 1, 2, .., n ai M 2 Dem = Dem +1 Output: Dem S đ Begin End
http://www.ebook.edu.vn 29
Sử dụng sơ ựồ khối mơ tả thuật tốn
Thuật tốn tìm giá trị lớn nhất của một dãy số.
đối với bài tốn tìm giá trị nhỏ nhất cũng tương tự, nhưng trong phép so sánh ta phải thay dấu Ộ<Ợ bằng dấu Ộ>Ợ và thay tên Max thành Min ựể phù hợp với ý nghĩa kết của kết quả lưu trong nó.
Một số bài tốn qui về bài tốn tìm max, min
Bài 1. Cho tọa ựộ của một dãy n ựiểm { i, i}n1
i
x y = trong mặt phẳng. Tìm diện tắch ựường trịn tâm O(0,0) có bán kắnh nhỏ nhất chứa n ựiểm trên.
Gợi ý: Bài tốn này qui về bài tốn tìm Max
Bài 2. Cho tọa ựộ của một dãy n ựiểm { i, i}n1
i
x y = trong mặt phẳng. Tìm hình chữ nhật có diện tắch nhỏ nhất và các cạnh song song với các trục toạ ựộ chứa n ựiểm trên.
Gợi ý: Bài tốn này qui về bài tốn tìm cả Min và Max.
3.4.3 Bài tốn tắnh tổng một dãy số
Bài toán: Cho 1 dãy n số. Tắnh tổng tất cả các phần tử của dãy. Thuật toán
Sử dụng phương pháp ựặc tả tự nhiên mô tả thuật toán
Bước 1. Xác ựịnh n, a1, a2, Ầ, an Bước 2 .Khởi tạo S = 0
Bước 3. Duyệt qua từng phần tử của dãy số. Với phần tử ai của dãy thực hiện S = S + ai. Sau khi duyệt qua hết các phần tử ta ựược tổng của dãy lưu trong S.
Sử dụng sơ ựồ khối mơ tả thuật tốn
i = 2, 3,..., n Input: n i = 1, 2, .., n Input: ai Max = a1 Max<ai Output: Max S đ Max = ai Begin End
http://www.ebook.edu.vn 30
Một số bài toán qui về bài tốn tắnh tổng
Bài 1. Tắnh giá trị của ựa thực Pn(x) = a0 + a1x + a2x2
+ Ầ +anxn Bài 2. Tắnh tổng theo công thức (công thức tổng quát dạng S = f(x) +
n
i=1 f(x,n)
∑ )
Vắ dụ 1: Cho x là số thực, n là số nguyên dương. Tắnh
S = ex + 1 2 x + + 2 1 3 x + + Ầ + 1 1 n x n + +
Vắ dụ 2: Cho x là số thực, n là số nguyên dương. Tắnh S = | x+ (1+x)3 + (2+x)3 + Ầ +(n+x)3| Vắ dụ 3: Cho x là số thực, n là số nguyên dương. Tắnh
1 2 2006 ... ( 1) 1! 2! ! n x x x n s n + + + = − + − + − Vắ dụ 4: Cho x là số thực, n là số nguyên dương. Tắnh
2 2006 ... 2! ! n x x S x n = + + + +
Vắ dụ 5: Cho n ựiểm trên mặt phẳng tọa ựộ đề các xOy: M1, M2, ... Mn. Tắnh ựộ dài ựường gấp khúc lần lượt ựi qua các ựiểm trên theo thứ tự tự M1 ựến Mn ?
Input: n i = 1, 2, .., n Input: ai S = 0 i = 1, 2,..., n S = S + ai Output: S Begin End
http://www.ebook.edu.vn 31
3.4.4 Bài tốn tắnh tắch một dãy số
Bài toán: Cho 1 dãy n số. Tắnh tắch tất cả các phần tử của dãy.
Thuật tốn tắnh tắch của một dãy số cũng tương tự như thuật toán tổng. Tuy nhiên khác với thuật tốn tắnh tổng là khi khởi gán cho ựại lượng lưu trữ tắch là 1 thay vì khởi gán 0 và thay phép + bằng phép * (nhân).
Các bài toán qui về thuật tốn tắnh tắch
Bài 1. Cho số tự nhiên n. Tắnh S = n!
http://www.ebook.edu.vn 32
PHẦN 2
http://www.ebook.edu.vn 33
Một số giới thiệu mở ựầu về Ngôn ngữ lập trình C
Vào năm 1970 từ một ngôn ngữ cũ hơn gọi là BCPL, Dennis Ritchie và Brian Kernighan ựã đưa ra ngơn ngữ C với mục ựắch ban ựầu là viết Hệ ựiều hành Unix trên máy mini DEC PDP-11. Sau ựó C đã nhanh chóng ựược sử dụng trên các máy tắnh PC. Năm 1987 hãng Borland ựã cung cấp phần mềm Turbo C - bộ chương trình dịch rất hiệu quả, tiện lợi, nhờ ựó việc dùng ngơn ngữ C trở nên dễ dàng hơn. Trong quá trình phát triển ựã xuất hiện nhiều phiên bản C khác nhau. để tiến tới sự thống nhất, năm 1990 ANSI [1] ựã xây dựng ngôn ngữ C chuẩn (ANSI C). C là một trong các ngôn ngữ lập trình cấu trúc tiêu biểu có tốc ựộ xử lý nhanh, có các cơng cụ mạnh ựể quản lý bộ nhớ và các thiết bị ngoại vi. đã có nhiều sản phẩm phầm mềm trong mọi lĩnh vực viết bằng C như hệ ựiều hành, các ứng dụng xử lý ựồ hoạ, ựa phương tiện, xử lý văn bản, cơ sở dữ liệu, mạng,... . C hiện ựang không ngừng phát triển, từ C có thể nghiên cứu các ngôn ngữ tân tiến khác như C++, C trên Windows, Visual C++, Java. Chắnh vì vậy C ựã ựược ựưa vào giảng dạy cho tất cả các khoa công nghệ thông tin và nhiều khoa chuyên ngành kỹ thuật khác. Trong vài năm gần ựây Trường đại học Giao thông Vận tải ựã ựưa ngôn ngữ C vào giảng dạy trong chương trình Tin học đại cương.
Trong phần II này, chúng tôi cung cấp những kiến thức cơ sở của Turbo C. Các vấn ựề lý thuyết ựược giải thắch tỉ mỉ và ựược minh hoạ bằng nhiều vắ dụ. Các câu lệnh phức tạp ựược giới thiệu dần dần từ dễ ựến khó. Thường mỗi lệnh ựiều khiển có thể viết theo nhiều dạng. Các vắ dụ và bài tập sẽ giúp người ựọc luyện tập cách vận dụng các câu lệnh ựể viết chương trình.
Phần II gồm 5 chương và 02 phụ lục
Chương 1: ngoài việc giới thiệu các khái niệm cơ bản còn ựưa ra một số chương trình C ựơn giản và cách thực hiện chúng trên máy ựể giúp người ựọc mau chóng tiếp cận với máy tắnh.
Chương 2: trình bày các kiểu dữ liệu, cách biểu diễn các giá trị dữ liệu và cách tổ chức (lưu trữ) dữ liệu trong biến và mảng.
Chương 3: nói về một lớp tốn tử rất quan trọng dùng ựể thể hiện các thuật tốn , đó là tốn tử rẽ nhánh if, và các tốn tử tạo lập chu trình (vịng lặp) for, while, do - while.
Chương 4: trình bày cách tổ chức chương trình thành các hàm, các quy tắc xây dựng và sử dụng hàm. Các vấn ựề hay và khó ở ựây là con trỏ và kỹ thuật ựệ quy.
Chương 5: nói về một kiểu dữ liệu quan trọng là cấu trúc (tương tự như bản ghi của Foxpro và Pascal) dùng ựể biểu diễn các ựối tượng thường gặp như thắ sinh, học sinh, giáo viên, hố đơn bán hàng, phiếu xuất nhập vật tư, công văn ựi ựến,...
Phụ lục 1: trình bày bảng mã ASCII.
http://www.ebook.edu.vn 34
CHƯƠNG 1 - MỘT SỐ KHÁI NIỆM MỞ đẦU
Chương này sẽ giới thiệu những thành phần cơ bản của ngơn ngữ lập trình C, đó là: tập ký tự, từ khóa và tên. để có thể lập ựược một chương trình ựầy ựủ, chúng tơi sẽ trình bày đơi ựiều về câu lệnh gán, các câu lệnh vào ra, chỉ thị #include và những qui tắc cần lưu ý khi viết chương trình. Ngồi ra ựể giúp bạn ựọc mau chóng tiếp cận với máy, chúng tơi sẽ giới thiệu vài chương trình đơn giản nhưng hồn chỉnh và cách vận hành chúng trên máy ựể nhận ựược kết quả cuối cùng. Tất cả những ựiều nói trên là bổ ắch và ựáng ghi nhớ vì chúng sẽ ựược thường xuyên sử dụng sau này. đọc xong chương 1 bạn có thể lập ựược một số chương trình đơn giản, biết cách thực hiện chương trình trên mơi trường Turbo C 2.0 và Turbo C++ 3.0