1. Trang chủ
  2. » Công Nghệ Thông Tin

slide bài giảng giải thuật mã giả lưu đồ mã giả

86 1,8K 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 86
Dung lượng 1,84 MB

Nội dung

khái niệm về giả thuật mã giả và lưu đồ mã giả,phát triển giải thuật ,cấu trúc chương trình,mã giả và lưu đồ là những kiến thức mà chúng tôi sẽ cung cấp cho các bạn trong slide bài giang này .hi vọng những kiến thức này sẽ hữu ích đối với các bạn trong học tập và nghiên cứu

Trang 1

Nhập Môn Lập Trình

Giải Thuật – Mã Giả – Lưu Đồ Giải Thuật

Cấu trúc If … Else, Switch

Trang 2

Road Map

 Giải thuật

 Các bước lập trình giải quyết vấn đề

 Giải thuật là gì?

 Đặc tính của giải thuật

 Phát triển giải thuật

 Phát triển từ trên xuống (Top-down development)

 Từng bước tinh chế (step-wise refinement)

 Cấu trúc chương trình

 Mã giả và lưu đồ

 Mã giả (Pseudo Code)

Trang 4

Các bước lập trình giải quyết vấn đề

 Chúng ta thường gặp phải những bài toán cần giải quyết

 Để giải quyết những bài toán đó, chúng ta cần tìm hiểu chúng trước rồi sau đó mới hoạch định các bước cần làm

 Giả sử chúng ta muốn đi từ phòng học F103 đến căn tin Ðể

thực hiện việc này chúng ta cần hiểu nó rồi tìm ra các bước

giải quyết trước khi thực thi các bước đó:

 BƯỚC 1 : Rời phòng

 BƯỚC 2 : Ðến cầu thang

 BƯỚC 3 : Xuống cầu thang

 BƯỚC 4 : Ði tiếp đến căn tin

Trang 5

Các bước lập trình giải quyết vấn đề

 Thủ tục trên liệt kê tập hợp các bước thực hiện được xác định

rõ ràng cho việc giải quyết vấn đề

 Một tập hợp các bước như vậy gọi là giải thuật

Trang 6

Giải thuật là gì?

 Giải thuật hay thuật toán là một chuổi hữu hạn các bước cụ thể

rõ ràng cần thiết để giải quyết bài toán nhất định

 Một tập hợp có trình tự của các bước rõ ràng thực thi được

dùng diễn giải một quy trình có kết cục

 Trong ngữ cảnh lập trình, thuật toán là một chuỗi các câu lệnh được thiết kế theo quy cách mà nếu các câu lệnh được thực hiện theo một trình tự quy định, kết quả mong muốn sẽ đạt được

 Các câu lệnh cần phải được cụ thể và rõ ràng

 Kết quả phải được thu sau một số hữu hạn các bước thực thi

 Một thuật toán phải có kết cục và không có một hoặc nhiều câu lệnh được lập lại một cách vô hạn

Trang 7

Giải thuật là gì?

Ví dụ 1: giải thuật tính tổng hai số

 Bước 1: Bắt đầu

 Bước 2: Đọc hai số A và B

 Bước 3: Cộng A và B, lưu kết quả vào C

 Bước 4: Hiện thị kết quả C

 Bước 5: Kết thúc

Trang 8

Giải thuật là gì?

Ví dụ 2: hướng dẫn làm bánh flan

Nguyên liệu: 05 hột gà, 01 hộp sữa đặc, 200gr đường cát, 01 ống vani, 03 chén sữa tươi, 1,5 lon sữa bò nước đun sôi để nguội, 20 khuôn nhựa có nắp đậy

Trang 9

Giải thuật là gì?

 100gr đường còn lại cho vào nồi thắng hơi vàng Cho vào 01 muỗng nước khuấy đều nhấc xuống để hơi nguội, chia đều nước đường vừa thắng ra 20 khuôn nhựa đã chuẩn bị sẵn

 Cuối cùng cho hỗn hợp trứng sữa vào đều khuôn, đậy nắp lại

 Cho bánh vào hấp cách thủy, đun lửa vừa để bánh mịn màng không bị rỗ

 Trong lúc hấp bánh khoảng 10 phút mở nắp nồi hấp bánh 1 lần, hấp khoảng 15 – 20 phút là chín bánh

 Đem ra để nguội, cho vào tủ lạnh hoặc ủ trong đá ăn mới ngon

Trang 10

Giải thuật là gì?

So sánh hai ví dụ:

 Các câu lệnh trong ví dụ 1 cụ thể và rõ ràng → kết quả không

 Một số bước hướng dẫn trong ví dụ 2 không cụ thể, còn mơ hồ

phụ thuộc vào người thực hiện kết quả đạt được có thể:

Trang 11

Đặc tính của giải thuật

Để hội đủ điều kiện là thuật toán, một chuỗi các câu lệnh cần có các đặc điểm sau:

 Các bước sử dụng trong thuật toán phải được rõ ràng và xác định chính xác

 Mỗi câu lệnh được xây dựng sao cho nó có thể được thực hiện trong một thời gian hữu hạn

 Tránh trường hợp không chắc chắn thực thi câu lệnh nào kế tiếp

 Số bước trong thuật toán nên hữu hạn và thuật toán cần phải được chấm dứt,

có nghĩa là, nó không được có kết thúc mở

 Việc thi hành của thuật toán được kết thúc sau một số hữu hạn các bước

 Sau khi thực hiện các câu lệnh, tức là sau khi kết thúc thuật toán, sẽ có được kết quả mong muốn

 Thuật toán cần được tổng quát đủ để đối phó với mọi tình huống

Trang 12

Road Map

 Giải thuật

 Các bước lập trình giải quyết vấn đề

 Giải thuật là gì?

 Đặc tính của giải thuật

 Phát triển giải thuật

Trang 13

Phát triển top-down

Top-down là một phương pháp trong đó giải pháp cho một

vấn đề tính toán lớn được phát triển từ một lời giải tổng quát

mơ hồ đến một thuật toán xác định chính xác

 Phát triển bằng cách này đưa đến một phương pháp để xử lý

sự phức tạp của vấn đề bằng cách xé nhỏ chúng thành các đun dễ dàng và dễ hiểu hơn

mô- Quá trình liên tục xé nhỏ một nhiệm vụ xuống thành các

nhiệm vụ con sẽ được tiếp tục cho đến khi các nhiệm vụ con này có thể dễ dàng thực hiện

Trang 15

Phát triển top-down (tt)

 Phương pháp topdown về bản chất là xé nhỏ một hệ thống để

có được cái nhìn sâu sắc về thành phần của tiểu hệ thống

 Trong phương pháp topdown, được hình thành trước nhất là cái nhìn tổng quan của hệ thống Nó được quy định cụ thể

nhưng không chứa bất kỳ chi tiết của hệ thống phụ cấp một

 Đôi lúc cần phần cấp xuống nhiều mức độ, cho đến khi toàn

bộ các chi tiết kỹ thuật (specification) được chi tiết hóa đến mức cơ bản nhất

Trang 16

Stepwise refinement

 Là một kỹ thuật nhằm phân rã một hệ thống từ chi tiết kỹ thuật mức độ cao thành các thành phần cơ bản

 Phân rã một vấn đề phức tạp thành một số bước đơn giản

 Mỗi bước này có thể được giải quyết bằng một thuật toán nhỏ hơn và đơn giản hơn so với bài toán tổng thể cần giải quyết

 Dễ dàng xây dựng hơn và phác thảo chi tiết hơn

 Thuật toán phụ có thể được chia thành nhiều phần nhỏ hơn

 Thuật toán tiếp tục được cải tiến theo cách phân rã này này

cho đến khi mỗi bước có đầy đủ chi tiết

 Cải tiến có nghĩa là thay thế các bước hiện tại / câu lệnh với một phiên bản mới đầy chi tiết hơn

Trang 19

Stepwise refinement (tt)

3 Chế nước sôi vào bình

4 Chờ 5 phút (cho ra trà)

5 Rót trà vào tách

1 Rót trà từ bình vào tách cho đến khi tách đầy

 5 bước ban đầu đã được cải tiến thành chuổi các bước phụ chi

tiết hơn (bước 4 không cần thiết)

 Một vài bước phụ có thể cải tiến thêm nữa Ví dụ như:

Trang 20

Stepwise refinement (tt)

Cải tiến lần hai

2 Đun nước

1 Đổ nước vào ấm nước điện

1 Đặt ấm nước dưới vòi nước

2 Mở vòi nước

3 Chờ đến khi ấm nước đầy

4 Tắt vòi nước

 Các bước phụ khác có thể cải tiến thêm nữa

 Chương trình sẽ được xây dựng bằng cách thông dịch từng

bước (đã được cải tiến cuối cùng) sang câu lệnh của ngôn ngữ lập trình

Trang 21

Stepwise refinement (tt)

1 Bỏ trà vào bình 1.1 Mở hộp trà 1.1.1 Lấy hộp trà từ ngăn tủ

1.1.2 Tháo nắp hộp trà 1.2 Xúc đầy 1 muỗng lá trà

1.3 Bỏ trà vào bình 1.4 Đóng nắp hộp trà 1.4.1 Đặt nắp lên hộp trà

1.4.2 Đặt hộp trà về ngăn tủ

2 Đun nước 2.1 Đổ nước vào ấm nước điện 2.1.1 Đặt ấm nước dưới vòi

nước 2.1.2 Mở vòi nước 2.1.3 Chờ đến khi ấm nước đầy

Trang 22

Stepwise refinement (tt)

2.1.4 Tắt vòi nước 2.2 Bật công tắc ấm nước

2.3 Chờ nước sôi 2.3.1 Chờ đến khi ấm nước

kêu 2.4 Tắt công tắc ấm nước

Trang 23

Road Map

 Giải thuật

 Các bước lập trình giải quyết vấn đề

 Giải thuật là gì?

 Đặc tính của giải thuật

 Phát triển giải thuật

Trang 24

Cấu trúc chương trình

 Một chương trình như Microsoft Windows nhìn bề ngoài không

có gì chung với một video game như World of Warcraft

 Tuy nhiên, cho dù mục đích có khác nhau, mọi chương trình đều bao gồm các câu lệnh (dòng mã) “biểu” các máy tính phải làm gì, theo từng bước

 Trong mỗi chương trình, các câu lệnh tổ chức theo ba cách: tuần

tự, phân nhánh, hoặc vòng lặp

 Bằng cách kết hợp chúng với nhau, bạn có thể viết bất cứ loại

chương trình

Trang 25

Cấu trúc tuần tự

 Các câu lệnh nối tiếp nhau, từ câu

lệnh đầu tiên ở trên cùng đến câu

lệnh cuối cùng ở phía dưới

 Mỗi chương trình tổ chức hầu hết các

câu lệnh của nó theo tuần tự

 Ít có chương trình tổ chức tất cả các

câu lệnh của chúng theo tuần tự

 Lý do là nếu một chương trình tổ

chức tất cả các câu lệnh của nó theo

tuần tự, chương trình có thể chạy qua

câu lệnh của nó đúng một lần trước

Bắt đầu Câu lệnh 1 Câu lệnh 2 Câu lệnh 3 Câu lệnh 4

Trang 26

Cấu trúc phân nhánh

 Để thực hiện các chương trình hữu ích

hơn và có tính tương tác, chúng cần phải

chấp nhận và phản ứng với dữ liệu bên

ngoài.

 Phân nhánh giúp máy tính chạy các câu

lệnh khác nhau tùy thuộc vào giá trị của

dữ liệu nhất định

 Khi bạn xóa một tập tin, chương trình hỏi:

Bạn có thực sự muốn xóa các tập tin?

Nếu bạn nhấn nút Yes, chương trình theo

hướng dẫn để xóa các tập tin Nếu bạn

nhấp vào nút No, chương trình này sẽ thực

hiện cậu lệnh khác

Bắt đầu

Kết thúc

Tập tin không bị xóa

Xóa tập tin?

Xóa tập tin

Trang 27

Cấu trúc vòng lặp

 Để giữ cho một chương trình chạy

cho đến khi bạn muốn nó dừng lại,

bạn cần sử dụng chỉ dẫn vòng lặp

 Các câu lệnh vòng lặp làm cho máy

tính lặp lại một hoặc nhiều hướng

dẫn

 Bên cạnh việc giữ một chương trình

chạy cho đến khi người dùng muốn

ngưng, Các câu lệnh vòng lặp giúp

bạn tránh phải nhập các câu lệnh gần

như nhau nhiều lần

Kết thúc

Bắt đầu Câu lệnh 1 Câu lệnh 2 Câu lệnh 3 Câu lệnh 4

Trang 29

Road Map

 Giải thuật

 Các bước lập trình giải quyết vấn đề

 Giải thuật là gì?

 Đặc tính của giải thuật

 Phát triển giải thuật

 Phát triển từ trên xuống (Top-down development)

 Từng bước cải tiến (step-wise refinement)

 Cấu trúc chương trình

 Mã giả và lưu đồ

 Mã giả (Pseudo Code)

 Lưu đồ (Flowchart)

Trang 30

Mã giả và lưu đồ

 Hầu hết các ký hiệu được dùng rộng rãi để phát triển thuật

toán là sơ đồ (flow chart) và mã giả (pseudo code)

 Chúng độc lập với các ngôn ngữ lập trình được sử dụng để

thực hiện các thuật toán

 Cả hai phương pháp này đều dùng để xác định một tập hợp các bước cần được thi hành để có được lời giải bài toán

 Mã giả và lưu đồ chỉ đưa ra những bước cần làm

 Lập trình viên phải viết mã cho việc thực thi những bước này qua việc dùng một ngôn ngữ nào đó

Trang 31

Mã giả

 Mã giả không phải là mã thật

 Mã giả sử dụng một tập hợp những từ tương tự như mã thật nhưng nó không thể được biên dịch và thực thi như mã thật

 Ví dụ hiển thị câu 'Hello World!'

BEGINDISPLAY 'Hello World!'END

 Mỗi đoạn mã giả phải bắt đầu với từ BEGIN hoặc START, và kết thúc với từ END hay STOP

 Ðể hiển thị giá trị nào đó, từ DISPLAY hoặc WRITE được

dùng

Trang 32

Mã giả

 Khi giá trị được hiển thị là một giá trị hằng (không đổi), trong trường hợp này là (Hello World), nó được đặt bên trong dấu nháy

 Tương tự, để nhận một giá trị của người dùng, từ INPUT hay READ được dùng

 Ví dụ tính tổng hai số

BEGIN

INPUT A, BDISPLAY A + BEND

Trang 33

Mã giả

 Trong đoạn mã giả này, người dùng nhập vào hai giá trị, hai giá trị này được lưu trong bộ nhớ và có thể được truy xuất như

là A và B theo thứ tự

 Những vị trí được đặt tên như vậy trong bộ nhớ gọi là biến

 Bước kế tiếp trong đoạn mã giả sẽ hiển thị tổng của hai giá trị trong biến A và B

 Để lưu tổng của hai biến trong một biến thứ ba rồi hiển thị giá trị biến này như trong ví dụ sau đây

Trang 34

Mã giả

BEGIN

INPUT A, B

C = A + B DISPLAY C

END

 Một tập hợp những chỉ thị hay các bước trong mã giả thì được gọi chung là một cấu trúc

 Có ba loại cấu trúc : tuần tự, chọn lựa và lặp lại

 Trong đoạn mã giả ta viết ở trên, chúng ta dùng cấu trúc tuần tự

 Chúng được gọi như vậy vì những chỉ thị được thi hành tuần tự, cái này sau cái khác và bắt đầu từ điểm đầu tiên

 Hai loại cấu trúc còn lại sẽ được đề cập trong những chương sau

Trang 35

Lưu đồ

 Là một hình ảnh minh hoạ cho giải thuật

 Vẽ ra biểu đồ của luồng chỉ thị hay những hoạt động trong một tiến trình

 Mỗi hoạt động như vậy được biểu diễn qua những ký hiệu

 Ví dụ: hiển thị câu 'Hello World!'

S TA RT DIS P L AY 'H ell o W o rld !'

STO P

Trang 36

Lưu đồ

 Giống với đoạn mã giả là cùng bắt đầu với từ BEGIN hoặc

START, và kết thúc với từ END hay STOP

 Từ khóa DISPLAY hay PRINT được dùng để hiển thị giá trị nào đó đến người dùng

 Tuy nhiên, ở đây, mọi từ khóa thì nằm trong những ký hiệu

 Những ký hiệu khác nhau mang một ý nghĩa tương ứng được trình bày ở bảng sau:

Trang 37

Lưu đồ

Ký hiệu trong lưu đồ

Trang 39

Lưu đồ

Vài điểm cần thiết khác phải chú ý khi vẽ một lưu đồ :

 Lúc đầu chỉ tập trung vào khía cạnh logic của bài toán và vẽ các luồng xử lý chính của lưu đồ

 Một lưu đồ có duy nhất một điểm bắt đầu (START) và một

điểm kết thúc (STOP)

 Không cần thiết phải mô tả từng bước của chương trình trong lưu đồ mà chỉ cần các bước chính và có ý nghĩa cần thiết

Trang 40

Ưu điểm của mã giả trên lưu đồ

Mã giả được ưu chuộng hơn lưu đồ như một công cụ phát triển logic vì lý do sau đây:

 Mã giả ít cồng kềnh và ít tốn thời gian để phát triển vì không

có hộp hoặc ký hiệu cần phải vẽ ra như trong lưu đồ

 Dễ dàng hơn để thay đổi vì khi chèn một biểu tượng trong lưu

đồ đòi hỏi toàn bộ sơ đồ được vẽ lại

 Do ngôn ngữ viết và các quy tắc cú pháp như tiếng Anh, mã giả khá giống với ngôn ngữ lập trình cao cấp và do đó mã lệnh được viết dễ dàng hơn cũng như dễ dịch sang ngôn ngữ lập trình cao cấp

 Mã giả dễ dàng đọc và dễ hiểu

Trang 41

Lưu đồ, Mã giả: toán tử

Toán tử gán (assignment): = hay ←

 Biến = giá_trị (có thể là hằng số hay biến)

 Diem = 10 (gán giá trị 10 vào biến Diem)

 Diem ← 10 (gán giá trị 10 vào biến Diem)

 A = B (gán giá trị của biến B cho biến A)

Biểu thức số học (arithmetic expression)

Trang 42

Lưu đồ, Mã giả : toán tử

Toán tử quan hệ (relational operator):

 Kiểm tra mối quan hệ giữa hai biến, hay giữa một biến và một hằng

Trang 43

Lưu đồ, Mã giả : toán tử

Toán tử luận lý (Logical Operators):

 kết hợp hay phủ định biểu thức có chứa các toán tử quan hệ

khi chỉ một trong hai

toán hạng đều true

NOT Chuyển đổi giá trị

của toán hạng duy

nhất từ true thành

false và ngược lại.

Trang 44

Lưu đồ, Mã giả : cấu trúc tuần tự

 Ví dụ: Viết một đoạn mã giả và vẽ một lưu đồ để nhập một

giá trị là độ 0F (Fahrenheit) và chuyển nó sang độ 0C (Celsius) [Hướng dẫn: C = 5(F-32)/9]

BEGIN

C = 0INPUT F

C = 5 * ( F – 32) / 9DISPLAY C

END

Trang 45

Lưu đồ, Mã giả : cấu trúc tuần tự

Trang 46

Lưu đồ, Mã giả : cấu trúc tuần tự

/* chuyển nhiệt độ 0F (Fahrenheit) sang độ 0C */

Trang 48

Bài tập nhóm – Bài Giải

A = B

B = C Display A,B STOP

Trang 49

Bài tập nhóm – Bài Giải

/* Hoan doi gia tri hai bien */

#include <stdio.h>

#include <conio.h>

void main() { int A, B, C printf(“Nhap so thu nhat: ”); /* Nhap A, B */

scanf(“%d”,&A);

printf(“Nhap so thu hai: ”);

scanf(“%d”,&B);

printf(“Gia tri truoc khi hoan doi A = %d, B= %d\n”,A,B);

C = A; /* Hoan doi gia tri */

Trang 51

 Một cấu trúc ‘IF’ bắt đầu là IF theo sau là điều kiện

 Nếu điều kiện là đúng (điều kiện được thỏa mãn) thì chương trình đi vào phần thân của cấu trúc IF và thực thi các câu lệnh trong phần thân

 Nếu điều kiện sai (không thỏa điều kiện), những câu lệnh ở phần thân không được thực thi và chương trình nhảy đến câu lệnh sau END IF (chấm dứt cấu trúc IF)

 Cấu trúc IF phải được kết thúc bằng END IF

Trang 55

{ int number, result;

printf(“Nhap 1 so: ”); /* INPUT num */

Trang 56

Lưu đồ: cấu trúc IF … ELSE

Cấu trúc IF … ELSE

 Trong ví dụ trên, nếu ta muốn cho ra thông điệp báo rằng

số đó không là số chẵn tức là số lẻ thay vì chỉ thoát ra

 Ðể làm điều này ta có thể thêm câu lệnh IF khác để kiểm tra xem trường hợp số đó không chia hết cho 2

Trang 57

Lưu đồ: cấu trúc IF … ELSE

Trang 58

Lưu đồ: cấu trúc IF … ELSE

 Trong ví dụ trên, phải kiểm tra điều kiện 2 lần cho 2 trường hợp bài trừ (có cái này thì không có cái kia)

Ngôn ngữ lập trình cung cấp cho chúng ta cấu trúc IF…

ELSE

 Dùng cấu trúc này sẽ hiệu quả và tốt hơn để giải quyết vấn đề

Cấu trúc IF …ELSE giúp lập trình viên chỉ làm một phép so

sánh và sau đó thực thi các bước tùy theo kết quả của phép so sánh là True (đúng) hay False (sai)

Trang 59

Lưu đồ: cấu trúc IF … ELSE

 Cấu trúc chung của câu lệnh IF…ELSE như sau:

Trang 60

Lưu đồ: cấu trúc IF … ELSE

Khối lệnh 2;

}

Trang 61

Lưu đồ: cấu trúc IF … ELSE

Trang 62

Lưu đồ: cấu trúc IF … ELSE

Trang 63

Lưu đồ: cấu trúc IF … ELSE

báo nếu đúng là số chẵn, nếu không hiển thị số lẻ */

#include <stdio.h>

#include <conio.h>

void main()

{ int number, result;

printf(“Nhap 1 so: ”); /* INPUT num */

Ngày đăng: 17/06/2014, 15:02

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w