23
22/04/2011 1 LẬP TRÌNH C (CƠ BẢN) 1 YÊU CẦU Môi trường cài đặt: Microsoft Visual C++ 6.0 hoặc Microsoft Visual .Net 2005 (Viết ứng dụng dạng Console) Làm bài tập (tại lớp và ở nhà) đầy đủ Hình thức thi: Viết (60 phút), được tham khảo tài liệu 2 NỘI DUNG Chương 1: Khái niệm cơ bản về lập trình và môi trường cài đặt Chương 2: Giới thiệu ngôn ngữ C Chương 3: Cấu trúc điều khiển Chương 4: Hàm con Chương 5: Kiểu dữ liệu mảng 3 Chương 1 Khái niệm cơ bản về lập trình và giới thiệu môi trường cài đặt 4 LẬP TRÌNH ? Giải thuật Ngôn ngữ Lập trình 5 Các đặc điểm cần của một chương trình Đúng đắn, chính xác (correctness). Chắc chắn (robustness). Thân thiện (user friendliness). Khả năng thích nghi (adapability): Chương trình có khả năng để phát triển tiến hóa theo yêu cầu. Tính tái sử dụng (reuseability): Chương trình có thể dùng để làm một phần trong một chương trình lớn khác. Tính hiệu quả (efficiency). Tính khả chuyển (porability): Khả năng chuyển đổi giữa các môi trường. Tính an toàn (security). Tính dừng (halt). 6

C++CB.ppt - caodang.tdt.edu.vncaodang.tdt.edu.vn/Upload/file/Tailieuhoctap/Tinhoc/Doan Xuan Thanh... · 1 LẬP TRÌNH C (CƠ BẢN) 1 YÊU ... LẬP TRÌNH ? Giải thuật Ngôn

Embed Size (px)

Citation preview

Page 1: C++CB.ppt - caodang.tdt.edu.vncaodang.tdt.edu.vn/Upload/file/Tailieuhoctap/Tinhoc/Doan Xuan Thanh... · 1 LẬP TRÌNH C (CƠ BẢN) 1 YÊU ... LẬP TRÌNH ? Giải thuật Ngôn

22/04/2011

1

LẬP TRÌNH C (CƠ BẢN)

1

YÊU CẦU

Môi trường cài đặt: Microsoft Visual C++6.0 hoặc Microsoft Visual .Net 2005 (Viếtứng dụng dạng Console)

Làm bài tập (tại lớp và ở nhà) đầy đủ Hình thức thi: Viết (60 phút), được tham

khảo tài liệu

2

NỘI DUNG

Chương 1: Khái niệm cơ bản về lập trìnhvà môi trường cài đặt

Chương 2: Giới thiệu ngôn ngữ C Chương 3: Cấu trúc điều khiển Chương 4: Hàm con Chương 5: Kiểu dữ liệu mảng

3

Chương 1 Khái niệm cơ bản

về lập trình và giới thiệu môi trường cài đặt

4

LẬP TRÌNH ?

Giải thuật

Ngôn ngữLập trình

5

Các đặc điểm cần có của một chương trình

Đúng đắn, chính xác (correctness).Chắc chắn (robustness).Thân thiện (user friendliness).Khả năng thích nghi (adapability): Chương trình có khả

năng để phát triển tiến hóa theo yêu cầu.Tính tái sử dụng (reuseability): Chương trình có thể

dùng để làm một phần trong một chương trình lớn khác.Tính hiệu quả (efficiency).Tính khả chuyển (porability): Khả năng chuyển đổi giữa

các môi trường.Tính an toàn (security).Tính dừng (halt).

6

Page 2: C++CB.ppt - caodang.tdt.edu.vncaodang.tdt.edu.vn/Upload/file/Tailieuhoctap/Tinhoc/Doan Xuan Thanh... · 1 LẬP TRÌNH C (CƠ BẢN) 1 YÊU ... LẬP TRÌNH ? Giải thuật Ngôn

22/04/2011

2

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

Fortran Pascal Java C C++ C# VB.Net …. 7

CÁC MÔI TRƯỜNG HỖ TRỢ LẬP TRÌNH

Borland C++ Microsoft Visual Basic Microsoft Visual C++ JBuider Visual .Net …

8

CÁCH VIẾT MỘT CHƯƠNG TRÌNH

Đọc kỹ yêu cầu bài toán Xác định dữ liệu đầu vào: giá trị, kiểu Xác định kết quả: giá trị, kiểu Xác định giải thuật / công thức để xử lý dữ

liệu đầu vào thành kết quả Kiểm tra lỗi cú pháp Chạy và nhập dữ liệu thử cho nhiều trường

hợp khác nhau để đánh giá chương trình 9

Hướng dẫn cài đặt và sử dụng Microsoft Visual C++ 6.0

10

BỘ CÀI ĐẶT GỒM

Đĩa Ms Visual Studio 6.0 MSDN cho Visual Studio 6.0 SP6.0 cho Visual Studio 6.0

11

TẠO MỚI PROJECT Bước 1: Khởi động VC++6.0 Bước 2: Chọn menu File/New…

1

2

3

12

Page 3: C++CB.ppt - caodang.tdt.edu.vncaodang.tdt.edu.vn/Upload/file/Tailieuhoctap/Tinhoc/Doan Xuan Thanh... · 1 LẬP TRÌNH C (CƠ BẢN) 1 YÊU ... LẬP TRÌNH ? Giải thuật Ngôn

22/04/2011

3

Tab Projects chọn Win32 Console Application

Project name: Nhập tên của dự án (Ví dụ đặt tên làBaiTap1)

Location: Vị trí lưu dự án

VC sẽ tạo một thư mục với tên là tên Project tại vị trí đãchỉ định. Bên trong thư mục này sẽ chứa toàn bộ các fileliên quan đến Project. Nếu muốn sao chép Project thì chỉviệc chép thư mục này.

1

2

3

13

Bước 3: Chọn OKBước 4: Chọn An empty Project, sau đó chọn Finish

14

Bước 5: Chọn OK, kết thúc việc tạo Project

15

Giao diện sau khi tạo Project

1. Chọn Tab FileView

2. Chọn dấu + để xem bên trong

16

Giao diện gồm 2 phần chính Cửa sổ bên trái: cửa sổ Workspace (nếu

không thấy cửa sổ này thì vào menu View/Workspace hoặc nhấn phím Alt + số 0)

Cửa sổ bên phải: cửa sổ viết code

17

MÔ TẢ CỬA SỔ WORKSPACESau khi chọn dấu + ở tab FileView,sẽ xuất hiện 3 thư mục: Source Files (*.cpp): Chứa các

file cài đặt các hàm Header Files (*.h): Chứa các file

khai báo (hàm, biến toàn cục, kiểucấu trúc, …)

Resource Files: Chứa các tàinguyên (icon, bitmap, dialog, …).Đối với lập trình ứng dụngConsole thì không dùng đến. 18

Page 4: C++CB.ppt - caodang.tdt.edu.vncaodang.tdt.edu.vn/Upload/file/Tailieuhoctap/Tinhoc/Doan Xuan Thanh... · 1 LẬP TRÌNH C (CƠ BẢN) 1 YÊU ... LẬP TRÌNH ? Giải thuật Ngôn

22/04/2011

4

Để dễ dàng viết và quản lý code theo phươngpháp lập trình thủ tục, mỗi Project mới, ta quiước như sau: Trong Header File, tạo 1 file tên khaibao.h:

Chứa các khai báo hàm, hằng số, … Trong Source File, tạo 2 file cài đặt hàm: File main.cpp: Cài đặt hàm main() File caidat.cpp: Cài đặt các hàm con đã khai

báo 19

QUI ƯỚC CÁCH TẠO FILE KHAI BÁO (KHAIBAO.H)

Click phải vào thư mục Header File, chọn Add Files to Folder …

20

Nhập khaibao.h vào ô File nameChọn OK, sau đó chọn Yes(Lưu ý: Không thay đổi đường dẫn thư mục –

chỉ nhập tên file) 21

CÁCH TẠO FILE CÀI ĐẶT (MAIN.CPP, CAIDAT.CPP)

Click phải vào thư mục Source File, chọnAdd Files to Folder …Nhập main.cpp vào ô File name, chọn OK,

sau đó chọn YesTương tự, tiếp tục tạo file caidat.cpp(Mẹo: Có thể tạo 2 file cùng một lúc bằng cách:Nhập “main.cpp” “caidat.cpp” vào ô File name:

Tên file phải nằm trong cặp dấu nháy kép (“), mỗitên file cách nhau bởi khoảng trắng)

22

VIẾT LỆNH CHO FILE KHAIBAO.H

Double click vào file khaibao.h trong thưmục Header File

Chọn Yes

23

Cửa sổ soạn thảo code cho file khaibao.hchuyển sang chế độ cho phép soạn thảo

Nhận biết file đang mở

Cửa sổ soạn thảo file khaibao.h

24

Page 5: C++CB.ppt - caodang.tdt.edu.vncaodang.tdt.edu.vn/Upload/file/Tailieuhoctap/Tinhoc/Doan Xuan Thanh... · 1 LẬP TRÌNH C (CƠ BẢN) 1 YÊU ... LẬP TRÌNH ? Giải thuật Ngôn

22/04/2011

5

CẤU TRÚC FILE KHAIBAO.H

#pragma onceCác khai báo thư viện, hàm, hằng số, …

25

CẤU TRÚC FILE MAIN.CPP

Cách chọn file main.cpp tương tự như chọnfile khaibao.h#include “khaibao.h”void main(){

Các lệnh;} 26

CẤU TRÚC FILE CAIDAT.CPP

#include “khaibao.h”void HamA(){

các lệnh;}void HamB(){

Các lệnh;}

27

DỊCH, SỬA LỖI VÀ CHẠY CHƯƠNG TRÌNH

Biên dịch và kiểm tra lỗi: Nhấn F7 Nếu có thông báo lỗi (error) thì nhấn F4

để tìm, quan sát và sửa lỗi (cửa sổ lỗi xuấthiện bên dưới màn hình soạn thảo code)

Chạy chương trình: Ctrl + F5

28

VÍ DỤ

Viết chương trình hiển thị lên màn hìnhdòng chữ: “Xin chào mọi người”

Do đây là ví dụ rất đơn giản nên chỉ cóphần khai báo (file khaibao.h) và hàmmain() (file main.cpp) nên không có phầncài đặt hàm con (file caidat.cpp)

29

FILE KHAIBAO.H

#pragma once#include <iostream.h>

30

Page 6: C++CB.ppt - caodang.tdt.edu.vncaodang.tdt.edu.vn/Upload/file/Tailieuhoctap/Tinhoc/Doan Xuan Thanh... · 1 LẬP TRÌNH C (CƠ BẢN) 1 YÊU ... LẬP TRÌNH ? Giải thuật Ngôn

22/04/2011

6

FILE MAIN.CPP

#include "khaibao.h"void main(){

cout<<“Xin chao moi nguoi";}

31

XEM KẾT QUẢ CHẠY CHƯƠNG TRÌNH NHẤN CTRL + F5

32

MỞ PROJECT CÓ SẴNCách 1: Mở từ menu VC Khởi động VC Vào menu File/ Open Workspace Chọn thư mục chứa Project, chọn tên Project, sau đó

chọn Open

33

Cách 2: Mở trực tiếp từ ExploreMở thư mục chứa Project

Double click vào 1 trong 2 file có đánh dấu mũi tên(Lưu ý: Khi chép Project có thể xóa thư mục Debug, vì thư mục này sẽ được tạo khi chạy chương trình)34

CHƯƠNG 2GIỚI THIỆU NGÔN NGỮ C

35

ĐẶC ĐIỂM NGÔN NGỮ C

Bộ lệnh phù hợp với phương pháp lậptrình cấu trúc.

Kiểu dữ liệu phong phú, cho phép địnhnghĩa kiểu dữ liệu mới.

Gồm một hoặc nhiều hàm rời nhau. Linh động về cú pháp.

36

Page 7: C++CB.ppt - caodang.tdt.edu.vncaodang.tdt.edu.vn/Upload/file/Tailieuhoctap/Tinhoc/Doan Xuan Thanh... · 1 LẬP TRÌNH C (CƠ BẢN) 1 YÊU ... LẬP TRÌNH ? Giải thuật Ngôn

22/04/2011

7

CÁC KHÁI NIỆM

LệnhLệnh thực hiện một chức năng nào đó(khai báo, gán, xuất, nhập, …) và đượckết thúc bằng dấu chấm phẩy (;)

Khối lệnhKhối lệnh gồm nhiều lệnh và được đặttrong cặp dấu ngoặc { } 37

QUI ƯỚC VIẾT LỆNH TRONG C

Mỗi lệnh nằm trên một dòng. Cuối dònglệnh PHẢI có dấu chấm phẩy (;).Lệnh quá dài có thể được viết thành nhiều

dòng sao cho mỗi lệnh phải được quan sáttrọn vẹn trong pham vi cửa sổ lệnh.

38

QUI ƯỚC VIẾT LỆNH TRONG C

Không nên đặt nhiều lệnh trên cùng mộtdòng, ngay cả các khai báo biến, nếu cácbiến có khác kiểu cũng nên đặt trên cácdòng khác nhau.Dòng ghi chú (comment): Từ vị trí cụ thể đến cuối dòng: dùng // ngay tại

vị trí đó. Tạo nhiều dòng ghi chú: dùng cặp ký tự /*

ngay trước dòng đầu tiên, và cặp ký tự */ ngaysau dòng cuối cùng.

39

BIẾNMột biến đại diện cho một vùng nhớ hay tập các

vùng nhớ trên bộ nhớ chính của máy tính. Tênbiến được dùng để tham khảo đến những vùng nhớnày.

Biến để lưu trữ các giá trị do người dùng nhập vàohoặc các giá trị tạm thời trong quá trình tính toán.

Mỗi biến sẽ có tên và kiểu dữ liệu tương ứng.Kiểu dữ liệu của biến xác định những giá trị kiểunào có thể được lưu trong biến (ví dụ số haychữ…).

PHẢI khai báo BiẾN trước khi sử dụng40

CÁC KIỂU DỮ LIỆUGồm 2 loại: Kiểu cơ sở

Tích hợp sẵn trong ngôn ngữ Số nguyên Số thực Luận lý Mảng (xét sau) Chuỗi (xét sau)

Kiểu tự định nghĩa (xét sau)Dùng những kiểu cơ sở để xây dựng thành nhữngkiểu dữ liệu mới cho phù hợp với bài toán.

41

CÁC KIỂU DỮ LIỆU CƠ SỞSTT KIỂU GHI CHÚ KÍCH THƯỚC

KIỂU LIÊN TỤC (SỐ THỰC)1 float 4 bytes2 double 8 bytes3 long double 8 bytes

KIỂU RỜI RẠC (SỐ NGUYÊN)

1 char Ký tự 1 byteSố nguyên 1 byte

2 unsigned char Số nguyên dương 1 byte3 short Số nguyên 2 bytes4 unsigned short Số nguyên dương 2 bytes5 int Số nguyên 4 bytes6 unsigned int Số nguyên dương 4 bytes7 long Số nguyên 4 bytes8 unsigned long Số nguyên dương 4 bytes

KIỂU LUẬN LÝ1 bool Gồm 2 giá trị: true hoặc false

42

Page 8: C++CB.ppt - caodang.tdt.edu.vncaodang.tdt.edu.vn/Upload/file/Tailieuhoctap/Tinhoc/Doan Xuan Thanh... · 1 LẬP TRÌNH C (CƠ BẢN) 1 YÊU ... LẬP TRÌNH ? Giải thuật Ngôn

22/04/2011

8

KHAI BÁO BIẾNCú pháp<Kiểu dữ liệu> tênbiến;Ví dụ:

int a; //Khai báo biến để lưu số nguyên tên afloat c; //Khai báo biến để lưu số thực tên c

Khai báo nhiều biến cùng kiểu<Kiểu dữ liệu> tênbiến1, tênbiến2, tênbiến3;Ví dụ:int a, x, y;

43

KHAI BÁO BIẾNQui tắc đặt tên biến Bắt đầu bằng một ký tự. Các ký tự trong tên biến chỉ có thể là các ký tự chữ, số

hoặc dấu gạch dưới (_) Không có khoảng trắng trong tên biến. Không dài quá 256 ký tự. Không được trùng với các từ khoá của C

struct, long, int, while, for, if, else, continue, typedef, do, goto, case, define, …

Không được trùng với phạm vi khai báo. Tên gợi nhớ.

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

KHAI BÁO VÀ KHỞI GÁN GIÁ TRỊ BAN ĐẦU CHO BIẾN

<Kiểu dữ liệu> tênbiến = giá trị;

Ví dụ:int a = 5;float b = 5.4, c = 9.2;char ch = ‘n’;

45 46

STT PHÉPTOÁN Ý NGHĨA GHI CHÚ

PHÉP TOÁN SỐ HỌC1 + Cộng2 - Trừ3 * Nhân4 / Chia lấy phần nguyên5 % Chia lấy phần dư

PHÉP TOÁN QUAN HỆ1 > Lớn hơn2 < Nhỏ hơn3 >= Lớn hơn hoặc bằng4 <= Nhỏ hơn hoặc bằng5 = = Bằng nhau6 != Khác nhau

KÝ HIỆU CÁC PHÉP TOÁN

47

PHÉP TOÁN LOGIC1 ! NOT2 && AND3 || OR

TOÁN TỬ TĂNG GIẢM1 ++ Tăng 1 Nếu toán tử tăng giảm đặt

trước thì tăng giảm trước rồi tính biểu thức hoặc ngược lại.2 -- Giảm 1

PHÉP TOÁN THAO TÁC TRÊN BIT1 & AND2 | OR3 ^ XOR4 << Dịch trái5 >> Dịch phải6 ~ Lấy phần bù theo bit

Ví dụ:int x = 5, y = 11;int z = ++x + y++;

Kết quả: x=6; y=12; z=17

Toán tử điều kiện(biểu thức điều kiện)?<biểu thức cho trường hợp

đúng>:<biểu thức cho trường hợp sai>Ví dụ:int n;(n%2==0)? n ++ : n --;

nếu n = 10 thì giá trị n = 11 nếu n = 21 thì giá trị n = 20

48

Page 9: C++CB.ppt - caodang.tdt.edu.vncaodang.tdt.edu.vn/Upload/file/Tailieuhoctap/Tinhoc/Doan Xuan Thanh... · 1 LẬP TRÌNH C (CƠ BẢN) 1 YÊU ... LẬP TRÌNH ? Giải thuật Ngôn

22/04/2011

9

THỨ TỰ ƯU TIÊN PHÉP TOÁN

Toán tử Độ ưu tiên Trình tự kết hợp() [] -> 1 Từ trái qua phải! ~ ++ -- - + * & sizeof 2 Từ phải qua trái* / % 3 Từ trái qua phải+ - 4 Từ trái qua phải<< >> 5 Từ trái qua phải< <= >= > 6 Từ trái qua phải== != 7 Từ trái qua phải& 8 Từ trái qua phải| 9 Từ trái qua phải^ 10 Từ trái qua phải&& 11 Từ trái qua phải|| 12 Từ trái qua phải? : 13 Từ phải qua trái= += -= *= /= %= 14 Từ phải qua trái

49

CÁC LỖI THƯỜNG GẶP KHI VIẾT CHƯƠNG TRÌNH Quên khai báo các biến sử dụng trong chương trình. Lưu một giá trị vào một biến nhưng không cùng kiểu dữ liệu với

biến. Sử dụng biến trong một biểu thức khi nó chưa có giá trị. Lỗi này

thì không được phát hiện bởi trình biên dịch, khi đó giá trị củabiến là một giá trị bất kỳ và kết quả của biểu thức là vô nghĩa.

Sử dụng giá trị của phép chia không chính xác. Lỗi này thườngxuất hiện trong các biểu thức có nhiều toán hạng và lỗi này rất khóphát hiện.Ví dụ: 3.2 + 2/3 + 1.5 thì sẽ cho kết quả sẽ bằng 4.7 thay vì kếtquả đúng phải bằng 5.36666666666667

Sử dụng một biểu thức mà trong đó chứa nhiều loại dữ liệu nhưnglại không biết chắc chắn kiểu dữ liệu của kết quả. 50

HÀM NHẬP XUẤT TRONG CONSOLE Thư viện hàm: iostream.h Hàm nhập giá trị từ bàn phím: cin>>tênbiến;

Ví dụ: int a;cin>>a; //Người dùng nhập giá trị từ phím sẽ lưu vào biến a

Hàm xuất giá trị ra màn hình: cout<<tênbiến hoặc chuỗi ký tự;Ví dụ: int a = 5;

cout<<“Gia tri cua a = “<<a;Các biến và chuỗi cách nhau bởi dấu << (chuỗi nằm trong cặp dấu nháy kép “” )Ví dụ:

int b = 7, c = 9;cout<< “Gia tri của b =“ << b << “ gia tri cua c = “ << c; 51

XUẤT CÓ ĐỊNH DẠNG

Thư viện iomanip.h

cout<<setw(n)<<tênbiến; Chừa 1 khoảng n ký tự để xuất giá trị

Ví dụ:int a=7, b=9;cout<<a<<setw(5)<<b;//Chừa 5 vị trí để xuất giá trị b

Kết quả: 7 952

XUẤT CÓ ĐỊNH DẠNGcout<<setprecision(n);Xuất số thập phân gồm n-1 chữ số lẻ (phần thập phân)

Ví dụ:float a=7.56745F, b=5.339F;cout<<a<<endl;cout<<setprecision(3)<<a<<endl;cout<<setprecision(2)<<b<<endl;cout<<setprecision(5)<<b;

Kết quả:7.567457.575.35.339

53

XUẤT KÝ TỰ ĐẶC BIỆT Ký tự Ý nghĩa Ví dụ

\’ Xuất dấu nháy đơncout<<“ \’ ”;Kết quả: ‘

\” Xuất dấu nháy đôicout<<“ \” ”;Kết quả: “

\\ Xuất dấu chéo ngược “\”cout<<“ \\ ”;Kết quả: \

\0 Ký tự Null Dùng để gán ký tự kết thúc của chuỗi

\a Alert : Tiếng bip

\t Tab vào một đoạn ký tự trắngcout<<"xyz\tzyx”;Kết quả: xyz zyx

\b Xuất lùi về saucout<<"xyz\t\bzyx”;Kết quả: xyzzyx

\nhoặc endl

Xuống dòngcout<<"xyz\nzyx”;Kết quả: xyz

zyx

\r Về đầu dòngcout<<"xyz\rzyx”;Kết quả: zyx

54

Page 10: C++CB.ppt - caodang.tdt.edu.vncaodang.tdt.edu.vn/Upload/file/Tailieuhoctap/Tinhoc/Doan Xuan Thanh... · 1 LẬP TRÌNH C (CƠ BẢN) 1 YÊU ... LẬP TRÌNH ? Giải thuật Ngôn

22/04/2011

10

BÀI TẬPCho biết kết quả của những lệnh sau:int a, b;b=a++ + ++a + --a;cout<<"a=“<<a<<“, b=“<<b;Với a = 2 Kết quả:Với a = 9 Kết quả:----------------------------------------------------------------------int a, b;b=--a + --a;--b;cout<<"a=“<<a<<“, b=“<<b;Với a = 19 Kết quả:Với a = 10 Kết quả:

55

int a, b;b=a%2 + a/2 + --a;cout<<"a=“<<a<<“, b=“<<b;Với a = 17 Kết quả:Với a = 3 Kết quả:------------------------------------------------------------------------ ----------------------------------------------------------------------

int a, b;b=a/3 + a--;cout<<"a=“<<a<<“, b=“<<b;Với a = 8 Kết quả:Với a =21 Kết quả:------------------------------------------------------------------------ ----------------------------------------------------------------------

int k;cout<<(k%3==0)?k++: k--;Với k =10 Kết quả:Với k =15 Kết quả:

56

Các định danh nào sau đây là không hợp lệ? i. Mainii. Tinh Tongiii. Tinh-Tongiv. Tinh_Tongv. x_Mu_2 vi. 2_Mu_2vii. using viii. class ix. Tien$ x. default xi. yahoo.com

57

Cho biết những chỗ sai và sửa lại cho đúngint n = -100;uint i = -100;int = 2.9;long m = 2, p = 4;int 2k;float y = y * 2;char ch = “b”;

Viết chương trình in ra màn hình thông tin cá nhân theomẫu sau:Ho ten:Lop:Thong tin lien lac:

Dia chi:So dien thoai:

58

Viết chương trình nhập vào giờ phút và giây, đổi ra giâyvà xuất kết quả ra màn hình.

Viết chương trình nhập vào 3 số nguyên a, b và c, tínhgiá trị trung bình cộng của 3 số trên và xuất kết quả ramàn hình.

Viết chương trình nhập vào số nguyên dương n, tính tổngtừ 1 đến n và xuất kết quả ra màn hình.

Viết chương trình cho phép nhập vào một số đo nhiệt độtheo độ Fahrenheit và xuất ra nhiệt độ tương đương củanó theo độ Celsius, sử dụng công thức chuyển đổi:

Viết chương trình nhập vào 3 số nguyên a, b và c, chobiết 3 số vừa nhập có thứ tự tăng dần (a<b<c) không?Và xuất kết quả.

59

)32(95 00 FC

CHƯƠNG 3 CẤU TRÚC ĐIỀU KHIỂNLƯU ĐỒ (FLOWCHART)

60

Page 11: C++CB.ppt - caodang.tdt.edu.vncaodang.tdt.edu.vn/Upload/file/Tailieuhoctap/Tinhoc/Doan Xuan Thanh... · 1 LẬP TRÌNH C (CƠ BẢN) 1 YÊU ... LẬP TRÌNH ? Giải thuật Ngôn

22/04/2011

11

PHÂN TÍCH LỆNH ĐỂ XÁC ĐỊNH KẾT QUẢ Xác định xem chương trình có sử dụng những biến nào; Giá trị ban đầu của mỗi biến; Những biến nào sẽ bị thay đổi trong quá trình chạy chương trình

thì lập thành bảng có dạng sau:

61

Bước (hoặc lần lặp hoặc dòng lệnh

thực hiện)Biến 1 Biến 2 … Biến k

Kết quả trả về(hoặc in ra màn

hình)0 Giá trị 0 Giá trị 0 … Giá trị 01 Giá trị 1 Giá trị 1 … Giá trị 12 Giá trị 2 Giá trị 2 … Giá trị 2... … … … …… … … … …

Lưu ý từng lệnh và xét kỹ giá trị của biểu thức điềukiện trong đoạn chương trình

CÁC KÝ HIỆU LƯU ĐỒ

62

CẤU TRÚC TUẦN TỰ

Tuần tự thực thi tiến trình, mỗi lệnh được thực thi theo một chuỗi từ trên xuống, xong lệnh này rồi chuyển xuống lệnh kế tiếp.

63 64

void main(){ int a, b, tong, hieu, tich;

float thuong;cout<<"Nhap vao a: “;cin>>a;cout<<"Nhap vao b: “;cin>>b;tong = a + b;hieu = a - b;tich = a * b;thuong = (float)a / b;cout<<"Tong: " <<tong;cout<<"Hieu: “<<hieu;cout<<"Tich: “<<tich;cout<<"Thuong: “<<thuong;

}

65

CẤU TRÚC RẼ NHÁNH

Cấu trúc rẽ nhánh chỉ cho máy tính chọn thực hiện mộtdãy lệnh nào đó dựa vào kết quả của một điều kiện (biểuthức quan hệ hay biểu thức so sánh)

Gồm 2 dạng:Chỉ xét trường hợp đúngif (biểu thức điều kiện){

<khối lệnh> ;}Nếu biểu thức điều kiện cho kết quả true thì thực hiện khối lệnh bên trong if.

66

Page 12: C++CB.ppt - caodang.tdt.edu.vncaodang.tdt.edu.vn/Upload/file/Tailieuhoctap/Tinhoc/Doan Xuan Thanh... · 1 LẬP TRÌNH C (CƠ BẢN) 1 YÊU ... LẬP TRÌNH ? Giải thuật Ngôn

22/04/2011

12

Ví dụ: Viết chương trình nhập vào một số nguyêntừ 1 đến 10, nếu nhập sai thì thông báo

67

void main(){

int k;cout<<"Hay nhap mot so tu 1 den 10: “;cin>>k;if (k < 1 || k > 10)

cout<<"So ban vua nhap khong hop le";

}

68

Xét cả hai trường hợp đúng và sai:if (biểu thức điều kiện){

<khối lệnh 1>;}else{

<khối lệnh 2>;}

Nếu biểu thức điều kiện cho kết quả true thì thực hiện khối lệnh 1, ngược lại thì cho thực hiện khối lệnh thứ 2

69

Ví dụ 1: Nhập vào số nguyên a và b, nếu a là bội số của b thì inthông báo “a là bội số của b”, ngược lại in “a khong la boi so cua b”

70

void main(){

int a, b;cout<<“Nhap vao a: “;cin>>a;cout<<“Nhap vao b: “;cin>>b;if(a%b= =0)

cout<<“a la boi so cua b”;else

cout<<“a khong la boi so cua b”;}

71

Ví dụ 2: Giải và biện luận phương trình: ax+b=0

72

Page 13: C++CB.ppt - caodang.tdt.edu.vncaodang.tdt.edu.vn/Upload/file/Tailieuhoctap/Tinhoc/Doan Xuan Thanh... · 1 LẬP TRÌNH C (CƠ BẢN) 1 YÊU ... LẬP TRÌNH ? Giải thuật Ngôn

22/04/2011

13

void main(){ float a, b;

cout<<"Nhap vao a: “;cin>>a;cout<<“Nhap vao b: “;cin>>b;if (a == 0)

if (b == 0)cout<<"Phuong trinh vo so nghiem”;

elsecout<<"Phuong trinh vo nghiem”;

elsecout<<"Phuong trinh co nghiem x = “<< -b / a;

} 73

BÀI TẬP – CHO BIẾT KẾT QUẢ

int a=9, b=6;a++;a=a+b--;a=a+(--b);if(a%2==0)

cout<<"Gia tri cua a la chan”;cout<<"Tong cua a va b la: " <<(a + b);

74

int a=7, b=8;a++;a=a+b--;--b;a--;a = (--a)+(--b);if(a%2 != 0)

cout<<"a la so le”;else

cout<<"a la so chan”;cout<<"Gia tri cua a: " <<a; 75

int x = 5, y;y = x++ + 5;cout<<"x= " <<x<<", y= “<<y;y *= 6;x = y % 7;cout<<"x= “<<x<<", y= “<<y<<", y/x= “<<y/x;

76

BÀI TẬP – VẼ LƯU ĐỒ VÀ VIẾT CHƯƠNG TRÌNH

1. Nhập vào hai số nguyên a, b. In ra màn hình giá trị lớn nhất.

2. Cho ba số a, b, c đọc vào từ bàn phím. Hãy tìm giá trị lớn nhất của ba số trên và in ra kết quả.

3. Cho ba số a, b, c đọc vào từ bàn phím. Hãy in ra màn hình theo thứ tự tăng dần các số. (Chỉ được dùng thêm hai biến phụ).

4. Viết chương trình nhập vào một số nguyên n gồm ba chữ số. Xuất ra màn hình chữ số lớn nhất ở vị trí nào?Ví dụ: n=291. Chữ số lớn nhất nằm ở hàng chục (chữsố 9). 77

5. Viết chương trình nhập vào số nguyên n gồm ba chữ số. Xuất ra màn hình theo thứ tự tăng dần của các chữ số.Ví dụ: n=291. Xuất ra 129.

6. Nhập vào ngày, tháng, năm. Kiểm tra xem ngày, tháng, năm đó có hợp lệ hay không? In kết quả ra màn hình.

7. Nhập vào giờ, phút, giây. Kiểm tra xem giờ, phút, giây đó có hợp lệ hay không? In kết quả ra màn hình.

8. Viết chương trình nhập vào ngày, tháng, năm hợp lệ. Cho biết năm này có phải là năm nhuận hay không? In kết quả ra màn hình.

9. Viết chương trình tính diện tích và chu vi các hình: tam giác, hình vuông, hình chữ nhật và hình tròn với những thông tin cần được nhập từ bàn phím.

78

Page 14: C++CB.ppt - caodang.tdt.edu.vncaodang.tdt.edu.vn/Upload/file/Tailieuhoctap/Tinhoc/Doan Xuan Thanh... · 1 LẬP TRÌNH C (CƠ BẢN) 1 YÊU ... LẬP TRÌNH ? Giải thuật Ngôn

22/04/2011

14

10. Viết chương trình tính tiền cước TAXI. Biết rằng:km đầu tiên là 13000đ.Mỗi km tiếp theo là 12000đ.Nếu lớn hơn 30km thi mỗi km thêm sẽ là 11000đ.Hãy nhập sô km sau đo in ra sô tiền phải tra.

11. Nhập vào 3 sô nguyên dương. Kiểm tra xem 3 sôđo có lập thành tam giác không? Nếu có hãy cho biếttam giác đo thuộc loại nào? (Cân, vuông, đều, …).

12. Viết chương trình nhập vào sô nguyên dương n.Kiểm tra xem n có phải là sô chính phương haykhông? (sô chính phương là sô khi lấy căn bậc 2 cókết quả là nguyên).

79

CẤU TRÚC LỰA CHỌNswitch (biểu thức)

case n1: các câu lệnh ;

break ;case n2:

các câu lệnh ;break ;

………case nk:

<các câu lệnh> ;break ;

[default: các câu lệnh]

80

Với:ni là các hằng số nguyên hoặc ký tự.Phụ thuộc vào giá trị của biểu thức viết sau switch, nếu: Giá trị này = ni thì thực hiện câu lệnh sau case ni. Khi giá trị biểu thức không thỏa tất cả các ni thì thực

hiện câu lệnh sau default nếu có, hoặc thoát khỏi câu lệnh switch.

Khi chương trình đã thực hiện xong câu lệnh của caseni nào đó thì nó sẽ thực hiện luôn các lệnh thuộc case bên dưới nó mà không xét lại điều kiện (do các niđược xem như các nhãn) Vì vậy, để 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. 81

Ví dụ: Nhập vào số nguyên n có giá trị từ 1 đến 5. In cách đọc của số đó ra màn hình.

void main(){ int n;

cout<<"Nhap vao n (1<=n<=5): “;cin>>n;switch (n){

case 1: cout<<"So mot”; break;case 2: cout<<"So hai"; break;case 3: cout<<"So ba”; break;case 4: cout<<"So bon”; break;case 5: cout<<"So nam”; break;default : cout<<"Khong doc duoc";

}}

82

BÀI TẬP – VẼ LƯU ĐỒ VÀ VIẾT CHƯƠNG TRÌNH

13. Viết chương trình nhập vào 1 sốnguyên dương gồm 3 chữ số, in ra cáchđọc của số này

Sites.google.com/site/thaitranminh

83

CẤU TRÚC LẶP

84

Page 15: C++CB.ppt - caodang.tdt.edu.vncaodang.tdt.edu.vn/Upload/file/Tailieuhoctap/Tinhoc/Doan Xuan Thanh... · 1 LẬP TRÌNH C (CƠ BẢN) 1 YÊU ... LẬP TRÌNH ? Giải thuật Ngôn

22/04/2011

15

FOR

for (<biểu thức khởi gán> ; <biểu thức điều kiện> ; <biểu thức tăng/giảm>)

{<khối lệnh>;

}

Bất kỳ biểu thức nào trong 3 biểu thức nói trên đều có thể vắng nhưng phải giữ dấu chấm phẩy (;)

85

HOẠT ĐỘNG

86

Bước 1: Khởi gán cho biểu thức 1Bước 2: Kiểm tra điều kiện của biểu thức 2.

Nếu biểu thức 2 bằng true thì cho thực hiện các lệnh của vòng lặp, thực hiện biểu thức 3. Quay trở lại bước 2.Ngược lại thoát khỏi lặp.

87

Ví dụ: In ra màn hình 10 dòng chữ “Xin chao”

88

void main(){

for (int buoc = 1; buoc <= 10; buoc++)cout<<"Xin chao“<<endl;

}

89

Ví dụ: Tính tổng: , với n>0

90

nS 321

Page 16: C++CB.ppt - caodang.tdt.edu.vncaodang.tdt.edu.vn/Upload/file/Tailieuhoctap/Tinhoc/Doan Xuan Thanh... · 1 LẬP TRÌNH C (CƠ BẢN) 1 YÊU ... LẬP TRÌNH ? Giải thuật Ngôn

22/04/2011

16

WHILE

< Khởi gán>while ( <biểu thức điều kiện>)

lệnh/ khối lệnh;<biểu thức tăng/ giảm>

Lưu ý: Cách hoạt động của while giống for

91

Ví dụ: In ra màn hình 10 dòng chữ “Xin chao”

void main(){

int buoc = 1; while(buoc <= 10){

cout<<"Xin chao“<<endl;buoc++;

}} 92

DO … WHILE

< Khởi gán>do{

<khối lệnh>;<biểu thức tăng/ giảm>;

} while (biểu thức điều kiện); Thực hiện khối lệnh cho đến khi biểu thức có giá trị bằng false. Cấu trúc lặp do…while thường dùng cho

trường hợp nhập có kiểm tra điều kiện 93

Ví dụ: Nhập vào một số nguyên dương, nếu nhập vào sốbằng hoặc nhỏ hơn 0 thì thông báo lỗi và yêu cầu nhậplại.

void main(){

int n;do{cout<<"Nhap vao mot so nguyen duong: ";cin>>n;if (n <= 0)

cout<<"Nhap sai, hay nhap lai!“<<endl;} while (n <= 0);cout<<"Ban da nhap dung, ket thuc chuong trinh”;

}

94

Ngược lại với cấu trúc lặp forvà while (kiểm tra điều kiện trước khi thực hiện lặp), vòng lặpdo…while thực hiện lệnh lặp rồi mới kiểm tra điều kiện. Do đó vòng lặp do...while thực hiện lệnh ít nhất một lần.

95

LỆNH BREAK VÀ CONTINUE

Lệnh break: thoát khỏi các cấu trúc switch,while, for, do…while chứa nó gần nhất(đang chứa break) tại thời điểm break đượcgọi thi hành mà không cần kiểm tra kết quảcủa biểu thức điều kiện. Tuy nhiên, cầnphân biệt với lệnh return là lệnh trả về từhàm, nghĩa là thoát khỏi hàm đang thi hành,nên cũng giúp thoát luôn khỏi tất cả cácvòng lặp.

96

Page 17: C++CB.ppt - caodang.tdt.edu.vncaodang.tdt.edu.vn/Upload/file/Tailieuhoctap/Tinhoc/Doan Xuan Thanh... · 1 LẬP TRÌNH C (CƠ BẢN) 1 YÊU ... LẬP TRÌNH ? Giải thuật Ngôn

22/04/2011

17

LỆNH BREAK VÀ CONTINUE

Lệnh continue: được sử dụng trong cácvòng lặp như while, for, do…while. Khilệnh continue được gọi thì chương trình sẽquay trở về đầu vòng lặp để bắt đầu lần lặpmới (có kiểm tra điều kiện lặp để xác địnhcó lặp tiếp hay không). Nếu có các lệnh cònlại (cùng trong vòng lặp) đặt sau continuesẽ không được thực hiện. Nói tóm lại, lệnhcontinue dùng để bỏ qua một lần lặp nào đónếu thỏa điều kiện.

97

Ví dụ: Cho phép người dùng nhập liên tục số nguyên dương, nếu nhập số nguyên âm thì dừngvoid main(){ int n;

while (true){

cout<<"Nhap gia tri n: “;cin>>n;if (n <= 0){

cout<<"Ket thuc vong lap”;break;

}}

}98

Ví dụ: In ra màn hình giá trị từ 10 đến 20 trừ đi số 13 và số 17.

void main(){

for (int k = 10; k <= 20; k++){

cout<<k<<" ";if (k == 13 || k == 17)

continue;}

}99

CHO BIẾT KẾT QUẢint a=18;for(int i = 1; i <= a; i++)

if(a%i == 0)cout<<i <<“\t”;

---------------------------------------------------------------------for(int i = 0; i < 5; i++){

for(int j = 0; j <= i; j++)cout<<j<<“\t”;

cout<<endl;} 100

int i = 10, s = 0;while(i > 0){

if(i%2 == 0)s+=i;

elseif(i > 5)

s+=2*i;i--;

}cout<<“s = ” <<s; 101

int a = 18, i = 1;do{

if(a%i == 0)cout<<i<<“\t”;

i++;} while(i <= a);

102

Page 18: C++CB.ppt - caodang.tdt.edu.vncaodang.tdt.edu.vn/Upload/file/Tailieuhoctap/Tinhoc/Doan Xuan Thanh... · 1 LẬP TRÌNH C (CƠ BẢN) 1 YÊU ... LẬP TRÌNH ? Giải thuật Ngôn

22/04/2011

18

int a = 11, b = 16, i = a;while( i < b ){

if(i%2 == 0){

Console.Write(i + "\t");break;

}i++;

} 103

int a = 10, s = 0, i = 0;while( i < a ){

i++;if (i % 2 == 0)

continue;else

s=s+i;}cout<<"s = " <<s; 104

int i = 1, s = 0;while(true){

s = s + i++;if (i % 2)

i = i + 2;else

i = i + 1;if (i > 20)

break;}cout<<"s = " <<s;

105

14. Viết chương trình nhập số nguyên dương n. Liệt kê n số nguyên tố đầu tiên.

15. Viết chương trình nhập vào hai số nguyên dương a và b. Tìm ước số chung lớn nhất và bội số chung nhỏ nhất của a và b.

16. Viết chương trình nhập vào một số nguyên n gồm tối đa 10 chữ số (4 bytes). In ra màn hình giá trị nhị phân của số trên. (Hướng dẫn: chia lấy dư cho 2 và xuất theo thứ tự ngược lại).

17. Viết chương trình đếm số ước số của số nguyêndương N.Ví dụ: N=12số ước số của 12 là 6

106

18. Một số hoàn thiện là một số có tổng các ước số của nó (không kể nó) bằng chính nó. Hãy liệt kê các số hoàn thiện nhỏ hơn 5000.Ví dụ: số 6 là số hòan thiện vì tổng các ước số là 1+2+3 = 6.

19. Nhập vào ngày, tháng, năm. Cho biết đó là ngày thứ mấy trong năm.

20. In ra dãy số Fibonaci f1 = f0 =1; fn = fn-1 + fn-2­; (n>1)

107

XÁC ĐỊNH KẾT QUẢ BẰNG CÔNG CỤ DEBUG

Dùng để xác định lỗi logic (lỗi thiết kế giải thuật) trong chương trình. Mặc dù chương trình không còn lỗi nhưng khi chạy chương trình vẫn ra kết quả sai, những lỗi đó có thể là:

Dùng chấm phẩy sau: if, else, for, while, do…while mà chưa thực hiện lệnh;

Không dùng cặp dấu ngoặc nhọn ({}) để bao khối lệnh;Khai báo sai kiểu dữ liệu;Chia cho 0;Không có điều kiện dừng (điều kiện dừng sai);Phân tích thuật toán thiếu (chưa vét hết các trường hợp)

hoặc sai;

108

Page 19: C++CB.ppt - caodang.tdt.edu.vncaodang.tdt.edu.vn/Upload/file/Tailieuhoctap/Tinhoc/Doan Xuan Thanh... · 1 LẬP TRÌNH C (CƠ BẢN) 1 YÊU ... LẬP TRÌNH ? Giải thuật Ngôn

22/04/2011

19

Bước 1: Đặt dấu nháy vào vị trí bắt đầucần kiểm tra lỗi

109

Bước 2: Nhấn phím Ctrl + F10

110

Quan sát vị trí dấu mũi tên trên cửa sổ viết code đểxác định xem chương trình chạy đến dòng lệnhnào và sẽ thực hiện lệnh tương ứng.

Cửa sổ Locals (nếu không thấy cửa sổ này thì cóthể vào menu View\ Debug Windows\ Variableshoặc nhấn phím Alt+4) sẽ thể hiện tên (name), giátrị (value) và kiểu (type) của các biến cục bộ trongđoạn chương trình.

Cửa sổ Watch (nếu không thấy cửa sổ này vàomenu View\ Debug Windows\ Watch hoặc nhấnAlt+3) cũng có thể quan sát chi tiết biến tương tựnhư cửa sổ Locals, nhưng chỉ thể hiện những biếnnào mà ta nhập tên biến tương ứng vào cửa sổ này.

111

Bước 3: Nhấn phím F10 để thực hiệnlệnh kế tiếp (hoặc phương thức kếtiếp).Nếu muốn xem lệnh thực hiện bêntrong của hàm thì nhấn phím F11 (nếulệnh là lời gọi thực hiện phương thức –lưu ý: không nên nhấn phím F11 khithực hiện các phương thức thư viện (vídụ: cin, cout)

112

Chương 4HÀM CON

22/04/2011

113

CẤU TRÚC CHƯƠNG TRÌNH C

22/04/2011

114

Khai báo

Cài đặt hàm

Hàm main()

CH

ƯƠ

NG

TR

ÌNH

C

Khai báo thư viện hàmKhai báo hàmKhai báo hằng số …

Cài đặt tất cả những hàm con đã được khai báo

Gọi thực hiện các hàm theo yêu cầu của bài toán

Page 20: C++CB.ppt - caodang.tdt.edu.vncaodang.tdt.edu.vn/Upload/file/Tailieuhoctap/Tinhoc/Doan Xuan Thanh... · 1 LẬP TRÌNH C (CƠ BẢN) 1 YÊU ... LẬP TRÌNH ? Giải thuật Ngôn

22/04/2011

20

int Tong(int a, int b){

int s=a+b;return s;

}

void main(){

int kq = Tong (12, 3);

cout<<“Tong cua 12 va 3: “<<kq;}

22/04/2011

115

Truyền đối số

Tham số

Gọi hàm

KHÁI NIỆM

Hàm là một đoạn chương trình độc lập thực hiện trọn vẹn một công việc nhất định sau đó trả về giá trị cho chương trình gọi nó, hay nói cách khác hàm là sự chia nhỏ của chương trình.

Mục đích sử dụng hàm: Khi có một công việc giống nhau cần thực hiện ở nhiều vị trí.Khi cần chia một chương trình lớn phức tạp thành các đơn thể nhỏ (hàm con) để chương trình được trong sáng, dễ hiểu trong việc xử lý, quản lý việc tính toán và giải quyết vấn đề.

22/04/2011

116

Mẫu tổng quát của hàm<Kiểu dữ liệu> TênHàm([ds các tham số]);Trong đó: Kiểu dữ liệu trả về của hàm (kết quả của hàm/ đầu ra), gồm

2 loại void: Không trả về giá trị float / int / long / char */ kiểu cấu trúc / … : Trả về giá

trị kết quả có kiểu dữ liệu tương ứng với bài toán (chỉ trảvề được 1 giá trị theo kiểu dữ liệu)

22/04/2011

117

TênHàm: Đặt tên theo qui ước sao cho phản ánh đúngchức năng thực hiện của hàm

Danh sách các tham số (nếu có): đầu vào của hàm (trongmột số trường hợp có thể là đầu vào và đầu ra của hàmnếu kết quả đầu ra có nhiều giá trị - Tham số này gọi làtham chiếu)

22/04/2011

118

HÀM TRẢ VỀ KIỂU VOID

Cài đặtvoid TênHàm([danh sách các tham số]){ Khai báo các biến cục bộ

Các câu lệnh / khối lệnh hay lời gọi đến hàm khác.}Gọi hàmTênHàm(danh sách tên các đối số);Những phương thức loại này thường rơi vào những nhóm chức năng: Nhập / xuất dữ liệu , thống kê, sắp xếp, liệt kê

22/04/2011

119

VÍ DỤ 1Viết chương trình nhập số nguyên dương n và in ra màn hình các ước số của nPhân tích bài toán: Input: n (Để xác định tham số) Kiểu dữ liệu: số nguyên dương (int).

Output: In ra các ước số của n (Để xác định kiểu dữ liệu trả về của hàm) Xuất ra màn hình Không trả về giá trị Kiểu dữ

liệu của hàm là void . Xác định tên hàm: Hàm này dùng in ra các ước số của n

nên có thể đặt là LietKeUocSvoid LietKeUocSo(int n);

22/04/2011

120

Page 21: C++CB.ppt - caodang.tdt.edu.vncaodang.tdt.edu.vn/Upload/file/Tailieuhoctap/Tinhoc/Doan Xuan Thanh... · 1 LẬP TRÌNH C (CƠ BẢN) 1 YÊU ... LẬP TRÌNH ? Giải thuật Ngôn

22/04/2011

21

File khaibao.h#pragma once#include <iostream.h>void LietKeUocSo(int n);

File caidat.cpp#include “khaibao.h”void LietKeUocSo(int n){

for (int i = 1; i <= n; i++)if (n % i == 0)

cout<<i<<“\t”;}

File main.cpp#include “khaibao.h”void main(){

int n;cout<<"Nhap so nguyen duong n: ";cin>>n;cout<<"Cac uoc so cua “<<n<<“: “;LietKeUocSo(n);

}

22/04/2011

121

Có dấu chấm phẩy

Không dấu chấm phẩy

Kết quả chương trình

22/04/2011

122

HÀM TRẢ VỀ 1 GIÁ TRỊCài đặt<Kiểu dữ liệu trả về> TênHàm([danh sách các tham số]){

<Kiểu dữ liệu trả về> kq; Khai báo các biến cục bộ

Các câu lệnh / khối lệnh hay lời gọi đến hàm khác.return kq;

}Gọi hàm<Kiểu dữ liệu trả về của hàm> Tên biến = TênHàm (danh sách tên các

đối số);Những phương thức này thường rơi vào các nhóm: Tính tổng, tích,trung bình, đếm, kiểm tra, tìm kiếm

22/04/2011

123

VÍ DỤ 2 Viết chương trình nhập số nguyên dương n và tính tổng

Phân tích bài toán: Input: n (Để xác định tham số) Kiểu dữ liệu: số nguyên dương (int).Output: Tổng S (Để xác định kiểu dữ liệu phương thức) Trả về giá trị của S. S là tổng các số nguyên dương nên S cũng là số nguyên dương Kiểu trả về của hàm là int (hoặc long).

Xác định TênHàm: Dùng tính tổng S nên có thể đặt là TongSint TongS(int n);

22/04/2011

124

0;321 nnSn

File khaibao.h#pragma once#include <iostream.h>int TongS(int n);

File caidat.cpp#include “khaibao.h”int TongS(int n){

int kq = 0;for (int i = 1; i <= n; i++)kq + = i;return kq;

}

File main.cpp#include “khaibao.h”void main(){

int n, S;cout<<"Nhap vao so nguyen n: ";cin>>n;S = TongS(n);cout<<"Tong tu 1 den n: " <<S;

}

22/04/2011

125

Kết quả

22/04/2011

126

Page 22: C++CB.ppt - caodang.tdt.edu.vncaodang.tdt.edu.vn/Upload/file/Tailieuhoctap/Tinhoc/Doan Xuan Thanh... · 1 LẬP TRÌNH C (CƠ BẢN) 1 YÊU ... LẬP TRÌNH ? Giải thuật Ngôn

22/04/2011

22

THAM SỐ LÀ THAM CHIẾU

Tham số làm kết quả đầu ra Tham số vừa làm đầu vào và đầu ra Dùng dấu & phía trước tên tham số khi cài đặt hàm

22/04/2011

127

VÍ DỤ 3

Xét chương trình hoán vị 2 số nguyên a, b cho trước Viết chương trình với 2 trường hợp3.1. Trường hợp không dùng tham chiếu3.2. Trường hợp dùng tham chiếu

22/04/2011

128

void HoanVi(int a, int b){

int tam = a;a = b;b = tam;cout<<"Trong HoanVi: a = “<<a<<“ ;b = “<<b;

}

void main(){

int a = 5, b = 21;cout<<"Truoc khi HoanVi: a = “<<a<<“ ; b = “<<b;HoanVi(a, b);cout<<"Sau khi goi HoanVi: a = “<<a<<“ ;b = “<<b;

}

22/04/2011

129

Kết quả

22/04/2011

130

void HoanVi(int &a, int &b){

int tam = a;a = b;b = tam;cout<<"Trong HoanVi: a = “<<a<<“ ;b = “<<b;

}

void main(){

int a = 5, b = 21;cout<<"Truoc khi HoanVi: a = “<<a<<“ ; b = “<<b;HoanVi(a, b);cout<<"Sau khi goi HoanVi: a = “<<a<<“ ;b = “<<b;

}

22/04/2011

131

Kết quả

22/04/2011

132

Page 23: C++CB.ppt - caodang.tdt.edu.vncaodang.tdt.edu.vn/Upload/file/Tailieuhoctap/Tinhoc/Doan Xuan Thanh... · 1 LẬP TRÌNH C (CƠ BẢN) 1 YÊU ... LẬP TRÌNH ? Giải thuật Ngôn

22/04/2011

23

NGUYÊN TẮC XÂY DỰNG HÀM

Trước khi xây dựng hàm phải trả lời những câu hỏi sau: Hàm trả về gì? Xác định kiểu dữ liệu trả về của hàm Hàm làm gì? Xác định tên hàm Cần những thông tin gì để hàm xử lý? Xác định tham số

Ứng với mỗi thông tin đã xác định, xác định xem đã có giá trị trước khi vào hàm chưa, - Nếu chưa có Tham chiếu- Nếu có mà sau khi thực hiện xong hàm vẫn không thay đổi Tham trị (không là tham chiếu)- Nếu có mà sau khi thực hiện xong hàm thì giá trị cũng bị thay đổi theo Tham chiếu

22/04/2011

133

BÀI TẬP 1

Xác định các khai báo hàm của các bài toán sau:1.Viết chương trình tính diện tích và chu vi của hình chữ

nhật với chiều dài và chiều rộng được nhập từ bàn phím.2.Viết chương trình tính diện tích và chu vi hình tròn với

bán kính được nhập từ bàn phím.3.Nhập vào 3 số thực a, b, c và kiểm tra xem chúng có

thành lập thành 3 cạnh của một tam giác hay không? Nếu có hãy tính diện tích, chiều dài mỗi đường cao của tam giác và in kết quả ra màn hình.

4.Viết chương trình nhập 2 số nguyên dương a, b. Tìm USCLN và BSCNN của hai số nguyên đó

22/04/2011

134

BÀI TẬP 2

1. Cài lại các bài tập ở chương 2 bằng phương pháp hàm2. Viết chương trình nhập số nguyên dương n, tính tổng các

ước số dương của n.Ví dụ: Nhập n=6

Tổng các ước số từ 1 đến n: 1+2+3+6=12.3. Nhập vào giờ, phút, giây. Kiểm tra xem giờ, phút, giây đó

có hợp lệ hay không? In kết quả ra màn hình.

22/04/2011

135

BÀI TẬP VỀ NHÀ

1. Cài đặt hoàn chỉnh bài tập 1 Gợi ý bt tam giác Công thức tính diện tích

s = sqrt(p*(p-a)*(p-b)*(p-c) ) Công thức tính các đường cao:

ha = 2s/a, hb=2s/b, hc=2s/c.2. Viết chương trình nhập số nguyên dương n gồm k chữ

số, đếm xem n có bao nhiêu chữ số là số nguyên tố.

22/04/2011

136

4. Viết chương trình tính tiền thuê máy dịch vụ Internet vain ra màn hình kết quả. Với dư liệu nhập vào là giơ bắtđầu thuê (GBD), giơ kết thúc thuê (GKT), sô máy thuê(SoMay). Điều kiện cho dư liệu nhập: 6<=GBD<GKT<=21.

Giơ là sô nguyên. Đơn gia : 2500đ cho mỗi giơ máy trước 17:30 va

3000đ cho mỗi giơ máy sau 17:30.5. Viết chương trình tính tiền lương ngày cho công nhân,

cho biết trước giơ vào ca, giơ ra ca của mỗi người.Gia sư rằng: Tiền tra cho mỗi giơ trước 12 giơ là 6000đ va sau 12

giơ là 7500đ. Giơ vào ca sớm nhất là 6 giơ sáng va giơ ra ca trê

nhất là 18 giơ (Gia sư giơ nhập vào nguyên).

22/04/2011

137