1. Trang chủ
  2. » Thể loại khác

Lập Trình Căn Bản

275 5 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 đề Lập Trình Căn Bản
Định dạng
Số trang 275
Dung lượng 4,61 MB

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

Nội dung

Mục Đích Yêu Cầu Khái niệm về ngôn ngữ lập trình  Khái niệm về kiểu dữ liệu  Kiểu dữ liệu có cấu trúc cấu trúc dữ liệu  Khái niệm về giải thuật  Ngôn ngữ biểu diễn giải thuật  Ngôn

Trang 1

Lập Trình Căn Bản

Trang 2

Mục Đích Yêu Cầu

Khái niệm về ngôn ngữ lập trình

Khái niệm về kiểu dữ liệu

Kiểu dữ liệu có cấu trúc (cấu trúc dữ liệu)

Khái niệm về giải thuật

Ngôn ngữ biểu diễn giải thuật

Ngôn ngữ sơ đồ (lưu đồ), sử dụng lưu đồ để biểu diễn các giải thuật

Trang 3

Nội Dung Cốt Lõi

Chương 1: Giới thiệu về ngôn ngữ C & môi trường lập trình Turbo C

Chương 2: Các thành phần của ngôn ngữ C

Chương 3: Các kiểu dữ liệu sơ cấp chuẩn và các lệnh đơn

Trang 4

LẬP TRÌNH CĂN BẢN

Phần 1 GIỚI THIỆU VỀ CẤU TRÚC DỮ

LIỆU VÀ GIẢI THUẬT

N.C Danh

Trang 5

Nội dung chương

Từ bài toán đến chương trình

Giải thuật

Khái niệm giải thuật

Các đặc trưng của giải thuật

Ngôn ngữ biểu diễn giải thuật

Một số giải thuật cơ bản

Các cấu trúc suy luận cơ bản của giải thuật

Từ giải thuật đến chương trình

Trang 6

Từ Bài Toán Đến Chương Trình

Các bước giải bài toán bằng máy tính

sang ngôn ngữ lập trình

Trang 7

Giải Thuật

Khái niệm giải thuật

Các đặc trưng của giải thuật

Ngôn ngữ biểu diễn giải thuật

Một số giải thuật cơ bản

Các cấu trúc suy luận cơ bản của giải thuật

Từ giải thuật đến chương trình

Trang 8

Khái Niệm Giải Thuật

Ví dụ: Hoán đổi chất lỏng trong 2 bình A (nước mắm) và B (rượu):

Yêu cầu phải có thêm một bình thứ ba gọi là bình C

Bước 1: Đổ rượu từ bình B sang bình C

Bước 2: Đổ nước mắm từ bình A sang bình B

Bước 3: Đổ rượu từ bình C sang bình A

“Giải thuật là một dãy các thao tác trên những dữ liệu vào sao cho sau một hữu hạn bước ta thu được kết quả của bài toán ”.

Trang 9

Các Đặc Trưng Của Giải Thuật

Tính kết thúc

Tính xác định

Tính phổ dụng

Tính hiệu quả

Trang 11

Ngôn Ngữ Tự Nhiên

Là ngôn ngữ của chúng ta

Ví dụ: Giải thuật giải phương trình bậc nhất ax+b=0

Bước 1: Nhận giá trị của các tham số a, b.

Bước 2: Xét giá trị của a xem có bằng 0 hay không?

Nếu a=0 thì làm bước 3, nếu a khác không thì làm bước 4.

Bước 3: (a bằng 0) Nếu b bằng 0 t=> pt vô số nghiệm

Nếu b khác 0 => pt vô nghiệm

Trang 12

Ngôn Ngữ Sơ Đồ (1)

 Mô tả giải thuật bằng bằng các sơ đồ hình khối đã được (quy ước trước)

Trang 13

Ngôn Ngữ Sơ Đồ (2)

Ví dụ: Dùng lưu đồ để biểu diễn giải thuật tìm UCLN nêu trên như sau:

Trang 15

Một Số Giải Thuật Cơ Bản (1)

Trang 17

Các Cấu Trúc Suy Luận Cơ Bản

Của Giải Thuật (1)

Giải thuật được thiết kế theo 3 cấu trúc suy luận cơ bản:

Tuần tự (Sequential):

Các công việc được thực hiện tuần tự, công việc này nối tiếp công việc kia

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

Lựa chọn một công việc để thực hiện căn cứ vào một điều kiện nào đó

Cấu trúc 1: Nếu < điều kiện> (đúng) thì thực hiện <công việc>

Trang 18

Các Cấu Trúc Suy Luận Cơ Bản

Của Giải Thuật (2)

Trang 19

Từ Giải Thuật Đến Chương

Trình

Cả 2 đều là tập các chỉ thị (instruction) – làm thế nào để giải quyết 1 công việc (task).

Giải thuật

Chương trình

giải thuật

Trang 20

“Kiểu dữ liệu là một tập hợp các giá trị có cùng một

tính chất và tập hợp các phép toán thao tác trên các giá trị đó”.

Có 2 loại

Kiểu dữ liệu sơ cấp

Kiểu dữ liệu có cấu trúc

Trang 21

Kiểu Dữ Liệu Sơ Cấp

“ Kiểu dữ liệu sơ cấp là kiểu dữ liệu mà giá trị của nó là đơn nhất”.

Ví dụ: Kiểu int trong C

là kiểu sơ cấp

gồm các số nguyên từ -32768 32767

và các phép toán: +, -, *, /, %…

Trang 22

Kiểu Dữ Liệu Có Cấu Trúc

“Kiểu dữ liệu có cấu trúc là kiểu dữ liệu mà các giá trị của

Trang 23

Ngôn Ngữ Lập Trình

Khái niệm về ngôn ngữ lập trình

Chương trình dịch

Trang 25

Ngôn Ngữ Máy (machine

language)

 Là các chỉ thị dưới dạng

nhị phân, can thiệp trực

tiếp vào trong các mạch

điện tử

 Có thể được thực hiện

ngay không cần qua

bước trung gian nào

 Tuy nhiên chương trình

viết bằng ngôn ngữ máy 3

Trang 26

thì chương trình đó phải được dịch

sang ngôn ngữ máy Công cụ thực

hiện việc dịch đó được gọi là

Assembler

Assembly Language

INPUT a ; Nhập giá trị cho a từ bàn phím

LOAD a ; Đọc giá trị a vào thanh ghi tổng A

PRINT a; Hiển thị giá trị của a ra màn hình.

INPUT b ADD b ; Cộng giá trị của thanh ghi tổng A ;với giá trị b

Trang 27

Ngôn Cấp Cao (High level

language )

 Rất gần với ngôn ngữ con người

 Một chương trình viết bằng ngôn

ngữ cấp cao được gọi là chương

trình nguồn (source programs)

 Để máy tính "hiểu" và thực hiện

được các lệnh trong chương trình

nguồn thì phải có một chương

Trang 29

LẬP TRÌNH CĂN BẢN

Phần 2 - Chương 1 GIỚI THIỆU VỀ NGÔN NGỮ C

& MÔI TRƯỜNG TURBO C 3.0

N.C Danh

Trang 32

Lịch Sử (2)

Dennis Ritchie(trái) và

Ken Thompson

trước hệ thống

PDP-11 với 2 text-terminal (1972)

Trang 34

Lịch Sử (4)

C được chuẩn hóa vào năm 1989 bởi ANSI (American

National Standards Institute) , được biết như ANSI C

Được chuẩn hóa ISO (International standard) năm 1990

(chuẩn này cũng được ANSI chấp nhận và được biết như C89)

Được cập nhật năm 1995 (C95) và 1999 (C99).

Trang 36

Những đặc điểm của C (2)

Tính linh động (flexible):

Cú pháp rất uyển chuyển, chấp nhận nhiều cách thể hiện

Có thể thu gọn kích thước của mã lệnh

Làm chương trình chạy nhanh hơn

Trang 37

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

Turbo C do hãng Borland cung cấp.

Có các chức năng: soạn thảo chương trình, dịch, thực thi chương trình, …

Phiên bản được sử dụng ở đây là Turbo C 3.0

Trang 38

Gọi Turbo C

Trang 39

Soạn thảo chương trình mới

Vào menu File ->New

#include <stdio.h>

#include<conio.h>

int main () {

char ten[50];

Trang 40

Ghi chương trình đang soạn

thảo vào đĩa

 Sử dụng File->Save hoặc gõ phím F2

 Lệnh Save As để lưu chương trình với tên khác

Tên hiện tại (tên

cũ)

Tên mới ( kể cả tên thư mục)

Trang 41

Qui tắc đặt tên tập tin (file)

Theo quy tắc đặt tên tập tin của DOS

Tên của tập tin gồm 2 phần: phần tên và phần mở rộng

Phần tên:

Bắt đầu là 1 ký tự từ a z (không phân biệt hoa thường).

Theo sau có thể là các ký tự từ a z, các ký số từ 0 9 hay dấu gạch

dưới (_), phần này dài tối đa là 8 ký tự.

Phần mở rộng:

Dài tối đa 3 ký tự.

Ví dụ:

Trang 42

 Thoát khỏi Turbo C

 Vào menu File->Exit hoặc

nhấn Alt-X

Trang 43

Các lệnh trên menu Option

Directories:

Include directories: chứa các

tập tin ta muốn đưa vào

chương trình (file h trong

dòng #include).

Library directories: chứa các

tập tin thư viện (file lib)

Output directory: chứa các

tập tin “đối tượng “ obj và exe

sau khi biên dịch chương

trình

Source directories: chứa

các tập tin “nguồn” (.obj và

Trang 44

LẬP TRÌNH CĂN BẢN

Phần 2 - Chương 2 CÁC THÀNH PHẦN CƠ BẢN

CỦA NGÔN NGỮ C

N.C Danh

Trang 45

Nội dung chương này

Trang 46

Bộ chữ viết trong C

Bộ chữ viết trong ngôn ngữ C bao gồm các ký tự sau:

26 chữ cái latinh lớn A,B,C Z

26 chữ cái latinh nhỏ a,b,c z.

10 chữ số thập phân 0,1,2 9.

Các ký hiệu toán học: +, -, *, /, =, <, >, (, )

Các ký hiệu đặc biệt: : , ; " ' _ @ # $ ! ^ [ ] { }

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

Trang 47

Các từ khóa trong C

 Từ khóa là các từ dành riêng của C.

của riêng mình.

Trang 48

printf(“Xin cho biet ten cua ban !”);

scanf(“%s”,ten); /*Doc vao 1 chuoi la ten ban*/

printf(“Xin chao ban %s\n ”,ten);

//Dung chuong trinh, cho go phim

getch();

return 0;

}

Trang 49

Các kiểu dữ liệu sơ cấp chuẩn

trong C

Kiểu số nguyên (integer)

Kiểu số thực (real)

Trang 50

Kiểu số nguyên

Được dùng để lưu các giá trị nguyên hay còn

gọi là kiểu đếm được.

Kiểu số nguyên 1 byte (8 bits)

Kiểu số nguyên 2 bytes (16 bits)

Kiểu số nguyên 4 byte (32 bits)

Trang 51

Kiểu số thực

 Được dùng để lưu các số thực hay các số có dấu

chấm thập phân

Kiểu void

Trang 54

Chú ý khi đặt tên

Trang 55

Tên do người lập trình tự đặt

Ví dụ:

Phải tuân thủ quy tắc:

Độ dài tối đa của tên là 32 ký tự, tuy nhiên cần đặt sao cho rõ ràng,

Trang 57

Cách 2: viết theo số mũ hay số khoa học

Một số thực được tách làm 2 phần (phân cách bởi e/E)

Phần giá trị: như cách 1

Phần mũ: là một số nguyên

Trang 58

0

8

*

Trang 60

Hằng số nguyên (3)

Ví dụ: Kết quả của chương trình sau là gi?

Trang 61

Hằng số nguyên (4)

Hằng số nguyên 4 byte (long)

l hoặc L

Ví dụ:

45345L hay 45345l hay 45345

Trang 62

Hằng ký tự (char)

Ví dụ: ‘a’, ‘A’, ‘0’, ‘9’

 Là 1 ký tự được viết trong

cặp dấu nháy đơn (‘)

 Mỗi một ký tự tương ứng với

ASCII = American Standard

Code for Information

Interchange

Trang 63

Hằng chuỗi ký tự

Ví dụ: “Ngon ngu lap trinh C”

Chú ý:

“” : chuỗi rỗng - không có nội dung

Khi lưu trữ trong bộ nhớ, một chuỗi được kết thúc bằng ký tự NULL

(‘\0’: mã Ascii là 0)

Để biểu diễn ký tự đặc biệt bên trong chuỗi ta phải thêm dấu \ phía trước.

Ví dụ:

Trang 64

 Giá trị của biến có thể bị thay đổi.

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

<Kiểu dữ liệu> Danh sách các tên biến cách nhau bởi dấu phẩy;

Trang 65

Khởi tạo giá trị cho biến lúc

khai báo

Ví dụ:

Cách viết giá trị cho biết luôn kiểu của nó:

Trang 66

Vị trí khai báo biến (1)

Biến ngoài

(biến toàn cục)

Trang 67

Vị trí khai báo biến (2)

Trang 68

Toán tử con trỏ & và *

Trang 69

Các toán tử số học (1)

Trang 71

Các toán tử số học (3)

Đâu là sự khác nhau?

x++ trả về giá trị hiện hành của x và sau đó tăng x

++x tăng x trước và sau đó trả về giá trị mới của x

Trang 72

false Giá trị 0true Bất kỳ giá trị nào ngoại trừ 0

Trang 73

Các toán tử quan hệ và các toán

tử Logic (1)

Các phép so sánh sau tạo ra các biểu thức logic có giá trị

kiểu Boolean

Trang 75

Các toán tử quan hệ và các toán

tử Logic (3)

Bảng chân trị cho các toán tử Logic

Thứ tự ưu tiên

Trang 76

Các toán tử Bitwise(cho lop nghi

hoc roi)

Toán tử Bitwise giúp kiểm tra,

gán hay thay đổi các bit thật sự

trong 1 byte của word.

Chỉ dùng cho kiểu char và int

Trang 78

=>Đặt vào biến m địa chỉ bộ nhớ của biến count

Toán tử * trả về nội dung của ô nhớ mà một con trỏ đang chỉ vào

Ví dụ:

x = *p; // x=5

Trang 79

Toán tử dấu phẩy

Ví dụ :

x = (y=3,y+1);

Trước hết gán 3 cho y rồi gán 4 cho x

Được sử dụng để kết hợp các biểu thức lại với nhau

Bên trái của dấu (,) luôn được xem là kiểu void

Biểu thức bên phải trở thành giá trị của tổng các biểu

Trang 80

Tổng kết về độ ưu tiên

Tổng kết về độ ưu tiên

Trang 81

Phép gán được viết gọn lại

x= x <phép toán> y;

có thể được viết gọn lại (short form):

Trang 82

Các tập tin thư viện thông

dụng

stdio.h: Định nghĩa các hàm vào/ra chuẩn (standard

input/output):printf(), scanf(), getc(), putc(), gets(), puts(), fflush(),

fopen(), fclose(), fread(), fwrite(), getchar(), putchar(), getw(), putw()…

conio.h: Định nghĩa các hàm vào ra trong chế độ DOS: clrscr(), getch(), getche(), getpass(), cgets(), cputs(), putch(), clreol(),…

math.h: Định nghĩa các hàm tính toán: abs(), sqrt(), log() log10(), sin(), cos(), tan(), acos(), asin(), atan(), pow(), exp(),…

alloc.h: Định nghĩa các hàm liên quan đến việc quản lý bộ nhớ: calloc(), realloc(), malloc(), free(), farmalloc(), farcalloc(), farfree(), …

io.h: Định nghĩa các hàm vào ra cấp thấp: open(), _open(), read(),

_read(), close(), _close(), creat(), _creat(), creatnew(), eof(), filelength(), lock(),…

graphics.h: Định nghĩa các hàm liên quan đến đồ họa: initgraph(),

line(), circle(), putpixel(), getpixel(), setcolor(), …

Trang 83

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

Trang 84

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

(2)

Chương trình chính

Cài đặt các hàm

Trang 85

Tiền xử lý và biên dịch (preprocess

Trang 87

Chia chương trình ra các

module (2)

Vấn đề: testmodule.c phải biết các

prototype của foor và bar.

Giải pháp 1 (tệ):

Chèn tay các prototype vào các file c có

dùng nó.

phải chỉnh lại prototype trong tất cả các

file c dùng nó.

Giải pháp 2 (tốt):

Trang 88

#include

filename bằng nội dung của filename.

Các header file sẽ được tìm ở đâu?

#include <file.h>: tìm file.h trong thư mục đã được xác định trong

INCLUDE DIRECTORIES Hoặc trong /usr/include (linux)

#include “C:\\TC\\file.h ”: tìm file.h trong đường dẫn

Trang 89

LẬP TRÌNH CĂN BẢN

Phần 2 - Chương 3 CÁC CÂU LỆNH ĐƠN

TRONG C

Trang 90

Lệnh nhập giá trị từ bàn phím cho biến

Lệnh xuất giá trị của biểu thức lên màn hình

Trang 91

Khái niệm câu lệnh

“1 câu lệnh xác định 1 công việc mà chương trình phải thực hiện”

Kết thúc bởi ;

Trang 92

cấu trúc điều kiện rẽ nhánh

cấu trúc điều kiện lựa chọn

cấu trúc lặp

cấu trúc lệnh hợp thành

Trang 93

Các lệnh đơn

Lệnh gán

Lệnh nhập giá trị từ bàn phím cho biến

Lệnh xuất giá trị của biểu thức lên màn hình

Trang 94

Lệnh gán (1)

Ví dụ:

Cú pháp:

<Tên biến> = <biểu thức>;

Ý nghĩa: Gán giá trị cho 1 biến

Gán giá trị ngay tại lúc khai báo:

Trang 95

Lệnh gán (2)

Kiểu của biểu thức và của biến phải giống nhau

Trang 96

Lệnh gán (3)

Thường thì có sự chuyển đổi kiểu tự động nếu có thể.

Chuyển được

Trang 97

Lệnh gán (4)

Kết quả chương trình sau là gì?

Trang 98

Lệnh gán (5)

Trong C, các chuyển đổi kiểu sau được làm tự động.

Những chuyển đổi trên đảm bảo không làm mất đi sự chính xác (loss of precision)

Việc chuyển đổi theo các hướng khác có thể làm mất sự chính xác

Ví dụ:

Trang 99

Lệnh gán (6)

Trang 100

Lệnh nhập giá trị từ bàn phím

cho biến (1)

cách biểu diễn, độ rộng, số chữ số thập phân, …

Trang 101

Lệnh nhập giá trị từ bàn phím

cho biến (2)

scanf phải lưu giá trị vào 1 biến

hiện hành của 1 biến.

xác định.

Trang 102

Ví dụ - Dùng Standard Input

Trang 103

Lệnh xuất giá trị của biểu thức

Trang 104

Lệnh xuất giá trị của biểu thức

lên màn hình (2)

Nếu muốn in ra các biến và biểu thức, ta truyền nó vào

printf như các đối số.

Các định dạng (format) khác nhau cho các kiểu giá trị khác nhau (dùng %).

Trang 105

Lệnh xuất giá trị của biểu thức

lên màn hình (3)

Trang 106

Ví dụ - Output từ C

Hết chương

Trang 107

Giải thích thêm về printf

Trang 109

Nội dung chương này

Trang 110

Khối lệnh trong C (1)

Là 1 dãy các khai báo cùng với các câu lệnh nằm trong cặp dấu ngoặc móc { và }

Trang 111

Khối lệnh trong C (2)

1 khối lệnh có thể chứa nhiều khối lệnh khác gọi là khối lệnh lồng nhau (không hạn chế).

Trang 112

Phạm vi các biến

Có thể khai báo các biến cùng

tên trong các khối.

Nếu một biến được khai báo

bên ngoài khối lệnh và không

trùng tên với biến bên trong

khối lệnh thì nó cũng dùng

được bên trong khối.

Một khối lệnh con có thể sử

dụng các biến bên ngoài, nhưng

điều ngược lại không đúng.

Trang 116

Câu lệnh và khối lệnh

C cho phép nhóm các câu lệnh liên tiếp vào 1 khối.

1 khối lệnh có thể được dùng như 1 lệnh đơn.

Ví dụ:

Trang 117

Nhầm lẫn khi dùng if

Trang 118

Chú ý khi dùng if-else

Câu lệnh if-else lồng nhau

else sẽ kết hợp với if gần nhất chứa có else

Trong trường if bên trong không có else thì phải viết nó

trong cặp dấu {} để tránh sự kết hợp else if sai.

Ví dụ

Trang 119

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

(switch-case) (1)

C cung cấp 1 cấu trúc đẹp - dùng 1 dãy các câu lệnh if.

Trang 121

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

(switch-case) (3)

Cú pháp:

Tính giá trị của biểu thức expr trước.

Nếu giá trị expr bằng value1 thì thực hiện statement_sequence1 rồi thoát.

Nếu giá trị expr khác value1 thì so sánh nó với value2 , nếu bằng value2

thì thực hiện statement_sequence2

rồi thoát.

Cứ như thế, so sánh tới giá trị n

Trang 123

Ví dụ - switch-case (1)

Trang 124

Ví dụ - switch-case (2)

In ra số ngày của 1 tháng

Trang 126

Nếu giá trị biểu thức 2 là

sai (==0) => thoát khỏi for

Nếu giá trị biểu thức 2 là

đúng (!=0) => thực hiện

<Công việc>

B3: Tính giá trị biểu thức 3

rồi quay lại B2

for (Biểu thức 1; biểu thức 2; biểu thức 3) <Công việc>;

Trang 127

Vòng lặp for (2)

Trang 128

Vòng lặp for (2)

Chương trình in dãy số nguyên từ 1 10

output

Trang 129

Vòng lặp for (3)

Nhập số nguyên n Tính tổng các số nguyên từ 1 n.

Trang 130

- Nếu điều kiện sai (==0) thì

thoát khỏi lệnh while.

- Nếu điều kiện đúng (!=0) thì

thực hiện công việc rồi quay

lại kiểm tra điều kiện tiếp.

while (Biểu thức điều kiện) <Công việc>;

Trang 131

Vòng lặp while (2)

Chương trình in dãy số nguyên từ 1 10

Trang 132

Vòng lặp while (3)

Nhập số nguyên n Tính tổng các số nguyên từ 1 n.

output

Ngày đăng: 19/04/2022, 00:00

TRÍCH ĐOẠN

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

TÀI LIỆU LIÊN QUAN

w