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

Bài giảng Kĩ thuật lập trình (Chương 1 - 6) ppt

18 562 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 đề Bài Giảng Kĩ Thuật Lập Trình (Chương 1 - 6)
Trường học Trường Đại Học Công Nghệ Thông Tin
Chuyên ngành Kỹ Thuật Lập Trình
Thể loại Bài Giảng
Năm xuất bản 2023
Thành phố Hồ Chí Minh
Định dạng
Số trang 18
Dung lượng 1,54 MB

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

Nội dung

• Giải thích được các bước để giải một bài toán bằng máy tính... 1.5.Chương trình- Program • Chương trình: Tập các lệnh máy mà CPU phải thực thi nhằm giải một bài toán.. • Cách giải 1

Trang 1

Chương 1 GiỚI THIỆU VỀ THUẬT TOÁN

Mục tiêu

• Hiểu được Thuật toán là gì ?

• Mô tả những thuật toán cơ bản

• Giải thích được các bước để giải một bài toán bằng máy tính

Nội dung

• Giới thiệu tổng quan

• Khái niệm về thuật toán

• Các phương pháp biểu diễn thuật toán

1.1- Giới thiệu tổng quan

• Thông tin (information)

– Cho biết giá trị của 2 số nguyên – Thông báo kết quả tính tổng

• Dữ liệu (data)

– Chứa số nguyên thứ 1 – Chứa số nguyên thứ 2 – Chứa số nguyên tổng kết quả

Ví dụ : Thực hiện phép tính cộng 2 số nguyên

1.2.Lưu trữ dữ liệu

• Một dữ liệu phải có vùng nhớ chứa nó

• Nhiều dữ liệu cần vùng nhớ lớn

• Hai loại lưu trữ dữ liệu thường dùng:

số

số nguyên nhỏ số nguyên lớn số thực

ký tự

chuỗi ký tự

1.3.Dạng biểu diễn dữ liệu và toán

tử

Dạng biểu diễn số nhị phân

+

00000011 00000010 00000101

00000011

00000010

00000101

Đúng

Cộng hai biểu diễn số nhị phân cho kết qủa là một biểu diễn nhị phân đúng kết qủa đang mong đợi

Trang 2

1.4.Lệnh máy- Machine Instruction

• Một dữ liệu quy định cách CPU thực thi 1 tác vụ

cơ bản

• Dạng 1 lệnh máy:

110111 1000100101101 1010011001011

Tác vụ Toán hạng 1 Toán hạng 2

(cộng) (address 1) ( address 2)

• Có thể có toán hạng 3 (dữ liệu chứa kết qủa)

• Dạng lệnh máy phụ thuộc kiến trúc CPU

• Lệnh máy là lệnh nhị phân

1.5.Chương trình- Program

• Chương trình: Tập các lệnh máy

mà CPU phải thực thi nhằm giải một bài toán

• Một chương trình là 1 tập tin có phần mở rộng tùy thuộc vào hệ điều hành

• Thông thường 1 chương trình

có tên mở rộng: exe, com

• CPU chạy 1 chương trình theo cách tuần tự từng lệnh

1001001000101

1100110011000

0101001100110

1010110100001

1.6.Thuật toán - Algorithm

• Cách diễn giải một bài toán

• Cách tiếp cận để giải bài toán

• Muốn giải thì phải biết cách giải

• Cách giải 1 bài toán cụ thể là 1 thuật toán

cụ thể

• Mô tả 1 thuật toán là diễn đạt các bước

thực thi của thuật toán đó

• Dùng ngôn ngữ tự nhiên

• Dùng lưu đồ (flowchart)

• Mã giả

1.7.Biểu diễn thuật toán

Ví dụ : Thực hiện phép tính cộng 2 số nguyên

Thuật toán - Mô tả bằng ngôn ngữ

tự nhiên

3 5

năm

Yếu điểm của cách diễn đạt

bằng NNTN

• NNTN có nhiều cách diễn đạt khác nhau cho 1 thuật toán

• Dùng NNTN để diễn đạt thuật toán có khả

năng gây “hiểu sai ”

Trang 3

• Dùng hình vẽ (graphic) để mô tả một thuật toán

• Trong lưu đồ chỉ rõ tiến trình thực thi thuật toán

• Không thể hiểu lầm vì có quy tắc để vẽ

Thuật toán - Mô tả bằng lưu đồ

(Flowchart)

• Điểm bắt đầu và kết thúc

• Hướng tính toán

• Nhập/xuất

• Tính toán

• Lựa chọn ½

• Lựa chọn 1/n

• Điểm ráp nối khi lưu đồ lớn

Begin End

Nhập a c=a+b

2

9

7

5 d

X X yes

no a>0

Xuất c B1: Nhập số nguyên a

B2: Nhập số nguyên b B3: c = a+b;

B4: Xuất số nguyên c

Begin Nhập a Nhập b c=a+b

End Xuất c

Thuật toán - Mô tả bằng mã giả

(Pseudo code)

• Mã giả thực chất là ngôn ngữ tự nhiên có pha lẫn một số cách viết của ngôn ngữ lập trình

Minh họa: Thực hiện phép tính cộng 2 số nguyên

1.8.Minh họa: Giải thuật tìm trị lớn nhất

trong 3 số

B1: t = a;

B2: if (t<b) t=b;

B3: if (t<c) t=c;

B4: Xuất t;

5

7

2

7

a

b

c

Bảy

Nếu muốn nhập 3 số a, b, c thì thêm những gì vào giải thuật và thêm vào đâu?

no

Begin

End

t=a t<b

t<c

yes

no yes

t=b

t=c

Xuất t

5

Chương 2 NGÔN NGỮ LẬP TRÌNH

2.1.KHÁI NIỆM VỀ NGÔN NGỮ LẬP

TRÌNH

1001001000101

1100110011000

0101001100110

1010110100001

Bótay.com?

• Lập trình: tạo ra 1 chương trình

trình bằng tiếng Anh( ngôn ngữ con người) rồi giúp chuyển sang ngôn ngữ máy

Ngôn ngữ lập trình : Tập quy định về cách diễn đạt 1 chương trình ( văn phạm của ngôn ngữ)

Phần mềm ngôn ngữ : Một chương trình máy tính cho phép: soạn thảo, biên dịch, kiểm lỗi cú pháp, thực thi chương trình

2.1.KHÁI NIỆM VỀ NGÔN NGỮ LẬP

TRÌNH

Trang 4

2.2.Dịch chương trình- Translating

Chương trình

theo ngôn ngữ

lập trình

Biên dịch Compile (dịch toàn bộ) Chương trình

Chương trình

theo ngôn ngữ

lập trình

Thông dịch Interpreting (dịch từng câu) 1 lệnh

CPU thực thi

2.3.Các loại ngôn ngữ lập trình thông

dụng

• Ngôn ngữ lập trình Hợp ngữ

• Ngôn ngữ lập trình Basic

• Ngôn ngữ lập trình Pascal

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

• Ngôn ngữ lập trình Java

• …

2.4.Lập trình tuần tự - tuyến tính

• Ngôn ngữ lập trình Hợp ngữ thuộc loại

ngôn ngữ lập trình tuyến tính

• Các phần của chương trình nối nhau theo

dãy dài, làm khó hiểu về mặt logic

• Việc điều khiển chương trình được thực

hiện bằng cách nhảy lung tung, khó kiểm

soát

• Mọi dữ liệu đều toàn cục, nên các thành

phần của chương trình có thể làm thay đổi

2.5.Lập trình cấu trúc

• Ngôn ngữ lập trình Pascal hay C thuộc loại ngôn ngữ lập trình cấu trúc.

• Chương trình được chia nhỏ thành các hàm (function) thực hiện một chức năng chuyên biệt

• Có thể coi hàm là các chương trình thu nhỏ, liên kết lại với nhau để xây dựng nên ứng dụng

• Dễ bảo trì, tăng độ tin cậy, chính xác

• Biến toàn cục giảm, biến cục bộ tăng lên

• Khi thay đổi cấu trúc dữ liệu dùng chung thì nhóm lập trình cùng viết chung chương trình bị ảnh hưởng

2.6.Lập trình Hướng đối tượng

• Ngày nay, C++ hay C#, java… thuộc loại ngôn

ngữ lập trình hướng đối tượng.

• Trừu tượng dữ liệu, không bận tâm chi tiết cài

đặt cụ thể

• Có thể sử dụng lại một cách dễ dàng hay nâng

cấp các đối tượng

• Càng dễ bảo trì, tăng độ tin cậy, chính xác

• Bước 1: Hiểu kỹ và biết cách giải bài toán

– Xác định dữ liệu liên quan đến bài toán – Hiểu các thao tác lên dữ liệu

• Bước 2: Tìm một giải thuật để giải

– Sắp xếp các thao tác sao cho có thứ tự hợp lý

• Bước 3: Viết chương trình theo ngôn ngữ

– Mở trình soạn thảo

– Viết chương trình theo ngôn ngữ đã chọn

– Biên dịch chương trình và sửa lỗi cú pháp

– Chạy chương trình, kiểm tra kết qủa

2.7.Các bước xây dựng chương trình

Trang 5

2.7.Các bước xây dựng chương trình

Bài toán Phân tích

Dữ liệu Giải thuật

Dùng Editor NNLT

Chương trình ngôn ngữ Start

Yes Lỗi cú pháp

No

Kq đúng

?

End

Chương trình

mã máy

Xin cám ơn

Tài liệu tham khảo

• “Lập trình C”, Quách Tuấn Ngọc, Nhà Xuất Bản Giáo dục

2004

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

Nhà Xuất Bản Khoa Học Kỹ Thuật – 1996

• “Giáo trình ngôn ngữ C”, Lê Hoài Bắc – Lê Hoàng Thái –

Nguyễn Tấn Trần Minh Khang – Nguyễn Phương Thảo, Nhà

Xuất Bản Đại Học Quốc Gia Tp Hồ Chí Minh – 2003

• “Giáo trình lý thuyết & Bài tập ngôn ngữ C”, Nguyễn

Đình Tê – Hoàng Đức Hải, Nhà Xuất Bản Mũi Cà Mau

• “Bài tập ngôn ngữ C từ A đến Z”, Huỳnh Tấn Dũng –

Hoàng Đức Hải, Nhà Xuất Bản Lao Động – Xã Hội

Chương 3

MỞ ĐẦU VỀ NGÔN NGỮ C

Nội dung

• Nhận biết tập ký tự dùng trong C

• Nhận biết một số từ khóa của C

• Nhận biết tổ hợp ESCAPE của C

• Dạng thức của một chương trình C

• Chỉ thị tiền xử lý

• Nhận biết các kiểu dữ liệu cơ bản của C

• Tự định nghĩa được kiểu dữ liệu

• Định nghĩa và phân biệt được hằng và biến

• Nhận diện và sử dụng được các toán tử của C

• Biết sử dụng các cấu trúc điều khiển của C

3.1 Tập ký tự của C –

Character set

• Digits: 0 9

• Letters- alphabet characters: a z, A Z

• Special characters: + - * / % & ! # ^ & …

 Các ký tự in được của bàn phím chuẩn

Trang 6

3.2 Từ khóa – Keywords

• Là những từ ngôn ngữ C đã định nghĩa sẵn cho người lập

trình sử dụng để thiết kế chương trình

• Là thành phần cơ bản để tạo câu lệnh trong C

• Bao gồm các nhóm:

– Kiểu số nguyên : char , int , short , unsigned , long

– Kiểu số thực: float , double

– Kiểu rời rạc : enum

– Kiểu cấu trúc : struct , union

– Kiểu rỗng: void

– Tự định kiểu: typedef

– Khai báo hằng: const , define

– Khai báo biến: static , extern , auto, register, volatile

– cấu trúc chọn : if , else , switch , case , default

– cấu trúc lăp: for , while , do

– Từ khóa điều khiển: break , continue , return , goto

– …

• Do người lập trình tự định nghĩa, dùng đặt tên cho

• Tên là 1 từ, chiều dài 1 từ : Có thể tự ấn định bằng Menu Options / Compiler / Source / Identifier Length

• Các từ trong C phân biệt chữ hoa chữ thường (case-sensitive)

Hãy cho biết các tên sau tên nào là hợp lệ?

m _12 _m12 12m 6L

Hãy cho biết các tên sau có cùng ngữ nghĩa hay không?

delta Delta dElta DELTA

„a‟ ‟z‟, „A‟ ‟Z‟

„_‟ (gạch nối)

„0‟ ‟9‟

„a‟ ‟z‟, „A‟ ‟Z‟

„_‟ (gạch nối)

3.4 Chuỗi

ESCAPE

• Escape: thoát, bỏ qua

• Chuỗi escape bắt đầu

bằng ký tự „\‟ mang ý

nghĩa bỏ qua ý nghĩa

thông thường của ký

tự đứng sau ký tự

này

• Do đó chuỗi escape

mang một ý nghĩa đặc

biệt

Cách viết Tên gọi Ý nghĩa

'\'' Single quote Ký tự '

'\"' Double quote Ký tự "

'\\' Backslash Ký tự \

‘\?’ Question mark Ký tự ?

‘\a’ Alert Phát tiếng Beep ra loa

'\n' New line Xuống dòng mới

'\0' NULL Rỗng

'\t' Horizontal tab Di chuyển con nhấp nháy

tới vị trí tab kế tiếp

'\b' Backspace Lùi con nhấp nháy 1 vị trí

'\r' Carriage return Đưa con nhấp nháy về

đầu dòng

'\f' Form feed Sang trang kế tiếp

3.5.Các kiểu dữ liệu cơ bản của C

– Data types

• Kích thước và phạm vi của kiểu dữ liệu phụ thuộc

vào trình biên dịch ( xem file Định dạng limit.hfloat.h ) Nhập/Xuất Kiểu

Số

%c unsigned c har 1 0 255

%c c har 1 -128 127

%u u nsigned int 2 0 65,535

%d, %i i nt 2 - 32,768 32,767

%lu u nsigned l ong <int> 4 0 4,294,967,295

%ld, %li l ong < i nt> 4 -2,147,483,648 2,147,483,647

%f f loat 4 3.4 * (10 -38 ) 3.4 * (10 +38 )

%lf double ( l ong f loat) 8 1.7 * (10 -308 ) 1.7 * (10 +308 )

%lf long double 10 3.4 * (10 -4932 ) 1.1 * (10 +4932 )

• Cách 1:Dùng macro Ví dụ:

• Cách 2: Dùng từ khóa const Ví dụ:

Hay là:

• Đặt một tên gọi cho một nội dung

• Còn gọi là macro

#include <stdio.h>

#include <conio.h>

#define PI 3.141592

void main() { printf("%lf", 3.141592 *3.2*3.2);

getch();

}

Thay thế trị trước khi biên dịch

Trang 7

Hiệu ứng lề – Side effect

#include <stdio.h>

#include <conio.h>

#define PI =3.141592;

void main() { printf("%lf", =3.141592; *3.2*3.2);

getch();

}

Error!

#include <stdio.h>

#include <conio.h>

#define Area(x) x*x void main() { printf("%lf", 3+2*3+2);

getch();

}

Không được mong đợi

#define Area(x) (x)*(x)

(3+2)*(3+2) OK

Thí dụ:

-Hằng không kiểu: trình biên dịch dùng bộ nhớ ít nhất để chứa, tối thiểu là 2 bytes

-Hằng có kiểu sẽ buộc trình biên dịch phải dùng đúng kiểu đã chỉ định để lưu trữ trị hằng

-Hằng chuỗi ký tự được để

trong cặp nháy đôi

-Hằng ký tự được để trong cặp nháy đơn

Toán tử sizeof(data) cho biết số byte

mà data này chiếm chỗ

• Biến phải thuộc 1 kiểu dữ liệu

• Khai báo biến:

• 2 biến cùng kiểu cách nhau dấu phẩy

• C chuẩn chỉ cho phép khai báo biến ở đầu

chương trình Còn C++, cho phép khai báo biến

bất kỳ chỗ nào nếu thấy cần Ví dụ:

int m=3 ; long t1=23 , t2=3*t1;

double z1 , z2 , z3 ; char c1 , c2 = „A‟ ;

<Kiểu dữ liệu> tênbiến;

Ví dụ

Lỗi “khai báo kết thúc không đúng cách” vì khai báo xong biến t,

sang biến kiểu khác mà để dấu “phẩy”

Đáng lẽ phải là dấu “chấm phẩy”

Đúng về Syntax,

nhưng Sai về Lý luận

3.8 Cấu trúc một chương trình

C

/* CHAO.CPP Chuong trinh minh hoa don gian */

// Xuat chuoi “ Chao cac ban ” ra man hinh

#include <stdio.h>

#include <conio.h>

void main()

{ clrscr();

printf(“ Chao cac ban ");

getch();

}

/*…*/ Khối chú thích // Chú thích đến cuối dòng

Khai báo sử dụng thư viện

Chương trình chính , bắt buộc là main()

; kết thúc 1 câu lệnh đơn

Trang 8

Ví dụ: Cấu trúc một chương

trình C

Từ nay về sau, chúng

ta nên thêm phần chú thích để gợi nhớ

• Dùng để giải thích chương trình

• Chú thích 1 dòng: chỉ dùng trong C++

// Chú thích

• Chú thích nhiều dòng: C/C++

/* Các dòng chú thích ……

*/

• Dòng chú thích được bỏ qua khi biên dịch

Chỉ thị tiền xử lý – Preprocessor

indicators

• Còn được gọi là chỉ thị tiền biên dịch vì

đây là những chỉ thị mà trình biên dịch

phải làm trước khi chuyển chương trình C

thành chương trình mã máy

Cách làm việc của chỉ thị

#include

nội dung file stdio.h nội dung file conio.h code chương trình

Compile

Chỉ thị #include : Chèn 1 file

• Lưu ý: Không nên có khoảng trống giữa < , > và tên

file vì trong cặp ký tự này được hiểu là tên file

Lưu ý chỉ thị

#include

Không có khoảng trắng

có khoảng trắng (Error)

Trang 9

Chương 4 NHẬP XUẤT DỮ LIỆU TRONG C

Nội dung

• Macro:

• Functions:

– int getch(); // tương tự như getchar()

– char* gets(char *s); // nhận chuỗi ký tự

– int scanf(char *format, [, address,…]);

4.2 Xuất – Output

– int putchar(int c); // xuất ký tự c ra màn hình

• Functions:

– int putch(int c); // tương tự như putchar() – int puts(const char *s); // xuất chuỗi ký tự ra // màn hình

– int printf(const char *format [, argument,…]);

– int cprintf(const char *format [, argument,…]);

Ví dụ:

Chương 5 BIỂU THỨC VÀ CÁC PHÉP

TOÁN

Trang 10

5.1 Toán tử - Operators

• Toán tử: Ký hiệu mô tả 1 phép toán cho

kết qủa 1 trị duy nhất

• Toán hạng (operand): Dữ liệu để phép

toán tác động

• Kết qủa (result): Dữ liệu mới được sinh ra

sau khi thực thi xong phép toán

• C hỗ trợ các phép toán có 1/2/3 toán hạng

1/2/3 ngôi

Các loại toán tử của C

• Các toán tử khác

Arithmetic operators

Ví dụ:

int k = 3, t = 6;

int u = k- -;

int v = - - t;

Hỏi k, t, u, v có trị bao nhiêu?

Lưu ý về Toán tử chia

Nguyên % Nguyên Kết quả Phần dư

Nguyên / Nguyên Kết quả Phần nguyên Nguyên / Thực Kết quả Thực Thực / Nguyên Kết quả Thực Thực / Thực Kết quả Thực

Phép chia

trong C

%

/

Ví dụ:

Toán tử % chỉ dùng cho số nguyên

Trang 11

5.1.2 Toán tử so sánh –

Relational operators

Ví dụ:

Toán tử so sánh

5.1.2 Toán tử luận lý – Logical

operators

Toán tử Luận lý

operators

• Khi gán trị mới cho 1 biến, trị cũ bị ghi đè 0000000000000001

x=1;

s = s / a; s /= a;

0000000000001011 x=11;

0000111

<< Left shift Right shift >>

00001110

00011100

00000011

00000001

1 bit

2 bit

14 d

28 d

7 d

3 d

1 d

Bạn có nhận xét gì ?

Trang 12

Ví dụ:

0000 0000 0000 0011

0000 0000 0000 0111

0000 0000 0000 0100 7*4  28 7/4  1

5.1.5 Các toán tử khác

• Ép kiểu (type casting) : – (kiểuT) x

– kiểuT ( x

• Quản lý bộ nhớ:

– sizeof( biến ) : Lấy kích thước byte của „biến‟

– sizeof( kiểu dữ liệu ) : Lấy kích thước byte của „kiểu dữ liệu‟

– new : Cấp phát động một vùng nhớ

– delete : Trả một nhớ đã được cấp phát động

– & biến : Lấy địa chỉ bộ nhớ của „biến‟ (địa chỉ chiếm 4 byte ở DOS)

Ví dụ về ép kiểu lớn sang kiểu nhỏ

0000 0001

0000 0000

m=256

0000 0000

c

Ép kiểu lớn sang kiểu nhỏ

thức là kiểu lớn nhất của toán hạng tham gia biểu thức

int n=3; long t=123; double x=5.3;

3*n + 620*t – 3*x ( int*int ) + ( int*long ) - ( int*double )

int + long - double

long - double

double

Hãy giải thích vì sao chương trình sau cho kết qủa sai?

Theo bạn, một hộ sử dụng

155 kwh điện một tháng và tính tiền theo công thức sau sẽ cho kết qủa đúng hay sai?

t = 100 *650+ 50 *850+ 5 *1150;

0111 1111 1111 1111

0000 0000 0000 0001

1000 0000 0000 0000 +

5.2 Độ ưu tiên của toán tử –

Operator Precedence

• Thứ tự mà một toán tử được thực hiện khi

biểu thức có nhiều toán tử

Độ ưu tiên của toán tử

• Nhìn chung độ ưu tiên:

– Cặp ngoặc từ trong ra ngoài

– Toán tử số học, nhân chia trước cộng trừ sau

– Toán tử so sánh – Toán tử luận lý – Toán tử gán

1 () [] Trái qua phải

2 ! ~ & – (dấu trừ) ++ (type ) sizeof Phải qua trái

3 * ( phép nhân ) / % Trái qua phải

4 + – (phép trừ) Trái qua phải

5 << >> Trái qua phải

6 < <= > >= Trái qua phải

7 == != Trái qua phải

8 & Trái qua phải

9 ^ Trái qua phải

10 | Trái qua phải

11 && Trái qua phải

12 || Trái qua phải

13 ?: Phải qua trái

14 = += -= *= /= %= <<=

>>= &= ^= |= Phải qua trái

15 , Trái qua phải

Ngày đăng: 25/03/2014, 05:24

TỪ KHÓA LIÊN QUAN