Privacy Policy Cookie Policy Terms and Conditions BASIC – Wikipedia tiếng Việt

BASIC

Bách khoa toàn thư mở Wikipedia

BASIC là một ngôn ngữ lập trình bậc cao, đơn giản, dễ sử dụng, nhắm đến sự đơn giản trong lập trình. BASIC được xây dựng vào năm 1963 bởi các giáo sư John G. Kemeny và Thomas E. Kurtz trường trung học Dartmouth.

BASIC thường được coi như từ viết tắt cho cụm từ Beginner's All-purpose Symbolic Instruction Code trong tiếng Anh[1].

Mục lục

[sửa] Lược sử

[sửa] Bối cảnh ra đời

Cho đến những năm giữa của thập kỷ 1960, máy tính là những công cụ khá đắt giá chỉ dùng cho các công việc có mục đích đặc biêt. Với cách xử lý theo khối (batch), những máy tính trên chỉ chạy một chương trình tại một thời điểm. Tuy vậy, cho đến những năm của thập kỷ 60 giá máy tính đã hạ đủ để cho các công ty nhỏ cũng có thể mua được, và tốc độ của chúng đã tăng đến mức đa số thời gian của chúng là rỗi.

Các ngôn ngữ lập trình của thời đó thường được thiết kế giống như máy tính chạy chúng, chỉ cho các mục đích đặc thù (như xử lý các công thức khoa học, hay soạn thảo văn bản). Vì những máy chỉ xử lý một công việc như vậy có giá đắt nên có khuynh hướng chỉ quan tâm đến tốc độ xử lý của máy tính là chính. Các ngôn ngữ đặc thù đó nói chung là khó dùng và sử dụng các cú pháp khác nhau.

Tại thời điểm đó ý tưởng hệ thống chia sẻ thời gian bắt đầu trở nên phổ biến. Trong những hệ thống như vậy thời gian xử lý của máy chủ được chia nhỏ ra và mỗi người sử dụng được một thời gian ngắn tuần tự. Sự luân chuyển đó đủ nhanh để người sử dụng sẽ có cảm giác là họ được sử dụng toàn bộ máy. Theo lý thuyết, việc chia sẻ thời gian giảm thiểu được rất nhiều chi phí khi một máy tính có thể chia sẻ cho hàng trăm người dùng.

[sửa] Những năm đầu - thời đại của máy vi tính

Ngôn ngữ BASIC nguyên thủy được John Kemeny and Thomas Kurtz lập ra năm 1963 và được một nhóm sinh viên trường Dartmouth thực hiện dưới sự chỉ đạo của hai ông. BASIC cho phép sinh viên viết chương trình cho hệ thống chia sẻ thời gian Dartmouth. Với mục đích làm giảm bớt sự phức tạp của các ngôn ngữ cũ, BASIC được thiết kế để cho các thế hệ người sử dụng mới có thể tận dụng hệ thống chia sẻ thời gian để lập trình. BASIC đầu tiên này thường được nhắc đến như Dartmouth BASIC.

Tám nguyên tắc khi thiết kế BASIC:

  1. Dễ sử dụng ngay cả với người mới học.
  2. Ngôn ngữ lập trình cho mọi mục đích
  3. Cho phép các khả năng lập trình nâng cao dành riêng cho các chuyên gia mà vẫn giữ được sự đơn giản cho người mới học.
  4. Có tương tác với người dùng
  5. Các thông báo lỗi rõ ràng và thân thiện.
  6. Chạy nhanh với các chương trình nhỏ
  7. Không cần phải hiểu biết về phần cứng máy tính
  8. Đứng giữa người sử dụng và hệ điều hành

Ngôn ngữ này dựa một phần trên ngôn ngữ FORTRAN và một phần trên ngôn ngữ Algol 60, thêm vào khả năng chia sẻ thời gian, xử lý văn bản và ma trận. BASIC được cài đặt đầu tiên trên máy mainframe GE-2000 series với nhiều terminal. Khởi đầu nó là ngôn ngữ phiên dịch.

Những người thiết kế ngôn ngữ này quyết định nó vẫn nên ở phạm vi công cộng để ngôn ngữ trở nên phổ biến. Họ cũng phổ biến nó cho các trường trung học trong vùng Dartmouth và đóng góp nhiều công sức trong việc làm tăng tiến ngôn ngữ này. Kết quả là, sự hiểu biết về BASIC trở nên tương đối phổ biến cho một ngôn ngữ máy tính và BASIC đã được cung cấp bởi một số nhà sản xuất, và trở nên khá quen thuộc trên các máy vi tính mới như dòng máy DEC PDP và Data General Nova. Ở các máy này, ngôn ngữ có khuynh hướng được cung cấp như một ngôn ngữ phiên dịch, thay vì một ngôn ngữ biên dịch.

Vài năm sau khi được công bố, các chuyên gia máy tính đáng kính, đặc biệt là Edsger W. Dijkstra, bày tỏ ý kiến về việc dùng câu lệnh GOTO (câu lệnh này đã có trong nhiều ngôn ngữ kể cả BASIC), nâng cao các bài tập lập trình nghèo nàn[2] . Một vài người còn chế giễu BASIC quá chậm hoặc quá đơn giản.

[sửa] Sự phát triển bùng nổ - Kỉ nguyên máy tính gia đình

Tuy ngôn ngữ này đã được dùng trên một vài máy vi tính, nhưng việc giới thiệu máy vi tính Altair 8800 vào năm 1975 đã thực sự phổ biến BASIC. Hầu hết ngôn ngữ lập trình đều quá lớn so với bộ nhớ ít ỏi trong những máy tính này, và với việc lưu trữ chậm chạp trên băng giấy (băng audio cassette, các loại đĩa sau đó cũng không có trong nhiều năm) và với việc thiếu các ứng dụng xử lý văn bản, một ngôn ngữ nhỏ như BASIC thực sự phù hợp. BASIC cũng có lợi thế là nó khá nổi tiếng với những nhà thiết kế trẻ, những người quan tâm đến máy vi tính vào ngay thời điểm thành quả của Kemeny và Kurtz bắt đầu bị bỏ qua. Một trong những ngôn ngữ đầu tiên xuất hiện cho máy tính này là Tiny BASIC, một sự bổ sung đơn giản cho BASIC đầu tiên được viết bởi Giáo sư. Li-Chen Wang, và sau đó được chuyển sang máy Altair bởi Dennis Allison theo yêu cầu của Bob Albrecht (người sau đó đã tìm ra Dr. Dobb's Journal). Thiết kế và toàn bộ mã nguồn của Tiny BASIC đã được công bố vào năm 1976 trong DDJ.

Hình:Msxbasic.png
MSX BASIC version 3.0

Các công ty mới cố gắng theo đuổi sự thành công của MITS, IMSAI, North Star và Apple, do đó đã tạo ra một cuộc cách mạng máy tính gia đình; lúc đó, BASIC trở thành một phần chuẩn của tất cả máy tính nhưng lại rất ít có ở máy tính gia đình. Hầu hết xuất hiện với một trình thông dịch BASIC trong ROM. Sau đó, có nhiều triệu máy tính trên thế giới chạy BASIC, với một số lượng người dùng lớn hơn nhiều so với tất cả người dùng của các ngôn ngữ khác cộng lại.

Năm 1975, Micro-Soft (lúc đó chỉ có hai người - Bill GatesPaul Allen) công bố Altair BASIC. Phiên bản được viết cho máy Altair có đồng tác giả là Gates, Allen and Monte Davidoff. Các phiên bản của Microsoft BASIC sau đó bắt đầu xuất hiện trong các nền tảng khác theo bản quyền, và hàng triệu bản sao và biến thể đã sớm được sử dụng; nó trở thành một trong nhiều ngôn ngữ chuẩn của máy Apple II. Khoảng 1979, Microsoft đã thảo luận với một vài nhà bán lẻ máy vi tính, trong đó có IBM, về việc cho phép một trình thông dịch BASIC trong các máy tính của họ. Một phiên bản đã được cài trong chíp IBM PC ROM và các máy tính không dùng đĩa mềm mà tự khởi động vào BASIC.

BASIC có nhiều phiên bản hơn bất kì ngôn ngữ lập trình nào khác. Tất cả nhưng rất ít máy tính gia đình vào những năm 1980 có ROM - thường trú trình thông dịch BASIC.

BBC đã công bố BBC BASIC, được phát triển cho họ bởi Acorn Computers Ltd, kết hợp thêm nhiều từ khoá cấu trúc, cũng như truy cập trực tiếp toàn diện và linh hoạt vào hệ điều hành. Nó cũng có một trình biên dịch hợp ngữ được tích hợp hoàn toàn.

[sửa] Sự trưởng thành - Kỉ nguyên máy tính gia đình

Hình:Qb45.png
Microsoft QuickBASIC 4.5

Nhiều phiên bản BASIC mới hơn đã được sáng tạo trong thời gian này. Microsoft đã bán một vài phiên bản BASIC cho MS-DOS/PC-DOS bao gồm BASICA, GW-BASIC (một phiên bản tương thích với BASICA không cầm IBM's ROM) và Quick BASIC. Nhà phát triển Turbo Pascal Borland đã công bố Turbo BASIC 1.0 vào năm 1985 (các phiên bản kế tiếp vẫn đang được bán bởi tác giả gốc dưới tên PowerBASIC).

Những ngôn ngữ này giới thiệu nhiều sự mở rộng dành cho BASIC của máy tính gia đình, như là cải tiến thao tác chuỗi và hỗ trợ đồ hoạ, truy cập vào tập tin hệ thống và các kiểu dữ liệu được thêm vào. Quan trọng hơn là những tiện lợi trong lập trình có cấu trúc, bao gồm việc thêm cấu trúc điều khiển và các thủ tục con riêng biệt hỗ trợ các biến cục bộ.

Dù sao, khoảng nửa sau thập niên 80 của thế kỷ XX các máy tính mới phức tạp hơn nhiều. Cùng lúc đó, máy tính đã phát triển từ một sở thích của cá nhân trở thành công cụ được dùng chủ yếu cho các ứng dụng được viết bởi nhiều người khác, và việc lập trình được phổ biến rộng rãi, trở nên ít quan trọng hơn vì sự lớn dần lên về số lượng người dùng. BASIC bắt đầu mờ nhạt, dù cho một vài phiên bản vẫn tồn tại.

Sự may mắn của BASIC trở lại lần nữa cùng với việc giới thiệu Visual Basic của Microsoft. Dù vậy, thật khó khi nói rằng đây là ngôn ngữ BASIC, vì sự thay đổi quan trọng về mô hình hướng tới ngôn ngữ lập trình hướng đối tượng và lập trình theo sự kiện. Trong khi điều này có thể được cho là một sự phát triển của ngôn ngữ, vài đặc điểm của Dartmouth BASIC, như đánh số dòng và từ khoá INPUT, vẫn tồn tại.

Nhiều phiên bản BASIC khác cũng đã phát triển mạnh trong vài năm cuối, gồm Bywater BASIC, True BASIC và REALbasic. Nhiều biến thể và tài liệu khác về BASIC được tạo ra bởi những người yêu thích, những nhà phát triển chuyên môn, và những người khác, vì cũng tương đối dễ dàng để phát triển những trình thông dịch và biên dịch cho BASIC.

[sửa] Cú pháp căn bản

Cú pháp căn bản của BASIC gồm các câu lệnh được đánh dấu

[sửa] Nhãn lệnh

Nhãn lệnh là các số nguyên tăng dần viết ở đầu dòng lệnh, đóng vai trò là các số hiệu dòng lệnh dùng cho lệnh nhảy (GOTO). Ở các phiên bản mới của BASIC (chẳng hạn QBASIC), nhãn lệnh là không bắt buộc.

10  x = 2
20  y = 3
30  PRINT x + y

[sửa] Tên biến

Tên biến không phân biệt chữ hoa & chữ thường. Các biến kí tự và biến chuỗi cần có dấu $ ở cuối tên biến. Các biến số nguyên có thể dùng dấu % ở cuối tên biến.

x = 20.5
a$ = "Lap trinh BASIC"
m% = 1

[sửa] Chú thích

Dòng chú thích bắt đầu bằng chữ REM

REM Chuong trinh tinh tong day so

[sửa] Nhiều lệnh trên một dòng

Dùng dấu : để phân tách các lệnh trên cùng một dòng

x = 3  :  y = 8

[sửa] Lệnh cơ bản

[sửa] Lệnh gán

biến = giá_trị
z = SQR(x * x + y * y)
a$ = "Xin chao!"

[sửa] Lệnh INPUT

Lệnh Input dùng để nhập giá trị biến từ bàn phím.

INPUT x
INPUT "Cho gia tri cua y: ", y

[sửa] Lệnh PRINT

Lệnh này được dùng để in giá trị của biến, của biểu thức (số & chuỗi kí tự) ra tập tin, màn hình, máy in...

PRINT "Gia tri can tim la: "
PRINT x / 2

[sửa] Lệnh GOTO

GOTO Tên_nhãn_lệnh

[sửa] Điều kiện - rẽ nhánh

[sửa] LỆNH IF

IF điều_kiện THEN
  câu_lệnh
ELSE 
  câu_lệnh
END IF

[sửa] Lệnh lặp

  • LỆNH FOR
FOR biến = giá_trị_đầu TO giá_trị_cuối [STEP số]
  câu_lệnh
NEXT biến
  • LỆNH DO WHILE...LOOP
DO WHILE điều_kiện
  câu_lệnh
LOOP
  • LỆNH DO... LOOP WHILE
DO
  câu_lệnh
LOOP WHILE điều_kiện
  • Khai báo mảng
DIM X(500)
  • Khai báo hàm
FNA F(X) = X*X
  • Gọi chương trình con

Trong chương trình chính

GOSUB tên_CTC

Đoạn chương trình con khởi đầu bằng SUB và kết thúc bằng return (trở về chương trình chính.

SUB tên_CTC
...các lệnh...
RETURN

[sửa] Visual Basic

Tên tuổi của Basic gắn liền với Visual Basic.

[sửa] Ghi chú

  1. Từ viết tắt xuất phát từ tên trong một quyển sách không được công bố của Thomas Kurtz, không phải tên được nghĩ ra từ từ viết tắt như nhiều người vẫn nghĩ.
  2. đang dịch

[sửa] Tham khảo

[sửa] Các chuẩn

  • ANSI/ISO/IEC Chuẩn cho BASIC rút gọn:
    • ANSI X3.60-1978 "FOR MINIMAL BASIC"
    • ISO/IEC 6373:1984 "DATA PROCESSING - PROGRAMMING LANGUAGES - MINIMAL BASIC"
  • ANSI/ISO/IEC Chuẩn cho BASIC đầy đủ:
    • ANSI X3.113-1987 "PROGRAMMING LANGUAGES FULL BASIC"
    • ISO/IEC 10279:1991 "INFORMATION TECHNOLOGY - PROGRAMMING LANGUAGES - FULL BASIC"
  • ANSI/ISO/IEC Phụ lục các module đang định nghĩa:
    • ANSI X3.113 INTERPRETATIONS-1992 "BASIC TECHNICAL INFORMATION BULLETIN # 1 INTERPRETATIONS OF ANSI 03.113-1987"
    • ISO/IEC 10279:1991/ Amd 1:1994 "MODULES AND SINGLE CHARACTER INPUT ENHANCEMENT"

Static Wikipedia (no images)

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - en - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu -

Static Wikipedia 2007 (no images)

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - en - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu -

Static Wikipedia 2006 (no images)

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu

Static Wikipedia February 2008 (no images)

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - en - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu