Tag programming paradigms
Tìm kiếm bài viết trong Tag programming paradigms
[Procedural Programming + Ada] Bài 9 - Recursive Record & Access Pointer
Trong bất kỳ môi trường lập trình nào thì cũng có những trường hợp ứng dụng nhất định mà chúng ta cần phải định nghĩa một cấu trúc dữ liệu Đệ Quy. Tức là trong code định nghĩa đang viết có sử dụng nga
0 0 9
[Imperative Programming + C] Bài 15 - Simplicity DSA List (mở đầu)
Oh.. vậy là cái project nho nhỏ simplicity-dsa-c đã phải tạm dừng một thời gian khá dài để nhường chỗ cho các bài viết chính của Series có trọng tâm là giới thiệu các mô hình lập trình chính. Sau khi
0 0 17
[Imperative Programming + C] Bài 16 - Simplicity DSA List (tiếp theo)
Như vậy là sau khi xuất phát từ cấu trúc lưu trữ của một mảng đơn thuần literal array thì chúng ta cũng đã định nghĩa được một kiểu danh sách đơn thuần literal array với các ô nhớ void* được bọc trong
0 0 19
[Imperative Programming + C] Bài 17 - Simplicity DSA List (tiếp theo)
Ok. Trước hết chúng ta cần có sub-program hỗ trợ chèn thêm phần tử mới vào List một cách nhanh chóng để có thể kiểm thử các sub-program ở bài trước.
0 0 14
[Imperative Programming + C] Bài 18 - Simplicity DSA List (tiếp theo)
Trở lại với những lý do đã khiến chúng ta đã khởi đầu tìm hiểu về List, dung lượng lưu trữ thiếu linh động của các mảng Array chỉ là một phần nhỏ bởi trong phần nhiều trường hợp sử dụng lưu trữ tập hợ
0 0 20
[Imperative Programming + C] Bài 19 - Simplicity DSA List (tiếp theo)
Câu hỏi thắc mắc mới về việc các ngôn ngữ Functional sử dụng List làm cấu trúc chủ đạo để lưu trữ tập giá trị có phần hơi lạc đề so với dự định ban đầu mà mình bắt đầu cái mini project này. Tuy nhiên
0 0 19
[Functional Programming + Elm] Bài 5 - Monad & Monoid
Tổng kết từ bài viết trước đó thì chúng ta mới có thêm các công cụ là: class Functor để triển khai hàm điều khiển map cho một kiểu dữ liệu bất kỳ bao gồm cả các kiểu primitive và các kiểu có cấu trúc,
0 0 22
[Functional Programming + Elm] Bài 4 - Functor & Applicative
Đối với bất kỳ ngôn ngữ lập trình nào khi chúng ta đã nắm bắt được các kiểu dữ liệu cơ bản và cú pháp hỗ trợ khai báo trừu tượng Abstraction để tạo ràng buộc khi thiết kế tổng quan phần mềm, thì bước
0 0 19
[Functional Programming + Elm] Bài 3 - Type Variable & Type Class
Trong bài viết này, chúng ta sẽ nói về các khái niệm liên quan tới định kiểu dữ liệu Type. Những khái niệm mới mà chúng ta sẽ đề cập ở đây không hẳn thuộc về Functional Programming mà là những khái ni
0 0 19
[Functional Programming + Elm] Bài 2 - Higher-Order Function & Currying Function
Hãy khoan chưa vội nói tới những khái niệm mới mà chúng ta đã dự định trong bài viết này. Phần mở đầu ở đây chúng ta sẽ nói tới một vài yếu tố liên quan tới các khái niệm ở bài trước.
0 0 29
[Functional Programming + Elm] Bài 1 - Functional Aspects
Song song với Procedural Programming, và ở cùng cấp độ quan sát về việc kiến trúc phần mềm từ các sub-program đó là mô hình Lập Trình Hàm Functional Programming, cũng đã được đề cập trước đó trong một
0 0 28
[Functional Programming + Haskell] Bài 1 - Giới Thiệu Ngôn Ngữ Haskell
Mô hình lập trình hàm Functional Programming và các ngôn ngữ hỗ trợ xuất hiện từ rất sớm ngay khi khái niệm Declarative xuất hiện trong lĩnh vực lập trình phần mềm nói chung. Tuy nhiên do mang nặng cá
0 0 24
[Procedural Programming + Ada] Bài 25 - Console Tic-Tac-Toe App (tiếp theo)
Bây giờ chúng ta sẽ bổ sung thêm logic xử lý bước đi cuối cùng cho Computer;Và với thời lượng trung bình của các bài viết mà mình đang áp dụng thì rất có thể chúng ta sẽ cần thêm vài bài viết nữa để h
0 0 18
[Procedural Programming + Ada] Bài 26 - Console Tic-Tac-Toe App (tiếp theo)
Chúng ta đang muốn điều hướng User_Move ở bước đi tiếp theo tránh khỏi các bước tiên đoán được là sẽ tạo ra Double_Threat. Vì vậy nên sau khi kiểm tra thấy có nhiều Double_Threat từ User thì lúc này c
0 0 16
[Procedural Programming + Ada] Bài 27 - Console Tic-Tac-Toe App (kết thúc)
Và đây là code hoàn thiện của Redirect_User_Concern; giúp bổ sung logic điều hướng bước đi tiếp theo mà User phải tạm dừng ý định tạo Double_Threat để ngăn chặn Computer thắng sớm hơn. Bây giờ chúng t
0 0 14
[Procedural Programming + Ada] Bài 22 - Console Tic-Tac-Toe App (tiếp theo)
Trong số các thủ tục được gọi ở lượt di chuyển của Computer thì chúng ta chỉ còn Get_Computer_Move; và Update_Computer_Set; là các thủ tục mới. Tuy nhiên Update_Computer_Set; có logic tương đồng với U
0 0 21
[Procedural Programming + Ada] Bài 23 - Console Tic-Tac-Toe App (tiếp theo)
Để bổ sung logic ưu tiên chặn bước di chuyển thắng cuộc cho Computer thì chúng ta có thể tư duy ở cấp độ Imperative đó là sử dụng cấu trúc lệnh rẽ nhánh để lựa chọn giữa bước đi chặn USER_WIN và bước
0 0 20
[Procedural Programming + Ada] Bài 24 - Console Tic-Tac-Toe App (tiếp theo)
Như vậy là để Computer có thể cân bằng kết quả ván cờ thì chúng ta cần bổ sung thêm logic chặn bước đi tạo cơ hội kép của User. Trong trường hợp này thì procedure mới sẽ có mức độ ưu tiên thấp hơn so
0 0 26
[Procedural Programming + Ada] Bài 21 - Console Tic-Tac-Toe App (tiếp theo)
Thủ tục cuối cùng trong lượt di chuyển của User là cập nhật trạng thái của ván cờ Update_Match_Status;. Thủ tục này cũng sẽ được sử dụng lại ở lượt di chuyển của Computer giống như Put_Chess_Board;.
0 0 18
[Procedural Programming + Ada] Bài 20 - Console Tic-Tac-Toe App (tiếp theo)
Thao tác cập nhật User_Set sau khi người dùng nhập vào bước đi muốn thực hiện trên bàn cờ chỉ đơn giản là chúng ta sẽ di chuyển giá trị User_Move từ mảng Common_Set tới vị trí tương ứng trong mảng Use
0 0 16
[Procedural Programming + Ada] Bài 19 - Console Tic-Tac-Toe App (tiếp theo)
Bộ đôi thủ tục tiếp theo là Put_Chess_Board; và Get_User_move; lại rất tương đồng với đoạn xử lý Put_Symbol_Menu; và Get (User_Symbol); trước đó. Khởi đầu mỗi ván cờ, chúng ta sẽ có một bảng Tic-Tac-T
0 0 19