Thứ Hai, 1 tháng 10, 2012

Bài 1: Làm quen với Visual Basic

I.Ứng dụng của lập trình
Lập trình ra các chương trình có tính ứng dụng cao trong mọi lĩnh vực
Ví dụ: chương trình đánh văn bản, chương trình nghe nhạc, các công cụ hệ thống,
phát triển mạng, game...

II.Bố cục 1 chương trình trong Visual Basic
1.Bố cục 1 chương trình trong Visual Basic 6.0
Class ten_lop
'Phần khai báo
Private Sub main()
'Các câu lệnh
end sub
end class



III. Các định nghĩa về hàm, thủ tục, hằng số và biến



Biến là được kí hiệu bằng 1 từ hoặc chữ thường có mang nội dung, biến có thể chứa một giá trị có thể thay đổi trong 1 chương trình
-Cách khai báo biến
Dim tên_biến
-Biến có 2 loại : biến cục bộ và biến toàn cục
Biến cục bộ là biến chỉ có tác dụng nơi ta khai báo biến đó và cũng có tác dụng đối với những hàm và thủ tục có vị trí tương đương với biến đó.
Biến toàn cục là biến có tác dụng trong toàn chương trình
VD:
class main()
dim x,z as Integer
x=0
x=x+1
z=a() 'tai day z co gia tri la 2
function a()
x=x+1
a=x
end function
end class

Qua đó ta có thể thấy được biến x bị ảnh hưởng cả bên ngoài hàm a và bên trong hàm a ->đây là biến toàn cục

VD2:
class main()
Dim z as Integer
z=a() 'tai day z co gia tri la null vi bien x la bien cuc bo khong
'anh huong ra ngoai lop main duoc
function a()
dim x as Integer
x=0
x=x+1
a=x
end function
end class


2.Định nghĩa hằng số

Hằng số cũng giống như biến nhưng có sự khác biệt là giá trị của hằng số là cố định không thay đổi
Khai báo hằng số
Const ten_hang


2.Định nghĩa hàm, thủ tục

Hàm là tổng hợp của nhiều lệnh.Người ta sử dụng hàm là vì trong một chương trình có nhiều tập lệnh được sử dụng nhiều lần.Những tập lệnh đó ta đưa vào 1 hàm, đến khi cần ta chỉ cần gọi hàm đó ra.Như vậy sẽ giúp giảm bớt được thời gian và dễ sử dụng
Hàm cũng giống biến cũng có 2 loại: private và public
Khi khai báo hàm mà sử dụng private thì hàm này chỉ có tác dụng trong lớp đó thôi
Còn nếu sử dụng public thì bạn có thể gọi hàm này từ bất kì lớp nào

Khai báo hàm
Public function ten_ham (tham so)
Private function ten_ham(tham so)
Khai báo thủ tục
Public Sub ten_ham (tham so)
Private Sub ten_ham(tham so)

Bài 1 : Cấu Trúc Của Một Chương Trình C++

Bài 1 : Cấu Trúc Của Một Chương Trình C++

Có lẽ một trong những cách tốt nhất để bắt đầu học một ngôn ngữ lập trình là bằng một chương trình. Vậy đây là chương trình đầu tiên của chúng ta :

// my first program in C++
#include <iostream.h>
int main ()
{
cout << "Hello World!";
return 0;
}


Hello World!



Chương trình trên đây là chương trình đầu tiên mà hầu hết những người học nghề lập trình viết đầu tiên và kết quả của nó là viết câu "Hello, World" lên màn hình. Đây là một trong những chương trình đơn giản nhất có thể viết bằng C++ nhưng nó đã bao gồm những phần cơ bản mà mọi chương trình C++ có. Hãy cùng xem xét từng dòng một :

// my first program in C++

Đây là dòng chú thích. Tất cả các dòng bắt đầu bằng hai dấu sổ (//) được coi là chút thích mà chúng không có bất kì một ảnh hưởng nào đến hoạt động của chương trình. Chúng có thể được các lập trình viên dùng để giải thích hay bình phẩm bên trong mã nguồn của chương trình. Trong trường hợp này, dòng chú thích là một giải thích ngắn gọn những gì mà chương trình chúng ta làm.

#include <iostream.h>

Các câu bắt đầu bằng dấu (#) được dùng cho preprocessor (ai dịch hộ tôi từ này với). Chúng không phải là những dòng mã thực hiện nhưng được dùng để báo hiệu cho trình dịch. Ở đây câu lệnh #include <iostream.h> báo cho trình dịch biết cần phải "include" thư viện iostream. Đây là một thư viện vào ra cơ bản trong C++ và nó phải được "include" vì nó sẽ được dùng trong chương trình. Đây là cách cổ điển để sử dụng thư viện iostream

int main ()

Dòng này tương ứng với phần bắt đầu khai báo hàm main. Hàm main là điểm mà tất cả các chương trình C++ bắt đầu thực hiện. Nó không phụ thuộc vào vị trí của hàm này (ở đầu, cuối hay ở giữa của mã nguồn) mà nội dung của nó luôn được thực hiện đầu tiên khi chương trình bắt đầu. Thêm vào đó, do nguyên nhân nói trên, mọi chương trình C++ đều phải tồn tại một hàm main.

Theo sau main là một cặp ngoặc đơn bởi vì nó là một hàm. Trong C++, tất cả các hàm mà sau đó là một cặp ngoặc đơn () thì có nghĩa là nó có thể có hoặc không có tham số (không bắt buộc). Nội dung của hàm main tiếp ngay sau phần khai báo chính thức được bao trong các ngoặc nhọn ( { } ) như trong ví dụ của chúng ta

cout << "Hello World";

Dòng lệnh này làm việc quan trọng nhất của chương trình. cout là một dòng (stream) output chuẩn trong C++ được định nghĩa trong thư viện iostream và những gì mà dòng lệnh này làm là gửi chuỗi kí tự "Hello World" ra màn hình.

Chú ý rằng dòng này kết thúc bằng dấu chấm phẩy ( ; ). Kí tự này được dùng để kết thúc một lệnh và bắt buộc phải có sau mỗi lệnh trong chương trình C++ của bạn (một trong những lỗi phổ biến nhất của những lập trình viên C++ là quên mất dấu chấm phẩy).

return 0;

Lệnh return kết thúc hàm main và trả về mã đi sau nó, trong trường hợp này là 0. Đây là một kết thúc bình thường của một chương trình không có một lỗi nào trong quá trình thực hiện. Như bạn sẽ thấy trong các ví dụ tiếp theo, đây là một cách phổ biến nhất để kết thúc một chương trình C++.

Chương trình được cấu trúc thành những dòng khác nhau để nó trở nên dễ đọc hơn nhưng hoàn toàn không phải bắt buộc phải làm vậy. Ví dụ, thay vì viếtint main ()
{
cout << " Hello World ";
return 0;
}


ta có thể viết
int main () { cout << " Hello World "; return 0; }
cũng cho một kết quả chính xác như nhau.
Trong C++, các dòng lệnh được phân cách bằng dấu chấm phẩy ( ;). Việc chia chương trình thành các dòng chỉ nhằm để cho nó dễ đọc hơn mà thôi.

Các chú thích.

Các chú thích được các lập trình viên sử dụng để ghi chú hay mô tả trong các phần của chương trình. Trong C++ có hai cách để chú thích

// Chú thích theo dòng

/* Chú thích theo khối */

Chú thích theo dòng bắt đầu từ cặp dấu xổ (//) cho đến cuối dòng. Chú thích theo khối bắt đầu bằng /* và kết thúc bằng */ và có thể bao gồm nhiều dòng. Chúng ta sẽ thêm các chú thích cho chương trình :

/* my second program in C++
with more comments */

#include <iostream.h>
int main ()
{
cout << "Hello World! "; // says Hello World!
cout << "I'm a C++ program"; // says I'm a C++ program
return 0;
}


Hello World! I'm a C++ program



Nếu bạn viết các chú thích trong chương trình mà không sử dụng các dấu //, /* hay */, trình dịch sẽ coi chúng như là các lệnh C++ và sẽ hiển thị các lỗi

Thiết kế chương trình duyệt file âm thanh

MediaPlayer của Windows từ version 6.x trở đi có thể player được rất nhiều dạng thức tập tinMultimedia khác nhau như: .avi, .asf, .asx, .rmi, .wav ; .ra, .ram, .rm, .rmm ; .mpg, .mpeg, .m1v, .mp2, .mpa, .mpe ; .mid, .rmi ; .qt, .aif, .aifc, .aiff, .mov ; .au, .snd ... Chất lượng cũng được cải thiện rất rõ rệt so với các phiên bản trước.

Nếu bạn đang sử dụng Windows 98 thì MediaPlayer đã sẵn sàng, nếu dùng Windows 95, 97 bạn buộc phải cài đặt bổ sung để lên đời MediaPlayer của mình. Bạn có thể tìm bộnâng cấp trên các CDROM phần mềm hay nằm chung trong bộ Internet Explorer 4.01 SP2.

Các file multimedia hiện này tràn ngập trên Internet, CDROM, rất nhiều. Đặc biệt là MP3 & Midi, 2 loại file này rất thịnh hành và đang được ưa chuộng.

Cái gì nhiều cũng gây nên ý tưởng (nói dúng hơn là sinh tật). Mặc dù chỉ cần double click lên file Mp3 hay Midi trong một trình quản lý file là có thể Play được một cách dễ dàng nhờ MediaPlayer của Windows nhưng cái gì của riêng mình mới khoái.

Chính vì vậy trong bài viết này tôi xin mạn phép hướng dẫn các bạn tự thiết kế một MediaPlayer rất tiện dụng và để dành làm của riêng. Tuynhiên nói của riêng không phải là tự làm hết mà chúng ta phải dùng một bảnsao của MediaPlayer trong chương trình.

Khái quát vềchương trình

Chúng ta sẽ thiết kế chưong trình có giao diện như sau:



Đầu tiên người dùng chọn ổ đĩa, thư mục có chứa các file Multimedia (thí dụ là file Midi). Kế đến nhấn nút Play hoặc double click trên tên file cần phát để nghe nhạc.

Ngoài ra còn có các nút Help, Author, Exit

Phía dưới là một MediaPlayer được nhúng vào chương trình, có thể điều chỉnh các chức năng như một chương trình riêng biệt (bạn có thể right click để mở menu tắt quen thuộc như khi dùng MediaPlayer), ở cuối của cửa sổ có dòng thông báo tên file & đường dẫn đang Play.


Các xác lập trong hộp thoại Options của MediaPlayer

Phía dưới của hộpchọn thư mục có một Text box dùng để lọc file. Các loại file này ngăn cách bởi dấu chấm phảy ";". Thí du như bạn muốn lọc các file MP3 & MIDI thì gõ vào: *.mp3;*.mid

Cũng lưu ý thêm là: nếu như trong hộp liệt kê tên file không có file nào, thì nút Play bị vô hiệu hoá (Enabled=False). Chỉ khi nào có file nút Play mới có tác dụng.

Thiết kế giao diện

Bạn hãy khởi động Visual Basic và bắt tay vào việc tạo dáng cho ứng dụng của mình. Cách bố trí các Control trên form tùy theo ý mỗi người, riêng tôi, tôi trình bày như sau:



Các thuộc tính & Caption của các Control trong chương trình:

FORM

Form1.caption = "MediaPlayer - Browser"

Form1.BorderStyle = 1-Fixed Single

Form1.Minbutton=True

TEXTBOX/LABELBOX

Text1.text="*.mid;*.mp3"

Label1.caption=""

COMMAND BUTTON

cmdPlay.caption="&Play"

cmdPlay.enabled=False

cmdHelp.caption="&Help"

cmdAuthor.caption="&Author"

cmdExit.caption="&Exit"

Trên thanh Toolbox của Visual Basic không có đối tượng MediaPlayer. Bạn phải dùng một Custom Control để thêm đối tượng đó vào.

Nhấn CTRL - T. Trong hộp thoại Components chọn Windows MediaPlayer (thường ở cuối danh sách), Click nút OK



Đối tượng MediaPlayer sẽ được thêm vào Toolbox, việc còn lại, chỉ cần vẽ nó lên form, đặt ở vị trí thích hợp (nó có tên mặc nhiên là MediaPlayer1)

Viết Code

Đầu tiên bạn cần cho bộ 3 control: Drive1, Dir1, File1 hoạt động. Hãy gõ đoạn Code sau đây để cho chúng "hiểu nhau"

Private Sub Dir1_Change()

File1.Path = Dir1.Path

If File1.ListCount = 0 Then
'Kiểm tra xem có file nào trong listbox File1 chưa

cmdPlay.Enabled = False
'Nếu chưa có thì vô hiệu nút Play

Else

cmdPlay.Enabled = True
'Nếu có rồi thì cho hiệu lực nút Play

End If

End Sub

Private Sub Drive1_Change()

Dir1.Path = Drive1.Drive

End Sub

Double click lên nút Play và viết

Private Sub Command1_Click()

MediaPlayer1.filename = Dir1.Path & "\" _
& File1.List(File1.ListIndex)

Label1.Caption = MediaPlayer1.filename

End Sub

Nếu thuộc tính AutoStart của MediaPlayer được gán bằng True. MediaPlayer sẽ tự động Play nếu bạn truyền cho thuộc tính FileName của nó một chuỗi là đường dẫn đến file cần Play. Khi thuộc tính FileName là rỗng, nó sẽ ngừng.

ở đoạn Code trên tôi đã ghép nối các thuộc tính của Drive1, Dir1 & File1 để chỉ ra file cần Play. Đoạn code sẽ gặp lỗi khi các file cần Play nằm ngoài thư mục gốc, bạn hãy tự hoàn chỉnh lấy bằng hàm IIF() hay câu lệnh IF

Dòng thứ 2 dùng để hiển thị đường dẫn file đang Play trong Labelbox ở cuối form.

Nếu muốn khi người dùng Double Click lên tên file trong danh sách file thì MediaPlayer sẽ Play file đó, bạn chỉ cần làm như sau:

Private Sub File1_DblClick()

cmdPlay_Click

End Sub

Để khả năng lọc (Pattern) của File1 hoạt động theo nội dung trong Textbox (Text1). Bạn cần gán các chuỗi trong Textbox do người dùng gõ vào mỗi khi có sự thay đổi (thuộc tính Change của Textbox).

Private Sub Text1_Change()

File1.Pattern = Trim(Text1)

End Sub

Đồng thời lúc chương trình khởi động bạn cũng phải gán nội dung trong Textbox cho thuộc tính Pattern của File1

Private Sub Form_Load()

Text1_Change

End Sub

MediaPlayer còn có một thuộc tính tên là PlayCount - Số lần phát lại một file nhạc, bạn hãy gán cho nó một số thích hợp trong khi thiết kế chương trình.

Khả năng của MediaPlayer còn tùy thuộc vào MediaPlayer đang sử dụng trong Windows của bạn.

Vậy là xong, một chương trình duỵệt file âm thanh, thật là quá đơn giản phải không bạn :-)

Thay lời kết

Bây giờ bạn có thể dịch ra file exe, đem tặng cho bạn bè "làm kỷ niệm". Nhớ chép thêm các file cần thiết cho chương trình nhé. MSDXM.OCX là file chứa Custom Control MediaPlayer đã sử dụng trong chương trình. Hãy nén lại cho chúng thật mi nhon trước khi chép ra đĩa mềm hay gởi kèm theo E-mail.

Trên đây chỉ là một chương trình rất đơn giản, nhưng tính năng có nó thì đáng khâm phục phải không bạn. Còn lại vài chi tiết khác bạn có thể tự mình làm lấy theo ý thích. Bạn có thể thêm vài tính năng nữa cho chương trình trở nên đa dụng, thí dụ như: Play các file Video, tự động Play một loạt các file...

Chúc bạn thành công.

Chủ Nhật, 30 tháng 9, 2012

thấy cái này bên Haivl.com hay nên post cho mọi người xem

Bạn nên tính thử đi rất hay...

Mẹo đã có người giải số chữ cái là "A" ta có Ax2= số chẵn -> (A x 2) + 5 = số lẻ -> [(A x 2) + 5] x 50 = x50 -> x50 + 1762 = xx12. Mà 12 là số năm nay 2012 nên dù tên mẹ bạn có nhiu chữ cái thì 2 số sau đều ra tuổi bạn,(chỉ khác nhau số trước của tuổi). VD: tên A = 1 ta có. 1x2=2 -> 2+5=7 -> 7x50=350 -> 350+1762= 2112 -> 2112-1989=123 vậy tưởi của mềnh là 23 =))

Tăng thời gian dùng pin máy ảnh hiệu quả

Khi chỉ báo pin camera ở vạch cuối cùng, nhiều người thường nghĩ là không chụp được nữa. Sau đây là vài mẹo để có thể sử dụng tiếp cho đến khi dung lượng pin hết hoàn toàn.

Tắt màn hình LCD



Cách này không thể thực hiện được với vài mẫu máy ảnh. Nhưng nếu máy ảnh của bạn có kính ngắm quang, bạn có thể giữ lại một ít điện năng cho pin bằng cách dùng kính ngắm để tạo bố cục hình ảnh thay vì dùng màn hình LCD.

Hãy tham khảo tài liệu hướng dẫn để tìm hiểu tầm phủ hay trường nhìn của kính ngắm.

Bảo quản pin đúng cách

Khi đi du lịch trong vùng khí hậu lạnh, hãy giữ cho pin sử dụng được lâu hơn bằng cách giữ ấm pin, để nó trong túi. Một số nhiếp ảnh gia còn mang theo bao giữ ấm để quấn quanh máy ảnh, dù cách này chỉ giúp giữ được máy cho tốt hơn chứ không giúp kéo dài thời gian sử dụng pin.

Khi không dùng máy một thời gian dài, bạn cũng nên lấy pin ra vì pin sẽ cạn dần khi để lâu trong máy.

Chế độ tiết kiệm pin

Nếu bạn không thể tắt màn hình LCD, trong trình đơn của camera có thể có các tùy chọn để tiết kiệm pin. Bạn có thể chọn chế độ ngủ (sleep mode) để camera tự động tắt sau một thời gian không hoạt động, hay giảm bớt độ sáng màn hình LCD.


Giảm bớt độ sáng màn hình cũng giúp tăng thời lượng dùng pin cho camera.

Ngoài ra, cũng nên hạn chế thời gian xem lại hình ảnh vì dùng màn hình LCD nhiều sẽ làm giảm thời gian sử dụng pin.

Tắt các tính năng khác

Các tính năng mới và ấn tượng như chống rung IS (Image Stabilisation) rất ngốn pin. Khi chụp ngoài trời có nắng hay khi dùng giá 3 chân, hãy tắt tính năng này để tiết kiệm pin khi chỉ còn một vạch. Khi đó bạn có thể chụp thêm vài ảnh nữa.


Tắt tính năng chống rung IS và chỉnh nét tự động AF.

Khi dùng máy ống kính rời DSLR, hãy tắt tính năng chỉnh nét tự động AF (auto focus) và thay vào đó hãy dùng chế độ chỉnh nét thủ công MF (manual focus). Chụp với chế độ AF liên tục, nhất là trong điều kiện thiếu sáng khi máy và ống kính phải cố chỉnh nét, cũng sẽ làm cạn pin nhanh.

Đầu tư cho pin phụ

Mua pin dự phòng là cách tốt nhất để lúc nào bạn cũng có thể bắt được mọi khoảnh khắc, nhất là khi đang di chuyển. Bạn cần phải lưu ý kiểm tra xem pin có tương thích với máy hay không. Máy ảnh của Panasonic thường không cho dùng pin của hãng thứ ba.


Mua pin dự phòng là cách tốt nhất để lúc nào bạn cũng có thể bắt được mọi khoảnh khắc.


Vài loại DSLR và máy không gương lật còn tương thích với các loại báng cầm rời có tích hợp pin (còn gọi là grip). Thiết bị này được gắn vào camera để cung cấp thêm điện năng bổ sung cho pin chính.

Chụp không flash

Dùng flash tích hợp sẵn trên camera thường tốn nhiều điện năng. Khi có thể, hãy tắt đèn flash.


Flash tích hợp sẵn trên camera thường tốn nhiều điện năng.

Mặt khác, nếu bạn chụp bằng DSLR hay máy không gương lật, hãy dùng flash ngoài vì loại này không dùng điện năng của máy ảnh.

Tránh chụp phơi sáng lâu và quay video nhiều

Chụp ảnh phơi sáng lâu sẽ làm pin cạn nhanh vì việc giữ cửa trập mở lâu, cùng với nhiều thời gian xử lý ảnh sẽ làm giảm thời gian sử dụng pin. Quay video cũng thế, nhất là khi quay video Full HD, vì việc này cần nhiều thời gian xử lý trên máy và thường phải dùng đến màn hình LCD.

Nếu máy ảnh của bạn thật sự hết pin và bạn cần chụp thêm một bức ảnh quan trọng nữa, hãy tắt máy vài phút. Thường thì bạn sẽ có đủ lượng điện tích của pin để chụp thêm một bức ảnh cuối cùng.
DBS M05479
Quang Cao