Chương II. §1. Đa giác. Đa giác đều
Chia sẻ bởi Hà Trọng Chiên |
Ngày 03/05/2019 |
49
Chia sẻ tài liệu: Chương II. §1. Đa giác. Đa giác đều thuộc Hình học 8
Nội dung tài liệu:
BĂI GI?NG
NGN 16/07/201200:42:49NG? L?P TRNH
PASCAL
Nguy?n Trung Dung
Khoa Toân - DHSP Hă N?i 2
24/09/2017
NNLT Pascal
Chương 1. Tổng quan về NNLT Pascal
Chương 2. Các kiểu dữ liệu
Chương 3. Hằng, Biến, Kiểu, Biểu thức và Câu lệnh
Chương 4. Cấu trúc lệnh rẽ nhánh
Chương 5. Cấu trúc lệnh lặp
Chương 6. Dữ liệu kiểu mảng (ARRAY)
Chương 7. Dữ liệu kiểu xâu ký tự (Chuỗi, STRING)
Chương 8. Dữ liệu kiểu bản ghi (RECORD)
24/09/2017
Sự ra đời và phát triển
Các đặc trưng cơ bản
Các phần tử cơ bản của Ngôn ngữ
Cấu trúc tổng quát của một chương trình
Chương 1.
Tổng quan về NNLT Pascal
24/09/2017
Chương 2.
Các kiểu dữ liệu
Khái niệm chung
Kiểu số nguyên (Integer)
Kiểu số thực (Real)
Kiểu logic (Boolean )
Kiểu ký tự (Char)
Kiểu tự định nghĩa
24/09/2017
Chương 3.
Hằng, Biến, Kiểu, Biểu thức và Câu lệnh
Hằng (Constant)
Biến (Variable)
Kiểu (Type)
Biểu thức (Expression)
Câu lệnh (Statement)
24/09/2017
Chương 4.
Cấu trúc lệnh rẽ nhánh
Khái niệm về cấu trúc rẽ nhánh
Cấu trúc “If … Then …;”
(Cấu trúc rẽ nhánh không đầy đủ)
Cấu trúc “If … Then … Else …;”
(Cấu trúc rẽ nhánh đầy đủ)
Cấu trúc “Case … Of …;”
(Rẽ nhiều nhánh)
24/09/2017
Chương 5.
Cấu trúc lệnh lặp
Khái niệm về cấu trúc lệnh lặp
Cấu trúc: “For … To … Do …;” & “For … DownTo … Do …;”
(Lặp với số lần lặp xác định)
Cấu trúc “While … Do …;”
(Lặp với số lần lặp không xác định, kiểm tra điều kiện trước)
Cấu trúc “Repeat … Until …;”
(Lặp với số lần lặp không xác định, kiểm tra điều kiện sau)
24/09/2017
Chương 6.
Dữ liệu kiểu mảng (ARRAY)
Khái niệm về Mảng
Khai báo và cách sử dụng mảng
Các thao tác trên mảng
Mảng hai chiều
24/09/2017
Chương 7.
Dữ liệu kiểu xâu ký tự (Chuỗi, STRING)
Khái niệm chuỗi (Xâu ký tự)
Khai báo xâu ký tự
Các phép toán và thao tác trên xâu ký tự
Các hàm và các thủ tục trên xâu ký tự
24/09/2017
Chương 8.
Dữ liệu kiểu bản ghi (RECORD)
Khái niệm bản ghi
Khai báo nhập, xuất dữ liệu trên bản ghi
Các thao tác cơ bản trên bản ghi
Câu lệnh “With”
Sử dụng mảng bản ghi
24/09/2017
Sự ra đời và phát triển
1971, tác giả là Gs. Nicklaus Wirth, ĐH Kỹ thuật Zurich, Thụy Sĩ. Mục đích: Phục vụ cho việc giảng dạy Phương pháp lập trình cho sinh viên.
Turbo Pascal – Hãng phần mềm Borland (Mỹ) phát triển qua các phiên bản 1.0 – 5.0, 5.5, 6.0, hiện nay đang sử dụng phiên bản 7.0.
Có sự thành công rực rỡ trong giảng dạy lập trình và tư duy lập trình với tư tưởng “Lập trình có cấu trúc”.
Chương 1. Tổng quan về NNLT Pascal
24/09/2017
Các đặc trưng cơ bản
Là ngôn ngữ có định kiểu
Là ngôn ngữ thể hiện tư duy “Lập trình cấu trúc”:
Cấu trúc hóa dữ liệu
Cấu trúc hóa câu lệnh
Cấu trúc hóa chương trình
Chương 1. Tổng quan về NNLT Pascal
24/09/2017
Các phần tử cơ bản của ngôn ngữ
Bộ kí tự
Các chữ cái in hoa A..Z, in thường a..z
Các chữ số 0..9
Dấu cách, dấu gạch dưới ‘_’
Các dấu phép toán: +, -, *, /
Các kí tự khác: {,},[,],(,),?,…
Chương 1. Tổng quan về NNLT Pascal
24/09/2017
Từ khoá (Keyword)
Là những từ dành riêng, được dùng với ý nghĩa xác định trước
Bao gồm:
Program, Begin, End, Procedure, Function;
Const, Type, Var, Array, String, Record, Set, File of, Label;
If, Then, Else, Case of;
For, To, DownTo, Do, While, Repeat, Until;
With, Goto, Exit;
And, Or, Not, In, Div, Mod.
Không được dùng trong các trường hợp khác
Các phần tử cơ bản của ngôn ngữ
Chương 1. Tổng quan về NNLT Pascal
24/09/2017
Tên
Là tên được dùng (có thể do Turbo Pascal hoặc người lập trình) để đặt cho các biến, hằng, hàm,….
Quy tắc đặt tên
Tên phải được bắt đầu bằng chữ cái
Không chứa dấu cách và các ký tự đặc biệt
Tên chuẩn: Là các tên do Turbo Pascal đặt trước cho các đối tượng được dùng thường xuyên.
Chú ý: Nên đặt tên mang tính gợi nhớ, gần với ý nghĩa của đối tượng được đặt tên.
Các phần tử cơ bản của ngôn ngữ
Chương 1. Tổng quan về NNLT Pascal
24/09/2017
Một số tên chuẩn trong Pascal:
Boolean, Char, Integer, Word, Byte, LongInt, Real;
False, True, MaxInt;
Abs, Cos, Sin, Odd, Round, Sqr, Sqrt;
Read, Readln, Write, Writeln;
…
Ví dụ tên tự đặt:
a, b, c, Delta, X1, X2 (trong bài toán gptb2);
Thu, Ngay, Thang (trong bài toán về ngày, tháng)
4X, CD Su Pham: không đúng quy định
Các phần tử cơ bản của ngôn ngữ
Chương 1. Tổng quan về NNLT Pascal
24/09/2017
Cấu trúc chương trình Pascal
Ví dụ:
Program Vi_du;
BEGIN
writeln(‘Hello!’);
Writeln(‘How are you?’);
END.
{Phần tiêu đề}
Program Ten_chuong_trinh;
{Phần khai báo}
Uses khai báo các unit;
Type khai báo kiểu;
Const khai báo hằng;
Var khai báo biến;
Procedure khai báo thủ tục;
Function khai báo hàm;
{Phần thân chương trình}
BEGIN
(* Các câu lệnh*)
END.
Nhận xét:
Chương trình in ra hai dòng chữ:
Hello!
How are you?
Không có phần khai báo
Mỗi lệnh kết thúc bởi “;”
Chương 1. Tổng quan về NNLT Pascal
24/09/2017
Ví dụ: Chương trình tìm số lớn nhất trong 3 số nguyên a, b, c được nhập vào từ bàn phím.
Program TimMax;
Uses CRT;
Var a, b, c, Max: Integer;
BEGIN
ClrScr;
Writeln(‘Nhap a, b, c’);
Readln(a, b, c);
Max := a;
If Max < b then Max := b;
If Max < c then Max := c;
Writeln (‘Max = ‘,Max);
Readln;
END.
Nhập dữ liệu cho các biến
Lấy Max:=a
So Max với b. Nếu Max nhỏ hơn b thì lại lấy Max = b
Lặp lại thao tác so sánh Max với c
In ra kết quả: chính là Max
Chương 1. Tổng quan về NNLT Pascal
24/09/2017
Khái niệm chung
Dữ liệu: Là tất cả các thông tin được lưu trữ và xử lý trên máy tính
Kiểu dữ liệu: Là sự quy định chung về cấu trúc lưu trữ, miền giá trị, các phép toán và các thao tác trên các giá trị
Hai nhóm kiểu dữ liệu:
Kiểu dữ liệu cơ sở (Số nguyên, Số thực, Logic, Ký tự, Liệt kê, Đoạn con)
Kiểu dữ liệu có cấu trúc (Mảng, Xâu ký tự, Bản ghi, Tập hợp, File, …)
Chương 2. Các kiểu dữ liệu
24/09/2017
Các kiểu dữ liệu cơ sở
Số nguyên (ShortInt, Byte, Integer, Word, LongInt)
Qui định về giá trị riêng cho từng loại
ShortInt: -128 .. 127
Byte: 0 .. 255
Integer: -32768 .. 32767
Word: 0 .. 65535
LongInt: Khoảng từ -2 tỉ đến + 2 tỉ
Các phép toán: +, -, *, Mod, Div.
Các phép so sánh: <, >, <=, >=, =, <>
Một số thủ tục và hàm chuẩn: Dec(n), Inc(n), Odd(n), Pred(n), Succ(n),…
Chương 2. Các kiểu dữ liệu
24/09/2017
Các kiểu dữ liệu cơ sở
Số thực (Real, Single, Double, Extended, Comp)
Qui định về giá trị riêng cho từng loại (Khác với số nguyên)
Real: quy định bởi 2 giá trị: 2.9*10-39 và 1.7*1038
Trong đó: 1.7*1038 là giá trị lớn nhất; 2.9*10-39 là khoảng cách nhỏ nhất để phân biệt được 2 số thực khác nhau
Quy cách viết số thực:
Dấu phảy tĩnh: 3.14
Dạng dấu phảy động: 3.14*100 =0.314*101=31.4*10-1
Các phép toán: +, -, *, /
Các phép so sánh: < , >, <=, >=, =, <>
Một số hàm toán học: abs(x), sqrt(x), ln(x), exp(x), round(x), trunc(x), frac(x), sqr(x),…
Chương 2. Các kiểu dữ liệu
24/09/2017
Các kiểu dữ liệu cơ sở
Kiểu char
Dùng biểu diễn các kí tự trong bảng mã ASCII
Ký tự được biểu diễn trong cặp dấu nháy đơn (‘).
Các phép so sánh: < , >, <=, >=, =, <>
Một số hàm chuẩn: Pred(c), Succ(c), Char(n), Chr(n), Ord(c), Upcase(c)…
Kiểu Boolean
Giá trị logic đúng (TRUE) và sai (FALSE).
Các phép toán AND, NOT, OR, XOR.
Chương 2. Các kiểu dữ liệu
24/09/2017
Các kiểu dữ liệu tự định nghĩa
Liệt kê
Ví dụ:
Type MAU = (Xanh, do, tim, vang);
Var Color: MAU;
Var Day: (ThuHai, ThuBa, ThuTu, ThuNam, ThuSau, ThuBay, ChuNhat);
Kiểu đoạn con
Ví dụ:
Type SN = 1..1000;
Var i: SN;
Var ChuCaiThuong: ‘a’..’z’;
Chú ý:
Kiểu đoạn con chỉ có thể được xây dựng từ kiểu dữ liệu đếm được (chẳng hạn số nguyên, kí tự). Các thao tác trên kiểu đoạn con phụ thuộc vào kiểu cơ sở.
Kiểu liệt kê có thứ tự được xác định bởi thứ tự liệt kê các phần tử, kiểu đoạn con có thứ tự của kiểu dữ liệu tương ứng.
Chương 2. Các kiểu dữ liệu
24/09/2017
Hằng (Constant - Const)
Khái niệm: Là đại lượng có giá trị không đổi trong suốt thời gian thực hiện chương trình.
Khai báo hằng
Hằng định kiểu:
Cú pháp: Const Ten_hang: Kiểu = giá trị;
Ví dụ: Const n: Byte = 100;
Hằng không định kiểu:
Cú pháp: Const Ten_hang = giá trị; phụ thuộc vào kiểu của giá trị.
Ví dụ: Const M = 100;
Const Pi = 3.1416;
Chương 3. Hằng, Biến, Kiểu, Biểu thức và Câu lệnh
24/09/2017
Biến (Variable – Var)
Khái niệm: là đại lượng có thể thay đổi giá trị tại các thời điểm khác nhau trong chương trình. Truy cập tới giá trị của biến thông qua tên biến.
Khai báo biến
Cú pháp:
Var Ten_bien: Ten_kieu_du_lieu;
Var Ten_bien: Sự mô tả kiểu dữ liệu;
Ví dụ:
Var x, y: Real; m,n: Integer;
Var Day: (Mon,Tue,Wed,Thu,Fri,Sat,Sun);
Chú ý:
Phải khai báo biến trước khi dùng
Tên các biến không được trùng nhau, tuân theo qui tắc đặt tên
Chương 3. Hằng, Biến, Kiểu, Biểu thức và Câu lệnh
24/09/2017
Kiểu (Type)
Khái niệm:
Là sự qui định chung về cấu trúc lưu trữ, miền giá trị và cách xử lý đối với một loại dữ liệu.
Ngoài các kiểu dữ liệu chuẩn (đã được TP định nghĩa), có thể định nghĩa thêm các kiểu dữ liệu mới
Khai báo kiểu
Cú pháp:
Type Ten_kieu = Sự mô tả về kiểu;
Ví dụ:
Type SoThuc = Real;
Type Color = (Xanh,Do,Tim,Vang);
Chương 3. Hằng, Biến, Kiểu, Biểu thức và Câu lệnh
24/09/2017
Biểu thức (Expression)
Khái niệm: Là dãy ký tự biểu diễn công thức. Bao gồm các hằng, biến, hàm, dấu phép toán, các dấu ngoặc.
Thứ tự ưu tiên:
Phép gọi hàm
Phép phủ định Not
Các phép toán lớp Nhân (*, /, Div, Mod, And)
Các phép toán lớp Cộng (+, -, Or)
Các phép so sánh (=, <, >, <>, <=, >=, In)
Kiểu của biểu thức: Kiểu của kết quả sau khi tính toán biểu thức.
Các loại biểu thức:
Biểu thức số học: Có kết quả là giá trị số
Biểu thức logic: Có kết quả là giá trị logic
Chương 3. Hằng, Biến, Kiểu, Biểu thức và Câu lệnh
24/09/2017
Câu lệnh trong NNLT Pascal
Khái niệm:
Câu là đơn vị cú pháp trong mỗi ngôn ngữ. Câu lệnh là đơn vị cú pháp trong mỗi ngôn ngữ lập trình.
Mỗi câu lệnh biểu thị một (hay một loạt) thao tác của thuật toán mà máy tính cần phải thực hiện
Các loại câu lệnh trong Pascal:
Câu lệnh đơn: Gọi thủ tục, Lệnh gán, lệnh Goto, Exit, Break,…
Câu lệnh có cấu trúc: Lệnh phức, Lệnh rẽ nhánh, Lệnh lặp
Lệnh phức: Begin … End
Lệnh rẽ nhánh: 3 cấu trúc
Lệnh lặp: 3 cấu trúc
Chú ý:
Bản chất việc viết chương trình là Lựa chọn và Sắp xếp các câu lệnh theo trình tự nhất định nhằm thực hiện đúng thuật toán.
Chương 3. Hằng, Biến, Kiểu, Biểu thức và Câu lệnh
24/09/2017
Lệnh gán
Dùng để gán giá trị (có thể là của một hằng, một biến, hay một biểu thức, …) cho một biến
Cú pháp:
Ten_Bien := biểu thức;
Ví dụ:
Delta := sqr(b) – 4*a*c;
Chú ý:
Vế trái của lệnh gán, nhất thiết phải là một biến
Kiểu của biểu thức vế phải phải tương thích với kiểu của biến bên vế trái.
Chương 3. Hằng, Biến, Kiểu, Biểu thức và Câu lệnh
24/09/2017
Lệnh gọi thủ tục
Dùng để gọi thực hiện một thủ tục đã được định nghĩa trước đó (có thể là do TP hoặc người lập trình)
Cú pháp:
Ten_Thu_tuc(danh sách tham số);
Ví dụ:
Writeln(‘Hello!’);
Readln(a,b,c);
GiaiPTB2(a,b,c);
Chú ý: Danh sách tham số có thể rỗng, có một hay có nhiều tham số tùy theo việc thiết kế thủ tục đó. Nếu có nhiều tham số thì các tham số được phân cách bởi dấu phảy.
Chương 3. Hằng, Biến, Kiểu, Biểu thức và Câu lệnh
24/09/2017
Lệnh phức (Khối lệnh)
Khái niệm:
Một nhóm lệnh được đặt trong cặp từ khóa “Begin”, “End” được xem là một câu lệnh phức (Khối lệnh)
Câu lệnh phức được sử dụng khi nhóm lệnh trong đó cần được thực hiện đồng thời
Cú pháp
Begin
{Các lệnh}
End;
Ví dụ
If Delta > 0 then
Begin
Writeln(‘Ptr co hai nghiem phan biet:’);
Writeln(‘X1 = ‘,X1);
Writeln(‘X2 = ‘,X2);
End;
Chương 3. Hằng, Biến, Kiểu, Biểu thức và Câu lệnh
24/09/2017
Khái niệm về cấu trúc rẽ nhánh
Câu lệnh có cấu trúc:
Câu lệnh có cấu trúc cú pháp chặt chẽ biểu thị một hay một loạt thao tác phức tạp trong thuật toán
Từ các câu lệnh, có thể nhóm chúng lại thành câu lệnh phức (khối lệnh) cũng để biểu thị một thao tác phức tạp
Thao tác rẽ nhánh:
Nhằm thực hiện khả năng dự đoán và đáp ứng của máy tính trong quá trình thu thập và xử lý thông tin
Người lập trình phải “dạy” cho máy tính thực hiện thao tác này thông qua câu lệnh rẽ nhánh
Chương 4. Cấu trúc lệnh rẽ nhánh
24/09/2017
Cấu trúc rẽ nhánh không đầy đủ
Cú pháp
If <Điều kiện> Then;
Sơ đồ khối (Lưu đồ)
Chương 4. Cấu trúc lệnh rẽ nhánh
24/09/2017
Cấu trúc rẽ nhánh không đầy đủ
Ví dụ: Tìm số lớn nhất trong 3 số nguyên a, b, c.
Program TimMax;
Var a, b, c, Max: Integer
BEGIN
Writeln(‘Chtrinh tim Max cua 3 so nguyen’);
Writeln(‘Nhap a,b,c:’); Readln(a,b,c);
Max := a;
If Max < b Then Max := b;
If Max < c Then Max := c;
Writeln(‘Ket qua: ’, Max);
END.
Chương 4. Cấu trúc lệnh rẽ nhánh
24/09/2017
Cấu trúc rẽ nhánh đầy đủ
Cú pháp
If <Điều kiện> Then
Else;
Sơ đồ khối (Lưu đồ)
Chương 4. Cấu trúc lệnh rẽ nhánh
24/09/2017
Cấu trúc rẽ nhánh đầy đủ
Ví dụ: Tìm số nhỏ nhất trong 3 số nguyên a, b, c.
Program TimMin;
Var a,b,c,Min: Integer;
BEGIN
Writeln(‘Chtrinh tim Min cua 3 so nguyen’);
Writeln(‘Nhap a,b,c:’); Readln(a,b,c);
If a < b Then if a < c then Min := a
else Min := c
Else if c < b then Min := c
else Min := b;
Writeln(‘Ket qua: ’, Min);
END.
Chương 4. Cấu trúc lệnh rẽ nhánh
24/09/2017
Cấu trúc rẽ nhánh đầy đủ
Một số vấn đề cần lưu ý:
Trước từ khóa “Else” không được để dấu chấm phảy (;)
Có thể xảy ra tính huống các cặp “If/Else” “lồng nhau”. Khi đó mỗi “Else” được tính cho “If” gần nó nhất mà chưa thuộc vào “Else” nào khác.
Nếu sau “Then” hoặc “Else” có nhiểu hơn một lệnh máy tính cần thực hiện (theo thuật toán) thì các lệnh đó phải được đặt trong cặp “Begin/End”
Có thể tạm coi rằng
Cấu trúc Không đầy đủ là tình huống rẽ theo 1 nhánh (chỉ khi thỏa mãn điều kiện)
Cấu trúc Đầy đủ là tình huống rẽ theo 2 nhánh (1 nhánh khi điều kiện đúng, 1 nhánh khi điều kiện sai)
Chương 4. Cấu trúc lệnh rẽ nhánh
24/09/2017
Câu lệnh tuyển “Case...Of”
Cú pháp
Case of
Gtrị 1: Việc 1;
Gtrị 2: Việc 2;
…
Gtrị n: Việc n
[Else Việc n+1];
End;
Chú ý:
Trong trường hợp có nhiều giá trị của biểu thức cùng tương ứng với một thao tác thì có thể ghi các giá trị đó trên cùng một dòng
Biểu thức ở đây chỉ có thể thuộc kiểu dữ liệu đếm được
có thể gồm nhiều hơn một tao tác, khi đó cần được biểu diễn bởi câu lệnh phức
Chương 4. Cấu trúc lệnh rẽ nhánh
24/09/2017
Câu lệnh tuyển “Case...Of”
Lưu đồ
Chương 4. Cấu trúc lệnh rẽ nhánh
24/09/2017
Câu lệnh tuyển “Case...Of”
Ví dụ: Nhập tháng m[1;12] và năm N vào từ bàn phím và in ra số ngày của tháng m.
Chương 4. Cấu trúc lệnh rẽ nhánh
Program NgayCuaThang;
Var m: 1..12; N: 1000..3000;
BEGIN
Writeln(‘Chtrinh tinh so ngay cua thang’);
Writeln(‘Nhap Thang: ’); Readln(m);
Writeln(‘Nhap Nam: ’); Readln(N);
Case m of
1,3,5,7,8,10,12: Writeln(‘Co 31 ngay’);
4,6,9,11: Writeln(‘Co 30 ngay’)
else If N mod 4 = 0 then Writeln(‘Co 29 ngay’)
Else Writeln(‘Co 28 ngay’);
End;
END.
24/09/2017
Bài tập áp dụng (Lệnh rẽ nhánh)
Viết chương trình giải hệ hai phương trình bậc nhất hai ẩn x, y dạng
Viết chương trình kiểm tra xem ba số thực a, b, c có phải là số đo ba cạnh của một tam giác hay không.
Viết chương trình kiểm tra xem ba điểm phân biệt M(x1,y1), N(x2,y2), P(x3,y3) cho trước có thẳng hàng không
Viết chương trình giải phương trình trùng phương dạng
Chương 4. Cấu trúc lệnh rẽ nhánh
Chương 4. Cấu trúc lệnh rẽ nhánh
Bài tập áp dụng (Lệnh rẽ nhánh)
Chương 4. Cấu trúc lệnh rẽ nhánh
24/09/2017
Bài tập áp dụng (Lệnh rẽ nhánh)
Viết chương trình nhập vào một tháng, cho biết tháng đó thuộc quý nào trong năm.
Viết chương trình tìm các giá trị nhỏ nhất, lớn nhất của ba số/ của dãy n số nguyên (ko dùng mảng) được nhập vào từ bàn phím.
Viết chương trình tính số ngày của một tháng nào đó trong năm.
Viết chương trình mô phỏng phép tính toán số học đơn giản.
Ba số nguyên dương nhập vào từ bàn phím là ba chỉ số ngày/tháng/năm. Hãy kiểm tra xem đó có phải là ngày tháng hợp lệ không?
Chương 4. Cấu trúc lệnh rẽ nhánh
24/09/2017
Khái niệm về cấu trúc lặp
Một hoặc một nhóm thao tác nào đó cần thực hiện lặp lại nhiều lần trong thuật toán sẽ được biểu diễn bởi cấu trúc lệnh lặp
Khả năng tính toán nhanh sẽ cho phép máy tính sử dụng thao tác lặp một cách hiệu quả trong quá trình xử lý thông tin
Chương 5. Cấu trúc lệnh lặp
24/09/2017
Lệnh lặp với số bước xác định
Ví dụ 1: Tìm giá trị lớn nhất của dãy số
Ví dụ 2: Tính tổng các số tự nhiên từ 1 đến n, với n được nhập vào từ bàn phím
→ Cần phải thực hiện các hành động lặp
Ví dụ 1. Các phép so sánh
Ví dụ 2. Các phép cộng dồn
Câu lệnh lặp với số bước lặp xác định cho phép chúng ta “dạy” cho máy tính các thao tác này.
Chương 5. Cấu trúc lệnh lặp
24/09/2017
Cú pháp
For i:= To Do ;
For i:= DownTo Do ;
Trong đó
i: đóng vai trò là biến đếm, phải thuộc kiểu dữ liệu đếm được.
, là các giá trị để xác định quá trình lặp, cùng kiểu với biến i
: có thể được biểu diễn bởi lệnh đơn, hoặc lệnh có cấu trúc
Lệnh lặp với số bước xác định
Chương 5. Cấu trúc lệnh lặp
24/09/2017
Lệnh lặp với số bước xác định
Chương 5. Cấu trúc lệnh lặp
Lưu đồ 1: For … To … Do …;
24/09/2017
Lệnh lặp với số bước xác định
Chương 5. Cấu trúc lệnh lặp
Lưu đồ 2: For … DownTo … Do …;
24/09/2017
Lệnh lặp với số bước xác định
Chương 5. Cấu trúc lệnh lặp
24/09/2017
Lệnh lặp với số bước xác định
Chương 5. Cấu trúc lệnh lặp
Program ViDuLap1;
Var i, N: Integer; S:LongInt;
BEGIN
Writeln(‘Chtrinh tinh gia tri bieu thuc’);
Writeln(‘N: ’); Readln(N);
S:=0;
For i:=1 to N do S:=S+i;
Writeln(‘Ket qua: ’, S)
END.
24/09/2017
Lệnh lặp với số bước xác định
Chương 5. Cấu trúc lệnh lặp
Program ViDuLap2;
Var i, N: Integer; S:Real;
BEGIN
Writeln(‘Chtrinh tinh gia tri bieu thuc’);
Writeln(‘N: ’); Readln(N);
S:=0;
For i:=1 to N do S:=S+1/i;
Writeln(‘Ket qua: ’, S)
END.
24/09/2017
Lệnh lặp với số bước xác định
Chương 5. Cấu trúc lệnh lặp
Program ViDuLap3;
Var i, N: Integer; S:Real;
BEGIN
Writeln(‘Chtrinh tinh gia tri bieu thuc’);
Writeln(‘N: ’); Readln(N);
S:=0;
For i:=1 to N do S:=S+1/Sqr(i);
Writeln(‘Ket qua: ’, S)
END.
24/09/2017
Lệnh lặp với số bước xác định
Chương 5. Cấu trúc lệnh lặp
Program ViDuLap4;
Var i, N: Integer; S:Real;
BEGIN
Writeln(‘Chtrinh tinh gia tri bieu thuc’);
Writeln(‘N: ’); Readln(N);
S:=n;
For i:=n-1 downto 0 do S:=i+Sqrt(S);
Writeln(‘Ket qua: ’, S)
END.
24/09/2017
Chương 5. Cấu trúc lệnh lặp
Lặp với số bước không xác định
24/09/2017
Kiểm tra điều kiện trước
Cú pháp:
While <điều kiện lặp> do;
Ví dụ 1: Cha năm nay 35, con lên 4 tuổi. Hỏi sau bao nhiêu năm nữa thì tuổi cha gấp đôi tuổi con?
Ví dụ 2: Cho 2 số tự nhiên a, b khác 0. Hãy tìm ước số chung lớn nhất của chúng.
Chương 5. Cấu trúc lệnh lặp
Lặp với số bước không xác định
24/09/2017
Chương 5. Cấu trúc lệnh lặp
Lặp với số bước không xác định
Kiểm tra điều kiện sau
Cú pháp:
Repeat
Until <điều kiện dừng>;
Ví dụ 1: Cha năm nay 35, con lên 4 tuổi. Hỏi sau bao nhiêu năm nữa thì tuổi cha gấp đôi tuổi con?
Ví dụ 2: Cho 2 số tự nhiên a, b khác 0. Hãy tìm ước số chung lớn nhất của chúng.
24/09/2017
Chương 5. Cấu trúc lệnh lặp
Lặp với số bước không xác định
Lưu ý:
Trong hai trường hợp sử dụng lệnh lặp với số lần lặp không xác định thì điều kiện có ý nghĩa khác nhau: While – điều kiện là điều kiện để tiếp tục lặp/ Repeat – điều kiện là điều kiện để dừng quá trình lặp.
Trong H.Động lặp phải có những thao tác làm thay đổi điều kiện.
Ktra đ.kiện trước/sau khi lặp: Khác nhau
Trước: Có thể không có bước lặp nào được thực hiện
Sau: Luôn có ít nhất một bước lặp được thực hiện
Các dạng lệnh lặp có thể thay thế nhau được
24/09/2017
Chương 5. Cấu trúc lệnh lặp
Lặp với số bước không xác định
Các ví dụ áp dụng
Lập trình tính tổng các chữ số của số tự nhiên n được nhập vào từ bàn phím.
Program Lap;
Var N: LongInt; S: Integer;
BEGIN
Writeln(`Chtrinh tinh tong cac chu so cua N`);
Write(`N = `);Readln(N);
S:=0;
Repeat
S := S + N mod 10;
N := N div 10;
Until N = 0;
Writeln(`Ket qua: `, S);
END.
24/09/2017
Chương 5. Cấu trúc lệnh lặp
Lặp với số bước không xác định
Các ví dụ áp dụng
Lập trình tính tổng các chữ số của số tự nhiên n được nhập vào từ bàn phím.
Program Lap;
Var N: LongInt; S: Integer;
BEGIN
Writeln(`Chtrinh tinh tong cac chu so cua N`);
Write(`N = `);Readln(N);
S:= 0;
While N <> 0 đo
Begin
S := S + N mod 10;
N := N div 10;
End;
Writeln(`Ket qua: `, S);
END.
24/09/2017
Bài tập áp dụng (Câu lệnh lặp)
Tính các tổng đơn giản
Tính tổng, tìm Max, Min của dãy số nguyên (chưa có mảng)
Số nguyên tố, số hoàn hảo
Bài toán Gà – Chó, trăm trâu trăm cỏ (vòng lặp lồng nhau )
UCLN (Chia, Trừ liên tiếp), BCNN.
Tổng các chữ số của số tự nhiên
Điều khiển lặp chương trình, kiểm soát dữ liệu vào.
Chương 5. Cấu trúc lệnh lặp
24/09/2017
Chương 6. Dữ liệu kiểu Mảng (Array)
Định nghĩa: Array là một dãy gồm nhiều phần tử cùng một kiểu. Hay nói cách khác một dữ liệu kiểu array là một dãy của nhiều dữ liệu thuộc cùng một kiểu.
Các phần tử của một dãy phải có cùng kiểu gọi là kiểu cơ sở. Kiểu cơ sở có thể là một kiểu bất kỳ của Pascal.
Các phần tử có mối quan hệ về vị trí trong dãy được xác định bằng chỉ số (index). Chính là thứ tự về vị trí của nó trong dãy
Khai báo Kiểu mảng:
Type TenKieuday = Array[KieuChiSo] of KieuCoSo;
Số phần tử của dãy chính là số giá trị có thể có của kiểu chỉ số.
KieuChiSo có giá trị từ giá trị nhỏ nhất đến giá trị lớn nhất của kiểu chỉ số
Vi dụ : Type DaySoNguyen = Array [1..100] of Integer;
DaySoThuc = Array [‘A’..’Z’] of Real;
Dãy nguyên có 100 phần tử kiểu integer;index từ 1 đến 100.
Dãy dayreal có 26 phần tử kiểu real; index từ ký tự có chr(65) đến chr(90).
DỮ LIỆU KIỂU MẢNG
24/09/2017
Chương 6. Dữ liệu kiểu Mảng (Array)
Khai báo Biến mảng:
Gián tiếp Type TenKieuMang = Array[KieuChiSo] of KieuCoSo;
Var TenBienMang: TenKieuMang;
Vi dụ : Type DaySoNguyen = Array [1..100] of Integer;
DaySoThuc = Array [‘A’..’Z’] of Real;
Var A: DaySoNguyen; B: DaySoThuc;
Trực tiếp: Var TenBienMang: Array[KieuChiSo] of KieuCoSo;
Ví dụ: Var A: Array [1..100] of Integer;
B: Array [‘A’..’Z’] of Real;
Ý nghĩa của hai cách khai báo là như nhau. Tuy nhiên có một số trường hợp phải dùng cách khai báo gián tiếp
DỮ LIỆU KIỂU MẢNG
24/09/2017
Các thao tác trên Mảng
Có thể thực hiện phép gán giá trị của các biến của cùng một kiểu array cho nhau.
Ví dụ var a ,b : DaySoNguyen;
a:= b;
Câu lệnh này gán giá trị của từng phần tử trong dãy b sang phần tử tương ứng của dãy a.
Có thể truy nhập trực tiếp đến từng phần tử của dãy bằng cách dùng TenBienMang[ChiSo].
Ví dụ: a[5] := b[8];
(Truy nhập đến phần tử của biến mảng a có chỉ số là 5 và phần tử của biến mảng b có chỉ số là 8)
Chương 6. Dữ liệu kiểu Mảng (Array)
24/09/2017
Các thao tác trên Mảng
Có thể sử dụng từng phần tử của dãy như là một biến của kiểu dữ liệu cơ sở.
Ví dụ: for i:= 1 to 100 do readln(a[i]);
Nhập xuất dữ liệu cho biến mảng: thực hiện thông qua việc nhập/xuất đối với từng phần tử của mảng.
Ví dụ: For i:= 1 to 100 do Write(a[i]);
Chương 6. Dữ liệu kiểu Mảng (Array)
24/09/2017
Một số đặc tính của kiểu array
Số phần tử của kiểu array là cố định ngay từ khi khai báo. Dù là ta dùng bao nhiêu phần tử thì cũng chiếm đúng số bộ nhớ mà dãy đã khai báo.
Do đó thông thường phải khai báo dư hơn số thường dùng để tránh bị thiếu => lãng phí bộ nhớ.
Các phần tử của dãy được xếp liên tục trong bộ nhớ do đó:
Cho phép khả năng truy xuất ngẫu nhiên => nhanh
Cần có vùng nhớ trống liên tục đủ lớn khi cấp phát bộ nhớ cho dãy. => khó cấp phát.
Chương 6. Dữ liệu kiểu Mảng (Array)
24/09/2017
Nhập – xuất dữ liệu mảng một chiều
Nhập
Read(tên_biến_mảng[chỉ số]);
Readln(tên_biến_mảng[chỉ số]);
Xuất
Write(tên_biến_mảng[chỉ số]);
Writeln(tên_biến_mảng[chỉ số]);
Ví dụ: Nhập và in ra màn hình một dãy gồm n (n>0) số thực.
Chương 6. Dữ liệu kiểu Mảng (Array)
24/09/2017
Một số thao tác khác trên mảng
Tìm kiếm
Sắp xếp
Chèn
Xoá
Chương 6. Dữ liệu kiểu Mảng (Array)
24/09/2017
Bài tập áp dụng (Câu lệnh lặp)
Tính tổng, Max, Min của dãy số (khi có mảng).
Tìm kiếm theo mẫu, không theo mẫu (nâng cao) (số chẵn chục, chính phương,…).
Sắp xếp tăng, vấn đề sinh ngẫu nhiên.
Ma trận (Cộng, nhân, chuyển vị, đchéo, …)
Chương 6. Dữ liệu dạng mảng
24/09/2017
Chương 7. Dữ liệu kiểu Xâu ký tự (String)
Định nghĩa
Kiểu xâu là kiểu dữ liệu dùng để lưu trữ một dãy hữu hạn các kí tự
Có thể coi xâu như là một mảng các kí tự, các phần tử trong xâu được xác định bằng chỉ số
Dùng cặp dấu nháy đơn để biểu diễn xâu
24/09/2017
Khai báo
Kiểu
Type TenKieuXauKyTu = String[độ dài];
TenKieuXauKyTu = String;
Ví dụ: type Str80 = String[80];
type XauKT = String;
Biến
Gián tiếp Var TenBienXau: TenKieuXau;
Trực tiếp Var TenBienXau: String[độ dài];
Ví dụ: var s1:string[80]; s2:string[10];
Chú ý: nếu dùng String thì độ dài là 255 – độ dài cực đại của kiểu xâu.
Chương 7. Dữ liệu kiểu Xâu ký tự (String)
24/09/2017
Nhập – xuất dữ liệu
Có thể nhập xuất trực tiếp cho biến xâu ký tự.
Nhập
Readln(tên_biến_xâu);
Xuất
Write(biểu_thức_xâu);
Writeln(biểu_thức_xâu);
Ví dụ: Chương trình nhập một xâu từ bàn phím, sau đó in 5 lần xâu đó ra màn hình.
Chương 7. Dữ liệu kiểu Xâu ký tự (String)
24/09/2017
Phép toán và phép so sánh
Phép toán
Cộng xâu
Phép so sánh
<, >, <=, >=, =, <>
So sánh dựa trên bảng mã ASCII của từng kí tự trong xâu.
Thực chất là phép so sánh dựa trên thứ tự của bảng chữ cái.
Chương 7. Dữ liệu kiểu Xâu ký tự (String)
24/09/2017
Một số hàm và thủ tục chuẩn
Hàm Length(S)
Hàm Pos(S1, S)
Hàm Copy(S, i, n)
Hàm Concat(S1, S2, …, Sn)
Thủ tục Insert(S1, S, i)
Thủ tục Delete(S, i, n)
Thủ tục Str(n, S)
Thủ tục Val(S, n, OK)
Chương 7. Dữ liệu kiểu Xâu ký tự (String)
24/09/2017
Một số bài toán trên xâu ký tự
Bài toán: Tách từ. Đếm số từ của một văn bản
Bài toán: Mã hóa văn bản theo từng từ.
Bài toán: Tìm từ sinh nhỏ nhất của một xâu ký tự.
Bài toán: Chuyển đổi một số sang các cách biểu diễn trong các hệ cơ số khác nhau.
Bài toán: Chuyển đổi định dạng, xử lý từ trong các quy chuẩn về dữ liệu kiểu xâu ký tự
Chương 7. Dữ liệu kiểu Xâu ký tự (String)
24/09/2017
Chương 8. Dữ liệu kiểu Bản ghi (Record)
Kiểu RECORD
Khái niệm bản ghi: Record (bản ghi) là một kiểu dữ liệu gồm nhiều (hữu hạn) thành phần, các thành phần có thể thuộc về những kiểu dữ liệu khác nhau.
Khai báo:
Type
TenKieuBanGhi = Record
F1: T1;
…
Fn: Tn;
End;
Trong đó: F1, …, Fn là tên các dữ liệu thành phần (các trường)
T1, …, Tn là kiểu của các thành phần
24/09/2017
Chương 8. Dữ liệu kiểu Bản ghi (Record)
Kiểu RECORD
Ví dụ:
Type HocSinh = Record
HoTen: String[30];
NgSinh: String[10];
DiaChi: String[80];
DTB: Real;
HK: String[5];
End;
Var HS: HocSinh;
24/09/2017
Chương 8. Dữ liệu kiểu Bản ghi (Record)
Kiểu RECORD
Khai báo:
Var
TenBienBanGhi: Record
F1: T1;
…
Fn: Tn;
End;
24/09/2017
Chương 8. Dữ liệu kiểu Bản ghi (Record)
Kiểu RECORD
Ví dụ:
Var HS: Record
HoTen: String[30];
NgSinh: String[10];
DiaChi: String[80];
DTB: Real;
HK: String[5];
End;
24/09/2017
Các Thao tác
Có thể gán giá trị các biến bản ghi thuộc cùng một kiểu cho nhau. Khi đó sẽ gán từng trường (field) tương ứng.
Có thể truy cập đến từng trường (field) của record bằng cách dùng cách viết TenBienBanGhi.TenTruong (Toán tử “chấm”)
Mỗi trường (field) có thể dùng như một biến thuộc kiểu dữ liệu tương ứng.
Nhập, xuất dữ liệu cho bản ghi phải thực hiện thông qua việc nhập xuất cho từng trường của biến bản ghi.
Chương 8. Dữ liệu kiểu Bản ghi (Record)
Các thao tác với bản ghi
24/09/2017
Ví dụ: Mỗi phân số được lưu trữ bằng bản ghi với 2 trường Tử số và Mẫu số. Hãy viết chương trình thực hiện việc cộng và nhân hai phân số.
Chương trình:
Khai báo
Type PhanSo = Record
TS, MS: Integer;
End;
Var PS1, PS2, Tg, Th: PhanSo;
Chương 8. Dữ liệu kiểu Bản ghi (Record)
Các thao tác với bản ghi
24/09/2017
Câu lệnh WITH
WITH là một phát biểu dùng với kiểu dữ liệu record
Cú pháp
WITH TenBienBanGhi do Câu lệnh;
trong đó TenBienBanGhi là một biến record, Câu lệnh có thể là một câu lệnh đơn hoặc khối lệnh.
Ý nghĩa phát biểu WITH. Trong phần thân của phát biểu WITH, khi muốn truy cập đến các field của record tương ứng ta chỉ cần dùng tên filed mà không cần dùng toán tử chấm dạng TenBienBanGhi.TenTruong như thông thường.
Ví dụ:
Chương 8. Dữ liệu kiểu Bản ghi (Record)
24/09/2017
Mảng các bản ghi
Mảng với kiểu cơ sở là kiểu bản ghi được dùng thường xuyên
Khai báo
Type KieuBanGhi = Record
F1: T1; … Fn:Tn;
End;
KieuMangBanGhi = Array[KieuChiSo] of KieuBanGhi
Var BienMangBanGhi: KieuMangBanGhi;
Chương 8. Dữ liệu kiểu Bản ghi (Record)
24/09/2017
Mảng các bản ghi
Bài toán: Cần lưu trữ thông tin học sinh với các trường Họ tên, Ngày sinh, Địa chỉ, ĐTB, HK. Viết chương trình nhập dữ liệu cho n (n <= 50) học sinh, sắp xếp theo thứ tự giảm dần của ĐTB, in ra dạng bảng.
Giải quyết bài toán: Có 3 hoạt động chính
Nhập dữ liệu (các thông tin cần thiết);
Xử lý dữ liệu (sắp xếp theo thứ tự);
In dữ liệu (ra màn hình hoặc máy in).
Chương trình:
Chương 8. Dữ liệu kiểu Bản ghi (Record)
24/09/2017
Khái niệm chương trình con
Một đoạn chương trình thực hiện một nhóm thao tác nào đó cần được thực hiện lặp lại nhiều lần tại các thời điểm khác nhau, với các thông tin đầu vào khác nhau sẽ được tổ chức dưới dạng một chương trình con (CTC)
Giải quyết bài toán với các giai đoạn độc lập, thực hiện các chức năng riêng biệt được phân tách ra từ bài toán chính. Các giai đoạn, các chức năng riêng biệt đó cũng sẽ được tổ chức dưới dạng các chương trình con
Hai loại chương trình con: Hàm (Function) và Thủ tục (Procedure)
Chương 9. Chương trình con
24/09/2017
Thủ tục và Hàm
CTC thực hiện một thao tác nào đó, không liên quan đến tính toán, không cần lấy lại một giá trị, thường được viết dưới dạng thủ tục.
CTC thực hiện một quá trình tính toán, cần lấy lại một giá trị, thường được viết dưới dạng hàm.
Với kỹ thuật truyền tham số, có thể chuyển đổi giữa CTC dạng thủ tục và hàm.
Sử dụng Thủ tục hay Hàm còn phụ thuộc vào kinh nghiệm, sự nhạy cảm trong tư duy của người lập trình.
Chương 9. Chương trình con
24/09/2017
Các ví dụ
Bài toán: Cộng và nhân hai phân số. CTC dạng hàm: Tính UCLN của hai số nguyên dương, dùng trong phép giản ước phân số.
Bài toán: Tìm nghiệm nguyên của đa thức. CTC dạng hàm: Tính giá trị đa thức tại giá trị của X.
Bài toán: Bài toán với mảng bản ghi. Các CTC dạng thủ tục: Nhap, XuLy, InManHinh.
Chương 9. Chương trình con
24/09/2017
NGN 16/07/201200:42:49NG? L?P TRNH
PASCAL
Nguy?n Trung Dung
Khoa Toân - DHSP Hă N?i 2
24/09/2017
NNLT Pascal
Chương 1. Tổng quan về NNLT Pascal
Chương 2. Các kiểu dữ liệu
Chương 3. Hằng, Biến, Kiểu, Biểu thức và Câu lệnh
Chương 4. Cấu trúc lệnh rẽ nhánh
Chương 5. Cấu trúc lệnh lặp
Chương 6. Dữ liệu kiểu mảng (ARRAY)
Chương 7. Dữ liệu kiểu xâu ký tự (Chuỗi, STRING)
Chương 8. Dữ liệu kiểu bản ghi (RECORD)
24/09/2017
Sự ra đời và phát triển
Các đặc trưng cơ bản
Các phần tử cơ bản của Ngôn ngữ
Cấu trúc tổng quát của một chương trình
Chương 1.
Tổng quan về NNLT Pascal
24/09/2017
Chương 2.
Các kiểu dữ liệu
Khái niệm chung
Kiểu số nguyên (Integer)
Kiểu số thực (Real)
Kiểu logic (Boolean )
Kiểu ký tự (Char)
Kiểu tự định nghĩa
24/09/2017
Chương 3.
Hằng, Biến, Kiểu, Biểu thức và Câu lệnh
Hằng (Constant)
Biến (Variable)
Kiểu (Type)
Biểu thức (Expression)
Câu lệnh (Statement)
24/09/2017
Chương 4.
Cấu trúc lệnh rẽ nhánh
Khái niệm về cấu trúc rẽ nhánh
Cấu trúc “If … Then …;”
(Cấu trúc rẽ nhánh không đầy đủ)
Cấu trúc “If … Then … Else …;”
(Cấu trúc rẽ nhánh đầy đủ)
Cấu trúc “Case … Of …;”
(Rẽ nhiều nhánh)
24/09/2017
Chương 5.
Cấu trúc lệnh lặp
Khái niệm về cấu trúc lệnh lặp
Cấu trúc: “For … To … Do …;” & “For … DownTo … Do …;”
(Lặp với số lần lặp xác định)
Cấu trúc “While … Do …;”
(Lặp với số lần lặp không xác định, kiểm tra điều kiện trước)
Cấu trúc “Repeat … Until …;”
(Lặp với số lần lặp không xác định, kiểm tra điều kiện sau)
24/09/2017
Chương 6.
Dữ liệu kiểu mảng (ARRAY)
Khái niệm về Mảng
Khai báo và cách sử dụng mảng
Các thao tác trên mảng
Mảng hai chiều
24/09/2017
Chương 7.
Dữ liệu kiểu xâu ký tự (Chuỗi, STRING)
Khái niệm chuỗi (Xâu ký tự)
Khai báo xâu ký tự
Các phép toán và thao tác trên xâu ký tự
Các hàm và các thủ tục trên xâu ký tự
24/09/2017
Chương 8.
Dữ liệu kiểu bản ghi (RECORD)
Khái niệm bản ghi
Khai báo nhập, xuất dữ liệu trên bản ghi
Các thao tác cơ bản trên bản ghi
Câu lệnh “With”
Sử dụng mảng bản ghi
24/09/2017
Sự ra đời và phát triển
1971, tác giả là Gs. Nicklaus Wirth, ĐH Kỹ thuật Zurich, Thụy Sĩ. Mục đích: Phục vụ cho việc giảng dạy Phương pháp lập trình cho sinh viên.
Turbo Pascal – Hãng phần mềm Borland (Mỹ) phát triển qua các phiên bản 1.0 – 5.0, 5.5, 6.0, hiện nay đang sử dụng phiên bản 7.0.
Có sự thành công rực rỡ trong giảng dạy lập trình và tư duy lập trình với tư tưởng “Lập trình có cấu trúc”.
Chương 1. Tổng quan về NNLT Pascal
24/09/2017
Các đặc trưng cơ bản
Là ngôn ngữ có định kiểu
Là ngôn ngữ thể hiện tư duy “Lập trình cấu trúc”:
Cấu trúc hóa dữ liệu
Cấu trúc hóa câu lệnh
Cấu trúc hóa chương trình
Chương 1. Tổng quan về NNLT Pascal
24/09/2017
Các phần tử cơ bản của ngôn ngữ
Bộ kí tự
Các chữ cái in hoa A..Z, in thường a..z
Các chữ số 0..9
Dấu cách, dấu gạch dưới ‘_’
Các dấu phép toán: +, -, *, /
Các kí tự khác: {,},[,],(,),?,…
Chương 1. Tổng quan về NNLT Pascal
24/09/2017
Từ khoá (Keyword)
Là những từ dành riêng, được dùng với ý nghĩa xác định trước
Bao gồm:
Program, Begin, End, Procedure, Function;
Const, Type, Var, Array, String, Record, Set, File of, Label;
If, Then, Else, Case of;
For, To, DownTo, Do, While, Repeat, Until;
With, Goto, Exit;
And, Or, Not, In, Div, Mod.
Không được dùng trong các trường hợp khác
Các phần tử cơ bản của ngôn ngữ
Chương 1. Tổng quan về NNLT Pascal
24/09/2017
Tên
Là tên được dùng (có thể do Turbo Pascal hoặc người lập trình) để đặt cho các biến, hằng, hàm,….
Quy tắc đặt tên
Tên phải được bắt đầu bằng chữ cái
Không chứa dấu cách và các ký tự đặc biệt
Tên chuẩn: Là các tên do Turbo Pascal đặt trước cho các đối tượng được dùng thường xuyên.
Chú ý: Nên đặt tên mang tính gợi nhớ, gần với ý nghĩa của đối tượng được đặt tên.
Các phần tử cơ bản của ngôn ngữ
Chương 1. Tổng quan về NNLT Pascal
24/09/2017
Một số tên chuẩn trong Pascal:
Boolean, Char, Integer, Word, Byte, LongInt, Real;
False, True, MaxInt;
Abs, Cos, Sin, Odd, Round, Sqr, Sqrt;
Read, Readln, Write, Writeln;
…
Ví dụ tên tự đặt:
a, b, c, Delta, X1, X2 (trong bài toán gptb2);
Thu, Ngay, Thang (trong bài toán về ngày, tháng)
4X, CD Su Pham: không đúng quy định
Các phần tử cơ bản của ngôn ngữ
Chương 1. Tổng quan về NNLT Pascal
24/09/2017
Cấu trúc chương trình Pascal
Ví dụ:
Program Vi_du;
BEGIN
writeln(‘Hello!’);
Writeln(‘How are you?’);
END.
{Phần tiêu đề}
Program Ten_chuong_trinh;
{Phần khai báo}
Uses khai báo các unit;
Type khai báo kiểu;
Const khai báo hằng;
Var khai báo biến;
Procedure khai báo thủ tục;
Function khai báo hàm;
{Phần thân chương trình}
BEGIN
(* Các câu lệnh*)
END.
Nhận xét:
Chương trình in ra hai dòng chữ:
Hello!
How are you?
Không có phần khai báo
Mỗi lệnh kết thúc bởi “;”
Chương 1. Tổng quan về NNLT Pascal
24/09/2017
Ví dụ: Chương trình tìm số lớn nhất trong 3 số nguyên a, b, c được nhập vào từ bàn phím.
Program TimMax;
Uses CRT;
Var a, b, c, Max: Integer;
BEGIN
ClrScr;
Writeln(‘Nhap a, b, c’);
Readln(a, b, c);
Max := a;
If Max < b then Max := b;
If Max < c then Max := c;
Writeln (‘Max = ‘,Max);
Readln;
END.
Nhập dữ liệu cho các biến
Lấy Max:=a
So Max với b. Nếu Max nhỏ hơn b thì lại lấy Max = b
Lặp lại thao tác so sánh Max với c
In ra kết quả: chính là Max
Chương 1. Tổng quan về NNLT Pascal
24/09/2017
Khái niệm chung
Dữ liệu: Là tất cả các thông tin được lưu trữ và xử lý trên máy tính
Kiểu dữ liệu: Là sự quy định chung về cấu trúc lưu trữ, miền giá trị, các phép toán và các thao tác trên các giá trị
Hai nhóm kiểu dữ liệu:
Kiểu dữ liệu cơ sở (Số nguyên, Số thực, Logic, Ký tự, Liệt kê, Đoạn con)
Kiểu dữ liệu có cấu trúc (Mảng, Xâu ký tự, Bản ghi, Tập hợp, File, …)
Chương 2. Các kiểu dữ liệu
24/09/2017
Các kiểu dữ liệu cơ sở
Số nguyên (ShortInt, Byte, Integer, Word, LongInt)
Qui định về giá trị riêng cho từng loại
ShortInt: -128 .. 127
Byte: 0 .. 255
Integer: -32768 .. 32767
Word: 0 .. 65535
LongInt: Khoảng từ -2 tỉ đến + 2 tỉ
Các phép toán: +, -, *, Mod, Div.
Các phép so sánh: <, >, <=, >=, =, <>
Một số thủ tục và hàm chuẩn: Dec(n), Inc(n), Odd(n), Pred(n), Succ(n),…
Chương 2. Các kiểu dữ liệu
24/09/2017
Các kiểu dữ liệu cơ sở
Số thực (Real, Single, Double, Extended, Comp)
Qui định về giá trị riêng cho từng loại (Khác với số nguyên)
Real: quy định bởi 2 giá trị: 2.9*10-39 và 1.7*1038
Trong đó: 1.7*1038 là giá trị lớn nhất; 2.9*10-39 là khoảng cách nhỏ nhất để phân biệt được 2 số thực khác nhau
Quy cách viết số thực:
Dấu phảy tĩnh: 3.14
Dạng dấu phảy động: 3.14*100 =0.314*101=31.4*10-1
Các phép toán: +, -, *, /
Các phép so sánh: < , >, <=, >=, =, <>
Một số hàm toán học: abs(x), sqrt(x), ln(x), exp(x), round(x), trunc(x), frac(x), sqr(x),…
Chương 2. Các kiểu dữ liệu
24/09/2017
Các kiểu dữ liệu cơ sở
Kiểu char
Dùng biểu diễn các kí tự trong bảng mã ASCII
Ký tự được biểu diễn trong cặp dấu nháy đơn (‘).
Các phép so sánh: < , >, <=, >=, =, <>
Một số hàm chuẩn: Pred(c), Succ(c), Char(n), Chr(n), Ord(c), Upcase(c)…
Kiểu Boolean
Giá trị logic đúng (TRUE) và sai (FALSE).
Các phép toán AND, NOT, OR, XOR.
Chương 2. Các kiểu dữ liệu
24/09/2017
Các kiểu dữ liệu tự định nghĩa
Liệt kê
Ví dụ:
Type MAU = (Xanh, do, tim, vang);
Var Color: MAU;
Var Day: (ThuHai, ThuBa, ThuTu, ThuNam, ThuSau, ThuBay, ChuNhat);
Kiểu đoạn con
Ví dụ:
Type SN = 1..1000;
Var i: SN;
Var ChuCaiThuong: ‘a’..’z’;
Chú ý:
Kiểu đoạn con chỉ có thể được xây dựng từ kiểu dữ liệu đếm được (chẳng hạn số nguyên, kí tự). Các thao tác trên kiểu đoạn con phụ thuộc vào kiểu cơ sở.
Kiểu liệt kê có thứ tự được xác định bởi thứ tự liệt kê các phần tử, kiểu đoạn con có thứ tự của kiểu dữ liệu tương ứng.
Chương 2. Các kiểu dữ liệu
24/09/2017
Hằng (Constant - Const)
Khái niệm: Là đại lượng có giá trị không đổi trong suốt thời gian thực hiện chương trình.
Khai báo hằng
Hằng định kiểu:
Cú pháp: Const Ten_hang: Kiểu = giá trị;
Ví dụ: Const n: Byte = 100;
Hằng không định kiểu:
Cú pháp: Const Ten_hang = giá trị; phụ thuộc vào kiểu của giá trị.
Ví dụ: Const M = 100;
Const Pi = 3.1416;
Chương 3. Hằng, Biến, Kiểu, Biểu thức và Câu lệnh
24/09/2017
Biến (Variable – Var)
Khái niệm: là đại lượng có thể thay đổi giá trị tại các thời điểm khác nhau trong chương trình. Truy cập tới giá trị của biến thông qua tên biến.
Khai báo biến
Cú pháp:
Var Ten_bien: Ten_kieu_du_lieu;
Var Ten_bien: Sự mô tả kiểu dữ liệu;
Ví dụ:
Var x, y: Real; m,n: Integer;
Var Day: (Mon,Tue,Wed,Thu,Fri,Sat,Sun);
Chú ý:
Phải khai báo biến trước khi dùng
Tên các biến không được trùng nhau, tuân theo qui tắc đặt tên
Chương 3. Hằng, Biến, Kiểu, Biểu thức và Câu lệnh
24/09/2017
Kiểu (Type)
Khái niệm:
Là sự qui định chung về cấu trúc lưu trữ, miền giá trị và cách xử lý đối với một loại dữ liệu.
Ngoài các kiểu dữ liệu chuẩn (đã được TP định nghĩa), có thể định nghĩa thêm các kiểu dữ liệu mới
Khai báo kiểu
Cú pháp:
Type Ten_kieu = Sự mô tả về kiểu;
Ví dụ:
Type SoThuc = Real;
Type Color = (Xanh,Do,Tim,Vang);
Chương 3. Hằng, Biến, Kiểu, Biểu thức và Câu lệnh
24/09/2017
Biểu thức (Expression)
Khái niệm: Là dãy ký tự biểu diễn công thức. Bao gồm các hằng, biến, hàm, dấu phép toán, các dấu ngoặc.
Thứ tự ưu tiên:
Phép gọi hàm
Phép phủ định Not
Các phép toán lớp Nhân (*, /, Div, Mod, And)
Các phép toán lớp Cộng (+, -, Or)
Các phép so sánh (=, <, >, <>, <=, >=, In)
Kiểu của biểu thức: Kiểu của kết quả sau khi tính toán biểu thức.
Các loại biểu thức:
Biểu thức số học: Có kết quả là giá trị số
Biểu thức logic: Có kết quả là giá trị logic
Chương 3. Hằng, Biến, Kiểu, Biểu thức và Câu lệnh
24/09/2017
Câu lệnh trong NNLT Pascal
Khái niệm:
Câu là đơn vị cú pháp trong mỗi ngôn ngữ. Câu lệnh là đơn vị cú pháp trong mỗi ngôn ngữ lập trình.
Mỗi câu lệnh biểu thị một (hay một loạt) thao tác của thuật toán mà máy tính cần phải thực hiện
Các loại câu lệnh trong Pascal:
Câu lệnh đơn: Gọi thủ tục, Lệnh gán, lệnh Goto, Exit, Break,…
Câu lệnh có cấu trúc: Lệnh phức, Lệnh rẽ nhánh, Lệnh lặp
Lệnh phức: Begin … End
Lệnh rẽ nhánh: 3 cấu trúc
Lệnh lặp: 3 cấu trúc
Chú ý:
Bản chất việc viết chương trình là Lựa chọn và Sắp xếp các câu lệnh theo trình tự nhất định nhằm thực hiện đúng thuật toán.
Chương 3. Hằng, Biến, Kiểu, Biểu thức và Câu lệnh
24/09/2017
Lệnh gán
Dùng để gán giá trị (có thể là của một hằng, một biến, hay một biểu thức, …) cho một biến
Cú pháp:
Ten_Bien := biểu thức;
Ví dụ:
Delta := sqr(b) – 4*a*c;
Chú ý:
Vế trái của lệnh gán, nhất thiết phải là một biến
Kiểu của biểu thức vế phải phải tương thích với kiểu của biến bên vế trái.
Chương 3. Hằng, Biến, Kiểu, Biểu thức và Câu lệnh
24/09/2017
Lệnh gọi thủ tục
Dùng để gọi thực hiện một thủ tục đã được định nghĩa trước đó (có thể là do TP hoặc người lập trình)
Cú pháp:
Ten_Thu_tuc(danh sách tham số);
Ví dụ:
Writeln(‘Hello!’);
Readln(a,b,c);
GiaiPTB2(a,b,c);
Chú ý: Danh sách tham số có thể rỗng, có một hay có nhiều tham số tùy theo việc thiết kế thủ tục đó. Nếu có nhiều tham số thì các tham số được phân cách bởi dấu phảy.
Chương 3. Hằng, Biến, Kiểu, Biểu thức và Câu lệnh
24/09/2017
Lệnh phức (Khối lệnh)
Khái niệm:
Một nhóm lệnh được đặt trong cặp từ khóa “Begin”, “End” được xem là một câu lệnh phức (Khối lệnh)
Câu lệnh phức được sử dụng khi nhóm lệnh trong đó cần được thực hiện đồng thời
Cú pháp
Begin
{Các lệnh}
End;
Ví dụ
If Delta > 0 then
Begin
Writeln(‘Ptr co hai nghiem phan biet:’);
Writeln(‘X1 = ‘,X1);
Writeln(‘X2 = ‘,X2);
End;
Chương 3. Hằng, Biến, Kiểu, Biểu thức và Câu lệnh
24/09/2017
Khái niệm về cấu trúc rẽ nhánh
Câu lệnh có cấu trúc:
Câu lệnh có cấu trúc cú pháp chặt chẽ biểu thị một hay một loạt thao tác phức tạp trong thuật toán
Từ các câu lệnh, có thể nhóm chúng lại thành câu lệnh phức (khối lệnh) cũng để biểu thị một thao tác phức tạp
Thao tác rẽ nhánh:
Nhằm thực hiện khả năng dự đoán và đáp ứng của máy tính trong quá trình thu thập và xử lý thông tin
Người lập trình phải “dạy” cho máy tính thực hiện thao tác này thông qua câu lệnh rẽ nhánh
Chương 4. Cấu trúc lệnh rẽ nhánh
24/09/2017
Cấu trúc rẽ nhánh không đầy đủ
Cú pháp
If <Điều kiện> Then
Sơ đồ khối (Lưu đồ)
Chương 4. Cấu trúc lệnh rẽ nhánh
24/09/2017
Cấu trúc rẽ nhánh không đầy đủ
Ví dụ: Tìm số lớn nhất trong 3 số nguyên a, b, c.
Program TimMax;
Var a, b, c, Max: Integer
BEGIN
Writeln(‘Chtrinh tim Max cua 3 so nguyen’);
Writeln(‘Nhap a,b,c:’); Readln(a,b,c);
Max := a;
If Max < b Then Max := b;
If Max < c Then Max := c;
Writeln(‘Ket qua: ’, Max);
END.
Chương 4. Cấu trúc lệnh rẽ nhánh
24/09/2017
Cấu trúc rẽ nhánh đầy đủ
Cú pháp
If <Điều kiện> Then
Else
Sơ đồ khối (Lưu đồ)
Chương 4. Cấu trúc lệnh rẽ nhánh
24/09/2017
Cấu trúc rẽ nhánh đầy đủ
Ví dụ: Tìm số nhỏ nhất trong 3 số nguyên a, b, c.
Program TimMin;
Var a,b,c,Min: Integer;
BEGIN
Writeln(‘Chtrinh tim Min cua 3 so nguyen’);
Writeln(‘Nhap a,b,c:’); Readln(a,b,c);
If a < b Then if a < c then Min := a
else Min := c
Else if c < b then Min := c
else Min := b;
Writeln(‘Ket qua: ’, Min);
END.
Chương 4. Cấu trúc lệnh rẽ nhánh
24/09/2017
Cấu trúc rẽ nhánh đầy đủ
Một số vấn đề cần lưu ý:
Trước từ khóa “Else” không được để dấu chấm phảy (;)
Có thể xảy ra tính huống các cặp “If/Else” “lồng nhau”. Khi đó mỗi “Else” được tính cho “If” gần nó nhất mà chưa thuộc vào “Else” nào khác.
Nếu sau “Then” hoặc “Else” có nhiểu hơn một lệnh máy tính cần thực hiện (theo thuật toán) thì các lệnh đó phải được đặt trong cặp “Begin/End”
Có thể tạm coi rằng
Cấu trúc Không đầy đủ là tình huống rẽ theo 1 nhánh (chỉ khi thỏa mãn điều kiện)
Cấu trúc Đầy đủ là tình huống rẽ theo 2 nhánh (1 nhánh khi điều kiện đúng, 1 nhánh khi điều kiện sai)
Chương 4. Cấu trúc lệnh rẽ nhánh
24/09/2017
Câu lệnh tuyển “Case...Of”
Cú pháp
Case
Gtrị 1: Việc 1;
Gtrị 2: Việc 2;
…
Gtrị n: Việc n
[Else Việc n+1];
End;
Chú ý:
Trong trường hợp có nhiều giá trị của biểu thức cùng tương ứng với một thao tác thì có thể ghi các giá trị đó trên cùng một dòng
Biểu thức ở đây chỉ có thể thuộc kiểu dữ liệu đếm được
Chương 4. Cấu trúc lệnh rẽ nhánh
24/09/2017
Câu lệnh tuyển “Case...Of”
Lưu đồ
Chương 4. Cấu trúc lệnh rẽ nhánh
24/09/2017
Câu lệnh tuyển “Case...Of”
Ví dụ: Nhập tháng m[1;12] và năm N vào từ bàn phím và in ra số ngày của tháng m.
Chương 4. Cấu trúc lệnh rẽ nhánh
Program NgayCuaThang;
Var m: 1..12; N: 1000..3000;
BEGIN
Writeln(‘Chtrinh tinh so ngay cua thang’);
Writeln(‘Nhap Thang: ’); Readln(m);
Writeln(‘Nhap Nam: ’); Readln(N);
Case m of
1,3,5,7,8,10,12: Writeln(‘Co 31 ngay’);
4,6,9,11: Writeln(‘Co 30 ngay’)
else If N mod 4 = 0 then Writeln(‘Co 29 ngay’)
Else Writeln(‘Co 28 ngay’);
End;
END.
24/09/2017
Bài tập áp dụng (Lệnh rẽ nhánh)
Viết chương trình giải hệ hai phương trình bậc nhất hai ẩn x, y dạng
Viết chương trình kiểm tra xem ba số thực a, b, c có phải là số đo ba cạnh của một tam giác hay không.
Viết chương trình kiểm tra xem ba điểm phân biệt M(x1,y1), N(x2,y2), P(x3,y3) cho trước có thẳng hàng không
Viết chương trình giải phương trình trùng phương dạng
Chương 4. Cấu trúc lệnh rẽ nhánh
Chương 4. Cấu trúc lệnh rẽ nhánh
Bài tập áp dụng (Lệnh rẽ nhánh)
Chương 4. Cấu trúc lệnh rẽ nhánh
24/09/2017
Bài tập áp dụng (Lệnh rẽ nhánh)
Viết chương trình nhập vào một tháng, cho biết tháng đó thuộc quý nào trong năm.
Viết chương trình tìm các giá trị nhỏ nhất, lớn nhất của ba số/ của dãy n số nguyên (ko dùng mảng) được nhập vào từ bàn phím.
Viết chương trình tính số ngày của một tháng nào đó trong năm.
Viết chương trình mô phỏng phép tính toán số học đơn giản.
Ba số nguyên dương nhập vào từ bàn phím là ba chỉ số ngày/tháng/năm. Hãy kiểm tra xem đó có phải là ngày tháng hợp lệ không?
Chương 4. Cấu trúc lệnh rẽ nhánh
24/09/2017
Khái niệm về cấu trúc lặp
Một hoặc một nhóm thao tác nào đó cần thực hiện lặp lại nhiều lần trong thuật toán sẽ được biểu diễn bởi cấu trúc lệnh lặp
Khả năng tính toán nhanh sẽ cho phép máy tính sử dụng thao tác lặp một cách hiệu quả trong quá trình xử lý thông tin
Chương 5. Cấu trúc lệnh lặp
24/09/2017
Lệnh lặp với số bước xác định
Ví dụ 1: Tìm giá trị lớn nhất của dãy số
Ví dụ 2: Tính tổng các số tự nhiên từ 1 đến n, với n được nhập vào từ bàn phím
→ Cần phải thực hiện các hành động lặp
Ví dụ 1. Các phép so sánh
Ví dụ 2. Các phép cộng dồn
Câu lệnh lặp với số bước lặp xác định cho phép chúng ta “dạy” cho máy tính các thao tác này.
Chương 5. Cấu trúc lệnh lặp
24/09/2017
Cú pháp
For i:=
For i:=
Trong đó
i: đóng vai trò là biến đếm, phải thuộc kiểu dữ liệu đếm được.
Lệnh lặp với số bước xác định
Chương 5. Cấu trúc lệnh lặp
24/09/2017
Lệnh lặp với số bước xác định
Chương 5. Cấu trúc lệnh lặp
Lưu đồ 1: For … To … Do …;
24/09/2017
Lệnh lặp với số bước xác định
Chương 5. Cấu trúc lệnh lặp
Lưu đồ 2: For … DownTo … Do …;
24/09/2017
Lệnh lặp với số bước xác định
Chương 5. Cấu trúc lệnh lặp
24/09/2017
Lệnh lặp với số bước xác định
Chương 5. Cấu trúc lệnh lặp
Program ViDuLap1;
Var i, N: Integer; S:LongInt;
BEGIN
Writeln(‘Chtrinh tinh gia tri bieu thuc’);
Writeln(‘N: ’); Readln(N);
S:=0;
For i:=1 to N do S:=S+i;
Writeln(‘Ket qua: ’, S)
END.
24/09/2017
Lệnh lặp với số bước xác định
Chương 5. Cấu trúc lệnh lặp
Program ViDuLap2;
Var i, N: Integer; S:Real;
BEGIN
Writeln(‘Chtrinh tinh gia tri bieu thuc’);
Writeln(‘N: ’); Readln(N);
S:=0;
For i:=1 to N do S:=S+1/i;
Writeln(‘Ket qua: ’, S)
END.
24/09/2017
Lệnh lặp với số bước xác định
Chương 5. Cấu trúc lệnh lặp
Program ViDuLap3;
Var i, N: Integer; S:Real;
BEGIN
Writeln(‘Chtrinh tinh gia tri bieu thuc’);
Writeln(‘N: ’); Readln(N);
S:=0;
For i:=1 to N do S:=S+1/Sqr(i);
Writeln(‘Ket qua: ’, S)
END.
24/09/2017
Lệnh lặp với số bước xác định
Chương 5. Cấu trúc lệnh lặp
Program ViDuLap4;
Var i, N: Integer; S:Real;
BEGIN
Writeln(‘Chtrinh tinh gia tri bieu thuc’);
Writeln(‘N: ’); Readln(N);
S:=n;
For i:=n-1 downto 0 do S:=i+Sqrt(S);
Writeln(‘Ket qua: ’, S)
END.
24/09/2017
Chương 5. Cấu trúc lệnh lặp
Lặp với số bước không xác định
24/09/2017
Kiểm tra điều kiện trước
Cú pháp:
While <điều kiện lặp> do
Ví dụ 1: Cha năm nay 35, con lên 4 tuổi. Hỏi sau bao nhiêu năm nữa thì tuổi cha gấp đôi tuổi con?
Ví dụ 2: Cho 2 số tự nhiên a, b khác 0. Hãy tìm ước số chung lớn nhất của chúng.
Chương 5. Cấu trúc lệnh lặp
Lặp với số bước không xác định
24/09/2017
Chương 5. Cấu trúc lệnh lặp
Lặp với số bước không xác định
Kiểm tra điều kiện sau
Cú pháp:
Repeat
Until <điều kiện dừng>;
Ví dụ 1: Cha năm nay 35, con lên 4 tuổi. Hỏi sau bao nhiêu năm nữa thì tuổi cha gấp đôi tuổi con?
Ví dụ 2: Cho 2 số tự nhiên a, b khác 0. Hãy tìm ước số chung lớn nhất của chúng.
24/09/2017
Chương 5. Cấu trúc lệnh lặp
Lặp với số bước không xác định
Lưu ý:
Trong hai trường hợp sử dụng lệnh lặp với số lần lặp không xác định thì điều kiện có ý nghĩa khác nhau: While – điều kiện là điều kiện để tiếp tục lặp/ Repeat – điều kiện là điều kiện để dừng quá trình lặp.
Trong H.Động lặp phải có những thao tác làm thay đổi điều kiện.
Ktra đ.kiện trước/sau khi lặp: Khác nhau
Trước: Có thể không có bước lặp nào được thực hiện
Sau: Luôn có ít nhất một bước lặp được thực hiện
Các dạng lệnh lặp có thể thay thế nhau được
24/09/2017
Chương 5. Cấu trúc lệnh lặp
Lặp với số bước không xác định
Các ví dụ áp dụng
Lập trình tính tổng các chữ số của số tự nhiên n được nhập vào từ bàn phím.
Program Lap;
Var N: LongInt; S: Integer;
BEGIN
Writeln(`Chtrinh tinh tong cac chu so cua N`);
Write(`N = `);Readln(N);
S:=0;
Repeat
S := S + N mod 10;
N := N div 10;
Until N = 0;
Writeln(`Ket qua: `, S);
END.
24/09/2017
Chương 5. Cấu trúc lệnh lặp
Lặp với số bước không xác định
Các ví dụ áp dụng
Lập trình tính tổng các chữ số của số tự nhiên n được nhập vào từ bàn phím.
Program Lap;
Var N: LongInt; S: Integer;
BEGIN
Writeln(`Chtrinh tinh tong cac chu so cua N`);
Write(`N = `);Readln(N);
S:= 0;
While N <> 0 đo
Begin
S := S + N mod 10;
N := N div 10;
End;
Writeln(`Ket qua: `, S);
END.
24/09/2017
Bài tập áp dụng (Câu lệnh lặp)
Tính các tổng đơn giản
Tính tổng, tìm Max, Min của dãy số nguyên (chưa có mảng)
Số nguyên tố, số hoàn hảo
Bài toán Gà – Chó, trăm trâu trăm cỏ (vòng lặp lồng nhau )
UCLN (Chia, Trừ liên tiếp), BCNN.
Tổng các chữ số của số tự nhiên
Điều khiển lặp chương trình, kiểm soát dữ liệu vào.
Chương 5. Cấu trúc lệnh lặp
24/09/2017
Chương 6. Dữ liệu kiểu Mảng (Array)
Định nghĩa: Array là một dãy gồm nhiều phần tử cùng một kiểu. Hay nói cách khác một dữ liệu kiểu array là một dãy của nhiều dữ liệu thuộc cùng một kiểu.
Các phần tử của một dãy phải có cùng kiểu gọi là kiểu cơ sở. Kiểu cơ sở có thể là một kiểu bất kỳ của Pascal.
Các phần tử có mối quan hệ về vị trí trong dãy được xác định bằng chỉ số (index). Chính là thứ tự về vị trí của nó trong dãy
Khai báo Kiểu mảng:
Type TenKieuday = Array[KieuChiSo] of KieuCoSo;
Số phần tử của dãy chính là số giá trị có thể có của kiểu chỉ số.
KieuChiSo có giá trị từ giá trị nhỏ nhất đến giá trị lớn nhất của kiểu chỉ số
Vi dụ : Type DaySoNguyen = Array [1..100] of Integer;
DaySoThuc = Array [‘A’..’Z’] of Real;
Dãy nguyên có 100 phần tử kiểu integer;index từ 1 đến 100.
Dãy dayreal có 26 phần tử kiểu real; index từ ký tự có chr(65) đến chr(90).
DỮ LIỆU KIỂU MẢNG
24/09/2017
Chương 6. Dữ liệu kiểu Mảng (Array)
Khai báo Biến mảng:
Gián tiếp Type TenKieuMang = Array[KieuChiSo] of KieuCoSo;
Var TenBienMang: TenKieuMang;
Vi dụ : Type DaySoNguyen = Array [1..100] of Integer;
DaySoThuc = Array [‘A’..’Z’] of Real;
Var A: DaySoNguyen; B: DaySoThuc;
Trực tiếp: Var TenBienMang: Array[KieuChiSo] of KieuCoSo;
Ví dụ: Var A: Array [1..100] of Integer;
B: Array [‘A’..’Z’] of Real;
Ý nghĩa của hai cách khai báo là như nhau. Tuy nhiên có một số trường hợp phải dùng cách khai báo gián tiếp
DỮ LIỆU KIỂU MẢNG
24/09/2017
Các thao tác trên Mảng
Có thể thực hiện phép gán giá trị của các biến của cùng một kiểu array cho nhau.
Ví dụ var a ,b : DaySoNguyen;
a:= b;
Câu lệnh này gán giá trị của từng phần tử trong dãy b sang phần tử tương ứng của dãy a.
Có thể truy nhập trực tiếp đến từng phần tử của dãy bằng cách dùng TenBienMang[ChiSo].
Ví dụ: a[5] := b[8];
(Truy nhập đến phần tử của biến mảng a có chỉ số là 5 và phần tử của biến mảng b có chỉ số là 8)
Chương 6. Dữ liệu kiểu Mảng (Array)
24/09/2017
Các thao tác trên Mảng
Có thể sử dụng từng phần tử của dãy như là một biến của kiểu dữ liệu cơ sở.
Ví dụ: for i:= 1 to 100 do readln(a[i]);
Nhập xuất dữ liệu cho biến mảng: thực hiện thông qua việc nhập/xuất đối với từng phần tử của mảng.
Ví dụ: For i:= 1 to 100 do Write(a[i]);
Chương 6. Dữ liệu kiểu Mảng (Array)
24/09/2017
Một số đặc tính của kiểu array
Số phần tử của kiểu array là cố định ngay từ khi khai báo. Dù là ta dùng bao nhiêu phần tử thì cũng chiếm đúng số bộ nhớ mà dãy đã khai báo.
Do đó thông thường phải khai báo dư hơn số thường dùng để tránh bị thiếu => lãng phí bộ nhớ.
Các phần tử của dãy được xếp liên tục trong bộ nhớ do đó:
Cho phép khả năng truy xuất ngẫu nhiên => nhanh
Cần có vùng nhớ trống liên tục đủ lớn khi cấp phát bộ nhớ cho dãy. => khó cấp phát.
Chương 6. Dữ liệu kiểu Mảng (Array)
24/09/2017
Nhập – xuất dữ liệu mảng một chiều
Nhập
Read(tên_biến_mảng[chỉ số]);
Readln(tên_biến_mảng[chỉ số]);
Xuất
Write(tên_biến_mảng[chỉ số]);
Writeln(tên_biến_mảng[chỉ số]);
Ví dụ: Nhập và in ra màn hình một dãy gồm n (n>0) số thực.
Chương 6. Dữ liệu kiểu Mảng (Array)
24/09/2017
Một số thao tác khác trên mảng
Tìm kiếm
Sắp xếp
Chèn
Xoá
Chương 6. Dữ liệu kiểu Mảng (Array)
24/09/2017
Bài tập áp dụng (Câu lệnh lặp)
Tính tổng, Max, Min của dãy số (khi có mảng).
Tìm kiếm theo mẫu, không theo mẫu (nâng cao) (số chẵn chục, chính phương,…).
Sắp xếp tăng, vấn đề sinh ngẫu nhiên.
Ma trận (Cộng, nhân, chuyển vị, đchéo, …)
Chương 6. Dữ liệu dạng mảng
24/09/2017
Chương 7. Dữ liệu kiểu Xâu ký tự (String)
Định nghĩa
Kiểu xâu là kiểu dữ liệu dùng để lưu trữ một dãy hữu hạn các kí tự
Có thể coi xâu như là một mảng các kí tự, các phần tử trong xâu được xác định bằng chỉ số
Dùng cặp dấu nháy đơn để biểu diễn xâu
24/09/2017
Khai báo
Kiểu
Type TenKieuXauKyTu = String[độ dài];
TenKieuXauKyTu = String;
Ví dụ: type Str80 = String[80];
type XauKT = String;
Biến
Gián tiếp Var TenBienXau: TenKieuXau;
Trực tiếp Var TenBienXau: String[độ dài];
Ví dụ: var s1:string[80]; s2:string[10];
Chú ý: nếu dùng String thì độ dài là 255 – độ dài cực đại của kiểu xâu.
Chương 7. Dữ liệu kiểu Xâu ký tự (String)
24/09/2017
Nhập – xuất dữ liệu
Có thể nhập xuất trực tiếp cho biến xâu ký tự.
Nhập
Readln(tên_biến_xâu);
Xuất
Write(biểu_thức_xâu);
Writeln(biểu_thức_xâu);
Ví dụ: Chương trình nhập một xâu từ bàn phím, sau đó in 5 lần xâu đó ra màn hình.
Chương 7. Dữ liệu kiểu Xâu ký tự (String)
24/09/2017
Phép toán và phép so sánh
Phép toán
Cộng xâu
Phép so sánh
<, >, <=, >=, =, <>
So sánh dựa trên bảng mã ASCII của từng kí tự trong xâu.
Thực chất là phép so sánh dựa trên thứ tự của bảng chữ cái.
Chương 7. Dữ liệu kiểu Xâu ký tự (String)
24/09/2017
Một số hàm và thủ tục chuẩn
Hàm Length(S)
Hàm Pos(S1, S)
Hàm Copy(S, i, n)
Hàm Concat(S1, S2, …, Sn)
Thủ tục Insert(S1, S, i)
Thủ tục Delete(S, i, n)
Thủ tục Str(n, S)
Thủ tục Val(S, n, OK)
Chương 7. Dữ liệu kiểu Xâu ký tự (String)
24/09/2017
Một số bài toán trên xâu ký tự
Bài toán: Tách từ. Đếm số từ của một văn bản
Bài toán: Mã hóa văn bản theo từng từ.
Bài toán: Tìm từ sinh nhỏ nhất của một xâu ký tự.
Bài toán: Chuyển đổi một số sang các cách biểu diễn trong các hệ cơ số khác nhau.
Bài toán: Chuyển đổi định dạng, xử lý từ trong các quy chuẩn về dữ liệu kiểu xâu ký tự
Chương 7. Dữ liệu kiểu Xâu ký tự (String)
24/09/2017
Chương 8. Dữ liệu kiểu Bản ghi (Record)
Kiểu RECORD
Khái niệm bản ghi: Record (bản ghi) là một kiểu dữ liệu gồm nhiều (hữu hạn) thành phần, các thành phần có thể thuộc về những kiểu dữ liệu khác nhau.
Khai báo:
Type
TenKieuBanGhi = Record
F1: T1;
…
Fn: Tn;
End;
Trong đó: F1, …, Fn là tên các dữ liệu thành phần (các trường)
T1, …, Tn là kiểu của các thành phần
24/09/2017
Chương 8. Dữ liệu kiểu Bản ghi (Record)
Kiểu RECORD
Ví dụ:
Type HocSinh = Record
HoTen: String[30];
NgSinh: String[10];
DiaChi: String[80];
DTB: Real;
HK: String[5];
End;
Var HS: HocSinh;
24/09/2017
Chương 8. Dữ liệu kiểu Bản ghi (Record)
Kiểu RECORD
Khai báo:
Var
TenBienBanGhi: Record
F1: T1;
…
Fn: Tn;
End;
24/09/2017
Chương 8. Dữ liệu kiểu Bản ghi (Record)
Kiểu RECORD
Ví dụ:
Var HS: Record
HoTen: String[30];
NgSinh: String[10];
DiaChi: String[80];
DTB: Real;
HK: String[5];
End;
24/09/2017
Các Thao tác
Có thể gán giá trị các biến bản ghi thuộc cùng một kiểu cho nhau. Khi đó sẽ gán từng trường (field) tương ứng.
Có thể truy cập đến từng trường (field) của record bằng cách dùng cách viết TenBienBanGhi.TenTruong (Toán tử “chấm”)
Mỗi trường (field) có thể dùng như một biến thuộc kiểu dữ liệu tương ứng.
Nhập, xuất dữ liệu cho bản ghi phải thực hiện thông qua việc nhập xuất cho từng trường của biến bản ghi.
Chương 8. Dữ liệu kiểu Bản ghi (Record)
Các thao tác với bản ghi
24/09/2017
Ví dụ: Mỗi phân số được lưu trữ bằng bản ghi với 2 trường Tử số và Mẫu số. Hãy viết chương trình thực hiện việc cộng và nhân hai phân số.
Chương trình:
Khai báo
Type PhanSo = Record
TS, MS: Integer;
End;
Var PS1, PS2, Tg, Th: PhanSo;
Chương 8. Dữ liệu kiểu Bản ghi (Record)
Các thao tác với bản ghi
24/09/2017
Câu lệnh WITH
WITH là một phát biểu dùng với kiểu dữ liệu record
Cú pháp
WITH TenBienBanGhi do Câu lệnh;
trong đó TenBienBanGhi là một biến record, Câu lệnh có thể là một câu lệnh đơn hoặc khối lệnh.
Ý nghĩa phát biểu WITH. Trong phần thân của phát biểu WITH, khi muốn truy cập đến các field của record tương ứng ta chỉ cần dùng tên filed mà không cần dùng toán tử chấm dạng TenBienBanGhi.TenTruong như thông thường.
Ví dụ:
Chương 8. Dữ liệu kiểu Bản ghi (Record)
24/09/2017
Mảng các bản ghi
Mảng với kiểu cơ sở là kiểu bản ghi được dùng thường xuyên
Khai báo
Type KieuBanGhi = Record
F1: T1; … Fn:Tn;
End;
KieuMangBanGhi = Array[KieuChiSo] of KieuBanGhi
Var BienMangBanGhi: KieuMangBanGhi;
Chương 8. Dữ liệu kiểu Bản ghi (Record)
24/09/2017
Mảng các bản ghi
Bài toán: Cần lưu trữ thông tin học sinh với các trường Họ tên, Ngày sinh, Địa chỉ, ĐTB, HK. Viết chương trình nhập dữ liệu cho n (n <= 50) học sinh, sắp xếp theo thứ tự giảm dần của ĐTB, in ra dạng bảng.
Giải quyết bài toán: Có 3 hoạt động chính
Nhập dữ liệu (các thông tin cần thiết);
Xử lý dữ liệu (sắp xếp theo thứ tự);
In dữ liệu (ra màn hình hoặc máy in).
Chương trình:
Chương 8. Dữ liệu kiểu Bản ghi (Record)
24/09/2017
Khái niệm chương trình con
Một đoạn chương trình thực hiện một nhóm thao tác nào đó cần được thực hiện lặp lại nhiều lần tại các thời điểm khác nhau, với các thông tin đầu vào khác nhau sẽ được tổ chức dưới dạng một chương trình con (CTC)
Giải quyết bài toán với các giai đoạn độc lập, thực hiện các chức năng riêng biệt được phân tách ra từ bài toán chính. Các giai đoạn, các chức năng riêng biệt đó cũng sẽ được tổ chức dưới dạng các chương trình con
Hai loại chương trình con: Hàm (Function) và Thủ tục (Procedure)
Chương 9. Chương trình con
24/09/2017
Thủ tục và Hàm
CTC thực hiện một thao tác nào đó, không liên quan đến tính toán, không cần lấy lại một giá trị, thường được viết dưới dạng thủ tục.
CTC thực hiện một quá trình tính toán, cần lấy lại một giá trị, thường được viết dưới dạng hàm.
Với kỹ thuật truyền tham số, có thể chuyển đổi giữa CTC dạng thủ tục và hàm.
Sử dụng Thủ tục hay Hàm còn phụ thuộc vào kinh nghiệm, sự nhạy cảm trong tư duy của người lập trình.
Chương 9. Chương trình con
24/09/2017
Các ví dụ
Bài toán: Cộng và nhân hai phân số. CTC dạng hàm: Tính UCLN của hai số nguyên dương, dùng trong phép giản ước phân số.
Bài toán: Tìm nghiệm nguyên của đa thức. CTC dạng hàm: Tính giá trị đa thức tại giá trị của X.
Bài toán: Bài toán với mảng bản ghi. Các CTC dạng thủ tục: Nhap, XuLy, InManHinh.
Chương 9. Chương trình con
24/09/2017
* Một số tài liệu cũ có thể bị lỗi font khi hiển thị do dùng bộ mã không phải Unikey ...
Người chia sẻ: Hà Trọng Chiên
Dung lượng: |
Lượt tài: 1
Loại file:
Nguồn : Chưa rõ
(Tài liệu chưa được thẩm định)