1. Trang chủ
  2. » Công Nghệ Thông Tin

Bài giảng Cơ sở lập trình: Chương 3 - Lê Viết Mẫn

66 9 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 66
Dung lượng 1,26 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Chương 3 trình bày những kiến thức cơ bản về ngôn ngữ lập trình C#. Nội dung cụ thể gồm: Lập trình hướng đối tượng, cách tạo ra một chương trình C#, Các thành phần của một chương trình C#, biến - kiểu dữ liệu - hằng, toán tử, xuất dữ liệu, lập trình chương trình đơn giản với C#. Mời các bạn cùng tham khảo.

Trang 1

v 1.1 - 09/2013

Cơ bản ngôn ngữ lập trình C#

Trang 3

Giải bài toán trên máy tính

1 Xác định bài toán

2 Thiết kế thuật toán

3 Phân tích thuật toán

4 Cài đặt thuật toán

5 Kiểm tra / Bắt lỗi

6 [ Sửa lỗi ]

Trang 5

Lập trình hướng đối tượng

Trang 6

.NET và hướng đối tượng

• Nền tảng NET hỗ trợ hướng đối tượng từ dưới lên trên

Trình biên dịch hỗ trợ hướng đối tượng

• Intermediate Language là hướng đối tượng

• Base Class Library hoàn toàn là hướng đối tượng

Các ngôn ngữ lập trình chấp nhận NET (.NET-aware languages) cũng là

hướng đối tượng

• Ngôn ngữ lập trình C# là ngôn ngữ lập trình hướng đối tượng

• Cần hiểu hai khái niệm :

• Đối tượng

Trang 7

Lớp & đối tượng

• Lớp giống như một cái khuôn bánh

• Nó định nghĩa khuôn dạng của các đối tượng

• Các đối tượng như các cái bánh

• Chúng là các instances (thực thể/thể hiện) của lớp

Trang 8

• Một đối tượng là một thực thể trong miền

xác định có một định danh riêng (tên)

Một tập những đặc tính (attribute) mô tả

tình trạng của đối tượng

type state nameBorrower dateBorrow dateReminder calculDateReminder

Một tập các thao tác (phương thức / hàm - methods) định nghĩa

các hành vi của đối tượng

Một đối tượng là một thể hiện (instance) của một lớp

• Lớp là kiểu dữ liệu trừu tượng, được mô tả bởi những thuộc tính

(đặc tính và phương thức) chung của các đối tượng và cho phép

tạo ra các đối tượng có những thuộc tính đó

Đặc tả UML của một lớp

Trang 9

Ví dụ

Car

mark color registering

start driver stop

twingo : Car

mark = Renault color = gray registering = 995 LKZ 75

Nhóm các dữ liệu và xử lý liên quan trong một lớp

Object : một thể hiện của lớp

Trang 10

Lớp & đối tượng trong C#

Định nghĩa lớp Sử dụng từ khoá class

Định nghĩa một kiểu dữ liệu mới Tạo một đối tượng

Có hai loại hàm với hai cách triệu gọi khác nhau :

• Hàm không tĩnh - Gọi từ đối tượng

• Hàm tĩnh (từ khoá static) - Gọi từ lớp

Bitmap bm = new Bitmap(20, 20);

Bitmap bm = new Bitmap(20, 20);

bm.Save( "bitmap.png" );

Console.Write( "Please enter a number :" );

Trang 11

.NET Base Class Library

• Một tập hợp khổng lồ các lớp được cung cấp cho người lập

trình, cho phép bạn làm bất cứ việc gì với máy tính mà hệ điều hành có hỗ trợ

• Bạn có thể sử dụng các lớp cơ bản NET này để

Tạo các thể hiện (object)

• Truy xuất các phương thức / hàm thành phần các lớp cung cấp

• Cung cấp, truy xuất các dữ liệu trong các thể hiện của lớp

• Để nghiên cứu về các lớp cung cấp cái gì, nằm ở assembly

(tập tin dll) nào, cách sử dụng

• Sử dụng Object Browser

• MSDN - http://msdn.microsoft.com/en-us/library/gg145045%28v=vs.100%29.aspx

Trang 12

Namespace (1/5)

• Là cách mà NET tránh né việc các định danh (tên lớp, tên

biến, tên hàm, ) choảng nhau vì trùng tên

• Là việc gộp lại những kiểu dữ liệu có liên hệ với nhau về mặt

ngữ nghĩa

• System.IO gộp các kiểu dữ liệu liên quan đến xuất nhập dữ liệu trên tập tin

• System.Data gộp các kiểu dữ liệu cơ bản về cơ sở dữ liệu

• Tên tất cả các kiểu dữ liệu trong phạm vi namespace sẽ tự động

được gán một tiền tố mang tên namespace

• Lớp Array nằm trong System, nên tên trọn vẹn của nó là System Array

• NET đòi hỏi các kiểu dữ liệu phải được định nghĩa trong một

namespace nào đó

System Console

System Array

Trang 13

Namespace (2/5)

• [Lời khuyên của Microsoft] Nên cung cấp ít nhất hai namespace

lồng nhau :

• namespace đầu : tên công ty

• namespace thứ hai : tên công nghệ, tên gói phần mềm, tên phần mềm hoặc

tên project

• Trong NET, hầu hết những namespace quan trọng đều xoay

quanh namespace System

• Namespace này cung cấp phần cốt lõi các kiểu dữ liệu

• Một chương trình C# ít nhất phải khai báo sử dụng namespace này

• Việc tìm hiểu từng kiểu dữ liệu được chứa đựng trong mỗi

namespace đòi hỏi thời gian

YourCompanyName.ProjectName ClassName

Trang 14

Namespace (3/5)

System Chứa các lớp cốt lõi liên quan đến các kiểu dữ liệu bẩm sinh,

tính toán số học

System.Collections Định nghĩa một số đối tượng như ArrayList , Queue , SortedList

System.Data System.Data.Common System.Data.SqlClient

Những namespace dùng trong việc thao tác với các cơ sở dữ liệu

System.Drawing System.Drawing.Drawing2D System.Drawing.Printing Chứa các kiểu dữ liệu về vẽ đồ hoạ, in ấn

System.IO Chứa các kiểu dữ liệu lo việc xuất nhập dữ liệu

System.Net Các kiểu dữ liệu liên quan đến lập trình mạng

System.Web Các kiểu dữ liệu cho việc triển khai những ứng dụng Web, kể

cả ASP.NET

System.Windows.Form Các kiểu dữ liệu cho phép xây dựng giao diện đồ hoạ

System.XML Các kiểu dữ liệu cho phép tương tác với dữ liệu XML

Trang 15

Namespace (4/5)

• Sử dụng từ khoá using để qui chiếu đến các namespace trong

chương trình

• Một khi đã qui chiếu các namespace , bạn tự do tạo ra những thể

hiện của những kiểu dữ liệu mà namespace đó chứa đựng

• Nên dùng cách 1, chỉ dùng cách 2 khi muốn tránh sự nhập nhằng về tên

• Có thể dùng các alias cho các tên namespace dài

Trang 16

Namespace (5/5)

• Một tập tin assembly (vd : mscorlib.dll ) có thể chứa một

lượng bất kỳ các namespace

• Cần phải báo cho trình biên dịch về tên của assembly chứa các

namespace có các kiểu được tham chiếu (được sử dụng)

• Tất cả các assembly được lưu trong GAC (Global Assembly Cache) -

C:\Windows\Assembly

• Trong Visual Studio, trên ngăn Solution Explorer, nháy phải chuột

lên thư mục References, nháy mục Add References

• Làm việc này rồi thì mới using được

Trang 17

Cách tạo ra một chương trình C#

Trang 18

Chương trình C#

• Mỗi Project được đặt trong một Solution

• Mỗi Solution có thể chứa nhiều Project

• Một Project bao gồm một hoặc nhiều đơn vị biên dịch

(compilation units)

• Mỗi đơn vị là một file mã nguồn riêng biệt (.cs)

• Program.cs là tên mặc định của đơn vị biên dịch đầu tiên của project

• Trong môn học này, chúng ta chủ yếu biên soạn chương trình trong tập tin này

• Mỗi Project được biên dịch thành một tập tin assembly ( exe

hoặc dll )

Trang 19

Cấu trúc chương trình C#

Solution

namespace A { } namespace B { } namespace A { }

class X { } class Y { } class Z { }

Trang 20

Chương trình đầu tiên

using System;

namespace Square {

class Program

{ static void Main( string [] args) {

double n;

// nhap mot so vao tu ban phim

Console Write( "Please enter a number:" );

n = double Parse( Console ReadLine());

// in ra binh phuong cua so do

Console WriteLine( "The square of {0} is {1}" , n, Square(n));

Program.cs

Trang 21

• csc.exe cung cấp vài tham số dòng lệnh sau :

• /out : chỉ định tên của Assembly

• /target:exe : (mặc định) Assembly kiểu .exe

• /target:library : Assembly kiểu .dll

• /target:module : Assembly kiểu .netmodule, dùng cho biên dịch Assembly

nhiều tập tin

• /reference : tham chiếu các Assembly dll mà Assembly biên dịch cần sử dụng

• Nên sử dụng Visual Studio 2010 Command Prompt để biên dịch

Biên dịch chương trình

csc /out:Square.exe Program.cscsc /out:Square.exe *.cs

cmd.exe /k ""C:\Program Files\Microsoft Visual Studio 10.0\VC\vcvarsall.bat""

Trang 22

Các thành phần của một chương trình C#

Trang 23

Chương trình đầu tiên

using System;

namespace Square {

class Program

{ static void Main( string [] args) {

double n;

// nhap mot so vao tu ban phim

Console Write( "Please enter a number:" );

n = double Parse( Console ReadLine());

// in ra binh phuong cua so do

Console WriteLine( "The square of {0} is {1}" , n, Square(n));

Program.cs

Trang 24

Chương trình đầu tiên

using System;

namespace Square {

class Program

{ static void Main( string [] args) {

double n;

// nhap mot so vao tu ban phim

Console Write( "Please enter a number:" );

n = double Parse( Console ReadLine());

// in ra binh phuong cua so do

Console WriteLine( "The square of {0} is {1}" , n, square(n));

Program.cs

• Các tập tin cs là các tập tin mã nguồn C#

Mỗi tập tin nên chứa cài đặt cho một và chỉ một lớp

• Program.cs là tập tin mặc định đầu tiên được tạo ra

trong Project để chứa đoạn chương trình, là điểm bắt đầu của chương trình

Trang 25

Chương trình đầu tiên

using System;

namespace Square {

class Program

{ static void Main( string [] args) {

double n;

// nhap mot so vao tu ban phim

Console Write( "Please enter a number:" );

n = double Parse( Console ReadLine());

// in ra binh phuong cua so do

Console WriteLine( "The square of {0} is {1}" , n, Square(n));

được kết thúc bằng dấu chấm phẩy ( ; )

• Nhiều câu lệnh có thể

được gộp lại thành khối

và đặt trong cặp dấu ngoặc nhọn { }

Trang 26

Chương trình đầu tiên

// nhap mot so vao tu ban phim

Console Write( "Please enter a number:" );

n = double.Parse( Console ReadLine() );

// in ra binh phuong cua so do

Console WriteLine( "The square of {0} is {1}" , n, square(n));

• báo cho trình biên dịch biết bạn sẽ sử

dụng những kiểu dữ liệu trong namespace

nào

• đây cũng là cách để bạn giảm thiểu việc

gõ tên namespace trước tên lớp, tên hàm

• để báo cho trình biên dịch biết, mã nguồn

của bạn cần dùng assembly nào thì trong

Visual Studio, trên ngăn Solution Explorer, nháy phải chuột lên mục

References, nháy mục Add References

Trang 27

Chương trình đầu tiên

// nhap mot so vao tu ban phim

Console.Write("Please enter a number:");

n = double.Parse(Console.ReadLine());

// in ra binh phuong cua so do

Console.WriteLine("The square of {0} is {1}", n, square(n));

• Namespace có thể có hoặc không

Những kiểu dữ liệu thuộc namespace nào thì đặt trong cặp dấu ngoặc nhọn của

namespace đó

Có thể khai báo các namespace lồng nhau

Trang 28

Chương trình đầu tiên

// nhap mot so vao tu ban phim

Console.Write("Please enter a number:");

n = double.Parse(Console.ReadLine());

// in ra binh phuong cua so do

Console.WriteLine("The square of {0} is {1}", n, square(n));

• Tên lớp bắt đầu bằng kí tự viết hoa

Thân lớp được đặt trong cặp dấu ngoặc nhọn {}

Đối với C#, mọi biến và hàm đều phải được đặt trong một định nghĩa kiểu nào đó

Trong môn này, mã nguồn của chúng ta chỉ nằm trong lớp Program

Trang 29

Chương trình đầu tiên

// nhap mot so vao tu ban phim

Console.Write("Please enter a number:");

n = double.Parse(Console.ReadLine());

// in ra binh phuong cua so do

Console.WriteLine("The square of {0} is {1}", n, square(n));

đây là điểm đầu vào của một chương trình

• có thể có nhiều hàm Main để xử lý cho nhiều

trường hợp khởi động chương trình khác nhau

không thuộc về một lớp nào, global function

• là một hàm tĩnh (từ khoá static)

người ta có thể truyền tham số cho nó

có nhiều dạng giá trị trả về của hàm này

• ở đây là void , tức là không cần giá trị trả về

Trang 30

Chương trình đầu tiên

// nhap mot so vao tu ban phim

Console.Write("Please enter a number:");

n = double Parse( Console ReadLine());

// in ra binh phuong cua so do

Console WriteLine( "The square of {0} is {1}" , n, Square(n));

Khai báo biến :

• có thể khai báo bất cứ đâu trong chương

trình

biến sẽ có kiểu dữ liệu và tên

Một biến sau khi đã khai báo thì có thể gán giá trị và sử dụng biến đó để tính toán

Trang 31

Chương trình đầu tiên

// nhap mot so vao tu ban phim

Console Write( "Please enter a number:" );

n = double.Parse(Console.ReadLine());

// in ra binh phuong cua so do

Console WriteLine( "The square of {0} is {1}" , n, Square(n));

• Write - in chuỗi văn bản chỉ định ra màn hình

• WriteLine - in chuỗi văn bản chỉ định ra màn

hình rồi xuống dòng

• Thông số đầu tiên đại diện cho chuỗi ký tự in ra

màn hình

• Các token giữ chỗ {0}, {1} là vị trí các giá trị

của các thông số tiếp theo sẽ được chèn vào

Trang 32

Chương trình đầu tiên

// nhap mot so vao tu ban phim

Console.Write("Please enter a number:");

n = double Parse( Console ReadLine());

// in ra binh phuong cua so do

Console.WriteLine("The square of {0} is {1}", n, squ are(n));

• ReadLine - đọc vào một dòng

• Kết quả đọc vào là một chuỗi ký tự Do đó, ta

phải dùng hàm Parse của kiểu double để chuyển từ chuỗi thành số

• ReadKey - đọc vào một ký tự

• Ở đây, chức năng của hàm này là dừng màn

hình để cho người sử dụng đọc các kết quả xuất ra màn hình

Trang 33

Chương trình đầu tiên

// nhap mot so vao tu ban phim

Console Write( "Please enter a number:" );

n = double Parse( Console ReadLine());

// in ra binh phuong cua so do

Console WriteLine( "The square of {0} is {1}" , n, Square(n));

• Lời gọi hàm phải tuân theo qui định

của lời gọi hàm (Xem slide 10)

• Trong lời gọi hàm, cung cấp đầy đủ

giá trị cho các tham số theo định nghĩa hàm

Trang 34

Chương trình đầu tiên

// nhap mot so vao tu ban phim

Console.Write("Please enter a number:");

n = double.Parse(Console.ReadLine());

// in ra binh phuong cua so do

Console.WriteLine("The square of {0} is {1}", n, square(n));

Trang 35

Biến, kiểu dữ liệu, Hằng

Trang 36

Bộ nhớ của con người

1 Đầu tiên, yêu cầu bạn nhớ con số 5

2 Sau đó, yêu cầu bạn nhớ đồng thời

con số 2

3 Yêu cầu bạn cộng 1 vào con số đầu

tiên

4 Trừ hai số đó

Trang 37

• Máy tính có thể chứa hàng triệu số cùng lúc và thực hiện tính

Trang 38

Định danh

• Các tên biến, tên hàm, tên lớp gọi chung là các định danh và

phải tuân sau quy tắc đặt tên

• Định danh là chuỗi các ký tự, số và dấu gạch chân và luôn bắt

đầu bằng ký tự, dấu gạch chân hoặc ký tự @

• Trong C#, định danh :

• Hỗ trợ ký tự Unicode

• Phân biệt chữ hoa và chữ thường

• Ký hiệu @ được sử dụng để chỉ một từ khoá là định danh

• if - từ khoá

• @if - định danh if

• Có thể chứa các chuỗi mã Unicode (vd : \u03c0 tương đương 𝛑)

someNamesum_of3_10percent

@while𝛑

\u03c0b\u0061ck

Trang 39

Từ khoá

Có tất cả 77 từ khoá

Trang 40

Quy tắc đặt tên

• Các từ được viết hoa chữ cái đầu tiên (vd : ShowDialog)

• Ký tự đầu tiên được viết hoa, ngoại trừ tên biến

Trang 41

Hệ thống kiểu dữ liệu

• Tất cả các kiểu dữ liệu đều thừa kế từ System Object

• có thể được gán cho các biến kiểu Object

• có thể sử dụng tất cả các hàm của kiểu Object

Types

Primitive Types Enums Structs Classes Interfaces Arrays Delegates

bool

char

sbyte short int long

byte ushort uint ulong

float double

Trang 42

Kiểu trị & kiểu tham chiếu

Ví dụ intint i = 17; j = i; stringstring s = s1 = s;“Hello”;

i 17

j 17

ss1 0x0a10

0x0a10

Hello

stack

Trang 43

Stack vs Heap

• stack được đặt trong bộ nhớ máy tính

chứa tất cả các biến được khai báo và khởi tạo trước thời gian chạy (runtime)

• được quản lý theo lời gọi hàm

• heap là một phần của bộ nhớ máy tính

chứa tất cả các biến được tạo ra và khởi tạo trong thời gian chạy (các biến động - dynamic memory)

heap

main()int ymyobj = new Object()

Trang 44

Kiểu dữ liệu cơ bản

sbyte byte System.System.SByteByte số nguyên có dấu 8 bit

short ushort System.System.UInt16Int16 số nguyên có dấu 16 bit

int uint System.System.UInt32Int32 số nguyên có dấu 32 bit

long ulong System.System.UInt64Int64 số nguyên có dấu 64 bit

float double decimal

Các kiểu dữ liệu này đều có các hàm thành phần rất hữu ích Vd : int MaxValue

Ngày đăng: 11/05/2021, 03:30

🧩 Sản phẩm bạn có thể quan tâm