Tải bản đầy đủ (.doc) (39 trang)

LAP TRINH CAN BAN TRUNG CẤP

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (468.9 KB, 39 trang )

Trường TCN khu vực Nam Tây Ninh

Giáo trình: Lập trình căn bản

Bài 1:
TỔNG QUAN VỀ NGÔN NGỮ C

Mục tiêu:

Hiểu được lịch sử phát triển của ngôn
ngữ lập trình.

Biết được ngôn ngữ này có những ứng
dụng thực tế như thế nào.

Biết cách khởi động và thoát khỏi
chương trình.

Biết sử dụng được hệ thống trợ giúp từ
Help file
I.

GIỚI THIỆU:
Để yêu cầu máy tính giải 1 bài toán nào đó thì ta phải
viết 1 chương trình tương ứng. Ngôn ngữ dùng để viết chương trình
cho máy tính được gọi là “Ngôn Ngữ Lập Trình”.
Ngôn ngữ lập trình gồm:
- Bậc thấp: Hợp ngư.õ
- Bậc cao: Pascal, C, C++, ...
II.


CÁCH KHỞI ĐỘNG VÀ THOÁT KHỎI:
1. Khởi động:
- Cách 1: Double click vào biểu tượng Borland C
trên
màn hình Desktop.
- Cách 2: <ổ đóa>:\ BORLANDC\ BIN\ BC
2. Thoát khỏi: Nhấn tổ hợp phím Alt _ X hoặc vào menu
File / Quit.

III.

CÁCH SỬ DỤNG SỰ TR GIÚP:
1. Trợ giúp từ Help File:
 Ấn phím F1,con trỏ đang ở trong cửa sổ nào sẽ có
ngay một bảng chỉ dẫn cần thiết về cửa sổ đó.
 Hoặc nhấn tổ hợp phím Alt + H.
2. Ví dụ:
Ví dụ 1: Viết chương trình nhập vào 1 số thực. In ra màn hình số bạn vừa nhập.
# include “ stdio.h” ;
# include “ conio.h” ;

Trang 1


Trường TCN khu vực Nam Tây Ninh

Giáo trình: Lập trình căn bản

void main()
{

clrscr();
float a;

}

printf (“\n Nhap vao 1 so thuc :“);
scanf (“%f”,&a);
printf(“\n So ban vua nhap la: %7.1f”,a);
getch();

Ví dụ 2: Viết chương trình nhập vào 2 số nguyên. Xuất ra
màn hình hai số bạn vừa nhập.
# include “ stdio.h” ;
# include “ conio.h” ;
void main()
{
clrscr();
int a,b ;
printf (“\n Nhap 2 so nguyen :“);
scanf (“%d%d”,&a,&b);
printf(“\n Hai so ban vua nhap la: %d %d”,a,b);
getch();

}
Ví dụ 3: Viết chương trình nhập vào bán kính đường
tròn. Tính diện tích.
# include “ stdio.h” ;
# include “ conio.h” ;
void main()
{

clrscr();
float r,s ;
printf (“\n Nhap ban kinh :“);
scanf (“%f”,&r);
s = r*r*3.1416;
printf(“\n Dien tich duong tron la: %7.1f”,s);
}

getch();

Trang 2


Trường TCN khu vực Nam Tây Ninh

Giáo trình: Lập trình căn bản

Bài 2:
CÁC THÀNH PHẦN CƠ BẢN

Mục tiêu:

Hiểu và sử dụng được hệ thống kí hiệu
và từ khóa.

Hiểu được các kiểu dữ liệu.

Hiểu được và vận dụng được các loại
biến, hằng, biểu thức cho từng chương trình cụ thể.


Biết, hiểu và so sánh được các lệnh,
khối lệnh.

Thực hiện được việc chạy chương trình.
I. HỆ THỐNG TỪ KHÓA VÀ KÍ HIỆU ĐƯC DÙNG TRONG
C:
1. Hệ thống từ khóa:
Có một số từ được ngôn Ngữ Lập Trình dành riêng cho
viêc xây dựng các câu lệnh, cách khai báo, các phép
tính ...gọi là từ khoá (Keyword)
Người lập trình không được đặt tên (biến, hằng, hàm,
thủ tục...) trùng với một trong các từ khoá. Mỗi một từ
khoá có 1 công dụng khác nhau.
Danh sách các từ khoá:
asm, break, case, char, conts, continue, default, do, double, else,
enum, float, for, goto, if, int, long, return, signed, sizeof, switch, union,
void, while...
 Lưu ý: Khác với Pascal, trong ngôn ngữ lập trình C từ
khóa bao giờ cũng được viết bằng chữ thường.
2. Bộ ký tự và ký hiệu:
- Chữ cái : ’A’...’Z’,’a’...’z’
- Số : 0...9
- Dấu gạch nối : _
- Ký tự đặc biệt : < > * ? , ; . :+ [ ] \ / ...
 Các toán tử số học trong C:
Cộng
+
Trừ
Nhân
*

Chia
/

%
 Các toán tử quan heä trong C:

Trang 3


Trường TCN khu vực Nam Tây Ninh

Giáo trình: Lập trình căn bản

Lớn hơn
>
Lớn hơn hoặc bằng
>=
Nhỏ hơn
<
Nhỏ hơn hoặc bằng
<=
Khác
!=
Bằng
==
 Các toán tử logic trong C:
Phủ định
!
“and”
&&

“or”
||
 Các toán tử tăng trị và giảm trị trong C:
o Toán tử tăng trị:
+ + <tên_biến>;
<tên_biến> ++;
o Toán tử giảm trị:
- - <tên_biến>;
<tên_biến> - -;
//

Chú ý:

+ Lời chú thích đặt trong cặp dấu /* */ hoặc

+ Dấu chấm phẩy “;” dùng để kết thúc lệnh.
3. Tên:
Là một khái niệm rất quan trọng dùng để xác định các
đại lượng khác nhau trong mỗi chương trình như: tên hằng, tên
biến, tên mảng, tên cấu trúc, tên con trỏ, tên tệp,... Tên
được tạo từ bộ chữ cái, chữ số và ký tự gạch nối. Tên
phải bắt đầu bằng một chữ cái. Tên không được có
khoảng cách , có chiều dài tối đa là 127 ký tự.
Khác với Pascal, tên trong ngôn ngữ lập trình C phân
biệt giữa chữ hoa và chữ thường. Ví dụ : abc, Abc, ABC,
Abc...là hoàn toàn khác nhau.
II. CÁC KIỂU DỮ LIỆU:
Tên kiểu
Char
Int

Long
Float
Double

Kích
thước(byte)
1
2
4
4
8

Miền giá trị
-128..127
-32768..32767
-2 tỉ..2 tỉ
biểu diễn được 6 chữ số
thập phân
biểu diễn được 16 chữ

Trang 4


Trường TCN khu vực Nam Tây Ninh

Unsigned char
Unsigned int
Unsigned long
III.


1
2
4

Giáo trình: Lập trình căn bản

số thập phân
0..255
0..65535
0..4 tỉ

CÁC LOẠI BIẾN, CÁCH KHAI BÁO, SỬ DỤNG:
1. Biến và cách khai báo:
a. Biến (Variable):
- Là một đại lượng có thể thay đổi giá trị trong chương
trình. Biến đặc trưng cho một ô nhớ hoặc bộ nhớ.
Biến bao gồm:
+ Tên biến : Đại diện cho địa chỉ ô nhớ.
+ Giá trị của biến là nội dung của ô nhớ đó.
- Biến có vai trò:
+ Chứa dữ liệu vào.
+ Chứa dữ liệu ra.
+ Chứa các giá trị trung gian trong qua trình tính
toán.
- Tên biến do người dùng quy định.
- Biến luôn luôn phải được khai báo trước khi sử dụng
và trong câu lệnh khai báo biến phải chỉ rõ kiểu
dữ liệu cho biến.
b. Cách khai báo:
<kiểu_dữ_liệu> <tên_biến_1>,

<tên_biến_2>,...,<tên_biến_n>;
Ví dụ: Khai báo các kiểu biến trong C:
int a;
int b, c;
float d, e, f;
char s[50];

 Löu ý: Khi biến được khai báo, cùng lúc đó chúng cũng
có thể được xác định giá trị ban đầu. Khởi động biến đồng
thời với khai báo biến là một thuận lợi trong ngôn ngữ C.
Ví dụ: int i = 0;
2. Biến toàn cục, biến cục bộ:
a> Biến toàn cục:
Nếu biến được khai báo ở bên ngoài các khối lệnh
(nghóa là ở bên ngoài các hàm) thì được gọi là biến
ngoài hay còn gọi là biến toàn cục. Phạm vi sử dụng: Có
giá trị từ vị trí khai báo cho đến hết chương trình.
b> Biến cục bộ:

Trang 5


Trường TCN khu vực Nam Tây Ninh

Giáo trình: Lập trình căn bản

Nếu biến được khai báo bên trong một khối lệnh (nghóa
là bên trong các hàm) thì được gọi là biến trong hay còn
gọi là biến cục bộ. Phạm vi sử dụng: bên trong khối lệnh
mà nó được khai báo, nó chỉ có thể được truy xuất bên

trong khối lệnh đó mà thôi. Còn thời gian tồn tại của
biến là bắt đầu từ khi máy làm việc với khối lệnh cho
đến khi ra khỏi khối lệnh đó.
IV.

LỆNH ĐƠN, LỆNH KÉP:
Câu lệnh:
- Trong ngôn ngữ lập trình, lệnh là sự kết hợp các từ
khoá, từ chuẩn, các tên gọi nói chung và các toán tử
theo một quy tắc cú pháp nhất định để tạo thành chỉ thị
của chương trình.
- Các câu lệnh cách nhau bởi dấu chấm phẩy ”;”.
- Câu lệnh chia ra làm 2 loại: Câu lệnh đơn và Câu lệnh
kép (hay còn gọi là câu lệnh có cấu trúc)
1. Câu lệnh đơn:
Câu lệnh gán (assignment): là phép dùng để đưa ra
giá trị của 1 biểu thức nào đó vào trong một biến tương
thích theo cú pháp như sau:
< tên_biến > = <
biểu_thức_cùng_kiểu_dữ_liệu > ;
Ví dụ : float
a, b = 3.5;
a = b * (b – 1.5 ) +10 ;
Keát quả tính toán của biểu thức b * (b – 1.5 ) +10
sẽ được gán cho biến a(17 )
Đối với một số phép gán đặc biệt mà biến
được gán có mặt cả trong hai vế của biểu thức
gán:
Ví dụ:
int i, j, k ;

i=i+2;
Có thể viết ngắn hơn như sau: i+ = 2;
j=j–1;
j-= 1 ;
k=k*(i+j);
k*= i+j ;
- Kí hiệu = được gọi là dấu gán.
- Cách thực hiện:
+ Tính biểu thức bên phải dấu gán.
+ Gán giá trị vừa tìm được cho biến bên trái dấu
gán.
2. Câu lệnh kép hay còn gọi là khối lệnh:
Khối lệnh là 1 dãy các câu lệnh nằm trong khối được
bao bởi cặp dấu “ { “ vaø “}”

Trang 6


Trường TCN khu vực Nam Tây Ninh

Giáo trình: Lập trình căn bản

Sử dụng khối lệnh trong câu lệnh điều kiện (rẽ nhánh
hoặc lặp) có nhiều câu lệnh con hoặc trong các hàm.
Ví dụ:
if ( n > 0 )
{
if ( a > b )
z=a;
else

z=b;
}
V.

THỰC THI CHƯƠNG TRÌNH :
1. Dịch và thực thi chương trình:
 Chương trình dịch:
Việc dịch một chương trình viết nằng ngôn ngữ lập
trình bậc cao sang ngôn ngữ lập trình bậc thấp do một
chương trình đặc biệt đảm nhận gọi là chương trình dịch.
Chương trình dịch thực hiện các chức năng sau đây:
+ Duyệt chương trình nguồn để phát hiện và thông
báo các lỗi về cú pháp.
+ Khi chương trình nguồn không còn lỗi thì chương trình
dịch sẽ dịch nó sang ngôn ngữ máy.
 Dịch và thực thi chương trình:
Sau khi soạn chương trình xong, ta cần dịch chương trình
bằng cách nhấn phím F9. Chỉ khi chương trình không còn
lỗi ta sẽ nhận được thông báo:” Compile Successful
press any key “. Nhấn Ctrl _ F9 để chạy chương trình.
2. Câu lệnh nhập xuất:
 Xuất dữ liệu ra màn hình:
printf (dòng điều khiển, b1, b2,..., bn);
Trong đó:
- b1,b2,…,bn: là các biến cần xuất ra.
- dòng điều khiển: là 1 chuỗi ký tự gồm 3 loại:
+ Câu thông báo xuất.
+ Ký tự xuống dòng, về đầu dòng “\n”.
+ Các ký tự định dạng:
%d: xuất biến nguyên ( int).

%f: xuất biến thực ( float).
%c: xuất biến ký tự ( char).
%ld: xuất biến nguyên dài ( long).
%lf: xuất biến thực chuẩn ( double).
%4d: xuất biến nguyên dành cho nó 4 vị trí
(khoảng caùch).

Trang 7


Trường TCN khu vực Nam Tây Ninh





Giáo trình: Lập trình căn bản

%7.2f: xuất biến thực dành cho nó 7 vị trí, 2
chữ số phần thập phân.
% d: có 1 dấu cách trước biến nguyên.
%d : có 1 dấu cách sau biến nguyên.
Hằng kiểu chuỗi đặt trong dấu “ “
\’ : xuaát daáu ‘
\” : xuaát daáu “
\\ : xuaát daáu \
Nhập dữ liệu từ bàn phím:
scanf (“ ký tự định dạng”, &tên_biến1,
&tên_biến2,..., &tên_biếnn);
Trong đó:

Ký tự địng dạng: như phần xuất dữ liệu có thể
nhập nhiều biến bằng lệnh scanf
Các ký tự định dạng phải tương ứng với danh sách
biến phía sau.
duï:
int a,b;
float r;
printf (“\n Nhap a,r “);
scanf( “%d %f”, &a, &r);

Trang 8


Trường TCN khu vực Nam Tây Ninh

Giáo trình: Lập trình căn bản

BÀI TẬP
Câu 1: Viết chương trình nhập vào 2 số nguyên. Tính tổng,
hiệu, tích, thương của hai số đó.
Câu 2: Viết chương trình nhập vào chiều dài và chiều
rộng hình chữ nhật. Tính chu vi và diện tích.
Câu 3: Viết chương trình nhập vào 3 số thực. Tinh xn + yn.

Trang 9


Trường TCN khu vực Nam Tây Ninh

Giáo trình: Lập trình căn bản


Bài 3:
CÁC LỆNH CÓ CẤU TRÚC

Mục tiêu:
 Hiểu và vận dụng được các lệnh cấu trúc: cấu trúc lựa
chọn, cấu trúc lặp xác định và lặp vô định.
 Hiểu và vận dụng được các lệnh bẻ vòng lặp.
I. KHÁI NIỆM VỀ LỆNH CẤU TRÚC:
Lệnh cấu trúc là những lệng ghép, các câu lệnh lựa chọn,
các lệnh lặp (if..., switch…, for..., while…).
II. CÁC LỆNH CẤU TRÚC RẼ NHÁNH:
1. Lệnh rẽ nhánh đơn (if...):
 Dạng 1: if <điều_kiện>
<lệnh> ;
- Diễn giải : Nếu <điều_kiện> đúng --> thực hiện
<lệnh>, ngược lại nếu <điều_kiện> sai --> bỏ qua
<lệnh> trong if, thực hiện lệnh đứng sau câu lệnh if.
 Dạng 2: if <điều_kiện>
<lệnh_1> ;
else
<lệnh_2> ;
- Diễn giải : Nếu <điều_kiện> đúng --> thực hiện
<lệnh_1> bỏ qua <lệnh_2>, ngược lại nếu
<điều_kiện> sai --> bỏ qua <lệnh_1> thực hiện
<lệnh_2>.
- Chú ý: Trong trường hợp có nhiều lệnh if lồng nhau
thì else sẽ gắn liền với if gần nó nhất.
 Dạng 3: if <điều_kiện_1>
<lệnh_1> ;

else if <điều_kiện_2> ;
<lệnh_2> ;
else
<lệnh_3>;
Ví dụ 1 : Tìm số lớn nhất trong 3 số nguyên a,b,c.
# include “stdio.h”
# include “ conio.h”
int max (int a, int b, int c );

Trang 10


Trường TCN khu vực Nam Tây Ninh

Giáo trình: Lập trình căn bản

/* hoặc int max (int , int , int); */
void main ()
{
int a,b,c ;
printf (“\n Nhập 3 số nguyên :”);
scanf (“%d %d %d “,&a, &b, &c);
printf(“\n So max laø %d “, max(a,b,c));
getch();
}
int max (int a,int b, int c)
{
int m;
m=a;
if ( m >= b )

m=b;
if ( m >= c)
m = c;
return m;
}
Ví dụ 2 : Viết chương trình giải phương trình bậc nhất : ax + b = 0 (a, b : số thực).
Giải : Xét các trường hợp xảy ra :
- Nếu a !=0 thì nghiệm x = -b/a
- Nếu a = 0
+ b =0 : vô số nghiệm
+ b != 0 ( ngược lại) : vô nghiệm.
/* Giải phương trình bậc nhất : ax + b = 0 */
#include “stdio.h”
#include “ conio.h”
void main ()
{
float a, b ;
printf ( "\ nhập 2 số a,b : ") ;
scanf (" %f %f ", &a, &b);
if ( a = = 0 )
if ( b= =0 ) / * b khác 0 */
printf (" Phuong trinh co vo so nghiem! \n " );
else
printf (" Phuong trinh vo nghiem \n ");
else / * a khác 0 */

Trang 11


Trường TCN khu vực Nam Tây Ninh


Giáo trình: Lập trình căn bản

printf (" Phuong trinh co nghiem la : x= %f \n ", -b/a);
getch();
}
2. Lệnh rẽ nhiều nhánh (switch):
switch <biểu_thức>
{
case <giá_trị_1> : <lệnh _1> ;
break ;
case <giá_trị_2> : <lệnh _2> ;
break ;

case <giá_trị_n> : <lệnh _n> ;
break ;
[default] : <lệnh_0> ;
}
Diễn giải:
o Biểu thức không mang nghóa dúng, sai mà cho kết quả
thuộc 1 trong 2 kiểu: kiểu nguyên hoặc kiểu ký tự
o Lệnh switch sẽ so sánh kết quả của biểu thức với
các giá trị : <giá_trị_1>, <giá_trị_2>,…,< giá_trị_n>
và thực hiện lệnh tương ứng. Nếu kết quả không
thuộc các giá trị <giá_trị_1>, <giá_trị_2>,
…,<giá_trị_n> thì thực hiện <lệnh_0> (sau default)
o break : Thoát khỏi lệnh switch, nhưng ở case <giá_trị_n>
có thể không có break.
Ví dụ 1: Viết chương trình nhập vào 1 số từ 1 đến 5. In ra
màn hình số bạn vừa nhập.

# include < stdio.h>
# include <conio.h>
void main ()
{
clrscr();
int n;
printf (“\n Nhap vao 1 so 1..5:”) ;
scanf(“%d ”, &n) ;
if (n <1) || (n >5)
printf(“ So ban vua nhap nam ngoai pham vi \n”);
else
switch n
{

Trang 12


Trường TCN khu vực Nam Tây Ninh

case 1 : printf
break ;
case 2 : printf
break ;
case 3 : printf
break ;
case 4 : printf
break ;
case 5 : printf
break ;


Giáo trình: Lập trình căn bản

( “ So cua ban la 1 \n”);
( “So cua ban la 2 \n”);
( “ So cua ban la 3 \n”);
(“ So cua ban la 4 \n”);
( “So cua ban la 5 \n”);

}
}

getch();
Ví dụ 2: Viết chương trình nhập vào ngày, tháng và năm.
Cho biết tháng bạn vừa nhập có bao nhiêu ngày.
# include "stdio.h";
# include"conio.h";
# include"math.h";
void main()
{
int d, m, y ;
printf ("\n Nhap ngay thang nam:");
scanf ("%d %d %d",&d,&m,&y);
if (((d <=0) || (d >=32)) || ((m<1) || (m>13)) || (y <0)) printf("\n Nhap lai");
else
{
switch (m)
{
case 1:printf("\n Thang %d co 31 ngay ",m);
break;
case 3:printf("\n Thang %d co 31 ngay ",m);

break;
case 5:printf("\n Thang %d co 31 ngay ",m);
break;
case 7:printf("\n Thang %d co 31 ngay ",m);
break;
case 8:printf("\n Thang %d co 31 ngay ",m);
break;
case 10:printf("\n Thang %d co 31 ngay ",m);

Trang 13


Trường TCN khu vực Nam Tây Ninh

Giáo trình: Lập trình căn bản

break;
case 12:printf("\n Thang %d co 31 ngay ",m);
break;
case 4:printf("\n Thang %d co 30 ngay ",m);
break;
case 6:printf("\n Thang %d co 30 ngay ",m);
break;
case 9:printf("\n Thang %d co 30 ngay ",m);
break;
case 11:printf("\n Thang %d co 30 ngay ",m);
break;
case 2: if (((y%4= =0) &&(y %100!=0)) || (y %400= =0))
{
printf("\n Nam %d la nam nhuan nen thang %d co 29

ngay ",y,m);
}
else
printf("\n Thang 2 co 28 ngay");
break;
}
}
getch();
}
III. CÁC LỆNH ĐƠN NHẰM KẾT THÚC SỚM VÒNG LẶP:
1. Lệnh Goto:
Cú pháp:
goto
<tên_nhãn> ;
…………………………….
<tên_nhãn> : ;
Khi gặp toán tử này máy sẽ nhảy tới câu lệnh có
nhãn viết sau từ khoá goto.
Chú ý: Câu lệnh goto và nhãn cần nằm trong một
hàm, có nghóa là toán tử goto chỉ cho phép nhảy từ vị
trí này đến vị trí khác trong thân một hàm và không thể
dùng để nhảy từ hàm này sang hàm khác.
Không cho phép dùng toán tử goto để nhảy từ ngoài
vào trong một khối lệnh. Tuy nhiên việc nhảy từ trong
một khối lệnh ra ngoài là hoàn toàn hợp lệ.
2. Lệnh break :
Lệnh break nhằm kết thúc việc thực hiện của 1 cấu
trúc lặp (switch, for, while) mà nó được viết trong đó. Điều

Trang 14



Trường TCN khu vực Nam Tây Ninh

Giáo trình: Lập trình căn bản

khiển của chương trình được chuyển sang lệnh kế tiếp ngay
sau cấu trúc vừa kết thúc.
Cú pháp:
break ;
3. Lệnh continue:
Lệnh continue chỉ tồn tại trong các lệnh lặp. Nó kết
thúc sớm một chu kì lặp để bắt đầu chu kì tiếp theo. Các
lệnh còn lại sau nó trong cấu trúc lặp bị bỏ qua.
Cú pháp:
continue ;
Chú ý: Lệnh break và continue không nằm trong cấu trúc
điều khiển nào sẽ phát sinh lỗi “ Error 4 : Missplaced Break “,
hoặc “ Error 4 : Missplaced Continue “. Lệnh break và continue dễ
nhằm lẫn với lệnh gọi hàm. break và continue là một từ
khoá không phải là một hàm.
IV. CÁC LỆNH LẶP:
1. Lặp xác định (for…)
for (<biểu_thức_1>; <biểu_thức_2>;
<biểu_thức_3>)
<các_lệnh>;
Diễn giải:
- <biểu_thức_1>: Chỉ ra giá trị ban đầu của biến điều
khiển.
- <biểu_thức_2>: Chỉ ra giá trị cuối của biến điều

khiển.
- <biểu_thức_3>: Các lệnh làm thay đổi biến điều
khiển.
- Các biểu thức có thể là một dãy gồm nhiều lệnh
cách nhau bởi dấu phẩy “,”
- Các <biểu_thức_1>, <biểu_thức_2>, <biểu_thức_3>
không bắt buộc phải có đủ trong dấu () nhưng phải
có đủ dấu chấm phẩy “;”
- Các lệnh trong thân vòng lặp sẽ thực hiện lặp đi
lặp lại khi biến điều khiển thay đổi từ giá trị đầu
đến giá trị cuối, sau mỗi lần lặp giá trị của biến
điều khiển tăng hoặc giảm 1 lượng tùy thuộc vào
<biểu_thức_3>.
1. Nếu trong lệnh for thiếu <biểu_thức_1>, phải
gán giá trị ban đầu cho biến điều khiển ở
ngoài lệnh for.

Trang 15


Trường TCN khu vực Nam Tây Ninh

Giáo trình: Lập trình căn bản

2. Nếu trong lệnh for thiếu <biểu_thức_2>, trong
thân vòng lặp phải có lệnh break hoặc goto
để thoát khỏi vòng lặp.
3. Nếu trong lệnh for thiếu <biểu_thức_3>, trong
dãy lệnh biểu_thức_2 phải có lệnh làm thay
đổi biến điều khiển.

Ví dụ1: Tính toång s = 1+2+…+n
int i , s = 0;
for (i = 1; i <= n ; i ++ )
Ví dụ 2: Tính tổng s = 1 +2 +…+n
int i, s = 0 ;
for ( ; i <= n ; i ++ )
s+=i;
Ví dụ 3: Tính tổng s = 1 +2 +…+n
int i, s = 0 ;
for (i = 1; ; i ++ )
{
s += i ;
if ( i == n )
break ;
}
2. Lặp xác định (while…):
 while <điều_kiện>
<khối_lệnh> ;
Diễn giải: Lặp với điều kiện trước.
- Đầu tiên chương trình sẽ kiểm tra điều kiện, nếu
điều kiện đúng thì thực hiện khối lệnh
- Lặp trong khi điều kiện đúng.
- Cũng có thể dùng break để thoát khỏi vòng lặp.
Ví dụ: int i = 1, n = 10 ,s = 0 ;
while ( i< = n )
{
s+=i;
i ++ ;
}
 Lệnh do... while

do
<khối_lệnh> ;
while <điều_kiện> ;
Diễn giải: Lặp với điều kiện sau.
- Thực hiện lặp khối lệnh trong khi điều kiện đúng.

Trang 16


Trường TCN khu vực Nam Tây Ninh

Giáo trình: Lập trình căn bản

-

Sau khi thực hiện lệnh mới kiểm tra điều kiện và
cũng có thể dùng break để thoát khỏi vòng lặp.
Ví dụ:
int
i = 1 , s = 0 , n = 10 ;
do
{
s+=i;
i++;
}
while (i <= n) ;
3. Các ví dụ:
Ví dụ 1: Viết chương trình xuất ra màn hình bình phương của
các số từ 1 đến 50.
# include <stdio.h>

# include <conio.h>
void main( )
{
clrscr();
int n;
for ( n = 1 ; n<= 50 ; ++n )
{
printf (“number
square \n”) ;
printf ( “%d
%d\n”,n, n * n) ;
}
getch();
}
Ví dụ 2: Viết chương trình in ra các số chẵn từ 2 đến 50.
# include <stdio.h>
# include <conio.h>
void main( )
{
clrscr();
int i, n = 50 ;
for (i = 2; i<= n ; i+= 2 )
printf (“%4d” , i) ;
}

getch();

Trang 17



Trường TCN khu vực Nam Tây Ninh

Giáo trình: Lập trình căn bản

Ví dụ 3: Viết chương trình tính tổng n giai thừa (n!).
# include "conio.h"
#include "stdio.h"
#include "math.h"
void main()
{
int i = 1, j = 1, n;
float gt = 1, s = 1, ct;
printf("\n Nhap so");
scanf("%d",&n);
do
{
do
{
ct=pow(1,1)/j;
gt*=ct;
j++;
}
while (j<=i);
s+= gt;
i++;
}
while (i<=n);
printf("\n Tong %f",s);
getch();
}


Trang 18


Trường TCN khu vực Nam Tây Ninh

Giáo trình: Lập trình căn bản

BÀI TẬP
Câu 1:Viết chương trình nhập vào họ tên và điểm thi. Nếu điểm thi >= 5 in ra màn hình
là đậu ngược lại là rớt.
Câu 2: Viết chương trình giải và biện luận phương trình bậc
2: ax2 + bx + c = 0.
Câu 3: Viết chương trình nhập vào điểm trung bình của một
học sinh. Hãy xếp loại học sinh đó. Biết rằng:
DTB = 10.0 : Xuất sắc
10.0 > DTB >= 8.0: Gioûi
8.0 > DTB >= 7.0 : Khá
7.0 > DTB >= 5.0 : Trung bình
Câu 4: Viết chương trình nhập r1, r2 là 2 bán kính của đường
tròn, d là khoảng cách 2 tâm. Cho biết 2 đường tròn này tách
rời, tiếp xúc ngoài, tiếp xúc trong, cắt, bao, trùng.
Câu 5: Viết chương trình nhập vào 2 số và một ký tự.
Nếu ký tự là dấu ‘+’ thì tính tổng 2 số đó
Nếu ký tự là dấu ‘-’ thì tính hiệu.
Nếu ký tự là dấu ‘*’ hoặc ‘x’ hoặc ‘X’ thì tính tích.
Nếu ký tự là dấu ‘:’ hoặc ‘/’thì tính thương.
Câu 6: Viết chương trình dưới dạng menu. Tính chu vi và diện
tích:
1. Hình tròn

2. Hình vuông
3. Hình chữ nhật
Câu 7: Viết chương trình nhập vào 1 số. In ra màn hình các
số chính phương nhỏ hơn số đó.
Câu 8: Viết chương trình phân tích một số thành các thừa
số nguyên tố.
Câu 9: Tìm Ước số chung lớn nhất của 3 số.
Câu 10: Tìm Bội số chung nhỏ nhất của 3 số.
Câu 11: Viết chương trình nhập vào 1 số n. Tính tổng giá trị
tuyệt đối của các số nhỏ hơn hoặc bằng n.
Câu 12: Viết chương trình tính:
S 1 

1 1 1
1
   ...  ( 1) n
2 3 4
n

Câu 13: Viết chương trình tính:
S

1 1
1
  ... 
0! 1!
N!

Câu 14: Viết chương trình nhập số nguyên n. Cho biết:
+ n có bao nhiêu chữ số.

+ Tổng các chữ số của n.

Trang 19


Trường TCN khu vực Nam Tây Ninh

Giáo trình: Lập trình căn bản

+ Chữ số có giá trị lớn nhất.
Câu 15: Viết chương trình nhập vào một dãy số. Hãy đếm có bao nhiêu chữ
số.

Câu 16: Viết chương trình vẽ hình chữ nhật đặc.

Trang 20


Trường TCN khu vực Nam Tây Ninh

Giáo trình: Lập trình căn bản

Bài 4:
HÀM

Mục tiêu:
 Hiểu khái niệm mảng.
 Khai báo được mảng 1 chiều, mảng nhiều chiều.
 Biết cách gán giá trị cho mảng trực tiếp, gián tiếp.
 Vận dụng được mảng làm tham số cho hàm.

 Sắp xếp được mảng theo thứ tự tăng dần hoặc giảm
dần.
I.

KHÁI NIỆM:
1. Khái niệm:
Trong ngôn ngữ C, chương tình con không chia làm 2 loại: thủ
tục và hàm mà gọi chung là hàm (function). Tuy nhiên các chương
tình con không trả về 1 giá trị sẽ có void
Hàm có thể xem là 1 đơn vị độc lặp của chương trình, các
hàm có vai trò ngang nhau. Ngôn ngữ C không cho phép 1 hàm
bên trong 1 hàm khác. Hàm main () của chương trình là hàm chính
của chương tình, mỗi chương trình chỉ có 1 hàm main duy nhất.
2. Tại sao phải xây dựng hàm, sử dụng hàm:
- Hàm là đoạn chương trình thực hiện trọn vẹn một công việc nhất định.
- Hàm chia cắt việc lớn bằng nhiều việc nhỏ. Nó giúp cho chương trình sáng sủa,
dễ sửa, nhất là đối với các chương trình lớn.
II.

HÀM :
1. Nguyên tắc xây dựng hàm :
- Mỗi hàm phải có một tên theo quy tắc đặt tên. Trong
một chương trình không được phép có hai hàm trùng tên nhau.
- Mỗi hàm thường có các giá trị đầu vào và các giá
trị đầu ra. Các giá trị đầu vào được truyền thông qua danh
sách tham số của hàm hoặc thông qua các biến toàn cục,
còn các giá trị đầu ra được gửi trả về nơi gọi nó thông qua
câu lệnh return (biểu thức) khi hàm kết thúc, qua địa chỉ
của biến hoặc qua một biến toàn cục. Khi một hàm không
có đối số (hoặc không có giá trị trả về) sẽ được khai báo

đối số (hoặc giá trị trả về) dạng không kiểu void.
- Các hàm có vai trò ngang nhau trong chương trình.
- Mỗi hàm trong ngôn ngữ lâp trình C, về nguyên tắc bao
gồm hai phần, một phần gọi là nguyên mẫu của hàm

Trang 21


Trường TCN khu vực Nam Tây Ninh

Giáo trình: Lập trình căn bản

(prototype) được khai báo trước khi hàm được sử dụng và phần
còn lại gọi là phần định nghóa của haøm.
<Tên hàm>
(<danh sách các đối số>)
<Khai báo biến>
{
<Khai báo tham các biến>
<Các câu lệnh>
}
- Trong đó :
+ Tên hàm : bắt buộc phải có.
+ Danh sách các đối số : không bắt buộc.
+ Khai báo biến : Nếu danh sách các đối số mà có thì phần này buộc phải có. Cịn
nếu khơng thì ngược lại có thể bỏ qua.
+ Phần trong { } : là thân hàm. Dấu { } là bắt buộc đối với mọi hàm.
+ Khai báo tham biến : ngay sau { và gọi là biến cục bộ dành riêng cho hàm sử
dụng.
+ Đối số luôn ln truyền theo giá trị (khơng thay đổi giá trị).

Ví dụ : Hàm tính giai thừa .
Cách 1 :
#include <stdio.h>
#include <conio.h>
float giaithua (int n)
{
int i ;
float KQ ;
for ( KQ=1,i =1; i<=n ; i ++ )
KQ = KQ * i ;
return KQ ;
}
void main ( ) /* khai báo biến tồn cục nếu có */
{
int n ;
printf ( " Nhap n = " );
scanf ( " %d ", &n);
printf ( " %d giai thua la %f ", n, giaithua (n) );
getch ();
}

Trang 22


Trường TCN khu vực Nam Tây Ninh

Giáo trình: Lập trình căn bản

Cách 2 :
# include <stdio.h>

# include<conio.h>
/*Khai báo prototype _mục đích hàm đặt ở đâu cũng được khơng cần trước
hàm gọi */
float giaithua ( int n );
void main ()
{
}
/* Chi tiết hàm giai thừa */
float giaithua ( int n)
{ ... return KQ };
Chú ý :
- Kiểu của hàm cùng kiểu giá trị cần trả về.
- Các hàm độc lập, không được lồng nhau.
- Kiểu void tên hàm () : không cần trả về giá trị nào, hiểu ngầm là trả về int.
- Ở cách 1 : hàm ở trên không được gọi hàm dưới.
- Ở cách 2 : các hàm gọi được lẫn nhau.
2. Tham số hình thức và tham số thực của hàm:
b. Lời gọi hàm:
- Một hàm có thể được gọi bởi hàm main hoặc một
hàm khác.
Hàm kiểu void
Tên_hàm (danh_sách_tham_số);
- Hàm kiểu khác :
+ Gán biến: ví dụ: n = abc();
+ Xuất trực tiếp printf (“&d”,abc());
+ Dùng trong biểu thức: n = abc() + def ();
c. Tham số hình thức và tham số thực của chương
trình:
 Tham số hình thức: Là tham số khai báo sau tên hàm.
 Tham số thực là tham số trong lời gọi hàm, khi gọi

hàm có truyền tham số thì giá trị của tham số thực
được thay thế vào các tham số hình thức tương ứng
 Trong lời gọi hàm: Số tham số thực bằng số tham số
hình thức. Thứ tự thay thế là thứ tự của tham số
hình thức.
 Tham số thực và tham số hình thức phải cùng kiểu.
3. Truyền tham số cho hàm:
a. Tầm ảnh hưởng của biến:
 Biến toàn cuïc:

Trang 23


Trường TCN khu vực Nam Tây Ninh

Giáo trình: Lập trình căn bản

o Khai báo ở đầu chương trình( sau # include)
o Tồn tại từ khi bắt đầu cho đến khi kết thúc
nên tốn bộ nhớ.
o Tất cả các biến toàn cục đều được khởi gán
giá trị bằng 0.
o Có thể sử dụng biến toàn cục trong tất cả
các hàm của chương trình.
 Biến cục bộ (địa phương):
o Là các biến được khai báo trong các hàm kể
cả hàm main.
o Là các tham số của hàm.
o Chỉ tồn tại khi gọi hàm và được giải phóng
khỏi bộ nhớ khi kết thúc hàm.

o Chỉ có giá trị trong hàm nơi nó được khai báo.
b.
Các cách truyền tham số:
- Truyền theo giá trị.
- Truyền theo địa chỉ.
 Truyền theo giá trị:
Đây là cách truyền tham số mặc nhiên. Sau khi
kết thúc hàm, các tham số thực sẽ không giữ lại các
giá trị bị thay đổi trong thân hàm.
 Truyền theo địa chỉ:
- Khi truyền tham số hàm bị gọi sẽ nhận địa chỉ
của tham số thực thay vì giá trị của tham số hình thức.
- Các tham số thực sẽ bị thay đổi giá trị sau khi kết
thúc hàm.
III. LỆNH THƯỜNG SỬ DỤNG TRONG HÀM:
 Lệnh Return : Là toán tử điều khiển đặc biệt dùng để
thoát ra khỏi một hàm và trả về cho hàm một giá trị xác định
nào đó nằm trong biểu thức sau từ khóa return .
Cú pháp : return [biểu_thức] ;
 Chú ý :
- Biểu thức sau return có thể vắng mặt.
- Khi gặp return máy sẽ thoát ra khỏi bất kì một vòng
lặp nào và thoát luôn ra khỏi hàm có chứa các vòng
lặp đó.
- Khi gặp một toán tử return có chứa biểu thức, thì
giá trị của biểu thức sẽ được chuyển kiểu cho phù hợp
với kiểu trả về của hàm trước khi nó được gán cho
hàm.
Ví dụ: Tìm số lớn nhất trong 3 số nguyên a,b,c.


Trang 24


Trường TCN khu vực Nam Tây Ninh

Giáo trình: Lập trình căn bản

# include “stdio.h”
# include “ conio.h”
int max (int a, int b, int c );
/* hoaëc int max (int , int , int); */
void main ()
{
clrscr();
int a,b,c ;
printf (“\n Nhap 3 so nguyen:”);
scanf (“%d %d %d “,&a, &b, &c);
printf(“\n So max laø %d “, max(a,b,c));
getch();
}
int max (int a, int b, int c)
{
int m;
m=a;
if (m <= b)
m =b;
if (m <= c)
m = c;
return m;
}


Trang 25


Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay
×