Tải bản đầy đủ (.pptx) (545 trang)

Bài Giảng Lập Trình Trên Desktop ( Combo Full Slide 7 Chương )

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 (5.09 MB, 545 trang )

<span class="text_page_counter">Trang 1</span><div class="page_container" data-page="1">

<b>Lập trình trên Desktop</b>

</div><span class="text_page_counter">Trang 3</span><div class="page_container" data-page="3">

<b>1. Tổng quan về .NET Framework</b>

o<sub>Giới thiệu .NET Platform</sub> o<sub>Giới thiệu .NET Framework</sub>

o<sub>Các thành phần của .NET Framework</sub> o<sub>Các loại ngơn ngữ lập trình trên .NET</sub> o<sub>Các loại ứng dụng có thể viết với .NET</sub> o<sub>Các bước phát triển ứng dụng</sub>

</div><span class="text_page_counter">Trang 4</span><div class="page_container" data-page="4">

<b>1.1. Giới thiệu .NET Platform</b>

o<sub>.NET Platform</sub>

<small>ứng dụng Internet. </small>

o<sub>Mục đích của .NET Platform</sub>

<small>◦</small> <sub>Đơn giản hóa việc phát triển các ứng dụng trong môi trường phân bố của </sub>

<small>Internet</small>

</div><span class="text_page_counter">Trang 5</span><div class="page_container" data-page="5">

<b>1.1. Giới thiệu .NET Platform</b>

o<sub>Các thành phần của .NET Platform</sub>

<small>◦</small> <sub>.NET Enterprise Servers</sub> <small>◦</small> <sub>Visual Studio .NET</sub>

</div><span class="text_page_counter">Trang 6</span><div class="page_container" data-page="6">

<b>1.1. Giới thiệu .NET Platform</b>

o<sub>Microsoft .NET Framework là môi trường chung cho việc xây dựng, </sub>

triển khai và chạy các ứng dụng

<small>◦</small> <sub>Nhiều tiện ích khác giúp cho việc phát triển các ứng dụng nhanh, hiệu quả </sub>

<small>hơn.</small>

</div><span class="text_page_counter">Trang 7</span><div class="page_container" data-page="7">

<b>1.1. Giới thiệu .NET Platform</b>

<small>tin qua Internet. Dùng các .NET My Service các ứng dụng có thể truyền thơng trực tiếp bằng giao thức SOAP và XML</small>

</div><span class="text_page_counter">Trang 8</span><div class="page_container" data-page="8">

<b>1.1. Giới thiệu .NET Platform</b>

o<sub>.NET Enterprise Servers, một nhóm các sản phẩm của Microsoft. </sub>

Mỗi sản phẩm phụ trách một thành phần then chốt cho kiến trúc ứng dụng đang phát triển

o<sub>Một số sản phẩm:</sub>

<small>◦</small> <sub>Microsoft Biztalk Server</sub>

<small>◦</small> <sub>Microsoft Host integration Server</sub> <small>◦</small> <sub>…</sub>

</div><span class="text_page_counter">Trang 9</span><div class="page_container" data-page="9">

<b>1.1. Giới thiệu .NET Platform</b>

o<sub>Visual Studio .NET, là môi trường phát triển để xây dựng các ứng </sub>

dụng trên .NET Framework

</div><span class="text_page_counter">Trang 10</span><div class="page_container" data-page="10">

<b>1.2. Giới thiệu .NET Framework</b>

o<sub>Các mục đích thiết kế .NET Framework</sub> <small>◦</small> <sub>Mơ hình lập trình thống nhất</sub>

<small>◦</small> <sub>Độc lập ngôn ngữ (hỗ trợ nhiều ngôn ngữ lập trình)</sub>

</div><span class="text_page_counter">Trang 11</span><div class="page_container" data-page="11">

<b>1.2. Giới thiệu .NET Framework</b>

o<sub>Các phiên bản .NET Framework</sub>

<small>2003; .NET Framework 2.0 – Visual Studio 2005 ; .NET Framework 3.0 – Visual Studio 2005; .NET Framework 3.5 – Visual Studio 2008</small>

<small>◦</small> <sub>…</sub>

o<sub>.NET Framework có các thành phần chính: </sub>

<small>◦</small> <sub>Framework class Library (FCL)</sub>

</div><span class="text_page_counter">Trang 12</span><div class="page_container" data-page="12">

<b>1.2. Giới thiệu .NET Framework</b>

</div><span class="text_page_counter">Trang 13</span><div class="page_container" data-page="13">

<b>1.3. Các thành phần của .NET Framework</b>

o<b><sub>CLR làm nhiệm vụ quản lý sự thực thi mã lệnh và tất cả các tác vụ </sub></b>

<b>liên quan đến nó: biên dịch, quản lý bộ nhớ, bảo mật, quản lý tuyến </b>

đoạn, và thực thi an toàn kiểu.

o<b><sub>FCL là thư viện kiểu dữ liệu có thể tái sử dụng (gồm các class, </sub></b>

structure, …) dành cho các ứng dụng thực thi trong .NET. Tất cả các ngôn ngữ hỗ trợ .NET Framework đều sử dụng thư viện lớp dùng chung này.

</div><span class="text_page_counter">Trang 14</span><div class="page_container" data-page="14">

<b>1.3. Các thành phần của .NET Framework</b>

<small>o</small><sub>Common Language Runtime (CLR)</sub>

<small>◦</small> <sub>CLR là môi trường thực thi cho ngôn ngữ chung và các dịch vụ trong quá trình </sub>

</div><span class="text_page_counter">Trang 15</span><div class="page_container" data-page="15">

<b>1.3. Các thành phần của .NET Framework</b>

o<sub>Biên dịch và thực thi</sub>

</div><span class="text_page_counter">Trang 16</span><div class="page_container" data-page="16">

<b>1.3. Các thành phần của .NET Framework</b>

o<sub>Biên dịch và thực thi:</sub>

<b><small>là assembly. Khối này sẽ chứa các mã lệnh ngôn ngữ trung gian và các </small></b>

<small>metadata mô tả thông tin cần thiết cho sự hoạt động của khối.</small>

<small>◦</small> <sub>Mỗi khi có yêu cầu thực thi assembly nói trên, CLR sẽ chuyển đối mã lệnh </sub>

<small>ngôn ngữ trung gian trong assembly thành mã lệnh tương thích với CPU cụ thể trước khi có thể thực thi.</small>

</div><span class="text_page_counter">Trang 17</span><div class="page_container" data-page="17">

<b>1.3. Các thành phần của .NET Framework</b>

o<sub>Các loại code trong .NET</sub> <small>◦</small> <sub>Source code</sub>

<small>◦</small> <sub>MSIL là tập các lệnh, mã lệnh cấp thấp do Microsoft sáng tạo ra.</sub>

<small>◦</small> <sub>Các source code được viết bằng nhiều loại ngôn ngữ khác nhau đều phải dịch sang MSIL</sub>

<small>◦</small> <sub>OptIL: là tập con của MSIL có thể được sinh bằng trình biên dịch tối ưu. OptIL </sub>

<small>giúp cho việc sinh nhanh native code </small>

</div><span class="text_page_counter">Trang 18</span><div class="page_container" data-page="18">

<b>1.3. Các thành phần của .NET Framework</b>

</div><span class="text_page_counter">Trang 19</span><div class="page_container" data-page="19">

<small>◦</small> <sub>Một assembly được tạo ra khi trình biên dịch tương thích với .NET chuyển </sub>

<b><small>một file chứa mã nguồn thành một file Library assemblies (DLL) hoặc Process </small></b>

<b><small>assemblies (EXE)</small></b>

<small>trình biên dịch cụ thể. </small>

<small>lệnh hoặc tài nguyên (như ảnh hoặc dữ liệu XML). </small>

</div><span class="text_page_counter">Trang 20</span><div class="page_container" data-page="20">

<b>1.3. Các thành phần của .NET Framework</b>

o<sub>Các thành phần trong assembly</sub>

</div><span class="text_page_counter">Trang 21</span><div class="page_container" data-page="21">

<b>1.3. Các thành phần của .NET Framework</b>

o<sub>Một assemply chứa nhiều file</sub>

</div><span class="text_page_counter">Trang 22</span><div class="page_container" data-page="22">

<b>1.3. Các thành phần của .NET Framework</b>

o<sub>Manifest: </sub>

<small>◦</small> <sub>Là một tập hợp các bảng chứa các metadata trong đó liệt kê tên của tất cả các </sub>

<small>file trong assembly, tham chiếu đến các assembly bên ngoài, và các thông tin như tên, phiên bản để định danh assembly đó. </small>

<small>◦</small> <sub>Khi một assembly được nạp, nhiệm vụ đầu tiên của CLR là mở file chứa </sub>

<small>manifest để có thể định danh các thành viên có trong assembly. </small>

</div><span class="text_page_counter">Trang 23</span><div class="page_container" data-page="23">

<b>1.3. Các thành phần của .NET Framework</b>

<small>◦</small> <sub>Metadata là thông tin nhị phân dùng để mơ tả IL code. </sub>

<small>đến nó để khám phá các thơng tin về code của chương trình như: các class, các thành viên, thừa kế, </small>

<small>◦</small> <sub>…</sub>

</div><span class="text_page_counter">Trang 24</span><div class="page_container" data-page="24">

<b>1.3. Các thành phần của .NET Framework</b>

</div><span class="text_page_counter">Trang 25</span><div class="page_container" data-page="25">

o<sub>JIT Compiler</sub>

<small>◦</small> <sub>Trình biên dịch JIT là trình biên dịch lúc thực thi với nhiệm vụ chuyển đổi MSIL </sub>

<small>(assemblies) sang native code. </small>

<small>◦</small> <sub>Đặc điểm cơ bản của JIT</sub>

<small>◦</small> <sub>JIP độc lập ngơn ngữ lập trình; JIT phụ thuộc kiến trúc CPU; JIP biên dịch cho mỗi phương </sub>

<small>thức lần đầu tiên chạy; Native code được lưu lại để dùng lại sau này</small>

<small>◦</small> <sub>CLR cung cấp 3 trình biên dịch JIT để chuyển MSIL sang native code: </sub>

<small>◦</small> <sub>EconoJIT; JIT; optJIT</sub>

</div><span class="text_page_counter">Trang 26</span><div class="page_container" data-page="26">

<b>1.3. Các thành phần của .NET Framework</b>

o<sub>Framework Class Library – FCL: Một tập thư viện lớp trong .NET</sub>

o<sub>.Net Framework thay thế phần lớn (mặc dù không phải tất cả) các </sub>

tập Windows API bằng thư viện lớp hướng đối tượng và được quản lý tốt

</div><span class="text_page_counter">Trang 27</span><div class="page_container" data-page="27">

<b>1.3. Các thành phần của .NET Framework</b>

</div><span class="text_page_counter">Trang 28</span><div class="page_container" data-page="28">

o<sub>Các lớp trong FCL có thể được chia thành các loại sau:</sub>

<small>console, network và file I/O; và tương tác dễ dàng với các runtime.</small>

<small>◦</small> <sub>Hỗ trợ tương tác cơ sở dữ liệu; dùng và sinh dữ liệu XML; và cấu trúc dữ liệu.</sub> <small>◦</small> <sub>Hỗ trợ xây dựng các ứng dụng web (thin client).</sub>

<small>◦</small> <sub>Hỗ trợ xây dựng các ứng dụng desktop (thick client) </sub>

</div><span class="text_page_counter">Trang 29</span><div class="page_container" data-page="29">

<b>1.3. Các thành phần của .NET Framework</b>

</div><span class="text_page_counter">Trang 33</span><div class="page_container" data-page="33">

<b>1.4. Các loại ngôn ngữ trên .NET</b>

o<sub>C# (C-Sharp) – được thiết kế cho .NET: </sub>

<sub>Ngôn ngữ hướng thành </sub>

<small>phần mới (component-oriented)</small>

o<sub>C++ .NET: </sub>

<small>Các mở rộng code được quản lý cho C++ </small>

o<sub>Visual Basic .NET: </sub>

<sub>Version mới của Visual Basic, có nhiều đổi mới</sub>

o<sub>JScript .NET: </sub>

<small>Version mới của Jscript, tăng cường sự thực thi</small>

o<sub>J# .NET: </sub>

<small>Ngôn ngữ Java cho .NET</small>

o<sub>Ngôn ngữ hãng thứ ba (Third-party): </sub>

<sub>APL, COBOL, Pascal, Eiffel, </sub>

<small>Haskell, ML, Oberon, Perl, Python, Scheme, Smalltalk</small>

</div><span class="text_page_counter">Trang 34</span><div class="page_container" data-page="34">

<b>1.5. Các loại ứng dụng trên .NET</b>

<small>◦</small> <sub>Windows control library</sub> <small>◦</small> <sub>Web control library</sub>

</div><span class="text_page_counter">Trang 35</span><div class="page_container" data-page="35">

o<sub>Khi chương trình được chạy trong CLR, JIT sẽ dịch các mã trung gian </sub>

sang native code và thực thi

o<sub>Native code được thực thi trong ngữ cảnh của CLR</sub>

</div><span class="text_page_counter">Trang 37</span><div class="page_container" data-page="37">

<b>2.1. Chương trình đầu tiên</b>

o<sub>Tạo chương trình ConsoleApp</sub> o<sub>Solution Explorer</sub>

o<sub>Cửa sổ Properties</sub> o<sub>Cửa sổ Error List</sub>

</div><span class="text_page_counter">Trang 38</span><div class="page_container" data-page="38">

<b>2.2. Biến</b>

<small>o</small><sub>Cú pháp: </sub><i><b><sub><type> <name>;</sub></b></i> <small>o</small><sub>Trong đó:</sub>

<small>◦</small> <i><b><small><type>: </small></b></i><small>kiểu dữ liệu</small>

<small>◦</small> <i><b><small><name>:</small></b></i> <small>tên biến</small>

</div><span class="text_page_counter">Trang 39</span><div class="page_container" data-page="39">

<b>2.2. Biến</b>

o<sub>Đặt tên biến: </sub>

<small>◦</small> <sub>Có thể bắt đầu bằng ký tự, dấu gạch dưới.</sub>

<small>◦</small> <sub>Khơng có ký tự trống, dấu gạch giữa, khơng trùng từ khóa</sub> o<sub>Ví dụ, đặt tên biến đúng:</sub>

myName, x1, _test

o<sub>Ví dụ, đặt tên biến sai:</sub> 1x, namespace, x-1, x 1

</div><span class="text_page_counter">Trang 40</span><div class="page_container" data-page="40">

<b>2.3. Giá trị Literal</b>

o<b><sub>Hằng (Constant) liên quan đến các giá trị cố định không thay đổi khi </sub></b>

thực thi. Các giá trị cố định được gọi là Literal

o<sub>Constant là một kiểu dữ liệu thay thế cho Literal, cịn Literral là thể </sub>

hiện chính nó.

o<sub>Ví dụ, </sub><i><b><small>const PI = 3.14;</small></b></i>

o<sub>Hằng ở đây là PI, còn Literal là 3.14</sub>

</div><span class="text_page_counter">Trang 41</span><div class="page_container" data-page="41">

<b>2.3. Giá trị Literal</b>

o<sub>Trong C#, được phân ra thành giá trị hằng số nguyên, hằng số thực, </sub>

hằng ký tự, hằng chuỗi ký tự và Boolean literal (hằng lơgic)

o<sub>Ví dụ, </sub>

<small>const x=5; </small>

<small>const st=“Khoa CNTT”;</small>

</div><span class="text_page_counter">Trang 42</span><div class="page_container" data-page="42">

<b>2.3. Giá trị Literal</b>

o<sub>Một số ký tự khi có ký tự \ đứng trước thì có ý nghĩa đặc biệt, gọi là </sub>

escape sequence (dãy thoát)

</div><span class="text_page_counter">Trang 44</span><div class="page_container" data-page="44">

<b>2.4. Kiểu dữ liệu</b>

oKiểu dữ liệu cơ bản của giá trị được kế thừa từ

<b>lớp System.ValueType, khi khai báo một biến kiểu int, hệ thống cấp phát bộ nhớ để lưu giá trị đó</b>

oĐể lấy kích thước của một kiểu hoặc biến, sử dụng phương thức sizeof

<small>◦Ví dụ, lấy kích thước của kiểu int viết: </small><b><small>sizeof(int)</small></b>

</div><span class="text_page_counter">Trang 45</span><div class="page_container" data-page="45">

<b>2.4. Kiểu dữ liệu</b>

o<sub>Kiểu số nguyên</sub>

<b><small>Tên </small></b>

<small>sbyte System.SByte Integer between -128 and 127byte System.Byte Integer between 0 and 255</small>

<small>short System.Int16 Integer between -32768 and 32767ushort System.UInt16 Integer between 0 and 65535</small>

</div><span class="text_page_counter">Trang 46</span><div class="page_container" data-page="46">

<b>2.4. Kiểu dữ liệu</b>

o<sub>Kiểu số nguyên</sub>

<b><small>Tên </small></b>

<small>int System.Int32 </small> <sup>Integer between -2147483648 and </sup><sub>2147483647</sub> <small>uint System.UInt32 Integer between 0 and 4294967295long System.Int64 </small> <sup>Integer between -</sup><small>9223372036854775808 and</small>

<small>9223372036854775807ulong System.UInt64 </small> <sup>Integer between 0 and </sup><sub>18446744073709551615</sub>

</div><span class="text_page_counter">Trang 48</span><div class="page_container" data-page="48">

<b>2.4. Kiểu dữ liệu</b>

o<sub>Kiểu văn bản và lôgic</sub>

<small>char System.Char Một ký tự </small>

<small>bool System.Boolean true hoặc falsestring System.String Chuỗi các ký tự</small>

</div><span class="text_page_counter">Trang 49</span><div class="page_container" data-page="49">

<b>2.4. Kiểu dữ liệu</b>

o<sub>Ép kiểu, có 2 loại:</sub>

<small>dữ liệu lớn hơn  không làm mất thông tin</small>

<small>byte  short int long float double</small>

<small>dữ liệu nhỏ hơn  có thể làm mất thơng tin</small>

<small>double float long int short byte</small>

</div><span class="text_page_counter">Trang 51</span><div class="page_container" data-page="51">

<b>2.4. Kiểu dữ liệu</b>

o<sub>Một số phương thức chuyển đổi kiểu có sẵn:</sub>

<small>ToBooleanChuyển đổi một kiểu thành một giá trị Boolean, nếu có thểToByteChuyển đổi một kiểu thành một byte</small>

<small>ToCharChuyển đổi một kiểu thành một Unicode character, nếu có thểToDateTimeChuyển đổi một kiểu (kiểu integer hoặc string) thành các cấu </small>

</div><span class="text_page_counter">Trang 52</span><div class="page_container" data-page="52">

<b>2.4. Kiểu dữ liệu</b>

<small>ToInt16Chuyển đổi một kiểu thành một 16-bit integerToInt32Chuyển đổi một kiểu thành một 32-bit integerToInt64Chuyển đổi một kiểu thành một 64-bit integerToSbyteChuyển đổi một kiểu thành một kiểu signed byte</small>

<small>ToSingleChuyển đổi một kiểu thành một số small floating pointToStringChuyển đổi một kiểu thành một string</small>

<small>ToByteChuyển đổi một kiểu thành một kiểu đã xác địnhToUInt16Chuyển đổi một kiểu thành một kiểu unsigned intToUInt32Chuyển đổi một kiểu thành một kiểu unsigned longToUInt64Chuyển đổi một kiểu thành một unsigned big integer</small>

</div><span class="text_page_counter">Trang 54</span><div class="page_container" data-page="54">

<small>--Giảm giá trị toán hạng một đơn </small>

</div><span class="text_page_counter">Trang 55</span><div class="page_container" data-page="55">

<small>!=Kiểm tra giá trị khác nhau </small>

<small>>Kiểm tra giá trị lớn hơn(A > B)  false<Kiểm tra giá trị nhỏ hơn(A < B)  true>= Kiểm tra giá trị lớn hơn hoặc </small>

<small><= Kiểm tra giá trị nhỏ hơn hoặc </small>

</div><span class="text_page_counter">Trang 56</span><div class="page_container" data-page="56">

<b>2.5. Toán tử</b>

o<sub>Toán tử logic. Ví dụ, biến A=1, B=0</sub>

<b><small>Tốn </small></b>

<small>&& Tốn tử logic AND (và). Nếu cả hai tốn tử đều có </small>

<small>giá trị khác 0 thì điều kiện trở lên true.</small> <sup>(A && B)  </sup><small>false||Được gọi là toán tử logic OR (hoặc). Nếu một trong </small>

<small>hai tốn tử khác 0, thì điều kiện là true.</small> <sup>(A || B)  true</sup> <small>!Được gọi là toán tử NOT (phủ định). Sử dụng để đảo </small>

<small>ngược lại trạng thái logic của tốn hạng đó. Nếu điều kiện tốn hạng là true thì phủ định nó sẽ là false.</small>

<small>!(A && B)  true</small>

</div><span class="text_page_counter">Trang 57</span><div class="page_container" data-page="57">

<b>2.5. Toán tử</b>

o<sub>Toán tử gán</sub>

<b><small>Toán </small></b>

<small>+=Cộng toán hạng phải với toán hạng tráiC += A  C = C </small>

</div><span class="text_page_counter">Trang 58</span><div class="page_container" data-page="58">

<b>2.5. Toán tử</b>

o<sub>Toán tử điều kiện (</sub><small>ternary) gồm 3 toán hạng, thường được sử dụng để thay thế câu lệnh if...else đơn giản</small>

<b><small>variable = (condition) ? expressionTrue :  </small></b>

</div><span class="text_page_counter">Trang 59</span><div class="page_container" data-page="59">

<b>2.6. Không gian tên</b>

<small>o</small><b><small>Một namespace được thiết kế để xác định một tập hợp </small></b>

<small>các tên phân biệt</small>

<small>oTên lớp được khai báo trong một namespace không xung đột với cùng tên lớp được khai báo trong namespace khác</small>

<small>oĐịnh nghĩa, bằng từ khóa namespace sau đó tên </small>

</div><span class="text_page_counter">Trang 60</span><div class="page_container" data-page="60">

<b>2.6. Không gian tên</b>

oĐể gọi hàm hoặc biến của namespace, cần thêm nó vào sau tên của namespace:

o<b>Ví dụ, namespace1 minh họa về khơng gian tên</b>

o<b>Từ khóa using được sử dụng khai báo không gian tên. Chẳng hạn, khai báo System trong chương trình và lớp Console được định nghĩa trong nó</b>

</div><span class="text_page_counter">Trang 61</span><div class="page_container" data-page="61">

<b>2.6. Khơng gian tên</b>

oVí dụ, khai báo sử dụng khơng gian tên

<i><b><small>using System;</small></b></i>

<i><b><small>using first_namespace;using second_namespace;</small></b></i>

oCó thể lồng khơng gian tên và truy cập các thành viên của các namespace được lồng vào nhau này bởi sử dụng toán tử dot (.) trong C#, như sau:

o<b>Ví dụ, namespace2 minh họa về không gian tên</b>

</div><span class="text_page_counter">Trang 62</span><div class="page_container" data-page="62">

<b>2.7. Cấu trúc điều khiển</b>

oCâu lệnh if, khối lệnh được thực thi, nếu điều kiện là

</div><span class="text_page_counter">Trang 63</span><div class="page_container" data-page="63">

<b>2.7. Cấu trúc điều khiển</b>

oCâu lệnh if…else…, khối lệnh 1 được thực thi, nếu điều kiện là True, ngược lại khối lệnh 2 được thực thi

</div><span class="text_page_counter">Trang 64</span><div class="page_container" data-page="64">

<b>2.7. Cấu trúc điều khiển</b>

<small>oCâu lệnh if…else if…else…, khối lệnh 1 thực thi, nếu điều kiện 1 True, khối lệnh 2 thực thi nếu điều kiện 2 True, khối lệnh 3 thực thi nếu điều kiện 1 và điều kiện 2 là False</small>

</div><span class="text_page_counter">Trang 65</span><div class="page_container" data-page="65">

<b>2.7. Cấu trúc điều khiển</b>

<small>- Giá trị expression của lệnh switch được so sánh với mỗi giá trị của case (x)</small>

<small>- Nếu phù hợp thì khối lệnh tương ứng được thực thi</small>

<b><small>- Khi gặp break, thoát khỏi switch và lệnh sau </small></b>

<small>switch được thực thi</small>

<small>- Nếu khơng có case phù hợp với expression thì </small>

<b><small>khối lệnh sau default được thực thi.</small></b>

</div><span class="text_page_counter">Trang 66</span><div class="page_container" data-page="66">

<b>2.7. Cấu trúc điều khiển</b>

oVí dụ, in ra màn hình tên của ngày trong tuần

</div><span class="text_page_counter">Trang 67</span><div class="page_container" data-page="67">

<b>2.7. Cấu trúc điều khiển</b>

<b><small>- check_dieu_kien: kiểm tra điều kiện để thực thi khối lệnh.</small></b>

<b><small>- tang/giam_bien: được thực thi nhiều lần sau khi khối lệnh được </small></b>

<small>thực thi.</small>

</div><span class="text_page_counter">Trang 68</span><div class="page_container" data-page="68">

<b>2.7. Cấu trúc điều khiển</b>

oVí dụ, tăng i lên 2 đơn vị sau mỗi lần lặp:

<i><b><small>for (int i = 0; i < 20; i = i+2) {</small></b></i>

<i><b><small>    Console.WriteLine(i);}</small></b></i>

</div><span class="text_page_counter">Trang 69</span><div class="page_container" data-page="69">

<b>2.7. Cấu trúc điều khiển</b>

<small>oCâu lệnh foreach, được sử dụng để duyệt các phần tử của </small>

<small>oVí dụ, duyệt tất cả các phần tử của mảng cars</small>

<i><b><small>string[] cars = { "Honda", "BMW", "Ford", "Mazda" };foreach (string i in cars)</small></b></i>

<i><b><small>    Console.WriteLine(i);}</small></b></i>

</div><span class="text_page_counter">Trang 70</span><div class="page_container" data-page="70">

<b>2.7. Cấu trúc điều khiển</b>

oCâu lệnh while, được sử dụng để lặp nếu số lần lặp không được xác định trước

</div><span class="text_page_counter">Trang 71</span><div class="page_container" data-page="71">

<b>2.7. Cấu trúc điều khiển</b>

</div><span class="text_page_counter">Trang 72</span><div class="page_container" data-page="72">

<b>2.7. Cấu trúc điều khiển</b>

oCâu lệnh do…while, tương tự như vòng lặp while, ngoại trừ thực hiện lệnh ít nhất một lần ngay cả khi điều kiện là False

</div><span class="text_page_counter">Trang 73</span><div class="page_container" data-page="73">

<b>2.7. Cấu trúc điều khiển</b>

oVí dụ, tính tổng của 5 số tự nhiên đầu tiên:

<i><b><small>Console.WriteLine("Tong tu 1 den 5  la " + sum);  </small></b></i>

oNếu điều kiện ln là True thì vịng lặp sẽ là lặp vô tận

</div><span class="text_page_counter">Trang 74</span><div class="page_container" data-page="74">

<b>2.7. Cấu trúc điều khiển</b>

oCâu lệnh nhảy goto, nhảy đến một dịng cụ thể trong chương trình, được xác định bằng một nhãn (label)

</div><span class="text_page_counter">Trang 75</span><div class="page_container" data-page="75">

<b>2.7. Cấu trúc điều khiển</b>

<small>oCâu lệnh nhảy break, được sử dụng trong lệnh switch, hoặc câu lệnh lặp for, foreach, while, do...while dùng để nhảy ra khỏi cấu trúc điểu </small>

</div><span class="text_page_counter">Trang 76</span><div class="page_container" data-page="76">

<b>2.7. Cấu trúc điều khiển</b>

<small>oCâu lệnh nhảy continue, được sử dụng trong câu lệnh lặp for, foreach, while, do...while. Thoát ngay lần lặp hiện tại của vòng lặp để bắt đầu lần lặp mới</small>

</div><span class="text_page_counter">Trang 77</span><div class="page_container" data-page="77">

<b>2.7. Cấu trúc điều khiển</b>

oCâu lệnh nhảy return, dùng để thoát khỏi phương thức của một lớp, trả điều khiển trở về nơi gọi phương thức

<small>◦Khơng trả về kiểu dữ liệu gì nếu phương thức là void </small>

<small>◦Hoặc trả về một giá trị có kiểu dữ liệu thích hợp với kiểu dữ liệu của phương thức</small>

</div><span class="text_page_counter">Trang 78</span><div class="page_container" data-page="78">

<b>2.8. Mảng (Array)</b>

oMảng là một đối tượng chứa các phần tử có kiểu dữ liệu giống nhau. Mảng lưu các phần tử theo chỉ mục, chỉ mục của phần tử đầu tiên là 0

oTạo một mảng, chưa khởi tạo số phần tử:

<b><small>type</small></b><small>[] biếnmảng;</small>

oVí dụ, khai báo biến mảng:

<b><small>string</small></b><small>[] xe = {"Honda", "Kia", "Ford", "Mazda", "Toyota"};</small>

<b><small>int</small></b><small>[] a = {10, 20, 30, 40}; </small>

</div><span class="text_page_counter">Trang 79</span><div class="page_container" data-page="79">

<b>2.8. Mảng (Array)</b>

<small>oTruy cập một phần tử mảng bằng cách sử dụng số chỉ mục (index)</small>

<small>oVí dụ, truy xuất phần tử có chỉ mục là 0 trong mảng:</small>

<small>string[] xe = {"Honda", "Kia", "Ford", "Mazda", "Toyota"};Console.WriteLine(xe[0]); </small>

<small>o</small><b><small>Xác định số phần tử một mảng, sử dụng thuộc tính Length:</small></b>

<small>Console.WriteLine(xe.Length);</small>

</div><span class="text_page_counter">Trang 80</span><div class="page_container" data-page="80">

<b>2.8. Mảng (Array)</b>

oDuyệt các phần tử trong mảng sử dụng vòng lặp for, foreach

oVí dụ, truy xuất các phần tử bằng for:

<small>string[] cars = {"Honda", "Kia", "Ford", "Mazda", "Toyota"};for (int i = 0; i < cars.Length; i++)</small>

<small>Console.WriteLine(cars[i]);} </small>

</div><span class="text_page_counter">Trang 81</span><div class="page_container" data-page="81">

<b>2.8. Mảng (Array)</b>

<small>oVí dụ, truy xuất các phần tử bằng foreach:</small>

<small>string[] xe = {"Honda", "Kia", "Ford", "Mazda", "Toyota"};</small>

<small>foreach (string i in xe)</small>

</div><span class="text_page_counter">Trang 82</span><div class="page_container" data-page="82">

<b>2.8. Mảng (Array)</b>

oTrong khơng gian tên System.Linq, có nhiều phương thức xử lý mảng như Min, Max và Sum

o<b>Ví dụ, myArray khai báo không gian tên using System.Linq</b>, để sử dụng phương thức:

<small>int[] munbers = {14, 3, 25, 9, 21};</small>

<small> Console.WriteLine("Gia tri lon nhat:"+ numbers.Max());       Console.WriteLine("Gia tri nho nhat:"+ numbers.Min());       Console.WriteLine("Tong gia tri:"+ numbers.Sum());</small>

</div>

×