(NB) Giáo trình Lập Trình căn bản gồm sáu chương chứa đựng tương đối đầy đủ các vấn đề cơ bản nhất của ngôn ngữ lập trình C, các loại ví dụ và bài tập chọn lọc cùng một số vấn đề liên quan, giúp người học có khả năng sử dụng thành thạo ngôn ngữ này trong việc giải quyết một số lớp bài toán thông dụng trong thực tế.
ỦY BAN NHÂN DÂN THÀNH PHỐ HÀ NỘI TRƢỜNG CAO ĐẲNG NGHỀ VIỆT NAM - HÀN QUỐC THÀNH PHỐ HÀ NỘI ĐẶNG MINH NGỌC (Chủ biên) LÊ TRỌNG HƢNG – NGUYỄN TUẤN HẢI GIÁO TRÌNH LẬP TRÌNH CĂN BẢN Nghề: Kỹ thuật sửa chữa, lắp ráp máy tính Trình độ: Trung cấp (Lưu hành nội bộ) Hà Nội - Năm 2021 LỜI NÓI ĐẦ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 cải tiến để đá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ừ đó, 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, xuất phổ biến rộng rãi C ngơn ngữ lập trình vạn Ngồi việ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, gọi " ngơn ngữ lập trình hệ thống" 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 Tồn giáo trình gồm sáu chương chứa đựng tương đối đầy đủ vấn đề ngơn ngữ lập trình C, loại ví dụ tập chọn lọc số vấn đề liên quan, giúp người học có khả sử dụng thành thạo ngôn ngữ việc giải số lớp tốn thơng dụng thực tế Mặc dù nhóm biên soạn có nhiều cố gắng khơng tránh thiếu sót Rất mong đồng nghiệp độc giả góp ý kiến để giáo trình hồn thiện Địa đóng góp khoa CNTT, Trường Cao Đẳng Nghề Việt Nam – Hàn Quốc, Đường Uy Nỗ – Đông Anh – Hà Nội Xin chân thành cảm ơn! Hà Nội, ngày … tháng … năm 2021 Chủ biên: Đặng Minh Ngọc MỤC LỤC LỜI NÓI ĐẦU MỤC LỤC Bài Tổng quan ngơn ngữ lập trình C 1.1 Giới thiệu lịch sử phát triển ngơn ngữ lập trình C 1.2 Cách khởi động chương trình 1.3 Hệ thống thông tin giúp đỡ Bài Các thành phần 2.1 Hệ thống ký hiệu từ khóa 2.2 Các kiểu liệu: Kiểu số, chuỗi, ký tự 11 2.3 Biến, hằng, biểu thức 13 2.4 Lệnh khối lệnh 18 2.5 Lệnh gán, lệnh xuất nhập, lệnh gán kết hợp 20 2.6 Các phép toán 29 2.7 Cách chạy chương trình 30 Bài Các lệnh có cấu trúc 31 3.1 Lệnh rẽ nhánh có điều kiện if 31 3.2 Lệnh rẽ nhánh có điều kiện switch case 33 3.3 Cấu trúc switch…case…default (switch đủ) 34 3.4 Cấu trúc vòng lặp For 38 3.5 Cấu trúc vòng lặp while 41 3.6 Cấu trúc vòng lặp while 43 Bài Hàm 52 4.1 Khái niệm hàm 52 4.2 Quy tắc xây dựng hàm 54 4.3 Sử dụng hàm 56 4.4 Nguyên tắc hoạt động hàm 57 4.5 Cách truyền tham số 58 4.6 Câu lệnh return exit 66 Bài Mảng 72 5.1 Khai báo mảng 72 5.2 Mảng tham số hàm 80 5.3 Sắp xếp mảng 85 5.4 Gán giá trị cho mảng 92 Bài Chuỗi 100 6.1 Khái niệm 100 6.2 Khai báo biến chuỗi 100 6.3 Nhập chuỗi ký tự 103 6.4 Các phép toán chuỗi ký tự 104 6.5 Các thao tác chuỗi ký tự 109 Bài Mảng biến trỏ 116 7.1 Biến trỏ 116 7.2 Sử dụng trỏ, địa cách khai báo, truy xuất liệu 117 TÀI LIỆU THAM KHẢO 123 CHƢƠNG TRÌNH MƠN HỌC Tên mơn học: Lập trình Mã số mơn học: MH 11 Thời gian môn học: 75 (Lý thuyết: 24 giờ; Thực hành, thí nghiệm, thảo luận: 46 giờ; Kiểm tra: giờ) I VỊ TRÍ, TÍNH CHẤT MƠN HỌC: - Vị trí: + Mơn học bố trí sau học sinh học xong mơn học chung, trước môn học/mô đun đào tạo chuyên môn nghề - Tính chất: + Là mơn học lý thuyết chuyên ngành bắt buộc II MỤC TIÊU MÔN HỌC: + Kiến thức: - Hiểu công dụng ngôn ngữ lập trình, hiểu cú pháp, cơng dụng câu lệnh dùng ngơn ngữ lập trình; - Phân tích chương trình: xác định nhiệm vụ chương trình (phải làm gì) + Kỹ : - Vận dụng điều kiện, trợ giúp mơi trường ngơn ngữ lập trình, chẳng hạn: thao tác biên tập chương trình, công cụ, điều khiển, thực đơn lệnh trợ giúp, gỡ rối, bẫy lỗi, v v - Viết chương trình thực chương trình máy tính + Năng lực tự chủ trách nhiệm: - Tự tin tiếp cận mã (code) chương trình; - Loại bỏ tâm lý lo sợ gặp công việc lập trình hóa III NỘI DUNG MƠN HỌC: Nội dung tổng quát phân phối thời gian: Thời gian Tên chƣơng, mục TT I II III IV V Tổng Lý Thực hành, Kiểm số thuyết Bài tập tra* Tổng quan ngơn ngữ lập trình 3 Giới thiệu lịch sử phát triển ngôn ngữ, cần thiết phải học ngơn ngữ lập trình 1 Cách khởi động chương trình 1 Cách sử dụng trợ giúp 1 Các thành phần 10 Hệ thống từ khóa kí hiệu dùng ngơn ngữ lập trình 1 Các kiểu liệu 1 Các loại biến, cách khai báo, sử dụng 1 Các toán tử 1 Lệnh khối lệnh, lệnh gán, lệnh gộp Các lệnh cấu trúc 15 Khái niệm lệnh cấu trúc 1 Các lệnh cấu trúc rẽ nhánh Các lệnh lặp Các lệnh đơn nhằm kết thúc sớm vòng lặp Hàm 17 11 Khái niệm chung 1 Hàm Các lệnh thường sử dụng hàm Mảng 10 Khái niệm mảng ngôn ngữ lập trình 1 Cú pháp khai báo mảng cách gán giá trị cho mảng Một số giải thuật xếp mảng 1 1 VI Chuỗi ký tự 10 Khái niệm chuỗi kí tự 1 Khai báo biến chuỗi Các phép toán hàm làm việc với chuỗi 10 Biến trỏ Sử dụng trỏ, địa cách khai báo, truy xuất liệu 75 24 46 VII Mảng biến trỏ Cộng * Ghi chú: Thời gian kiểm tra lý thuyết tính vào lý thuyết, kiểm tra thực hành tính thực hành 1 Bài Tổng quan ngơn ngữ lập trình C Giới thiệu: Bài nhằm cung cấp cho người học kiến thức lịch sử phát triển ngôn ngữ, ứng dụng thực tế ngôn ngữ, cách khởi động khỏi chương trình Mục tiêu - Biết ngơn ngữ có ứng dụng thực tế nào; - Biết sử dụng hệ thống trợ giúp ngơn ngữ lập trình; 1.1 Giới thiệu lịch sử phát triển ngơn ngữ lập trình C Mục tiêu: - Biết lịch sử phát triển ngôn ngữ lập trình; Vào đầu năm 70 phịng thí nghiệm Bell, Dennis Ritchie phát triển ngôn ngữ C C sử dụng lần đầu hệ thống cài đặt hệ điều hành UNIX C có nguồn gốc từ ngôn ngữ BCPL Martin Richards phát triển BCPL sau Ken Thompson phát triển thành ngơn ngữ B, người khởi thủy C Trong BCPL B không hỗ trợ kiểu liệu, C có nhiều kiểu liệu khác Những kiểu liệu gồm : kiểu ký tự (character), kiểu số nguyên (interger) kiểu số thực (float) C liên kết chặt chẽ với hệ thống UNIX khơng bị trói buộc vào máy tính hay hệ điều hành C hiệu để viết chương trình thuộc nhiều lĩnh vực khác C dùng để lập trình hệ thống Một chương trình hệ thống có ý nghĩa liên quan đến hệ điều hành máy tính hay tiện ích hỗ trợ Hệ điều hành (OS), trình thơng dịch (Interpreters), trình soạn thảo (Editors), chương trình Hợp Ngữ (Assembly) chương trình hệ thống Hệ điều hành UNIX phát triển dựa vào C C sử dụng rộng rãi tính hiệu linh hoạt Trình biên dịch (compiler) C có sẵn cho hầu hết máy tính Mã lệnh viết C máy biên dịch chạy máy khác cần thay đổi khơng thay đổi Trình biên dịch C dịch nhanh cho mã đối tượng không lỗi C thực thi nhanh hợp ngữ (Assembly) Lập trình viên tạo bảo trì thư viện hàm mà chúng tái sử dụng cho chương trình khác Do đó, dự án lớn quản lý dễ dàng mà tốn cơng sức 1.2 Cách khởi động chƣơng trình Mục tiêu: - Biết cách khởi động khỏi chương trình C; 1.2.1 Khởi Động Chƣơng Trình C Nhập lệnh dấu nhắc DOS: gõ BC ↵ (Enter) (nếu đường dẫn cài đặt lệnh path có chứa đường dẫn đến thư mục chứa tập tin BC.EXE) Nếu đường dẫn chưa cài đặt ta tìm xem thư mục BORLANDC nằm ổ đĩa Sau ta gõ lệnh sau: :\BORLANDC\BIN\BC ↵ (Enter) Nếu bạn muốn vừa khởi động BC vừa soạn thảo chương trình với tập tin có tên đặt, gõ lệnh: BC [đường dẫn], tên file cần soạn thảo có nạp lên, chưa có tạo Khởi động Windows: Bạn vào menu Start, chọn Run, bạn gõ vào hộp Open dòng lệnh nhập DOS Hoặc bạn vào Window Explorer, chọn ổ đĩa chứa thư mục BORLANDC, vào thư mục BORLANDC, vào thư mục BIN, khởi động tập tin BC.EXE Ví dụ: Bạn gõ D:\BORLANDC\BIN\BC E:\BAITAP_BC\VIDU1.CPP Câu lệnh có nghĩa khởi động BC nạp tập tin VIDU1.CPP chứa thư mục BAITAP_BC ổ đĩa E Nếu tập tin khơng có tạo 1.2.2 Thốt khỏi chƣơng trình C Ấn phím F10 (kích hoạt Menu), chọn menu File, chọn Quit; Hoặc ấn tổ hợp phím Alt – X 1.3 Hệ thống thơng tin giúp đỡ Mục tiêu: - Trình bày hệ thống trợ giúp C - Ấn phím F1 để kích hoạt hình Help - Muốn xem Help hàm soạn thảo, di chuyển trỏ đến vị trí hàm ấn tổ hợp phím Ctrl - F1 - Ấn tổ hợp phím Shift - F1 để xem danh sách mục Help - Ấn tổ hợp phím Alt - F1 để quay hình Help trước Bài Các thành phần Giới thiệu Cũng ngơn ngữ lập trình khác, ngơn ngữ lập trình c có hệ thống ký hiệu từ khóa, kiểu liệu Bài học cho người học kiến thức loại hằng, biến, lệnh, khối lệnh thực việc chạy chương trình Mục tiêu: - Hiểu vận dụng lệnh cấu trúc: cấu trúc lựa chọn, cấu trúc lặp xác định lặp vô định - Hiểu vận dụng lệnh bẻ vòng lặp - Rèn luyện thói quen suy luận logic 2.1 Hệ thống ký hiệu từ khóa Mục tiêu: - Trình bày tập kí tự dùng ngơn ngữ C - Trình bày quy tắc cần nhớ viết chương trình - Tập ký tự dùng ngơn ngữ C Mọi ngơn ngữ lập trình xây dựng từ ký tự Các ký tự nhóm lại theo nhiều cách khác để tạo nên từ Các từ lại 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 tốn Ngơn ngữ 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 có ký tự Chú ý : Khi viết chương trình, ta khơng sử dụng ký tự khác ký tự Cú pháp:memset(char *Des, int c, size_t n) - Đổi từ chuỗi số, hàm atoi(), atof(), atol() (trong stdlib.h) Để chuyển đổi chuỗi số, ta sử dụng hàm Cú pháp :int atoi(const char *s) : chuyển chuỗi thành số nguyên long atol(const char *s) : chuyển chuỗi thành số nguyên dài float atof(const char *s) : chuyển chuỗi thành số thực Nếu chuyển đổi không thành công, kết trả hàm Ngoài ra, thư viện string.h hỗ trợ hàm xử lý chuỗi khác, ta đọc thêm phần trợ giúp 6.5 Các thao tác chuỗi ký tự Mục tiêu: Trình bày thao tác chuỗi ký tự; - strlen strlen(s) : trả chiều dài chuỗi s (khơng tính ký tự null) - strcpy strncpy strcpy(s1,s2): copy chuỗi s2 vào chuỗi s1 (strcpy1.cpp) strncpy(s1,s2,n): copy n ký tự chuỗi s2 vào chuỗi s1 s1 phải có đội lớn đủ để chứa n ký tự n>strlen(s2): giống strcpy n0) strcat(doc_so,doc[donvi]); return doc_so; } int main() { int n; printf("Nhap vao mot day so: "); scanf("%d",&n); if(n==0) { printf("Khong"); } else { int tram=n%1000; n=n/1000; int ngan=n%1000; 113 n=n/1000; int trieu=n%1000; int ty=n/1000; if(ty>0) { printf("%s Ty",docso(ty)); } if(trieu>0) { printf(" %s Trieu ",docso(trieu)); } if(ngan>0) { printf(" %s Ngan ",docso(ngan)); } if(tram>0) { printf(" %s ",docso(tram)); } } getch(); } Nhập vào chuỗi sau nhập vào từ kiểm tra xem từ có xuất chuỗi hay khơng, có xuất lần #include #include #include int main() { char xau[50]; char kitukiemtra; int dem; printf("Nhap vao mot chuoi: "); 114 gets(xau); printf("Nhap vao ki tu muon kiem tra: "); scanf("%c",&kitukiemtra); for(int i=0;i