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

157 62 0
giáo trình ngôn ngữ lập trình C

Đ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ớ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 hố để đá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 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 Nguy?n H?u Tu?n CuuDuongThanCong.com https://fb.com/tailieudientucntt 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 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ự, 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 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ừ 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 CuuDuongThanCong.com https://fb.com/tailieudientucntt 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ậ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 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 đặ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 Các tên sai delta x1 _step GAMA : 3MN Ký tự số m#2 Sử dụng ký tự # f(x) Sử dụng dấu ( ) CuuDuongThanCong.com https://fb.com/tailieudientucntt 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 1.4 Kiểu liệu : Trong C sử dụng các kiểu 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 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 liệu char : kiểu signed char unsigned char Kiểu Phạm vi biểu diễn Số ký tự Kích thước Char ( Signed char ) Unsigned char -128 đến 127 256 byte đến 255 256 byte CuuDuongThanCong.com https://fb.com/tailieudientucntt 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; Nhưng ch1 ch2 biểu diễn 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 ( 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ự đư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 khơng in ( 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 bảng : Kiểu int unsigned int long unsigned long 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 CuuDuongThanCong.com https://fb.com/tailieudientucntt Chú ý : Kiểu ký tự 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 bảng : Kiểu Phạm vi biểu diễn Số chữ số Kích thước có nghĩa 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 Float Giải thích : Máy tính lưu trữ 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 xem Phạm vi biểu diễn số double hiểu theo nghĩa tương tự 1.5 Định nghĩa kiểu TYPEDEF : 1.5.1 Cơng dụng : Từ khố typedef dùng để đặt tên cho kiểu liệu Tên kiểu 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 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ừ khố 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 nguyen Sau ta dùng kiểu nguyen để khai báo biến, mảng int ví dụ sau ; CuuDuongThanCong.com https://fb.com/tailieudientucntt 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 đại lượng mà giá trị khơng thay đổi q 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 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ụ : CuuDuongThanCong.com https://fb.com/tailieudientucntt #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 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 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 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ệ 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ị 3*8*8+4*8+5=229 1.6.2.4 Hằng int hệ 16 : Trong hệ ta sử dụng 16 ký tự : 0,1 ,9,A,B,C,D,E,F CuuDuongThanCong.com https://fb.com/tailieudientucntt Cách viết Giá trị a A 10 b B 11 c C 12 d D 13 e E 14 f 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ị Giá trị chúng hệ 10 : 10*16+5=165 1.6.2.5 Hằng ký tự : Hằng ký tự ký tự riêng biệt 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 tốn 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ự viết theo cách sau : ' \c1c2c3' CuuDuongThanCong.com https://fb.com/tailieudientucntt 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 ký tự 'a' viết 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 (chuyển 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 ký tự null ) có mã ASCII Hằng ký tự thực số ngun, dùng số nguyên hệ 10 để biểu diễn ký tự, ví dụ lệnh printf("%c%c",65,66) 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ự lưu trữ máy 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 xem dấu hiệu kết thúc xâu ký tự ) 10 CuuDuongThanCong.com https://fb.com/tailieudientucntt Ví dụ : setviewport(100,50,200,150,1); Lập nên vùng viewport hình chữ nhật có toạ độ góc trái cao (100,50) toạ độ góc phải thấp (200,150) (là toạ độ trước đặt viewport) Chú ý : Sau lập viewport, ta có hệ toạ độ mà góc bên trái có toạ độ (0,0) ● Nhận diện viewport hành : Để nhận viewport thời ta dùng hàm : void getviewsetting(struct viewporttype *vp); kiểu viewporttype định nghĩa sau : struct viewporttype { int left,top,right,bottom; int clip; }; ● Xóa viewport : Sử dụng hàm : void clearviewport(void); ● Xố hình, đưa chạy tạo độ (0,0) hình : Sử dụng hàm : void cleardevice(void); ● Toạ độ âm dương : Nhờ sử dụng viewport viết chương trình đồ hoạ theo toạ độ âm dương Muốn ta thiết lập viewport cho clip để vẽ ngồi giới hạn viewport 143 CuuDuongThanCong.com https://fb.com/tailieudientucntt Sau đoạn chương trình thực công việc : int xc,yc; xc=getmaxx()/2; yc=getmaxy()/2; setviewport(xc,yc,getmaxx(),getmaxy(),0); Như thế, hình chia làm bốn phần với toạ độ âm dương sau : Phần tư trái : x âm, y âm x : từ -getmaxx()/2 đến y : từ -getmaxy()/2 đến Phần tư trái : x âm, y dương x : từ -getmaxx()/2 đến y : từ đến getmaxy()/2 Phần tư phải : x dương, y âm x : từ đến getmaxx()/2 y : từ -getmaxy()/2 đến Phần tư phải : x dương, y dương x : từ đến getmaxx()/2 y : từ đến getmaxy()/2 Ví dụ : Chương trình vẽ đồ thị hàm sin x hệ trục toạ độ âm dương Hoành độ x lấy giá trị từ -4 đến Trong chương trình có sử dụng hai hàm settextjustify outtextxy ta đề cập phần sau #include "graphics.h" #include "conio.h" #include "math.h" #define TYLEX 20 #define TYLEY 60 main() { int mh=mode=DETECT; 144 CuuDuongThanCong.com https://fb.com/tailieudientucntt int x,y,i; initgraph(mh,mode,""); if (graphresult!=grOK ) exit(1); setviewport(getmaxx()/2,getmaxy()/2,getmaxx(),getmaxy(),0); setbkcolor(BLUE); setcolor(YELLOW); line(-getmaxx()/2,0,getmaxx()/2,0); line(0,-getmaxy()/2,0,getmaxy()/2,0); settextjustify(1,1); setcolor(WHITE); outtextxy(0,0,"(0,0)"); for (i=-400;i

Ngày đăng: 26/12/2019, 20:14

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