1. Trang chủ
  2. » Tất cả

Bài giảng lập trình c căn bản chương 6 phạm thế bảo

68 7 0
Tài liệu đã được kiểm tra trùng lặp

Đ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

Tiêu đề Hàm và mảng một chiều
Trường học Trường Đại Học Công Nghệ Thông Tin
Chuyên ngành Lập trình C
Thể loại Bài giảng
Định dạng
Số trang 68
Dung lượng 1,19 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

• Một chương trình con thường được viết mã sao cho nó có thể được gọi nhiều lần từ nhiều nơi trong thời gian chạy của một chương trình có thể được gọi bởi chính nó.. Khai báo hàm, định

Trang 1

CHƯƠNG 6

HÀM và MẢNG MỘT CHIỀU

Trang 3

1 Chương trình con (1)

• Chương trình con: là một phần mã trong một chương

trình lớn hơn, phần mã này thực hiện một tác vụ cụ thể

và tương đối độc lập với phần mã còn lại

• Một chương trình con thường được viết mã sao cho nó

có thể được gọi nhiều lần từ nhiều nơi trong thời gian chạy của một chương trình (có thể được gọi bởi chính nó)

• Các chương trình con thường được tập trung thành các thư viện, là một cơ chế quan trọng cho việc chia sẻ và tái sử dụng mã

Trang 4

• Chương trình con có 2 loại: Thủ tục

(Procedure) và hàm (Function):

– Thủ tục (PROCEDURE): Dùng để thực hiện một hay nhiều nhiệm vụ nào đó

– Hàm (FUNCTION): Trả về một giá trị nào đó (có kiểu vô hướng, kiểu string hoặc kiểu con trỏ) Hàm có thể sử dụng trong các biểu thức

1 Chương trình con (2)

Trang 5

• Phát biểu gọi CHƯƠNG TRÌNH CON không nằm trong các biểu thức tính toán

Trang 6

– nâng cao độ tin cậy của chương trình

• Một đặc điểm nổi bật của chương trình con là nó

có tính đệ quy nhờ thế mà nhiều bài toán được giải quyết dễ dàng

• Chương trình con trong ngôn ngữ C là hàm

Trang 7

2 Khai báo hàm, định nghĩa hàm (1)

• Định nghĩa hàm gồm tên hàm, các tham số và thân

hàm (chứa các phát biểu chương trình), thực thi một việc cụ thể

• Dạng định nghĩa hàm:

Trang 8

2 Khai báo hàm, định nghĩa hàm (2)

trong đó:

– Kiểu trả về (return_type, còn gọi là kiểu hàm) tương ứng

với kiểu của giá trị mà hàm trả về thông qua phát biểu

return

– Tên hàm (func_name) được đặt theo nguyên tắc đặt tên,

nhưng nên đặt tên sao cho dễ hiểu

– ParameterList là danh sách tham số, mỗi tham số được

xác định bởi kiểu dữ liệu và tên Các tham số phân cách

nhau bởi dấu phẩy Có thể là danh sách rỗng

– Phần thân hàm nằm giữa cặp ngoặc { và }

Trang 9

2 Khai báo hàm, định nghĩa hàm (3)

• Nếu không xác định return_type, mặc định sẽ là

• Nếu có phát biểu gọi hàm trước khi hàm được

định nghĩa thì cần có một khai báo hàm trước lời

gọi hàm đó

Trang 12

2 Khai báo hàm và định nghĩa hàm

• Khai báo hàm là đưa ra một “mẫu hàm”, mô tả tên hàm, kiểu trả về và danh sách tham số

• Kết thúc khai báo hàm với dấu chấm phNy “;”

• Dạng khai báo hàm:

return_type func_name (ParameterList)

• Xét các ví dụ sau:

void f1(int i, int j, float k);

void f2(int a, b, float c); //??

f3();

Trang 14

Tham số trong chương trình con

• Chương trình con có thể không cần tham số mà chỉ có các biến riêng (biến cục bộ)

• Trường hợp cần chuyển các giá trị cho hàm khi gọi hàm thì cần định nghĩa danh sách tham số của

hàm, còn gọi là các tham số hình thức

• Mỗi giá trị thực chuyển cho hàm khi gọi hàm được

gọi là đối số (hay tham số thực)

• Mỗi khi gọi hàm, có thể chuyển các đối số khác nhau

Trang 15

– Là khi giá trị của đối số được sao chép vào cho tham số

hình thức N hư vậy, các thay đổi cho tham số hình thức (trong hàm) không làm thay đổi đối với tham số thực – Mặc định, với cách khai báo danh sách tham số với

kiểu và tên, ta có cách chuyển tham trị

Trang 16

4 Truyền tham số (2)

Truyền bằng tham chiếu:

– Khi muốn tham số hình thức và tham số thực cùng

địa chỉ (bản chất là cùng ô nhớ nhưng khác tên), ta

dùng cách chuyển tham chiếu cho hàm

Khai báo tham số của hàm với kí tự ‘&’ ngay trước

tên (giữa KDL và tên)

– N hư vậy, mọi thay đổi đối với tham số hình thức

cũng làm thay đổi tham số thực

Có thể dùng chuyển tham chiếu để trả về giá trị cho

nơi gọi hàm

Trang 17

void main() {

int x= 3, y= 4;

cout<<x<<’ ‘<<y<<endl; hoanVi_1(x, y);

cout<<x<<’ ‘<<y<<endl; hoanVi_2(x, y);

cout<<x<<’ ‘<<y<<endl; }

// Nhận xét các giá trị được in ra

Trang 18

• Phát biểu return nhằm dừng thực thi hàm, trở về

nơi gọi nó; và còn được dùng để trả giá trị (tính toán được) về cho nơi gọi hàm

• Trong một hàm, có thể có nhiều phát biểu return,

nhưng chỉ 1 phát biểu return được thực thi

• Trong một phát biểu return chỉ có 1 giá trị được trả

về

Trang 19

return 1;

}

void main() {

int n;

cout<<”Hay nhap 1 so nguyen:”;

cin>>n;

if (IsPrime(n) == 1) cout<<n<<”la so nguyen to”;

else cout<<n<<”KHONG la so nguyen to”; }

Trang 20

• T ương ứng với vị trí xuất hiện của biến, có:

– Biến địa phương

– Tham số hình thức

– Biến toàn cục

Trang 21

Biến địa phương

• Các biến (hằng) được khai báo trong một hàm

được gọi là các biến địa phương

• Biến có thể được khai báo bất kì đâu trong hàm,

chỉ các phát biểu trong cùng khối mới có thể truy

xuất

• Biến địa phương chỉ tồn tại (thời gian sống) trong

khi khối lệnh có chứa khai báo biến đó thực thi

• Khối lệnh hoặc hàm khác không thể truy xuất

chúng

Trang 22

Tham số hình thức

• Dùng tham số hình thức để chuyển các giá

trị cho hàm

Các tham số hình thức được dùng như

biến địa phương.N ghĩa là:

– biến chỉ được sinh ra khi hàm được gọi thực

thi và bị hủy khi hàm thực thi xong

– Chỉ được truy xuất bởi các phát biểu trong

hàm đó

Trang 23

từ sau khi nó được định nghĩa (khai báo)

• Thời gian sống của biến toàn cục là suốt quá trình chương trình thực thi

Trang 24

cout<<f1(); cout<<f2(); cout<<r;

}

Trang 25

Trường hợp trùng tên biến

• Không thể định nghĩa hai biến trùng tên trong cùng khối

• N ếu có biến địa phương trong hàm trùng tên với biến toàn cục, thì trong hàm đó, mặc định sẽ truy xuất đến biến địa phương

• Để truy xuất đến biến toàn cục, ta dùng phép toán phân định phạm vi, là dấu hai chấm kép [::] ngay trước tên biến

Trang 26

int b = a;

if (a<0) int b = -a;

return b;

}

//Chạy chương trình bằng “tay” xem thử !

Trang 27

7 Biến mảng

• Mảng là một nhóm các biến có cùng tên, cùng

kiểu dữ liệu

• Mảng có thể là một hoặc nhiều chiều

• Mỗi phần tử (mỗi biến) của mảng được truy xuất thông qua chỉ số

Trang 29

M ẫu khai báo: <kiểu dữ liệu> TenBien [ MAX ] ;

• TenBien : theo nguyên tắc đặt tên,

• MAX : phải là hằng (hằng khai báo, hằng giá trị,…)

Trang 30

Với khai báo trên:

• Là ta đã định nghĩa một mảng có MAX phần tử

(= đã định nghĩa MAX biến)

• Tất cả phần tử (biến) này có cùng kiểu dữ liệu

• Mỗi phần tử của mảng có chỉ số từ

[ 0][MAX–1]

Định nghĩa mảng một chiều (2)

Trang 35

Khi mảng được định nghĩa,

- Vùng nhớ cho các phần tử của mảng được cấp

Trang 37

Không thể dùng biến mảng như thông thường

Trang 38

- Ta thường dùng phát biểu lặp để truy xuất các

phần tử của mảng

- Đồng thời dùng thêm một biến kiểu nguyên,

cho biết số phần tử của mảng thực sự đang được dùng

Lưu ý (2)

Trang 39

Vd01

Trang 40

Một số cách mà ngôn ngữ C cho phép khởi tạo giá

Trang 43

Vd02

Trang 44

- Tham số được khai báo như khai báo biến mảng

- Có thể không cần xác định số phần tử của mảng

- Mảng được chuyển tham chiếu

Vd: Hàm xuất nội dung một mảng các số nguyên:

void xuatMang(int a[], int N);

Vd: Hàm nhập nội dung một mảng các số nguyên:

void nhapMang(int a[], int &N);

// lưu ý khi nhập N trong hàm

8 Biến mảng là tham số của hàm

Trang 45

Vd03

Trang 47

- Tham số được khai báo như khai báo biến mảng

- Có thể không cần xác định số phần tử của mảng

- Mảng được chuyển tham chiếu

Vd: Hàm tính tổng các phần tử của mảng nguyên

(vd: a = [3 7 4 9] → S= 23) int tinhTong(int a[], int N);

Trang 48

Vd04

Trang 49

Vd1: Đảo ngược nội dung của mảng Ví dụ:

Trang 51

Vd05

Trang 52

Vd2: Hàm sắp xếp tăng các phần tử của mảng Ví dụ:

a= [3 7 4 9] → a = [3 4 7 9]

Trang 53

Vd06

Trang 54

Vd3: Tìm xem một giá trị x có trong mảng ? Ví dụ:

a= [3 7 4 9], x= 4

→ x nằm ở vị trí 2 trong mảng a

Trang 55

x= 3

k=2

Trang 56

x= 4

k=-1 (khong co x

trong mang)

Trang 57

Vd07

Trang 58

Vd07b

Trang 59

Vd4: Xóa phần tử x khỏi mảng (nếu có) Ví dụ:

a= [6 7 3 2 9 2 8], n=7

x= 3 → a= [6 7 2 9 2 8], n= 6

x= 2 → a= [6 7 9 8], n= 4

Trang 62

Xóa phần tử x khỏi mảng (nếu có)

Trang 63

Vd08a

Trang 64

Xóa tất cả phần tử x khỏi mảng (nếu có)

Trang 65

Vd08b

Trang 66

Bài tập nhập môn lập trình

Phần 1: Các bài tập không dùng cấu trúc điều khiển

1 Viết chương trình nhập 2 số In ra cho biết giá trị của số lớn

2 Viết chương trình nhập số nguyên N, in ra cho biết góc có số đo N0 thuộc cung phần tư số mấy của đường tròn lượng giác Biết: góc có số đo [0 90): cung phần tư số 1, [90 180): cung phần tư số 2, [180 270): cung phần tư số 3, [270 360): cung phần tư số 4

3 Viết chương trình nhập 2 số nguyên a, b In ra cho biết chu vi, diện tích của hình chữ nhật có

độ dài 2 cạnh là a, b

4 Viết chương trình nhập vào 1 ký tự, in ra ký tự in hoa tương ứng

5 Viết chương trình nhập vào 1 số nguyên, in ra ký tự tương ứng và ngược lại, nhập một ký tự,

in ra mã ASCII của ký tự đó

Phần 2: Cấu trúc điều khiển: rẽ nhánh, lặp, hàm

1 Viết chương trình nhập vào 2 số a, b Giải và biện luận phương trình bậc nhất ax + b = 0

2 Viết chương trình nhập vào 3 số a, b, c Giải và biện luận phương trình trùng phương ax4 +

6 Viết chương trình nhập vào 3 số nguyên không âm d, m, y In ra cho biết ngày d/m/y là ngày thứ mấy trong tuần Các dữ liệu nhập vào luôn hợp lệ, chỉ xét các năm trong hạn 1 3000 (Nhắc lại: năm nhuận là năm chia hết cho 400 hoặc chia hết cho 4 và không chia hết cho 100)

7 Viết chương trình nhập số nguyên dương H Dùng các ký tự * vẽ quạt 4 cánh có tâm ở giữa màn hình Mỗi cánh quạt là tam giác vuông cân đặc có độ rộng cạnh góc vuông là H

Ví dụ với H = 3 ta sẽ có cánh quạt như sau ở giữa màn hình

3

12

!3

1

!2

11

N

++++

!

1

!3

1

!2

11

1

N

N

−+++

642

0

!N%2N

1x3x5x x

!

xN x x x N

Trang 67

9 Viết chương trình nhập số nguyên N (kiểu char) In ra cho biết biểu diễn nhị phân của N

10 Viết chương trình nhập số nguyên không âm N In ra dãy Fibonaci với các số hạn F0, F1, …,

N

C K

15 Viết chương trình nhập số nguyên dương N (N≤1000) In ra N số nguyên tố đầu tiên

16 Viết chương trình nhập 2 phân số

Phần 3: Mảng 1 chiều - Chuỗi ký tự

18 Viết chương trình nhập số nguyên dương N (N ≤ 100) thực hiện:

a Nhập N số nguyên vào dãy a0, a1, a2,

b Xuất dãy vừa nhập ra màn hình

c Đếm xem dãy vừa nhập có bao nhiêu số nguyên tố, in các số nguyên tố đó ra màn hình

d Nhập số nguyên X, tìm vị trí xuất hiện của X trên dãy vừa nhập

e Nhập số nguyên Y, xóa một số có giá trị Y ra khỏi dãy vừa nhập

f Nhập số nguyên Z, tìm vị trí xuất hiện của số trên dãy có giá trị gần với Z nhất

19 Viết chương trình nhập số nguyên dương N (N ≤ 100) thực hiện:

a Nhập N số nguyên vào dãy a0, a1, a2,

b Xuất dãy vừa nhập ra màn hình

c Kiểm tra xem dãy vừa nhập có phải là dãy tăng dần hay không

d Nếu dãy không tăng dần, hãy sắp xếp lại, xuất dãy ra màn hình

e Nhập số nguyên X, chèn X vào dãy đang có sao cho dãy vẫn được sắp xếp tăng dần, xuất dãy kết quả ra màn hình

20 Viết chương trình nhập số nguyên dương N (N ≤ 100) thực hiện:

a Nhập N số nguyên vào dãy a0, a1, a2,

b Tìm vị trí của số bé nhất trong dãy

c Tìm vị trí của số âm lớn nhất trong dãy

d Tìm tất cả các vị trí của dãy mà số tại đó bé hơn 2 số kề bên Các số ở biên chỉ cần xét với 1 số kề bên

e Tìm tất cả bộ ba số i, j, k thỏa ai, aj, ak là bộ 3 số pitago

21 Viết chương trình nhập chuỗi ký S:

a Đếm và cho biết số lượng khoảng trắng, số lượng ký số, số lượng chữ cái latin, số lượng các ký tự khác

b Đếm và cho biết số lượng từ của chuỗi – các từ cách nhau bởi khoảng trắng

c Biến đổi chuỗi sao cho các ký tự đầu mỗi từ là ký tự in hoa, các ký tự khác in thường

Trang 68

22 Viết chương trình nhập chuỗi ký S, đếm và in cho biết số lượng của mỗi chữ cái latin trong chuỗi (không phân biệt chữ in hoa và chữ in thường)

23 Viết chương trình nhập 3 chuỗi ký tự S, S1, S2 Hãy tìm trên chuỗi S tất cả những lần xuất hiện của S1 và thay bằng S2

Phần 4: Struct

24 Viết chương trình nhập thông tin của một sinh viên, xuất thông tin sinh viên vừa nhập ra màn hình Thông tin một sinh viên gồm: Mã sinh viên (chuỗi 8 ký tự), họ và tên sinh viên (chuỗi 30 ký tự), giới tính (nam/nữ), địa chỉ liên hệ (chuỗi 50 ký tự), điểm 6 môn học

25 Viết chương trình quản lý một lớp học gồm tối đa 150 sinh viên, mỗi sinh viên có các thông tin như bài trước Chương trình phải đảm bảo một số tính năng:

a Nhập mới một danh sách sinh viên

b Tìm một sinh viên trong danh sách theo mã sinh viên

c Thêm một sinh viên vào danh sách

d Hủy một sinh viên ra khỏi danh sách

e Xuất danh sách sinh viên ra màn hình

f Xuất danh sách các sinh viên còn nợ điểm (điểm < 5) của ít nhất một môn học

Ngày đăng: 23/03/2023, 22:19

🧩 Sản phẩm bạn có thể quan tâm

w