Các vấn đề python trong công nghệ tin y sinh- Nguyễn Công Trình st

CĂN BẢN LẬP TRÌNH PYTHON
BÀI 1. TỔNG QUAN NGÔN NGỮ LẬP TRÌNH
Bài viết này chỉ nêu các điểm chính yếu cần nhớ. Giải thích chi tiết được post trong các hình.
1) Chương trình (program) là một tập các câu lệnh (statement) được sắp xếp có chủ đích để hướng dẫn cho máy tính thực hiện.
2) Loại ngôn ngữ duy nhất máy tính có thể hiểu được là ngôn ngữ máy (machine language). Trong ngôn ngữ này, mỗi câu lệnh được gọi là chỉ thị (instruction) và được trình bày dưới dạng dãy các con số 0 và 1 (gọi là một bit).
3) Thay vì viết các chỉ thị dưới dạng dãy bit 0 và 1, người ta dùng các từ gợi nhớ để đặt tên cho các chỉ thị. Loại ngôn ngữ này được gọi là hợp ngữ (assembly language).
4) Mở rộng ra tiếp, người ta thiết kế các ngôn ngữ sử dụng các câu lệnh gần giống với các câu nói trong ngôn ngữ tự nhiên (tiếng Anh). Các ngôn ngữ này có các quy tắc văn phạm rất chặt chẽ và được gọi là văn phạm phi ngữ cảnh (context-free grammar). Những ngôn ngữ loại này bao gồm C, C++, Java, C#, Python và nhiều nữa.
5) Ngôn ngữ máy và hợp ngữ được gọi chung là ngôn ngữ cấp thấp (low-level language); các ngôn ngữ ở mục (4) được gọi chung là ngôn ngữ cấp cao (high-level language).

6) Để dịch một chương trình từ ngôn ngữ này sang ngôn ngữ khác, người ta phải xây dựng một chương trình đặc biệt gọi là chương trình dịch (translator).
7) Về cơ bản có 2 loại chương trình dịch: Một là đọc chương trình gốc rồi dịch và cho thực hiện, loại này gọi là trình thông dịch (interpreter), như công việc của một người thông dịch viên. Thay vì cho chạy ngay, loại chương trình thứ hai lại dịch rồi ghi nhận vào một hoặc nhiều tập tin (file); khi cần cho chạy thì người ta cho chạy riêng, tách rời khỏi quá trình dịch. Loại chương trình dịch này gọi là trình biên dịch (compiler).
8) Quá trình dịch một chương trình có thể phân thành 2 giai đoạn: Giai đoạn phân tích và giai đoạn dịch. Giai đoạn phân tích có liên quan nhiều đến các thông báo lỗi cho người lập trình nên cần nắm rõ.

9) Giai đoạn phân tích có 3 bước: Bước phân tích từ vựng (lexical analysis) là bước kiểm tra chính tả; Bước phân tích cú pháp (syntax analysis, parsing) là bước kiểm tra cú pháp cho đúng với bản mô tả về cú pháp (sử dụng ký pháp BNF); Bước phân tích ngữ nghĩa (semantic analysis) để phát hiện một số lỗi logic cơ bản mà quan trọng nhất là kiểm tra kiểu (type checking).
Trong quá trình tìm hiểu về ngôn ngữ Python, chúng tôi sẽ nhắc lại nhiều lần để các bạn hiểu rõ, nhờ đó các chương trình mà các bạn viết sẽ ít mắc lỗi hơn và khi gặp lỗi các bạn dễ dàng hiểu và sửa lỗi
==================
BÀI 2. GIỚI THIỆU PYTHON
Dưới đây là phần tóm tắt. Giải thích chi tiết được trình bày trong các hình gửi kèm.
1) Trong một chương trình Python, theo mặc định các câu lệnh được thực hiện TUẦN TỰ từ trên xuống theo đúng thứ tự chúng ta viết.
2) Trong câu lệnh gán (assignment), ký hiệu là dấu =, vế phải được tính toán trước rồi lấy giá trị gán vào cho biến ở vế trái.
3) Ba loại dữ liệu cơ bản nhất là string (chuỗi ký tự), integer (số nguyên) và float (số chấm động) được Python xây dựng sẵn (gọi là built-in type). Máy tính không thể biểu diễn được số thực (real) mà chỉ biểu diễn được xấp xỉ của nó dưới dạng số float.
4) Các giá trị được cho trực tiếp vào chương trình gọi là literal (trực kiện).
5) Object (đối tượng) trong Python là một vật thể ảo để biểu thị cho dữ liệu, nghĩa là trừu tượng hóa (abstract) dữ liệu thành một "vật sống động". Trong máy tính, đó chẳng qua là một vùng nhớ được cấp phát để lưu dữ liệu, kèm với các thông tin khác như kiểu, loại của dữ liệu.
6) Mỗi object được nhận diện (identify) bằng id của nó. Thông thường id chính là địa chỉ của vùng nhớ đang lưu trữ object đó.

7) Mỗi object trong Python phải có 3 thuộc tính: id, type, value.
8) Vì dùng id rất khó cho việc tham chiếu đến object nên thông thường lập trình viên sẽ nghĩ ra một cái tên rồi "gắn kết" (binding) tên đó với một đối tượng. Khi cần dùng đến đối tượng, họ chỉ việc dùng tên này là đủ. Trong trường hợp này, lập trình viên có thể thay đổi đối tượng, cho tên đó gắn kết với một đối tượng khác. Khi đó, tên là một biến (variable).
9) Python khuyến cáo dùng chữ thường để đặt tên cho biến. Nếu tên dài có nhiều chữ thì phân cách các chữ bằng dấu gạch thấp (underscore).
PS:
1) Python Interpreter có khá nhiều trên mạng và đủ dùng khi học về lập trình Python cơ bản. Các bạn có thể search và dùng luôn các interpreter chạy online. Dưới đây là mấy trang các bạn có thể tham khảo:
- Download từ trang python.org về chạy trên máy
- Chạy trực tiếp từ trang chủ của python.org (màn hình hơi nhỏ)
- Chạy trực tiếp tại pythontutor.com. Trang này cho chạy từng câu lệnh và hiển thị các hoạt động trong bộ nhớ, giúp các bạn hình dung chương trình chạy thật sự ra sao.
2) Các sách dạy Python khá phong phú, đa dạng. Tuy nhiên các tài liệu đáng tin cậy nhất vẫn là từ trang python.org. Rắc rối lớn nhất là các bạn phải có kiến thức khá vững vàng về ngôn ngữ lập trình và trình biên dịch.
==============
BÀI 3. CÂU LỆNH RẼ NHÁNH VÀ VÒNG LẶP
Dưới đây là phần tóm tắt. Giải thích chi tiết được trình bày trong các hình gửi kèm.
1) Thứ tự thực hiện trong một chương trình Python là TUẦN TỰ từ trên xuống.
2) Tuy nhiên trong nhiều trường hợp, chúng ta có nhu cầu CHỌN LỰA dựa theo một điều kiện, nghĩa là tùy thuộc điều kiện, chúng ta chỉ thực hiện một hoặc một nhóm lệnh nào đó mà thôi. Trường hợp này, chúng ta dùng câu lệnh if.
3) Cũng có tình huống chúng ta muốn thực hiện một số câu lệnh lập lại nhiều lần. Khi này chúng ta có thể dùng câu lệnh for hoặc while. Bài này chỉ trình bày về for, còn while sẽ được trình bày sau.
4) Các nhóm lệnh được thực hiện trong câu lệnh if hoặc for được đánh dấu bằng cách viết lùi vào so với các mệnh đề if, elif, else (câu lệnh if) hoặc mệnh đề for (câu lệnh for). Để cho dễ đọc, Python quy ước lùi vào 4 khoảng trắng.
5) Trong các câu lệnh, chúng ta thường phải dùng biểu thức (expression) để diễn tả các giá trị được tính toán từ các giá trị khác. Loại biểu thức hay dùng là biểu thức số học, tính ra các giá trị số; ngoài ra còn có biểu thức logic, tính ra giá trị logic (đúng, sai). Python dùng hai từ khóa True và False để biểu diễn hai giá trị đúng, sai, tương ứng với 1 và 0.

6) Khi viết các biểu thức, chúng ta phải hiểu rõ về trình tự thực hiện các phép toán trong biểu thức. Trình tự này được gọi là thứ bậc hay precedence.
7) Trong biểu thức số học, các phép toán trong ngoặc được thực hiện trước, sau đó phép lũy thừa, rồi đến nhân, chia, cuối cùng là cộng trừ. Nếu các phép toán cùng thứ bậc thì thực hiện từ trái sang.
8) Trong biểu thức logic, các phép so sánh có cùng thứ bậc, sau đó đến phép not, rồi and và cuối cùng là or.
PS: Chúng tôi không cung cấp mã nguồn (source program hoặc source code) mà để các bạn tự nhập vào vì bằng cách này, các bạn sẽ thu được rất nhiều kinh nghiệm và vỡ ra nhiều vấn đề.
============
BÀI 4. KIỂU TUPLE VÀ DICTIONARY
Dưới đây là phần tóm tắt. Giải thích chi tiết được trình bày trong các hình gửi kèm.
1) Kiểu list chứa đựng một tập các phần từ được sắp đặt có trình tự, nhờ đó có thể truy xuất bằng "vị trí" của chúng. Ký pháp của list là dấu ngoặc vuông [ ].
2) Kiểu tuple cũng tương tự như kiểu list, cũng là tập phần tử được sắp đặt có trình tự và cũng được truy xuất bằng "vị trí". Ký pháp của tuple là dấu ngoặc tròn ( ).
3) Khác biệt giữa list và tuple là: list cho điều chỉnh các phần tử như thay thế, bổ sung thêm, xóa bớt đi còn tuple thì không.
4) Điểm quan trọng cần chú ý là chúng đều cho truy xuất bằng vị trí, nghĩa là chúng đánh số vị trí, bắt đầu bằng 0 cho đến vị trí len()-1. len() là hàm cho biết chiều dài của list hay tuple.
5) Cũng cần nhớ là mặc dù list dùng ký pháp [ ] còn tuple dùng ký pháp ( ) nhưng khi truy xuất, chúng đều dùng chung ký pháp [ ], chẳng hạn lst[4] (phần tử thứ 5 của lst) và tpl[2] (phần tử thứ 3 của tpl).

6) Python cũng có sẵn một kiểu tương tự như list và tuple, đó là dictionary. Trong dictionary, mỗi phần tử là một cặp key:value. Nhờ đó, thay vì truy xuất bằng "vị trí", chúng ta có thể truy xuất bằng key, chẳng hạn dic['name'], giống như chúng ta truy xuất một từ trong từ điển.
7) Điểm giống nhau giữa list và dictionary là: chúng đều cho phép điều chỉnh, nghĩa là cho thay thế, bổ sung, xóa bớt các phần tử. Hai kiểu này cung cấp 2 phương tiện truy xuất khác nhau cho chúng ta: list cho truy xuất bằng vị trí, dictionary cho truy xuất bằng key.
8) Cuối cùng, một điểm quan trọng nữa cần nhớ: các phần tử trong list, tuple, dictionary không nhất thiết phải cùng loại mà có thể là các loại khác nhau: string, integer, float, list, tuple, dictionary, nghĩa là bên trong list, tuple, dictionary có thể có lẫn lộn các kiểu khác nhau, hoặc lồng cả list, tuple hoặc dictionary.
9) Nguyên tắc là vậy, nhưng trong thực tế, Python khuyến cáo dùng list cho những phần tử "cùng kiểu", dùng tuple và dictionary cho những phần tử "khác kiểu".
========Liên hệ =======

Comments