ideone logo Viết code trực tuyến với Ideone   online mini IDE and debugging tool Một cách ngắn gọn về ideone

Ideone.com là một… pastebin (dùng để lưu trữ text trực tuyến). Tuy nhiên, nó không giống như các pastebin khác trên Internet. Chính xác hơn nó là IDE và công cụ gỡ rối trực tuyến (online mini IDE and debugging tool ).

Ideone là một từ tiếng Ý có nghĩa là ý tưởng tuyệt vời – bởi vì ideone.com là nơi mà những ý tưởng lớn của bạn có thể trở thành hiện thực.

Ideone.com được thiết kế cho hầu hết các lập trình viên (tất nhiên, bạn cũng có thể tải lên một văn bản thông thường). Bạn có thể sử dụng nó để:

  • Chia sẻ code của bạn (rõ ràng rồi – nó là một pastebin, đúng không nào?) một cách rõ ràng
  • Chạy (run) code của bạn trên máy chủ hỗ trợ hơn 40 ngôn ngữ lập trình (tương lai sẽ hỗ trợ thêm nhiều ngôn ngữ hơn)
  • Bạn có thể cung cấp dữ liệu đầu vào (input data) cho chương trình của riêng bạn
  • Ideone.com cũng cung cấp miễn phí ideone API có sẵn như một webservice. Chức năng này cho phép bạn xây dựng các dịch vụ riêng của bạn giống như ideone!
  • Cho phép người dùng đăng nhập Ideone và cung cấp chức năng quản lý code của riêng mỗi người và nhiều chức năng khác nữa.

Tất cả các code có thể truy cập thông qua URL chia sẻ. Các trang lưu code cung cấp thông tin về code và thực thi của nó: bộ nhớ sử dụng, thời gian thực thi, ngôn ngữ và phiên bản trình biên dịch, code, input được tải lên bởi người sử dụng, output được tạo ra bởi chương trình và thông báo lỗi từ các trình biên dịch và gỡ rối. Continue reading »

 

snakeGame1 Mã nguồn C++ game CON SNAKE   rắn săn mồi trên chế độ console

snakeGame2 Mã nguồn C++ game CON SNAKE   rắn săn mồi trên chế độ console

Continue reading »

 

consoleMenu Đơn giản hóa các thao tác trong chế độ console với class Console

Nếu đã từng học lập trình Pascal hoặc đã sử dụng Turbo C++ chắc hẳn bạn biết đến những hàm rất tiện dụng như clrscr (xóa màn hình), gotoxy (đưa con trỏ đến tọa độ [x,y]), textcolor (đặt màu chữ), textbackground (đặt màu nền),… Đó là thời điểm những năm 90, khi mà các máy tính chỉ có chạy hệ điều hành MS-DOS nên những hàm như vậy rất thường được dùng cho nên Borland đã viết sẵn trong thư viện conio.h của C và crt của Pascal.

Bây giờ hầu hết máy tính chạy hệ điều hành Windows, còn rất ít chương trình chạy với chế độ console và chẳng còn ai phát triển một ứng dụng chạy chế độ console cả, có lẽ vì thế những hàm tiện ích trên đã bị loại bỏ. Như thế không có nghĩa là chế độ console đã bị loại bỏ hoàn toàn, Windows vẫn cung cấp nhiều hàm API để thao tác với chế độ console, bạn có thể xem tại đây.

Nếu viết một phần mềm chắc rằng bạn sẽ không cần đến những hàm trên, nhưng nếu bạn vẫn đang học lập trình và viết chương trình trên chế độ console thì có lẽ bạn sẽ cần đến.

Trên cơ  sở những hàm API được cấp sẵn, tôi viết lại class Console giúp đơn giản hóa các thao tác trong chế độ console. Class chứa các hàm thực hiện các chức năng sau:

  • Đặt tiêu đề cho cửa sổ Console
  • Thay đổi kích thước (số dòng x số cột) của màn hình
  • Thay đổi font chữ
  • Di chuyển cửa sổ Console đến một vị trí bất kì (theo tọa độ màn hình – pixcel)
  • Xóa màn hình
  • Đưa con trỏ đến một vị trí nào đó trên màn hình, lấy vị trí hiện tại của con trỏ
  • Xuất một kí tự ra một vị trí bất kì trên màn hình
  • Đặt màu cho chữ, màu nền
  • Vẽ hình chữ nhật
  • In ra một menu cho phép lựa chọn linh hoạt
  • Nhập mật khẩu dạng dấu *
 

Có 3 dạng biểu diễn đồ thị trên máy tính được sử dụng nhiều trong các bài toán lý thuyết đồ thị là ma trận kề (có trọng số), danh sách cạnh và danh sách kề. Trong đó được dùng nhiều nhất là ma trận trọng số nên ta sẽ lấy dạng biểu diễn này làm trung tâm để chuyển đổi giữa các dạng biểu diễn.

Ma trận trọng số

Ma trận trọng số của đồ thị G, kí kiệu W(G), là một ma trận số (nguyên hoặc thực) cấp nxn (n là số đỉnh) được định nghĩa là W = (Wij) với:

  • Wij = trọng số nối cạnh i với j nếu có (nếu có nhiều cạnh thì chọn cạnh nhỏ nhất)
  • +∞ nếu không có cạnh
Thực tế khi viết chương trình :
  • Nếu mọi cạnh của đồ thị đều dương thì ta thay +∞ bởi 0
  • Nếu L(e) >= 0, Với mọi e Î E thì thay +∞ bởi -1 (lưu ý cần xử lý riêng)
  • Nếu có cả cạnh có trọng số âm, dương, bằng 0 thì ta có thể dùng 2 ma trận, một ma trận kề và một ma trận trọng số hoặc dùng 1 struct tích hợp.
 
Thuật toán Kruskal

(Lý thuyết đồ thị – Trần Đan Thư & Dương Anh Đức)

Cho G = (X, E) là một đồ thị liên thông có trọng số gồm n đỉnh. Thuật toán Kruskal được dùng để tìm ra cây khung có trọng số nhỏ nhất G.

  • Bước 1: Sắp xếp các cạnh theo thứ tự trọng số tăng dần và khởi tạo T := Ø.
  • Bước 2: Duyệt theo cạnh e thuộc danh sách đã sắp xếp.
    + Nếu T + {e} không chứa chu trình thì ghép e vào cây T:= T + {e}.
    + Nếu T đủ n – 1 phần tử thì DỪNG
    Cuối duyệt

Ghi chú:

  • Trong quá trình xây dựng T thì các cạnh có thể không liên thông nhau, lúc đó T chỉ là rừng chứ chưa trở thành cây;
  • Khi thuật toán dừng (đã duyệt hết cạnh hoặc là T có đủ n – 1 cạnh): nếu T chưa đủ n – 1 cạnh thì đồ thị C không liên thông (không có cây khung), ngược lại thì T là cây khung cần tìm. Continue reading »
 
160eb7c4595b748951d50e939d38004f 39125661.cuntree1 Thuật toán Prim   Tìm cây khung có trọng số nhỏ nhất
Thuật toán Prim

Cho G = (X, E) là một đồ thị liên thông có trọng số gồm n đỉnh. Thuật toán Prim được dùng để tìm ra cây khung nhỏ nhất của G.

  • Bước 1: Chọn tùy ý x0 thuộc X và khởi tạo V:= { x0 }; T := Ø. Trong đó X là tập các đỉnh của đồ thị, V là tập các đỉnh được chọn vào cây khung nhỏ nhất và T là tập các cạnh của cây này.
  • Bước 2: Trong số những cạnh nối đỉnh x với đỉnh y mà x ∈ Vy ∈ X\V ta chọn cạnh e có trọng số nhỏ nhất. Nếu không có cạnh e thỏa yêu câu: DỪNG (1)
  • Bước 3: Thêm đỉnh y vào tập V và  thêm cạnh e vào tập T.
  • Bước 4: Nếu T đủ n – 1 phần tử thì DỪNG (2), ngược lại làm tiếp tục bước 2.
Ghi chú: Khi thuật toán dừng theo trường hợp 1 (tìm không có cạnh từ V đi ra) thì đồ thị không liên thông nên không có cây khung và do đó cũng không có cây khung nhỏ nhất.

Continue reading »

 

8b020cd72317f5b5ae6a60a080c14f6d 36757915.laptrinhhuongdoituongvoijavadoan Lập trình hướng đối tượng với Java   Đoàn Văn Ban

Các phương pháp hướng đối tượng đặc biệt là lập trình hướng đối tượng được xây dựng dựa trên nhiều khái niệm mới và được hỗ trợ bởi nhiều công cụ, ngôn ngữ lập trình rất mạnh giúp cho việc tạo ra những phần mềm ứng dụng có chất lượng cao, ngày càng đáp ứng tốt hơn yêu cầu của người sử dụng.

Ngôn ngữ Java do hãng Sun (http://java.sun.com) phát triển từ đầu những năm 90 đã trở thành ngôn ngữ lập trình hướng đối tượng rất được ưa chuộng trong những năm gần đây nhờ một số đặc điểm hết sức thích hợp với mạng Internet, hiện đã và đang được dùng phổ biến trên toàn thế giới nhằm đáp ứng các yêu cầu phát triển các ứng dụng phục vụ cho nhiều người sử dụng với những môi trường thực hiện phần mềm khác nhau, Java là một ngôn ngữ lập trình hoàn chỉnh được thiết kế theo cách tiếp cận hướng đối tượng và kế thừa, sử dụng lại có nâng cấp của những ngôn ngữ lập trình trước nó. Continue reading »

 

84682f6e5986db88cb1fefeaffa2d980 36756690.laptrinhhuongdoituongvoijava Lập trình hướng đối tượng với Java   Trần Đình Quế

Trong những năm gần đây, lập trình hướng đối tượng đã trở nên gần gũi nhờ sự ra đời liên tiếp của các ngôn ngữ lập trình hướng đối tượng. Sức mạnh của phương pháp lập trình hướng đối tượng thể hiện ở chỗ khả năng mô hình hoá hệ thống dựa trên các đối tượng thực tế, khả năng đóng gói và bảo vệ an toàn dữ liệu, khả năng sử dụng lại mã nguồn để tiết kiệm chi phí và tài nguyên; đặc biệt là khả năng chia sẽ mã nguồn trong cộng đồng lập trình viên chuyên nghiệp. Những điểm mạnh này hứa hẹn sẽ thúc đẩy phát triển một môi trường lập trình tiên tiến cùng với nền công nghiệp lắp ráp phần mềm với các thư viện thành phần có sẵn. Continue reading »

 

 

e59fc3388c0704a19d64df192f7928ce 36618453.theproblemthumb Những lỗi thường gặp khi mới bắt đầu lập trình C++C++ là một ngôn ngữ mạnh, đa nền tảng. Việc học lập trình C++ không phải là chuyện đơn giản như nói là có thể làm được mà nó là một quá trình tích lũy kinh nghiệm trên cơ sở thực hành thường xuyên. Những người mới bắt đầu với ngôn ngữ này thường gặp phải những lỗi làm họ sớm nản lòng, nhưng thực sự những lỗi đó có quá khó không? Vì vậy bài viết này sẽ cố gắng giải thích một số lỗi cơ bản thường gặp phải đối với những ai mới bắt đầu (beginners) học lập trình C++. Continue reading »

 

94ca79046f54c0414685e0940738ab08 36615072.programmingthumb 5 Cách để học lập trình nhanh hơn – 5 Ways you can Learning Programming Faster

Học lập trình không phải là chuyện mà ta có thể làm trong một sớm, một chiều, nhưng nó không phải là quá khó khăn. Có rất nhiều điều bạn có thể làm cho nó dễ dàng hơn khi bạn học lập trình. Bài viết sau đây được tham khảo từ trang web cprogramming.com sẽ có thể giúp ích cho chúng ta khám phá được những bí quyết để học lập trình tốt hơn và nhanh hơn.

Một trong những chủ đề được nói đến rất nhiều về mẹo học lập trình là:

Không đi quá nhanh, hãy nắm đúng nó trước khi nó di chuyển (Don’t go too fast, get it right before move on)

Chúng ta thường thắc mắc tại sao trong lớp học của mình, có một số bạn của chúng ta biết trước về một số ngôn ngữ lập trình. Trong những tuần đầu tiên học thường nắm bắt kiến thức rất nhanh, nhưng càng về sau họ lại bị bỏ ở đằng sau bởi những sinh viên khác. Tại sao họ lại bị bỏ xa trong khi nền tảng của họ tốt hơn??? Continue reading »

Lịch sử đăng bài

Tháng Năm 2012
T2 T3 T4 T5 T6 T7 CN
« Tháng 1    
 123456
78910111213
14151617181920
21222324252627
28293031  

Thông tin trang

© 2011 KĨ THUẬT LẬP TRÌNH Suffusion theme by Sayontan Sinha