Nội dung chương 1 có thể giúp người học: Phân biệt sự khác nhau giữa câu lệnh, chương trình và phần mềm; biết được quá trình hình thành ngôn ngữ C; biết được khi nào dùng C và tại sao; nắm được cấu trúc ngôn ngữ C; hiểu rõ khái niệm giải thuật (algorithms); vẽ lưu đồ (flowchart); sử dụng được các ký hiệu dùng trong lưu đồ.
Khái niệm C Chương Mục Tiêu Phân biệt khác Câu lệnh, Chương trình Phần mềm Biết trình hình thành ngôn ngữ C Biết dùng C Nắm cấu trúc ngôn ngữ C Hiểu rõ khái niệm giải thuật (algorithms) Vẽ lưu đồ (flowchart) Sử dụng ký hiệu dùng lưu đồ Lập trình C/Chương 1/ of 26 Phần mềm, chương trình, câu lệnh Software Program Comman ds Program Comman ds Comman ds Lập trình C/Chương 1/ of 26 Bắt đầu C BPCL – Martin Richards B – Ken Thompson C – Dennis Ritchie Lập trình C/Chương 1/ of 26 Lịch sử C C Unix có chung nguồn gốc C ban đầu xây dựng cài đặt hệ điều hành Unix máy tính PDP-11 Dennis Ritchie tác giả C (1971) Năm 1973 Unix viết lại C BCPL (giữa năm-60s) hay B (1970, cắt gọn BCPL) tiền thân C (khơng có A) BCPL B ngôn ngữ không định kiểu, C ngơn ngữ định kiểu Lập trình C/Chương 1/ of 26 Lịch sử C Năm 1978 - Kernighan & Ritchie (1st edition) công bố phiên chuẩn C "K&R C“ Năm 1983, Viện tiêu chuẩn quốc gia Mỹ American National Standards Institute (ANSI) thành thập ủy ban để làm rõ chuẩn hóa ngơn ngữ Năm1988, ANSI C cơng bố phiên Năm 1990, ISO thông qua ANSI C không thay đổi – chuẩn quốc tế Điều mang đến lợi ích lớn tính khả chuyển See http://cm.bell-labs.com/cm/cs/who/dmr/chist.html for more details Lập trình C/Chương 1/ of 26 Các lĩnh vực ứng dụng C C dùng để lập trình hệ thống Một chương trình hệ thống làm thành phần hệ điều hành tiện ích hỗ trợ hệ điều hành Hệ điều hành (Operating Systems), trình thơng dịch (Interpreters), trình soạn thảo (Editors), trình Hợp Ngữ (Assembly) gọi chương trình hệ thống Lập trình C/Chương 1/ of 26 Ngôn ngữ cấp trung Ngôn ngữ cấp cao C Ngơn ngữ hợp ngữ Lập trình C/Chương 1/ of 26 Ngơn ngữ có cấu trúc C cho phép tổng hợp mã lệnh liệu Nó có khả tập hợp ẩn tất thông tin, lệnh khỏi phần cịn lại chương trình để dùng cho tác vụ riêng Chương trình C chia nhỏ thành hàm (functions) hay khối mã (code blocks) Lập trình C/Chương 1/ of 26 Đặc điểm C C có 32 từ khóa Những từ khóa kết hợp với cú pháp C hình thành ngơn ngữ C Các quy tắc áp dụng cho chương trình C• Tất từ khóa chữ thường • Ðoạn mã chương trình C main() { có phân biệt chữ thường, chữ hoa, while khác DO WHILE •Từ khóa khơng thể dùng đặt tên biến (variable name) tên hàm (function name) /* This is a sample Program*/ int i,j; i=100; j=200; : } Lập trình C/Chương 1/ 10 of 26 Các bước lập trình giải vấn đề Phịng học Giải thuật gồm tập hợp bước thực nhằm giải vấn đề Thí dụ sau mơ tả giải thuật Rời phịng học Ðến cầu thang Xuống tầng hầm Ðây bước thực hiên người muốn đến quán ăn tự phục vụ từ phòng học Ði đến quán ăn tự phục vụ Cafeteria Lập trình C/Chương 1/ 17 of 26 Giải vấn đề Ðể giải vấn đề Hiểu vấn đề rõ ràng Thu thập thông tin thích hợp Xử lý thơng tin Ðạt kết Lập trình C/Chương 1/ 18 of 26 Mã giả (Pseudocode) Không mã thật Một phương pháp viết giải thuật sử dụng tập hợp từ tương tự mã thật BEGIN DISPLAY ‘Hello World !’ END Mỗi đoạn mã giả phải bắt đầu với từ BEGIN Ðể hiển thị giá trị đó, từ DISPLAY dùng Mã giả kết thúc với từ END Lập trình C/Chương 1/ 19 of 26 Lưu đồ (Flowcharts) Lưu đồ hình ảnh minh hoạ cho giải thuật START DISPLAY ‘Hello World !’ STOP Lập trình C/Chương 1/ 20 of 26 Biểu tượng lưu đồ Lập trình C/Chương 1/ 21 of 26 Lưu đồ cộng hai số Lập trình C/Chương 1/ 22 of 26 Cấu trúc IF S TAR T BEGIN INPUT num r = num MOD IF r=0 Display “Number is even” END IF END IN P U T n u m r = n u m M OD r =0 Yes No D IS P L AY "N u m b e r i s E ve n " S TOP Lập trình C/Chương 1/ 23 of 26 Cấu trúc IF…ELSE S TA RT BEGIN INPUT num r=num MOD IF r=0 DISPLAY “Even Number” ELSE DISPLAY “Odd Number” END IF END INP UT num r = num M O D Yes r=0 DIS P LAY "Num ber is E ven" No DIS PLA Y "Num ber is O dd" S TOP Lập trình C/Chương 1/ 24 of 26 Ða điều kiện sử dụng AND/OR BEGIN INPUT yearsWithUs INPUT bizDone IF yearsWithUs >= 10 AND bizDone >=5000000 DISPLAY “Classified as an MVS” ELSE DISPLAY “A little more effort required!” END IF END Lập trình C/Chương 1/ 25 of 26 Cấu trúc IF lồng BEGIN INPUT yearsWithUs INPUT bizDone IF yearsWithUs >= 10 IF bizDone >=5000000 DISPLAY “Classified as an MVS” ELSE DISPLAY “A little more effort required!” END IF ELSE DISPLAY “A little more effort required!” END IF END Lập trình C/Chương 1/ 26 of 26 Cấu trúc IF lồng (tt.) START INPUT YearsWithUs INPUT bizDone YES YearsWithUs >= 10 NO DISPLAY “A Little more effort required” NO bizDone > 5000000 YES DISPLAY “A Little more effort required” DISPLAY “Classified as an MVS” STOP Lập trình C/Chương 1/ 27 of 26 Vịng lặp S TA R T BEGIN cnt=0 WHILE (cnt < 1000) DO DISPLAY “Scooby” cnt=cnt+1 END DO END cn t= No cn t < 0 Yes D IS PL A Y " Sc o ob y " cn t= c n t+ S TOP Lập trình C/Chương 1/ 28 of 26 Bài tập Cho tam giác ABC có góc vng A cho biết cạnh a góc B Hãy viết thuật tốn để tính góc C, cạnh b cạnh c Chỉ dùng phép cộng, tính bình phương số Tính nghiệm xấp xỉ với độ xác ε = 0.000001 phương trình f(x)= ex- x3 = Lập trình C/Chương 1/ 29 of 26 Bài tập Sử dụng thuật tốn chia đơi dựa vào tính chất: hàm f liên tục đoạn [a,b] có f(a) f(b) phương trình f(x) = định thừa nhận nghiệm c nằm [a,b] Phương trình có hai nghiệm hình vẽ Vây nghiệm nhỏ đoạn [1,4] Lập trình C/Chương 1/ 30 of 26 Bài tập Ta có f(a)>0, f(b) thay a c, sau thực bước Nếu f(c) ε, quay 1, không làm tiếp Dừng, lấy c làm nghiệm Lập trình C/Chương 1/ 31 of 26 ... ob y " cn t= c n t+ S TOP Lập trình C /Chương 1/ 28 of 26 Bài tập Cho tam gi? ?c ABC c? ? g? ?c vng A cho biết c? ??nh a g? ?c B Hãy viết thuật tốn để tính g? ?c C, c? ??nh b c? ??nh c Chỉ dùng phép c? ??ng, tính... điểm kết th? ?c hàm Lập trình C /Chương 1/ 12 of 26 C? ??u tr? ?c chương trình C (tt.) Dấu kết th? ?c câu lệnh … ; Một c? ?u lệnh C kết th? ?c dấu chấm phẩy ; Trình biên dịch C khơng hiểu vi? ?c xuống dịng,... Một c? ?u lệnh không kết th? ?c dấu chấm phẩy xem dòng lệnh lỗi C Lập trình C /Chương 1/ 13 of 26 C? ??u tr? ?c chương trình C (tt.) /*Dịng thích*/ Những thích thường viết để mơ tả c? ?ng vi? ?c lệnh đ? ?c biệt,