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

Bài giảng Tin học đại cương Phần 2: Bài 6 - Nguyễn Thành Kiên

36 90 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 36
Dung lượng 730,3 KB

Nội dung

Khái niệm hàm trong C; khai báo và sử dụng hàm trong C; nguyên mẫu hàm trong C là những nội dung chính mà Bài giảng Tin học đại cương Phần 2: Bài 6 - Hàm hướng đến trình bày. Mời các bạn cùng tìm hiểu và tham khảo nội dung thông tin tài liệu.

TIN HỌC ĐẠI CƯƠNG Bài 6. HÀM                          Nguyễn Thành Kiên           Bộ mơn Kỹ thuật máy tính        Khoa Cơng nghệ thơng tin – ĐHBK HN Bài 6. HÀM   6.1. Khái niệm hàm trong C 6.2. Khai báo và sử dụng hàm trong C     6.2.1. Khai báo hàm 6.2.2. Sử dụng hàm 6.2.3. Phân loại biến sử dụng trong chương  trình 6.2.4. Nguyên mẫu hàm trong C Bài 6. HÀM   6.1. Khái niệm hàm trong C 6.2. Khai báo và sử dụng hàm trong C     6.2.1. Khai báo hàm 6.2.2. Sử dụng hàm 6.2.3. Phân loại biến sử dụng trong chương  trình 6.2.4. Nguyên mẫu hàm trong C 6.1. Khái niệm hàm trong C  Tại sao cần chương trình con?   Trong khi lập trình chúng ta thường gặp những  đoạn chương trình lặp đi lặp lại nhiều lần ở những  chỗ khác nhau.  Để tránh rườm rà và tiết kiệm cơng sức, những  đoạn chương trình đó được thay thế bởi các  chương trình con tương ứng và khi cần ta chỉ việc  gọi những chương trình con đó ra mà khơng phải  viết lại cả đoạn chương trình đó 6.1. Khái niệm hàm trong C  Tại sao cần chương trình con?   Khi giải quyết một bài tốn lớn thì chương trình  của ta có thể rất lớn và dài, điều này làm cho việc  sửa chữa, gỡ rối, hiệu chỉnh chương trình gặp  nhiều khó khăn.  Nếu ta chia bài tốn lớn, phức tạp ban đầu thành  các bài tốn con nhỏ hơn và tương đối độc lập với  nhau, rồi lập các chương trình con giải quyết từng  bài tốn con, cuối cùng ghép các ctc đó lại thành  một chương trình giải quyết bài tốn ban đầu thì  sẽ rất tiện lợi cho việc phát triển, kiểm tra và sửa  chữa cả chương trình.  6.1. Khái niệm hàm trong C    Trong C, một số ctc thơng dụng đã được  thực hiện sẵn như sin, cos, pow, sqrt Những chương trình con này nằm trong thư  viện các chương trình con mẫu , do trình biên  dịch C quản lý, vì vậy chúng cịn được gọi là  các chương trình con chuẩn.  Trình biên dịch Turbo C++ phân loại và đặt  các chương trình con chuẩn này trong các  đơn vị chương trình khác nhau dưới dạng các  tệp tiêu đề như stdio.h, conio.h, math.h,  string.h 6.1. Khái niệm hàm trong C   Việc chia nhỏ một chương trình thành các  chương trình con đảm nhận những cơng việc  nhỏ khác nhau chính là tư tưởng chính cho  phương pháp lập trình có cấu trúc (structured  programming) Cần lưu ý là có khi một chương trình con chỉ  sử dụng đúng một lần nhưng nó vẫn làm cho  chương trình trở nên sáng sủa và dễ đọc, dễ  hiểu hơn Bài 6. HÀM   6.1. Khái niệm hàm trong C 6.2. Khai báo và sử dụng hàm trong C     6.2.1. Khai báo hàm 6.2.2. Sử dụng hàm 6.2.3. Phân loại biến sử dụng trong chương  trình 6.2.4. Nguyên mẫu hàm trong C Bài 6. HÀM   6.1. Khái niệm hàm trong C 6.2. Khai báo và sử dụng hàm trong C     6.2.1. Khai báo hàm 6.2.2. Sử dụng hàm 6.2.3. Phân loại biến sử dụng trong chương  trình 6.2.4. Nguyên mẫu hàm trong C 6.2.1. Khai báo hàm  Cú pháp  []   ([,…])  { //Thân hàm  }  Trong thân hàm có ít nhất một lệnh return.  10 6.2.3. Phân loại biến sử dụng  trong chương trình  Phạm vi của các biến   Ngun tắc sử dụng biến là biến khai báo trong  phạm vi nào thì được sử dụng trong phạm vi đó.  Một biến có thể được khai báo trong chương trình  chính hoặc trong các chương trình con hoặc thậm  chí trong một lệnh khối.    Nếu biến được khai báo trong một lệnh khối thì nó chỉ  có thể được gọi trong lệnh khối đó thơi, khơng thể gọi từ  bên ngồi lệnh khối được  Tương tự cho biến khai báo trong CTC và ctc 22 Lưu ý về phạm vi của biến  Việc trùng tên của các biến:    Trong cùng một phạm vi ta khơng được phép khai báo 2  biến có cùng tên nhưng ta có thể khai báo 2 biến trùng tên  thuộc 2 phạm vi khác nhau.  Nếu có 2 biến trùng tên khai báo ở 2 phạm vi khác nhau thì  xảy ra 2 trường hợp:   Hai phạm vi này tách rời nhau: khi đó các biến sẽ có tác dụng  ở phạm vi riêng của nó, khơng ảnh hưởng đến nhau Phạm vi này nằm trong phạm vi kia: khi đó nếu chương trình  đang ở phạm vi ngồi (tức là đang thực hiện câu lệnh nằm ở  phạm vi ngồi) thì biến khai báo ở phạm vi ngồi có tác dụng,  cịn nếu chương trình đang ở phạm vi trong (đang thực hiện  câu lệnh nằm ở phạm vi trong) thì biến khai báo ở phạm vi  trong sẽ có tác dụng và nó che lấp biến trùng tên ở bên ngồi 23 Ví dụ về phạm vi của biến #include void main() { { int a = 1; printf(“\n a = %d”,a); { int a = 2; printf(“\n a = %d”,a); } printf(“\n a = %d”,a); } { int a = 3; printf(“\n a = %d”,a); } } 24 6.2.3. Phân loại biến sử dụng  trong chương trình  Biến địa phương (Local Variable):   Là các biến được khai báo trong lệnh khối  hoặc trong thân chương trình con Biến tồn cục (Global Variable):  Là biến được khai báo sau phần khai báo  tệp tiêu đề và khai báo hàm nguyên mẫu  25 Ví dụ về phạm vi của biến #include void main() { { int a = 1; printf(“\n a = %d”,a); { int a = 2; printf(“\n a = %d”,a); } printf(“\n a = %d”,a); } { int a = 3; printf(“\n a = %d”,a); } }  26 Ví dụ về biến tồn cục #include #include int a, b, c; int tich() { printf("\n Gia tri cac bien tong the a, b, c: "); printf(" a = %-5d b = %-5d c = %-5d"); return a*b*c; } void main() { clrscr(); printf("\n Nhap gia tri cho so nguyen a, b, c: "); scanf("%d %d %d",&a,&b,&c); printf("\n Tich cua so la %d",tich(a,b,c)); getch(); 27 }  Biến register    Thanh ghi có tốc độ truy nhập nhanh hơn so với các  loại bộ nhớ khác (RAM, bộ nhớ ngồi) Nếu một biến thường xun sử dụng được lưu vào  trong thanh ghi thì tốc độ thực hiện của chương trình  sẽ được tăng lên Để làm điều này ta đặt từ khóa register trước khai  báo của biến đó.    Ví dụ:  register int a; Số lượng và kích thước các thanh ghi có hạn  Số  lượng biến khai báo register sẽ khơng nhiều và  thường chỉ áp dụng với những biến có kích thước  nhỏ như kiểu char, int.  28 Biến static    Một biến cục bộ khi ra khỏi phạm vi của biến  đó thì bộ nhớ dành để lưu trữ biến đó sẽ  được giải phóng Nếu cần lưu giá trị của các biến cục bộ này,  cần khai báo biến với từ khóa static  Ví dụ:  static int a; Biến static là biến tĩnh, nghĩa là nó sẽ  được cấp phát một vùng nhớ thường xun  từ lúc khai báo và chỉ giải phóng khi chương  trình chính kết thúc 29 Ví dụ về biến static # include # include void fct() { static int count = 1; printf("\n Day la lan goi ham fct lan thu %2d", count++); } void main() { int i; for(i = 0; i < 10; i++) fct(); getch(); } 30 Biến toàn cục và biến static   Như vậy về thời gian tồn tại biến static rất  giống với biến toàn cục,  chỉ có một sự khác biệt nhỏ là biến tồn cục  thì có thể truy cập ở mọi nơi trong chương  trình (miễn là ở đó khơng có biến địa phương  nào cùng tên che lấp nó), cịn biến static thì  chỉ có thể truy nhập trong phạm vi mà nó  được khai báo mà thơi.  31 Bài 6. HÀM   6.1. Khái niệm hàm trong C 6.2. Khai báo và sử dụng hàm trong C     6.2.1. Khai báo hàm 6.2.2. Sử dụng hàm 6.2.3. Phân loại biến sử dụng trong chương  trình 6.2.4. Nguyên mẫu hàm trong C 32 6.2.4. Nguyên mẫu hàm trong C  #include  #include  int max(int, int, int); // khai báo nguyên mẫu hàm void main() { int a,b,c; clrscr(); printf("\n Nhap gia tri cho 3 so nguyen a, b, c: "); scanf("%d %d %d",&a,&b,&c); printf("\n Gia tri cac so vua nhap: "); printf(" a = %­5d b = %­5d c = %­5d"); printf("\n Gia tri lon nhat trong 3 so la %d",max(a,b,c)); getch(); } int max(int x, int y, int z) { int max; max = x>y?x:y; max = max>z?max:z; return max; } 33 6.2.4. Nguyên mẫu hàm trong C  Nếu muốn đặt phần khai báo hàm nằm sau hàm  main()  Cần khai báo nguyên mẫu của hàm   Để báo cho chương trình dịch biết có một hàm có dịng đầu  hàm giống như trong phần ngun mẫu này Chương trình dịch có thể kiểm tra được là các lời gọi hàm  trong chương trình chính có đúng hay khơng    Có phù hợp về kiểu dữ liệu trả về hay khơng Các tham số thực có kiểu dữ liệu có phù hợp với kiểu dữ liệu  đã khai báo hay khơng Trong hàm ngun mẫu có thể khơng cần nêu tên  các tham số hình thức, nhưng trong phần khai báo  hàm ta cần phải có các tham số hình thức.  34 Bài tập  Bài 1: Xây dựng hàm tính giai thừa cách của một  số ngun   n!! = 1x3x5x … x n nếu n lẻ n!! = 2x4x6x … x n nếu n chẵn  Bài 2: Viết một hàm tính tổng các chữ số của một  số ngun.   Bài  3: Viết hàm tính giai thừa của một số ngun.  Sau đó sử dụng để viết chương trình nhập 2 số n  và k ngun. Tính tổ hợp chập k của n theo cơng  thức như sau: C(k,n)=n!/(k!*(n­k)!) 35  Bài 2: Viết hàm tính giá trị trung bình  của ba số ngun  Bài 3: Viết hàm đọc vào 1 số ngun  dương, khi đọc vào số âm, hàm sẽ u  cầu đọc lại 36 .. .Bài? ?6.  HÀM   6. 1. Khái niệm hàm trong C 6. 2. Khai báo và sử dụng hàm trong C     6. 2.1. Khai báo hàm 6. 2.2. Sử dụng hàm 6. 2.3. Phân loại biến sử dụng trong chương  trình 6. 2.4. Nguyên mẫu hàm trong C... 6. 2.4. Nguyên mẫu hàm trong C Bài? ?6.  HÀM   6. 1. Khái niệm hàm trong C 6. 2. Khai báo và sử dụng hàm trong C     6. 2.1. Khai báo hàm 6. 2.2. Sử dụng hàm 6. 2.3. Phân loại biến sử dụng trong chương  trình 6. 2.4. Nguyên mẫu hàm trong C... hiểu hơn Bài? ?6.  HÀM   6. 1. Khái niệm hàm trong C 6. 2. Khai báo và sử dụng hàm trong C     6. 2.1. Khai báo hàm 6. 2.2. Sử dụng hàm 6. 2.3. Phân loại biến sử dụng trong chương  trình 6. 2.4. Nguyên mẫu hàm trong C

Ngày đăng: 30/01/2020, 18:56