1. Trang chủ
  2. » Giáo Dục - Đào Tạo

KỸ THUẬT LẬP TRÌNH NGÔN NGỮ LẬP TRÌNH C

16 3 0

Đ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

Thông tin cơ bản

Tiêu đề Kỹ Thuật Lập Trình Ngôn Ngữ Lập Trình C
Tác giả Phạm Văn Ất, Quách Tuấn Ngọc
Trường học N/A
Chuyên ngành N/A
Thể loại Tài Liệu Tham Khảo
Năm xuất bản 1999
Thành phố N/A
Định dạng
Số trang 16
Dung lượng 505,58 KB

Nội dung

Trang 1 0KỸTHUẬT LẬP TRÌNHNGƠN NGỮ LẬP TRÌNH CTÀI LIỆU THAM KHẢOƒ Phạm Văn Ất, Kỹ thuật lập trình C cơ sở và nâng cao, NXB KH&KT, 1999.ƒ Quách Tuấn Ngọc, Ngôn ngữ lập trình C, NXBGD, 199

Trang 1

NGÔN NGỮ LẬP TRÌNH C

TÀI LIỆU THAM KHẢO

NXB KH&KT, 1999.

1

chương trình C đơn giản

2

• Do Dennis Ritchie phát triển (1972) tại phòng thí nghiệm Bell

Telephone – AT&T-USA trên cơ sở 2 ngôn ngữ lập trình trước

đó: BCPL và B

• Được sử dụng để phát triển UNIX

• Được sử dụng để viết các hệ điều hành

• Đến năm 1978, C thực sự phát triển

• Nhiều biến đổi nhỏ từ C ban đầu và không tương thích

• Chuẩn hoá ngôn ngữ trên cơ sở khả năng độc lập với phần

cứng

• Chuẩn C ban hành 1989, được cập nhật năm 1999

3

ƒ Đặc điểm

• C là ngôn ngữ mạnh và mềm dẻo: sử dụng lập trình hệ điều hành, các giải thuật phức tạp, chương trình soạn thảo, các trình điều khiển, đồ hoạ

• Ngôn ngữ cho người lập trình chuyên nghiệp: nhiều nhà tin học sử dụng, mang tính phổ biến

• Khả năng độc lập về phần cứng (khả chuyển): chạy trên các máy tính

và hệ điều hành khác nhau

• Ít từ khoá: Các từ khoá dùng riêng cho ngôn ngữ khi lập trình

• Ngôn ngữ lập trình cấu trúc

• C là ngôn ngữ bậc trung: có các tính năng ngôn ngữ bậc cao và ngôn ngữ bậc thấp (xử lý bít, byte và địa chỉ ô nhớ)

- C là ngôn ngữ cơ sở để phát triển lập trình hướng đối tượng (C++, Java, )

Trang 2

Cấu trúc cơ bản của một chương trình C

function prototype

/* 5 Khai báo các biến toàn cục */

{ Khai báo các biến;

Tập lệnh;

}

/* 7. “Các chương trình con”- các hàm */

5

Comments: Giải thích

ƒ Các ký tự nằm trong cặp /* */là chú thích

• Sử dụng để mô tả, giải thích trong chương trình

ƒ #include <stdio.h>

• Chỉ thị tiền xử lý: tải nội dung của một file thư viện vào chương trình

• <stdio.h> cho phép thực hiện các thao tác input/output chuẩn.

1 /* Fig 2.1: fig02_01.c

2 A first program in C */

3 #include <stdio.h>

4

5 /* function main begins program execution */

6 int main()

7 {

8 printf( "Welcome to C!\n" );

9

10 return 0; /* indicate that program ended successfully */

11

12 } /* end function main */

Welcome to C!

6

int main()

9 int có nghĩa là hàm main trả về một giá trị nguyên

9 Phần thân của tất cả các hàmphải nằm trong cặp “{}”

lệnh return ở cuối hàm

9 Kết thúc lệnh bởi dấu ;

7

Môi trường lập trình C

• Phases of C Programs:

1 Edit

2 Preprocess

3 Compile

4 Link

5 Load

6 Execute

Program is created in the editor and stored

on disk.

Preprocessor program processes the code.

Loader puts program

in memory.

CPU takes each instruction and executes it, possibly storing new data values as the program executes.

Compiler creates object code and stores

it on disk.

Linker links the object code with the libraries Loader

Primary Memory Compiler

Editor

Preprocessor

Linker

Primary Memory

.

.

Disk

Disk

Disk

CPU

Disk Disk

Trang 3

Các khái niệm cơ bản

9

nghĩa xác định (tên kiểu dữ liệu, toán tử, câu lệnh)

• Không dùng từ khóa để đặt tên cho hằng, biến, hàm,…

• Phân biệt chữ hoa và chữ thường

10

• Kí tự (char, unsigned char)

• Số nguyên (int, unsigned int, long (int), unsigned long (int))

• Số thực, độ chính xác đơn (float)

• Số thực, độ chính xác kép (double)

• Lưu ý: Kích thước và phạm vi biểu diễn của các kiểu dữ liệu

ƒ Kiểu cấu trúc (struct)

sizeof(), ví dụ: sizeof(int),…

11

Hằng

toán

ƒ Hằng kí tự: ‘A’, ‘a’,…

ƒ Hằng xâu kí tự: “A”

ƒ Lưu ý: phân biệt hằng kí tự và hằng xâu kí tự

• Lưu trữ ‘A’ (1 byte)

• Lưu trữ “A” (2 byte)

A

Trang 4

Biến

1 /*Ví dụ chương trình C: Cộng hai số nguyên*/

2 #include <stdio.h>

3 #include <conio.h>

4 /* function main begins program execution */

5 int main()

7 int integer1; /* first number to be input by user */

8 int integer2; /* second number to be input by user */

9 int sum; /* variable in which sum will be stored */

11 printf( "Enter first integer\n" ); /* prompt */

12 scanf( "%d", &integer1 ); /* read an integer */

13 printf( "Enter second integer\n" ); /* prompt */

14 scanf( "%d", &integer2 ); /* read an integer */

15 sum = integer1 + integer2; /* assign total to sum */

16 printf( "Sum is %d\n", sum ); /* print sum */

18 return 0; /* indicate that program ended successfully */

19 } /* end function main */

13

Biến

• Tên biến tương ứng với vị trí xác định trong bộ nhớ máy tính

• Mỗi biến gồm: một tên, kiểu dữ liệu, kích thước và giá trị

• Mỗi khi giá trị mới được gán cho biến thì giá trị trước đó sẽ được thay thế (xoá mất) Chẳng hạn khi sử dụng lệnh scanf để đọc giá trị biến

• Đọc các biến từ bộ nhớ giá trị của nó không thay đổi

chữ thường)

14

• 1 - Thứ nhất, thực hiện biểu thức, toán tử trong cặp “()”, nếu

đồng cấp, thực hiện từ trái qua phải

• 2 - Thứ hai: thực hiện phép *, / hoặc %, nếu đồng cấp thực hiện

từ trái qua phải

• 3 - Cuối cùng: phép +,-, nếu đồng cấp thực hiện từ trái qua phải

C operation Arithmetic operator Algebraic expression C expression

15

Các toán tử

Standard algebraic equality operator or relational operator

C equality or relational operator

Example of C condition

Meaning of C condition

Equality Operators

= == x == y x is equal to y

≠ != x != y x is not equal to y

Relational Operators

> > x > y x is greater than y

< < x < y x is less than y

>= >= x >= y x is greater than or equal to y

<= <= x <= y x is less than or equal to y

Trang 5

Các toán tử

17

Các toán tử

ƒ Phép gán và toán tử gán

• Biến = Biểu thức

ƒ Ví dụ về toán tử gán

d -= 4 (d = d - 4)

e *= 5 (e = e * 5)

f /= 3 (f = f / 3)

g %= 9 (g = g % 9)

ƒ Toán tử tăng (++) và Toán tử giảm (−−)

• c ++ sử dụng thay cho c += 1

• c−− sử dụng thay cho c −= 1

• Toán tử đặt trước biến: biến thay đổi giá trị trước khi biểu thức sử dụng

nó được tính toán

• Toán tử đặt sau biến: biến thay đổi giá trị sau khi biểu thức sử dụng nó được tính toán

18

Các lệnh vào/ra cơ bản

ƒ Hàm printf(): in kết quả ra màn hình

printf(“Xâu_điều_khiển_khuôn_dạng”, Danh_sách_tham_số_được_in);

scanf(“Xâu_điều_khiển_khuôn_dạng”, Danh_sách_địa_chỉ_biến);

Bài tập 1

Tìm hiểu Help, trình bày chi tiết cú pháp sử dụng hàm và cho ví dụ:

+ Xuất dữ liệu: printf, putchar, puts

+ Nhập dữ liệu: scanf, getchar, getch, gets

19

1. #include <stdio.h>

2. #include <conio.h>

6. printf( "%i\n", 455 ); /* i same as d in printf */

7. printf( "%d\n", +455 );

8. printf( "%d\n", -455 );

10. printf( "%ld\n", 2000000000 );

11. printf( "%o\n", 455 );

12. printf( "%u\n", 455 );

13. printf( "%u\n", -455 );

14. printf( "%x\n", 455 );

15. printf( "%X\n", 455 );

17. return 0; /* indicates successful termination */

455 455 455 -455 32000 2000000000 707 455 4294966841 1c7 1C7

Kết quả:

Trang 6

1 #include <stdio.h>

2 #include <conio.h>

3 int main()

6 printf( "%e\n", 1234567.89 );

7 printf( "%e\n", +1234567.89 );

8 printf( "%e\n", -1234567.89 );

9 printf( "%E\n", 1234567.89 );

10 printf( "%f\n", 1234567.89 );

11 printf( "%g\n", 1234567.89 ); //so thuc mu e

12 printf( "%G\n", 1234567.89 ); // so thuc mu E

14 return 0; /* indicates successful termination */

15 } /* end main */

1.234568e+006 1.234568e+006 -1.234568e+006 1.234568E+006 1234567.890000 1.23457e+006 1.23457E+006

21

1 #include <stdio.h>

2 #include <conio.h>

3 int main()

5 char character = 'A'; /* initialize char */

6 char string[] = "This is a string"; /* initialize char array */

7 const char *stringPtr = "This is also a string"; /* char pointer */

9 printf( "%c\n", character );

10 printf( "%s\n", "This is a string" );

11 printf( "%s\n", string );

12 printf( "%s\n", stringPtr );

14 return 0; /* indicates successful termination */

15 } /* end main */

A This is a string This is a string This is also a string

22

1. #include <stdio.h>

2. #include <conio.h>

5. int *ptr; /* define pointer to int */

9. ptr = &x; /* assign address of x to ptr */

10. printf( "The value of ptr is %p\n", ptr );

11. printf( "The address of x is %p\n\n", &x );

12. printf( "Total characters printed on this line:%n", &y );

13. printf( " %d\n\n", y );

14. y = printf( "This line has 28 characters\n" );

15. printf( "%d characters were printed\n\n", y );

16. printf( "Printing a %% in a format control string\n" );

23

The value of ptr is 0012FF78 The address of x is 0012FF78 Total characters printed on this line: 38 This line has 28 characters

28 characters were printed Printing a % in a format control string

Trang 7

1 #include <stdio.h>

2 #include <conio.h>

3 int main()

5 int i = 873; /* initialize int i */

6 double f = 123.94536; /* initialize double f */

7 char s[] = "Happy Birthday"; /* initialize char array s */

9 printf( "Using precision for integers\n" );

10 printf( "\t%.4d\n\t%.9d\n\n", i, i );

11 printf( "Using precision for floating-point numbers\n" );

12 printf( "\t%.3f\n\t%.3e\n\t%.3g\n\n", f, f, f );

13 printf( "Using precision for strings\n" );

14 printf( "\t%.11s\n", s );

16 return 0; /* indicates successful termination */

17 } /* end main */

25

Using precision for integers 0873

000000873 Using precision for floating-point numbers 123.945

1.239e+002 124 Using precision for strings Happy Birth

26

1. #include <stdio.h>

2. #include <conio.h>

3. int main()

4. {

5. int x; /* define x */

6. int y; /* define y */

8. printf( "Enter a six digit integer: " );

9. scanf( "%2d%d", &x, &y );

10. printf( "The integers input were %d and %d\n", x, y );

12. return 0; /* indicates successful termination */

13. } /* end main */

27

Cấu trúc điều khiển trong C

ƒ Cấu trúc lựa chọn: if, if…else, switch

ƒ Cấu trúc lặp: for, while, do …while

Trang 8

T F

if statement (single selection)

T F

if…else statement (double selection)

T F

đa lựa chọn

(multiple selection)

T F

T F

.

Cấu trúc lựa chọn

Seq uenc e

.

.

Cấu trúc điều khiển trong C

29

Lặp với điều kiện trước

T F

do while statement

T

F

for statement

Cấu trúc điều khiển trong C

Cấu trúc lặp

while statement

Lặp với điều kiện sau Lặp với số lần lặp cho trước

30

ƒ Ví dụ: if ( grade >= 60 ) printf( "Passed\n" );

true

false grade >= 60 print “Passed”

31

ƒ Ví dụ:

if ( grade >= 60 )

printf( "Passed\n");

else printf( "Failed\n");

true false

grade >= 60

Trang 9

ƒ Sử dụng Toán tử điều kiện ( ?: )

trị nếu false)

printf( "%s\n", grade >= 60 ? "Passed" : "Failed" );

grade >= 60 ? printf( “Passed\n” ) : printf( “Failed\n” );

33

int product = 2;

while ( product <= 1000 )

product = 2 * product;

true

false

34

ƒ Lặp được kiểm soát bằng biến đếm (Counter)

Lặp đến khi “biến đếm” đạt được giá trị định trước

• Số lần lặp xác định: số lần lặp biết trước

• Ví dụ: Tính điểm trung bình của 10 sinh viên (giả sử điểm là số

nguyên trong khoảng từ 0 đến 100)

• Viết giả lệnh: Đọc vào từ bàn phím 10 số nguyên mô tả điểm của sinh

viên và tính trung bình cộng

Đặt total bằng 0

Đặt biến đếm counter bằng 1

While counter nhỏ hơn hoặc bằng 10

Input điểm của sinh viên tiếp theo

Cộng điểm vừa đọc vào total

Tăng biến counter lên 1

Tính điểm trung bình: lấy total chia cho 10

Print kết quả điểm trung bình

1 /* Fig 3.8: fig03_08.c

2 Class average program with sentinel-controlled repetition */

3 #include <stdio.h>

4

5 /* function main begins program execution */

6 int main()

7 {

8 int counter; /* number of grades entered */

9 int grade; /* grade value */

10 int total; /* sum of grades */

11

12 float average; /* number with decimal point for average */

13

14 /* initialization phase */

15 total = 0 ; /* initialize total */

16 counter = 0 ; /* initialize loop counter */

17

18 /* processing phase */

19 /* get first grade from user */

20 printf( "Enter grade, -1 to end: " ); /* prompt for input */

21 scanf( "%d" , &grade ); /* read grade from user */

22

23 /* loop while sentinel value not yet read from user */

24 while ( grade != -1 ) {

25 total = total + grade; /* add grade to total */

26 counter = counter + 1 ; /* increment counter */

27

Trang 10

29 scanf( "%d" , &grade); /* read next grade */

30 } /* end while */

31

32 /* termination phase */

33 /* if user entered at least one grade */

34 if ( counter != 0 ) {

35

36 /* calculate average of all grades entered */

37 average = ( float ) total / counter;

38

39 /* display average with two digits of precision */

40 printf( "Class average is %.2f\n" , average );

41 } /* end if */

42 else { /* if no grades were entered, output message */

43 printf( "No grades were entered\n" );

44 } /* end else */

45

46 return ; /* indicate program ended successfully */

47

48 } /* end function main */

Program Output

Enter grade, -1 to end: 75 Enter grade, -1 to end: 94 Enter grade, -1 to end: 97 Enter grade, -1 to end: 88 Enter grade, -1 to end: 70 Enter grade, -1 to end: 64 Enter grade, -1 to end: 83 Enter grade, -1 to end: 89 Enter grade, -1 to end: -1 Class average is 82.50 Enter grade, -1 to end: -1

No grades were entered

38

Lặp kiểm soát bởi biến điều khiển (cờ):

ƒ Ví dụ vấn đề đặt ra là:

• Viết chương trình tính điểm trung bình của một lớp học mà số điểm đưa

vào là tuỳ ý và khác nhau mỗi khi chạy chương trình.

• Không biết trước số sinh viên

• Làm thế nào để biết chương trình sẽ kết thúc ?

ƒ Sử dụng giá trị điều khiển (lính gác)

• Cũng có thể gọi là giá trị tín hiệu, giá trị cờ (flag)

• Thể hiện “kết thúc lặp, tính toán xong.”

• Kết thúc lặp khi người dùng nhập vào đúng giá trị cờ

• Giá trị cờ là giá trị được chọn trước, ngoài phạm vi các giá trị vào thông

thường, chẳng hạn giá trị cờ đặt là: -1thì kết thúc lặp

39

Viết giả lệnh với 3 pha: Khởi tạo, Nhập và tính tổng điêm, Tính và in giá trị trung bình

Gán cho total giá trị 0; Gán cho biến đếm counter giá trị 0

Input điểm đầu tiên ( có thể là cờ) While người dùng chưa dựng cờ Cộng điểm vào biến total Tăng biến đếm lần nhập điểm lên 1 Input điểm của sinh viên tiếp theo (có thể là cờ)

If counter khác 0 Tính giá trị trung bình, chia total cho biến counter Hiển thị giá trị trung bình

else Hiển thị “Bạn đã không vào điểm”

Trang 11

2 Class average program with sentinel-controlled repetition */

3 #include <stdio.h>

4

5 /* function main begins program execution */

6 int main()

7 {

8 int counter; /* number of grades entered */

9 int grade; /* grade value */

10 int total; /* sum of grades */

11

12 float average; /* number with decimal point for average */

13

14 /* initialization phase */

15 total = 0 ; /* initialize total */

16 counter = 0 ; /* initialize loop counter */

17

18 /* processing phase */

19 /* get first grade from user */

20 printf( "Enter grade, -1 to end: " ); /* prompt for input */

21 scanf( "%d" , &grade ); /* read grade from user */

22

23 /* loop while sentinel value not yet read from user */

24 while ( grade != -1 ) {

25 total = total + grade; /* add grade to total */

26 counter = counter + 1 ; /* increment counter */

27

28 printf( "Enter grade, -1 to end: " ); /* prompt for input */

29 scanf( "%d" , &grade); /* read next grade */

30 } /* end while */

31

32 /* termination phase */

33 /* if user entered at least one grade */

34 if ( counter != 0 ) {

35

36 /* calculate average of all grades entered */

37 average = ( float ) total / counter;

38

39 /* display average with two digits of precision */

40 printf( "Class average is %.2f\n" , average );

41 } /* end if */

42 else { /* if no grades were entered, output message */

43 printf( "No grades were entered\n" );

44 } /* end else */

45

46 return ; /* indicate program ended successfully */

47

48 } /* end function main */

Enter grade, -1 to end: 75

Enter grade, -1 to end: 94

Enter grade, -1 to end: 97

Enter grade, -1 to end: 88

Enter grade, -1 to end: 70

Enter grade, -1 to end: 64

Enter grade, -1 to end: 83

Enter grade, -1 to end: 89

Enter grade, -1 to end: -1

Class average is 82.50

Enter grade, -1 to end: -1

No grades were entered

43

Bản chất của việc lặp được kiểm soát bởi biến đếm:

ƒ Các yêu cầu lặp kiểm soát bởi biến đếm Counter

• Với mỗi lần lặp thì biến kiểm soát sẽ thay đổi giá trị

và có thể tăng lên hoặc giảm xuống

soát

Ngày đăng: 25/01/2024, 18:22

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w