intTypePromotion=1

Bài giảng Kỹ thuật lập trình: Chương 2 - ThS. Phạm Thanh An

Chia sẻ: Sdgsxf Sdgsxf | Ngày: | Loại File: PDF | Số trang:32

0
66
lượt xem
10
download

Bài giảng Kỹ thuật lập trình: Chương 2 - ThS. Phạm Thanh An

Mô tả tài liệu
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Nội dung cơ bản trong chương 2 Nền tảng ngôn ngữ C# thuộc bài giảng kỹ thuật lập trình nhằm trình bày về các kiểu dữ liệu cơ bản, biến và hằng, biểu thức, câu lệnh, toán tử, namespace và các chỉ dẫn biên dịch, xử lý ngoại lệ. Cùng học chương này để hiểu sâu hơn về nền tảng ngôn ngữ C.

Chủ đề:
Lưu

Nội dung Text: Bài giảng Kỹ thuật lập trình: Chương 2 - ThS. Phạm Thanh An

  1. 4/10/2012 Chương 2 Nền tảng ngôn ngữ C# Giảng viên: ThS. Phạm Thanh An Khoa công nghệ thông tin Đại học Ngân hàng Tp. Hồ Chí Minh Nội dung trình bày  Kiểu dữ liệu cơ bản.  Biến và hằng.  Biểu thức.  Câu lệnh.  Toán tử.  Namespace.  Các chỉ dẫn biên dịch.  Xử lý ngoại lệ. Mô tả kiểu dữ liệu trong C# System-defined types Object User-defined types String Array ValueType Exception Delegate Class1 Primitive types Multicast Enum Structure1 Class2 Delegate Boolean Single Byte Double Int16 Decimal Enum1 Delegate1 Class3 Int32 DateTime Int64 TimeSpan Char Guid 1
  2. 4/10/2012 Kiểu dữ liệu  C# là một ngữ mạnh về kiểu dữ liệu  Phải khai báo kiểu của mỗi biến, đối tượng khi sử dụng  integer, float, string, byte, buttons, v.v  C# chia thành hai tập hợp kiểu dữ liệu chính:  Kiểu xây dựng sẵn (built- in)  Kiểu được người dùng định nghĩa (user-defined) do người lập trình tạo ra (lớp, struct, v.v). Kiểu dữ liệu (tt)  C# phân tập hợp kiểu dữ liệu này thành hai loại:  Kiểu dữ liệu giá trị (value type): int, char , và structures  Kiểu dữ liệu tham chiếu (reference type): classes, interfaces, arrays và strings Kiểu dữ liệu xây dựng sẵn Kiểu C# Số Kiểu Mô tả Ví dụ Byte .NET object Kiểu dữ liệu cơ sở cho tất cả các kiểu object o = null; dữ liệu khác. string Lưu trữ giá trị chuỗi string s = “hello”; short 2 Int16 Số nguyên có dấu giá trị từ -32768 đến 32767. ushort 2 Uint16 Số nguyên không dấu 0 – 65.535 int 4 Int32 Số nguyên có dấu –2.147.483.647 và int val = 12; 2.147.483.647 uint 4 Uint32 Số nguyên không dấu 0 – 4.294.967.295 2
  3. 4/10/2012 Kiểu dữ liệu xây dựng sẵn (tt) Kiểu C# Số Kiểu Mô tả Ví dụ Byte .NET sbyte 1 Sbyte Số nguyên có dấu ( từ -128 đến 127) byte 1 Số nguyên không dấu từ 0 - 255 long 8 Int64 Kiểu số nguyên có dấu có giá trị trong khoảng : -9.223.370.036.854.775.808 đến 9.223.372.036.854.775.807 ulong 8 Uint64 Số nguyên không dấu từ 0 đến 18446744073709551615 Kiểu dữ liệu xây dựng sẵn (tt) Kiểu Số Kiểu Mô tả Ví dụ C# Byte .NET float 4 Single Kiểu dấu chấm động, giá trị xấp xỉ từ float val = 3,4E- 38 đến 3,4E+38, với 7 chữ số 1.23F; có nghĩa. Có thêm hậu tố F sau giá trị double 8 Double Kiểu dấu chấm động có độ chính xác gấp đôi, giá trị xấp xỉ 1.7E-308 - 1.7E+308, với 15,16 chữ số có nghĩa decimal 8 Decimal Chính xác đến 28 con số và giá trị thập phân, được dùng trong tính toán tài chính, đòi hỏi hầu tố “m” hay “M” theo sau giá trị Kiểu dữ liệu xây dựng sẵn (tt) Kiểu C# Số Kiểu Mô tả Ví dụ Byte .NET bool 1 Boolean Giá trị logic true/ false bool val1 = true; bool val2 = false; char 2 Char Ký tự Unicdoe char val = 'h'; 3
  4. 4/10/2012 Kiểu dữ liệu xây dựng sẵn (tt)  Ghi chú:  Kiểu giá trị logic chỉ có thể nhận được giá trị là true hay false.  Khác với C/C++, một giá trị nguyên không thể gán vào một biến kiểu logic trong C# và không có bất cứ chuyển đổi ngầm định nào Biên dịch: xuất hiện lỗi Error CS0029 : Cannot implicitly convert type 'int' to 'bool' Kiểu dữ liệu xây dựng sẵn (tt)  Kiểu dữ liệu ký tự thể hiện các ký tự Unicode  Bao gồm các ký tự đơn giản, ký tự theo mã Unicode và các ký tự thoát khác được bao trong những dấu nháy đơn  Ký tự thoát là những ký tự đặc biệt bao gồm hai ký tự liên tiếp trong đó ký tự dầu tiên là dấu chéo ‘\’. Ví dụ, \t là dấu tab Giá trị mặc định của kiểu dữ liệu Kiểu Giá trị mặc định Numeric (int,float,short) 0 hoặc 0.0 Bool false Char ‘\0’ Enum 0 String null Kiểu tham chiếu null 4
  5. 4/10/2012 Các ký tự đặc biệt Ký tự Ý nghĩa \' Dấu nháy đơn \" Dấu nháy kép \\ Dấu chéo (Backslash) \0 Ký tự Null \a Alert Các ký tự đặc biệt (tt) Ký tự Ý nghĩa \b Backspace \f Sang trang Form feed \n Dòng mời (Newline) \r Đầu dòng (Carriage return) \t Tab ngang (Horizontal tab) \v Tab dọc (Vertical tab) Chuyển đổi kiểu dữ liệu  Chuyển đổi kiểu dữ liệu này qua kiểu dữ liệ khác  Có 2 cách: chuyển đổi tường minh và ngầm định  Chuyển đổi ngầm định được thực hiện một cách tự động đảm bảo là không mất thông tin.  Từ kiểu nhỏ sang kiểu lớn short x = 10; int y = x; // chuyển đổi ngầm định  Trường hợp này không thực hiện short x; int y = 100; x = y; // Không biên dịch, lỗi !!! 5
  6. 4/10/2012 Chuyển đổi kiểu dữ liệu (tt) short x; int y = 500; x = (short) y; // Ép kiểu tường minh, trình biên dịch không báo lỗi  Để chuyển đổi một ký tự sang mã ASCII  (int)'A‘  Để chuyển một số sang ký tự ta thực hiện như sau:  (char)65 Chuyển đổi ngầm định From To sbyte short, int, long, float, double, decimal byte short, ushort, int, uint, long, ulong, float, double, decimal short int, long, float, double, decimal ushort int, uint, long, ulong, float, double, decimal int long, float, double, decimal uint long, ulong, float, double, decimal long, ulong float, double, decimal float double char ushort, int, uint, long, ulong, float, double, decimal Chuyển đổi tường mình  Do lập trình viên chỉ định  Xảy ra khi  Ép từ kiểu lớn qua kiểu nhỏ: có thể mất giá trị double x = 74.86; int i = (int))x; // i = 74  Ép từ lớp cơ sở qua lớp dẫn xuất string s = "Hello"; object o = s; string s2 = (string)o; 6
  7. 4/10/2012 Ví dụ sử dụng kiểu dữ liệu  Khai bao trước khi public class App sử dụng { public static void Main()  Gán giá trị trước { khi sử dụng Khai báo int width, height; width = 2; height = 4; Khai báo + khởi đầu int area = width * height; int x; Lỗi int y = x * 2; ... } } Ví dụ using System; class TestDefaultValues { static void Main() { int number, result; number=5; result=100 * number; Console.WriteLine (“Result is {0} when 100 is multiplied by number {1}”, result, number); } } Ví dụ: chuyển đổi kiểu dữ liệu int i = 5; double d = 3.2; string s = "496"; Chuyển đổi ngầm định d = i; Chuyển đổi tường minh i = (int) d; Chuyển đổi tường minh i = System.Convert.ToInt32(s); 7
  8. 4/10/2012 Input / Output trong C#  Sử dụng các phương thức của lớp Console trong không gian tên System Console.ReadLine() Console.WriteLine() Định danh  Là tên mà người lập trình chỉ định cho các kiểu dữ liệu, các phương thức, tên biến, hằng, lớp hay đối tượng....  Định danh không trùng với từ khóa của C#  Định danh phải bắt đầu với một ký tự chữ cái hay dấu gạch dưới,  các ký tự còn lại phải là ký tự chữ cái, chữ số, dấu gạch dưới.  C# phân biệt chữ hoa và chữ thường  Ví dụ:  Định danh đúng: result , _score, footballTeam, plan9  Định danh sai: result%, footballTeam$, 9plan Các từ khóa của C# Các từ khóa trong C# abstract const extern in operator sbyte throw virtual as continue false int out sealed true void base decimal finally interface override set try volatile bool default fixed internal params short typeof where break delegate float is partial sizeof uint while byte do for lock private stackalloc ulong yield case double foreach long protected static unchecked catch else get namespace public string unsafe char enum goto new readonly struct ushort checked event if null ref switch using class explicit implicit object return this value 8
  9. 4/10/2012 Biến  Biến là nơi lưu dữ liệu của chương trình  Dữ liệu của biến  Nằm trong bộ nhớ vật lý (physical RAM)  Có thể thay đổi giá trị  Phải khai báo trước khi dùng  Định danh: tên để đại diện cho biến  Kiểu dữ liệu: dạng lưu trữ dữ liệu của biến Biến (tt)  Bạn có thể khai báo kết hợp khởi đầu giá trị cho biến  Tên biến không được trùng với từ khóa của C#, nếu muốn sử dụng từ khóa làm tên biến phải thêm @ trước từ khóa  Khai báo biến: int tuoi;  tên biến ; tuoi = 21 ; Console.WriteLine(tuoi); Ví dụ 9
  10. 4/10/2012 Ví dụ: về khai báo biến using System; using System.Collections.Generic; using System.Text; namespace InitializingVariables { class Values { static void Main( ) { int myInt = 7; System.Console.WriteLine(“Khởi đâu, myInt: {0}", myInt); myInt = 5; System.Console.WriteLine(“Sau khi gán, myInt: {0}", myInt); } } } Output: Khởi đầu, myInt: 7 sau khi gán, myInt: 5 Ví dụ: sử dụng từ khóa làm tên biến using System; class VariableDemo { public static void Main() { string @string; @string = ”Su dung tu khoa lam ten bien”; Console.WriteLine (@string); } } Hằng  Hằng là một biến mà giá trị của nó không thể thay đổi  Phải gán giá trị ngay khi khai báo  Khai báo hằng = ; const int DoSoi = 100; // Độ C const int DoDong = 0; // Độ C System.Console.WriteLine( “Do dong cua nuoc {0}”, DoDong ); System.Console.WriteLine( “Do soi cua nuoc {0}”, DoSoi ); 10
  11. 4/10/2012 Câu lệnh (Statements )  Trong C# một chỉ dẫn lập trình đầy đủ được gọi là câu lệnh.  Chương trình bao gồm nhiều câu lệnh tuần tự với nhau.  Mỗi câu lệnh phải kết thúc với một dấu chấm phẩy “;” int x ; // 1 câu lệnh x = 23 ; // 1 câu lệnh khác int y = x; // một câu lệnh khác  Những câu lệnh này sẽ được xử lý theo thứ tự. Biểu thức  Câu lệnh thực hiện việc đánh giá một giá trị gọi là biểu thức.  Một phép gán một giá trị cho một biến cũng là một biểu thức:  var1 = 24;  a = b = c = d = 24; Khoảng trắng  Trong C#, những khoảng trắng, tab và các dòng được xem như là khoảng trắng (whitespace),  C# sẽ bỏ qua tất cả các khoảng trắng đó, do vậy chúng ta có thể viết như sau: var1 = 24; hay int x = 5; Giống như: var1 = 24 ; int x=5; Khác với: intx=5; 11
  12. 4/10/2012 Chú thích trong C#  C# sử dụng kiểu chú thích của C++  // chú thích 1 dòng  /* các dòng chú thích ……………………………………. ……………………………………..*/ Phân nhánh  Phân nhánh không có điều kiện  Gọi hàm  Sử dụng từ khóa phân nhánh : goto, break, continue, return, throw  Phân nhánh có điều kiện  if  switch Ví dụ: gọi hàm using System; using System.Collections.Generic; using System.Text; namespace Goiham { class Goimotham { static void Main( ) { Console.WriteLine(“Trong Main! Gọi hàm SomeMethod( )..."); SomeMethod( ); Console.WriteLine(“Quay về Main( )."); } static void SomeMethod( ) { Console.WriteLine(“Xin chao tu SomeMethod!"); } } } 12
  13. 4/10/2012 Câu lệnh if if (biểu thức điều kiện) { ; ; ............ ; } [else { ; ; ... } ]  Nhóm câu lệnh trong [….] có thể có hoặc không Ví dụ if string str = ”hello”; if (str) // Lỗi System.Console.WriteLine (“Giá trị là True”); if (str == “hello”) System.Console.WriteLine (“Giá trị là đúng”); Câu lệnh Switch switch(variable) { case value: ; break; case value: ; break; default: ; break; } 13
  14. 4/10/2012 Ví dụ : sử dụng Switch switch(weekday) { case 1: Console.WriteLine (“You have selected Monday”); break; case 2: Console.WriteLine (“You have selected Tuesday”); break; default: Console.WriteLine (“Sunday is the Default choice!”); break; } Sử dụng lệnh nhảy: goto  Để sử dụng goto using System;  Tạo một nhãn public class UsingGoto {  goto đến nhãn public static int Main() { int i = 0; lap: // nhãn Console.WriteLine(“i:{0}”,i); i++; if ( i < 10 ) goto lap; // nhãy về nhãn lap return 0; } } Cấu trúc lệnh lặp  while Loop  do Loop  for Loop  foreach Loop 14
  15. 4/10/2012 Cấu trúc while while { ; }  Thực hiện câu lệnh trong khi điều kiện vẫn còn đúng  Câu lệnh break sẽ thoát ngay khỏi vòng lặp  Câu lệnh continue sẽ bỏ qua lần lặp hiện tại và thực hiện lần lặp tiếp theo Ví dụ: while using System; public class UsingWhile { public static int Main() { int i = 0; while ( i < 10 ) { Console.WriteLine(“ i: {0} ”,i); i++; } return 0; } } Cấu trúc do … while do using System; public class UsingDoWhile ; { public static int Main( ) while ( điều kiện ) { int i = 11;  Thực hiện câu lệnh ít nhất 1 do lần trong khi điều kiện vẫn { còn đúng Console.WriteLine(“i: {0}”,i); i++; } while ( i < 10 ) return 0; } } 15
  16. 4/10/2012 Cấu trúc lặp for …. for ([ phần khởi tạo] ; [biểu thức điều kiện]; [bước lặp]) Ví dụ: sử dụng for using System; public class UsingFor { public static int Main() { for (int i = 0; i < 30; i++) { if (i %10 ==0) // phân dư { Console.WriteLine(“{0} ”,i); } else { Console.Write(“{0} ”,i); } } return 0; } } Phạm vi của biến khai báo trong vòng lặp for using System; public class UsingFor { public static int Main() { for (int i = 0; i < 30; i++) { if (i %10 ==0) // phân dư { Console.WriteLine(“{0} ”,i); } else { Console.Write(“{0} ”,i); } } Console.WriteLine(“ Ket qua cuoi cung cua i:{0}”,i);// Sai return 0; } } 16
  17. 4/10/2012 Cấu trúc foreach  Cú pháp: foreach ( in < tên tập hợp>) ; Ví dụ : foreach using System; public class UsingForeach { public static int Main() { int[] intArray = {1,2,3,4,5,6,7,8,9,10}; foreach( int item in intArray) { Console.Write(“{0} ”, item); } return 0; } Toán tử  Toán tử gán (=)  Toán tử toán học  Toán tử số học đơn giản (+, -, *, /):  Lưu ý  khi chia hai số nguyên : 17/4 = 4  Chia cho số thực có kiểu như float, double, hay decimal thì kết quả chia được trả về là một số thực.  Toán tử chia dư (%) : 17%4 = 1 17
  18. 4/10/2012 Toán tử  Toán tử tăng giảm Luong = Luong * 2; Luong = Luong – 100.000; C# cung cấp các phép toán tự gán Toán tử Toán tử  Toán tử : ++ , --  Toán tử tăng giảm tiền tố và tăng giảm hậu tố, var2 =10  var1 = ++var2; // var1 = 11, var2 = 11  var1 = var2++; //var1 = 10 , var2 = 11 18
  19. 4/10/2012 Toán tử quan hệ Toán tử logic Độ ưu tiên toán tử Một ngôi 19
  20. 4/10/2012 Độ ưu tiên toán tử Toán tử ba ngôi  ? :  Ví dụ maxValue = value1 > value2 ? value1 : value2; Namespace  Sử dụng namespace  Nhằm tránh sự xung đột về tên, giúp cho việc sử dụng các thư viện khác nhau từ các nhà cung cấp.  Giảm bớt độ phức tạp khi sử dụng lại mã cho ứng dụng khác  C# đưa ra từ khóa using đề khai báo sử dụng namespace trong chương trình: 20
ADSENSE
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

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