Hàm không khai báo kiểu giá trị của hàm: Khi đó hàm sẽ được nhận kiểu giá trị ngầm định là int

Một phần của tài liệu Bai giang Co So Lap Trinh docx (Trang 26 - 31)

ngầm định là int

Ví dụ:

hàm(float x); //hàm nhận giá trị là số int

Ví dụ 15: chuyển đổi chữ thường thành chữ hoa Cách 1: #include<stdio.h> #include<conio.h> char chuyen_chu_hoa(char ch) { char kytu; kytu=(ch>='a' && ch<='z') ? (ch-32) : ch;

//kytu=(ch>='a' && ch<='z') ? (ch-('a'-'A')) : ch; //'a'-'A'=32 return(kytu);

} main() {

clrscr();

char thuong,hoa;

printf("Hay go vao mot ky tu: "); scanf("%c",&thuong);

hoa=chuyen_chu_hoa(thuong);

printf("\nChu hoa tuong ung la %c\n\n",hoa); getch();

}

Cách 2: Sử dụng hàm if để chuyển chữ thường thành chữ hoa char chuyen_chu_hoa(char ch) { char kytu; if kytu=(ch>='a' && ch<='z') return (ch-32); else return(kytu); }

Cách 3: Sử dụng hàm toupper (sinh viên tự làm)

Ví dụ 16: Xây dựng hàm kiểm tra tính chẵn lẻ của một số nguyên even(n) int n; { int result; if ((n%2)==0) result=1; else result=0; return (result); } 2. Sử dụng hàm

- Muốn sử dụng hàm trong main, ta phải khai báo nguyên mẫu (prototype) trước khi gọi hàm ra sử dụng (có thể khai báo trước hàm main hoặc khai báo trong hàm main). Cách khai báo nguyên mẫu như sau:

- Cách 1:

Kiểu_gtrị_của_hàm Tên_hàm(dsách_các_kiểu_dliệu_t.ứng_với_các_tham_số_hình_thức) Ví dụ:

float f_thi_du(float, int, int);

- Cách 2:

Kiểu_gtrị_của_hàm Tên_hàm(các_tham_số_hình_thức_và_kiểu_dữ_liệu_t.ứng) Ví dụ:

Ví dụ 14b:

#include<stdio.h> #include<conio.h>

float f_thi_du(float, int, int); //khai bao mau ham, prototype main() { float x=1.5; float y, z; int n=3, p=5, q=10; y=f_thi_du(x, n, p);

printf("gia tri cua y la %f\n",y); z=f_thi_du(x+0.5, q, n-1); printf("gia tri cua y = %f\n",z); getch();

}

//Khai bao ham

float f_thi_du(float x, int b, int c) {

float gia_tri; //khai bao bien cuc bo gia_tri=x*x+b*x+c;

return gia_tri; }

3. Nguyên tắc hoạt động của hàm (adsbygoogle = window.adsbygoogle || []).push({});

- Hàm nhận các thông số vào và trả lại kết quả cho tên hàm. Ví dụ:

y=f_thi_du(x, n, p);

Trong lần gọi này, hàm f_thi_du nhận tham số là x, n, p và trả lại kết quả là giá trị của biểu thức x*x+n*x+p.

=> Vì vậy, y chính là giá trị của biểu thức x*x+n*x+p.

? Hãy xác định các thông số truyền vào và giá trị nhận được của hàm khi gọi hàm như sau:

z=f_thi_du(x+0.5, q, n-1);

4. Truyền tham số cho hàm

Truyền tham số cho hàm chính là việc truyền giá trị cho hàm đó. Giá trị của tham số thực sự trước và sau khi gọi hàm không thay đổi.

#include<stdio.h> #include<conio.h> main()

{

clrscr();

//khai bao mau ham

void hoan_vi(int, int); //void hoan_vi(int a, int b) int n=10, p=20;

printf("Truoc khi goi ham: %d %d\n",n,p); hoan_vi(n,p);

printf("Sau khi goi ham: %d %d\n",n,p); getch();

}

void hoan_vi(int a, int b) {

int t;

printf("Truoc khi hoan vi: %d %d\n",a,b); t=a;

a=b; b=t;

printf("Sau khi hoan vi: %d %d\n",a,b); }

5. Phân loại biến* Biến toàn cục * Biến toàn cục

- Là biến được khai báo trước khi khai báo hàm. Biến toàn cục được sử dụng ở mọi nơi trong chương trình và có tác dụng ngay từ chương trình nguồn theo sau khai báo biến đó. Ví dụ : int a ; main() {....} int n ; float x ; ham1(....) {...} ham2() {...}

* Biến địa phương

- Là biến chỉ có giá trị trong thời gian hàm hoạt động . Sau khi hàm kết thúc, những biến khai báo bên trong hàm cùng với các tham số của hàm đó sẽ được giải phóng. Ví dụ :

#include<stdio.h>

main() {

void thi_du(void); for (i=1; i<=5;i++)

thi_du(); }

void thi_du(void) { (adsbygoogle = window.adsbygoogle || []).push({});

int m=3 ; //Bien dia phuong m++ ;

printf("%d %d\n",i,m); }

* Biến địa phương tĩnh (static)

- Biến địa phương tĩnh có giá trị khởi tạo là 0 (trong lần dùng đầu tiên). Biến địa phương tĩnh có thể tồn tại và lưu giữ giá trị ngay cả khi hàm kết thúc hoạt động. Khai báo:

static kiểu_dữ_liệu danh_sách_biến; Ví dụ: static int i; Ví dụ 18: #include<stdio.h> #include<conio.h> main() { void thi_du(void); int n; for (n=1;n<=5;n++) thi_du(); getch(); } void thi_du(void) { static int i; i++;

printf("Goi lan thu %d\n",i); }

* Biến thanh ghi (register)

- Biến thanh ghi là các biến được lưu trong các thanh ghi của bộ vi xử lí CPU với tốc độc truy xuất nhanh. Vì số thanh ghi không nhiều nên cần hạn chế dùng các biến thanh ghi (thương dùng cho các biến trong vòng lặp).

Ví dụ: register int t;

for (t=0 ; string[t] ; t++)

chú ý : Biến thanh ghi không có địa chỉ riêng như các ô nhớ khác vì thanh ghi nằm ngay trong CPU.

Một phần của tài liệu Bai giang Co So Lap Trinh docx (Trang 26 - 31)