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

pdf43 trang | Chuyên mục: C/C++ | Chia sẻ: dkS00TYs | Lượt xem: 2768 | Lượt tải: 2download
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:

  • pdfBài giảng Ngôn ngữ lập trình C - Các câu lệnh có cấu trúc.pdf