Tải bản đầy đủ (.ppt) (46 trang)

Tài liệu Lap trinh co so_ Bai 3 doc

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.63 MB, 46 trang )

02/21/14

BUỔI 3 :
CÁC CẤU TRÚC
ĐIỀU KHIỂN CỦA C#

02/21/14
Các cấu trúc
điều khiển
trong C#

02/21/14
Cấu trúc chọn lựa

Cú pháp
Dạng 1 :
if (điều kiện) <lệnh> ;
Dạng 2 :
if (điều kiện)
< lệnh 1> ;
else
< lệnh 2 > ;

02/21/14
Cấu trúc chọn lựa (tt)

Lưu ý
-Từ khóa if và else phải viết ở dạng chữ
thường
(thường hay mắc sai sót khi viết IF, iF, If,
Else, ELSE, )


- Dấu chấm phẩy phải có để kết thúc 1
phát biểu lệnh
Thường hay mắc lỗi!!!

02/21/14
Cấu trúc chọn lựa (tt)
using System;
class Test
{
static public void Main(String[] s)
{
int a=0, b=1,c=2;
If (a==b) // báo lỗi
Console.WriteLine(a+b+c);
}
}

02/21/14
Cấu trúc chọn lựa (tt)
using System;
class Test
{
static public void Main(String[] s)
{
int a=0, b=1,c=2;
if (a==b)
Console.WriteLine(a+b+c) /////// ; expected
}
}


02/21/14
Cấu trúc chọn lựa (tt)

Lưu ý:
Toàn bộ điều kiện phải đặt trong cặp dấu
ngoặc tròn
Ví dụ
if (a>=b) Console.WriteLine(a);
if ( ( a+ b < c ) && ( a>=10 ) ) ……
Thường hay mắc lỗi!!!

02/21/14
Cấu trúc chọn lựa (tt)
using System;
class Test
{
static public void Main(String[] s)
{ int a=0, b=1;
if a>b a=a+b; // ‘(‘ expected
// ) expected
}
}

02/21/14
Cấu trúc chọn lựa (tt)
using System;
class Test {
static public void Main(String[] s)
{
int a=0, b=1,c=2;

if (a>b) && (a>c) Console.WriteLine(a+b+c);
// báo lỗi vì thiếu cặp dấu ngoặc
// invalid expression term ‘&&’
//; expected
}
}

02/21/14
Cấu trúc chọn lựa (tt)

Lưu ý
Trong C# (và cả C, C++, Java ) thì phép
toán so sánh bằng nhau là ==
Ví dụ
if ( a = b ) a += 2* b ; // báo lỗi
Trong C,C++ : hiệu ứng phụ
Trong Java, C# : thông báo lỗi
Thường hay mắc lỗi!!!

02/21/14
Cấu trúc chọn lựa (tt)
using System;
class Test {
static public void Main(String[] s)
{
int a=0, b=1,c=2;
if (a=b) // Cannot implicitly convert type ‘int’ to ‘bool’
Console.WriteLine(a+b+c);
}
}


02/21/14
Cấu trúc chọn lựa (tt)

Lưu ý
Tương tự như Pascal, C/C++,Java : nếu
có hơn 1 lệnh cần thực hiện → sử
dụng cặp dấu { và }
Ví dụ
if (a > b )
{
c = a+ (b++);
Console.WriteLine( c ) ;
}

02/21/14
Cấu trúc chọn lựa (tt)
Ví dụ
if (a ==0 )
{
if (b==0) Console.WriteLine(“VSN”);
else Console.WriteLine(“VN”);
}
else
{
c=-b/a;
Console.WriteLine( c ) ;
}

02/21/14

Cấu trúc chọn lựa (tt)
if (a ==0)
if (b == 0)
if (c ==0)
Console.WriteLine(“VSN”);
else Console.WriteLine(“VN”);
else Console.WriteLine(“ x = {0} “, -c/b);
else
{
delta = b*b - 4*a*c;
if (delta<0) Console.WriteLine(“VN”);
if (delta == 0) Console.WriteLine(“x1=x2=” + (-b/2/a) ) ;
if (delta > 0 ) {
x1 = (-b + Math.Sqrt(delta) ) / 2 / a ;
x2 = (-b - Math.Sqrt(delta) ) / 2 / a ;
Console.WriteLine(“ x1 = {0 } , x2 = {1} “, x1,x2);
}
}

02/21/14
Cấu trúc chọn lựa (tt)

Ví dụ các cấu trúc if else lồng
nhau

Một số cách sử dụng phương thức
Console.WriteLine
Phối hợp trong 1 biểu thức dạng chuỗi
Sử dụng tham số


Sử dụng các hàm toán học với lớp
Math (tra cứu trong System)

02/21/14
Cấu trúc chọn lựa (tt)

Cú pháp
switch (biểu thức)
{
case <giá trị 1> : lệnh1 ;
break;
case <giá trị 2> : lệnh2 ;
break;

default : lệnh ;
break;
}

02/21/14
Cấu trúc chọn lựa (tt)

Các từ khóa switch, case, default,
break phải viết ở dạng chữ thường

Ý nghĩa của default cũng tương tự
như ý nghĩa else trong cấu trúc
Case của ngôn ngữ Pascal

Với các giá trị có câu lệnh cần thực
hiện → kết thúc bằng phát biểu

break

Không cần cặp dấu { và }

02/21/14
Cấu trúc chọn lựa (tt)
switch (a%10)
{
case 1 : b = a>10 ? a+1 : a-1;
break;
case 2 :
case 3 :
case 4 : b= a + b;
c = a - b ;
if ((a + b ) > 20 ) {
c++;
a = a + 2;
}
break;
default : Console.WriteLine(a+b-c);
break;
}
- Liệt kê giá trị
- Không cần dấu { và }
- Cơ chế fall through

02/21/14
Cấu trúc chọn lựa (tt)

Lưu ý

Trong Pascal
<giá trị 1>, <giá trị 2> ,…, <giá trị N> :
Trong C#
case <giá trị 1> :
case <giá trị 2> :
………………
case <giá trị N> :

02/21/14
Cấu trúc chọn lựa (tt)
case 4 : b= a + b;
c = a - b ;
if ((a + b ) > 20 ) {
c++;
a = a + 2;
}
// break;
default : Console.WriteLine(a+b-c);
break;
Thường mắc sai sót nhưng sẽ có thông báo lỗi!!!!

02/21/14
Cấu trúc chọn lựa (tt)

Lưu ý : Cho phép sử dụng kiểu chuỗi (String) trong
switch (ngoài các kiểu liệt kê, nguyên, ký tự, bool( Điểm
mạnh!!!)
using System;
class Test
{

public static void Main()
{
String s = Console.ReadLine();
switch (s)
{
case "Thu Hai" : Console.WriteLine("Monday"); break;
case "Thu Ba" : Console.WriteLine("Tuesday"); break;
}
}
}

02/21/14
Cấu trúc lặp

Nhất quán : Đúng thì lặp, Sai thì thoát

Dạng for
for (<bthức khởi động>;<bthức điểu kiện >;<bthức
lặp> ) <lệnh>;
Mô tả
B1 : Thi hành biểu thức khởi động
B2 : Nếu biểu thức điều kiện Sai thì sang B6
B3 : Thi hành lệnh
B4 : Thi hành biểu thức lặp
B5 : Quay về B2
B6 : Thoát vòng lặp

02/21/14
Cấu trúc lặp
Thể hiện sơ đồ :

2
1
for (<btkđ>;<btđk >;<btlặp> )

<lệnh>;


3 (Đ)
4
5
6 (S)

02/21/14
Cấu trúc lặp

Lưu ý:
for : chữ thường
Các thành phần cách nhau bằng ;
Có thể bỏ bớt bất kỳ thành phần
nào

Ví dụ : Tính tổng N số nguyên
đầu tiên
Chương trình ViDu1_11.cs

02/21/14
Cấu trúc lặp
int S= 0;
for (int i=1; i<= N; i ++)
S =

S+ i ;
+Không có biểu thức khởi động
int S= 0 , i=1 ;
for ( ; i<= N; i ++)
S = S+
i ;

×