Bài giảng Tin học đại cương - Phần 2: Ngôn ngữ lập trình C (Tiết 4)

11/24/2010  
Ni dung  
Lnh khi  
2.4 Các lnh cơ bn (tiếp)  
Lnh lp  
Lnh break và continue  
Lnh điu khin rnhánh  
2.3 Các lnh cơ bn (tiếp)  
Lnh khi: là dãy các câu lnh được đặt trong cp du ngoc  
nhn { }.  
{
Lnh khi  
lnh_1;  
lnh_2;  
….  
lnh_n;  
}
1
11/24/2010  
Lnh khi  
Lnh khi  
Trong lnh khi có thcha lnh khi khác, ta gi đó là  
các lnh khi lng nhau. Slng nhau ca các lnh khi là  
không hn chế.  
C cho phép khai báo biến trong lnh khi. Ràng buc duy  
nht là phn khai báo phi nm trước phn câu lnh  
int d=6;  
{
printf("Gia tri d o ngoai: %i\n",d);  
lnh;  
{
{
lnh;  
...  
int d=74;  
printf("Gia tri d o trong: %i\n",d);  
}
}
printf("Gia tri d o ngoai: %i\n",d);  
}
Lnh lp  
Sp xếp 15 đim để to thành  
hình tam giác ta được hình  
Lnh lp  
Ta mun viết chương trình tính và hin thị  
slượng đim ca tam giác th8  
for  
int triangularNumber;  
while  
do  
triangularNumber = 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8;  
printf ("So diem trong tam giac thu 8 la %i\n",  
triangularNumber);  
2
11/24/2010  
Lnh lp  
Lnh lp for  
#include <stdio.h>  
int main (void)  
{
Lnh lp for  
int n, triangularNumber;  
triangularNumber = 0;  
for ( n = 1; n <= 200; n = n + 1 )  
triangularNumber = triangularNumber + n;  
printf ("So diem trong tam giac thu 200  
la %i\n", triangularNumber);  
return 0;  
}
Lnh lp  
Lnh lp  
Nếu ta mun tính slượng đim ca tam giác th200 ?  
Lnh for  
#include <stdio.h>  
int main (void)  
{
C cho phép ta thc hin vic này mt cách ddàng thông qua  
lnh lp  
int n, triangularNumber;  
triangularNumber = 0;  
for ( n = 1; n <= 200; n = n + 1 )  
triangularNumber = triangularNumber + n;  
Trong C có 3 lnh lp khác nhau  
for  
while  
Và do  
printf (" So diem trong tam giac thu 200 la  
%i\n", triangularNumber);  
return 0;  
}
3
11/24/2010  
Lnh for  
Lnh for  
for ( biu_thc_khi_to; điu_kin_lp; biu_thc_lp )  
lnh;  
Quá trình thc hin lnh for:  
1. Biu thc khi to được thc hin đầu tiên  
2. Điu kin lp sẽ được kim tra, nếu không tha mãn  
(giá trfalse) thì kết thúc lp. Ngược li thì thc hin lp  
biu_thc_khi_to: được sdng để đặt giá trban đầu khi  
vòng lp chưa bt đầu.  
3. Lnh trong thân vòng lp được thc hin  
4. Biu thc lp được thc hin  
5. Quay trli bước 2  
điu_kin_lp: điu kin cho vòng lp còn tiếp tc thc  
hin.  
biu_thc_lp: là biu thc sẽ được thc hin mi khi thc  
hin xong mt vòng lp.  
Lnh for  
Lnh for  
VD. Chương trình in ra kích thước theo yêu cu người dùng  
VD. In ra bng các tam giác đim  
#include <stdio.h>  
int main (void)  
#include <stdio.h>  
int main (void)  
{
{
int n, number, triangularNumber;  
printf ("Nhap vao kich thuoc tam giac ban muon? ");  
scanf ("%i", &number);  
triangularNumber = 0;  
for ( n = 1; n <= number; ++n )  
triangularNumber += n;  
int n, triangularNumber;  
printf ("BANG SO LUONG DIEM CUA TAM GIAC\n\n");  
printf (" n  
Tong tu 1 toi n\n");  
printf ("--- -----------------\n");  
triangularNumber = 0;  
for ( n = 1; n <= 10; ++n ) {  
triangularNumber += n;  
printf (" %2i %10i\n", n, triangularNumber);  
}
printf ("So luong diem cua tam giac %i la %i\n", number,  
triangularNumber);  
return 0;  
}
return 0;  
}
4
11/24/2010  
Lnh for  
Lnh for  
Lnh for lng nhau  
Mt sdng khác ca lnh for  
#include <stdio.h>  
int main (void)  
{
for ( i=0, j=0; i < 10; ++i )  
int n, number, triangularNumber, counter;  
for ( counter = 1; counter <= 5; ++counter ) {  
printf ("Kich thuoc tam giac? ");  
scanf ("%i", &number);  
for ( i=0, j=100; i < 10; ++i, j=j-10 )  
for ( ; j != 100; ++j )  
triangularNumber = 0;  
for ( n = 1; n <= number; ++n )  
triangularNumber += n;  
printf ("So luong diem cua tam giac %i la %i\n\n",  
number, triangularNumber);  
}
for ( int counter=1; counter<= 5; ++counter )*  
Note * : C99 (Dev-C++)  
return 0;  
}
Lnh lp while  
Lnh while:  
while (biu_thc)  
câu_lnh;  
Lnh while  
Quá trình thc hin lnh while:  
1. Biu thc trong ngoc được thc hin  
.
Nếu kết quca biu thc là TRUE (hoc !=0)  
thì câu lnh được thc hin  
.
Nếu kết quFALSE (hoc ==0) thì kết thúc lnh  
lp  
2. Lp li bước 1.  
5
11/24/2010  
Lnh lp while  
Lnh lp while  
VD. Chương trình in ra các st1 đến 5  
Tương ng gia lnh lp for và while  
for(biu_thc_khi_to; điu_kin_lp; biu_thc_lp)  
lnh;  
#include <stdio.h>  
int main (void)  
{
Lnh lp while ương ng  
int count = 1;  
while ( count <= 5 ) {  
printf ("%i\n", count);  
++count;  
biu_thc khi_to;  
while(điu_kin_lp){  
lnh;  
}
return 0;  
}
biu_thc_lp;  
}
Lnh lp while  
Lnh lp while  
#include <stdio.h>  
int main (void)  
{
VD. Tìm ước schung ln nht ca hai snguyên dương u và v.  
int u, v, temp;  
Thut toán tìm ước schung ln nht được đề xut bi Euclid  
khong năm 300 TCN.  
printf ("Hay nhap vao hai so nguyen duong: ");  
scanf ("%i%i", &u, &v);  
while ( v != 0 ) {  
temp = u % v;  
u = v;  
v = temp;  
Bước 1: Nếu v bng 0 thì thut toán kết thúc, ước số  
chung ln nht là u  
Bước 2: tính temp = u % v, u = v, v = temp và quay trli  
bước 1  
}
printf ("Uoc so chung lon nhat cua chung la %i\n", u);  
return 0;  
}
6
11/24/2010  
Toán tquan hệ  
Toán tquan h: Kim tra mi quan hgia hai biến  
hay gia mt biến và mt hng  
VD. Viết chương trình in các chsca mt số  
nguyên dương theo thtngược  
Toán tquan hệ  
12346 thì sin ra là 64321  
Toán t  
Ý nghĩa  
>
Ln hơn  
>=  
<
Ln hơn hoc bng  
Nhhơn  
<=  
==  
!=  
Nhhơn hoc bng  
Bng  
Không bng  
Lnh lp do  
do  
lnh;  
while ( điu_kin_lp );  
Lnh do  
Quá trình thc hin:  
Bước 1: Lnh sẽ được thc hin  
Bước 2: Điu kin lp sẽ được kim tra  
Nếu điu kin lp là TRUE (hoc !=0) thì quay trli  
bước 1  
Ngược li, điu kin lp là FALSE (hoc bng 0) thì kết  
thúc lnh lp  
7
11/24/2010  
Lnh lp do  
VD. Chương trình bt người sdng nhp vào snguyên dương  
chn.  
#include <stdio.h>  
int main (void)  
{
Lnh break, continue  
int u;  
do  
{
printf("Nhap vao so nguyen duong chan: ");  
scanf("%i",&u);  
}
while(u<0 || u%2!=0);  
printf("So vua nhap: %i\n",u);  
system("pause");  
return 0;  
}
Lnh break, continue  
Lnh break, continue  
Trong quá trình lp, nếu mun kết thúc vòng lp sm (do gp  
li, do hết dliu …) thì ta dùng lnh break  
Lnh continue làm cho lnh lp thc hin tiếp bqua phn  
lnh sau lnh continue  
int i;  
for(i=0; i<100;i++)  
{
int i;  
for(i=0; i<10;i++)  
{
printf("%i\n",i);  
if(i<5)continue;  
printf("bla bla \n");  
}
printf("%i\n",i);  
if(i==5) break;  
}
Trong trường hp các vòng lp lng nhau, chvòng lp trong  
cùng nơi mà lnh break được thc hin skết thúc.  
8
11/24/2010  
Lnh điu khin rnhánh  
Lnh if và if .. else  
if  
if… else  
Lnh if .. else lng nhau  
switch .. case  
Lnh if và if .. else  
Lnh if và if .. else  
if (biu_thc_điu_kin)  
lnh;  
Lnh if:  
int main (void)  
{
Quá trình thc hin:  
int number;  
printf ("Type in your number: ");  
scanf ("%i", &number);  
Bước 1: biu_thc_điu_kin được thc hin.  
Bước 2:  
if ( number < 0 )  
number = -number;  
. Nếu biu_thc_điu_kin có giá trTRUE (hoc !=0) thì  
thc hin lnh  
. Ngược li, thì bqua không làm gì cả  
printf ("The absolute value is %i\n", number);  
return 0;  
}
9
11/24/2010  
Lnh if và if .. else  
Lnh if và if .. else  
for ( i = 1; i <= soThanhvien; ++i ) {  
printf ("Nhap diem cua thanh vien thu #%i: ", i);  
scanf ("%f", &diem);  
tongDiem = tongDiem + diem;  
if ( diem < 5.0 )  
VD. Chương trình tính tng đim trung bình, và đếm slượng  
thành viên không qua ca lp.  
#include <stdio.h>  
int main (void)  
{
++slTruot;  
}
trungBinh = tongDiem / soThanhvien;  
printf ("\nDiem trung binh = %0.2f\n", trungBinh);  
printf ("So luong truot = %i\n", slTruot);  
return 0;  
int soThanhvien, i;  
int slTruot = 0;  
float trungBinh, diem, tongDiem = 0;  
}
printf ("So luong thanh vien cua lop? ");  
scanf ("%i", &soThanhvien);  
Lnh if và if .. else  
Lnh if và if .. else  
VD. Chương trình xác định snguyên nhp vào là chn hay lẻ  
if (biu_thc_điu_kin)  
lnh;  
else  
#include <stdio.h>  
int main (void)  
{
int soKiemTra, phanDu;  
printf ("Nhap vao so can kiem tra: ");  
scanf ("%i", &soKiemTra);  
phanDu = soKiemTra % 2;  
lnh;  
Quá trình thc hin:  
Bước 1: biu_thc_điu_kin được thc hin.  
Bước 2:  
if ( phanDu == 0 )  
printf ("So vua nhap vao la chan.\n");  
else  
. Nếu biu_thc_điu_kin có giá trTRUE (hoc !=0) thì  
thc hin lnh sau if  
. Ngược li, thì thc hin lnh sau else  
printf ("So vua nhap vao la le.\n");  
return 0;  
}
10  
11/24/2010  
Lnh if và if .. else  
Lnh if và if .. else  
VD. Chương trình kim tra năm người dùng nhp vào tbàn phím  
có phi năm nhun hay không (chia hết cho 4 nhưng không chia hết  
cho 100 hoc là năm chia hết cho 400).  
Kim tra các quan hkết hp (có nhiu hơn 1 quan h)  
VD. Kim tra các sdương và chn  
if(n>=0 && n%2==0)  
slSo++;  
int main (void)  
{
int year;  
Kim tra xem sngười dùng có nhp vào có phi là đim thi  
không (đim thi là strong khong 0 10)  
printf ("Nhap nam can kiem tra: ");  
scanf ("%i", &year);  
if(diem<0 || diem>10)  
printf("Khong hop le!\n");  
else  
if ((year%4 == 0 && year%100 != 0) || year%400 == 0)  
printf ("Nam %i la nam nhuan.\n",year);  
else  
<thc hin tính toán…>  
printf ("Khong, day khong phai la nam nhuan.\n");  
return 0;  
}
Lnh if và if .. else  
Lnh if và if .. else  
Lnh if lng nhau  
VD3. xác định kết quhc tp theo đim  
VD1. Đếm slượng snguyên dương và chn  
float diem;  
printf("Nhap diem cua sinh vien: ");  
scanf("%f", &diem);  
if(n>0)  
if(n%2==0)  
slSo++;  
if(diem<0 || diem >10)  
printf("Diem khong hop le.\n");  
else  
VD2. đếm slượng schskhác 0 ca mt số  
slSo=0;  
if(n>10) {  
if(diem>=5)  
while(n>0){  
printf("Sinh vien dat diem do.\n");  
else  
if(n%10 != 0) slSo++;  
n=n/10;  
printf("Oh, sinh vien phai hoc lai. ");  
}
}
else  
if(n>0) slSo=1;  
11  
11/24/2010  
Lnh if và if .. else  
Lnh if và if .. else  
VD. Xác định các giai đon trong đời người  
Lnh khi else if: viết gn li các lnh if …else lng nhau.  
if(tuoi<0)  
printf("Tuoi khong hop le.\n");  
else if(tuoi<6) //tu 0-6  
printf("Tuoi thieu nhi, nhi dong.\n");  
else if(tuoi<12) //tu 6-12  
printf("Tuoi thieu nien.\n");  
else if(tuoi<19) //13-19  
printf("Tuoi thanh thieu nien.\n");  
else if(tuoi<35) //20-34  
printf("Tuoi thanh nien.\n");  
else if(tuoi<60) //35-60  
printf("Tuoi trung nien.\n");  
else //>60  
if ( biu_thc_điu_kin_1 )  
lnh_1;  
else if (Biu_thc_điu_kin_2 )  
lnh_2;  
<các lnh else if tiếp theo nếu có>  
else  
lnh_n;  
printf("Tuoi cao nien.\n");  
VD. Viết chương trình nhp vào tbàn phím mt  
biu thc trung tđơn gin dng a R b. Tính và  
in ra giá trca biu thc này. Các toán tR ở  
đây chlà : +, -. *, / và %, các toán hng a,b là các  
giá trsthc  
Lnh switch  
Vd. Biu thc nhp vào có thlà 34.5 * 7  
Chú ý trường hp nếu toán tlà phép chia, và  
toán hng b có giá trlà 0 (trường hp chia cho 0)  
12  
11/24/2010  
Lnh switch  
Lnh switch  
switch ( biu_thc)  
{
VD. Chương trình xác định sva nhp vào tbàn phím là số  
chn hay sl.  
case giatri_1:  
program statement  
...  
int so;  
break;  
case giatri_2:  
...  
break;  
...  
printf("Nhap vao so nguyen: ");  
scanf("%d",&so);  
switch (so%2)  
{
case 1:  
case giatri_n:  
printf("So vua nhap la le.\n");  
break;  
case 0:  
program statement ...  
break;  
default:  
printf("So vua nhap la chan.\n");  
break;  
}
program statement ...  
break;  
}
Lnh switch  
Lnh switch  
case 2:  
VD. Chương trình tính sngày trong mt tháng ca mt năm  
thường (không phi năm nhun)  
printf("Thang nay co 28 ngay");  
break;  
int thang;  
case 4:  
scanf("%d",&thang);  
switch(thang)  
case 6:  
{
case 9:  
case 1:  
case 3:  
case 5:  
case 7:  
case 11:  
printf("Thang nay co 30 ngay");  
break;  
}
case 8:  
case 10:  
case 12:  
printf("Thang nay co 31 ngay");  
break;  
13  
11/24/2010  
Toán tử điu kin  
Toán tử điu kin  
điu_kin ? biuThc_1 : biuThc_2;  
VD.  
Toán tử điu kin  
Tìm sln nht trong 2 sa,b  
maxValue = ( a > b ) ? a : b;  
Tính căn bc hai ca x nếu x ln hơn 0  
s = ( x < 0 ) ? -1 : sqrt(x);  
Hàm du  
printf("Sign = %i\n", (number < 0) ? –1 :  
(number == 0) ? 0 : 1);  
14  
pdf 14 trang Thùy Anh 26/04/2022 8160
Bạn đang xem tài liệu "Bài giảng Tin học đại cương - Phần 2: Ngôn ngữ lập trình C (Tiết 4)", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

File đính kèm:

  • pdfbai_giang_tin_hoc_dai_cuong_phan_2_ngon_ngu_lap_trinh_c_tiet.pdf