Bài giảng Ngôn ngữ lập trình C - Các câu lệnh có cấu trúc
Mục đích
Sử dụng thành thạo hằng, biến
Làm quen với cách sử dụng các toán tử
Biết cách sử dụng các câu lệnh điều khiển
để viết chương trình
Tóm tắt nội dung Bài giảng Ngôn ngữ lập trình C - Các câu lệnh có cấu trúc, để xem tài liệu hoàn chỉnh bạn click vào nút "TẢI VỀ" ở trên
NGÔN NGỮ LẬP TRÌNH C
Các câu lệnh có cấu trúc
Ninh Thị Thanh Tâm
Khoa CNTT – HV Quản lý Giáo dục
Mục đích
Sử dụng thành thạo hằng, biến
Làm quen với cách sử dụng các toán tử
Biết cách sử dụng các câu lệnh điều khiển
để viết chương trình
Nội dung
Câu lệnh đơn, câu lệnh ghép
Câu lệnh if
Câu lệnh switch
Câu lệnh while
Câu lệnh do while
Câu lệnh for
Câu lệnh điều khiển vòng lặp
Câu lệnh
Câu lệnh đơn
Một biểu thức lệnh, lời gọi hàm kết thúc bởi
dấu chấm phẩy (;)
Câu lệnh ghép
Là tập hợp các câu lệnh đơn được bao bởi
cặp dấu { }
Câu lệnh rẽ nhánh if
Dạng khuyết
Dạng đầy đủ
Dạng khuyết
Cú pháp:
if (Biểu thức)
;
Thực hiện:
Tính giá trị Biểu thức
Nếu Biểu thức != 0,
thực hiện
Ngược lại, bỏ qua
Biểu thức
true false
Sơ đồ khối
Dạng đầy đủ
Cú pháp:
if (Biểu thức)
;
else
;
Biểu thức
true false
Sơ đồ khối
Dạng đầy đủ (tiếp)
Thực hiện
Tính giá trị của Biểu
thức
Nếu Biểu thức != 0,
thực hiện
Nếu Biểu thức = 0,
thực hiện
Biểu thức
true false
Sơ đồ khối
Ví dụ 1 – Cách 1
/*IF1.C*/
#include
main()
{
float a, b, c, max;
printf("Nhap 3 so thuc\n");
scanf("%f%f%f",&a, &b, &c);
if (a<b)
if (b<c)
max = c;
else max = b;
else if (a<c)
max = c;
else max = a;
printf("Gia tri lon nhat cua %6.2f, %6.2f va %6.2f la\n",a,b,c);
printf("%6.2f",max);
getch();
return 0;
}
Ví dụ 1 - Cách 2
/*IF2.C*/
#include
main()
{
float a, b, c, max;
clrscr();
printf("Nhap 3 so thuc\n");
scanf("%f%f%f",&a, &b, &c);
max = a;
if (max<b)
max = b;
if (max<c)
max = c;
printf("Gia tri lon nhat cua %6.2f, %6.2f va %6.2f la\n",a,b,c);
printf("%6.2f",max);
getch();
return 0;
}
Kết quả
Chú ý
Câu lệnh trước else vẫn có dấu (;)
Nên đặt Biểu thức (BT) trong cặp dấu ( )
Ta có thể viết if (BT) thay cho if (BT != 0)
, , có thể
là câu lệnh đơn hoặc câu lệnh ghép
Khi có nhiều câu lệnh if lồng nhau:
else được gắn với if không có else ở gần nhất trước
đó
Bài tập
Giải và biện luận các phương trình:
ax2+bx+c=0
ax+b=0
Câu lệnh lặp
for
Lặp với điều kiện trước while
Lặp với điều kiện sau do while
Câu lệnh while
Cú pháp:
while (Biểu thức)
;
Thực hiện:
Tính giá trị Biểu thức
Nếu Biểu thức != 0, thực
hiện , quay
lại tính giá trị của Biểu
thức
Ngược lại, chuyển sang
câu lệnh sau while
Biểu thức
True
False
Sơ đồ khối
Ví dụ 2
/*WHILE1.C*/
#include
main()
{
int count = 0;
int total = 0;
clrscr();
while (count<=10)
{
total = total +count*count;
count++;
}
printf("count=%d",count);
printf("\ntotal=%d",total);
getch();
return 0;
}
Kết quả
Ví dụ 3
/*WHILE1.C*/
#include
main()
{
float a, b, c;
clrscr();
printf("\nNhap vao ba canh cua tam giac:");
scanf("%f%f%f",&a,&b,&c);
while (a+b<=c||a+c<=b||b+c<=a)
{
printf("Chua dung, yeu cau nhap lai\n");
scanf("%f%f%f",&a,&b,&c);
}
printf("OK");
getch();
return 0;
}
Kết quả
do while
Cú pháp:
do {
;
} while (Biểu thức);
Thực hiện:
Thi hành
Tính và kiểm tra Biểu thức
Nếu Biểu thức != 0, quay
lại thực hiện
Ngược lại, thoát khỏi vòng
lặp
Biểu thức
True
False
Sơ đồ khối
Ví dụ
/*dowhile.c*/
#include
void main()
{
float a, b, c;
printf("\nNhap va do dai ba canh tam giac:\n");
do
{
scanf("%f%f%f",&a,&b,&c);
if (a+b<=c||a+c<=b||b+c<=a)
printf("Not OK\n");
} while (a+b<=c||a+c<=b||b+c<=a);
printf("OK");
getch();
}
Kết quả
Câu lệnh for
Cú pháp:
for ([BT1]; [BT2]; [BT3])
;
Thực hiện:
Tương đương:
BT1;
while (BT2) {
;
BT3;
}
BT1;
BT2
;
BT3;
False
True
Sơ đồ khối
Câu lệnh for (tiếp)
Thực hiện:
Thực hiện BT1 (đầu tiên và duy nhất)
Tính giá trị của BT2
Nếu BT2 !=0, thực hiện và BT3, tính
lại BT2
Nếu BT2 = 0, kết thúc vòng lặp for
BT1 khởi đầu giá trị cho các biến điều khiển
BT2 xác định số bước của vòng lặp for
Chú ý
Có thể có nhiều biến điều khiển
/*for2.c*/
#include
#include
void main()
{
int i, j;
clrscr();
for (i = 1, j=100; i<j; i++, j--)
printf("(%d,%d)",i,j);
getch();
}
Chú ý
Có thể bỏ qua một trong ba biểu thức
thành phần của vòng for
Phải có dấu “;”
for (BT1; ;BT2) là một chu trình vô hạn
Thoát khỏi vòng lặp: dùng câu lệnh return hoặc
break
Có nhiều vòng lặp for lồng nhau
Ví dụ
/*for3.c*/
#include
#include
void main()
{
int i, j;
for(i=1; i<=10; i++)
{
for (j=1; j<=10; j++)
printf("%5d",i*j);
printf("\n");
}
getch();
}
Kết quả
Câu lệnh chọn switch
BT=h1 BT=h2 BT=hn
…False False False
True True True
Sơ đồ khối
Câu lệnh chọn switch (tiếp)
Cú pháp
switch (Biểu thức) {
case (Giá trị 1): ; [break;]
case (Giá trị 2): ; [break;]
....
case (Giá trị n): ; [break;]
[default: [break;]]
}
Câu lệnh chọn switch (tiếp)
Thực hiện
Tính giá trị của Biểu thức, lần lượt so sánh
với các Giá trị i
Nếu giá trị của Biểu thức bằng Giá trị i nào đó
thì thực hiện
Trong trường hợp Biểu thức khác Giá trị i với
mọi i=1..n thì
Khi có default, máy nhảy tới câu lệnh có nhãn
default
Khi không có default, máy thoát ra khỏi toán tử
switch
Câu lệnh chọn switch (tiếp)
Ra khỏi toán tử switch khi
Gặp câu lệnh break
Gặp dấu ngoặc nhọn cuối cùng của switch
Có thể sử dụng câu lệnh goto
Sử dụng return nếu nằm trong thân hàm
Ví dụ
/*swith1.c*/
#include"stdio.h"
main()
{
int ma;
tt: printf("Nhap ma = ");
scanf("%d", &ma);
switch(ma)
{
case 1: printf("So cap\n");
break;
case 2: printf("Trung cap\n");
break;
case 3: printf("Dai hoc\n");
break;
case 4: printf("Cao hoc\n");
break;
case 5: printf("Pho tien sy\n");
break;
case 6: printf("Tien sy\n");
break;
default:
printf("Nhap sai\n");
}
getch();
}
Kết quả
Ví dụ
/*switch2.c*/
#include
#include
void main()
{
int thang, nam;
clrscr();
printf("\nNhap thang can tinh ngay:");
scanf("%d",&thang);
printf("Nhap nam:");
scanf("%d",&nam);
switch(thang) {
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12: printf("Thang %d nam %d co %d ngay\n",thang, nam,31);
break;
Ví dụ
case 4:
case 6:
case 9:
case 11: printf("Thang %d nam %d co %d ngay\n",thang, nam,30);
break;
case 2: if (nam%4==0||nam%100!=0)
printf("Thang %d nam %d co %d ngay\n",thang, nam,29);
else printf("Thang %d nam %d co %d ngay\n",thang,
nam,28);
break;
}
getch();
}
Câu lệnh điều khiển vòng lặp
Lệnh break
Lệnh continue
Khi cần thoát khỏi một chu trình mà không
thực hiện kiểm tra điều kiện lặp
Lệnh break
Mục đích:
Thoát ra khỏi các vòng lặp for, while, do
while trong cùng chứa nó
Thoát khỏi câu lệnh rẽ nhánh switch
Câu lệnh: break;
Ví dụ
/*break.c*/
#include
#include
void main()
{
int n;
clrscr();
do {
printf("\nNhap n=");
scanf("%d",&n);
if (n>0)
{
printf("\nOK");
break;
}
else printf("\nNot OK");
} while (1);
getch();
}
Kết quả
Lệnh continue
Bỏ qua câu lệnh còn lại trong thân vòng
lặp để bắt đầu một lần lặp mới
Câu lệnh: continue;
Ví dụ
/*continue.c*/
#include
#include
void main()
{
int i, n, s=0;
clrscr();
for (i=1; i<=10; i++)
{
printf("\nLan nhap thu %d:",i);
printf("\nn=");
scanf("%d",&n);
if (n<=0) continue;
printf("Ban vua nhap mot so duong");
s += n;
}
printf("Tong cac so duong vua nhap %d",s);
getch();
}
Kết quả
File đính kèm:
Bài giảng Ngôn ngữ lập trình C - Các câu lệnh có cấu trúc.pdf

