Ôn tẬp hÀmanhtt/slidesss/ktlt182/chap1.pdfbài tập 1: viết chương trình có định...
TRANSCRIPT
Click to edit Master subtitle style
ÔN TẬP HÀM
Khoa Công nghệ thông tin Trường đại học Ngoại ngữ - tin học TP.HCM (HUFLIT)
1
Các loại tham số của hàmCác loại hàmCấu trúc cơ bản của chương trình
NỘI DUNG
2
CÁC LOạI THAM Số CủA HÀM
3
Tham số của hàm được truyền theo các cách sau:Truyền tham trịTruyền tham chiếu ref, out
CÁC LOạI THAM Số CủA HÀM
4
Truyền tham trị: Hãy viết hàm tăng giá trị củabiến số nguyên nhập vào b đơn vị
CÁC LOạI THAM Số CủA HÀM
Kết quả:0
public class Program{
static void AddMore(int x, int b){
x = x + b;}
static void Main(string[] args){
int a = 0;AddMore(a, 6);Console.WriteLine(a);
}}
public class Program{
static void AddMore(int x, int b){
x = x + b;}
static void Main(string[] args){
int a = 0;AddMore(a, 6);Console.WriteLine(a);
}}
5
Truyền tham chiếu: Hãy viết 1 hàm tăng giá trịcủa biến số nguyên nhập vào b đơn vị với ref
CÁC LOạI THAM Số CủA HÀM
Kết quả:6
public class Program{
static void AddMore(ref int x, int b){
x = x + b;}
static void Main(string[] args){
int a = 0;AddMore(ref a, 6);Console.WriteLine(a);
}}
public class Program{
static void AddMore(ref int x, int b){
x = x + b;}
static void Main(string[] args){
int a = 0;AddMore(ref a, 6);Console.WriteLine(a);
}}
6
Nhận xét:Khi truyền theo kiểu tham trị, một bản saocủa đối số lúc gọi hàm sẽ được gán vào thamsố của hàm. Do đó đối số được truyền hoàntoàn không thay đổi giá trị sau lời gọi hàm.
Khi truyền theo kiểu tham chiếu (dùng ref hoặc out) thì đối số được truyền và tham sốcủa hàm là một. Do đó giá trị của đối số sẽthay đổi nếu giá trị tham số bị đổi trong hàm
CÁC LOạI THAM Số CủA HÀM
7
Nhận xét:Khi truyền theo tham chiếu sử dụng ref thìta phải gán giá trị ban đầu cho đối tượngtrước khi truyền vào hàm. Ngược lại dùngout thì không cần thiết.
CÁC LOạI THAM Số CủA HÀM
8
Bài tập 1: Viết các hàm tính tổng, hiệu, tích, thương của 2 số nguyên nhập vào từ bàn phím. Sau đó xuất các kết quả ra màn hình.
Bài tập 2: Viết hàm có định nghĩa sau đây:Yêu Cầu: Tìm số lớn nhất trong 3 số nhập vàoInput: số nguyên a, b, cOutput: số lớn nhất trong a,b,c.
BÀI TẬP
9
Bài tập 3: Viết hàm theo định nghĩa sau đây:Mô tả: Xuất ra ngày thứ mấy tính từ ngày 1/1 củanăm đó.Input: int ngay, thang, namOutput: số ngày thứ mấy của năm
Ví dụ:Input: 14,2,2017Output: 45
BÀI TẬP
10
BÀI TẬP
11
CÁC LOạI HÀM
12
Trên thực tế, có nhiều cách chia thành nhiềuloại hàm dựa trên những tiêu chí khác nhau.
Ở đây, ta có thể chia thành các loại hàm sau:Hàm voidHàm tính toánHàm kiểm traHàm trả nhiều giá trị
CÁC LOạI HÀM
13
Hàm voidHàm void thường dùng để nhập các giá trị biến, xuất các giá trị biến, chuỗi bất kỳ.Ví dụ:
CÁC LOẠI HÀM
14
public class Program{
static void XuatHello(){
Console.WriteLine("Hello World! ");}
static void Main(string[] args){
XuatHello();}
}
public class Program{
static void XuatHello(){
Console.WriteLine("Hello World! ");}
static void Main(string[] args){
XuatHello();}
}
Hàm tính toánHàm tính toán thường dùng để thực hiện một sốphép toán và trả về giá trị kết quả.Ví dụ:
CÁC LOẠI HÀM
15
public class Program{
static int Tong(int a, int b){
return a+b;}
static void Main(string[] args){
int a = 5, b = 7;Console.WriteLine(Tong(a,b));
}}
public class Program{
static int Tong(int a, int b){
return a+b;}
static void Main(string[] args){
int a = 5, b = 7;Console.WriteLine(Tong(a,b));
}}
Hàm kiểm traHàm kiểm tra thường dùng để thực hiện so sánh, kiểm tra và trả về kết quả đúng/sai.Ví dụ:
CÁC LOẠI HÀM
16
public class Program{
static bool LaSoLe(int a){
if ( a % 2 == 0 ) return false;else return true;
}
static void Main(string[] args){
int a = 5;if (LaSoLe(a))
Console.WriteLine(“So le”);else
Console.WriteLine(“So chan”);}
}
public class Program{
static bool LaSoLe(int a){
if ( a % 2 == 0 ) return false;else return true;
}
static void Main(string[] args){
int a = 5;if (LaSoLe(a))
Console.WriteLine(“So le”);else
Console.WriteLine(“So chan”);}
}
Hàm trả nhiều giá trịHàm trả nhiều giá trị thường dùng để thực hiện các phép tính toán và trả về nhiều kết quả sau khi thực hiện các phép tính toán.Ví dụ: Hãy viết chương trình có hàm tính các kết quả khi có vận tốc ban đầu (v0), gia tốc (a) và thời gian (t). Kết quả trả về gồm:
• Vận tốc tức thời tại t: vt = v0 + a*t• Quảng đường đi được s: s = v0*t + ½ * a * t2
ĐK: gia tốc a > 0.
CÁC LOẠI HÀM
17
CÁC LOẠI HÀM
18
static void TimVtvaGT(double v0, double a, double t, out double vt, out double s){
vt = v0 + a * t;s = v0 * t + 1 / 2.0 * a * t;
}
static void Main(string[] args){
double v0 = 10.5;double a = 4;double t = 0.25;double vt, s;
TimVtvaGT(v0, a, t, out vt, out s);Console.WriteLine("Van toc tai thoi gian t la {0} km/h di duoc {1} km", vt, s);
}
static void TimVtvaGT(double v0, double a, double t, out double vt, out double s){
vt = v0 + a * t;s = v0 * t + 1 / 2.0 * a * t;
}
static void Main(string[] args){
double v0 = 10.5;double a = 4;double t = 0.25;double vt, s;
TimVtvaGT(v0, a, t, out vt, out s);Console.WriteLine("Van toc tai thoi gian t la {0} km/h di duoc {1} km", vt, s);
}
Hàm voidBài tập 1: Viết chương trình có định nghĩa hàm
là nhập vào 3 số a, b, c sử dụng tham số ref vàmột hàm khác xuất ra giá trị 3 số a, b, c đó.
Bài tập 2: Viết chương trình có định nghĩa hàmđầu vào là một số nguyên a. Xuất ra màn hình“Chien binh bai tran” nếu như số a âm, ngược lạithì “Chien binh thang tran”.
BÀI TậP
19
BÀI TậP
20
BÀI TậP
21
BÀI TậP
22
Bài tập 6: Hãy viết chương trình có định nghĩahàm đầu vào là một số nguyên n. Hàm trả vềgiá trị số đảo của n và kèm với giá trị dấungược lại. Ví dụ:
n = -123, kết quả : 321.n = 653, kết quả: 356.
BÀI TậP
23
Bài tập 7: Viết chương trình có định nghĩa hàm:Mô tả: tính tổng các chữ số chẵnĐầu vào: số nguyên n.Đầu ra: trả về tổng các chữ số chẵn.
Ví dụ: n = 3658, kết quả: 14.
Bài tập 8: Viết chương trình có định nghĩa hàm:Mô tả: tìm số lớn nhất trong các chữ sốĐầu vào: số nguyên n.Đầu ra: trả về số lớn nhất trong các chữ số.
Ví dụ: n = 3958, kết quả: 9.
BÀI TẬP
24
Bài tập 9: Viết chương trình có định nghĩa hàm:Mô tả: tính giai thừa của số nhập vào.Đầu vào: số nguyên n.Đầu ra: trả về 0 nếu n<0, và n! nếu như n >= 0
Bài tập 10: Viết chương trình có định nghĩa hàm:Mô tả: tính bao nhiêu cách thành lập số có 4 chữ sốkhác nhau, trừ n số (n < 9).Đầu vào: số tự nhiên n.Đầu ra: trả về số cách chọn.
Ví dụ: n = 1, kết quả: 3024.
BÀI TẬP
25
Bài tập 11: Viết chương trình có định nghĩahàm:
Mô tả: tính tổ hợp của k, n.Đầu vào: số nguyên k, n.Đầu ra: Trả về tổ hợp k, n theo công thức sau:
BÀI TẬP
26
Hàm kiểm traBài tập 12: Viết chương trình có định nghĩa hàm:
Mô tả: kiểm tra số chính phương.Đầu vào: số nguyên n.Đầu ra: trả về true nếu n là số chính phương và falsenếu n không phải là số chính phương.
BÀI TẬP
27
Bài tập 13: Viết chương trình có định nghĩa hàm:Mô tả: kiểm tra số nguyên tố.Đầu vào: số nguyên n.Đầu ra: trả về true nếu n là số nguyên tố và false nếun không phải là số nguyên tố.
BÀI TẬP
28
Bài tập 14: Viết chương trình có định nghĩa hàm:Mô tả: kiểm tra số đối xứng.Đầu vào: số nguyên n.Đầu ra: trả về true nếu n là số đối xứng và false nếu n không phải là số đối xứng.
BÀI TẬP
29
Bài tập 15: Viết chương trình có định nghĩa hàm:Mô tả: kiểm tra cặp số thân thiết.Đầu vào: số nguyên n, m.Đầu ra: trả về true nếu n, m là cặp thân thiết và falsenếu ngược lại.
Định nghĩa: Số này bằng tổng tất cả các ước của số kia (trừchính số đó) và ngược lại. Ví dụ: 220 và 284.
Số 220 có ước số là 1, 2, 4, 5, 10, 11, 20, 44, 55 và 110. Tổng của chúng bằng 284. Ngược lại, số 284 có ước số là: 1, 2, 4, 71, 142 và tổng của chúng bằng 220.
BÀI TẬP
30
Bài tập 16: Viết chương trình có định nghĩa hàm:Mô tả: kiểm tra cặp số hứa hôn.Đầu vào: số nguyên n, m.Đầu ra: trả về true nếu n, m là cặp số hứa hôn vàfalse nếu ngược lại.
Định nghĩa: Tổng các ước của số này (không tính số đó) nhiều hơn số kia đúng 1 đơn vị. Ví dụ: 48 và 75.
BÀI TẬP
31
Bài tập 17: Viết chương trình có định nghĩa hàm:Mô tả: kiểm tra số phong phú.Đầu vào: số nguyên n.Đầu ra: trả về true nếu n là số phong phú và falsenếu ngược lại.
Định nghĩa: Số phong phú là các số mà tổng các ước sốcủa số đó (không kể chính nó) lớn hơn số đó.
Ví dụ: 12.
BÀI TẬP
32
Bài tập 18: Viết chương trình có định nghĩa hàm:Mô tả: kiểm tra tạo thành cấp số cộng.Đầu vào: 3 số nguyên a,b,c.Đầu ra: trả về true nếu tạo thành cấp số cộng vàfalse nếu ngược lại.
BÀI TẬP
33
Hàm trả về nhiều giá trịBài tập 19: Viết chương trình có định nghĩa hàm:
Mô tả: tính chu vi và diện tích hình tròn.Đầu vào: bán kính r.Đầu ra: trả về chu vi và diện tích hình tròn.
Công thức: C = pi * r * 2S = pi * r2
BÀI TẬP
34
Bài tập 20: Hãy viết chương trình có hàm tính các kết quả khi có vận tốc ban đầu (v0), đi chậm dần với gia tốc a. Kết quả trả vềgồm:
• Thời gian t khi xe dừng lại: t = v0 / a.• Quảng đường đi được s: s = v0*t + ½ * a * t2
ĐK: gia tốc a > 0.
BÀI TẬP
35
Bài tập 21: Hãy viết chương trình định nghĩa hàm giải quyết bài toán sau đây:
Dân gian Việt Nam có một câu đố:Trăm trâu trăm cỏTrâu đứng ăn năm
Trâu nằm ăn baLụm khụm trâu già
Ba con một bóSau khi giải được bài tập trên với 4 trâu đứng, 18 trâu nằm và 78 trâu
già. Hãy giải bài này trong trường hợp tổng quát với n con (vừa trâu đứng, trâu nằm, trâu già) và m bó cỏ thì sẽ giải như thế nào. Chú ý rằng phải có đủ phải có đầy đủ ba loại trâu và đủ 3 con trâu già mới được ăn 1 bó cỏ.
BÀI TẬP
36
Dữ liệu nhập: hai số nguyên n, m cách nhau một khoảng trắng (1 ≤ n, m ≤ 1000)Dữ liệu xuất:
Nếu có đáp án, in ra ba số nguyên a, b và c thể hiện số trâu đứng, trâu nằm và trâu già, mỗi số cách nhau một khoảng trắng. Nếu cónhiều đáp án, chỉ cần in một đáp án bất kỳ.Nếu không có đáp án, in ra -1.
BÀI TẬP
37
CấU TRÚC CƠ BảN CủA CHƯƠNG TRÌNH
38
Một chương trình thường được tạo thành bởicấu trúc sau:
Hàm Nhập (input)Hàm Xuất (output)Hàm Xử lý (process)Hàm Main() (Gọi 3 hàm trên)
Người ta thường xây dựng theo cấu trúc trênđể đảm bảo tường minh, dễ hiểu và dễ bảo trì.
CấU TRÚC CủA CHƯƠNG TRÌNH
39
CấU TRÚC CủA CHƯƠNG TRÌNH
40
Ví dụ: Viết chương trình tính bình phương củamột số nguyên nhập từ bàn phím.
CấU TRÚC CủA CHƯƠNG TRÌNH
41
Yêu Cầu: Hãy viết chương trình có đủ các hàmInput (hàm nhập), Process (hàm xử lý), hàm Output (hàm xuất) để thực hiện các bài tập sau.Bài tập 1: Viết chương trình nhập vào 2 số nguyên
a và b, sau đó định nghĩa hàm tăng giá trị của 2 sốlên 10 đơn vịBài tập 2: Viết chương trình nhập vào 3 số nguyên
a, b, c. Sau đó định nghĩa hàm kiểm tra 3 số trên cótạo thành cấp số cộng hay không. Nếu có thì tănggấp đôi giá trị của 3 số trong hàm
BÀI TẬP
42
Bài tập 3: Chú mèo máy Doreamon có n cái bánh cần rán, mỗi bánh có hai mặt, mỗi lần rán một mặt. Doreamon có một cái chảo có thể rán được k cái bánh cùng lúc. Mỗi lần rán một mặt bánh tốn 5 phút. Hỏi Doreamon cần ít nhất bao nhiêu phút để rán hết n cái bánh?
Input: 2 số nguyên n, k cách nhau một khoảng trắng (1 ≤ n, k ≤ 1000)Output: số phút ít nhất để rán hết n cái bánh.Ví dụ: input: 8 4 - output: 20
input: 6 4 - output: 20
BÀI TẬP
43
Bài tập 4: Nhân dịp năm mới, hãng bia K có chương trình khuyến mãi cho khách hàng. Nội dung của chương trình là nếu khách hàng đem đến cửa hàng 10 vỏ chai bia thì sẽ được nhận 03 chai bia khuyến mãi. Vậy nếu ban đầu anh Bo mua n chai bia thì tổng cộng anh có thể uống được tất cả bao nhiêu chai?
Input: số nguyên n (1 ≤ n ≤ 1.000) xác định số chai bia anh Bo mua ban đầu.Output: số nguyên m thể hiện tổng cộng số chai bia anh Bo có thể uống.Ví dụ: input: 10 – output: 13.
input: 24 – output: 33.
BÀI TẬP
44
Bài tập 5: Sở giao thông Hà Nội quyết định bán đấu giá các biển số xe đẹp để lấy tiền ủng hộ đồng bào lũ lụt miền Trung. Một biển số xe được gọi là đẹp nếu nó là số nguyên dương T thỏa mãn các điều kiện sau:
A ≤ T ≤ B trong đó A, B là hai số nguyên dương cho trước;T là một số nguyên tố;T là một số đối xứng. Ví dụ: 12321 là một số đối xứng. Yêu cầu: Cho hai số nguyên dương A và B, hãy tìm số lượng các biển số xe đẹp.Input: 2 số nguyên A & B cách nhau một khoảng trắng (104 ≤ A < B< 105)Output: số nguyên n xác định số lượng biển số xe đẹp.
Ví dụ: input: 11111 22222 – output: 23
BÀI TẬP
45
Bài tập 6: Cho một số nguyên n. Hãy đếm xem trong kết quả của số n! (n giai thừa) có bao nhiêu chữ số 0 liên tiếp tính từ hàng đơn vị.
Input: số nguyên n (1 ≤ n ≤ 1.000)
Output: Là số lượng chữ số 0 liên tiếp tính từ hàng đơn vịcủa n!.Ví dụ: input: 20 - output: 4
(20! = 2.432.902.008.176.640.000)
Bài tập 7: giải lại bài 21 trên theo cấu trúc hoàn chỉnh (3 loại hàm).
BÀI TẬP
46
Các loại tham số của hàm
Các loại hàm
Cấu trúc cơ bản của chương trình
TÓM TẮT
47