BÀI GIẢNG HỌC PHẦN
KỸ THUẬT LẬP TRÌNH
CHƯƠNG 3: VÀO/RA DỮ LIỆU VÀ CÁC
CẤU TRÚC ĐIỀU KHIỂN CHƯƠNG TRÌNH
Nội dung
2
3.1. Vào/ra dữ liệu 3.2. Các cấu trúc điều khiển chương trình
3.1. Vào/ra dữ liệu
3
• Khai báo thư viện chương trình • Lệnh đưa dữ liệu ra màn hình • Lệnh nhập dữ liệu vào từ bàn phím
Khai báo thư viện chương trình
báo tệp tiêu đề stdio.h (standard input/output)
• Để có thể sử dụng các lệnh vào/ra dữ liệu, cần khai
4
#include
Lệnh đưa dữ liệu ra màn hình (1)
• Cú pháp:
printf(xâu_định_dạng, danh_sách_tham_số);
Trong đó: - xâu_định_dạng: đặt trong cặp dấu " ", quy định cách thức hiển thị dữ liệu ra màn hình máy tính, bao gồm 3 loại ký tự:
+ Ký tự văn bản thông thường + Ký tự điều khiển + Đặc tả
5
- danh_sách_tham_số: danh sách các giá trị được hiển thị theo quy định trong xâu định dạng, được viết ngăn cách nhau bởi dấu phẩy, gồm: tên biến, tên hằng, biểu thức, hàm, các giá trị cụ thể
Lệnh đưa dữ liệu ra màn hình (2)
• Lưu ý:
6
danh_sách_tham_số phải phù hợp với các đặc tả trong xâu_định_dạng cả về số lượng, kiểu dữ liệu và thứ tự
xâu_định_dạng (1)
nguyên vẹn như trong xâu_định_dạng Ví dụ: - printf("Xin chao!");
• Ký tự văn bản thông thường: Được đưa ra màn hình
- printf("a+b");
Kết quả hiển thị trên màn hình: Xin chao!
Kết quả hiển thị trên màn hình: a+b • Một số ký tự đặc biệt cần đặt liền sau ký hiệu \
7
\" in ra ký tự " \\ in ra ký tự \
xâu_định_dạng (2)
\n xuống dòng \t tab \b backspace \r carriage return – đưa con trỏ màn hình về đầu dòng \f line feed – sang trang … Ví dụ:
• Ký tự điều khiển: tạo các hiệu ứng hiển thị đặc biệt
8
printf("\n"); printf("\t"); printf("\n\t");
xâu_định_dạng (3)
• Đặc tả: Xác định kiểu dữ liệu của giá trị muốn xuất
Ý nghĩa
Kiểu ký tự đơn Số nguyên hệ 10 có dấu
Đặc tả %c %i, %d
%u Số nguyên hệ 10 không dấu
Kiểu dữ liệu char int, char unsigned int/char
%o int, char
%x, %X int, char
9
Số hệ 8 không dấu (không có số 0 đứng trước) Số hệ 16 không dấu chữ thường/chữ hoa (không có 0x đứng trước)
xâu_định_dạng (4)
• Đặc tả: (tiếp)
Ý nghĩa
Kiểu dữ liệu long
long
%lo
Đặc tả %li,%ld Số nguyên hệ 10 có dấu %lu
long
%lx, %lX
10
Số nguyên hệ 10 không dấu unsigned long Số hệ 8 không dấu (không có số 0 đứng trước) Số hệ 16 không dấu chữ thường/chữ hoa (không có 0x đứng trước)
xâu_định_dạng (5)
• Đặc tả: (tiếp)
Đặc tả Kiểu dữ liệu
%s char[]
%g
float, double
Ý nghĩa Hiển thị xâu ký tự kết thúc bởi '\0' %f Số thực dấu phẩy tĩnh %e, %E Số thực dấu phẩy động float, double float, double
11
Dùng %f hoặc %e tùy thuộc loại nào ngắn hơn
xâu_định_dạng (6)
• Ví dụ:
in ra 5 in ra 10
12
int a,b; float x; a=5; b=10; x=12.75; printf("\n%d",a); printf("\n%d",b); printf("\n%d, %d",a,b); in ra 5, 10 printf("\n%f",x); printf("\n%f",10.0/3); in ra 12.750000 in ra 3.333333
Độ rộng hiển thị - đối với số nguyên
%nd trong đó n là số nguyên không âm, cho biết số chỗ dùng để viết số nguyên
• Định dạng:
int a,b; a=123; b=45; printf("\n%4d",a); printf ("\n%5d",b);
• Ví dụ:
Kết quả hiển thị trên màn hình:
(˽ là ký hiệu dấu cách)
13
˽123 ˽˽˽45
Độ rộng hiển thị - đối với số thực (1)
%n.mf
• Định dạng:
Trong đó n, m là 2 số nguyên không âm:
14
n - số chỗ dùng để viết số thực m - số chỗ trong n dùng để viết phần thập phân
Độ rộng hiển thị - đối với số thực (2)
float x; x=9.125; printf("\n%f",x); printf("\n%.2f",x); printf("\n%6.2f",x);
• Ví dụ:
Kết quả hiển thị trên màn hình:
15
9.125000 9.13 ˽˽9.13
Độ rộng hiển thị - Lưu ý (1)
hiển thị tương tự như đối với số nguyên
• Đối với các ký tự và xâu ký tự, định dạng độ rộng
• Ví dụ:
printf("\n%3d%15s%3c",1,"Tran Ngoc Anh",'A'); printf("\n%3d%15s%3c",2,"Nguyen Sao Mai",'B');
16
Kết quả hiển thị trên màn hình: ˽˽1˽˽Tran Ngoc Anh˽˽A ˽˽2˽Nguyen Sao Mai˽˽B
Độ rộng hiển thị - Lưu ý (2)
• Ví dụ: a=1024; x=10.875;
• Khi số chỗ cần thiết để hiển thị nội dung dữ liệu lớn hơn trong định dạng hệ thống tự cung cấp thêm chỗ để hiển thị dữ liệu trong các trường hợp: số nguyên, phần nguyên của số thực, ký tự, xâu ký tự
printf("\n%1d",a); printf("\n%3.2f",x); printf("\n%0c",'A'); printf("\n%1s","ABC");
17
Kết quả: 1024 10.88 A ABC
Căn lề trái/phải
• Khi có định dạng độ rộng hiển thị dữ liệu, ngôn ngữ C mặc định căn lề phải; để căn lề trái cần thêm dấu - ngay sau ký hiệu %
printf("\n%-3d%-15s%-3c",1,"Tran Ngoc Anh",'A'); printf("\n%-3d%-15s%-3c",2,"Nguyen Sao Mai",'B'); Kết quả hiển thị trên màn hình: 1˽˽Tran Ngoc Anh˽˽A˽˽ 2˽˽Nguyen Sao Mai˽B˽˽
18
• Ví dụ:
Lệnh nhập dữ liệu vào từ bàn phím (1)
scanf(xâu_định_dạng, danh_sách_tham_số);
• Cú pháp:
cho từng loại dữ liệu được nhập vào
Trong đó: - xâu_định_dạng: chỉ bao gồm các đặc tả quy định
19
- danh_sách_tham_số: bao gồm các địa chỉ của các biến được viết ngăn cách nhau bởi dấu phẩy (&tên_biến_1, &tên_biến_2, …)
Lệnh nhập dữ liệu vào từ bàn phím (2)
danh_sách_tham_số phải phù hợp với các đặc tả trong xâu_định_dạng cả về số lượng, kiểu dữ liệu, thứ tự
20
• Lưu ý:
xâu_định_dạng (1)
• Đặc tả:
Ý nghĩa
Kiểu ký tự đơn Số nguyên kiểu int Số nguyên không dấu Số hệ 8 Số hệ 16 Số nguyên kiểu long Số kiểu long hệ 8 Số kiểu long hệ 16
21
Đặc tả %c %d %u %o %x %ld %lo %lx Kiểu dữ liệu char int unsigned int int int long long long
xâu_định_dạng (2)
• Đặc tả: (tiếp)
22
Đặc tả %s %f %lf Ý nghĩa Xâu ký tự kết thúc bởi '\0' Số thực dấu phẩy tĩnh Số thực dấu phẩy tĩnh Kiểu dữ liệu char[] float double
Ví dụ (1)
int a; float x; char c; printf("Nhap so nguyen a: "); scanf("%d",&a);
23
• Chương trình nhập các dữ liệu nguyên, thực, ký tự
từ bàn phím rồi hiển thị lại các kết quả đã nhập:
#include
Ví dụ (2)
printf("Nhap so thuc x: "); scanf("%f",&x); printf("Nhap ky tu c: "); fflush(stdin); scanf("%c",&c); printf("Cac du lieu da nhap la: a = %d, x = %f, c
= '%c'",a,x,c);
• Chương trình (tiếp):
return 0;
24
}
Ví dụ (3)
25
• Chạy thử chương trình:
Lưu ý
• Khi nhập dữ liệu số: - Hàm scanf coi mọi ký tự số và ký tự dấu . được
nhập vào đều là hợp lệ
- Để kết thúc việc nhập dữ liệu cần nhấn phím Enter,
Tab, hoặc Spacebar
• Khi nhập dữ liệu dạng ký tự: - Hàm scanf coi mọi ký tự có trong bộ đệm của thiết bị vào chuẩn đều là hợp lệ, kể cả các ký tự Enter, Tab, hay Spacebar
- Trước khi nhập dữ liệu dạng ký tự/xâu ký tự, cần
26
dùng lệnh fflush(stdin); để xóa bộ đệm
Ví dụ (1)
• Chương trình tính diện tích, chu vi hình tròn:
#include
27
float r,dt,cv; printf("Nhap ban kinh r: "); scanf("%f",&r); dt=PI*r*r; cv=2*PI*r;
Ví dụ (2)
• Chương trình tính diện tích, chu vi hình tròn: (tiếp)
printf("Dien tich = %6.2f\n",dt); printf("Chu vi = %6.2f",cv); return 0;
28
}
Ví dụ (3)
• Chương trình tính tổng, hiệu, tích, thương của 2 số
a,b:
#include
29
float a,b,tong,hieu,tich,thuong; printf("Nhap a: "); scanf("%f",&a); printf("Nhap b: "); scanf("%f",&b); tong=a+b; hieu=a-b;
Ví dụ (4)
• Chương trình tính tổng, hiệu, tích, thương của 2 số
a,b: (tiếp)
tich=a*b; thuong=a/b; printf("Tong = %6.2f\n",tong); printf("Hieu = %6.2f\n",hieu); printf("Tich = %6.2f\n",tich); printf("Thuong = %6.2f\n",thuong); return 0;
30
}
3.2. Các cấu trúc điều khiển chương trình
• Cấu trúc rẽ nhánh
31
• Cấu trúc lặp
Cấu trúc rẽ nhánh
• Cấu trúc if
32
• Cấu trúc switch
Cấu trúc if
if (biểu_thức)
• Dạng 1: • Dạng 2:
câu_lệnh_1;
câu_lệnh_2;
if (biểu_thức) câu_lệnh; • Hoạt động: Máy tính xác định giá trị của Nếu biểu_thức. biểu_thức nhận giá trị đúng (khác 0) thì thực hiện câu_lệnh, nếu biểu_thức nhận giá trị sai (bằng 0) thì bỏ qua câu_lệnh
else
• Hoạt động: Máy tính xác định giá trị của biểu_thức. Nếu biểu_thức nhận giá trị đúng (khác 0) thì thực hiện câu_lệnh_1, nếu biểu_thức nhận giá trị sai (bằng 0) thì thực hiện câu_lệnh_2
33
• Lưu ý: Biểu_thức có thể nhận giá trị nguyên/thực
Ví dụ về cấu trúc if (1)
- if (a==0) - if (a==0)
printf("a la so 0"); printf("a la so 0");
printf("a khac 0");
else
- if (diem>=4) - if (diem>=4)
printf("Do"); printf("Do!");
else
printf("Truot!");
- if (b>0) - if (b>0)
else
printf("b la so duong"); printf("b la so duong");
34
printf("b khong phai la so duong");
Ví dụ về cấu trúc if (2)
#include
float a; printf("Nhap so thuc a = "); scanf("%f",&a); if (a>=0)
printf("Can bac hai cua %6.2f = %6.2f",a,sqrt(a));
else
printf("%6.2f la so am, khong co can bac hai",a);
return 0;
}
35
• Chương trình tính căn bậc hai của một số thực:
Ví dụ về cấu trúc if (3)
Bài tập: 1. Viết chương trình cho phép người dùng nhập vào 3 số thực a,b,c từ bàn phím. Kiểm tra xem a,b,c có thỏa mãn điều kiện độ dài 3 cạnh của 1 tam giác hay không, nếu có, tính diện tích và chu vi của tam giác rồi thông báo kết quả ra màn hình
36
2. Viết chương trình cho phép người dùng nhập vào một số nguyên dương n từ bàn phím, kiểm tra xem n có phải là số chính phương hay không, thông báo kết quả ra màn hình
Cấu trúc if lồng nhau (1)
• Các cấu trúc if có thể viết lồng nhau, khi đó else đi
với if gần nhất trước nó
• Ví dụ 2: if (a>0)
• Ví dụ 1: if (a!=0) if (a>0) printf("a la so duong");
printf("a la so duong"); else
printf("a la so am");
printf("a la so am");
else if (a<0)
else else
37
printf("a la so 0"); printf("a la so 0");
Cấu trúc if lồng nhau (2)
• Khi số từ khóa else ít hơn từ khóa if, để tránh nhầm lẫn, nên đưa các cấu trúc if được lồng bên trong vào trong cặp dấu ngoặc {}
• Ví dụ 2: if (a!=0)
printf("a la so duong");
if (a>0)
• Ví dụ 1: if (a!=0) if (a>0) {
else printf("a la so duong");
printf("a la so am"); else
printf("a la so am");
38
}
Cấu trúc if rẽ nhiều nhánh (1)
• Khi muốn thực hiện 1 trong n quyết định, có thể
câu_lệnh_1;
sử dụng cú pháp sau: if (biểu_thức_1)
else if (biểu_thức_2)
câu_lệnh_2;
… else if (biểu_thức_n)
câu_lệnh_n;
câu_lệnh_n+1;
39
else
Cấu trúc if rẽ nhiều nhánh (2)
• Ví dụ:
if (diem>10 || diem<0)
else if (diem>=9)
printf("Diem nhap vao khong hop le!");
printf("Xuat sac");
else if (diem>=8)
else if (diem>=6.5)
printf("Gioi");
printf("Kha");
else if (diem>=5)
else if (diem>=3.5)
printf("Trung binh");
40
printf("Yeu"); else printf("Kem");
Cấu trúc switch (1)
• Dạng 1: switch (biểu_thức) { • Dạng 2: switch (biểu_thức) {
các_câu_lệnh; break; case hằng_2:
các_câu_lệnh; break; case hằng_2:
case hằng_1: case hằng_1:
các_câu_lệnh; break; các_câu_lệnh; break;
… case hằng_n: … case hằng_n:
các_câu_lệnh;
default:
} các_câu_lệnh; break;
các_câu_lệnh;
41
}
Cấu trúc switch (2)
• Hoạt động: - Máy tính xác định giá trị của biểu_thức, giả sử bằng hằng_i (i=1..n), khi đó nó sẽ nhảy đến câu lệnh có nhãn case hằng_i và thực hiện tất cả các câu lệnh sau đó cho đến khi nào gặp break hoặc dấu } kết thúc switch
42
- Khi giá trị biểu_thức khác với mọi hằng_i, máy sẽ nhảy đến câu lệnh có nhãn default (dạng 2) hoặc ra khỏi switch (dạng 1)
Cấu trúc switch (3)
• Lưu ý: - biểu_thức, hằng_1, hằng_2, …, hằng_n phải cùng kiểu và là các kiểu số nguyên hoặc kiểu ký tự (không được là kiểu số thực)
- Từ khóa case là bắt buộc phải có trước một hằng. Nếu các_câu_lệnh là giống nhau với một số hằng (giả sử là hằng_i, j, k) thì có thể viết gọn theo cách:
… case hằng_i: case hằng_j: case hằng_k:
các_câu_lệnh; break;
43
…
Cấu trúc switch (4)
• Lưu ý: (tiếp) - hằng_1, hằng_2, …, hằng_n phải là các giá trị khác
nhau
- Cần đưa break (có thể thay thế bằng goto hoặc return tùy từng trường hợp) vào cuối mỗi case, trừ trường hợp case đó là case cuối cùng trong switch (dạng 1, không có default)
44
- Các cấu trúc switch có thể viết lồng nhau
Cấu trúc switch (5)
switch (thu)
• Ví dụ 1:
{
case 1: printf("Sunday"); break; case 2: printf("Monday"); break; case 3: printf("Tuesday"); break; case 4: printf("Wednesday"); break; case 5: printf("Thursday"); break; case 6: printf("Friday"); break; case 7: printf("Saturday");
45
}
Cấu trúc switch (6)
switch (thu)
• Ví dụ 2:
{
case 1: printf("Sunday"); break; case 2: printf("Monday"); break; case 3: printf("Tuesday"); break; case 4: printf("Wednesday"); break; case 5: printf("Thursday"); break; case 6: printf("Friday"); break; case 7: printf("Saturday"); break; default: printf("Nhap sai thu");
46
}
Cấu trúc switch (7)
• Chương trình cho người dùng nhập vào tháng và
47
năm, sau đó in ra số ngày tương ứng:
#include
Cấu trúc switch (8)
((nam%4==0 && nam%100!=0)
||
if
switch (thang) { case 2: (nam%400==0))
printf("29 ngay"); else printf("28 ngay"); break;
case 4: case 6: case 9: case 11:
printf("30 ngay"); break;
default: printf("31 ngay"); } return 0; }
48
Cấu trúc lặp
• Cấu trúc while
• Cấu trúc for
• Cấu trúc do while
• Vấn đề lặp vô hạn
• break, continue
49
• Nhãn và goto
Cấu trúc for (1)
for (biểu_thức_1;biểu_thức_2;biểu_thức_3)
• Cú pháp:
câu_lệnh;
trong đó:
khiển
- biểu_thức_1: dùng để khởi tạo giá trị cho biến điều
- biểu_thức_3: dùng để thay đổi giá trị của biến điều
- biểu_thức_2: dùng để kiểm tra giá trị của biến điều khiển xem vòng lặp có thể tiếp tục hay kết thúc (nhận giá trị đúng tiếp tục, sai kết thúc)
50
khiển
Cấu trúc for (2)
• Hoạt động: - Bước 1: Xác định biểu_thức_1 - Bước 2: Xác định biểu_thức_2 - Bước 3: Nếu biểu_thức_2 nhận giá trị sai, thoát khỏi cấu trúc for; ngược lại, nếu biểu_thức_2 nhận giá trị đúng, thực hiện câu_lệnh
- Bước 4: Xác định biểu_thức_3, quay lại bước 2 để
51
bắt đầu một vòng lặp mới
Cấu trúc for (3)
• Lưu ý: - Các biểu_thức_1,2,3 có thể vắng mặt nhưng phải có
dấu ;
- Mỗi biểu_thức_1,2,3 không nhất thiết phải là một biểu thức đơn mà có thể là một dãy các biểu thức được viết ngăn cách nhau bởi dấu , (khi đó các biểu thức được xác định theo chiều từ trái sang phải, tính đúng/sai của dãy biểu thức được xác định là tính đúng/sai của biểu thức cuối cùng trong dãy)
- biểu_thức_2 vắng mặt tương đương với việc nó
luôn nhận giá trị đúng vòng lặp vô hạn
52
- Các cấu trúc for có thể viết lồng nhau
Cấu trúc for (4)
- for(i=0;;i++)
• Một số ví dụ: - for(i=0;i<10;i++)
- j=10;
{ printf("%d\n",i);
if (i>=10) break; for(;j<=99;j+=2)
printf("%d\n",i); printf("%d\n",j);
} - k=11;
{
- for(i=0;i<=9;i++) for(;k<99;)
{
for(j=0;j<=9;j++)
printf("%5d",i+j); printf("%d\n",k); k+=2;
}
53
printf("\n"); }
Cấu trúc for (5)
• Chương trình tính tổng s = 1 + 2 + … + n
{
#include
int i,n,s; printf("Nhap n = "); scanf("%d",&n); for(s=0,i=1;i<=n;i++)
s+=i;
printf("Tong s = %d",s); return 0;
54
}
Cấu trúc for (6)
• Bài tập: 1. Viết chương trình tính tổng s:
s = 1/(2*1) + 1/(2*2) + 1/(2*3) + … + 1/(2*n) (n nhập từ bàn phím)
2. Viết chương trình tính n! (n nhập từ bàn phím) 3. Viết chương trình đếm và in ra các số chính phương
55
<= n (n nhập từ bàn phím)
Cấu trúc while (1)
• Cú pháp:
câu_lệnh;
while (biểu_thức)
• Hoạt động: - Bước 1: Xác định giá trị của biểu_thức - Bước 2: Nếu biểu_thức nhận giá trị sai, thoát khỏi while; nếu biểu_thức nhận giá trị đúng, thực hiện câu_lệnh rồi quay lại bước 1
• Ví dụ: i=0;
{
while (i<10)
printf("%d\n",i); i++;
56
}
Cấu trúc while (2)
• Lưu ý: - Biểu_thức có thể là một dãy các biểu thức được viết
ngăn cách nhau bởi dấu ,
- Nếu ngay từ đầu, biểu_thức nhận giá trị sai thì
57
không có bất kỳ lệnh nào được thực hiện - Các cấu trúc while có thể viết lồng nhau
Cấu trúc while (3)
nguyên dương a, b:
#include
int a,b; printf("Nhap 2 so nguyen duong a, b:"); printf("\na = "); scanf("%d",&a); printf("b = "); scanf("%d",&b);
58
• Chương trình tìm ước số chung lớn nhất của 2 số
Cấu trúc while (4)
while (a!=b)
• Chương trình: (tiếp)
if (a>b)
a=a-b;
b=b-a;
else
printf("UCLN = %d",a); return 0;
59
}
Cấu trúc while (5)
• Bài tập: 1. Viết chương trình cho phép người dùng nhập vào tử số và mẫu số của phân số a/b. In ra dạng tối giản của phân số đó
lặp for (slide 55)
60
2. Dùng câu lệnh while làm lại các bài tập phần vòng
Cấu trúc do while (1)
• Cú pháp:
do
while (biểu_thức);
các_câu_lệnh;
• Hoạt động: - Bước 1: Thực hiện các_câu_lệnh - Bước 2: Xác định giá trị của biểu_thức. Nếu biểu_thức nhận giá trị sai, thoát khỏi do while; nếu biểu_thức nhận giá trị đúng, quay lại bước 1
• Ví dụ: i=0;
{
printf("%d\n",i); i++;
do
}
61
while (i<10);
Cấu trúc do while (2)
• Lưu ý: - Biểu_thức có thể là một dãy các biểu thức được viết
ngăn cách nhau bởi dấu ,
- Các cấu trúc do while có thể viết lồng nhau
62
- Nếu ngay từ đầu, biểu_thức nhận giá trị sai thì các_câu_lệnh vẫn được thực hiện 1 lần trước đó
Cấu trúc do while (3)
nguyên dương a, b:
#include
int a,b; printf("Nhap 2 so nguyen duong a, b:"); printf("\na = "); scanf("%d",&a); printf("b = "); scanf("%d",&b);
63
• Chương trình tìm ước số chung lớn nhất của 2 số
Cấu trúc do while (4)
• Chương trình: (tiếp)
do
a=a-b;
if (a>b)
else
if (b>a)
b=b-a;
}
64
while (a!=b); printf("UCLN = %d",a); return 0;
Cấu trúc do while (5)
• Bài tập: 1. Dùng câu lệnh do while làm lại các bài tập phần
65
vòng lặp while (slide 60)
Vấn đề lặp vô hạn
• Xét các ví dụ: - for (i=0;;i++)
- for (i=0;i>=0;i++)
printf("%d\n",i);
- i=5; do {
printf("%d\n",i);
- i=5;n=10; printf("%d\n",i); i--;
while (i }
while (i<10); printf("%d\n",i); - i=5;n=10; - … printf("%d\n",i);
i--; while (i } 66 • break:
- Được dụng
sử
trong các cấu trúc
switch, for, while,
do while • continue:
- Được sử dụng trong các cấu
trúc for, while, do while,
không sử dụng trong switch
- Cho phép bỏ qua các câu lệnh
sau continue trong lần lặp
hiện tại và: - Cho phép thoát ra
khỏi cấu trúc chứa
nó + Chuyển tới bước xác định giá
trị của biểu thức đối với
while và do while 67 + Chuyển tới bước xác định
biểu_thức_3 rồi quay lại
vòng lặp mới đối với for • Nhãn:
- Đánh dấu câu lệnh để chương trình có thể nhảy tới câu lệnh đó - Cú pháp: • goto:
- Điều khiển chương trình nhảy đến câu lệnh được nhãn: câu_lệnh; gán nhãn tương ứng goto nhãn; 68 - Cú pháp: if (i • Ví dụ:
#include printf("Tong s = %d",s);
return 0; } 69 int i,n,s;
printf("Nhap n = ");
scanf("%d",&n);
s=0;
i=1;
lap: s+=i; - goto không cho phép nhảy từ ngoài vào trong một
khối lệnh nhưng cho phép nhảy từ trong ra ngoài
khối lệnh 70 • Lưu ý:
- go to và nhãn cần nằm trong một hàm; goto cho
phép nhảy từ vị trí câu lệnh này tới câu lệnh khác
trong thân một hàm nhưng không cho phép nhảy từ
hàm này sang hàm khác Khi sử dụng for, while,
do while cần chú ý đến
tính dừng
break, continue
Nhãn và goto (1)
Nhãn và goto (2)
Nhãn và goto (3)