Tải bản đầy đủ (.pdf) (45 trang)

Báo cáo bài tập lớn đề tài tìm hiểu về cấu trúc điều khiển trong lập trình

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (4.28 MB, 45 trang )

<span class="text_page_counter">Trang 1</span><div class="page_container" data-page="1">

TRƯỜNG ĐẠI HỌC MỞ HÀ NỘI

<b>KHOA CƠNG NGHỆ THƠNG TIN</b>

<b>---BÁO CÁO BÀI TẬP LỚN</b>

<b>Đề tài: Tìm hiểu về cấu trúc điều khiển trong lập trình</b>

<i><b> Giảng viên hướng dẫn: TS. Dương Thăng Long Học viên thực hiện: </b></i> <b>Trần Văn Nam (NT)</b>

</div><span class="text_page_counter">Trang 2</span><div class="page_container" data-page="2">

<b>MỤC LỤC</b>

<b>I. MỞ ĐẦU...4</b>

<b>II. NỘI DUNG...5</b>

<b>1. Control flow (Kiểm sốt dịng chảy):...5</b>

1.1. Sequence (Cấu trúc điều khiển tuần tự):...5

1.2.3. Sự hoạt động của cấu trúc switch/case:...9

1.2.4. Một số lưu ý khi dùng switch/case:...10

1.3. Loop (Cấu trúc Vịng lặp):...11

1.3.1. Giới thiệu Vịng lặp là gì?...11

1.3.2. Một số vấn đề:...11

<b>2. Semantic (Ngữ nghĩa):...29</b>

2.1. Ngữ nghĩa động (Dynamic semantics):...29

2.1.1. Ngữ nghĩa tác vụ (Operational semantics):...29

2.1.2. Ngữ nghĩa tiên đề (Axiomatic semantics):...29

2.1.3. Ngữ nghĩa biểu thị:...30

2.2. Ngữ nghĩa tĩnh (Static semantics):...30

2.2.1. Bộ kiểm tra kiểu của định danh...30

3.2.2. Bộ kiểm tra kiểu của biểu thức...31

2.2.3. Bộ kiểm tra kiểu của câu lệnh:...32

2.2.4. Bộ kiểm tra kiểu của hàm:...32

<b>3. Exception (Ngoại lệ):...33</b>

3.1. Định nghĩa:...33

3.2. Mục đích của việc xử lý ngoại lệ:...33

3.3. Mơ hình xử lý ngoại lệ:...34

3.3.1. Trường hợp handle exception điển hình bằng try...catch:...34

3.3.2. Trường hợp khi ta phát triển một chức năng có thể phát sinh exception nhưng ta không muốn giải quyết chúng:...35

3.3.3. Trường hợp là sự kết hợp giữa hai tình huống trên:...35

3.3.4. Cá nhân hóa biệt lệ (custom exception):...36

3.4. Quản lý biệt lệ (Exception) trong ngôn ngữ Python:...36

<b>III. KẾT LUẬN...44</b>

IV. TÀI LIỆU THAM KHẢO...45 2

</div><span class="text_page_counter">Trang 3</span><div class="page_container" data-page="3">

<b>PHÂN CÔNG CÔNG VIỆC NHĨM 11. Trần Văn Nam – Trưởng nhóm</b>

- Phần 1.1. Sequence (Cấu trúc điều khiển tuần tự)

- Phần 2. Semantic (Mô tả ngữ nghĩa)

<b>5. Lưu Tuấn Kiệt</b>

- Phần 3. Exception (Ngoại lệ)

3

</div><span class="text_page_counter">Trang 4</span><div class="page_container" data-page="4">

<b>I. MỞ ĐẦU</b>

Một trong những yếu tố quan trọng và không thể thiếu của một chương trình là “việc điều khiển”, cụ thể là các cấu trúc điều khiển, cũng là thành tố kết hợp đồng thời giữa dữ liệu và tác vụ. Có thể hiểu, điều khiển trong lập trình là lựa chọn những câu lệnh nào sẽ thực hiện tiếp theo câu lệnh vừa thực thi. Cấu trúc điều khiển (Câu lệnh điều khiển) cho phép một lập trình viên xác định thứ tự thực thi các lệnh trong mỗi chương trình, thể hiện qua việc: Bỏ qua một vài câu lệnh để thực thi các câu lệnh khác hoặc lặp lại một hoặc khối lệnh trong khi điều kiện còn đúng.

Cấu trúc điều khiển (Control Structure) là một trong các đặc trưng cơ bản của phương pháp lập trình cấu trúc. Trong đó, người ta sử dụng 3 cấu trúc điều khiển để tạo nên logic của chương trình. Mọi vấn đề về logic đều được giải quyết bằng cách phối hợp 3 cấu trúc: Cấu trúc tuần tự (Sequence structures), Cấu trúc chọn (Selection structures) và cấu trúc lặp (Iterative structures).

Một trường hợp khác, chúng ta muốn chương trình thực hiện lặp đi lặp lại một cơng việc nào đó với số lần thực hiện chưa biết trước. Ví dụ, chúng ta muốn in ra điểm số của một trò chơi trên màn hình cho đến khi trị chơi kết thúc, chúng ta khơng thể biết chính xác thời điểm kết thúc trò chơi là khi nào.

Đề tài đề cập đến các cấu trúc điều khiển như Cấu trúc tuần tự, cấu trúc rẽ nhánh, cấu trúc vòng lặp đồng thời mô tả ngữ nghĩa và một số ngoại lệ thơng qua một vài ví dụ trong lập trình một số ngôn ngữ như: C, C++, Python, Java,…

4

</div><span class="text_page_counter">Trang 5</span><div class="page_container" data-page="5">

<b>II. NỘI DUNG</b>

<b>1. Control flow (Luồng điều khiển/Cấu trúc điều khiển)1.1. Sequence (Cấu trúc tuần tự):</b>

<i><b>1.1.1. Giới thiệu:</b></i>

- Điều khiển tuần tự là tập hợp quy tắc xác định thứ tự thực hiện trong chương trình. - Xét về mặt cấu trúc thì có 3 loại điều khiển tuần tự:

 Điều khiển tuần tự trong biểu thức.  Điều khiển tuần tự giữa các lệnh.

 Điều khiển tuần tự giữa các chương trình con

- Xét về mặt thiết kế ngơn ngữ lập trình thì có 2 loại điều khiển tuần tự:  Điều khiển ẩn được thiết kế trong ngơn ngữ

 Điều khiển tường minh do người lập trình viết

<i><b>1.1.2. Một số vấn đề:</b></i>

* Điều khiển tuần tự trong biểu thức:

+ Cơ chế điều khiển tuần tự trong biểu thức là phép lấy hàm hợp: Một phép tốn chính và các tốn hạng của nó. Trong đó các tốn hạng có thể là các hằng, biến hoặc các phép tốn khác mà tốn hạng của chúng lại có thể là các hằng, các biến hoặc các phép toán khác…

+ Ví dụ: Xét biểu thức X=3+5*2

Kết của của biểu thức trên phụ thuộc vào thứ tự thực hiện các toán tử. Bảng thứ tự thực hiện các toán tử trong Ngơn ngữ lập trình:

Lệnh cơ bản là lệnh mà trong đó khơng chứa các lệnh khác.

Các lệnh cơ bản bao gồm các lệnh gán, gọi chương trình con, các lệnh nhập, xuất, lệnh nhảy GOTO.

 Điều khiển tuần tự dừng nhãn lệnh và lệnh GOTO

5

</div><span class="text_page_counter">Trang 6</span><div class="page_container" data-page="6">

Cơ chế ban đầu của điều khiển tuần tự trong hầu hết các ngôn ngữ là ghi nhãn lệnh và chuyển đổi điều kiện tới lệnh có nhãn từ chỗ này đến chỗ khác trong trương trình. Việc chuyển điều kiện này thường được thực hiện bởi lệnh GOTO, và GOTO có 2 dạng là: GOTO khơng điều kiện và GOTO có điều kiện.

Cú pháp của GOTO không điều kiện tức là trong chuỗi các lệnh, một lệnh GOTO không điều kiện như khi gặp lệnh <i>goto label;</i> chương trình sẽ chuyển đến lệnh có nhãn là

<i>label. </i> Tất cả các lệnh đứng sau <i>goto label;</i> sẽ không được thư thi. goto label;

... ...

label: statement;

Hiện nay trên một số ngôn ngữ mới như Python, lệnh GOTO được loại bỏ hồn tồn. Vì khi sử dụng nhãn và lệnh GOTO thì chương trình trở nên rất khó đọc bởi khơng có cấu trúc tổng thể và thứ tự các lệnh trong chương trình nguồn khơng ứng với thứ tự các lệnh khi thực hiện.

 Các lệnh cấu trúc

Một lệnh có cấu trúc là một lệnh các chứa các lệnh khác. Các lệnh thành phần của một lệnh có cấu trúc có thể là một lệnh cơ bản hoặc mệnh lệnh có cấu trúc. Hiện nay hầu hết tất cả các ngôn ngữ đều cung cấp một tập hợp các lệnh có cấu trúc biểu thị theo các dạng điều khiển cơ bản (hợp thành, lựa chọn, lặp lại) mà không cần dùng đến GOTO

 Các lệnh hợp thành

Lệnh hợp thành là một chuỗi các lệnh được đặt vào trong một cặp ký hiệu thể hiện sự mở đầu và kết thúc của chuỗi đó

+ Ví dụ: Trong ngôn ngữ Pascal, lệnh hợp thành các chuỗi lệnh được bắt đầu bằng <i>Begin </i>và kết thúc bằng <i>End:</i>

6

</div><span class="text_page_counter">Trang 7</span><div class="page_container" data-page="7">

Tuy nhiên, ở một số ngôn ngữ bậc cao hơn như Python, tập các lệnh hợp thành được đặt trong cùng kiểu format giống nhau.

<i>Yêu cầu: Viết chương trình Python thực hiện cơng việc sau:- Nhập vào số nguyên n; In ra các số nguyên nhỏ hơn n</i>

 Điều khiển tuần tự giữa các chương trình con

Điều khiển tuần tự giữa các chương trình con chính là cách gộp nhóm các nhóm lệnh có liên quan lại với nhau, tạo thành sự mạch lạc giữa các chương trình sao cho máy tính xử lý các chương trình này từ trên xuống dưới có dạng như sau:

<i>Ví dụ: Kiểm tra số n có phải là số ngun tố khơng?</i>

7

</div><span class="text_page_counter">Trang 8</span><div class="page_container" data-page="8">

<i># nhóm lệnh 1: Nhập số nguyên nn = int(input("Nhập n:"))# Nhóm lệnh 2: Xử lý </i>

<i>flag = True # Giả định n là số nguyên tốfor x in range(2, int(n/2)+1):</i>

<b>-</b> Cấu trúc rẽ nhánh: Cấu trúc dùng để diễn đạt một việc sẽ được thực hiện khi một điều kiện cụ thể được thỏa mãn.

 Ý nghĩa của nó là thốt ra khỏi cấu trúc, vịng lặp chứa nó (khái niệm về vịng lặp sẽ được trình bày ở bài Goto)

 Ngồi break ra vẫn cịn lệnh nhảy khác như goto nhưng ít được sử dụng (chi tiết về lệnh goto sẽ được trình bày trong bài Goto).

 Vì trong cấu trúc switch. . . case chủ yếu chỉ sử dụng lệnh break nên mình cố tình để lệnh break vào trong cú pháp thay vì ghi chung chung là lệnh nhảy.

 <biểu thức> phải là biểu thức trả về kết quả kiểu:  Số nguyên (int, long, byte, . . .)

 Ký tự hoặc chuỗi (char, string)

8

</div><span class="text_page_counter">Trang 9</span><div class="page_container" data-page="9">

Kiểu liệt kê (enum)

 <giá trị thứ i> với i = 1...n là giá trị muốn so sánh với giá trị của <biểu thức>.  <câu lệnh thứ i> với i = 1...n là câu lệnh muốn thực hiện khi <giá trị thứ i> tương

ứng bằng với giá trị của <biểu thức>.

+ Ý nghĩa: Duyệt lần lượt từ trên xuống dưới và kiểm tra xem giá trị của <biểu thức> có bằng với <giá trị thứ i> đang xét hay khơng. Nếu bằng thì thực hiện <câu lệnh thứ i> tương ứng.

Lưu ý:

 <i><giá trị thứ i> phải có kiểu dữ liệu giống với kiểu dữ liệu của giá trị của biểuthức.</i>

 <i><câu lệnh thứ i> có thể gồm nhiều câu lệnh và không nhất thiết phải đặt trongcặp dấu ngoặc nhọn { } nhưng tốt hơn bạn nên đặt trong cặp dấu { } để code đượcrõ ràng hơn.</i>

 <i>Nếu case đang xét khơng rỗng (có lệnh để thực hiện) thì bắt buộc phải có lệnhnhảy (cụ thể là lệnh break) sau đó.</i>

* Cấu trúc switch case dạng đủ: + Cú pháp:

 switch, case, default là từ khóa bắt buộc.  <biểu thức> phải là biểu thức trả về kết quả kiểu:

 Số nguyên (int, long, byte, . . .)  Ký tự hoặc chuỗi (char, string)  Kiểu liệt kê (enum)

 <giá trị thứ i> với i = 1...n là giá trị muốn so sánh với giá trị của <biểu thức>.  <câu lệnh thứ i> với i = 1…n là câu lệnh muốn thực hiện khi <giá trị thứ i> tương

ứng bằng với giá trị của <biểu thức>.

 <câu lệnh mặc định> là câu lệnh sẽ được thực hiện nếu giá trị <biểu thức> không bằng với <giá trị thứ i> nào.

<i><b>+ Ý nghĩa: Duyệt lần lượt từ trên xuống dưới và kiểm tra xem giá trị của <biểu thức> có</b></i>

bằng với <giá trị thứ i> đang xét hay khơng. Nếu bằng thì thực hiện <câu lệnh thứ i> tương ứng. Nếu không bằng tất cả các <giá trị thứ i> thì sẽ thực hiện <câu lệnh mặc định>.

<i><b>1.2.3. Sự hoạt động của cấu trúc switch/case:</b></i>

Phần này ta sẽ nói rõ về sự hoạt động của switch/case, cũng như sẽ giải thích vì sao cần có các lệnh break, và nếu khơng có thì sao?

Nhưng trước tiên, hãy chạy thử đoạn mã sau và xem kết kết quả:

</div><span class="text_page_counter">Trang 10</span><div class="page_container" data-page="10">

Màn hình console in ra 3 dòng tương ứng với các trường hợp case 2, case 3 và default trong chương trình.

– Đầu tiên nói đến lệnh break, có chức năng là thốt khỏi khối lệnh hiện tại. Khi chương trình thực hiện lệnh break, những câu lệnh cịn lại phía sau (nếu có) sẽ bị bỏ qua. Lệnh break cũng có chức năng kết thúc một vịng lặp.

– Và cách thức hoạt động của cấu trúc switch/case như sau: Đầu tiên giá trị của biểu thức trong ngoặc sẽ được tính, sau đó lần lượt so sánh với giá trị trong các case:

• Nếu giá trị biểu thức khơng trùng với bất kì giá trị nào trong các case, chương trình sẽ thực hiện các lệnh trong phần default (nếu có) rồi kết thúc cấu trúc witch.

• Nếu giá trị biểu thức trùng với giá trị của case k nào đó, chương trình sẽ thực hiện tuần tự các lệnh bắt đầu từ case k trở đi cho đến hết khối lệnh switch, bao gồm cả các case phía sau case k và trường hợp default (nếu có).

=> Đó chính là lí do vì sao mà đoạn chương trình phía trên cho kết quả như thế, và vì vậy, muốn chương trình thốt khỏi lệnh switch sau khi thực hiện xong một trường hợp nào đó, ta cần có lệnh break ở cuối mỗi trường hợp. Riêng với đối trường hợp default, lệnh break có thể khơng cần phải viết vì nó đã là trường hợp cuối cùng, nên cũng khơng ảnh hưởng đến kết quả của chương trình.

<i><b>1.2.4. Một số lưu ý khi dùng switch/case:</b></i>

– Biểu thức sau switch phải là biểu thức có giá trị ngun, và ln luôn được đặt trong ngoặc.

– Tất cả các case và default phải cùng nằm trong một khối lệnh, giới hạn bởi cặp ngoặc nhọn.

– Giá trị trong các case phải là các hằng số nguyên khác nhau.

– Nếu các trường hợp khác nhau nhưng thực hiệnn cùg một lệnh thì có thể viết như sau:

</div><span class="text_page_counter">Trang 11</span><div class="page_container" data-page="11">

Với cấu trúc trên thì nếu biểu thức có giá trị n1, n2 hoặc n3 thì chương trình sẽ thực hiện lệnh A, tương tự nếu có giá trị n4 hoặc n5 sẽ thực hiện lệnh B.

<b>1.3. Loop (Cấu trúc Vòng lặp):</b>

<i><b>1.3.1. Giới thiệu Vịng lặp là gì?</b></i>

Một trong những điểm mạnh lớn nhất của máy tính là khả năng thực hiện một chuỗi các lệnh lặp đi lặp lại. Điều đó có được là do sử dụng các cấu trúc lặp trong ngơn ngữ lập trình.

Vịng lặp là một đoạn mã lệnh trong chương trình được thực hiện lặp đi lặp lại cho đến khi thỏa mãn một điều kiện nào đó. Vịng lặp là một khái niệm cơ bản trong lập trình cấu trúc. Ta sử dụng các tốn tử quan hệ và toán tử logic trong các biểu thức điều kiện để điều khiển sự thực hiện của vòng lặp. Có các vịng lặp: for, while, do-while,…

<i><b>1.3.2. Một số vấn đề:</b></i>

Hiện nay, có rất nhiều ngơn ngữ được sử dụng trong lập trình, có thể kể đến C++, Java, Python, C#, C, Haskell, Pascal,… Trong khuôn khổ báo cáo, chúng em xin đề cập những hiểu biết của mình về Vịng lặp trong ngơn ngữ lập trình Java, Python, C++ và C.

</div><span class="text_page_counter">Trang 12</span><div class="page_container" data-page="12">

for (khởi tạo giá trị cho biến điều khiển; biểu thức điều kiện; biểu thức thay đổi giá trị của biến điều khiển)

Cậu lệnh (các câu lệnh); }

- Trình tự hoạt động được diễn giảng như sau:

B1. Khởi tạo giá trị biến lặp, chỉ thực hiện 1 lần duy nhất B2. Kiểm tra điều kiện lặp, nếu điều kiện sai => Chuyển sang B5 B3. Thực hiện nội dung lặp ở trong thân vòng lặp

B4. Cập nhật giá trị biến lặp => Quay lại B2

<b> B5. Kết thúc vịng lặp, chương trình sẽ thốt ra khỏi vịng lặp for* Trong Python:</b>

+ Cú pháp:

Vòng lặp for được sử dụng để lặp một biến qua một dãy (List hoặc String) theo thứ tự mà chúng xuất hiện. Sau đây là cú pháp của vòng lặp for:

for bien_vong_lap in day_sequense: cac_lenh

Nếu một dãy day_sequense gồm một danh sách các biểu thức, nó được ước lượng đầu tiên. Sau đó, item đầu tiên trong dãy được gán cho biến vòng lặp bien_vong_lap. Tiếp theo, các khối lệnh cac_lenh được thực thi và khối lệnh này được thực thi tới khi dãy này đã được lặp xong.

+ Ví dụ:

for letter in 'Python': # Vi du dau tien print 'Chu cai hien tai:', letter qua = ['chuoi', 'tao', 'xoai'] for qua in qua: # Vi du thu hai print 'Ban co thich an:', qua print "Good bye!"

Khi code trên được thực thi sẽ cho kết quả: Chu cai hien tai: P

Chu cai hien tai: y Chu cai hien tai: t Chu cai hien tai: h Chu cai hien tai: o Chu cai hien tai: n Ban co thich an: chuoi Ban co thich an: tao

12

</div><span class="text_page_counter">Trang 13</span><div class="page_container" data-page="13">

Ban co thich an: xoai Good bye!

<b>* Trong C++:</b>

+ Cú pháp:

Vòng lặp for là một cấu trúc lặp được sử dụng nhiều nhất trong ngơn ngữ C++, nó hồn tồn có thể thay thế cho vòng lặp while. Lập trình viên thường sử dụng vòng lặp for khi biết trước<b> số </b>lần lặp của vòng lặp.

<b>for (init-statement; condition-expression; end-expression)</b>

<b> statements;</b>

Nguyên lý hoạt động của vòng lặp for gồm 3 bước thực thi:

<i>- init-statement: phần này có mục đích định nghĩa và khởi tạo biến, chỉ được thực thi</i>

1 lần duy nhất trong lần lặp đầu tiên.

- condition-expression: phần này gồm các biểu thức điều kiện, nếu biểu thức điều kiện đúng, các câu lệnh trong vòng lặp sẽ được thực thi.

<i>- end-expression: phần này thực thi cuối mỗi lần lặp, sau khi các câu lệnh trong vòng</i>

lặp for được thực thi. Phần này thường có mục đích tăng hoặc giảm giá trị các biến vòng lặp. Sau khi thực thi xong, vòng lặp quay lại kiểm tra điều kiện lặp ở bước 2.

</div><span class="text_page_counter">Trang 14</span><div class="page_container" data-page="14">

for (khoi_tao_bien; check_dieu_kien; tang/giam_bien) { // Khối lệnh được thực thi

public class ForSample1 {

public static void main(String[] args) {

System.out.print("Vòng lặp for với biến tăng: ");

for (int i = 1; i <= 5; i++) { System.out.print(i + " "); } // Hiển thị xuống dòng System.out.println(""); System.out.print("Vòng lặp for với biến giảm: "); for (int i =

Vòng lặp for với biến tăng: 1 2 3 4 5 Vòng lặp for với biến giảm: 5 4 3 2 1

<i><b>++ Vòng lặp for cải tiến:</b></i>

Vòng lặp for cải tiến được sử dụng để lặp mảng (array) hoặc tập hợp (collection) trong java. Bạn có thể sử dụng nó dễ dàng, dễ hơn cả vịng lặp for đơn giản. Bởi vì bạn khơng cần phải tăng hay giảm giá trị của biến rồi check điều kiện, bạn chỉ cần sử dụng ký hiệu

for (Type var: array) { // Khối lệnh được thực thi

</div><span class="text_page_counter">Trang 15</span><div class="page_container" data-page="15">

Nếu để điều kiện lặp là true hoặc không xác định thì vịng lặp for sẽ chạy đến vơ tận… đến khi stop chương trình đối với mỗi IDE (Eclipse, Netbean…) hoặc bấm Ctrl + C khi chạy bằng command hoặc đến khi hết bộ nhớ (StackOverflow).

public class ForSample3 {

public static void main(String[] args) { // for (int i = 1; true; i++) { for (int i = 1; ; i++) {

</div><span class="text_page_counter">Trang 16</span><div class="page_container" data-page="16">

Ở đây, cac_lenh có thể là lệnh đơn hoặc một khối các lệnh. dieu_kien có thể là bất kỳ biểu thức nào, và giá trị true là bất kỳ giá trị nào khác 0. Vòng lặp lặp đi lặp lại trong khi dieu_kien là true.

Khi điều kiện trở thành false, chương trình điều khiển ngay lập tức chuyển tới dòng lệnh ngay sau vòng lặp.

Sơ đồ:

Ở đây, điểm chính của vịng lặp while là nó có thể khơng chạy. Bởi vì khi kiểm tra điều kiện và kết quả là false, phần thân vòng lặp được bỏ qua và lệnh đầu tiên ngay sau vòng

</div><span class="text_page_counter">Trang 17</span><div class="page_container" data-page="17">

<b>* Trong Python:+ Cú pháp:</b>

While điều_kiện_kiểm_tra: Khối lệnh của while

Trong vòng lặp while, điều_kiện_kiểm_tra sẽ được kiểm tra đầu tiên. Khối lệnh của vòng lặp chỉ được nạp vào nếu điều_kiện_kiểm_tra là True. Sau một lần

lặp, điều_kiện_kiểm_tra sẽ được kiểm tra lại. Quá trình này sẽ tiếp tục cho đến khi điều_kiện_kiểm_tra là False. Trong Python mọi giá trị khác 0 đều là True, None và 0 được hiểu là False. Đặc điểm này của while có thể dẫn đến trường hợp là while có thể khơng chạy vì ngay lần lặp đầu tiên điều_kiện_kiểm_tra đã False. Khi đó, khối lệnh của while sẽ bị bỏ qua và phần code ngay sau đó sẽ được thực thi.

<i>Sơ đồ vòng lặp while trong Python</i>

Giống như hay vòng lặp for, khối lệnh của while cũng được xác định thông qua thụt lề.if Khối lệnh bắt đầu với thụt lề đầu tiên và kết thúc với dòng không thụt lề đầu tiên liền sau

Với đoạn code này, ta sẽ tăng dần count và in giá trị của nó cho đến khi giá trị này khơng cịn nhỏ hơn 8 nữa. Kết quả khi chạy lệnh trên ta có:

</div><span class="text_page_counter">Trang 18</span><div class="page_container" data-page="18">

<i><b>++ Vịng lặp while đơn giản:</b></i>

Vịng lặp while trong java được sử dụng để lặp một phần của chương trình một vài lần. Nếu số lần lặp khơng được xác định trước thì vịng lặp lặp while được khuyến khích sử dụng trong trường hợp này.

public class WhileSample1 {

public static void main(String[] args) {

Nếu bạn để điều kiện lặp là true thì vịng lặp while sẽ chạy đến vơ tận… Đến khi bạn stop chương trình đối với mỗi IDE (Eclipse, Netbean…) hoặc bấm Ctrl + C khi chạy bằng command hoặc đến khi hết bộ nhớ (StackOverflow).

+ Ví dụ:

18

</div><span class="text_page_counter">Trang 19</span><div class="page_container" data-page="19">

public class WhileSample2 {

public static void main(String[] args) {

Vòng l pặ do-while còn đượ ọc g i là vòng l p do trong C. Khồng giồống nh vòng l pặ ư ặ for và while, vòng l pặ này ki m tra điềồu ki n t i cuồối vòng l p. Điềồu này có nghĩa là vịng l p do-whileể ệ ạ ặ ặ seẽ được th c hi n ítự ệ nhấốt m t lấồn, ngay c khi điềồu ki n laộ ả ệ sai (false) lấồn ch y đấồu tiền. Cú pháp t ng quát c a vòngở ạ ổ ủ

S đồồ khồốiơ

Code: Do

19

</div><span class="text_page_counter">Trang 20</span><div class="page_container" data-page="20">

{ câu_lệnh }

while (điều_kiện);

- Cặp dấu ngoặc "{}" là không cần thiết khi chỉ có một câu lệnh hiện diện trong vòng lặp, nhưng việc sử dụng dấu ngoặc "{}" là một thói quen tốt. Vòng lặp do-while lặp đến khi điều_kiện mang giá trị false. Trong vòng lặp do-while, câu_lệnh (khối các câu lệnh) sẽ được thực thi trước, và sau đó điều_kiện được kiểm tra. Nếu điều_kiện là true, chương trình sẽ quay lại thực hiện lệnh do. Nếu điều kiện là false, chương trình chuyển đến thực hiện lệnh nằm sau vòng lặp. Tương tự như vòng lặp for, các vịng lặp while và do-while cũng có thể lồng vào nhau.

<b>* Trong C++:</b>

Khơng giống như các vịng lặp for và while, mà kiểm tra điều kiện vòng lặp ở ngay bước đầu tiên của vòng lặp, vòng lặp do…while trong Ngôn ngữ C++ kiểm tra điều kiện của nó tại phần cuối của vịng lặp.

Một vịng lặp do…while là tương tự như vòng lặp while, ngoại trừ ở điểm một vòng lặp do…while bảo đảm thực hiện vòng lặp ít nhất một lần.

+ Cú pháp:

Cú pháp của một vịng lặp do…while trong Ngơn ngữ chương trình C++ là: do {cac_lenh;}

while(dieu_kien);

Bạn chú ý rằng, biểu thức điều kiện xuất hiện ở cuối cùng của vịng lặp, vì thế các lệnh trong vòng lặp thực hiện một lần trước khi điều kiện được kiểm tra.

Nếu điều kiện là true, dòng điều khiển vòng lặp quay trở lại, và các lệnh trong vòng lặp được thực hiện lần nữa. Tiến trình này lặp đi lặp lại tới khi nào điều kiện đã cho trở thành

</div><span class="text_page_counter">Trang 21</span><div class="page_container" data-page="21">

<i>++ Vòng lặp do-while đơn giản:</i>

Vòng lặp do-while trong java được sử dụng để lặp một phần của chương trình một vài lần. Tương tự như vòng lặp while, ngoại trừ do-while thực hiện lệnh ít nhất một lần<b> ngay</b>

cả khi điều kiện là false.

+ Cú pháp:

1 do {

21

</div><span class="text_page_counter">Trang 22</span><div class="page_container" data-page="22">

public class DoWhileSample1 { public static void main(String[] args) {

Nếu bạn để điều kiện lặp là true thì vịng lặp do-while sẽ chạy đến vơ tận… Đến khi bạn stop chương trình đối với mỗi IDE (Eclipse, Netbean…) hoặc bấm Ctrl + C khi chạy

public class DoWhileSample2 { public static void main(String[] args) {

</div>

×