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

Bài giảng Tin học cơ sở 3 (Ngôn ngữ lập trình C)

155 50 0
Tài liệu đã được kiểm tra trùng lặp

Đ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

Định dạng
Số trang 155
Dung lượng 3,31 MB

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

Nội dung

Với kết cấu nội dung gồm 6 bài, bài giảng Tin học cơ sở 3 - Ngôn ngữ lập trình C trình bày tổng quan về ngôn ngữ lập trình C, kiểu chuổi ký tự, các kiểu dữ liệu cơ sở, cấu trúc điều khiển, hàm và chương trình,... Mời các bạn cùng tham khảo.

Trang 1

Tin học cơ sở 3

LẬP TRÌNH C)

Trang 2

Tài liệu

• Phạm Văn Ất, Kỹ thuật lập trình C Cơ sở và

nâng cao, NXB Giao thông Vận tải, 2006.

• Bùi Thế Duy, Lập trình căn bản với C, NXB

Đại học Quốc gia Hà nội, 2012.

2

Trang 3

Bài 1: Tổng quan về ngôn ngữ lập trình

C

• Ngôn ngữ C có một số các đặc điểm nổi

bật sau :

– C là ngôn ngữ lập trình có cấu trúc và phân

biệt chữ Hoa – chữ thường.

– Một chương trình C bao giờ cũng gồm một

hoặc nhiều hàm và các hàm rời nhau.

3

Trang 4

I Hướng dẫn cài đặt môi trường kết hợp Dev C

2 Cài đặt: Chạy file cài đặt DEV-C++ (file

devcpp.exe)

3 Vào menu " Tools " chọn " Compiler Options ".

- Vào tab "Settings" tab, nhấn vào "Linker"

ở khung bên trái và thay đổi thông số

"Generate debugging information" sang

"Yes":

4

Trang 5

II Hướng dẫn sử dụng môi trương kết hợp Dev C

Mở file mới : File -> New -> Source File

Mở file đã có: File -> Open

File\ Save (Ctrl+S) : Ghi tệp mới đang soạn thảo

vào đĩa

File\ Save as : Ghi tệp đang soạn thảo vào đĩa

theo tên mới hoặc đe lên tệp đã có

5

Trang 6

• Chạy một chương trình

(Ctrl+F10)

• Thoát khỏi Dev C

6

Trang 7

III Các bước lập trình

• Bước 1: Phân tích vấn đề và xác định các đặc

điểm (xác định I-P-O:

Input-Pprocess-Output (Quy trình nhập-xử lý-xuất))

• Bước 2: Đưa ra giải pháp (đưa ra thuật giải)

• Bước 3: Cài đặt (viết chương trình)

• Bước 4: Dịch chương trình

• Bước 5: Chạy kiểm chứng và hoàn thiện

chương trình (thử nghiệm bằng nhiều số liệu

và đánh giá)

7

Trang 8

• Phương trình có nghiệm duy nhất x = -b/a

Đầu vào: a, b thuộc R

Đầu ra: nghiệm phương trình ax + b = 0

Trang 9

Sử dụng lưu đồ - sơ đồ khối

Trang 10

Xuất “Phương trình có nghiệm x = -b/a”

Đầu vào: a, b thuộc R

Đầu ra: nghiệm phương trình ax + b = 0

Trang 11

Bài tập

Xác định Input, Process, Output của các chương

trình sau:

1 Đổi từ tiền VND sang tiền USD.

2 Tính điểm trung bình của học sinh gồm các môn Toán, Lý, Hóa.

3 Giải phương trình bậc 2: ax2 + bx + c = 0

4 Kiểm tra 2 số a, b giống nhau hay khác nhau.

11

Trang 12

IV Giới thiệu ngôn ngữ lập trình C

• Các ký hiệu đặc biệt khác như : , ; : [ ] { } ? ! \ & | % # $,…

– Từ khóa là các từ dành riêng trong ngôn ngữ.

=> Không thể sử dụng từ khóa để đặt tên cho biến, hàm, tên chương trình con ( tồn tại dưới dạng hàm , không tồn tại dưới dạng thủ tục).

• Char, do, int, float, for, do, While,…

– Tên file (tệp)

• Tên file là một dãy ký tự dùng để chỉ tên.

• Tên tệp được tạo thành từ các chữ cái và các chữ số , nhưng bắt buộc

chữ đầu phải là chữ cái hoặc dấu _.

• Số ký tự tối đa của một tên là 255 ký tự, và không cho phép có khoảng

Trang 13

• Ví dụ tên tệp

– Các tên hợp lệ: GiaiPhuongTrinh, Bai_Tap1

– Các tên không hợp lệ: 1A, Giai Phuong Trinh

các tên sau đây khác nhau:

• BaiTap khác baitap, …

Giới thiệu ngôn ngữ lập trình C

Trang 14

V Cấu trúc một chương trình trong NNLT C

• Một chương trình thường là tập hợp các câu lệnh, có thể có

hoặc không có các ghi chú

• Trong C, ghi chú được đặt giữa cặp /* và */, nếu chú thích cho dòng dùng 2 dấu //

• Chương trình còn có thể có các chỉ dẫn tiền biên dịch (được

thực hiện trước khi chương trình được biên dịch, VD: chỉ dẫn

#include để khai báo sử dụng thư viện.

14

Trang 15

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

#include “…” // Khai báo thư viện

int main() // Hàm chính

{

int x; // Khai báo biến hàm

int Nhap(); // Khai báo hàm

… // Các lệnh

}

Trang 16

Chú ý:

 Các từ include, stdio.h, void, main, printf,…

phải viết bằng chữ thường.

 Chuỗi trong nháy kép là chuỗi cần in ra "Bạn có thể viết chữ HOA, thường tùy ý".

Kết thúc tên hàm không có dấu chấm phẩy hoặc bất cứ dấu gì.

 Ghi chú phải đặt trong cặp /* … */, hay //

Trang 17

printf(“Nhap hai so nguyen: ”);

scanf(“%d %d”, &x, &y);

tong = x + y;

printf(“Tong hai so la %d”, tong); getch();

}

Trang 18

Một số thư viện trong Dev C

- stdio.h : Chứa các hàm vào/ ra chuẩn (standard

input/output) Gồm:

printf(), scanf() , getc(), putc(), gets(), puts(), …

+ Lệnh printf: dùng để in ký tự ra màn hình.

+ lệnh scanf: dùng để nhập giá trị vào cho biến.

- conio.h : Chứa hàm getch() , getche(), putch(), …

-math.h : Thư viện chứa các hàm tính toán gồm các hàm

abs(), sqrt(), log(),…

- windows.h : Chứa hàm xóa màn hình: system(“cls”) ,…

-String.h: Chứa các hàm về chuỗi: Char ,…

Giới thiệu ngôn ngữ lập trình C

Trang 19

BB

1 1

Bài 2 Các kiểu dữ liệu cơ sở

nguyên như : -2, 10,…

thực như 3.14, 29.12, -17.06, …

ASCII.

Các kiểu dữ liệu cơ sở

Trang 20

BB

2 2

Kích thước của các kiểu dữ liệu cơ sở

Các kiểu dữ liệu cơ sở

Trang 21

BB

2 2

1 Kiểu Logic (bool)

 C ngầm định một cách không tường minh:

• false (sai): giá trị 0.

• true (đúng): giá trị khác 0, thường là 1.

Trang 22

BB

2 2

2 Kiểu ký tự (char)

 Đặc điểm

 Tên kiểu: char

 Miền giá trị: 256 ký tự trong bảng mã ASCII.

 Kiểu ký tự chính là kiểu số nguyên do:

• Lưu tất cả dữ liệu ở dạng số

• Không lưu trực tiếp ký tự mà chỉ lưu mã ASCII của

ký tự đó

 Ví dụ

 Lưu số 65 tương đương với ký tự ‘A’…

 Lưu số 97 tương đương với ký tự ‘a’.

Các kiểu dữ liệu cơ sở

Trang 23

BB

2 2

3 Biến

Các kiểu dữ liệu cơ sở

Cú pháp khai báo biến

<kiểu> <tên biến>;

<kiểu> <tên biến 1>, <tên biến 2>;

Trang 24

BB

2 2

Trang 25

BB

2 2

#define <tênhằng> <giá trị>

hoặc sử dụng từ khóa const

Trang 26

BB

2 2

5 Biểu thức

 Biểu thức được tạo thành từ các toán tử

(Operator) và các toán hạng (Operand).

 Toán tử: + , – , * , / , % (lấy phần dư) ….

 Toán hạng: hằng , biến , lời gọi hàm

 2 + 3, a / 5, (a + b) * 5, …

Các kiểu dữ liệu cơ sở

Trang 27

BB

2 2

 <biến> = <giá trị>; a=10;

 <biến> = <biến>; b=a;

 <biến> = <biểu thức>; thuong=a/b;

 Có thể thực hiện liên tiếp phép gán.

Các kiểu dữ liệu cơ sở

Trang 28

BB

2 2

b Các toán tử toán học

 Chỉ có một toán hạng trong biểu thức.

 ++ (tăng 1 đơn vị), (giảm 1 đơn vị)

 Toán tử đặt trước toán hạng => thực hiện

trước.

• Ví dụ ++x hay x: thực hiện tăng/giảm trước

 Toán tử đặt sau toán hạng=> thực hiện sau:

• Ví dụ x++ hay x : thực hiện tăng/giảm sau

Trang 29

BB

2 2

c Các toán tử quan hệ (thường đi với if)

 So sánh 2 biểu thức với nhau

 Cho ra kết quả 0 (hay false nếu sai) hoặc 1 (hay true nếu đúng)

Trang 30

BB

3 3

d Các toán tử logic

 Các toán tử Logic

 Tổ hợp nhiều biểu thức quan hệ với nhau.

 && (and), || (or), ! (not)

Trang 31

BB

3 3

5 Câu lệnh

 Câu lệnh là một chỉ thị trực tiếp, nhằm ra lệnh cho máy tính thực hiện một số tác vụ nhất

định nào đó.

 Trình biên dịch bỏ qua các khoảng trắng (hay tab hoặc xuống dòng) chen giữa lệnh.

Các kiểu dữ liệu cơ sở

Trang 32

BB

3 3

5 Câu lệnh (tiếp)

 Câu lệnh đơn: chỉ gồm một câu lệnh.

 Câu lệnh phức (khối lệnh): gồm nhiều câu

lệnh đơn được bao bởi { và }

Trang 33

BB

3 3

a Câu lệnh xuất

 Câu lênh xuất thuộc thư viện stdio.h

 #include <stdio.h> (standard input/output)

 Cú pháp

 printf(<chuỗi định dạng>[, <đối số1>, <đối số 2>, …]);

 <chuỗi định dạng> là cách trình bày thông tin xuất và được đặt trong cặp nháy kép “ ” gồm:

• Văn bản thường: printf(“Hello ”);

• Ký tự điều khiển: printf(“\t Hello”); printf(“\n Hello”);

• Đặc tả: - Gồm dấu % và một ký tự.

- Xác định kiểu của biến/giá trị muốn xuất.

- Các đối số chính là các biến/giá trị muốn xuất,

được liệt kê theo thứ tự cách nhau dấu phẩy.

Trang 34

BB

3 3

Số nguyên không dấu

char int, long float, double char, string unsigned

Trang 35

BB

3 3

 printf(“%10.2f”, x); Xuất ra 15.06, có 10 ô nhớ chứa

x, lấy sau dấu phẩy 2 số

 printf(“%.2f”, x);  Xuất ra 15.06

Các kiểu dữ liệu cơ sở

Trang 36

BB

3 3

b Câu lệnh nhập

 Câu lênh nhập thuộc thư viện stdio.h

 #include <stdio.h> (standard input/output)

 Cú pháp

 scanf(<chuỗi định dạng>[, <đối số 1>, <đối số 2>,…]);

<chuỗi định dạng> giống định dạng xuất nhưng chỉ

có các đặc tả

Các đối số: là tên các biến sẽ chứa giá trị nhập và

được đặt trước bởi dấu &

Các kiểu dữ liệu cơ sở

Trang 37

BB

3 3

Câu lệnh nhập

 Ví dụ, cho a và b kiểu số nguyên

 scanf(“%d”, &a); // Nhập giá trị cho biến a

 scanf(“%d%d”, &a, &b);

 Chú ý: Khi nhập xâu kí tự thì không có dấu & trước biến, vì bản thân tên xâu đã là con trỏ

printf(“Cho mot xau ki tu: “); scanf(“%s”,st);

 Các câu lệnh sau đây sai

• scanf(“%d”, a); // Thiếu dấu &

• scanf(“%d”, &a, &b);// Thiếu %d cho biến b

• scanf(“%f”, &a); // a là biến kiểu số nguyên

• scanf(“%9d”, &a); // không được định dạng

• scanf(“a = %d, b = %d”, &a, &b”);

Các kiểu dữ liệu cơ sở

Trang 38

BB

3 3

Bài tập

 Bài 1: Viết chương trình in ra màn hình các câu

chào khác nhau, mỗi câu trên một dòng.

 Bài 2: Viết chương trình nhập vào 2 số nguyên

dương rồi đưa ra: tổng, tích, hiệu của 2 số đó.

 Bài 3: Giả sử ta có x = 10; y = 20; z = 30; Hãy cho biết giá trị các biểu thức sau Viết chương trình

Trang 39

BB

3 3

Bài tập

5 Nhập năm sinh của một người và tính tuổi của người đó.

6 Nhập 2 số a và b Tính tổng, hiệu, tính và

thương của hai số đó.

7 Nhập tên sản phẩm, số lượng và đơn giá Tính tiền và thuế giá trị gia tăng phải trả, biết:

a tiền = số lượng * đơn giá

b thuế giá trị gia tăng = 10% tiền

Các kiểu dữ liệu cơ sở

Trang 40

BB

4 4

Bài tập

8 Nhập điểm thi 3 môn Toán, Lý, Hóa của một

sinh viên Tính điểm trung bình của chúng.

9 Nhập bán kính của đường tròn Tính chu vi và diện tích của hình tròn đó.

Các kiểu dữ liệu cơ sở

Trang 41

BB

4 4

int NamSinh, Tuoi;

printf(“Nhap nam sinh: ”);

Trang 42

BB

4 4

int a, b, Tong, Hieu, Tich, Thuong;

printf(“Nhap hai so nguyen: ”);

scanf(“%d%d”, &a, &b);

Tong = a + b; Hieu = a – b;

Tich = a * b; Thuong = a / b;

printf(“Tong cua a va b: %d\n”, Tong);

printf(“Hieu cua a va b: %d\n”, Hieu);

printf(“Tich cua a va b: %d\n”, Tich);

printf(“Thuong cua a va b: %d\n”, Thuong); }

Trang 43

BB

4 4

printf(“Nhap so luong va don gia: ”);

scanf(“%d%d”, &SoLuong, &DonGia);

Tien = SoLuong * DonGia;

VAT = Tien * 0.1;

printf(“Tien phai tra: %d\n”, Tien);

printf(“Thue phai tra: %.2f\n”, VAT);

}

Trang 44

BB

4 4

printf(“Nhap diem Toan, Ly, Hoa: ”);

scanf(“%f%f%f”, &T, &L, &H);

printf(“Nhap he so Toan, Ly, Hoa: ”);

scanf(“%d%d%d”, &HsT, &HsL, &HsH);

DTB = (T * HsT + L * HsL + H * HsH) /

(HsT + HsL + HsH);

printf(“DTB cua ban la: %.2f\n”, DTB);

}

Trang 45

BB

4 4

float R, ChuVi, DienTich;

printf(“Nhap ban kinh duong tron: ”);

scanf(“%f”, &R);

ChuVi = 2*PI*R;

DienTich = PI*R*R;

printf(“Chu vi: %.2f\n”, ChuVi);

printf(“Dien tich: %.2f\n”, DienTich);

}

Trang 46

Bài 3: Cấu trúc điều khiển

Trang 47

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

1 Cấu trúc if dạng 1 (thiếu)

Ý nghĩa: bt là biểu thức lôgic, s là lệnh đơn hoặc lệnh phức nếu

bt nhận giá trị true thì thực hiện s, ngược lại s được bỏ qua

2 Cấu trúc if dạng 2 (đủ)

else s1 ;

Ý nghĩa: bt là biểu thức lôgic,

- nếu bt nhận giá trị true thì thực hiện s và bỏ qua s1,

- ngược lại nếu bt nhận giá trị flase thì thực hiện s1 và bỏ qua s(s và s1 có thể là lệnh đơn hoặc lệnh phức)

Chú ý : trong C cho phép sử dụng các cấu trúc if lồng nhau để giải

quyết bài toán

47

Trang 49

Bài tập

1.Nhập 2 số thực a, b từ bàn phím Tìm và in ra màn hình số lớn nhất và số bé nhất.

2.Giải phương trình bậc nhất: ax+b=0; a,b nhập từ bàn phím

4 Viết chương trình nhập vào bán kính hình cầu, tính và in

ra diện tích, thể tích của hình cầu đó.

5 Viết chương trình nhập vào 2 số nguyên a, b Nếu a lớn

hơn b thì hoán đổi giá trị a và b, ngược lại không hoán đổi

In ra giá trị a, b.

49

Trang 50

Bài tập (tiếp)

6 Viết chương trình nhập vào 2 số nguyên a, b In ra thông báo

"a lớn hơn b" nếu a>b, in ra thông báo "a nhỏ hơn b" nếu a<b, in

ra thông báo "a bằng b" nếu a=b

7 Viết chương trình nhập vào điểm của một học sinh In ra xếp loại học tập của học sinh đó

Cách xếp loại:

Nếu điểm >= 9, Xuất sắc

Nếu điểm từ 8 đến cận 9, Giỏi

Trang 51

II Cấu trúc rẽ nhánh switch

Trang 52

Ý nghĩa:

• Bt: là biểu thức toán học có giá trị kiểu nguyên

• Ni(i=1 k): là các số kiểu nguyên, kiểu hằng ký tự, hoặc biểu thức

• Si(i=1 k): là các lệnh đơn hoặc lệnh phức

• Giá trị bt = ni thì thực hiện câu lệnh si sau case ni;

• Để chương trình thoát khỏi lệnh switch sau khi thực hiện xong một trường hợp, ta dùng lệnh break

• default : gồm các câu lệnh thực hiện các trường hợp còn lại

52

Trang 53

Ví dụ

{

int i;

System(“cls”); /* lệnh xóa màn hình trong thư viện windows.h*/

printf("Nhap vao so 1, 2 hoặc 3: ");

scanf("%d", &i);

switch(i)

{

case 3: printf("***"); break;

case 2: printf("**"); break;

case 1: printf("*"); break;

Trang 54

Bài tập

1 Viết chương trình nhập vào từ bàn phím một mã số nguyên và

đưa ra đánh gía trình độ theo yêu cầu:

Trang 55

Bài tập

2 Viết chương trình nhập vào tháng, in ra quý tương ứng

3 Viết chương trình nhập vào tháng, in ra tháng đó có bao nhiêu ngày

4 Viết chương trình nhập vào 2 số x, y và 1 trong 4 toán tử +, -, *, / Nếu là + thì in ra kết quả x + y, nếu là – thì in ra x –

y, nếu là * thì in ra x * y, nếu là / thì in ra x / y (nếu y = 0 thì thông báo không chia được)

5 Viết chương trình nhập vào điểm 3 môn thi: Toán, Lý, Hóa của học sinh Nếu tổng điểm >= 15 và không có môn nào dưới 4 thì in kết quả đậu Nếu đậu mà các môn đều lớn hơn 5 thì in ra lời phê "Học đều các môn", ngược lại in ra "Học chưa đều các môn", các trường hợp khác là "Thi hỏng"

55

Trang 56

case '+': printf("%d + %d = %d", x, y, x+y);

case '-': printf("%d - %d = %d", x, y, x-y);

case '*': printf("%d * %d = %d", x, y, x*y);

Trang 57

III Câu lệnh lặp for

 bt3 : thường là lệnh gán có tác dụng làm thay đổi giá trị

57

Trang 58

Hoạt động:

• Bước 1: Thực hiện bt1

• Bước 2: Tính toán, xác định giá trị của bt2

• Bước 3: Nếu bt2 có giá trị false thì thoát khỏi vòng lặp Ngược lại bt2 có giá trị true thì thực hiện câu lệnh S

• Bước 4: sau khi thực hiện S => thực hiện bt3 và quay lại bước 2

Trang 59

Chú ý khi sử dụng vòng lặp for

• <bt1>, <bt2>, <bt3> đều có thể vắng mặt nhưng vẫn phải giữ lại dấu ( ; )

• Trường hợp đặc biệt <bt2> không có, thì luôn được xem là nhận

giá trị true, muốn thoát khỏi vòng lặp phải dùng lệnh break, goto hoặc return

• Có thể dùng cấu trúc các vòng for lồng nhau

• Khi gặp lệnh break thì chương trình sẽ thoát khỏi vòng for sâu nhất còn chứa lệnh break

• Trong vòng for có thể sử dụng lệnh continue để chuyển tới chu trình mới của vòng lặp

59

Trang 60

Ví dụ/* Chuong trinh in ra cau "Vi du su dung vong lap for" 3 lần*/

Trang 61

IV Câu lệnh while

- Bước 1: Xác định giá trị của bt Nếu giá trị của bt=

true(<>0) thì chuyển sang bước 2, ngược lại thì thoát khỏi vòng lặp

- Bước 2: Thực hiện S sau đó quay về bước 1(Lệnh S có

thể được thực hiện nhiều lần, hoặc không được thực hiện

lần nào nếu bt =false ngay từ đầu).

- Chú ý : trong câu lệnh lặp while => ta có thể dùng câu

lệnh break để thoát khỏi vòng lặp theo ý muốn

61

Trang 63

V Câu lệnh do while

1 Cú pháp

do S;

while (bt) ;

Ý nghĩa: S là một câu lệnh đơn hoặc phức, bt là biểu

thức lôgic (hay còn gọi là điều kiện lặp)

Hoạt động:

thì chuyển sang bước (1), ngược lại thì thoát khỏi vòng lặp

lệnh

63

Trang 65

So sánh các vòng lặp

- Vòng lặp for thường sử dụng khi biết được số lần lặp xác định

- Vòng lặp thường while, do…while sử dụng khi không biết rõ số lần lặp

- Khi gọi vòng lặp while, do…while: Nếu biểu thức sai vòng lặp while sẽ không được thực hiện lần nào nhưng vòng lặp do…while thực hiện được 1 lần

65

Ngày đăng: 11/05/2021, 04:22