chim bay

Image 1
Image 2
Image 3
Image 4

Friday, October 30, 2015

Install Netbeans in ubuntu

1. Tải tập tin cài đặt NetBeans

Bạn truy cập vào đường dẫn dưới đây:
netbeans_1
Bạn sẽ chọn phiên bản mà bạn muốn tải về để cài đặt, trong hướng dẫn này, HuongDanIT.com tải về bản ALL 198MB hỗ trợ gần hết tất cả các nền tảng ngôn ngữ lập trình.

2. Cài đặt NetBeans

Để có thể cài đặt NetBeans trên Linux, bạn sẽ cần cài đặt Java Developement Kit dành cho Linux.
Bạn vào Menu > Acessories > Terminal để mở Terminal lên và tiến hành gõ lệnh sau:
$ sudo apt-get install openjdk-7-jdk
netbeans_2
Sau khi cài đặt xong OpenJDK, bạn mở Terminal và di chuyển đến thư mục chứa tập tin cài đặt NetBeans, trong bài viết này, HuongDanIT.com để tập tin tại Desktop của user huongdanit. Bạn gõ lệnh sau để thực hiện cài đặt NetBeans:
$ sh netbeans-8.0.2-linux.sh
netbeans_3
Một giao diện cài đặt sẽ hiện ra như hình dưới, bạn có thể tùy chọn cấu hình trước khi cài đặt bằng cách bấm vào nút Customize…, sau đó bạn bấm Next để tiếp tục thực hiện cài đặt.
netbeans_4
Bạn tích vào phần đồng ý các quy định bản quyền phần mềm và bấm Next.
netbeans_5
Ở phần này, bạn có thể tùy chọn cài đặt thêm JUnit hoặc không, bấm Next để tiếp tục.
netbeans_6
Bạn kiểm tra lại đường dẫn mà bạn muốn cài đặt NetBeans lên máy tính của mình. Bấm Next để tiếp tục.
netbeans_7
netbeans_8
Bấm Install sau khi hoàn thành các thao tác ở trên để cài đặt NetBeans.
netbeans_9
netbeans_10
Bạn chờ một vài phút để việc cài đặt NetBeans hoàn tất, bấm Finish để kết thúc việc cài đặt.
netbeans_11
Khởi động chương trình và bắt đầu công việc lập trình của bạn với NetBeans.
netbeans_12

Cai dat chorme tren linux

Bước 1. Thêm Google Chrome vào PPA file

Trước tiên thêm google chrome repo vào hệ thống của chúng ta bằng lệnh bên dưới. Khi thêm PPA google chrome vào hệ thống, chúng ta có thể nhận những bản vá lỗi mới nhất mỗi khi chúng ta kiểm tra update hệ thống:

3. Bước 2: Cài đặt / Nâng cấp Google Chrome

Sau khi thêm google chrome repo vào hệ thống, chúng ta sẽ sử dụng lệnh sau để cài đặt google chrome lên phiên bản mới nhất hoặc nâng cấp google chrome nếu bạn đã cài đặt sẵn google chrome trên máy tính của mình.

4. Bước 3: Khởi động google chrome

Sau khi cài đặt xong google chrome, bạn có thể chạy google chrome bằng cách vào menu hoặc sử dụng lệnh sau:
Như vậy là bạn đã cài đặt xong Google Chrome trên Ubuntu của mình. Bạn cũng có thể sử dụng Gói cài đặt Goolge Chrome trên trang download tại: Google chrome GUI installer

Constructor Destructor Instance constructor và Static constructor

a.Constructor
Constructors (được gọi là hàm tạo) là những hàm đặc biệt cho phép thực thi, điều khiển chương trình ngay khi khởi tạo đối tượng. Trong C#, Constructors có tên giống như tên của Class và không có giá trị trả về.


     Ví dụ:


class Library
{
private int ibooktypes;
//Constructor
public Library() // Hàm tạo không đối số.
{
ibooktypes = 7;
}
public Library(int value)
          {
          ibooktypes = value;
          }
}



Ví dụ: Với dụ trên thì bạn có hai cách khởi tạo lớp Library thông qua một trong hai hàm tạo


  • Library lb1 = new Library()// Hàm tạo không đối số;
  •  Library lb2 = new Library(100); // Hàm tạo được truyền vào với giá trị là 100, và nó sẽ được gán vào ibooktypes = 100;

b.Destructor

Destructor (được gọi là hàm hủy) là một hàm dùng để hủy đi một thể hiện của một class. Destructor không có đối số, không có từ chỉ thuộc tính truy nhập, và không  được gọi tường minh. Destructor của một thể hiện sẽ được gọi tự động khi một thể hiện kết thúc “vòng đời” của nó thông qua bộ thu dọn rác tự động (Garbage  Collection). Destructor cũng có tên trùng với tên class. Để khai báo một destructor chúng ta đặt dấu “~” vào trước destructor
                
     Ví dụ



class Library
{
private int ibooktypes;
//Constructor
public Library()
{
ibooktypes = 7;
}
public Library(int value)
      {
            ibooktypes = value;
      }
            //Destructor

~ Library()
      {
            //thực thi câu lệnh khi hàm hủy hay phương thức hủy được gọi
      }
}
 ~Library() là destructor của lớp Library

2.   Instance constructor và Static constructor

Như bài học trước tôi đã giới thiệu, Các thành phần trong class có thể là instance và static. Constructors cũng là một thành phần của class, vậy Instance constructors và Static constructors có gì khác nhau? Chúng ta sẽ cùng tìm hiểu.

a.        Instance constructor

Một instance constructor( tạm dịch là một bộ khởi dựng thể hiện) sẽ khởi tạo một số giá trị khi một thể hiện của một lớp được tạo ra.
Ví dụ:

class Point
{
            public double x, y;
            public Point()
 {
                        this.x = 0;
                        this.y = 0;
            }
            public Point(double x, double y)
{
                        this.x = x;
                        this.y = y;
            }
            public static double Distance(Point a, Point b)
{
                        double xdiff = a.x – b.x;
                        double ydiff = a.y – b.y;
                        return Math.Sqrt(xdiff * xdiff + ydiff * ydiff);
            }
            public override string ToString()
{
                        return string.Format("({0}, {1})", x, y);
            }
}
class Test
{
            static void Main()
{
                        Point a = new Point();
                        Point b = new Point(3, 4);
                        double d = Point.Distance(a, b);
                        Console.WriteLine("Distance from {0} to {1} is {2}", a, b, d);
            }
      }
                                                      
Trong lớp Point có 2 instance constructors. Một không có đối số truyền vào và 2 constructor còn lại có 2 tham số kiểu double. Nếu class không có instance constructor nào thì constructor không có đối số sẽ được gọi tự động.

b.Static constructor

Nếu một lớp khai báo một phương thức khởi tạo tĩnh (static constructor), thì được đảm bảo rằng phương thức này sẽ được thực hiện trước bất cứ thể hiện nào của lớp được tạo ra. Static Constructor  hữu dụng khi chúng ta cần cài đặt một số công việc mà không thể thực hiện được thông qua chức năng khởi dựng và công việc cài đặt này chỉ được thực
duy nhất một lần. Static constructor không có thuộc tính truy cập, không có đối số và không được gọi tường minh mà sẽ được gọi tự động.

Ví dụ:

sing System;
using Personnel.Data;
class Employee
{
       private static DataSet ds;
       static Employee() {
                   ds = new DataSet(...);
       }
       public string Name;
       public decimal Salary;
       ...
}
Khi đó đối tượng ds sẽ được tạo ra khi trước khi ta tạo một thể hiện lớp emplyee. 

Thursday, October 29, 2015

Kiến thức căn bản về con trỏ

nguồn coppy của cunglaptrinh.blogspot.com
1. Con trỏ khác với biến bình thường ở chỗ nó lưu giữ địa chỉ của một biến khác thay vì lưu trữ giá trị (hay còn gọi là trỏ đến biến khác), để dễ hình dung bạn có thể coi con trỏ là một mặt nạ tượng trưng cho biến mà nó trỏ đến.

2. Vì nó chỉ lưu giữ địa chỉ thay vì nội dung nên kích thước mọi biến con trỏ trong Windows là 4 bytes, trong Linux là 2 bytes.

3Cách khai báo<kiểu dữ liệu> *<tên biến>
Ví dụ:
?
1
2
3
4
int *p; //p là con trỏ
int* p; //p là con trỏ
int* p, q; //p là con trỏ, q không phải là con trỏ
int *p, *q; //cả p và q là con trỏ

4. Con trỏ cũng có 1 địa chỉ riêng. Toán tử * lấy nội dung tại vùng nhớ mà con trỏ trỏ đến. Toán tử & lấy địa chỉ của một biến (kể cả con trỏ).

Với khai báo: int *p; thì
  • p là con trỏ
  • *p là giá trị tại vùng nhớ mà p trỏ đến
  • &p là địa chỉ của con trỏ p
5. Con trỏ trỏ đến địa chỉ của 1 biến: <tên con trỏ> = &<tên biến>
Con trỏ trỏ đến con trỏ khác: <con trỏ 1> = <con trỏ 2>

6. Mã đặc tả của con trỏ và địa chỉ là %p, dùng để in địa chỉ lên màn hình.
Ví dụ:
?
1
2
3
4
5
int x = 5;
int *p = &x;
printf("%p", &x); //xuất địa chỉ của x
printf("%p", p); //xuất giá trị của con trỏ p, tức là địa chỉ của x
printf("%p", &p); //xuất địa chỉ của con trỏ p
7. Con trỏ chưa trỏ đến một vùng nhớ (tức vừa được khởi tạo mà chưa được gán địa chỉ)  thì không thể thay đổi giá trị.

8. Các phép toán trên con trỏ: +, -, ++, --, +=, -= và phép so sánh. Những phép toán tăng giảm này giúp truy xuất hoặc nhảy cóc đến những vùng nhớ kế cận.

9. Tính khoảng cách giữa 2 con trỏ bằng: <con trỏ 1> - <con trỏ 2> . Kết quả trả về một số nguyên

10. Có thể khai báo những con trỏ cấp cao hơn.
Ví dụ:
?
1
2
int **p; //con trỏ cấp 2
int ***p; //con trỏ cấp 3

11. Con trỏ còn có kiểu void trong khi biến không có kiểu này.
Con trỏ void chưa biết trước kiểu dữ liệu nên có thể trỏ đến bất kỳ biến kiểu nào.
Ví dụ:
void *p;

12. Mảng n chiều thì dùng con trỏ n cấp.
Ví dụ: mảng 1 chiều thì dùng con trỏ cấp 1, mảng 2 chiều thì dùng con trỏ cấp 2.

13. Con trỏ dùng để cấp phát động cho mảng.
Mảng động có thể thêm bớt phần tử nên đỡ tốn dữ liệu hơn mảng tĩnh.

Xem thêm: Cấp phát động trong C/C++

14. Tên mảng 1 chiều là một con trỏ trỏ đến ô đầu tiên trong mảng.

15. Có nhiều cách viết để tham chiếu tới các phần tử trong mảng:
 a <=> &a[0]
*a <=> a[0]
*(a+i) <=> a[i] <=> i[a]
a+i <=> &a[i] <=> &i[a]

16. Con trỏ hằng là con trỏ trỏ đến vùng dữ liệu có giá trị hằng nên không thể thay đổi giá trị của hằng. Tuy nhiên có thể thực hiện tăng giảm địa chỉ để trỏ đến nơi khác.

Khai báoconst int *p;

17. Hằng con trỏ là con trỏ chỉ trỏ vào 1 ô nhớ nhất định, không thể tăng giảm hay trỏ đi nơi khác.

Khai báoint* const p;

18. Một hàm cũng có địa chỉ. Con trỏ trỏ đến hàm gọi là con trỏ hàm.
Khai báo<kiểu trả về> (*<tên con trỏ>)(<các kiểu tham số>);
Ví dụ:
?
1
2
bool (*p)(int);
int (*q)(int, int);

Con trỏ hàm chỉ có thể trỏ đến các hàm có kiểu trả về và các kiểu tham số cũng như số lượng phù hợp.
Cách trỏ đến hàm:
<tên con trỏ> = <tên hàm> hoặc
<tên con trỏ> = &<tên hàm>

Sau khi trỏ có thể thay thế tên hàm bằng tên con trỏ.
Ví dụ:
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
bool IsPositive(int n)
{
   return n > 0 ? true : false;
}
int Max(int a, int b)
{
   return a > b ? a : b;
}
int main()
{
   bool (*p)(int);
   p = Max; //Lỗi, không phù hợp để trỏ
   p = &Max; //Lỗi, không phù hợp để trỏ
   p = IsPositive //OK
   p = &IsPositive //OK
   //Lúc này có thể thay tên hàm bằng tên con trỏ
   //IsPositive(5) <=> p(5)
}