Một số thuật toán giải một số bài toán ñơn giản

Một phần của tài liệu Giáo trình tin học đại cương (Trang 27 - 34)

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

Một phần của tài liệu Giáo trình tin học đại cương (Trang 27 - 34)

Tải bản đầy đủ (PDF)

(96 trang)