M¶ng cã thÓ ®−îc hiÓu lµ mét tËp hîp nhiÒu phÇn tö cã cïng mét kiÓu gi¸ trÞ vµ chung mét tªn.. Cã bao nhiªu kiÓu biÕn th× cã bÊy nhiªu kiÓu m¶ng.[r]
Giáo trình Ngơn ngữ lập trình C www.nhipsongcongnghe.net Giíi thiƯu Tin học ngành khoa học mũi nhọn phát triển nhanh chóng vài chục năm lại ngày mở rộng lĩnh vực nghiên cứu, ứng dụng mặt đời sống xà hội Ngôn ngữ lập trình loại công cụ giúp ngời thể vấn đề thực tế lên máy tính cách hữu hiệu Với phát triển tin học, ngôn ngữ lập trình dần tiến hoá để đáp ứng thách thức thực tế Khoảng cuối năm 1960 đầu 1970 xuất nhu cầu cần có ngôn ngữ bậc cao để hỗ trợ cho nhà tin học việc xây dựng phần mềm hệ thống, hệ điều hành Ngôn ngữ C đời từ đó, đà đợc phát triển phòng thí nghiệm Bell Đến năm 1978, giáo trình " Ngôn ngữ lập trình C " tác giả ngôn ngữ Dennish Ritchie B.W Kernighan viết, đà đợc xuất phổ biến rộng rÃi C ngôn ngữ lập trình vạn Ngoài việc C đợc dùng để viết hệ ®iỊu hµnh UNIX, ng−êi ta nhanh chãng nhËn søc mạnh C việc xử lý cho vấn đề đại tin học C không gắn với hệ điều hành hay máy nào, đà đợc gọi " ngôn ngữ lập trình hệ thống" đợc dùng cho việc viết hệ điều hành, tiện lợi cho việc viết chơng trình xử lý số, xử lý văn sở liệu Và tìm hiểu giới ngôn ngữ C từ khái niệm ban đầu Hà nội tháng 11 năm 1997 Nguyn Hu Tun Chơng khái niệm 1.1 Tập ký tự dùng ngôn ngữ C : Mọi ngôn ngữ lập trình đợc xây dựng từ ký tự Các ký tự đợc nhóm lại theo nhiều cách khác để tạo nên từ Các từ lại đợc liên kết với theo qui tắc để tạo nên câu lệnh Một chơng trình bao gồm nhiều câu lệnh thể thuật toán để giải toán Ngôn ngữ C đợc xây dựng ký tự sau : 26 chữ hoa : A B C Z 26 chữ thờng : a b c z 10 chữ số : Các ký hiệu to¸n häc : + - * / = ( ) Ký tự gạch nối : _ Các ký tự khác : , : ; [ ] {} ! \ & % # $ Dấu cách (space) dùng để tách từ Ví dụ chữ VIET NAM có ký tù, cßn VIETNAM chØ cã ký tù Chó ý : Khi viết chơng trình, ta không đợc sử dụng ký tự khác ký tự Ví dụ nh lập chơng trình giải phơng trình bậc hai ax2 +bx+c=0 , ta cần tính biệt thức Delta = b2 - 4ac, ngôn ngữ C không cho phép dùng ký tự , ta phải dùng ký hiệu khác để thay 1.2 Từ khoá : Từ khoá từ đợc sử dụng để khai báo kiểu liệu, để viết toán tử câu lệnh Bảng dới liệt kê từ khoá TURBO C : asm break case cdecl char const continue default double else enum extern far float for goto huge if int interrupt long near pascal register return short signed sizeof static struct switch tipedef union unsigned void volatile while ý nghÜa cách sử dụng từ khoá đợc đề cập sau này, ta cần ý : - Không đợc dùng từ khoá để đặt tên cho hằng, biến, mảng, hàm - Từ khoá phải đợc viết chữ thờng, ví dụ : viết từ khoá khai báo kiểu nguyên int INT 1.3 Tên : Tên khái niệm quan trọng, dùng để xác định đại lợng khác chơng trình Chúng ta có tên hằng, tên biến, tên mảng, tên hàm, tªn trá, tªn tƯp, tªn cÊu tróc, tªn nh·n, Tên đợc đặt theo qui tắc sau : Tên dÃy ký tự bao gồm chữ cái, số gạch nối Ký tự tên phải chữ gạch nối Tên không đợc trùng với khoá Độ dài cực đại tên theo mặc định 32 đợc đặt lại giá trị từ tới 32 nhờ chức : Option-Compiler-SourceIdentifier length dùng TURBO C Ví dụ : Các tên : a_1 Các tên sai delta x1 _step GAMA : 3MN Ký tự lµ sè m#2 Sư dơng ký tù # f(x) Sư dơng c¸c dÊu ( ) Trïng víi tõ kho¸ te ta Sư dơng dÊu tr¾ng Y-3 Sư dơng dÊu - Chú ý : Trong TURBO C, tên chữ thờng chữ hoa khác ví dụ tên AB khác với ab C, ta thờng dùng chữ hoa để đặt tên cho dùng chữ thờng để đặt tên cho hầu hết cho đại lợng khác nh biến, biến mảng, hàm, cấu trúc Tuy nhiên điều bắt buộc 1.4 Kiểu liệu : Trong C sử dụng các kiĨu d÷ liƯu sau : 1.4.1 KiĨu ký tù (char) : Một giá trị kiểu char chiếm byte ( bit ) biểu diễn đợc ký tự thông qua bảng mà ASCII Ví dụ : Ký tự M· ASCII 048 049 050 A 065 B 066 a 097 b 098 Cã hai kiĨu d÷ liƯu char : kiĨu signed char vµ unsigned char KiĨu Ph¹m vi biĨu diƠn Sè ký tù KÝch th−íc Char ( Signed char ) -128 ®Õn 127 256 byte ®Õn 255 256 byte Unsigned char VÝ dơ sau minh hoạ khác hai kiểu liệu : Xét đoạn chơng trình sau : char ch1; unsigned char ch2; ch1=200; ch2=200; Khi ®ã thùc chất : ch1=-56; ch2=200; Nhng ch1 ch2 biĨu diƠn cïng mét ký tù cã m· 200 Ph©n lo¹i ký tù : Cã thĨ chia 256 ký tù làm ba nhóm : Nhóm 1: Nhóm ký tự điều khiển có mà từ đến 31 Chẳng hạn ký tự mà 13 dùng để chuyển trỏ đầu dòng, ký tự 10 chuyển trỏ xuống dòng dới ( cột ) Các ký tự nhóm nói chung không hiển thị hình Nhóm : Nhóm ký tự văn có mà từ 32 đến 126 Các ký tự đợc đa hình máy in Nhóm : Nhóm ký tự đồ hoạ có mà số từ 127 đến 255 Các ký tự đa hình nhng không in đợc ( lệnh DOS ) 1.4.2 Kiểu nguyên : Trong C cho phÐp sư dơng sè nguyªn kiĨu int, số nguyên dài kiểu long số nguyên không dấu kiểu unsigned Kích cỡ phạm vi biểu diễn chúng đợc bảng dới : Kiểu Phạm vi biểu diễn Kích thớc -32768 đến 32767 byte ®Õn 65535 byte -2147483648 ®Õn 2147483647 byte ®Õn 4294967295 byte int unsigned int long unsigned long Chó ý : KiĨu ký tù cịng xem dạng kiểu nguyên 1.4.3 Kiểu dấu phảy động : Trong C cho phép sử dụng ba loại liệu dấu phảy động, float, double long double Kích cỡ phạm vi biểu diễn chúng đợc bảng dới : Kiểu Phạm vi biểu diễn Số chữ số KÝch th−íc cã nghÜa Float 3.4E-38 ®Õn 3.4E+38 ®Õn byte Double 1.7E-308 ®Õn 1.7E+308 15 ®Õn 16 byte long double 3.4E-4932 ®Õn 1.1E4932 17 ®Õn 18 10 byte Giải thích : Máy tính lu trữ đợc số kiểu float có giá trị tuyệt đối từ 3.4E-38 đến 3.4E+38 Các số có giá trị tuyệt đối nhỏ hơn3.4E-38 đợc xem Phạm vi biểu diễn số double đợc hiểu theo nghĩa tơng tự 1.5 Định nghĩa kiểu TYPEDEF : 1.5.1 Công dụng : Từ khoá typedef dùng để đặt tên cho kiểu liệu Tên kiểu đợc dùng để khai báo liệu sau Nên chọn tên kiểu ngắn gọn để dễ nhớ Chỉ cần thêm từ khoá typedef vào trớc khai báo ta nhận đợc tên kiểu liệu dùng tên để khai báo biến, mảng, cấu tróc, vv 1.5.2 C¸ch viÕt : ViÕt tõ kho¸ typedef, sau kiểu liệu ( kiểu ), đến tên kiểu Ví dụ câu lệnh : typedef int nguyen; đặt tên kiĨu int lµ nguyen Sau nµy ta cã thĨ dïng kiểu nguyen để khai báo biến, mảng int nh− vÝ dơ sau ; nguyen x,y,a[10],b[20][30]; T−¬ng tù cho câu lệnh : typedef float mt50[50]; Đặt tên kiểu mảng thực chiều có 50 phần tử tên mt50 typedef int m_20_30[20][30]; Đặt tên kiểu mảng thực hai chiều có 20x30 phần tử tên m_20_30 Sau ta dùng kiểu khai báo : mt50 a,b; m_20_30 x,y; 1.6 H»ng : H»ng lµ đại lợng mà giá trị không thay đổi trình tính toán 1.6.1 Tên : Nguyên tắc đặt tên ta đà xem xét mục 1.3 Để đặt tên hằng, ta dùng dòng lệnh sau : #define tên giá trị Ví dụ : #define MAX 1000 Lúc này, tất tên MAX chơng trình xuất sau đợc thay 1000 Vì vậy, ta thờng gọi MAX tên hằng, biểu diễn số 1000 Một ví dụ khác : #define pi 3.141593 Đặt tên cho float pi có giá trị 3.141593 1.6.2 Các loại : 1.6.2.1 Hằng int : Hằng int số nguyên có giá trị khoảng từ -32768 đến 32767 Ví dụ : #define number1 -50 Định nghià int number1 có giá trị -50 #define sodem 2732 Định nghià int sodem có giá trị 2732 Chú ý : Cần phân biệt hai 5056 5056.0 : 5056 số nguyên 5056.0 lµ h»ng thùc 1.6.2.2 H»ng long : H»ng long số nguyên có giá trị khoảng từ -2147483648 đến 2147483647 Hằng long đợc viết theo cách : 1234L 1234l ( thêm L l vào đuôi ) Một số nguyên vợt miền xác định int đợc xem long Ví dụ : #define sl 8865056L Định nghià long sl có giá trị 8865056 #define sl 8865056 Định nghià long sl có giá trị 8865056 1.6.2.3 Hằng int hệ : Hằng int hệ đợc viết theo cách 0c1c2c3 ci số nguyên dơng khoảng từ đến Hằng int hệ luôn nhận giá trị dơng Ví dụ : #define h8 0345 Định nghià int hệ có giá trị lµ 3*8*8+4*8+5=229 1.6.2.4 H»ng int hƯ 16 : Trong hƯ nµy ta sư dơng 16 ký tù : 0,1 ,9,A,B,C,D,E,F Cách viết Giá trị a A 10 b B 11 c hc C 12 d hc D 13 e hc E 14 f hc F 15 H»ng sè hệ 16 có dạng 0xc1c2c3 hặc 0Xc1c2c3 ci số hệ 16 Ví dụ : #define h16 0xa5 #define h16 0xA5 #define h16 0Xa5 #define h16 0XA5 Cho ta hắng số h16 hệ 16 có giá trị nh Giá trị chóng hƯ 10 lµ : 10*16+5=165 1.6.2.5 H»ng ký tự : Hằng ký tự ký tự riêng biệt đợc viết hai dấu nháy đơn, ví dụ 'a' Giá trị 'a' mà ASCII chữ a Nh giá trị 'a' 97 Hằng ký tự tham gia vào phép toán nh số nguyên khác Ví dụ : '9'-'0'=57-48=9 Ví dụ : #define kt 'a' Định nghià ký tự kt có giá trị 97 Hằng ký tự đợc viết theo cách sau : ' \c1c2c3' c1c2c3 số hệ mà giá trị mà ASCII ký tự cần biểu diễn Ví dụ : chữ a có mà hệ 10 97, đổi hệ 0141 VËy h»ng ký tù 'a' cã thĨ viÕt d−íi dạng '\141' Đối với vài ký tự đặc biệt ta cần sử dụng cách viết sau ( thêm dÊu \ ) : C¸ch viÕt Ký tù '\'' ' '\"' " '\\' \ '\n' \n (chun dßng ) '\0' \0 ( null ) '\t' Tab '\b' Backspace '\r' CR ( đầu dòng ) '\f' LF ( sang trang ) Chú ý : Cần phân biệt ký tự '0' '\0' Hằng '0' ứng với chữ số có mà ASCII 48, '\0' ứng với kýtù \0 ( th−êng gäi lµ ký tù null ) cã m· ASCII lµ H»ng ký tù thùc sù số nguyên, dùng số nguyên hệ 10 để biểu diễn ký tự, vÝ dơ lƯnh printf("%c%c",65,66) sÏ in AB 1.6.2.5 H»ng xâu ký tự : Hằng xâu ký tự dÃy ký tự đặt hai dấu nháy kÐp VÝ dô : #define xau1 "Ha noi" #define xau2 "My name is Giang" Xâu ký tự đợc lu trữ máy dới dạng bảng có phần tử ký tự riêng biệt Trình biên dịch tự động thêm ký tự null \0 vào cuối xâu ( ký tự \0 đợc xem dấu hiệu kết thóc cđa mét x©u ký tù ) Chó ý : Cần phân biệt hai 'a' "a" 'a' ký tự đợc lu trữ byte, "a" xâu ký tự đợc lu trữ mảng hai phần tử : phần tử thứ chứa chữ a phần tử thứ hai chứa \0 1.7 Biến : Mỗi biến cần phải đợc khai báo trớc đa vào sử dụng Việc khai báo biến đợc thực theo mẫu sau : Kiểu liƯu cđa biÕn tªn biÕn ; VÝ dơ : int a,b,c; Khai báo ba biến int a,b,c long dai,mn; Khai báo hai biến long dai mn char kt1,kt2; Khai báo hai biến ký tự kt1 kt2 float x,y Khai báo hai biến float x y double canh1, canh2; Khai báo hai biến double canh1 canh2 Biến kiểu int nhận đợc giá trị kiểu int Các biến khác có ý nghĩa tơng tự Các biến kiểu char chứa đợc ký tự Để lu trữ đợc xâu ký tự cần sử dụng mảng kiểu char Vị trí khai báo biến : Các khai báo cần phải đợc đặt sau dấu { thân hàm cần đứng trớc câu lệnh khác Sau ví dụ khai báo biến sai : ( Khái niệm hàm cấu trúc chơng trình nghiên cứu sau này) main() { int a,b,c; a=2; int d; /* Vị trí khai báo sai */ } Khởi đầu cho biến : 10 Nếu khai báo sau tên biến ta đặt dấu = giá trị cách vừa khai báo vừa khởi đầu cho biÕn VÝ dơ : int a,b=20,c,d=40; float e=-55.2,x=27.23,y,z,t=18.98; ViƯc khëi đầu việc khai báo biến gán giá trị cho sau hoàn toàn tơng đơng Lấy địa biến : Mỗi biến đợc cấp phát mét vïng nhí gåm mét sè byte liªn tiÕp Sè hiệu byte đầu địa biến Địa biến đợc sử dụng số hàm ta nghiên cứu sau ( ví dụ nh hàm scanf ) Để lấy địa biến ta sử dụng phép toán : & tên biến 1.8 Mảng : Mỗi biến biểu diễn giá trị Để biểu diễn dÃy số hay mét b¶ng sè ta cã thĨ dïng nhiỊu biÕn nhng cách không thuận lợi Trong trờng hợp ta có khái niệm mảng Khái niệm mảng ngôn ngữ C giống nh khái niệm ma trận đại số tuyến tính Mảng đợc hiểu tập hợp nhiều phần tử có kiểu giá trị chung tên Mỗi phần tử mảng biểu diễn đợc giá trị Có kiểu biến có nhiêu kiểu mảng Mảng cần đợc khai báo để định rõ : Loại mảng : int, float, double Tên mảng Số chiều kích thớc chiều Khái niệm kiểu mảng tên mảng giống nh khái niệm kiểu biến tên biến Ta giải thích khái niệm số chiều kích thớc chiều thông qua ví dụ cụ thể dới Các khai báo : int a[10],b[4][2]; float x[5],y[3][3]; xác định mảng vµ ý nghÜa cđa chóng nh− sau : 11 Thø tự Tên mảng Kiểu mảng Số chiều Kích thớc Các phÇn tư A Int 10 a[0],a[1],a[2] a[9] B Int 4x2 b[0][0], b[0][1] b[1][0], b[1][1] b[2][0], b[2][1] b[3][0], b[3][1] X Float x[0],x[1],x[2] x[4] Y Float 3x3 y[0][0], y[0][1], y[0][2] y[1][0], y[1][1], y[1][2] y[2][0], y[2][1], y[1][2] Chú ý : Các phần tử mảng đợc cấp phát khoảng nhớ liên tiếp nhớ Nói cách khác, phần tử mảng có địa liên tiếp Trong nhớ, phần tử mảng hai chiều đợc xếp theo hàng Chỉ số mảng : Một phần tử cụ thể mảng đợc xác định nhờ số Chỉ số mảng phải có giá trị int không vợt kích thớc tơng ứng Số sè ph¶i b»ng sè chiỊu cđa m¶ng Gi¶ sư z,b,x,y đà đợc khai báo nh trên, giả sử i,j biến nguyên i=2, j=1 Khi : a[j+i-1] lµ a[2] b[j+i][2-i] lµ b[3][0] y[i][j] lµ y[2][1] Chú ý : Mảng có chiều ta phải viết có nhiêu số Vì nÕu ta viÕt nh− sau sÏ lµ sai : y[i] ( Vì y mảng chiều ) vv Biểu thức dùng làm số thực Khi phần nguyên biểu thức thực số mảng Ví dụ : a[2.5] a[2] 12 b[1.9] a[1] * Khi số vợt kích thớc mảng, máy không báo lỗi, nhng truy cập đến vùng nhớ bên mảng làm rối loạn chơng trình Lấy địa phần tử mảng : Có vài hạn chế mảng hai chiều Chẳng hạn lấy địa phần tử mảng chiều, nhng nói chung không cho phép lấy địa phần tử mảng hai chiều Nh máy sÏ chÊp nhËn phÐp tÝnh : &a[i] nh−ng kh«ng chÊp nhận phép tính &y[i][j] Địa đầu mảng : Tên mảng biểu thị địa đầu mảng Nh− vËy ta cã thÓ dïng a thay cho &a[0] Khởi đầu cho biến mảng : Các biến mảng khai báo bên thân hàm ( kể hàm main() ) gọi biến mảng cục Muốn khởi đầu cho mảng cục ta sử dụng toán tử gán thân hàm Các biến mảng khai báo bên thân hàm gọi biến mảng Để khởi đầu cho biến mảng ta áp dụng qui tắc sau : Các biến mảng khởi đầu ( lần ) vào lúc dịch chơng trình cách sử dụng biểu thức Nếu không đợc khởi đầu máy gán cho chúng giá trị Ví dụ : float y[6]={3.2,0,5.1,23,0,42}; int z[3][2]={ {25,31}, {12,13}, {45,15} { main() { 13 } Khi khởi đầu mảng không cần chØ kÝch th−íc ( sè phÇn tư ) cđa Khi đó, máy dành cho mảng khoảng nhớ đủ để thu nhận danh sách giá trị khởi ®Çu VÝ dơ : float a[]={0,5.1,23,0,42}; int m[][3]={ {25,31,4}, {12,13,89}, {45,15,22} }; Khi kích thớc mảng, kích thớc cần không nhỏ kích thớc khởi đầu Ví dụ : float m[6]={0,5.1,23,0}; int z[6][3]={ {25,31,3}, {12,13,22}, {45,15,11} }; Đối với mảng hai chiều, khởi đầu với số giá trị khởi đầu hàng khác : Ví dụ : float z[][3]={ {31.5}, {12,13}, {-45.76} }; 14 int z[13][2]={ {31.11}, {12}, {45.14,15.09} }; Khởi đầu mảng char Một danh sách ký tự Một h»ng x©u ký tù VÝ dơ : char ten[]={'h','a','g'} char ho[]='tran' char dem[10] ="van" 15 Chơng Các lệnh vào Chơng giới thiệu th viện vào/ra chuẩn tập hàm đợc thiết kế để cung cấp hệ thống vào/ra chuẩn cho chơng trình C Chúng ta không mô tả toàn th viện vào mà quan tâm nhiều đến việc nêu điều để viết chơng trình C tơng tác với môi trờng hệ điều hành 2.1 Thâm nhập vào th viện chuẩn : Mỗi tệp gốc có tham trỏ tới hàm th viện chuẩn phải chứa dòng : #include cho hàm getch(), putch(), clrscr(), gotoxy() #include cho hàm khác nh gets(), fflus(), fwrite(), scanf() gần chỗ bắt đầu chơng trình Tệp stdio.h định nghĩa macro biến hàm dùng th viện vào/ra Dùng dấu ngoặc < > thay cho dấu nháy thông thờng để thị cho trình biên dịch tìm kiếm tệp danh mục chứa thông tin tiêu đề chuẩn 2.2 Các hàm vào chuẩn - getchar() vµ putchar() - getch() vµ putch() : 2.2.1 Hµm getchar () : Cơ chế vào đơn giản đọc ký tự từ thiết bị vào chuẩn, nói chung bàn phím hình ngời sử dụng, hàm getchar() Cách dùng : Dùng câu lệnh sau : biÕn = getchar(); C«ng dơng : NhËn mét ký tự vào từ bàn phím không đa hình Hàm trả ký tự nhận đợc vµ l−u vµo biÕn VÝ dơ : int c; c = getchar() 16 2.2.2 Hàm putchar () : Để đa mét ký tù thiÕt bÞ chuÈn, nãi chung hình, ta sử dụng hàm putchar() Cách dùng : Dùng câu lệnh sau : putchar(ch); Công dụng : Đa ký tự ch lên hình vị trí trỏ Ký tự đợc hiển thị với màu trắng Ví dụ : int c; c = getchar(); putchar(c); 2.2.3 Hµm getch() : Hµm nhËn mét ký tự từ đệm bàn phím, không cho lên hình Cách dùng : Dùng câu lệnh sau : getch(); Công dụng : Nếu có sẵn ký tự đệm bàn phím hàm nhận ký tự Nếu đệm rỗng, máy tạm dừng Khi gõ ký tự hàm nhận ký tự ( không cần bấm thêm phím Enter nh hàm nhập khác ) Ký tự vừa gõ không lên hình Nếu dùng : biến=getch(); Thì biến chứa ký tự đọc vào 17 VÝ dơ : c = getch(); 2.4 Hµm putch() : Cách dùng : Dùng câu lệnh sau : putch(ch); Công dụng : Đa ký tự ch lên hình vị trí trỏ Ký tự đợc hiển thị theo màu xác định hàm textcolor Hàm trả ký tự đợc hiển thị 2.3 Đa kết lên hình - hàm printf : Cách dùng : prinf(điều khiển, đối số 1, đối số 2, ); Hàm printf chuyển, tạo khuôn dạng in đối thiết bị chuẩn dới điều khiển xâu điều khiển Xâu điều khiển chứa hai kiểu đối tợng : ký tự thông thờng, chúng đợc đa trực tiếp thiết bị ra, đặc tả chuyển dạng, đặc tả tạo việc đổi dạng in đối tiếp sau printf Chuỗi điều khiển có ký tự điều khiển : \n sang dòng \f sang trang míi \b lïi l¹i mét b−íc \t dấu tab Dạng tổng quát đặc tả : %[-][fw][.pp]ký tự chuyển dạng Mỗi đặc tả chuyển dạng đợc ®−a vµo b»ng ký tù % vµ kÕt thóc bëi ký tự chuyển dạng Giữa % ký tự chun d¹ng cã thĨ cã : 18 ... ta sư dơng 16 ký tù : 0,1 ,9,A,B ,C, D,E,F C? ?ch viết Giá trị a A 10 b hc B 11 c hc C 12 d hc D 13 e hc E 14 f hc F 15 Hằng số hệ 16 c? ? dạng 0xc 1c2 c3 h? ?c 0Xc 1c2 c3 ci số hệ 16 VÝ dô : #define h16... nhËn s? ?c m¹nh c? ?a C vi? ?c xư lý cho vấn đề đại tin h? ?c C không gắn với hệ điều hành hay máy nào, đà đ? ?c gọi " ngôn ngữ lập trình hệ thống" đ? ?c dùng cho vi? ?c viết hệ điều hành, tiện lợi cho vi? ?c viết... DÊu c? ?ch (space) dùng để tách từ Ví dụ chữ VIET NAM c? ? ký tù, c? ?n VIETNAM chØ c? ? ký tự Chú ý : Khi viết chơng trình, ta không đ? ?c sử dụng ký tự kh? ?c ký tự Ví dụ nh lập chơng trình giải phơng trình