Giáo trình lập trình ngôn ngữ C doc

298 400 1
Giáo trình lập trình ngôn ngữ C doc

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Giáo trình Lập trình ngôn ngữ C Bài 1 Mục t i K ế t th ú ¾ P h ¾ Bi ế ¾ N ê ¾ N ắ ¾ Hi ¾ V ẽ ¾ Li ệ Giới t h Ngày n điều h ư nghệ T viên c ầ Ðầu ti (Progr a 1.1 R Khi m ộ hình. Ð tính. H máy t này, h ệ đưa ra hay n h lệnh t ạ Để rõ h sữa dâ u sau : 1. 2. 3. Bây gi Chúng ¾ ¾ 1 i êu: ú c bài học nà y h ân biệt sự kh á ế t được quá t r ê n dùng C kh i ắ m được c ấ u t ể u rõ khái ni ệ ẽ lưu đ ồ (flo w ệ t kê các ký h h iệu n ay, khoa họ c ư ớng sự phá t T hông tin và l ầ n phải bi ế t. V ên chúng ta a m) và Ph ầ n m R a lệnh cho m ộ t máy tính đ Ð iều này diễ n H ệ điều hành ính và thi ế t l ệ đi ề u hành p lời giải cho m h i ề u v ấ n đ ề . M ạ o thành một c h ơn, chúng t a u . Anh ta th ấy L ấ y một ít s Đổ nước é p Trộn hỗn h ợ ờ n ế u bạn củ a ta hãy phân t Lệnh đầu ti Lệnh thứ h a y , bạn có th ể: á c nhau giữa r ình hình thà n i nào và tại s a t rúc một chư ơ ệ m giải thuật w chart) h iệu dùng tro n c máy tính th t tri ể n th ế gi ớ l ập trình nói c V ì th ế , trong tìm hi ể u sự mề m (Softw a m á y tính làm đ ược khởi đ ộ n ra th ế n ào? (operating s y l ập các thôn g p hải được c ấu m ột hay nhi ề M ỗi chương t r c hương trình a hãy xem xé t y ngon miện g s ữa. p dâu vào. ợ p này và là m a chúng ta th e t ích chỉ thị (l ệ ê n : Lệnh nà y a i : Một l ầ n n ữ : Câu lệnh, C h n h C a o ơ ng t r ình C (algorithms) n g lưu đồ âm nhập vào ớ i. B ấ t cứ n g c hung. Cụ th ể giáo t r ình n à khác nhau c a re). việc ộ ng, nó sẽ tự Câu t r ả lời đ y stem) được x g s ố ban đ ầ u t u tạo từ một t u bài toán n à r ình là tập h ợ và một nhó m t một thí dụ : g và mu ố n xi n m lạnh. e o những chỉ ệ nh) ở trên y hoàn chỉnh c ữ a, lệnh này k Nhữn g k h ương trình v à mọi lĩnh vự c g ành nghề nà o ể , C là một n à y, chúng ta s c ủa những k h động thực t h đ ơn giản là n h x em như ph ầ tr ước khi tra o t ập hợp các c à o đóMọi ch ư ợ p các câu lệ n m các chương Một người b n công thức l à dẫn này, họ c c hưa ? Nó c ó k hông nói rõ k hái niệ m à Phần mềm c . Tự động h ó o cũng c ầ n p n gôn ngữ lập ẽ nghiên cứ u h ái niệm: L ệ h i một s ố ti ến h ờ vào Hệ đ i n m ề m hệ th o quy ề n cho n hương trình. ư ơng t r ình c ố n h giải quy ế t trình tạo thà n b ạn đ ế n nhà c à m. Chúng t a c ũng có th ể t ạ ó t r ả lời được nước ép dâu m cơ bản v ề ó a hiện đang p hải hi ể u bi ết t r ình c ấ p ca o u chi ti ế t cấu ệ nh (Comma n n t r ình và x u iề u hành cài đ ố ng. Ph ầ n m ề n gười dùng. Mọi chương g ắ ng đưa ra một bài toán n h một ph ầ n m c húng ta chơi a hướng dẫn c ạ o ra món sữ a câu hỏi l ấ y s ữ đ ể ‘ở đâu’. ề n g ôn n gữ là ngành ch ủ t ít nhi ề u v ề o mà mọi lập trúc n g ôn n g n d), Chương u ất kết quả r a đ ặt bên tron g ề m này khởi Để làm đượ c t r ình đ ề u c ố giải pháp ch o cụ th ể . Một n mề m. và được mờ i c ho anh ta là m a dâu tuyệt v ờ ữ a ‘ở đâu’ ?. ữ C ủ ch ố t Công t r ình g ữ C. trình a màn g máy động c đi ề u g ắ ng o một n hóm i món m như ờ i. 2 Lập trình cơ bản C May mắn là bạn của chúng ta đủ thông minh để hiểu được công thức pha chế nói trên, dù rằng còn nhiều điểm chưa rõ ràng. Do vậy nếu chúng ta muốn phổ biến cách làm, chúng ta cần bổ sung các bước như sau : 1. Rót một ly sữa vào máy trộn. 2. Đổ thêm vào một ít nước dâu ép. 3. Ðóng nắp máy trộn 4. Mở điện và bắt đầu trộn 5. Dừng máy trộn lại 6. Nế u đã trộn đều thì tắt máy, ngược lại thì trộn tiếp. 7. Khi đã trộn xong, rót hỗn hợp vào tô và đặt vào tủ lạnh. 8. Ðể lạnh một lúc rồi lấy ra dùng. So sánh hai cách hướng dẫn nêu trên, hướng dẫn thứ hai chắc chắn hoàn chỉnh, rõ ràng hơn, ai cũng có thể đọc và hiểu được. Tương tự, máy tính cũng xử lý dữ liệu dựa vào tập lệnh mà nó nhận được. Ðương nhiên các chỉ thị đưa cho máy vi tính cũng cần phải hoàn chỉnh và có ý nghĩa rõ ràng. Những chỉ thị này cần phải tuân thủ các quy tắc: 1. Tuần tự 2. Có giới hạn 3. Chính xác. Mỗi chỉ thị trong tập chỉ thị được gọi là “câu lệnh” và tập các câu lệnh được gọi là “chương trình”. Chúng ta hãy xét trường hợp chương trình hướng dẫn máy tính cộng hai số. Các lệnh trong chương trình có thể là : 1. Nhập số thứ nhất và nhớ nó. 2. Nhập số thứ hai và nhớ nó. 3. Thực hiện phép cộng giữa số thứ nhất và số thứ hai, nhớ kết quả phép cộng. 4. Hiển thị kết quả. 5. Kết thúc. Tập lệnh trên tuân thủ tất cả các quy tắc đã đề cập. Vì vậy, tập lệnh này là một chương trình và nó sẽ thực hiện thành công việc cộng hai số trên máy tính. Ghi chú: Khả năng nhớ của con người được biết đến như là trí nhớ, khả năng nhớ dữ liệu được đưa vào máy tính được gọi là “bộ nhớ”. Máy tính nhận dữ liệu tại một thời điểm và làm việc với dữ liệu đó vào thời điểm khác, nghĩa là máy tính ghi dữ liệu vào trong bộ nhớ rồi sau đó đọc ra để truy xuất các giá trị dữ liệu và làm việc với chúng. Khi khối lượng công việc giao cho máy tính ngày càng nên nhiều và phức tạp thì tất cả các câu lệnh không thể được đưa vào một chương trình, chúng cần được chia ra thành một số chương trình nhỏ hơn. Tất cả các chương trình này cuối cùng được tích hợp lại để chúng có thể làm việc với nhau. Một tập hợp các chương trình như thế được gọi là phần mềm. Mối q bằng s 1.2 N Vào đ ầ dụng l ầ Marti n người k Trong ki ể u d ữ C liên hành n C cũn g hành c trình s o hành U Trình b thể đư ợ dịch C C khi t hàm m lý dễ d 1.2.1 C C đượ c những của m á loại m nhưng ki ể u d ữ dùng c 1.2.2 C q uan hệ giữ a s ơ đồ trong h Ng ôn n g ữ C ầ u những nă m ầ n đ ầ u t r ên m n Richards ph k hởi thủy ra C khi BCPL v ữ liệu chính g k ế t chặt chẽ v n ào. C r ấ t hiệ u g được dùng đ c ủa máy tín h o ạn thảo (E d U NIX được p h b iên dịch (co ợ c biên dịch v dịch nhanh v t hực thi cũng m à chúng sẽ đ d àng mà t ố n r ấ CNgôn ng ữ c hi ể u là ng ô chức năng c ủ á y tính như b áy tính này c nó không đ ư ữ liệu. Nó ch o ho lập trình m C - Ngôn ng ữ a ba khái ni ệ h ình 1.1: Hình m 70 tại phòn g m ột hệ th ố ng át tri ể n. BCP C . v à B không h gồ m : ki ể u ký v ới hệ th ố ng u quả đ ể vi ế t c đ ể lập trình h h hay những t d itors), chươ n h át tri ể n dựa v mpiler) C có v à chạy trên m v à cho ra mã r ấ t nhanh nh đ ược tái sử d ụ ấ t ít công sức ữ bậc trun g ô n ngữ bậc tr u ủ a hợp ngữ ( n b its, bytes, đị a c ó th ể chạy t ư ợc xem nga n o phép thao t á m ức hệ th ố ng ữ cấu trúc P Command s ệ m câu lện h 1.1: Phần m ề g thí nghiệm B cài đặt hệ đ i L sau đó đã đ h ỗ trợ ki ể u d ữ tự (characte r UNIX nhưn g c ác chương t r h ệ th ố ng. Mộ t t iện ích hỗ tr ợ n g t r ình Hợp v ào C. C đa n sẵn cho h ầ u m áy khác ch ỉ đối tượng k h ư hợp ngữ ( A ụ ng cho chư ơ . u ng bởi vì n ó n gôn ngữ c ấ p a chỉ…. Hơn tr ên một loại n g hàng với n g á c trực ti ế p t r . P ro g ram 1 s h , chương tr ì ề m, chươn g t B ell, Dennis iề u hành U N đ ược Ken Th ữ liệu, thì C đ r ), ki ể u s ố ng u g không bị tr ó r ình thuộc nh i t chương trìn h ợ nó. Hệ đi ều Ngữ (Asse m n g được sử d ụ h ế t các máy ỉ c ầ n thay đ ổi h ông lỗi. A ssembly). L ậ ơ ng t r ình khá c ó k ế t hợp nh ữ th ấ p). C cho nữa, mã C r ấ máy tính k h g ôn ngữ cao r ên bits, byte s Software Comman d ì nh và phần t r ì nh và câu Ritchie đã p h N IX. C có ng u ompson phát đ ã có nhi ề u k u yên (interge r ó i buộc vào b iề u những lĩ n h hệ th ố ng c ó u hành (OS), m bly) là các c ụ ng rộng r ãi b tính. Mã lệ n i r ấ t ít hoặc k ậ p t r ình viên c c . Do đó, nh ữ ữ ng y ế u t ố c ủ phép thao tá c ấ t dễ di chuy h ác. Mặc dù C c ấ p v ề mặt k i s , word và co n Program 2 d s mềm có th ể lệnh h át tri ể n ngô n u ồ n g ố c từ n g triển thành n k i ể u dữ liệu k r ) và ki ể u s ố t ấ t cứ một m á n h vực khác n ó ý nghĩa liê n trình thông d hương t r ình h ởi vì tính hiệ u n h vi ế t b ằ ng C k hông thay đ ổ c ó th ể tạo ra ữ ng dự án lớ n ủ a những ng ô c trên những ể n nghĩa là p C có năm ki ể iể u dữ liệu. C n trỏ (pointe r 2 Command s ể được biểu n ngữ C. C đ ư g ôn ngữ BC P n gôn ngữ B, đ k hác nhau. N t hực (float). á y tính hay h ệ n hau. n quan đ ế n h ệ d ịch (Interpr e h ệ th ố ng. H ệ u quả và linh C trên máy n ổ i gì cả. Trìn h và bảo trì th ư n có th ể được ô n ngữ c ấ p c a thành phần c ơ p h ầ n m ề m vi ế ể u dữ liệu c ơ C cho phép c h r ). Vì vậy, nó s diễn ư ợc sử P L do đ ây là N hững ệ đi ề u ệ đi ề u e ters), ệ đi ề u hoạt. ày có h biên ư viện quản a o và ơ bản ế t cho ơ bản, h uy ể n được 4 Lập trình cơ bản C Thuật ngữ ngôn ngữ cấu trúc khối (block-structured language) không áp dụng với C. Ngôn ngữ cấu trúc khối cho phép thủ tục (procedures) hay hàm (functions) được khai báo bên trong các thủ tục và hàm khác. C không cho phép việc tạo hàm trong hàm nên nó không phải là ngôn ngữ cấu trúc khối. Tuy nhiên, nó được xem là ngôn ngữ cấu trúc vì nó có nhiều điểm giống với ngôn ngữ cấu trúc ALGOL, Pascal và một số ngôn ngữ tương tự khác. C cho phép có sự tổng hợp của mã lệnh và dữ liệu. Ðiều này là một đặc đi ểm riêng biệt của ngôn ngữ cấu trúc. Nó liên quan đến khả năng tập hợp cũng như ẩn dấu tất cả thông tin và các lệnh khỏi phần còn lại của chương trình để dùng cho những tác vụ riêng biệt. Ðiều này có thể thực hiện qua việc dùng các hàm hay các khối mã lệnh (Code Block). Các hàm được dùng để định nghĩa hay tách rời những tác vụ được yêu cầu trong chương trình. Ðiều này cho phép những chương trình hoạt động như trong một đơn vị thống nhất. Khối mã lệnh là một nhóm các câu lệnh chương trình được nối kết với nhau theo một trật tự logic nào đó và cũng được xem như một đơn vị thống nhất. Một khối mã lệnh được tạo bởi một tập hợp nhiều câu lệnh tuần tự giữa dấu ngoặc mở và đóng xoắn như d ưới đây: do { i = i + 1; . . . } while (i < 40); Ngôn ngữ cấu trúc hỗ trợ nhiều cấu trúc dùng cho vòng lặp (loop) như là while, do-while, và for. Những cấu trúc lặp này giúp lập trình viên điều khiển hướng thực thi trong chương trình. 1.3 Cấu trúc chương trình C C có một số từ khóa, chính xác là 32. Những từ khóa này kết hợp với cú pháp của C hình thành ngôn ngữ C. Nhưng nhiều trình biên dịch cho C đã thêm vào những từ khóa dùng cho việc tổ chức bộ nhớ ở những giai đoạn tiền xử lý nhất định. Vài quy tắc khi lập trình C như sau : - Tất cả từ khóa là chữ thường (không in hoa) - Ðoạn mã trong chương trình C có phân biệt chữ thường và chữ hoa. Ví dụ : do while thì khác với DO WHILE - Từ khóa không thể dùng cho các mục đích khác như đặt tên biến (variable name) hoặc tên hàm (function name) - Hàm main() luôn là hàm đầu tiên được gọi đến khi một chương trình bắt đầu chạy (chúng ta sẽ xem xét kỹ hơn ở phần sau) Xem xét đoạn mã chương trình: main () { /* This is a sample program */ int i = 0; i = i + 1; . . } Ghi c xem 1.3.1 Ð Chươ n main() thi. Tê n những 1.3.2 D Sau đị n ngoặc đánh d mã lệ n Hơn n ữ cho c ấu 1.3.3 D Dòng k ế t th ú phím s một h à thúc b ằ 1.3.4 D Nhữn g chươn g thúc b ằ hiệu n à sampl e Ví dụ: int a = 1.3.5 T T ấ t cả đặt C đ Khi lậ p Một h à chươn g khi s ố 1.4 B Nhữn g hiện n h ¾ So c hú: Những k như là đoạn m Ð ịnh n g hĩa H n g t r ình C đ ư . Hệ điều hà n n hàm luôn đ tham s ố (par a D ấu phân cá n h nghĩa hà m xo ắ n đóng } d ấ u đi ể m b ắ t đ n h đó. Trong đ ữ a, đ ố i với h à u trúc vòng l ặ D ấu kết thú c int i = 0 ú c b ằ ng d ấ u c s pacebar hay à ng nhưng m ỗ ằ ng d ấ u ch ấm D òn g chú th í g chú thích t h g t r ình. Trìn h ằ ng */. T r ườ n à y, toàn bộ c h e program" l à 0; // Bi ế n ‘a’ T hư viện C ( t r ình biên dị đ ặt thư viện t p t r ình, nhữn g à m (được vi ế g t r ình khi đ ư khác lại yêu c B iên dịch và g bước khác n h ư sau : ạn thảo/Xử l k hía cạnh khá c m ã mẫu, nó sẽ H àm ư ợc chia thà n n h luôn trao q đ ược theo sau a meters). ch (Delimite m sẽ là d ấ u n g sau câu lện h đầ u của một đ oạn mã mẫu à m, d ấ u ngoặ c ặ p và lệnh đi ề c câu lệnh (T 0 ; trong đoạ n h ấ m ph ẩ y (; ) m ột khoảng ỗ i câu lệnh p h m ph ẩ y được x í ch (Comme n h ường được v h biên d ịch sẽ n g hợp chú t h h ương trình s ẽ à dòng chú t h đã được kha Librar y ) ch C chứa m t rong một tậ p g hàm được c ế t bởi một lậ p ư ợc yêu c ầ u. V c ầ u tạo một t h thực thi mộ t n hau của việ c lý từ c nhau của ch ư được dùng lạ i n h từng đơn v q uy ề n đi ề u k là cặp d ấ u n g rs) g oặc xo ắ n m ở h cu ố i trong h khối mã lện h có 2 câu lện h c xo ắ n cũng d ề u kiện erminator) n mã mẫu là m ) . C không hi ể cách do dùn g h ải được k ế t x em như một n t) v i ế t đ ể mô tả không dịch c h ích có nhi ều ẽ bị coi như l h ích. Trong tr ư i báo như là m m ột thư viện h p tin (file) lớ n c hứa trong th ư p t r ình viên) V ài trình biê n h ư viện riêng t chương tr ìn c dịch một c h ư ơng t r ình C đ i trong suốt p h v ị gọi là hà m k hi ể n cho hà m g oặc đơn (). T ở {. Nó thôn g h àm chỉ ra đ i h , d ấ u ngoặc x h giữa 2 d ấ u n d ùng đ ể phân m ột câu lện h ể u việc xu ố n g g phím tab. C thúc b ằ ng d ấ câu lệnh sai. ả công việc cc húng. Tron g u dòng, ta ph l à một chú th í ư ờng hợp ch ú m ột ki ể u s ố n h àm chuẩn d ù n trong khi đ a ư viện có th ể có thể được n dịch cho ph . n h (Compili n h ương trình C đ ược xem xét h ần còn lại củ a m . Ð oạn mã m m main() khi T rong d ấ u ng o g báo đi ể m b iể m k ế t thúc x o ắ n đóng đ á n goặc xo ắ n. định những đ h (statement). g dòng dùng p C ó th ể có nhi ấ u ch ấ m ph ẩy ủ a một lệnh đ g C, chú thíc h ải chú ý ký h í ch. Trong đ o ú thích chỉ t r ê guyên (inter g ù ng cho nhữ n a s ố còn lại c h được dùng c h đặt trong th ư ép hàm được ng and Run n C từ mã ngu ồ qua đoạn m ã t a giáo trình n à m ẫu chỉ có d một chương o ặc đơn có t h ắ t đ ầ u của h à của hàm. D ấ á nh d ấ u đi ểm đ oạn mã tron g Một câu lện h p hím Enter, k ề u hơn một c y . Một câu lệ n đ ặc biệt, mộ t h b ắ t đ ầ u b ằ n g h iệu k ế t thúc o ạn m ã mẫu d ê n m ột dòng g er) n g tác vụ chu n h ứa nó trong h o nhi ề u loại ư viện và đư ợ thêm vào th ư n in g ) ồ n thành mã t t rên. Ðoạn m ã à y. d uy nh ấ t mộ t t r ình C đượ c h ể có hay khô n à m. Tương t ự ấ u ngoặc xo ắ m k ế t thúc củ a g t r ường hợp h trong C thì k hoảng tr ắ ng c âu lệnh trên n h không đư ợ t hàm hay to à g ký hiệu /* v (*/), n ế u thi ế d òng chữ "Th i ta có thể dù n n g. Một vài b nhi ề u tập ti n tác vụ khác n ợ c dùng bởi n ư viện chu ẩ n t hực thi đượ c ã này t hàm c thực ng có ự , d ấ u ắ n mở a kh ố i dùng được d ùng cùng ợ c k ế t à n bộ v à kết ế u ký i s is a n g //. b ộ cài n nhỏ. nhau. n hi ề u trong c thực 6 Lập trình cơ bản C Ta dùng một trình xử lý từ (word processor) hay trình soạn thảo (editor) để viết mã nguồn (source code). C chỉ chấp nhận loại mã nguồn viết dưới dạng tập tin văn bản chuẩn. Vài trình biên dịch (compiler) cung cấp môi trường lập trình (xem phụ lục) gồm trình soạn thảo. ¾ Mã nguồn Ðây là đoạn văn bản của chương trình mà người dùng có thể đọc. Nó là đầu vào của trình biên dịch C . ¾ Bộ tiền xử lý C Từ mã nguồn, bước đầu tiên là chuyển nó qua bộ tiền xử lý của C. Bộ tiền xử lý này sẽ xem xét những câu lệnh bắt đầu bằng dấu #. Những câu lệnh này gọi là các chỉ thị tiền biên dịch (directives). Điều này sẽ được giải thích sau. Chỉ thị tiền biên dịch thường được đặt nơi bắt đầu chương trình mặc dù nó có thể được đặt bất cứ nơi nào khác. Chỉ thị tiền biên dịch là những tên ngắn gọn được gán cho một tập mã lệnh. ¾ Mã nguồn mở rộng C Bộ tiền xử lý của C khai triển các chỉ thị tiền biên dịch và đưa ra kết quả. Ðây gọi là mã nguồn C mở rộng, sau đó nó được chuyển cho trình biên dịch C. ¾ Trình biên dịch C (Compiler) Trình biên dịch C dịch mã nguồn mở rộng thành ngôn ngữ máy để máy tính hiểu được. Nếu chương trình quá lớn nó có thể được chia thành những tập tin riêng biệt và mỗi tập tin có thể được biên dịch riêng rẽ. Ðiều này giúp ích khi mà một tập tin bị thay đổi, toàn chương trình không phải biên dịch lại. ¾ Bộ liên kết (Linker) Mã đối tượng cùng với những thủ tục hỗ trợ trong thư viện chuẩn và những hàm được dịch riêng lẻ khác k ết nối lại bởi Bộ liên kết để cho ra mã có thể thực thi được. ¾ B ộ M ã Ti ế 1.5 Chúng trước r Giả s ử chúng BƯỚ C BƯỚ C BƯỚ C BƯỚ C Thủ tụ tập hợ p Một g i giải q u Qua p h đó, k ế m ẩ u t h ộ nạp (Load e ã thực thi đư ợ ế n t r ình trên đ Các bước l ta thường g ặ rồ i sau đó m ớ ử chúng ta m u ta cần hiểu n C 1 : Rời phò n C 2 : Ð ế n c ầ u C 3 : Xu ố ng t ầ C 4 : Ði ti ế p đ c trên liệt kê p các bước n h i ải thuật (cò n u y ế t v ấ n đ ề . N h ần trên, chú n đ ế n chúng t a h ông tin đó. C # includ e Tập tin th ê Library Thư vi ệ e r) ợ c thi hành b ở đ ược mô tả q u Hình 1 ập trình giả i ặ p phải nhữn g ớ i hoạch định uố n đi từ ph ò n ó rồi tìm ra c n g thang ầ ng h ầ m ế n quán ăn t ự tập hợp các b h ư vậy gọi là n gọi là thuật N ó g ồ m một t ậ n g ta thấy rõ a c ầ n tập hợ p C u ố i cùng, ch ú e file ê m vào File ệ n ở i bộ nạp của u a lưu đ ồ 1.2 .2: Biên dịc h i qu y ết vấn đ g bài toán. Đ các bước c ần ò ng học đ ế n ác bước g iải ự phục vụ b ước thực hi ệ giải thuật (A l toán) có th ể ậ p hợp các b ư ràng đ ể giải p t ấ t cả nhữn ú ng ta cho ra S o Chư ơ C o T rìn O b Tập t L B ộ Exe c Tập hệ th ố ng. sau : h và thực thi đ ề ể giải quy ế t n n làm . quán ăn tự p qu y ết trước ệ n được xác đ l gorithm hay được định n g ư ớc giúp đạt đ quy ế t được m g thông tin l i lời giải của b o urce file ơ n g trình gốc o mpiler h biên dịch b ject File in đối tượng L inker ộ liên kết c utable File tin thực thi một chươn g n hững bài to á p hục vụ ở t ần khi thực thi c đ ịnh r õ ràng c gọi v ắ n tắt l à g hĩa như là m đ ược lời giải. m ột bài toán, i ên quan tới n b ài toán đó. t trình á n đó, chúng n g h ầ m. Ð ể t c ác bước đó: c ho việc giải à algo ). m ột thủ tục, c ô trước tiên ta n ó. Bước k ế Other Us e generat e Object F i Các tập tin t t hi khác của n dùng ta cần hiểu c hực hiện việ c quy ế t v ấ n đ ề ô ng thức ha y phải hiểu bà i sẽ là xử lý n e r- e d i le t hực ng ười c húng c này . Một y cách i toán n hững 8 Lập trình cơ bản C Giải thuật chúng ta có là một tập hợp các bước được liệt kê dưới dạng ngôn ngữ đơn giản. Rất có thể rằng các bước trên do hai người khác nhau viết vẫn tương tự nhau nhưng ngôn ngữ dùng diễn tả các bước có thể khác nhau. Do đó, cần thiết có những phương pháp chuẩn mực cho việc viết giải thuật để mọi người dễ dàng hiểu nó. Chính vì vậy , giải thuật được viế t bằng cách dùng hai phương pháp chuẩn là mã giả (pseudo code) và lưu đồ (flowchart). Cả hai phương pháp này đều dùng để xác định một tập hợp các bước cần được thi hành để có được lời giải. Liên hệ tới vấn đề đi đến quán ăn tự phục vụ trên, chúng ta đã vạch ra một kế hoạch (thuật toán) để đến đích. Tuy nhiên, để đến nơi, chúng ta phải cần thi hành những bước này thật s ự. Tương tự, mã giả và lưu đồ chỉ đưa ra những bước cần làm. Lập trình viên phải viết mã cho việc thực thi những bước này qua việc dùng một ngôn ngữ nào đó. Chi tiết về về mã giả và lưu đồ được trình bày dưới đây. 1.5.1 Mã giả (pseudo code) Nhớ rằng mã giả không phải là mã thật. Mã giả sử dụng một tập hợp những từ tương tự như mã thật nhưng nó không thể được biên dịch và thực thi như mã thật. Chúng ta hãy xem xét mã giả qua ví dụ sau.Ví dụ này sẽ hiển thị câu 'Hello World!'. Ví dụ 1: BEGIN DISPLAY 'Hello World!' END Qua ví dụ trên, mỗi đoạn mã giả phải bắt đầu với từ BEGIN hoặc START, và kết thúc vớ i từ END hay STOP. Ðể hiển thị giá trị nào đó, từ DISPLAY hoặc WRITE được dùng. Khi giá trị được hiển thị là một giá trị hằng (không đổi), trong trường hợp này là (Hello World), nó được đặt bên trong dấu nháy. Tương tự, để nhận một giá trị của người dùng, từ INPUT hay READ được dùng. Ðể hiểu điều này rõ hơn, chúng ta xem xét ví dụ 2, ở ví dụ này ta sẽ nhập hai số và máy sẽ hiển thị tổng c ủa hai số. Ví dụ 2: BEGIN INPUT A, B DISPLAY A + B END Trong đoạn mã giả này, người dùng nhập vào hai giá trị, hai giá trị này được lưu trong bộ nhớ và có thể được truy xuất như là A và B theo thứ tự. Những vị trí được đặt tên như vậy trong bộ nhớ gọi là biến. Chi tiết về biến sẽ được giải thích trong phần sau của chương này. Bước kế tiếp trong đoạn mã gi ả sẽ hiển thị tổng của hai giá trị trong biến A và B. Tuy nhiên, cũng đoạn mã trên, ta có thể bổ sung để lưu tổng của hai biến trong một biến thứ ba rồi hiển thị giá trị biến này như trong ví dụ 3 sau đây. Ví dụ 3: BEGIN INPUT A, B C D I END Một t ậ c ấ u tr ú Chúng đi ể m đ 1.5.2 Một l ư hoạt đ ộ Ð ể hi ể ‘Hello Lưu đ ồ hay S T nhiên, tương ứ = A + B I SPLAY C ậ p hợp những ú c : tu ầ n tự, c h được gọi n h đầ u tiên. Hai l Lưu đồ (Fl ư u đồ là một ộ ng trong mộ ể u đi ề u này r õ World!’. ồ gi ố ng với đ T OP. Tương t ở đây, mọi t ừ ứ ng được trì n chỉ thị hay c h ọn lựa và l ặ h ư vậy vì nh ữ l oại c ấ u trúc c owcharts) hình ảnh mi n t ti ế n trình. M õ hơn, chún g đ oạn mã giả l t ự, từ khóa D ừ khóa thì n ằ n h bày ở bản g c ác bước tro n ặ p lại. Trong đ ữ ng chỉ thị đ ư c òn lại sẽ đư ợ n h hoạ cho g M ỗi hoạt độn g g ta xem lưu đ DIS P L Hì n l à cùng b ắ t đ ầ D ISPLAY đ ư ằ m trong nhữ n g trong Hình 1 Hình 1.4: n g mã giả thì đ oạn mã giả t ư ợc thi hành ợ c đ ề cập tro n g iải thuật. Nó g như vậy đư ợ đ ồ trong hìn h START AY 'Hello W o r STO P n h 1.3: Lưu đ ầ u với từ B E ư ợc dùng đ ể h n g ký hiệu. N 1 .4. K ý hiệu tro n được gọi ch u t a vi ế t ở t r ên, tuần tự, cái n n g những chư ơ vẽ ra bi ể u đ ợ c bi ể u diễn q h 1.3 dùng h i r ld!' đ ồ E GIN hoặc S T h i ể n thị giá t r N hững ký hiệ u ng lưu đồ u ng là một c ấ chúng ta dù n n ày sau cái k ơ ng sau. đồ của lu ồ ng q ua những ký i ể n thị thông T ART, và k ết r ị nào đó đ ến u khác nhau m ấ u trúc. Có b a n g c ấ u trúc tu ầ k hác và b ắ t đ chỉ thị hay n hiệu. điệp truy ề n t t thúc với từ n người dùng m ang một ý n a loại ầ n tự. đầ u từ n hững t h ố ng END . Tuy n ghĩa [...]... tả từ bư c của chương trình trong lưu đồ mà chỉ c n c cc chín và t ừng a h ồ nh c ý nghĩa c n t thiết Chúng ta tuân theo những c u tr tuần tự, m trong đó lu r c mà uồng th c thi chương trình đi qua tất c c c i h c chỉ thị bắt đầu từ ch thị đầu tiên Chúng ta c thể bắt gặp c c điều kiệ trong chươ trình, dựa trên hỉ n c p ện ơng a c c điề kiện này hư ều ướng th c thi c a chương trình c thể rẽ... lưu đồ đư c sử dụng để viết chương trình, chúng c n đư c trình bày sao cho mọi lập trình viên hiểu chúng dễ dàng Nếu c ba lập trình viên dùng ba ngôn ngữ lập trình kh c nhau để viết mã, bài toán họ c n giải quyết phải như nhau Trong trường hợp này, mã giả đưa cho lập trình viên c thể giống nhau m c dù ngôn ngữ lập trình họ dùng và tất nhiên là c pháp c thể kh c nhau Nhưng kết quả cuối c ng là một... thi c thể đư c phân theo c c nhánh rẽ kh c nhau C u tr c lệnh như vậy gọi là c u tr c chọn lựa, điều kiện hay c u tr c rẽ nhánh C u tr c chọn c bản là c u tr c “IF” C u tr c IF …ELSE giúp lập trình viên chỉ làm so sánh đơn và sau đó th c thi c cc tùy theo kết quả c a phép so sánh là True (đúng) hay False (sai) C u tr c IF lồng nhau là c u lệnh IF này nằm trong c u lệnh IF kh c Thông thường ta c n... và quản lý hướng đi c a c a chư m iện ương trình bằn c c dòng chảy ng (flow_ _lines) Tóm tắt bài h c Phần mềm là một tập hợp c c chương trình Một chương trình là một tập hợp c c chỉ thị (lệnh) Những đoạn mã lệnh là c sở cho bất kỳ một chương trình C nào Ngôn ngữ C có 32 từ khóa C cc cần thiết để giải quyết một bài toán là nghiên c u chi tiết bài toán đó, thu thập thông tin thích hợp, xử lý thông... biên dịch nhận diện 31 con số c ý nghĩa đầu tiên cho một tên định danh thì c c câu sau sẽ hiển thị c ng một kết quả: Đây là biến testing testing Đây là biến testing testing testing C c định danh trong C có phân biệt chữ hoa và chữ thường, c thể, arena thì kh c ARENA 2.3.1 C c nguyên t c cho vi c chỉ đặt tên C c quy t c đặt tên biến kh c nhau tuỳ ngôn ngữ lập trình Tuy nhiên, vài quy ư c chuẩn đư c tuân... ++ Ch c năng Lấy đối số Tăng một giá trị Giảm một giá trị C c toán tử hai ngôi + * % / ^ Ch c năng C ng Trừ Nhân Lấy phần dư Chia Lấy số mũ Bảng 2.2: C c toán tử số h c và ch c năng C c toán tử hai ngôi Trong C, c c toán tử hai ngôi c ch c năng giống như trong c c ngôn ngữ kh c Những toán tử như +, -, * và / c thể đư c áp dụng cho hầu hết kiểu dữ liệu c sẵn trong C Khi toán tử / đư c áp dụng cho... kh c nhau trong chương trình C Hiểu và sử dụng c c toán tử số h c Giới thiệu Bất c chương trình ứng dụng nào c n xử lý dữ liệu c ng c n c nơi để lưu trữ tạm thời dữ liệu ấy Nơi mà dữ liệu đư c lưu trữ gọi là bộ nhớ Những vị trí kh c nhau trong bộ nhớ c thể đư c x c định bởi c c địa chỉ duy nhất Những ngôn ngữ lập trình trư c đây yêu c u lập trình viên quản lý mỗi vị trí ô nhớ thông qua địa chỉ, c ng... là một chữ c i hay một dấu gạch dưới ( _ ) C c ký tự tiếp theo c thể là c c chữ c i, c c con số hay dấu gạch dưới Arena, s_count, marks40, và class_one là những định danh đúng C c ví dụ về c c định danh sai là 1sttest, oh!god, và start end C c định danh c thể c chiều dài tuỳ ý, nhưng số ký tự trong một biến đư c nhận diện bởi trình biên dịch thì thay đổi theo trình biên dịch Ví dụ, nếu một trình. .. đó th c thi c cc tùy theo kết quả c a phép so sánh là True (đúng) hay False (sai) C u tr c chung c a c u lệnh IF…ELSE như sau: IF Điều kiện 12 Lập trình c bản C Câu lệnh 1 u ELSE C u lệnh 2 u END IF C pháp c a c u tr c if…else trong C như sau: ú u ư if(Điều kiện n) { C u lệnh 1 u } else { C u lệnh 2 u } ếu t c ư c Ngư c lại, c u lệnh 2 đư c th c thi K u Không Nế điều kiện thỏa (True), c u lệnh... đư c thự thi h Do nd g à AY) c 1000 lần Nhữn c u lệnh này c ng với c lệnh do l ng c c loop và end l loop đư c gọ là c u tr c vòng ọi lặp C u tr clặp giúp l trình viên phát triển th p òng lập n hành những ch hương trình lớ trong đó c thể ớn c yêu c u th c thi hàng ngàn c lệnh Do l u i c u loop…end loop là một dạn th c tổng quát c a vòng lặp ng q g Ví dụ sau là c c viết kh c n ch nhưng c ng dù c u . nó đư c chuyển cho trình biên dịch C. ¾ Trình biên dịch C (Compiler) Trình biên dịch C dịch mã nguồn mở rộng thành ngôn ngữ máy để máy tính hiểu đư c. Nếu chương trình quá lớn nó c thể. c u tr c khối. Tuy nhiên, nó đư c xem là ngôn ngữ c u tr c vì nó c nhiều điểm giống với ngôn ngữ c u tr c ALGOL, Pascal và một số ngôn ngữ tương tự kh c. C cho phép c sự tổng hợp c a mã. Ðiều này c thể th c hiện qua vi c dùng c c hàm hay c c khối mã lệnh (Code Block). C c hàm đư c dùng để định nghĩa hay tách rời những t c vụ đư c yêu c u trong chương trình. Ðiều này cho phép

Ngày đăng: 27/06/2014, 12:20

Từ khóa liên quan

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan