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

Tài liệu Lap trinh co so_ Bai 4 pptx

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.36 MB, 37 trang )

02/21/14

BUỔI 4 :
Một số cấu trúc dữ liệu khác

02/21/14
Khai báo và
cấp phát
vùng nhớ
các biến

02/21/14
Lưu Ý

Trong Pascal,C hay C++ :
việc khai báo đồng nghĩa với
việc cấp phát vùng nhớ cho
biến để lưu trữ dữ liệu

Ví dụ
Var i : integer ; r : Real;
i
r

02/21/14
Lưu Ý

Cũng tương tự trong C/C++,
ngoài ra khi khai báo thì
tự động gán giá trị ngầm
định cho từng kiểu dữ liệu



Ví dụ
int i ;
char c;
0
\0
i
c

02/21/14
Lưu Ý

Trong C# thì khai báo và cấp
phát vùng nhớ là 2 việc khác
nhau !!!

Ví dụ (trong C#)
int i ; // chỉ khai báo biến
float f = 1.34f; // khai báo và cấp phát //vùng
nhớ

02/21/14
Lưu Ý

Có thể “tưởng tượng” như sau
:
int i, j=12, k;
float f=12.5f, g,h=17.6f;
12
12.5

17.6
j
f
h
i k g

02/21/14
using System;
class Test
{
public static void Main()
{int i, j=12, k;
float f=12.5f, g,h=17.6f;
}
}

02/21/14
using System;
class Test
{
public static void Main()
{
int i, j=12;
Console.WriteLine(" i = {0} , j = {1} ",i,j);
}
}

02/21/14
Nhận xét


Thường khai báo trước kiểu dữ
liệu của biến để tránh sai sót
khi thực hiện các phép tính toán
về sau

Nên kết hợp khai báo và khởi tạo
biến cùng lúc

02/21/14
using System;
class Test
{
public static void Main()
{
int i, j=12;
i=Math.Sqrt(12);
Console.WriteLine(" i = {0} , j = {1} ",i,j);
}
}

02/21/14

Class Random
Within namespace System
Truly random
The numbers are generated using an equations with a
seed
The seed is usually the exact time of day
Random tênđốitượngngẫunhiên = new Random();
randomObject.Next()

Returns a number from 0 to Int32.MaxValue
Int32.MaxValue = 2,147,483,647
randomObject.Next( x )
Returns a value from 0 up to but not including x
randomObject.Next( x, y )
Returns a number between x and up to but not
including y

02/21/14
int value;
string output = "";
Random randomInteger = new Random();

// loop 20 times
for ( int i = 1; i <= 20; i++ )
{
// pick random integer between 1 and 6
value = randomInteger.Next( 1, 7 );
output += value + " "; // append value to output

// if counter divisible by 5, append newline
if ( i % 5 == 0 )
output += "\n";

} // end for structure
MessageBox.Show( output, "20 Random Numbers from 1 to
6",
MessageBoxButtons.OK, MessageBoxIcon.Information );

02/21/14


02/21/14
Sử DụngMảng
Trong C#

02/21/14
Ưu điểm của mảng
-
Tổ chức quản lý tốt
-
Cùng 1 kiểu (!!!)
-
Thể hiện cấu trúc dữ liệu
Danh sách đặc :
duyệt, thêm, chèn, xóa
tìm, sắp xếp
nối ghép danh sách,trộn
 Nên sử dụng các CTDL do .NET
cung cấp

02/21/14
Cú pháp khai báo mảng
Khai báo mảng 1 chiều
<kiểu dữ liệu> [ ] <tên mảng>
;
Lưu ý
- Cú pháp khác so với C/C++
- Chỉ là khai báo, chứ chưa cấp
phát vùng nhớ (chưa khởi tạo)


02/21/14
Khai báo và khởi tạo mảng
Cú pháp khai báo và khởi tạo
<tên mảng> = new <tên kiểu dữ liệu>[sốpt];
Có thể kết hợp khai báo lẫn khởi
tạo
Ví dụ
float [ ] f_array = new float[10];
int [ ] i = new int[]{2,4,6,8};
Khai báo riêng và phải khởi tạo
trước khi sử dụng
string[] list;
list = new string[3];

02/21/14
Ví Dụ
public class Class1
{ //tạm thời chưa khaí báo biến ở đây!!
static public void Main ()
{
float [ ] x_arr= new float[10];
int [ ] i_arr = new int[ ]{2,4,6,8};
string[ ] list;
list = new string[3];
for (int i=0;i<x_arr.Length;i++)
x_arr[i]=i*4;
}
}

02/21/14

Xử lý các phần tử mảng
Thường sử dụng vòng lặp để
xứ lý mảng
do while
while …
for

foreach

02/21/14
Ví dụ xử lý mảng
using System;
class Vidu2_1
{
static public void Main()
{
int[ ] num = new int[10]; //khai báo+cấp phát
for(int i=0;i<10;i++) num[i]=i; //gán dữ liệu
for(int i=0;i<10;i++)
Console.Write(num[i]+" "); // in ra
từng phần tử
}
}

02/21/14
In ra số ngày của 1 tháng
using System;
class Vidu2_2
{static public void Main()
{

int[ ] month = new int[13]
{0,31,28,31,30,31,30,31,31,30,31,30,31};
Console.Write("Nhap 1 thang bat ky : ");
int m = Int32.Parse(Console.ReadLine());
Console.Write("Thang "+m+" co
"+month[m]+" ngay");;
}
}

02/21/14
Cẩn thận khi gán biến mảng
using System;
class Vidu2_3
{static public void Main()
{
string[] name= new string[]{"Tam","Vu","Hung","Dung"};
string[] fname = new string[4];
fname = name;
for(int i=0;i<fname.Length;i++) fname[i]="X"+fname[i];
for(int i=0;i<name.Length;i+
+)Console.WriteLine(name[i]);
for(int i=0;i<fname.Length;i+
+)Console.WriteLine(fname[i]);
}}

02/21/14

02/21/14
Tam Vu Hung Dung


name
fname
string[] name= new string[]{"Tam","Vu","Hung","Dung"};
string[] fname = new string[4];

02/21/14
Tam Vu Hung Dung

name
fname
fname = name
for(int i=0;i<fname.Length;i++) fname[i]="X"+fname[i];

×