1. Trang chủ
  2. » Công Nghệ Thông Tin

Bài giảng Ngôn ngữ lập trình C: Các thành phần cơ bản - TS. Ngô Hữu Dũng

45 11 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 đề Ngôn Ngữ Lập Trình C: Các Thành Phần Cơ Bản
Trường học Trường Đại Học Công Nghiệp Thành Phố Hồ Chí Minh
Chuyên ngành Ngôn Ngữ Lập Trình
Thể loại Bài Giảng
Thành phố Thành Phố Hồ Chí Minh
Định dạng
Số trang 45
Dung lượng 467,3 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Bài giảng Ngôn ngữ lập trình C: Các thành phần cơ bản cung cấp cho người học các kiến thức: Giới thiệu ngôn ngữ lập trình C, thư viện, nhập xuất cơ bản. Mời các bạn cùng tham khảo nội dung chi tiết.

Trang 1

Ngôn ngữ lập trình C

Các thành phần cơ bản

TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP THÀNH PHỐ HỒ CHÍ MINH

Trang 2

 Nhập: scanf, cin, gets

 Xuất: printf, cout, puts

Trang 3

Ngôn ngữ lập trình C

 Được phát triển bởi Dennis

Ritchie tại phòng thí nghiệm

AT&T Bell vào đầu thập niên

1970

 C được dùng trong hệ điều

hành UNIX và phát triển cùng

với hệ điều hành này

 C đã lan rộng ra nhiều hệ điều

hành khác và trở thành ngôn

ngữ phổ dụng nhất

Trang 4

Trình biên dịch/Trình thông dịch

Trình biên dịch

Compiler

Mã nguồn

Source code

Mã máy Machine Code

Executable Program

Interpreter

Source Code

Trình thông dịch: Phân tích và thực thi chương trình cùng lúc.

Việc thực thi chậm nhưng dễ sửa lỗi chương trình.

Trang 5

Biên dịch và chạy chương trình

Trang 6

Sửa lỗi - debug

Semantic Errors

Trang 7

Cấu trúc chương trình C

Ký hiệu #include dùng để khai báo thư viện phục vụ chương

trình

Hàm main là nơi bắt đầu thực hiện chương trình

Lệnh printf nằm trong thư viện stdio.h, dùng để xuất dữ liệu

ra màn hình

Kí hiệu \n dùng để xuống dòng

Lệnh return dùng để kết thúc và trả về giá trị kiểu int cho hàm

main

3 int main() // Chương trình chính

5 printf( "Hello world!\n" ); // Câu lệnh

Trang 8

Định dạng trong C

Có phân biệt giữa chữ in HOA và chữ in thường!

 Tất cả các từ khóa và hàm chuẩn trong C đều là chữ thường

 Các dòng trống, khoảng trắng, lời chú thích đều được trình

biên dịch bỏ qua

 Không ảnh hưởng đến hoạt động của chương trình

Các dấu thụt dòng giúp chương trình dễ đọc, rõ ràng.

 Có thể dùng tab hoặc dấu cách

 Không ảnh hưởng đến hoạt động của chương trình

Câu lệnh được kết thúc bằng dấu chấm phẩy ;

Chuỗi ký tự được đặt giữa hai dấu hai nháy "Chuỗi"

Một ký tự được đặt giữa hai dấu một nháy 's'

Trang 9

Lời chú thích

 Không ảnh hưởng đến hoạt động của chương trình

 Giải thích về giải thuật, cách hoạt động, chú thích các

phần khác nhau

 Hai cách ghi chú thích

 // chú thích dòng

 /* chú thích khối*/

 Chú thích dòng: Lời chú thích đứng sau dấu //

 Chú thích khối: Lời chú thích nằm giữa dấu /* và */

Trang 10

 Tên biến: Do người lập trình tự đặt

Biến phải được khai báo trước khi sử dụng

Cú pháp: Kiểu-dữ-liệu Tên-biến;

int year;

char kytu;

Trang 11

 Mỗi ô nhớ có một địa chỉ riêng

 Dữ liệu kiểu con trỏ lưu địa chỉ

Trang 12

Kiểu dữ liệu

int: Kiểu số nguyên

 2 hoặc 4 bytes (16 hoặc 32 bits)

 -32,768 → 32,767 hoặc -2,147,483,648 → 2,147,483,647

float: Kiểu số thực

 4 bytes (32 bits): 1.2E-38 → 3.4E+38, độ chính xác 24 bits

double: Kiểu số thực có độ chính xác cao hơn float

 8 bytes (64 bits): 2.3E-308 → 1.7E+308, độ chính xác 53 bits

char: Kiểu ký tự

 1 byte, ví dụ: char exit = 'e';

bool: Kiểu luận lý, có giá trị true hoặc false

 1 byte, ví dụ: bool kt = true ;

Độ chính xác?

Trang 13

significand x base exponent

Kiểu dữ liệu Dấu Mũ Trị số Tổng số bit Độ chính xác

Float 1 bit 8 bits 23 bits 32 bits (4 bytes) 24 bits (Dấu + trị số) Double 1 bit 11 bits 52 bits 64 bits (8 bytes) 53 bits (Dấu + trị số)

Trang 14

Tên biến

 Phải bắt đầu bằng một chữ hoặc dấu gạch dưới (_), tiếp sau đó

có thể kết hợp giữa chữ, số và dấu gạch dưới.

Không được trùng với từ khóa có sẵn của C

 Hai biến không được trùng tên nhau

 Có phân biệt giữa chữ hoa và chữ thường

 Độ dài tùy thích, tuy nhiên không nên đặt tên quá dài

 Nên đặt tên có nghĩa, dễ hiểu

 Ví dụ: Những tên biến nào sau đây đúng hay sai?

1ngoi_sao, bienDem1, phepNhân, donVi$, ngoi_nha, int, kiem-tra, A&T

dien _tich, +hai_so, luy thua, T_T, ^_^,

edthbdl_mbcln2h

Trang 15

Từ khóa

 Là những từ đã được định nghĩa bởi trình biên dịch

 Không được dùng để đặt tên biến, tên hàm…

 Các công cụ lập trình C thường có thể nhận biết và đổi

màu các từ khóa trên trình soạn thảo

auto break case char const continue

default do double else enum extern float for goto if int long register return short signed sizeof static struct switch typedef union unsigned void volatile while

Trang 16

Ví dụ về biến và kiểu biến

1 #include <stdio.h> // Khai báo thư viện

2 int main() // Chương trình chính

Trang 17

Chuyển đổi kiểu

Đặt (Kiểu dữ liệu) phía trước biểu thức để chuyển đổi

kiểu dữ liệu cho kết quả của biểu thức

f = (float) i1 / i2; i = (int)f;

 Gán một số nguyên vào một biến kiểu thực

f = i; // Cảnh báo việc chuyển đổi

f1 = 10; f2 = (float)i; // OK! f1 = 10.000000

 Gán một số thực vào một biến kiểu nguyên: Mất phần

thập phân (sau dấu chấm)

i1 = 9.5; i2 = f; // Cảnh báo, i1 = 9

i1 = (int)9.5; i2 = (int)f; // OK!

Trang 18

Chuyển đổi kiểu (2)

 Chia một số nguyên cho một số nguyên: Kết quả là sốnguyên

i1=5; i2=10; f=i1/i2; // Cảnh báo, f=0.000000

f=(float)i1/i2; // OK, f=0.500000

 Chia một số thực cho một số nguyên hoặc chia một sốnguyên cho một số thực: Kết quả là số thực

i=5; f=10; i1 = i/f; // Cảnh báo, i1 = 0

f1=i/f; f2=i/10.0; // OK! f1 = f2 = 0.500000

Trang 19

#define b 125u // unsigned int

#define c 87l // long int

#define d 23ul // unsigned long int

#define e 057 // Cơ số 8

#define f 0xfee // Cơ số 16

#define g 3.14159 // float

#define h 314159E-5 // float

#define i 'a' // char

#define j "morning" // string

const int k = 2016;

const float l = 2.016;

const char m = '4' ;

const char n[] = "afternoon" ;

#define o 048 /* ERROR! Hệ cơ số 8

không có số 8 */

#define p 59E // ERROR!

Trang 20

Vận dụng

 Đề bài 1: Hãy khai báo

 Một biến kiểu số nguyên

 Hai biến kiểu số thực

Trang 21

% Phép chia lấy phần dư B % A = 0

++ Cộng lên một số nguyên A++ = 11

Trang 22

int A=10, B=20;

if (A==B) printf( "A = B" );

if (A!=B) printf( "A ≠ B" );

if (A>B) printf( "A > B" );

if (A<B) printf( "A < B" );

if (A>=B) printf( "A ≥ B" );

if (A<=B) printf( "A ≤ B" );

}

Trang 23

Toán tử luận lý

 Những phép toán luận lý

Cho A = 1, B = 0

&& Gọi toán tử AND, nếu cả hai toán hạng

điều đúng, kết quả phép toán là đúng

(A && B) Sai

|| Gọi toán tử OR, nếu cả hai toán hạng

đều sai, kết quả phép toán là sai (A || B) Đúng

! Gọi toán tử NOT, thực hiện phép phủ

định

!(A && B) Đúng

Trang 24

Toán tử trên bit

 Các phép toán trên bit

Trang 25

&= Phép AND trên bit và gán C &= 2 là C = C & 2

^= Phép XOR trên bit và gán C ^= 2 là C = C ^ 2

Trang 27

Các thư viện

 Các thư viện định nghĩa sẵn các hàm hay kiểu dữ liệu

 Cú pháp khai báo: #include <tên thư viện>

<stdio.h> các hàm nhập xuất chuẩn, các thao tác với tập

tin…

getchar, putchar, printf, scanf, fopen, fclose, remove, rename…

<stdlib.h> các hàm chuyển đổi kiểu dữ liệu, cấp phát bộ

Trang 28

 gets, puts, cin, cout…

<time.h> các hàm xử lý về thời gian

 time, clock, localtime, difftime, time_t, struct tm…

Trang 29

Hàm thường dùng ở thư viện stdio.h

Khai báo: #include <stdio.h>

Trang 30

Hàm thường dùng ở thư viện stdlib.h

Khai báo: #include <stdlib.h>

Hàm rand: Tạo số nguyên ngẫu nhiên

Nguyên mẫu hàm: int rand (void);

 a = rand(); // a có giá trị từ 0 đến 32767

 b = rand()%90; // b có giá trị từ 0 đến 89

 c = rand()%90 + 10; // c có giá trị từ 10 đến 99

Hàm srand: Khởi tạo số ngẫu nhiên

Nguyên mẫu hàm: void srand (unsigned int seed);

 Ví dụ:

 srand(time(NULL));

 d = rand() % 101 – 50;

Trang 31

Hàm thường dùng ở thư viện math.h

Khai báo: #include <math.h>

Hàm sqrt: Tính căn bậc hai

Nguyên mẫu hàm: double sqrt (double x);

 x = sqrt(9); // Căn bậc hai của 9

 y = sqrt(x + 1); // Căn bậc hai của x + 1

Hàm pow: Tính lũy thừa

Nguyên mẫu hàm: double pow (double base, double exponent);

 x = pow(3, 2); // ba mũ hai

 y = pow(x, 4); // x mũ bốn

Hàm floor, ceil: Làm tròn

 z = floor(4.3); // z = 4.0

Trang 32

Hàm thường dùng ở thư viện string.h

Khai báo: #include <string.h>

Hàm strlen: Tính chiều dài của chuỗi

Nguyên mẫu hàm: size_t strlen(const char * str)

 a = strlen(“hello”); // a = 5

Hàm strcpy: Sao chép chuỗi

Nguyên mẫu hàm: char * strcpy(char * dest, const char * src)

strcpy(hello, “Hello ”); // hello = “Hello ”

Hàm strcat: Nối chuỗi

Nguyên mẫu hàm: char * strcat( char * dest, const char * src)

 char name[50] = “Tuan”;

strcat(hello, name); // hello = “Hello Tuan!”

Hàm strcmp: So sánh chuỗi

Nguyên mẫu hàm: int strcmp( const char * str1, const char * str2 )

 a = strcmp(name, “Tuan”); // a = 0

Trang 33

Hàm thường dùng ở thư viện ctype.h

Khai báo: #include <ctype.h>

Hàm tolower: Chuyển ký tự sang chữ thường

 Nguyên mẫu int tolower ( int c );

 char c = ‘N’; tolower(c); // c = ‘n’

Hàm toupper: Chuyển ký tự sang chữ in

 Nguyên mẫu int toupper ( int c );

 char c = ‘n’; toupper(c); // c = ‘N’

 Các hàm kiểm tra ký tự

 isalnum(c): Trả về true (khác 0) nếu c là số hoặc chữ

 isalpha(c): Trả về true nếu c là chữ

 islower(c): Trả về true nếu c là chữ thường

Trang 35

scanf(“%s”, &s); // Ký tự trắng kết thúc nhập liệu

Có thể thay bằng scanf(“%[^\n]s”, &s); hoặc gets(s);

Trang 39

13 return 0;

14 }

Trang 40

Định dạng biểu diễn dữ liệu

 %[flags][width][.precision][length]specifier

– Canh trái trong width

+ Buộc in dấu + hoặc –

0 In số 0 trước dữ liệu

hh signed char unsigned char

h short int unsigned short int

Trang 41

Định dạng biểu diễn dữ liệu

%x, %X Số thập lục phân không dấu 7fa, 7FA

Trang 42

Ví dụ biểu diễn dữ liệu

1 #include <stdio.h>

2 int main()

3 {

4 printf ( "Ky tu: %c %c \n" , 'a' , 65);

5 printf ( "So nguyen: %d \n" , 1977);

6 printf ( "Khoang trong: %10d \n" , 1977);

7 printf ( "So khong: %010d \n" , 1977);

8 printf ( "%d %x %o %#x %#o\n" ,100,100,100,100,100);

9 printf ( "So thuc: %.2f\n" , 3.1416);

10 printf ( "%s\n" , "Mot chuoi" );

11 return 0;

12 }

Ky tu: a A

So nguyen: 1977 Khoang trong: 1977

So khong: 0000001977

100 64 144 0x64 0144

So thuc: 3.14 Mot chuoi

Trang 43

 Mã escape dùng để đại diện

cho những ký tự đặc biệt hoặc

Trang 44

Bài tập vận dụng

 Đề bài 5: Viết chương trình nhập vào số ngày công (số

nguyên), tính lương theo công thức:

 Lương = số ngày công x lương công nhật

 Trong đó lương công nhật là hằng số = 120’000

 Đề bài 6: Viết chương trình nhập vào hai số x và y, tính

Trang 45

 Nhập: scanf, cin, gets

 Xuất: printf, cout, puts

Ngày đăng: 11/05/2021, 03:33

TỪ KHÓA LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm