intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

Chương 3: Cấu trúc điều khiển và vòng lặp

Chia sẻ: Trần Quang | Ngày: | Loại File: DOCX | Số trang:8

69
lượt xem
6
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

3.1/ a/Khái niệm : mọi chương trình đều có thể biểu diễn qua 3 cấu trúc : - tuần tự : mặc định ( default) - lựa chọn ( lệnh if hoặc lệnh switch) - lặp ( for, while hoặc do while) b/ Khối lệnh : là tập hợp các câu lệnh được khai báo bởi 2 dấu { và } . không đặt dấu chấm phẩy ( ; ) sau một khối lệnh trừ một vài trường hợp đặc biệt.

Chủ đề:
Lưu

Nội dung Text: Chương 3: Cấu trúc điều khiển và vòng lặp

  1. http://maytinhcuatui.blogspot.com/ CHƯƠNG 3 : CẤU TRÚC ÐIỀU KHIỂN VÀ VÒNG LẶP 3.1/ a/Khái niệm : mọi chương trình đều có thể biểu diễn qua 3 cấu trúc : - tuần tự : mặc định ( default) - lựa chọn ( lệnh if hoặc lệnh switch) - lặp ( for, while hoặc do while) b/ Khối lệnh : là tập hợp các câu lệnh được khai báo bởi 2 dấu { và } . không đặt dấu chấm phẩy ( ; ) sau một khối lệnh trừ một vài trường hợp đặc biệt. 3.2 / Các câu lệnh 3.2.1 Lệnh If : - Cú pháp : If ( biểu thức) < lệnh> ; - Diễn giải : nếu Biểu thức đúng ( khác 0 ) --> thực hiện ngược lại nếu biểu thức sai ( = 0 ) -ă thực hiện lệnh đứng sau câu lệnh if. - Hoặc : If ( biểu thức) ; else < lệnh B); + Biểu thức : # 0 ( đúng) ----> < lệnh A> =0 ( sai ) ---> < lệnh B>. * Ví dụ : tìm số lớn nhất trong 2 số a, b : if (ab)? a:b; ( Viết lại hoàn chỉnh chương trình). - 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 nhất. If(bt1) ; Else If (bt2) If(bt3) < lệnh2>; else ; /* bt3 = = 0 */ else ; /* bt2= = 0 */ *Ví dụ : 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 => Nếu B=0 : vô số nghiệm
  2. B != 0 ( ngược lại) : vô nghiệm. /* Giải phương trình bậc nhất : Ax + B = 0 */ #Include #Include < conio.h> void main ( void) { float a, b ; /* nhập dữ liệu từ bàn phím */ print ( "\ nhập 2 số a,b : "); scanf(" %f %f ", &a, &b); /* giải phương trình*/ If ( a= = 0 ) If( b= =0 ) Printf (" Phương trình có vô số nghiệm ! \n " ); Else Printf (" phương trình vô nghiệm \n "); Else / * a khác 0 */ Printf (" phương trình có nghiệm là : x= %f \n ", -b/a); Printf( " ấn phím bất kỳ tiếp tục "); Getche(); } Bài tập 1 : Tìm những lỗi cú pháp các đoạn chương trìnhh sau : A/ scanf ( "d", value); B/ printf ("tích các %d và %d là %d " \n, x,y); C/ printf (" phần dư của %d chia cho %d là \n ", x , y , x%y ); D/ if(x=y); Printf (" %d bằng %d \n ", x,y); E/ If ( age>=65); Printf (" gia ì! '); Else Printf(' Tre! '); 3.2.2 Lệnh switch - Cú pháp : Switch (biểu thức nguyên). { Case N1 : lệnh 1; Case N2 : lệnh 2;
  3. ..... [ default : lệnh;] } - Biểu thức nguyên là giá trị nguyên : Ni(i=1,2...) là các số nguyên. - Với biểu thức khác với mọi Ni => thực hiện lệnh sau default. - Chú ý : nếu nhóm câu lệnh sau nhãn case Ni không có câu lệnh break thì máy sẽ chuyển sang nhóm câu lệnh sau nhãn case Ni+1 *Ví dụ : đổi 1 số nguyên sang chuỗi ký tự là tên các môn học #Include #Include main( ) { Int ma ; Do { printf(" \n cho mã cần chuyển "); scanf(" %d ", &ma); switch(ma) { case 0 : printf(" \n lớp tin học a "); break; case 1 : printf( " \n lớp tin học b"); break; case 2 : printf(" \n lớp trung cấp "); break; case 3 : printf (" \n lóp chuyên viên "); break; default : printf( " \n lợp thiế tiền học phí"); } printf( " \n có tiếp tục không ?(Y/N)"); } while( toupper ( getch () ! = 'N '); /* Chuyển san ký tự hoa */ } 3.2.3 / Lệnh For : - Cú pháp : for ( bt1; bt2 ; bt3) lệnh;
  4. - Giải thích : + bt1 : là toán tử gán để tạo giá trị ban đầu cho biến điều khiển. + bt2 : biểu thức điều kiện để thực hiện vòng lặp. + bt3 : biểu thức tăng giá trị của biến điều khiển của vòng lặp. *Ví dụ : Tính Tổng S=1+2+3+..+n For ( int i=1, s=0; i
  5. printf ( " tong s = %15.0f ", s); getch(); Cách 2 : for ( s=0, t=1, i=1; i
  6. +b2. Nếu giá trị của biểu thức 1 sai ( = 0 ) thì chương trình ra khỏi vòng while +b3. Nếu giá trị của biểu thức đúng thì thực hiện lệnh 1 và quay lại bước 1(b1). - Chú ý : Biểu thức 1 có thể gồm nhiều biểu thức nhưng tính đúng sai ph ụ thu ộc vào bi ểu th ức cuối cùng. Ví dụ : Nhập 1 dãy số nguyên từ bàn phím #include < stdio.h > #include < conio.h > main () { Int dayso [ 10 ] ; int i = 0 ; While ( i < 10) { printf ( "\n Số thu %d : ", i ); scanf ( " %d", & dayso [i]); i ++ ; } 3.25/ Câu lệnh Do while ( làm trước hỏi sau ) - Cú pháp : do lệnh 1 ; while ( biểu thức 1 ) ; - Nguyên tắc thực hiện : +b1. Máy thực hiện câu lệnh 1 ; +b2. Sau đó tính giá trị của biểu thức 1, n ếu giá trị c ủa bi ểu th ức 1 sai thì ch ương trình thoát ra khỏi vòng lặp. Nếu giá trị của biểu thức 1 đúng thì quay lại bước 1. Chú ý : - while : Ðiều kiện được kiểm tra trước, nếu đúng mới thực hiện. - do while : câu lệnh được thực hiện trước khi kiểm tra. Câu lệnh thực hi ện bao gi ờ ít nh ất là 1 lần. ( do while ngược với Repeat until của Pascal : lệnh Do while sai thì dừng, còn lệnh repeat until đúng thì dừng ). -Biểu thức 1 có thể gồm nhiều biểu thức, tuy nhiên tính đúng sai căn cứ theo bi ểu th ức cu ối cùng. * Ví dụ : tính pi với sai số eps = 1E - 4 , pi = 4 - 4/3 + 4/5 - 4/7 + ...eps #include < stdio.h > #include < conio.h> main () { float pi, dau, i , eps, saiso ;
  7. i=1.0; dau = -1; saiso = 1e -4 ; pi = 4.0; printf ( "\n đang xử lý vui lòng đợi !"); do { eps = 4.0 / ( 2.0 * i + 1.0 ); pi + = dau * eps ; dau = dau * - 1.0 ; i + = 1.0; } while ( eps > saiso ); printf ("\n số pi là : " % f ", pi ) ; getch (); } 3.2.6/ Câu lệnh Break : - Cú pháp : Dùng để thoát khỏi vòng lặp. Khi gặp câu lệnh này trong vòng l ặp, máy ra kh ỏi và chỉ đến câu lệnh sau các lệnh trên. Nếu nhiều vòng lặp ----> break sẽ thoát ra kh ỏi vòng l ặp gần nhất. 3.2.7/ Lệnh continue : - Cú pháp continue; : khi gặp lệnh này trong các vòng lặp, máy sẽ bỏ qua phần còn lại trong vòng lặp và tiếp tục thực hiện vòng lặp tiếp theo. - Ðối với lệnh For máy sẽ tính lại biểu thức 3 (bt3) và quay lại bước 2. - Ðối với lệnh while, do while máy sẽ tính lại giá trị của biểu thức 1 và quay lại bước 1. * Ví dụ : Nhập 1 chuỗi ký tự kể cả ký tự trống và bỏ qua các ký t ự không h ợp l ệ và k ết thúc khi ấn ESC hoặc số ký tự vượt quá kích thước mãng. char xau [MAXL], kytu ; int i = 0 ; while (1) /* luôn luôn đúng vòng lặp vĩnh cửu */ { kytu = getch ( ) ; if ( kytu = = 27 ) break ; if ( i >= MAXL ) break ; if ( kytu > 122 || kytu < 65 ) continue ; Xau [ i ++] = kytu ; }
  8. xau [ i ] = ' \ 0 ' ; 3.3/ Toán tử goto và nhãn ( label ); - Ví dụ : tiep tuc : st = a[ i ]; => tiep tuc là nhãn của lệnh st = a [ i ]; - Lệnh goto nhãn => nhảy đến câu lệnh đứng sau nhãn. - CHÚ Ý : PHẠM VI NHÃN TRONG CÙNG 1 HÀM. BÀI TẬP CHƯƠNG 3 1/ Kiểm tra tìm lỗi : while ( x
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
2=>2