Cấu trúc tuần tự trong thuật toán là gì

Các cấu trúc logic trong lập trình 1 Cấu trúc tuần tự (Sequence) 1.1 Những câu lệnh phải được sắp xếp theo thứ tự Một số hướng dẫn cho việc tổ chức câu lệnh: 1-Sắp xếp câu lệnh sao cho sự phụ thuộc lẫn nhau giữa chúng là rõ ràng 2-Đặt tên các hàm để thể hiện rõ sự phụ thuộc 3-Sử dụng các hàm và biến thành phần làm rõ sự phụ thuộc lẫn nhau. 4-Kiểm tra sự phụ thuộc bằng assertions hoặc error-handling code 1.2 Các câu lệnh mà thứ tự sắp xếp không quan trọng Trong 1 vài trường hợp bạn sẽ gặp 1 số đoạn code hoặc 1 vài câu lệnh mà thứ tự sắp xếp chung ko quan trọng lắm.nhưng chúng lại ảnh hưởng đến khả năng đọc, performance, và khả năng maintain sau này.khi đó bạn nên sử dụng những yếu tố phụ để sắp xếp đoạn code của mình. Có 2 cách : Làm code từ trên xuống dưới.

Show

Hình B là tốt hơn.nó được tổ chức theo hướng địa phương hóa.quan trọng hơn là, nhìn vào nó (B) ta có thể phân chia các hàm cho marketing, Sales, Travel data được.điều này code (A) không làm được. Nhóm các câu lệnh có liên quan Đưa các câu lệnh có liên quan lại với nhau.chúng là những câu lênh giống nhau về nhiêm vụ,sử dụng dữ liệu giống nhau hay phụ thuộc vào nhau. Nếu câu lệnh được tổ chức tốt, nó sẽ có hình giống như 14.1 ở đó, các khối lệnh ko bị đè lên nhau ngược lại với hình 14.2 kia. Keypoint: 1. Nguyên tắc mạnh mẽ nhất để tổ chức code theo đường thẳng đó là dựa trên sự phụ thuộc. 2. Sự phụ thuộc nên được làm rõ bằng cách sử dụng các tên hàm, danh sách biến, comment hợp lý. 3. Nếu đoạn code không phụ cần sự sắp xếp phụ thuộc vào nhau thì hãy cố gắng giữ cho những câu lệnh liên quan đến nhau ở càng gần nhau càng tốt 2 Cấu trúc điều kiện 2.1 Cấu trúc IF-ELSE IF-ELSE thông thường

Viết những trường hợp thông thường trước. Chắc chắn rằng bạn sử dụng chính xác các phép đẳng thức > < >= <= Các câu lệnh trong mệnh đề IF phải rõ ràng & đủ ý. Không nên để câu lệnh sau IF rỗng if ( SomeTest ) ; else { // do something... Nên viết ELSE kể cả khi bạn không xét đến, để chứng tỏ rằng bạn có xét đến trường hợp này // if color is valid if ( COLOR_MIN <= color && color <= COLOR_MAX ) { // do something... else { // else color is invalid // screen not written to --- safely ignore command Cấu trúc IF_ELSE_IF... (nhiều điều kiện) Cố gắng đơn giản hóa các test với việc sử dụng hàm Boolean trả về đúng sai, để tăng tính rõ ràng Ví dụ if ( IsPunctuation( inputcharacter ) ) { charactertype = CharacterType_Punctuation; else if ( IsDigit( inputcharacter ) ) { charactertype = CharacterType_Digit; else if ( IsLetter( inputcharacter ) ) { charactertype = CharacterType_Letter;

Đưa các trường hợp thông thường lên đầu. Chắc chắn rằng bạn đã xét hết các trường hợp (nên có else ở cuối cùng). Ví dụ: ta nên sửa trường hợp trên như sau if ( IsLetter( inputcharacter ) ) { charactertype = CharacterType_Letter; else if ( IsDigit( inputcharacter ) ) { charactertype = CharacterType_Digit; else if ( IsPunctuation( inputcharacter ) ) { charactertype = CharacterType_Punctuation; else { DisplayInternalError( "Unexpected type of character detected." ); Khi IF_ELSE_IF... quá nhiều trường hợp, nên thay thế bằng cấu trúc Switch-Case (xem bên dưới) 2.2 Cấu trúc SWITCH-CASE Cách sắp xếp các CASE hiệu quả nhất: Sắp xếp theo bảng chữ cái (a,b,c) hoặc theo số lượng (numerically) Xét các trường hợp thông thường trước. Sắp xếp theo tần số sử dụng, xuất hiện Các Tips khi sử dụng câu lênh CASE: Giữ cho code trong mỗi CASE thật đơn giản dễ hiểu. Nếu nhiều code nên thay thế bằng một lời gọi hàm. Sử dụng mệnh đề DEFAULT để xét trường hợp không rơi vào CASE nào bên trên Trong C++.JAVA, nhớ cho break vào mỗi case tránh việc để các câu lệnh trôi tuột từ trên xuống dưới. 3 Các cấu trúc lặp (LOOP) 3.1 Chọn loại vòng lặp Trong hầu hết các ngôn ngữ, có thể chia thành một số loại vòng lặp như sau: Vòng lặp đếm được: khi số lần lặp được xác định trước (ví dụ: for)

for(i = 1; i<= 10; i++){ Vòng lặp for được dùng phổ biến khi ta biết rõ số lần lặp, ví dụ: in các số từ 1-->n, chạy qua các chỉ số của 1 mảng Vòng lặp điều kiện: lặp dựa trên điều kiện và thường không biết trước số lần lặp (ví dụ While, Do-While) while(hasmoreelement()){ Vòng lặp vô hạn Vòng lặp Foreach: duyệt các phần tử của một tập hợp Tham khảo bảng dưới đây về các vòng lặp phổ biến Language Kind of Loop Flexibility Test Location Visual Basic For-Next rigid beginning While-Wend flexible beginning Do-Loop-While flexible beginning or end For-Each rigid beginning C, C++, C#, Java for flexible beginning while flexible beginning do-while flexible end foreach [*] rigid beginning Không có loại vòng lặp nào là vô địch, mỗi loại vòng lặp có ưu nhược điểm khác nhau và nhiệm vụ của bạn là chọn ra loại vòng lặp phù hợp nhất với hoàn cảnh cụ thể của mình. 3.2 Kiểm soát vòng lặp (controlling loops) 3.2.1 Bắt đầu 1 vòng lặp (entering loop): Chỉ nên bắt đầu 1 vòng lặp từ 1 vị trí nhất định, tránh dùng goto để đột ngột nhảy vào giữa 1 vòng lặp từ nhiều vị trí khác nhau. Nếu bên trong vòng lặp của bạn cần sử dụng 1 biến bên ngoài thì hãy đặt đoạn code khai báo và khởi tạo biến đó ngay phía trên vòng lặp của bạn.

Sử dụng While(true) cho vòng lặp vô hạn Không nên sử dụng For nếu While (hoặc Do-While) thích hợp hơn Bad: // read all the records from a file recordcount = 0; for ( inputfile.movetostart();!inputfile.endoffile(); inputfile.getrecord() ) { recordcount++; Good: // read all the records from a file inputfile.movetostart(); recordcount = 0; while (!inputfile.endoffile() ) { inputfile.getrecord(); recordcount++; 3.2.2 Xử lý bên trong vòng lặp: Hãy bao đóng các câu lệnh trong thân vòng lặp bởi { Nên tránh các vòng lặp rỗng ruột. Nếu như vì 1 lý do nào đó mà bạn không thể tránh được thì hãy đặt thêm vào cái ruột rỗng đó 1 đoạn comment kiểu như: // Do nothing Bad: Good: while ( ( inputchar = datafile.getchar() )!= CharType_Eof ) { ; do { inputchar = datafile.getchar(); while ( inputchar!= CharType_Eof ); Mỗi vòng lặp chỉ nên xử lý 1 tác vụ, và xử lý tốt tác vụ đó. Không nên cho 1 vòng lặp làm nhiều việc chỉ vì bạn muốn tiết kiệm công viết code. Cái giá phải trả sẽ là công sức bạn bỏ ra để bảo trì sau này.

3.2.3 Thoát khỏi vòng lặp (Normal exit): Không nên thay đổi giá trị biến index của vòng lặp for ở bên trong vòng lặp. Điều này dễ dẫn đến việc mất kiểm soát vòng lặp. Không nên tái sử dụng biến index của vòng lặp for. Nên sử dụng break thay cho boolean flag Không nên dùng quá nhiều break và đặc biệt chú ý đến break trong Switch-Case nằm trong vòng lặp 3.2.4 Độ dài của 1 vòng lặp: Không quá 1 trang màn hình Nếu bị quá 1 trang màn hình thì nên cho phần thân của vòng lặp vào 1 hàm riêng biệt. Các vòng lặp không nên lồng nhau (nest) quá 3 cấp. Tài liệu tham khảo: Code Complete, Second Edition, Steve McConnell Nội dung: Cù Đức Hiếu, Lê Huy Hoàng Biên tập: Nguyễn Ngọc Anh

<span class='text_page_counter'>(1)</span><div class='page_container' data-page=1>

<b>ễ NGOC ANH</b>



G

<sub>iáo viên thực hiện:</sub>


</div>

<span class='text_page_counter'>(2)</span><div class='page_container' data-page=2>

Câu 1: Hằng là gì? Biến là gì? Cho VD?



<b>KiĨm tra bµi cị</b>


</div>

<span class='text_page_counter'>(3)</span><div class='page_container' data-page=3>

<b>CHỦ ĐỀ 5</b>


</div>

<span class='text_page_counter'>(4)</span><div class='page_container' data-page=4>

<b>4</b>



<b>1. Thế nào là cấu trúc tuần tự?</b>


<b>2. Thao tác nhập</b>



<b>3. Xử lý, câu lệnh gán</b>


<b>4. Thao tác xuất</b>



<b>CHỦ ĐỀ 5</b>



<b>CẤU TRÚC TUẦN TỰ </b>



<b>CHỦ ĐỀ 5</b>


</div>

<span class='text_page_counter'>(5)</span><div class='page_container' data-page=5>

<b>KHỞI ĐỘNG</b>


INPUT: ………


OUTPUT: ………... 


<b>(3</b>


<b>)</b>


<b>(2</b>


<b>)</b>







<b>thực hiện</b>

<b>Bộ thử 1</b>

<b>Bộ thử 2</b>

<b>Bộ thử 3</b>


<b>Lệnh (1)</b>

NS=2005

NS=2000

NS=………



<b>Lệnh (2)</b>

Tuoi=2017 - 2005

……..………

………..….



<b>Lệnh (3)</b>

12 tuổi

…………..………

……….……….



<b> NS</b>


<b>Tuoi</b>


<b> </b>


<b>Tuoi=2017-2000</b>


<b>17</b>


<b>1997</b>


<b></b>


<b>Tuoi=2017-1997</b>


<b>20</b>



<b>Bài tốn: Viết chương trình nhập vào năm sinh, xuất ra màn hình số tuổi, mốc tính là năm </b>



2017.


</div>

<span class='text_page_counter'>(6)</span><div class='page_container' data-page=6>

Cấu trúc tuần tự của khối lệnh ở phần thân trong chương trình


này là:



<b>Nhập  Xử Lý Xuất </b>


<b>Chương </b>




<b>trình</b>

<b>Kết quả</b>



<i><b>Chương trình Pascal cho phép:</b></i>


Xuất kết quảNhập dữ liệu


Xử lý <sub>Tính tuổi</sub>Thơng báo và nhập năm sinh


In tuổi ra màn hình


<b>1. Thế nào là cấu trúc tuần tự?</b>


</div><span class='text_page_counter'>(7)</span><div class='page_container' data-page=7></div>

<span class='text_page_counter'>(8)</span><div class='page_container' data-page=8>

<b>read/ readln (<biến 1> [, <biến 2>, ..., </b>


<b><biến n>]);</b>




<b>Cú pháp:</b>



<b>CHỦ ĐỀ 5: </b>

<b>CẤU TRÚC TUẦN TỰ</b>



<b>2. Thao tác nhập.</b>


</div>

<span class='text_page_counter'>(9)</span><div class='page_container' data-page=9>

<b>CHỦ ĐỀ 5: </b>

<b>CẤU TRÚC TUẦN TỰ</b>



</div>

<span class='text_page_counter'>(10)</span><div class='page_container' data-page=10>

<b>4. Chương trình in số nguyên </b>



<b>Sơ đồ khối</b>


<i>{Trường hợp 1:}</i>


Nhap so nguyen: 95


<i>{Kết quả:}</i>


Chu so hang chuc la: …Chu so hang don vi la: …


<i>{Trường hợp 2:}</i>


Nhap so nguyen: 28


<i>{Kết quả:}</i>


Chu so hang chuc la: …Chu so hang don vi la: …


<i>Em hãy chạy </i><i>chương trình </i>


<i>rồi ghi kết </i><i>quả</i><b>Chương trình</b>……………….……………

Bắt đầu


so



so div 10


so mod 10


a, b


9


5


2


8


Kết thúc


</div>

<span class='text_page_counter'>(11)</span><div class='page_container' data-page=11>

<b>HƯỚNG DẪN VỀ NHÀ</b>



-

<i><b><sub>Học bài, xem lại nội dung bài vừa học. </sub></b></i>


-

<i><b><sub> Xem trước nội dung còn lại của bài.</sub></b></i>


</div><span class='text_page_counter'>(12)</span><div class='page_container' data-page=12></div><!--links-->