Top Banner
Faculty of Information Technology ADVANCED PROGRAMMING Pascal Review and Introduction to C Language Dr. Nguyen Chi Trung Faculty of Information Technology Hanoi National University of Education
61

NGÔN NGỮ LẬP TRÌNH C/C++fit.hnue.edu.vn/~trungnc/TextBookAndLectureNote/Nhap mon lap trinh 2/1 - Pascal Review...Dr. Nguyen Chi Trung Faculty of Information Technology Hanoi

Dec 26, 2019

Download

Documents

dariahiddleston
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: NGÔN NGỮ LẬP TRÌNH C/C++fit.hnue.edu.vn/~trungnc/TextBookAndLectureNote/Nhap mon lap trinh 2/1 - Pascal Review...Dr. Nguyen Chi Trung Faculty of Information Technology Hanoi

Facu

lty o

f In

form

ati

on

Tech

no

log

y

ADVANCED PROGRAMMING

Pascal Review and Introduction to

C Language

Dr. Nguyen Chi Trung

Faculty of Information Technology

Hanoi National University of Education

Page 2: NGÔN NGỮ LẬP TRÌNH C/C++fit.hnue.edu.vn/~trungnc/TextBookAndLectureNote/Nhap mon lap trinh 2/1 - Pascal Review...Dr. Nguyen Chi Trung Faculty of Information Technology Hanoi

• ..

Pascal Programming Review

Page 3: NGÔN NGỮ LẬP TRÌNH C/C++fit.hnue.edu.vn/~trungnc/TextBookAndLectureNote/Nhap mon lap trinh 2/1 - Pascal Review...Dr. Nguyen Chi Trung Faculty of Information Technology Hanoi

HỆ THỐNG KIẾN THỨC ĐÃ HỌC

NCT.FIT.HNUE 3

Pascal

Các kiểu dữ liệu

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

Các thuật toán

Chương trình con

Page 4: NGÔN NGỮ LẬP TRÌNH C/C++fit.hnue.edu.vn/~trungnc/TextBookAndLectureNote/Nhap mon lap trinh 2/1 - Pascal Review...Dr. Nguyen Chi Trung Faculty of Information Technology Hanoi

HỆ THỐNG KIẾN THỨC ĐÃ HỌC

NCT.FIT.HNUE 4

c k

iểu

dữ

liệ

u

Kiểu dữ liệu cơ bản (tiền định)

Integer (byte, short, word, longint)

Real (extended)

Char

Boolean

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

String

Array

One dimension

Two dimension

Text file

Record

Kiểu con trỏ

• Các phép toán?

• Các hàm, thủ tục?

• Miền giá trị?

Page 5: NGÔN NGỮ LẬP TRÌNH C/C++fit.hnue.edu.vn/~trungnc/TextBookAndLectureNote/Nhap mon lap trinh 2/1 - Pascal Review...Dr. Nguyen Chi Trung Faculty of Information Technology Hanoi

Standard arithmetic functions: Example

Examples

9/17/2017NCT.FIT.HNUE 5

sqr(3)=9

sqr(2.5)=6.25

sqrt(9)=3.00

abs(–28.55)=28.55

ln(exp(1))=1.00

arctan(1)=45 degrees

round(8.4) returns 8

round(8.5) returns 9

trunc(8.4) returns 8

trunc(8.5) returns 8

round(n) rounds n to the closest integer

trunc(n) truncates the fraction part of n

writeln(frac(8.22):2:2);

produces 0.22

writeln(int(8.22):2:2);

produces 8.00

frac(n) returns the fractional portion of

the real number n

int(n) returns the integer portion of the

real number n

Page 6: NGÔN NGỮ LẬP TRÌNH C/C++fit.hnue.edu.vn/~trungnc/TextBookAndLectureNote/Nhap mon lap trinh 2/1 - Pascal Review...Dr. Nguyen Chi Trung Faculty of Information Technology Hanoi

HỆ THỐNG KIẾN THỨC ĐÃ HỌC

NCT.FIT.HNUE 6

Các c

ấu trú

c đ

iều k

hiể

nTuần tự

Rẽ nhánh

Rẽ nhánh khuyết (if – then)

Rẽ nhánh đủ (if –then – else)

Rẽ nhiều nhánh (chọn lựa) (case of)

Lặp

Lặp với số lần biết trước

Lặp tiến (for-to-do)

Lặp lùi (for-downto-do)

Lặp với số lần không biết trước

Kiểm tra điều kiện trước (while-do)

Kiểm tra điều kiện sau (repeat-until)

Page 7: NGÔN NGỮ LẬP TRÌNH C/C++fit.hnue.edu.vn/~trungnc/TextBookAndLectureNote/Nhap mon lap trinh 2/1 - Pascal Review...Dr. Nguyen Chi Trung Faculty of Information Technology Hanoi

HỆ THỐNG KIẾN THỨC ĐÃ HỌC

NCT.FIT.HNUE 7

Các thuật toán

Liên quan đến các cấu trúc điều khiển

Số nguyên tố, cặp số nguyên tố cùng nhau

Số hoàn hảo, cặp số hoàn

hảo

UCLN

Khác 2

Liên quan đến mảng

Tìm kiếm

Tiềm kiếm tuần tự

Tìm kiếm nhị phân

Sắp xếp

Chọn trực tiếp (selection S)

Nổi bọt (Bubble S)

Chèn trực tiếp (Insertion S)

Duyệt mảng khác 3

Liên quan đến xâu kí tự

Xóa dấu cách thừa

Sửa lỗi về dấu ngắt câu

Khác 4...

Khác 1

1

Page 8: NGÔN NGỮ LẬP TRÌNH C/C++fit.hnue.edu.vn/~trungnc/TextBookAndLectureNote/Nhap mon lap trinh 2/1 - Pascal Review...Dr. Nguyen Chi Trung Faculty of Information Technology Hanoi

Số nguyên tố

Bài toán 1

o INPUT: số nguyên a

o OUTPUT: kết luận về tính nguyên tố của số a

Function prime(a: longint) : Boolean;

Var i : longint; d : integer;

Begin

d := 0;

for i:=1 to a div 2 do

if a mod i = 0 then d := d + 1;

prime := (d = 1);

End;

9/17/2017NCT.FIT.HNUE 8

Page 9: NGÔN NGỮ LẬP TRÌNH C/C++fit.hnue.edu.vn/~trungnc/TextBookAndLectureNote/Nhap mon lap trinh 2/1 - Pascal Review...Dr. Nguyen Chi Trung Faculty of Information Technology Hanoi

Số nguyên tố

Bài toán 2

o INPUT: a, b (các số nguyên dương, a < b)

o OUTPUT: các số nguyên tố trong đoạn [a, b]

Dùng hàm prime(a) đã biết

Procedure ListOfPrimes (a, b : longint);

Var i : longint;

Begin

writeln(‘The primes in set of [’, a, ‘,’ ,b, ‘] are:’);

for i:=a to b do

if prime(a) then write(a, ‘, ’);

End;

9/17/2017NCT.FIT.HNUE 9

Page 10: NGÔN NGỮ LẬP TRÌNH C/C++fit.hnue.edu.vn/~trungnc/TextBookAndLectureNote/Nhap mon lap trinh 2/1 - Pascal Review...Dr. Nguyen Chi Trung Faculty of Information Technology Hanoi

Số nguyên tố

Bài toán 3

o INPUT: a, b (các số nguyên dương, a < b)

o OUTPUT: các cặp số nguyên tố cùng nhau trong đoạn [a, b]

Function GCD(a, b : longint) : boolean; {đã biết}

Procedure ListPrimesTogether(a, b : longint);

Var i, j : longint;

Begin

writeln(The primes together in set of [’, a, ‘,’ ,b, ‘] are:’);

for i:=2 to a do

for j:=2 to b do

if GCD(i, j)=1 then writeln(i, ‘, ’, i);

End;

9/17/2017NCT.FIT.HNUE 10

Page 11: NGÔN NGỮ LẬP TRÌNH C/C++fit.hnue.edu.vn/~trungnc/TextBookAndLectureNote/Nhap mon lap trinh 2/1 - Pascal Review...Dr. Nguyen Chi Trung Faculty of Information Technology Hanoi

Số hoàn hảo (hoàn thiện)

Các bài toán đặt ra tương tự như đối với số nguyên tố

Bài toán 1

o INPUT: số nguyên a

o OUTPUT: kết luận về tính hoàn hảo của số a

Function perfect(a: longint) : Boolean;

Var i : longint; d : integer;

Begin

d := 0;

for i:=1 to a div 2 do

if a mod i = 0 then d := d + i;

perfect := (d = a);

End;

9/17/2017NCT.FIT.HNUE 11

Page 12: NGÔN NGỮ LẬP TRÌNH C/C++fit.hnue.edu.vn/~trungnc/TextBookAndLectureNote/Nhap mon lap trinh 2/1 - Pascal Review...Dr. Nguyen Chi Trung Faculty of Information Technology Hanoi

Số hoàn hảo (hoàn thiện)

Bài toán 2

o INPUT: hai số nguyên a và b

o OUTPUT: kết luận tính hoàn hảo của cặp số (a, b)

Function perfectCouple(a, b: longint) : boolean;

Var i, j, sa, sb : longint; ok : boolean;

Begin

ok := false; sa := 0;

for i:=1 to a div 2 do if a mod i = 0 then sa := sa + i;

if sa = b then

begin sb := 0;

for j := 1 to n do if b mod j = 0 then sb := sb+j;

ok := (sb = a);

end;

perfectCouple := ok;

End;

9/17/2017NCT.FIT.HNUE 12

Page 13: NGÔN NGỮ LẬP TRÌNH C/C++fit.hnue.edu.vn/~trungnc/TextBookAndLectureNote/Nhap mon lap trinh 2/1 - Pascal Review...Dr. Nguyen Chi Trung Faculty of Information Technology Hanoi

Ước chung lớn nhất Bài toán

o INPUT: hai số nguyên a và b

o OUTPUT: GCD(a, b)

Function GCD1(a, b: longint) : longint; {trừ liên tiếp}

Begin a := abs(a); b := abs(b);

while a<>b do

if a > b then a := a – b else b := b – a;

GCD1 := b;

End;

Function GCD2(a, b: longint) : longint; {chia liên tiếp}

var r : longint;

Begin a := abs(a); b := abs(b); r := a mod b;

while r > 0 do

begin a := b; b := r; r := a mod b; end;

GCD2 := b;

End; 9/17/2017NCT.FIT.HNUE 13

Page 14: NGÔN NGỮ LẬP TRÌNH C/C++fit.hnue.edu.vn/~trungnc/TextBookAndLectureNote/Nhap mon lap trinh 2/1 - Pascal Review...Dr. Nguyen Chi Trung Faculty of Information Technology Hanoi

KHÁC Bài toán 1: Xét biểu thức S = 1+ 1/(a+1) + ...+ 1/(a+n)

a) Tính S với n cho trước

b) Tính S biết số hạng cuối cùng của dãy thỏa mãn 1/(a+n) <

cho trước

Bài toán 2: Lãi xuất tiết kiệm

INPUT: a (tiền gửi ban đầu); k (lãi suất); c (chu kì)

OUPUT:

a) Tính số tiền b rút được sau t tháng

b) Tính số tháng t phải gửi để nhận được số tiền b

Bài toán 3: Tốc độ tăng dân số

INPUT: a (dân số năm N nào đó); k (tốc độ tăng dân số)

OUPUT:

a) Tính số dân ở một năm M nào đó (M > N)

b) Cho biết năm M nào thì dân số không ít hơn b cho trước

9/17/2017NCT.FIT.HNUE 14

Page 15: NGÔN NGỮ LẬP TRÌNH C/C++fit.hnue.edu.vn/~trungnc/TextBookAndLectureNote/Nhap mon lap trinh 2/1 - Pascal Review...Dr. Nguyen Chi Trung Faculty of Information Technology Hanoi

KHÁC Bài toán 4: Xét dãy fibonacii 1, 1, 2, 3, 5, 8, 13, ....

INPUT: định nghĩa về dãy fibonacii

OUPUT:

a) Tìm số fibonacii thứ n

b) Tính vị trí của số fibonacii nhỏ nhất mà nó >= 500.000

Bài toán 5: Các bài toán vui

Vừa gà vừa chó

Trăm trâu, trăm cỏ

vv...

9/17/2017NCT.FIT.HNUE 15

Page 16: NGÔN NGỮ LẬP TRÌNH C/C++fit.hnue.edu.vn/~trungnc/TextBookAndLectureNote/Nhap mon lap trinh 2/1 - Pascal Review...Dr. Nguyen Chi Trung Faculty of Information Technology Hanoi

HỆ THỐNG KIẾN THỨC ĐÃ HỌC

NCT.FIT.HNUE 16

Các thuật toán

Liên quan đến các cấu trúc điều khiển

Số nguyên tố, cặp số nguyên tố cùng nhau

Số hoàn hảo, cặp số hoàn

hảo

UCLN

Khác 2

Liên quan đến mảng

Tìm kiếm

Tiềm kiếm tuần tự

Tìm kiếm nhị phân

Sắp xếp

Chọn trực tiếp (selection S)

Nổi bọt (Bubble S)

Chèn trực tiếp (Insertion S)

Duyệt mảng khác 3

Liên quan đến xâu kí tự

Xóa dấu cách thừa

Sửa lỗi về dấu ngắt câu

Khác 4...

Khác 12

Page 17: NGÔN NGỮ LẬP TRÌNH C/C++fit.hnue.edu.vn/~trungnc/TextBookAndLectureNote/Nhap mon lap trinh 2/1 - Pascal Review...Dr. Nguyen Chi Trung Faculty of Information Technology Hanoi

Tìm kiếm tuần tự Bài toán 1

o INPUT: n, x, mảng a: a1, a2, ..., an (giả sử kiểu mảng a là arr,

mỗi phần tử có kiểu số thực);

o OUTPUT: Kết luận có x trong mảng a không

Function Found(x : real; n: integer; a : arr) : boolean;

var ok : boolean; i : integer;

Begin

ok := false; {giả sử không có x trong a}

i := 1;

while (i <= n) and not ok do

if a[i] = x then ok := true else i := i + 1;

Found := ok;

End;

9/17/2017NCT.FIT.HNUE 17

Page 18: NGÔN NGỮ LẬP TRÌNH C/C++fit.hnue.edu.vn/~trungnc/TextBookAndLectureNote/Nhap mon lap trinh 2/1 - Pascal Review...Dr. Nguyen Chi Trung Faculty of Information Technology Hanoi

Tìm kiếm tuần tự Bài toán 2

o INPUT: n, x, mảng a = a1, a2, ..., an (giả sử kiểu mảng a là arr,

mỗi phần tử có kiểu số thực);

o OUTPUT: Đưa ra vị trí của các phần từ trong mảng mà bằng x

(nếu có)

Procedure SearchingPosition (x : real; n: integer; a : arr);

var d, i : integer;

Begin

d := 0;

writeln(‘The items’ positions in a-array that equal to x-value

are:’);

for i := 1 to n do

if a[i] = x then begin d := d + 1; write(i, ‘, ’); end;

if d = 0 then writeln(‘After searching, not found x in a-

array’);

End; 9/17/2017NCT.FIT.HNUE 18

Page 19: NGÔN NGỮ LẬP TRÌNH C/C++fit.hnue.edu.vn/~trungnc/TextBookAndLectureNote/Nhap mon lap trinh 2/1 - Pascal Review...Dr. Nguyen Chi Trung Faculty of Information Technology Hanoi

Tìm kiếm nhị phân Bài toán

o INPUT: n, x, mảng a = a1, a2, ..., an đã được sắp xếp tăng (giả

sử kiểu mảng a là arr, mỗi phần tử có kiểu số thực);

o OUTPUT: Kết luận có x trong mảng a không

Function BinarySearch(x : real; n: integer; a : arr) : boolean;

var ok : boolean; i : integer;

Begin

ok := false; L := 1; R := n;

while (L <= R) and not ok do

begin M := (L+R) div 2;

if x = a[M] then ok := true

else if x > a[M] then L := M + 1 else R := M - 1;

end;

BinarySearch := ok;

End;

9/17/2017NCT.FIT.HNUE 19

Page 20: NGÔN NGỮ LẬP TRÌNH C/C++fit.hnue.edu.vn/~trungnc/TextBookAndLectureNote/Nhap mon lap trinh 2/1 - Pascal Review...Dr. Nguyen Chi Trung Faculty of Information Technology Hanoi

Sắp xếp chèn trực tiếp Bài toán

o INPUT: n, mảng a1, a2, ..., an (kiểu mảng a là arr, phần tử kiểu real);

o OUTPUT: mảng a1, a2, ..., an được sắp xếp tăng dần

Procedure InsertionSort(var a : arr; n : integer);

var i, k : integer; x : real;

Begin

for i := 2 to n do {tìm cách chèn a[i] vào đúng vị trí của dãy trái}

begin {x lưu giá trị của a[i] vì a[i] có thể bị thay đổi}

x := a[i]; k := i – 1; {so sánh a[i] với từng phần tử dãy trái}

while (k >= 1) and (a[k] > x) do

begin

a[k+1] := a[k]; {nếu phần tử a[k] của dãy trái nhỏ hơn a[i]}

k := k – 1; {thì tịnh tiến a[k] sang phải 1 vị trí}

end; {để nhường chỗ cho a[i] chèn vào}

a[k+1] := x; {đặt a[i] vào vị trí cần chèn}

End; 9/17/2017NCT.FIT.HNUE 20

Page 21: NGÔN NGỮ LẬP TRÌNH C/C++fit.hnue.edu.vn/~trungnc/TextBookAndLectureNote/Nhap mon lap trinh 2/1 - Pascal Review...Dr. Nguyen Chi Trung Faculty of Information Technology Hanoi

Sắp xếp chèn trực tiếp Procedure InsertionSort(var a : arr; n : integer);

9/17/2017NCT.FIT.HNUE 21

i k x In while a[1] a[2] a[3] a[4] a[5]

5 4 3 2 1

2 1 4 T 5

0 F 4 5 3 2 1

3 2 3 T 5

1 T 4

0 F 3 4 5 2 1

4

.....

.....

Page 22: NGÔN NGỮ LẬP TRÌNH C/C++fit.hnue.edu.vn/~trungnc/TextBookAndLectureNote/Nhap mon lap trinh 2/1 - Pascal Review...Dr. Nguyen Chi Trung Faculty of Information Technology Hanoi

Sắp xếp nổi bọt Bài toán

o INPUT: n, mảng a1, a2, ..., an (giả sử kiểu mảng a là arr, mỗi

phần tử có kiểu số thực);

o OUTPUT: mảng a1, a2, ..., an được sắp xếp tăng dần

Procedure BubbleSort(var a : arr; n : integer);

var i, j : integer; tg : real;

Begin

for i := 2 to n do

for j := n downto i do

if a[j] < a[j-1] then

begin tg := a[j];

a[j] := a[j-1];

a[j-1] := tg;

end;

End;

9/17/2017NCT.FIT.HNUE 22

Page 23: NGÔN NGỮ LẬP TRÌNH C/C++fit.hnue.edu.vn/~trungnc/TextBookAndLectureNote/Nhap mon lap trinh 2/1 - Pascal Review...Dr. Nguyen Chi Trung Faculty of Information Technology Hanoi

Sắp xếp chọn trực tiếp Bài toán

o INPUT: n, mảng a1, a2, ..., an (giả sử kiểu mảng a là arr, mỗi

phần tử có kiểu số thực);

o OUTPUT: mảng a1, a2, ..., an được sắp xếp tăng dần

Procedure SelectionSort(var a : arr; n : integer); {chưa tối ưu}

var i, j : integer; tg : real;

Begin

for i := 1 to n-1 do

for j := i + 1 to n do

if a[j] < a[i] then

begin

tg := a[i]; a[i] := a[j]; a[j] := tg;

end;

End;

9/17/2017NCT.FIT.HNUE 23

Page 24: NGÔN NGỮ LẬP TRÌNH C/C++fit.hnue.edu.vn/~trungnc/TextBookAndLectureNote/Nhap mon lap trinh 2/1 - Pascal Review...Dr. Nguyen Chi Trung Faculty of Information Technology Hanoi

Sắp xếp chọn trực tiếp Bài toán

o INPUT: n, mảng a1, a2, ..., an (giả sử kiểu mảng a là arr, mỗi

phần tử có kiểu số thực);

o OUTPUT: mảng a1, a2, ..., an được sắp xếp tăng dần

Procedure SelectionSort(var a : arr; n : integer); {tối ưu}

var i, j : integer; tg : real;

Begin

for i := 1 to n-1 do

begin {Tìm k là vị trí nhỏ nhất trong dãy từ i đến n}

k := i; for j := i+1 to n do

if a[j] < a[k] then k := j;

if k<>i then {chuyển phần tử ở vị trí k về đầu dãy i}

begin tg := a[k]; a[k] := a[i]; a[i] := tg;

end;

End;

9/17/2017NCT.FIT.HNUE 24

Page 25: NGÔN NGỮ LẬP TRÌNH C/C++fit.hnue.edu.vn/~trungnc/TextBookAndLectureNote/Nhap mon lap trinh 2/1 - Pascal Review...Dr. Nguyen Chi Trung Faculty of Information Technology Hanoi

DUYỆT MẢNG KHÁC

Bài toán 1: Tìm max, tìm min

Bài toán 2: Tìm vị trí các phần tử lớn hơn trung bình cộng

Bài toán 3: Đếm số lượng và tỷ lệ HS khá trở lên

......

9/17/2017NCT.FIT.HNUE 25

Page 26: NGÔN NGỮ LẬP TRÌNH C/C++fit.hnue.edu.vn/~trungnc/TextBookAndLectureNote/Nhap mon lap trinh 2/1 - Pascal Review...Dr. Nguyen Chi Trung Faculty of Information Technology Hanoi

HỆ THỐNG KIẾN THỨC ĐÃ HỌC

NCT.FIT.HNUE 26

Các thuật toán

Liên quan đến các cấu trúc điều khiển

Số nguyên tố, cặp số nguyên tố cùng nhau

Số hoàn hảo, cặp số hoàn

hảo

UCLN

Khác 2

Liên quan đến mảng

Tìm kiếm

Tiềm kiếm tuần tự

Tìm kiếm nhị phân

Sắp xếp

Chọn trực tiếp (selection S)

Nổi bọt (Bubble S)

Chèn trực tiếp (Insertion S)

Duyệt mảng khác 3

Liên quan đến xâu kí tự

Xóa dấu cách thừa

Sửa lỗi về dấu ngắt câu

Khác 4...

Khác 1

3

Page 27: NGÔN NGỮ LẬP TRÌNH C/C++fit.hnue.edu.vn/~trungnc/TextBookAndLectureNote/Nhap mon lap trinh 2/1 - Pascal Review...Dr. Nguyen Chi Trung Faculty of Information Technology Hanoi

Xóa dấu cách thừa trong xâu Bài toán

o INPUT: S (xâu kí tự biểu thị một đoạn văn bản);

o OUTPUT: S (xâu S không chứa dấu cách thừa}

Procedure DeleteRedudantSpaces(var S: string);

var k : byte;

Begin

repeat

k := pos(‘ ’,S); {tìm vị trí 2 dấu cách trong S}

if k > 0 then delete(S, k, 1);

until k=0;

End;

9/17/2017NCT.FIT.HNUE 27

Page 28: NGÔN NGỮ LẬP TRÌNH C/C++fit.hnue.edu.vn/~trungnc/TextBookAndLectureNote/Nhap mon lap trinh 2/1 - Pascal Review...Dr. Nguyen Chi Trung Faculty of Information Technology Hanoi

Sửa lỗi văn phạm về ngắt dấu trong câu Bài toán

o INPUT: S (xâu kí tự biểu thị một đoạn văn bản);

o OUTPUT: S (xâu S không chứa lỗi dấu ngắt}

o Giả sử chỉ xét dấu phẩy

Procedure FixSyntaxErrors(var S: string);

var k, err : byte;

Begin

{xóa dấu cách trước dấu phẩy}

repeat k := pos(‘ ,’,S); if k > 0 then delete(S, k, 1); until k=0;

{chỉ để duy nhất 1 dấu cách sau dấu phẩy}

repeat k := pos(‘, ’,S); if k > 0 then delete(S, k+1, 1); until k=0;

repeat k := pos(‘,’,S); err := 0;

if (k > 0) and (s[k+1] <> #32) then err := 1;

if err = 1 then Insert(‘ ’, S,k) ;

until err=0;

End; 9/17/2017NCT.FIT.HNUE 28

Page 29: NGÔN NGỮ LẬP TRÌNH C/C++fit.hnue.edu.vn/~trungnc/TextBookAndLectureNote/Nhap mon lap trinh 2/1 - Pascal Review...Dr. Nguyen Chi Trung Faculty of Information Technology Hanoi

Sửa lỗi văn phạm về ngắt dấu trong câu Bài toán

o INPUT: S (xâu kí tự biểu thị một đoạn văn bản);

o OUTPUT: S (xâu S không chứa lỗi dấu ngắt}

Procedure FixSyntaxErrors(c :char; var S: string);

var k, err : byte;

Begin {xóa dấu cách trước dấu c}repeat k := pos(#32+c,S); if k > 0 then delete(S, k, 1);

until k=0;

{chỉ để duy nhất 1 dấu cách sau dấu c}

repeat k := pos(c +#32+#32,S); if k > 0 then delete(S, k+1, 1);

until k=0;

repeat k := pos(c,S); err := 0;

if (k > 0) and (s[k+1] <> #32) then err := 1;

if err = 1 then Insert(#32, S,k) ;

until err=0;

End; 9/17/2017NCT.FIT.HNUE 29

Page 30: NGÔN NGỮ LẬP TRÌNH C/C++fit.hnue.edu.vn/~trungnc/TextBookAndLectureNote/Nhap mon lap trinh 2/1 - Pascal Review...Dr. Nguyen Chi Trung Faculty of Information Technology Hanoi

Sửa lỗi văn phạm về ngắt dấu trong câu Bài toán

o INPUT: S (xâu kí tự biểu thị một đoạn văn bản);

o OUTPUT: S (xâu S không chứa lỗi dấu ngắt}

Gọi thực hiện:

o FixSyntaxErrors(‘,’, S);

o FixSyntaxErrors(‘.’, S);

o FixSyntaxErrors(‘;’, S);

o .....

Gọi thực hiện cách 2

Const dau[1..?] of char = (‘.’, ‘,’, ‘;’, ‘:’, ‘!’, ‘?’);

Khi đó:

for i := 1 to 6 do FixSyntaxError(dau[i], S);

9/17/2017NCT.FIT.HNUE 30

Page 31: NGÔN NGỮ LẬP TRÌNH C/C++fit.hnue.edu.vn/~trungnc/TextBookAndLectureNote/Nhap mon lap trinh 2/1 - Pascal Review...Dr. Nguyen Chi Trung Faculty of Information Technology Hanoi

KHÁC 4

Bài toán về thống kê kí tự, từ, câu,

ví dụ:

o Đếm số dấu cách

o Đếm số từ

o Tìm từ có độ dài cho trước

o Tìm số từ cụ thể nào đó

o Tìm câu có độ dài dài nhất

o ....

9/17/2017NCT.FIT.HNUE 31

Page 32: NGÔN NGỮ LẬP TRÌNH C/C++fit.hnue.edu.vn/~trungnc/TextBookAndLectureNote/Nhap mon lap trinh 2/1 - Pascal Review...Dr. Nguyen Chi Trung Faculty of Information Technology Hanoi

HỆ THỐNG KIẾN THỨC ĐÃ HỌC

NCT.FIT.HNUE 32

Các thuật toán

Liên quan đến các cấu trúc điều khiển

Số nguyên tố, cặp số nguyên tố cùng nhau

Số hoàn hảo, cặp số hoàn

hảo

UCLN

Khác 2

Liên quan đến mảng

Tìm kiếm

Tiềm kiếm tuần tự

Tìm kiếm nhị phân

Sắp xếp

Chọn trực tiếp (selection S)

Nổi bọt (Bubble S)

Chèn trực tiếp (Insertion S)

Duyệt mảng khác 3

Liên quan đến xâu kí tự

Xóa dấu cách thừa

Sửa lỗi về dấu ngắt câu

Khác 4...

Khác 1

4

Page 33: NGÔN NGỮ LẬP TRÌNH C/C++fit.hnue.edu.vn/~trungnc/TextBookAndLectureNote/Nhap mon lap trinh 2/1 - Pascal Review...Dr. Nguyen Chi Trung Faculty of Information Technology Hanoi

KHÁC 1

Chương trình con

1) Kiến thức: phân biệt được

o Thủ tục và hàm

o Biến toàn cục và biến địa phương

o Tham biến và tham trị

o ....

o 2) Thuật toán & bài toán: Tất cả các thuật toán giải

quyết bài toán dựa trên ý tưởng chia để trị. Nói cách khác

là lập trình sử dụng CTC để phân tích bài toán cần giải

thành các bài toán con

9/17/2017NCT.FIT.HNUE 33

Page 34: NGÔN NGỮ LẬP TRÌNH C/C++fit.hnue.edu.vn/~trungnc/TextBookAndLectureNote/Nhap mon lap trinh 2/1 - Pascal Review...Dr. Nguyen Chi Trung Faculty of Information Technology Hanoi

1.1. Ngôn ngữ C/C++ và các môi trường lập trình C/C++

1.2. Cấu trúc một chương trình C/C++

1.3. Kiểu dữ liệu, hằng, biến, biểu thức và mảng

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

Page 35: NGÔN NGỮ LẬP TRÌNH C/C++fit.hnue.edu.vn/~trungnc/TextBookAndLectureNote/Nhap mon lap trinh 2/1 - Pascal Review...Dr. Nguyen Chi Trung Faculty of Information Technology Hanoi

.

Ngôn ngữ C/C++

và các môi trường lập trình C/C++

Page 36: NGÔN NGỮ LẬP TRÌNH C/C++fit.hnue.edu.vn/~trungnc/TextBookAndLectureNote/Nhap mon lap trinh 2/1 - Pascal Review...Dr. Nguyen Chi Trung Faculty of Information Technology Hanoi

• C được B.Kernighan & D.Ritchie (1978) thiết kế tại phòng thí

nghiệm Bell, AT&T để viết hệ điều hành UNIX.

• ANSI C (1990, viện tiêu chuẩn quốc gia Mỹ) ra đời nhằm chuẩn

hóa C.

• C++ là ngôn ngữ mở rộng của C được Stroustrup sáng lập để

cho phép lập trình hướng đối tượng (OOP - Object oriented

programming), để có thể viết các phần mềm hệ thống và các

phần mềm thương mại cho mọi hệ điều hành.

• Hãng Borland phát triển cả hai môi trường Turbo C/C++ và

Borland C/C++.

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

NCT.FIT.HNUE 36

Page 37: NGÔN NGỮ LẬP TRÌNH C/C++fit.hnue.edu.vn/~trungnc/TextBookAndLectureNote/Nhap mon lap trinh 2/1 - Pascal Review...Dr. Nguyen Chi Trung Faculty of Information Technology Hanoi

• Microsoft: Visual Basic và Visual C++; Cho phép lập trình trực

quan song song để phát triển ứng dụng trên nền của hệ điều 32

bit.

• Borland: Delphi cạnh tranh với Visual Basic của Microsoft.

Delphi là phiên bản hướng đối tượng cho ngôn ngữ Pascal và

tích hợp cả lập trình C++ Builder.

• Borland: C++ Builder Project Union để cạnh tranh với Visual

C++; RAD (Rapid Application Development).

• SUN: JAVA của Sun là “phiên bản C++” được thiết kế lại hợp

lý hơn, có khả năng chạy trên nhiều nền tảng;

• Microsoft: .NET; C# trong Visual Studio .NET. (C# đối ứng

Java).

Các môi trường lập trình trên ngôn ngữ lập trình C/C++

NCT.FIT.HNUE 37

Page 38: NGÔN NGỮ LẬP TRÌNH C/C++fit.hnue.edu.vn/~trungnc/TextBookAndLectureNote/Nhap mon lap trinh 2/1 - Pascal Review...Dr. Nguyen Chi Trung Faculty of Information Technology Hanoi

• Microsoft đã tạo ra ngôn ngữ C# mới với các tính năng tương tự

như JAVA nhưng chỉ chạy trên nền Windows.

• Microsoft rất sáng tạo khi dùng khái niệm Studio cho bộ công cụ

lập trình Visual Studio của họ.

• Các công ty đua nhau bắt chước dùng khái niệm Studio, trong đó

có Sun, Oracle, và Borland.

• Borland ngừng phát triển C++ Builder cho 32 bit và đổi sang ủng

hộ Microsoft .NET. Họ phát triển Borland Developer Studio

(BDS) từ 2006.

• Borland International Delphi Inprise Jbuilder

Borland Software Corporation.

Bình luận về các hãng phát triển môi trường lập trình

NCT.FIT.HNUE 38

Page 39: NGÔN NGỮ LẬP TRÌNH C/C++fit.hnue.edu.vn/~trungnc/TextBookAndLectureNote/Nhap mon lap trinh 2/1 - Pascal Review...Dr. Nguyen Chi Trung Faculty of Information Technology Hanoi

• C language: D. Ritchie, the BELL Telephone Laboratories USA,

1972, to write an operation system known as UNIX, has become

popular language among the professional users.

• C++ language: Stroustrup, the BELL Telephone Laboratories

USA, 1980, “Object Oriented Program”, has become popular

language among the professional software experts for developing

specialized software.

• JAVA: developed language employing the advantages of internet,

1990.

• C#: Hejlsberg, Microsoft, 2006, for the Common Language

Infrastructure.

Kết luận về C/C++

NCT.FIT.HNUE 39

Page 40: NGÔN NGỮ LẬP TRÌNH C/C++fit.hnue.edu.vn/~trungnc/TextBookAndLectureNote/Nhap mon lap trinh 2/1 - Pascal Review...Dr. Nguyen Chi Trung Faculty of Information Technology Hanoi

NCT.FIT.HNUE 40

Page 41: NGÔN NGỮ LẬP TRÌNH C/C++fit.hnue.edu.vn/~trungnc/TextBookAndLectureNote/Nhap mon lap trinh 2/1 - Pascal Review...Dr. Nguyen Chi Trung Faculty of Information Technology Hanoi

.

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

Page 42: NGÔN NGỮ LẬP TRÌNH C/C++fit.hnue.edu.vn/~trungnc/TextBookAndLectureNote/Nhap mon lap trinh 2/1 - Pascal Review...Dr. Nguyen Chi Trung Faculty of Information Technology Hanoi

Ví dụ chương trình C/C++ đơn giản

Bài toán: Lập trình tính chu vi và diện tích của 3 hình tròn biết bán

kính là số thực dương nhập từ bàn phím.

Chương trình gồm 4 phần:

1) Khai báo các thư viện chương trình (từ khóa #include) và các

hằng (#define)

2) Khai báo các hàm (tự định nghĩa) sẽ sử dụng trong chương trình

3) Hàm main(): chương trình chính

4) Định nghĩa (xây dựng) các hàm đã được khai báo.

Cấu trúc một chương trình trên C /C++

NCT.FIT.HNUE 42

Page 43: NGÔN NGỮ LẬP TRÌNH C/C++fit.hnue.edu.vn/~trungnc/TextBookAndLectureNote/Nhap mon lap trinh 2/1 - Pascal Review...Dr. Nguyen Chi Trung Faculty of Information Technology Hanoi

#include <iostream.h>

#include <conio.h>

#include <iomanip.h>

#define PI 3.14

float cv(float r) {return 2*PI*r;}

double dt(float);

int main() {

float r1, r2, r3; clrscr();

cout<<"Nhap cac ban kinh r1, r2, r3: "; cin >> r1 >> r2 >> r3;

cout<<setiosflags(ios::showpoint)<<setprecision(3);

cout<<"CV, DT hinh tron 1: " <<cv(r1)<<"\t"<<dt(r1)<<endl;

cout<<"CV, DT hinh tron 2: " <<cv(r2)<<"\t"<<dt(r2)<<endl;

cout<<"CV, DT hinh tron 3: " <<cv(r3)<<"\t"<<dt(r3)<<endl;

getch(); return 0; }

double dt(float r){ return PI*r*r; }

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

NCT.FIT.HNUE 43

Trong môi trường

TC 3.0

Page 44: NGÔN NGỮ LẬP TRÌNH C/C++fit.hnue.edu.vn/~trungnc/TextBookAndLectureNote/Nhap mon lap trinh 2/1 - Pascal Review...Dr. Nguyen Chi Trung Faculty of Information Technology Hanoi

#include <iostream>

#include <conio.h>

#include <iomanip.h>

#define PI 3.14

using namespace std;

float cv(float r) {return 2*PI*r;}

double dt(float);

int main() {

float r1, r2, r3; system("cls");

cout<<"Nhap cac ban kinh r1, r2, r3: "; cin >> r1 >> r2 >> r3;

cout<<setiosflags(ios::showpoint)<<setprecision(3);

cout<<"CV, DT hinh tron 1: " <<cv(r1)<<"\t"<<dt(r1)<<endl;

cout<<"CV, DT hinh tron 2: " <<cv(r2)<<"\t"<<dt(r2)<<endl;

cout<<"CV, DT hinh tron 3: " <<cv(r3)<<"\t"<<dt(r3)<<endl;

system(“pause”); return 0; }

double dt(float r){ return PI*r*r; }

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

NCT.FIT.HNUE 44

Trong môi trường

DEV C++ 4.9

Page 45: NGÔN NGỮ LẬP TRÌNH C/C++fit.hnue.edu.vn/~trungnc/TextBookAndLectureNote/Nhap mon lap trinh 2/1 - Pascal Review...Dr. Nguyen Chi Trung Faculty of Information Technology Hanoi

#include <iostream.h>

#include <conio.h>

#include <iomanip.h>

#define PI 3.14

float cv(float r) {return 2*PI*r;}

double dt(float);

void main() {

float r1, r2, r3;

cout<<"Nhap cac ban kinh r1, r2, r3: "; cin >> r1 >> r2 >> r3;

cout<<setiosflags(ios::showpoint)<<setprecision(3);

cout<<"CV, DT hinh tron 1: " <<cv(r1)<<"\t"<<dt(r1)<<endl;

cout<<"CV, DT hinh tron 2: " <<cv(r2)<<"\t"<<dt(r2)<<endl;

cout<<"CV, DT hinh tron 3: " <<cv(r3)<<"\t"<<dt(r3)<<endl;

}

double dt(float r){ return PI*r*r; }

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

NCT.FIT.HNUE 45

Trong môi trường

C-Free 4.0

Page 46: NGÔN NGỮ LẬP TRÌNH C/C++fit.hnue.edu.vn/~trungnc/TextBookAndLectureNote/Nhap mon lap trinh 2/1 - Pascal Review...Dr. Nguyen Chi Trung Faculty of Information Technology Hanoi

• cin >> tên biến: nhập giá trị cho biến từ bàn phím. Trong đó kí

pháp >> là toán tử vào

• cout << “thông báo”: đưa ra màn hình thông báo

• cout << biểu thức: đưa ra màn hình giá trị của biểu thức. Kí pháp

<< là toán tử ra

Vào/ra dữ liệu trong C++

NCT.FIT.HNUE 46

Page 47: NGÔN NGỮ LẬP TRÌNH C/C++fit.hnue.edu.vn/~trungnc/TextBookAndLectureNote/Nhap mon lap trinh 2/1 - Pascal Review...Dr. Nguyen Chi Trung Faculty of Information Technology Hanoi

• Ví dụ: Chuyển hệ cơ số 2 sang hệ 10

1011 = 1 × 23 + 0 × 22 + 1 × 21 + 1 × 100 = 11 (hệ 10)

• Thuật toán

Input: S, a

Output: M

• Bước 1: Nhập S, a (S là mảng các số (bit))

• Bước 2: M 0; n số chữ số của S;

• Bước 3: Với mỗi i = 1, 2, ..,, n thực hiện lệnh:

M M + S[i]*an-i-1

• Bước 4: Đưa ra M

Chuyển đổi một số ở hệ cơ số bất kì sang hệ 10

NCT.FIT.HNUE 47

Page 48: NGÔN NGỮ LẬP TRÌNH C/C++fit.hnue.edu.vn/~trungnc/TextBookAndLectureNote/Nhap mon lap trinh 2/1 - Pascal Review...Dr. Nguyen Chi Trung Faculty of Information Technology Hanoi

• Ví dụ:

1011 = 1 × 23 + 0 × 22 + 1 × 21 + 1 × 100 = 11 (hệ 10)

• Lập chương trình

#include <iostream.h>

#include <math.h>

void main()

{ int a= 2;

int s[10]={1,0,1,1};

int n=4;

double m=0;

for(int i=0;i<n;i++) m+=double(s[i])*pow(2,n-i-1);

cout<<m<<endl;

}

Chuyển đổi một số ở hệ cơ số bất kì sang hệ 10

NCT.FIT.HNUE 48

Page 49: NGÔN NGỮ LẬP TRÌNH C/C++fit.hnue.edu.vn/~trungnc/TextBookAndLectureNote/Nhap mon lap trinh 2/1 - Pascal Review...Dr. Nguyen Chi Trung Faculty of Information Technology Hanoi

• Ví dụ: Chuyển một số từ hệ 10 sang hệ 2

11 = 1011

• Thuật toán

Input: N10, a

Output: S

• Bước 1: Nhập N, a

• Bước 2: Nếu N = 0 thì Đưa ra 0 và kết thúc thuật toán;

• Bước 3: m := 0 ; (chỉ số của mảng S)

• Bước 4: Lặp các công việc sau khi N > 0

o4.1. r N mod a;

o4.2. m m+1; S[m] r;

o4.2. N N div a;

• Bước 5: Đưa ra S theo thứ tự từ m đến 1;

Chuyển đổi một số ở hệ cơ 10 sang hệ cơ số bất kì

NCT.FIT.HNUE 49

Page 50: NGÔN NGỮ LẬP TRÌNH C/C++fit.hnue.edu.vn/~trungnc/TextBookAndLectureNote/Nhap mon lap trinh 2/1 - Pascal Review...Dr. Nguyen Chi Trung Faculty of Information Technology Hanoi

• Chương trình

#include <iostream.h>

#include <math.h>

void main()

{ int a=2, N, m=0,r;

int S[10];

cout<<"N="; cin>>N;

while (N>0)

{ r=N%a; S[++m]=r;

N=N/a;

}

for(int i=m;i>0;i--) cout<<S[i]; cout<<endl;

}

Chuyển đổi một số ở hệ cơ 10 sang hệ cơ số bất kì

NCT.FIT.HNUE 50

Page 51: NGÔN NGỮ LẬP TRÌNH C/C++fit.hnue.edu.vn/~trungnc/TextBookAndLectureNote/Nhap mon lap trinh 2/1 - Pascal Review...Dr. Nguyen Chi Trung Faculty of Information Technology Hanoi

Kiểu dữ liệu, hằng, biến và biểu thức

Page 52: NGÔN NGỮ LẬP TRÌNH C/C++fit.hnue.edu.vn/~trungnc/TextBookAndLectureNote/Nhap mon lap trinh 2/1 - Pascal Review...Dr. Nguyen Chi Trung Faculty of Information Technology Hanoi

• Các kiểu dữ liệu cơ bản trong ngôn ngữ C/C++

Kiểu dữ liệu

NCT.FIT.HNUE 52

stt Kiểu Phạm vi Kích thước Ghi chú

1 char 1B 0-31

32-127

128-255

signed char -128-127

unsigned char 0-255

2 int 2B -32768-32767

unsigned int 0-65535

long (int) 4B -2.147.483.648

2.147.483.657

unsigned long (int) 0 4.294.967.295

3 float 4B 3.4E-38-3.4E+38 chính xác đơn(8)

double 8B 1.7E-308-1.7E+308 chính xác kép(16)

long double 10B 3.4E-4932-1.1E4932 số cs có nghĩa(18)

Page 53: NGÔN NGỮ LẬP TRÌNH C/C++fit.hnue.edu.vn/~trungnc/TextBookAndLectureNote/Nhap mon lap trinh 2/1 - Pascal Review...Dr. Nguyen Chi Trung Faculty of Information Technology Hanoi

• Khai báo

#define tên_hằng giá_trị //Cách khai báo của C

const tên_hằng = giá_trị; // Cách khai báo của C++

• Ví dụ:

#define heso 10

#define he8 0347

#define he16 0xA9

const PI = 3.14;

const longint = 12345678;

Hằng

NCT.FIT.HNUE 53

Page 54: NGÔN NGỮ LẬP TRÌNH C/C++fit.hnue.edu.vn/~trungnc/TextBookAndLectureNote/Nhap mon lap trinh 2/1 - Pascal Review...Dr. Nguyen Chi Trung Faculty of Information Technology Hanoi

• Chú ý về hằng ký tự

– ‘a’ là hằng ký tự được lưu trữ trong 1 bye; có giá trị là mã

ASCCI của chữ a, tức giá trị 97 ở hệ 10; hay 0141 ở hệ 8.

– Giá trị của ‘9’ là ‘9’-‘0’ = 57-48

– Các hằng ký tự đặc biệt: ‘\n’ (xuống dòng); ‘\0’ (ký tự NULL:

\0); ‘\t’ (Tab); ‘\b’ (Back space); ‘\r’ (CR về đầu dòng); ‘\f’ (LF

sang trang).

– Phân biệt ‘0’ là hằng ký tự ứng với chữ số 0 , có giá trị 48; ‘\0’

là hằng ký tự ứng với ký tự NULL có giá trị 0

– Hằng ký tự thực chất là số nguyên.

Ví dụ lệnh printf(“%c, %c”, 65,66); sẽ in ra AB

– Phân biệt hằng ký tự và hằng xâu ký tự: ‘a’ khác “a” (gồm ‘a’

và ký tự NULL).

Hằng

NCT.FIT.HNUE 54

Page 55: NGÔN NGỮ LẬP TRÌNH C/C++fit.hnue.edu.vn/~trungnc/TextBookAndLectureNote/Nhap mon lap trinh 2/1 - Pascal Review...Dr. Nguyen Chi Trung Faculty of Information Technology Hanoi

• Biến

– Khai báo như sau: tên_kiểu tên_biến;

– Vị trí khai báo, phạm vi ảnh hưởng: vị trí bất kì, khai báo trước

khi sử dụng; ảnh hưởng trong khối nơi biến được khai báo.

– Đặc biệt : int x = 10; Lấy địa chỉ biến: &tên_biến

• Ví dụ

void simple()

{ int n; // khai bao cuc bo

for(int i=0;i<10;i++) // cho phep khai bao i trong for

{ int m;

if (i&1) n+=1 }

m = n/2; // sai

n = i; // sai }

Biến

NCT.FIT.HNUE 55

Page 56: NGÔN NGỮ LẬP TRÌNH C/C++fit.hnue.edu.vn/~trungnc/TextBookAndLectureNote/Nhap mon lap trinh 2/1 - Pascal Review...Dr. Nguyen Chi Trung Faculty of Information Technology Hanoi

• Biểu thức là một dãy các biến và hằng được nối với nhau bởi các

toán tử (phép toán) thích hợp.

• Phép toán số học:

o 2 ngôi: +, -, *, / , % (chia lấy phần dư)

o 1 ngôi: - (phép lấy đối)

• Phép toán bít

o & : and

o | : or

o ^ : xor (đồng tính bị huỷ, khác tính thì tồn tại)

o 1 ^ 1 = 0 ^ 0 = 0; 1 ^ 0 = 0 ^ 1 = 1)

• Phép toán quan hệ

==, !=, > , <, >=, <=

Biểu thức

NCT.FIT.HNUE 56

Page 57: NGÔN NGỮ LẬP TRÌNH C/C++fit.hnue.edu.vn/~trungnc/TextBookAndLectureNote/Nhap mon lap trinh 2/1 - Pascal Review...Dr. Nguyen Chi Trung Faculty of Information Technology Hanoi

• Phép toán logic

o ! : not

o && : and

o || : or

• Phép toán tăng giảm:

o ++n; n++ ;

o --n; n--;

• Thứ tự ưu tiên các phép toán

• Biểu thức điều kiện

o varible = condition? value1:value2

o Ví dụ: x = 4>5? 10:100;

Biểu thức

NCT.FIT.HNUE 57

() []

! ~ & - ++ --

* / %

+ -

<< >>

< <= > >=

== !=

&

^

|

&&

||

?:

= += -= *= /= <<=

>>= &= ^= |=

Page 58: NGÔN NGỮ LẬP TRÌNH C/C++fit.hnue.edu.vn/~trungnc/TextBookAndLectureNote/Nhap mon lap trinh 2/1 - Pascal Review...Dr. Nguyen Chi Trung Faculty of Information Technology Hanoi

• Bảng chân lí

Kiểu dữ liệu và biểu thức

NCT.FIT.HNUE 58

a b a & b a | b a xor b not a

1 1 1 1 0 0

1 0 0 1 1 0

0 1 0 1 1 1

0 0 0 0 0 1

Page 59: NGÔN NGỮ LẬP TRÌNH C/C++fit.hnue.edu.vn/~trungnc/TextBookAndLectureNote/Nhap mon lap trinh 2/1 - Pascal Review...Dr. Nguyen Chi Trung Faculty of Information Technology Hanoi

• Ví dụ Giả sử ta có khai báo:

int a;

float b;

• Khi đó, ta có thể xem số nguyên a như một số thực bằng cách:

(float)a; // trong C

float(a); // trong C++

• Chú ý :

– m%n = phần dư của m chia cho n

– m/n = là phần nguyên của m chia cho n

– ((float) m)/n = kết quả của m chia cho n

– int(r+0.5) = giá trị int

Phép chuyển kiểu

NCT.FIT.HNUE 59

Page 60: NGÔN NGỮ LẬP TRÌNH C/C++fit.hnue.edu.vn/~trungnc/TextBookAndLectureNote/Nhap mon lap trinh 2/1 - Pascal Review...Dr. Nguyen Chi Trung Faculty of Information Technology Hanoi

• Khai báo mảng.

– kiểu_mảng tên_mảng[kíchthước]

– kiểu_mảng tên_mảng[kíchthước1] [kíchthước2]

• Ví dụ

– int a[10];

– float b[5][7];

• Truy cập mảng

– Chỉ số của mảng có thứ tự từ 0 đến n - 1.

• Khởi tạo mảng khi khai báo

– int a[5] = {3, 6, 12, 1, 45};

– float b[] = {3.14, 3.1416, 2.54, 2.55, 9.5};

– int p[2, 3] = { (3, 6, 12) , (1, 4, 5)};

Kiểu dữ liệu mảng

NCT.FIT.HNUE 60

Page 61: NGÔN NGỮ LẬP TRÌNH C/C++fit.hnue.edu.vn/~trungnc/TextBookAndLectureNote/Nhap mon lap trinh 2/1 - Pascal Review...Dr. Nguyen Chi Trung Faculty of Information Technology Hanoi

End of chapter 1

NCT.FIT.HNUE