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

LẬP TRÌNH CĂN BẢN - GIỚI THIỆU VỀ CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬ doc

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 (117.92 KB, 7 trang )

1
LẬP TRÌNH CĂN BẢN
GIỚI THIỆU VỀ CẤU TRÚC DỮ
LIỆU VÀGIẢI THUẬT
2
Nộidung
1. Từ bài toán đến chương trình
2. Giải thuật
l Kiểudữliệu
l Khái niệm về ngôn ngữ lập trình
l Chương trình dịch
3
1.Từ BàiToán ĐếnChươngTrình
l Cácbướcgiảibàitoánbằngmáytính
l Môtảcácbướcgiảibàitoán
l Vẽ sơđồ xử lý
l Viếtchươngtrìnhxửlýbằngngônngữ giả
l Chọnngônngữ lậptrìnhvàchuyểnchương
trìnhtừngônngữ giả sang ngônngữ lập
trình
l Thựchiệnchươngtrình: nhậpvàocáctham
số, nhậnkếtquả
4
2. GiảiThuật
l Kháiniệmgiảithuật
l Các đặctrưngcủagiảithuật
l Ngônngữ biểudiễngiảithuật
l Mộtsốgiảithuậtcơbản
lCáccấutrúcsuyluậncơbảncủagiải
thuật
l Từ giảithuật đếnchươngtrình


5
KháiNiệmGiảiThuật
l Vídụ:Hoán đổichấtlỏngtrong2 bìnhA (nước
mắm) vàB (rượu):
l Yêucầuphảicóthêmmộtbìnhthứ bagọilàbìnhC.
l Bước1: Đổ rượutừbìnhBsang bìnhC.
l Bước2: Đổ nướcmắmtừbìnhAsang bìnhB.
l Bước3: Đổ rượutừbìnhC sang bìnhA.
l “Giải thuật làmột dãy các thao tác trên những dữ
liệu vào sao cho sau một hữu hạn bước ta thu
được kết quả của bài toán”.
6
Các ĐặcTrưngCủaGiảiThuật
l Tínhkếtthúc
l Số bướclàhữuhạn
lTínhxác định
l Máyphảithựchiện được
l Chocùngkếtquả trêncácmáykhácnhau
l Tínhphổ dụng
l Tínhhiệuquả
l Thờigian
l Tàinguyênmáy
7
NgônNgữ BiểuDiễnGiảiThuật
l Ngônngữ tự nhiên
l Ngônngữ sơđồ
l Ngônngữ giả
8
NgônNgữ Tự Nhiên
l Làngônngữ củachúngta

l Vídụ:Giảithuậtgiảiphươngtrìnhbậcnhất
ax+b=0.
Bước1: Nhậngiátrị của các tham số a, b.
Bước2: Xétgiátrị của a xem cóbằng0haykhông?
Nếua=0thìlàm bước3,nếuakhác không thì
làm bước4.
Bước3: (abằng0)Nếubbằng0 =>pt vô số nghiệm.
Nếu bkhác0=> pt vô nghiệm.
Bước4:( akhác0) Takết luận phương trình có
nghiệm x=-b/a.
9
NgônNgữ Sơ Đồ (1)
l Môtảgiảithuậtbằngcácsơđồ hìnhkhối đã
đượcquy ướctrước
10
NgônNgữ Sơ Đồ (2)
l Vídụ:Dùnglưuđồđể biểudiễngiảithuậttìm
USCLNnhư sau:
11
NgônNgữ Giả
l Làmộtsựkếthợpgiữa ngônngữ tự nhiên với
cáccấutrúc câulệnhcủamộtngônngữ lập
trình.
l Vídụ: Giảithuậtgiảiphươngtrìnhbậcnhất
ax+b=0.
l Nhậpvàoa, b
l If a==0 then
If b==0 then
Kếtluậnphươngtrìnhvôsốnghiệm
else

Kếtluậnphươngtrìnhvônghiệm
else
Kếtluậnphươngtrìnhcónghiệmx=-b/a
12
MộtSốGiảiThuật Cơ Bản(1)
l Vídụ1: Yêucầu:
l Nhậpvào1 dãyn
số hạnga
1
, a
2
, , a
n
l TínhtổngS:
S= a
1
+ a
2
+ a
3
+
+ a
n
l In S ramànhình
13
MộtSốGiảiThuật Cơ Bản(2)
l Vídụ2: Yêu
cầu:
l Nhậpvào2
số a vàb là

2 hệ số của
pt: ax+b=0
l Chobiết
nghiệmcủa
phương
trình.
14
C
á
c
C

u
Tr
ú
c
Suy
Lu

n



B

n
CủaGiảiThuật(1)
l Giảithuật đượcthiếtkếtheo 3 cấutrúcsuyluận
cơ bản:
l Tuầntự(Sequential):

l Cáccôngviệc đượcthựchiệntuầntự, côngviệcnàynốitiếp
côngviệckia.
l Cấutrúclựachọn(Selection)
l Lựachọnmộtcôngviệc để thựchiệncăncứvàomộtđiềukiện
nào đó
l Cấutrúc1:Nếu< điềukiện> (đúng) thìthựchiện<côngviệc>
l Cấutrúc2:Nếu< điềukiện> (đúng) thìthựchiện<côngviệc
1>, ngượclại(điềukiệnsai) thìthựchiện<côngviệc2>
l Cấutrúc3: Trườnghợp< i> thựchiện<côngviệci>
15
C
á
c
C

u
Tr
ú
c
Suy
Lu

n



B

n
CủaGiảiThuật(2)

l Cấutrúclặp(Repeating)
l Lặplạithực hiện mộtcôngviệc không hoặc
nhiềulầncăncứvàomộtđiềukiệnnào đó.
l Có2 dạng như sau:
l Lặpvới số lần xác định
l Lặpvới số lần khôngxác định
16
Từ GiảiThuật ĐếnChươngTrình
l Cả 2 đềulà tậpcácchỉ thị (instruction) –làm
thế nào để giảiquyết1 côngviệc(task).
l Giảithuật
l Nóichuyệnvớicon người, dễ hiểu.
l Dùngngônngữđơngiản(English) –khôngviết
bằngmã.
l Chươngtrình
l Nóichuyệnvớimáytính.
l Cóthểđượcxemnhư 1 diễntảhìnhthức(formal
expression) của1 giảithuật.
17
3. KiểuDữLiệu
l Vídụ:
int x,y;
float r=3.25;
l “Kiểudữliệulàmộttậphợpcácgiátrị cócùng
mộttínhchất và tậphợpcácphéptoán thao
táctrêncácgiátrịđó”.
l Có2 loại
l Kiểudữliệu sơ cấp
l Kiểudữliệu cócấutrúc
18

KiểuDữLiệu Sơ Cấp
l “Kiểudữliệusơcấplàkiểudữliệumà
giátrị củanólà đơnnhất”.
l Vídụ:Kiểu int trong C
l làkiểu sơ cấp
l gồmcác số nguyêntừ-32768 32767
l vàcácphéptoán: +, -, *, /, %…
19
KiểuDữLiệuCóCấuTrúc
l “Kiểudữliệucócấutrúclàkiểudữliệu
màcácgiátrị củanólàsựkếthợpcủa
cácgiátrị khác”.
l Vídụ:KiểuchuỗikýtựtrongC.
l làkiểucócấutrúc.
l Vídụ: char *chuoi= “Chao cacban!”;
20
4. NgônNgữ LậpTrình
l Kháiniệmvềngônngữ lậptrình
l Chươngtrìnhdịch
21
KháiNiệmVềNgônNgữ LậpTrình
l Ngônngữ lậptrìnhlàmộtngônngữ
dùng để viếtchươngtrìnhchomáytính
l Ta cóthể chiangônngữ lậptrìnhthành
cácloạisau:
l Ngônngữ máy
l Hợpngữ
l Ngônngữ cấpcao
22
NgônNgữ Máy(machine language)

l Làcác chỉ thị dướidạng
nhị phân, can thiệptrực
tiếpvàotrongcác mạch
điệntử.
l Cóthểđược thựchiện
ngay khôngcầnqua
bướctrunggiannào.
l Tuynhiênchươngtrình
viếtbằngngônngữ máy
dễ saisót, cồngkềnhvà
khó đọc, khóhiểu vì
toànnhữngcon số 0 và
1.
3
Machine Language
10100110 01110110
00100110 00000000
11111010 11111010
01001110 10100110
11100110 10010110
11001110 00101110
10100110 01001110
11111010 01100110
01001110 10000110
etc
23
HợpNgữ
(Assembly language)
l Baogồmtênvàquytắcviết
cáccâulệnh.

l Têncáccâulệnhbaogồm
haiphần:
l Mãlệnh (English) chỉ
phéptoáncầnthựchiện
l Địachỉ chứatoánhạng
củaphéptoán đó.
l Để máythựchiện đượcmột
chươngtrìnhviếtbằng hợp
ngữ thìchươngtrình đóphải
đượcdịchsang ngônngữ
máy (Assembler).
AssemblyLanguage
INPUT a ; Nhập giátrị cho a
LOAD a ; Đọc giátrị a vào thanh ghi A
PRINT a; Hiển thị giátrị của a ra màn
hình.
INPUT b
ADD b ; Cộng giátrị của thanh ghi tổng
A
;với giátrị b
24
NgônCấpCao
(High level language )
l Rất gầnvớingônngữ con
người.
l Mộtchươngtrìnhviếtbằng
ngônngữ cấpcao đượcgọi
là chươngtrìnhnguồn
(source programs).
l Để máytính"hiểu" vàthực

hiện đượccáclệnhtrong
chươngtrìnhnguồnthìphải
cómộtchươngtrìnhdịch để
dịchchươngtrìnhnguồn
thànhdạngchươngtrình có
khả năngthựcthi.
25
5. ChươngTrìnhDịch
l Đượcdùng để chuyểnmộtchương
trìnhnguồn sang chươngtrình đích.
l Có2 dạng:
l Thôngdịch(interpreter):
l Dịchtừnglệnhmột, dịchtớiđâuthựchiệntớiđó.
l Vídụ:ngônngữ LISP.
l Biêndịch(compiler):
l Dịchtoànbộchươngtrìnhnguồnthànhchương
trình đíchrồisau đómớithựchiện.
l Vídụ:Pascal, C

×