Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 97 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
97
Dung lượng
719,93 KB
Nội dung
ỦY BAN NHÂN DÂN TỈNH ĐỒNG THÁP TRƢỜNG CAO ĐẲNG CỘNG ĐỒNG ĐỒNG THÁP GIÁO TRÌNH MƠN HỌC: NGƠN NGỮ LẬP TRÌNH NGÀNH, NGHỀ: TIN HỌC ỨNG DỤNG TRÌNH ĐỘ: TRUNG CẤP (Ban hành kèm theo Quyết định số /QĐ-CĐCĐ ngày tháng năm 20… Hiệu trưởng trường Cao đẳng Cộng đồng Đồng Tháp) Đồng Tháp, năm 2017 TUYÊN BỐ BẢN QUYỀN Tài liệu thuộc loại sách giáo trình nên nguồn thơng tin phép dùng nguyên trích dùng cho mục đích đào tạo tham khảo Mọi mục đích khác mang tính lệch lạc sử dụng với mục đích kinh doanh thiếu lành mạnh bị nghiêm cấm 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 Toà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ế Giáo trình biên soạn cho đối tượng học sinh THCN, kỹ thuật viên tin học, nhiên tài liệu tham khảo bổ ích cho bậc đại học người quan tâm cố gắng nhiều trình biên soạn giáo trình này, chắn khơng tránh khỏi có thiếu sót Rất mong nhận ý kiến đóng góp độc giả đồng nghiệp để giáo trình ngày hoàn thiện Và tìm hiểu giới ngơn ngữ C từ khái niệm ban đầu MỤC LỤC TRANG LỜI NÓI ĐẦU BÀI TỔNG QUAN VỀ NGÔN NGỮ LẬP TRÌNH C 1.Giới thiệu lịch sử phát triển ngôn ngữ lập trình C Cách khởi động chương trình Hệ thống thông tin giúp đỡ BÀI CÁC THÀNH PHẦN CƠ BẢN Hệ thống ký hiệu từ khóa Các kiểu liệu: kiểu số, chuỗi, ký tự 10 Biến, hằng, biểu thức 12 Lệnh khối lệnh 16 Lệnh gán, lệnh xuất nhập, lệnh gán kết hợp 17 Các phép toán 24 Cách chạy chương trình 25 BÀI 26 CÁC LỆNH CÓ CẤU TRÚC 26 Lệnh rẽ nhánh có điều kiện if 26 Lệnh rẽ nhánh có điều kiện switch case 27 Cấu trúc switch case default 28 Cấu trúc vòng lặp For 31 Cấu trúc vòng lặp while 33 Cấu trúc vòng lặp while 35 BÀI 41 HÀM 41 Khái niệm hàm 41 Quy tắc xây dựng hàm 43 Sử dụng hàm 44 Nguyên tắc hoạt động hàm 45 Cách truyền tham số 46 Câu lệnh return exit 53 BÀI 58 KIỂU MẢNG 58 Khai báo mảng 58 Mảng tham số hàm 63 Sắp xếp mảng 67 Gán giá trị cho mảng 73 CHUỖI 79 Giới thiệu 79 Khái niệm 79 Khai báo biến chuỗi 79 Nhập chuỗi ký tự 81 Các phép toán chuỗi ký tự 81 Các thao tác chuỗi ký tự 85 BÀI 91 BIẾN CON TRỎ 91 Biến trỏ 91 TÀI LIỆU THAM KHẢO 97 MƠ ĐUN: LẬP TRÌNH CĂN BẢN Mã mơ đun: MH13 Vị trí, ý nghĩa, vai trị mơ đun: - Vị trí: + Mơ đun 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 chun mơn nghề - Tính chất: + Là mơ đun sở - Ý nghĩa vai trò mô đun: + Là mô đun thiếu nghề SCLR máy tính + Là mơ đun tư logic lập trình Mục tiêu mơ đun: - 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ì) - 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 - 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 Nội dung mô đun: Mã MH13-01 MH13-02 MH13-03 MH13-04 MH13-05 MH13-06 MH13-07 Tên mô đun Bài 1: Tổng quan ngơn ngữ lập trình: Bài 2: Các thành phần Bài 3: Các lệnh cấu trúc Bài 4: Hàm Bài 5: Mảng Bài 6: Chuỗi ký tự Bài 7: Mảng biến trỏ Thời lượng Tổng Lý Thực Kiểm số thuyết hành tra 02 02 08 16 20 13 13 18 02 04 08 04 04 04 06 10 10 08 08 12 02 02 01 01 02 BÀI TỔNG QUAN VỀ NGÔN NGỮ LẬP TRÌNH C Mã bài: MH 13-01 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.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 Cách khởi động chƣơng trình Mục tiêu: - Biết cách khởi động thoát khỏi chương trình C; 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 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 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 CƠ BẢN Mã bài: MH 13-02 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 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 ngồi ký tự Ví dụ lập chương trình giải phương trình bậc hai ax +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 - Từ khóa Từ khoá từ sử dụng để khai báo kiểu liệu, để viết toán tử câu lệnh Bảng 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 10 volatile while Ý nghĩa cách sử dụng từ khoá đề cập sau này, ta cần ý : - Không dùng từ khoá để đặt tên cho hằng, biến, mảng, hàm - Từ khoá phải viết chữ thường, ví dụ : viết từ khố khai báo kiểu nguyên int INT - 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 đặ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 trùng với khố Độ dài cực đại tên theo mặc định 32 đặt lại giá trị từ tới 32 nhờ chức : Option-Compiler-Source-Identifier length dùng TURBO C Ví dụ : Các tên : a_1 delta x1 _step GAMA Các tên sai : 3MN Ký tự số m#2 Sử dụng ký tự # f(x) Sử dụng 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 biến, biến mảng, hàm, cấu trúc Tuy nhiên điều bắt buộc - Một số quy tắc cần nhớ viết chƣơng trình Qui tắc cần nhớ : Mỗi câu lệnh viết hay nhiều dòng phải kết thúc dấu; Qui tắc thứ hai : Các lời giải thích cần đặt dấu /* */ viết Trên dòng Trên nhiều dòng Trên phần lại dòng Qui tắc thứ ba : Trong chương trình, ta sử dụng hàm chuẩn, ví dụ printf(), getch(), mà hàm lại chứa file stdio.h thư mục C, đầu chương trình ta phải khai báo sử dụng ; #include "stdio.h " Qui tắc thứ tƣ : Một chương trình có hàm ( hàm main() ) có thêm vài hàm khác Các kiểu liệu: kiểu số, chuỗi, ký tự Mục tiêu: - Trình bày kiểu liệu - Kiểu ký tự Ví dụ: Sử dụng hàm strlen xác định độ dài chuỗi nhập từ bàn phím #include #include #include int main(){ char Chuoi[255]; int Dodai; printf("Nhap chuoi: ");gets(Chuoi); Dodai = strlen(Chuoi) printf("Chuoi vua nhap: ");puts(Chuoi); printf(“Co dai %d”,Dodai); getch(); return 0; } - Đổi ký tự thường thành ký tự hoa - Hàm toupper() Hàm toupper() (trong ctype.h) dùng để chuyển đổi ký tự thường thành ký tự hoa Cú pháp:char toupper(char c) - Đổi chuỗi chữ thường thành chuỗi chữ hoa, hàm strupr() Hàm struppr() dùng để chuyển đổi chuỗi chữ thường thành chuỗi chữ hoa, kết trả hàm trỏ đến địa chuỗi chuyển đổi Cú pháp:char*strupr(char *s) Ví dụ: Viết chương trình nhập vào chuỗi ký tự từ bàn phím Sau sử dụng hàm strupr() để chuyển đổi chúng thành chuỗi chữ hoa #include #include #include int main() { char Chuoi[255],*s; printf("Nhap chuoi: ");gets(Chuoi); s=strupr(Chuoi) ; printf(“Chuoi chu hoa: ”);puts(s); getch(); return 0; } - Đổi chuỗi chữ hoa thành chuỗi chữ thường, hàm strlwr() Muốn chuyển đổi chuỗi chữ hoa thành chuỗi toàn chữ thường, ta sử dụng hàm strlwr(), tham số hàm tương tự hàm strupr() Cú pháp:char *strlwr(char *s) Sao chép chuỗi, hàm strcpy() Hàm dùng để chép toàn nội dung chuỗi nguồn vào chuỗi đích Cú pháp:char*strcpy(char *Des, const char *Source) Ví dụ: Viết chương trình cho phép chép tồn chuỗi nguồn vào chuỗi đích #include #include #include int main() { char Chuoi[255],s[255]; printf("Nhap chuoi: ");gets(Chuoi); strcpy(s,Chuoi); printf(“Chuoi dich: ”);puts(s); getch(); return 0; } - Sao chép phần chuỗi, hàm strncpy() Hàm cho phép chép n ký tự chuỗi nguồn sang chuỗi đích Cú pháp:char *strncpy(char *Des, const char *Source, size_t n) - Trích phần chuỗi, hàm strchr() Để trích chuỗi chuỗi ký tự ký tự định chuỗi hết chuỗi, ta sử dụng hàm strchr() Cú pháp :char *strchr(const char *str, int c) Ghi chú: - Nếu ký tự định khơng có chuỗi, kết trả NULL - Kết trả hàm trỏ, trỏ đến ký tự c tìm thấy chuỗi str - Tìm kiếm nội dung chuỗi, hàm strstr() Hàm strstr() sử dụng để tìm kiếm xuất chuỗi s2 chuỗi s1 Cú pháp: char*strstr(const char *s1, const char *s2) Kết trả hàm trỏ đến phần tử chuỗi s1 có chứa chuỗi s2 giá trị NULL chuỗi s2 khơng có chuỗi s1 Ví dụ: Viết chương trình sử dụng hàm strstr() để lấy phần chuỗi gốc chuỗi “hoc” #include #include #include int main() { char Chuoi[255],*s; printf("Nhap chuoi: ");gets(Chuoi); s=strstr(Chuoi,”hoc”); printf(“Chuoi trich ra: ”);puts(s); getch(); return 0; Hình } - So sánh chuỗi, hàm strcmp() Để so sánh hai chuỗi theo ký tự bảng mã Ascii, ta sử dụng hàm strcmp() Cú pháp:int strcmp(const char *s1, const char *s2) Hai chuỗi s1 s2 so sánh với nhau, kết trả số nguyên (số có cách lấy ký tự s1 trừ ký tự s2 vị trí xảy khác nhau) - Nếu kết số âm, chuỗi s1 nhỏ chuỗi s2 - Nếu kết 0, hai chuỗi - Nếu kết số dương, chuỗi s1 lớn chuỗi s2 So sánh chuỗi, hàm stricmp() Hàm thực việc so sánh n ký tự chuỗi s1 s2, chữ thường chữ hoa không phân biệt Cú pháp:int stricmp(const char *s1, const char *s2) Kết trả tương tự kết trả hàm strcmp() Khởi tạo chuỗi, hàm memset() Hàm sử dụng để đặt n ký tự chuỗi ký tự c 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 Ngồi ra, thư viện string.h cịn hỗ trợ hàm xử lý chuỗi khác, ta đọc thêm phần trợ giúp 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; 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: "); gets(xau); printf("Nhap vao ki tu muon kiem tra: "); scanf("%c",&kitukiemtra); for(int i=0;i