Upload
noi-that-to-deo
View
15
Download
5
Embed Size (px)
DESCRIPTION
Giao trinh Bach Khoa
Citation preview
Cao Tun Dng [email protected]
Bi 02. C php Java/C++ c bn
LP TRNH HNG I TNG
B mn Cng ngh phn mm VIN CNG NGH THNG TIN TRUYN THNG
TRNG I HC BCH KHOA H NI
Mc tiu bi hc
Nu c cc quy c t tn trong cc chng trnh Java/C++
To ra cc nh iu kin, cu trc lp v r nhnh hp l
M t cc kiu d liu c bn trong Java v cch s dng
Cc ton t S dng cc cu lnh Gii thch v phm vi ca bin Khai bo, khi to cc bin v mng trong Java
2
Ni dung
1. nh danh
2. Cc kiu d liu
3. Ton t
4. Cu trc iu khin
5. Mng
3
Ni dung
1. nh danh
2. Cc kiu d liu
3. Ton t
4. Cu trc iu khin
5. Mng
4
1. nh danh
nh danh: Xu k t th hin tn cc bin, cc
phng thc, cc lp v nhn
Quy nh vi nh danh: Cc k t c th l ch s, ch ci, '$'
hoc _ Tn khng c php:
Bt u bi mt ch s Trng vi t kha
Phn bit ch hoa ch thng Yourname, yourname, YourName v
yourName l 4 nh danh khc nhau
5
1. nh danh (2)
Quy c vi nh danh (naming convention): Bt u bng ch ci Gi (package): tt c s dng ch thng
theexample
Lp (Class): vit hoa ch ci u tin trong cc t ghp li TheExample
Phng thc/thuc tnh (method/field): Bt u bng ch thng, vit hoa ch ci u tin trong cc t cn li theExample
Hng (constants): Tt c vit hoa THE_EXAMPLE
6
1. nh danh (3)
Literals null true false
T kha (keyword) abstract assert boolean break byte case catch char class continue default do double else
extends final finally float for if implements
import instanceof int interface long native new
package private protected public return short
static strictfp super switch synchronized this
throw throws transient try void volatile while
T dnh ring (reserved for future use) byvalue cast const future generic goto inner operator outer rest var volatile
7
Ni dung
1. nh danh
2. Cc kiu d liu
3. Ton t
4. Cu trc iu khin
5. Mng
8
2. Cc kiu d liu
Trong Java kiu d liu c chia thnh hai loi: Kiu d liu nguyn thy (primitive)
S nguyn (integer) S thc (float) K t (char) Gi tr logic (boolean)
Kiu d liu tham chiu (reference) Mng (array) i tng (object)
9
2.1. Kiu d liu nguyn thy
Mi bin u phi khai bo mt kiu d liu
Cc kiu d liu c bn cha mt gi tr n
Kch thc v nh dng phi ph hp vi kiu ca n
Java phn loi thnh 4 kiu d liu nguyn thy
10
a. S nguyn
S nguyn c du
Khi to vi gi tr 0
11
b. S thc
Khi to vi gi tr 0.0
12
c. K t
K t Unicode khng du, c t gia hai du nhy n
2 cch gn gi tr: S dng cc ch s trong h 16: char uni ='\u05D0';
S dng k t: char a = A;
Gi tr mc nh l gi tr zero (\u0000)
13
d. Gi tr logic Gi tr boolean c xc nh r rng trong Java
Mt gi tr int khng th s dng thay cho gi tr boolean
C th lu tr gi tr hoc true hoc false
Bin boolean c khi to l false
14
2.2. Gi tr hng (literal)
Literal l mt gi tr ca cc kiu d liu nguyn thy v xu k t.
Gm 5 loi: integer
floating point
boolean
character
string
15
Literals
integer..7 floating point7.0f boolean.true character.'A' string.."A"
a. S nguyn
H c s 8 (Octals) bt u vi ch s 0 032 = 011 010(2) = 16 + 8 + 2 = 26(10)
H c s 16 (Hexadecimals) bt u vi 0 v k t x 0x1A = 0001 1010(2) = 16 + 8 + 2 = 26(10)
Kt thc bi k t L th hin kiu d liu long 26L
K t hoa, thng cho gi tr bng nhau 0x1a , 0x1A , 0X1a , 0X1A u c gi tr 26 trong h
decimal
16
b. S thc
float kt thc bng k t f (hoc F) 7.1f
double kt thc bng k t d (hoc D) 7.1D
e (hoc E) c s dng trong dng biu din
khoa hc: 7.1e2
Mt gi tr thc m khng c k t kt thc i km s c kiu l double 7.1 ging nh 7.1d
17
c. boolean, k t v xu k t
boolean: true False
K t: c t gia 2 du nhy n
V d: a, A hoc '\uffff
Xu k t: c t gia hai du nhy kp V d: Hello world, Xin chao ban,
18
d. Escape sequence
Cc k t iu khin nhn phm \b backspace \f form feed \n newline \r return (v u dng) \t tab
Hin th cc k t c bit trong xu \" quotation mark \ apostrophe \\ backslash
19
2.3. Chuyn i kiu d liu (Casting)
Java l ngn ng nh kiu cht Gn sai kiu gi tr cho mt bin c th dn n cc
li bin dch hoc cc ngoi l ca JVM
JVM c th ngm nh chuyn t mt kiu d liu hp sang mt kiu rng hn
chuyn sang mt kiu d liu hp hn, cn phi nh kiu r rng.
20
int a, b;
short c;
a = b + c;
int d;
short e;
e = (short)d;
double f;
long g;
f = g;
g = f; //error
2.3. Chuyn i kiu d liu (2)
Chuyn i kiu s c thc hin t ng nu khng xy ra mt mt thng tin byte short int
long float double p kiu trc tip
(explicit cast) c yu cu nu c nguy c gim chnh xc
21
V d - chuyn i kiu
long p = (long) 12345.56; // p == 12345
int g = p; // khng hp l d kiu int
//c th lu gi tr 12345
char c = t;
int j = c; // t ng chuyn i
short k = c; // khng hp l
short k = (short) c; // p kiu trc tip
float f = 12.35; // khng hp l
22
2.4. Khai bo v khi to bin
Cc bin n (bin khng phi l mng) cn phi c khi to trc khi s dng trong cc biu thc C th kt hp khai bo v khi to cng mt lc. S dng = gn (bao gm c khi to)
V d: int i, j; // Khai bo bin i = 0; int k =i+1; float x=1.0f, y=2.0f; System.out.println(i); // In ra 0 System.out.println(k); // In ra 1 System.out.println(j); // Li bin dch
24
Ch thch
Java h tr ba kiu ch thch nh sau: // Ch thch trn mt dng
// Khng xung dng
/* Ch thch mt on */
/** Javadoc * ch thch dng Javadoc */
25
Cu lnh
Cc cu lnh kt thc bi du;
Nhiu lnh c th vit trn mt dng
Mt cu lnh c th vit trn nhu dng V d:
26
System.out.println(
This is part of the same line);
a=0; b=1; c=2;
Ni dung
1. nh danh
2. Cc kiu d liu
3. Ton t
4. Cu trc iu khin
5. Mng
27
3. Ton t (Operators)
Kt hp cc gi tr n hoc cc biu thc con thnh nhng biu thc mi, phc tp hn v c th tr v gi tr.
Java cung cp nhiu dng ton t sau:
Ton t s hc
Ton t bit, ton t quan h
Ton t logic
Ton t gn
Ton t mt ngi
28
3. Ton t (2)
Ton t s hc +, -, *, /, %
Ton t bit AND: &, OR: |, XOR: ^, NOT: ~
Dch bit:
Ton t quan h ==, !=, >, =,
3. Ton t (3)
Ton t mt ngi o du: +, -
Tng gim 1 n v: ++, --
Ph nh mt biu thc logic: !
Ton t gn =, +=, -=, %= tng t vi >>,
Th t u tin ca ton t
Cho bit ton t no thc hin trc c xc nh bi cc du ngoc n hoc theo ngm nh nh sau: Postfix operators [] . (params) x++ x-- Unary operators ++x --x +x -x ~ ! Creation or cast new (type)x Multiplicative * / % Additive + - Shift > >>> (unsigned shift) Relational < > = instanceof Equality == != Bitwise AND & Bitwise exclusive OR ^ Bitwise inclusive OR | Logical AND && Logical OR || Conditional (ternary) ?: Assignment = *= /= %= += -= >>= >= &= ^= |=
31
Ni dung
1. nh danh
2. Cc kiu d liu
3. Ton t
4. Cu trc iu khin
5. Mng
32
4.1. Lnh if - else
C php if (dieu_kien){
cac_cau_lenh;
}
else {
cac_cau_lenh;
}
Biu thc iu kin nhn gi tr boolean
Mnh else l ty chn
33
V d - Kim tra s chn l
class CheckNumber
{
public static void main(String args[])
{
int num =10;
if (num %2 == 0)
System.out.println (num+ la so chan);
else
System.out.println (num + la so le);
}
}
34
C++: Gii phng trnh bc nht #include
int main(){
float a, b;
cout a;
cout
4.2. Lnh switch - case
Kim tra mt bin n vi nhiu gi tr khc nhau v thc hin trng hp tng ng
break: Thot khi lnh switch-case
default kim sot cc gi tr nm ngoi cc gi tr case:
36
case a action(s)
break
default action(s)
[true]
case b action(s)
break
case z action(s)
break
.
.
.
[false] case a
[true]
[true]
case b
case z
[false]
[false]
V d - Lnh switch - case
37
if (day == 0 || day == 1) {
rule = weekend;
} else if (day > 1 && day
4.3. Vng lp while v do while
Thc hin mt cu lnh hoc mt khi lnh khi iu kin vn nhn gi tr true while() thc hin 0 hoc nhiu ln
do...while() thc hin t nht mt ln
38
int x = 2;
while (x < 2) {
x++;
System.out.println(x);
} int x = 2;
do {
x++;
System.out.println(x);
} while (x < 2);
action state
[true]
[false]
condition
V d - Vng lp while
class WhileDemo{
public static void main(String args[]){
int a = 5,fact = 1;
while (a >= 1){
fact *=a;
a--;
}
System.out.println(The Factorial of 5
is +fact);
}
}
39
4.4. Vng lp for C php: for (start_expr; test_expr; increment_expr){
// code to execute repeatedly
}
3 biu thc u c th vng mt
C th khai bo bin trong cu lnh for Thng s dng khai bo mt bin m
Thng khai bo trong biu thc start
Phm vi ca bin gii hn trong vng lp
V d: for (int index = 0; index < 10; index++) {
System.out.println(index);
}
40
V d - vng lp for
class ForDemo
{
public static void main(String args[])
{
int i=1, sum=0;
for (i=1;i
4.5. Cc lnh thay i cu trc iu khin
break C th c s dng thot ra ngoi cu lnh
switch
Kt thc vng lp for, while hoc do...while
C hai dng: Gn nhn: Tip tc thc hin cu lnh tip theo sau
vng lp c gn nhn
Khng gn nhn: Thc hin cu lnh tip theo bn ngoi vng lp
43
4.5. Cc lnh thay i cu trc iu khin (2)
continue C th c s dng cho vng lp for, while hoc
do...while
B qua cc cu lnh cn li ca vng lp hin thi v chuyn sang thc hin vng lp tip theo.
44
V d - break v continue
public int myMethod(int x) {
int sum = 0;
outer: for (int i=0; i
4.6. Phm vi bin
Phm vi ca bin l vng chng trnh m trong bin c th c tham chiu n
Cc bin c khai bo trong mt phng thc th ch c th truy cp trong phng thc
Cc bin c khai bo trong vng lp hoc khi lnh th ch c th truy cp trong vng lp hoc khi lnh
46
Phm vi hot ng ca cc bin
Phm vi hot ng (scope) ca cc bin cho php xc nh cc nguyn l ca to bin, s dng bin v gii phng bin
C++ cho php nh ngha cc bin ti mi im trong chng trnh (on the fly)
Phn loi: bin ton cc (global), bin cc b, bin static
Java: t kha static cho phm vi ton cc
Ton t phm vi :: (C++)
Gip phn bit bin cc b v bin ton cc cng tn. #include
int counter = 50; // global variable
int main() {
for (register int counter = 1; // this refers to the counter < 10; // local variable
counter++){
printf("%d\n", ::counter // global variable
/ // divided by
counter); // local variable
}
return 0;
}
Trong Java khng tn ti khi nim ton t phm vi
Ni dung
1. nh danh
2. Cc kiu d liu
3. Ton t
4. Cu trc iu khin
5. Mng
49
5. Mng (array)
Tp hp hu hn cc phn t cng kiu
Phi c khai bo trc khi s dng
Khai bo: C php:
kieu_dlieu[] ten_mang = new kieu_dlieu[KT_MANG];
kieu_dlieu ten_mang[] = new kieu_dlieu[KT_MANG];
V d: char c[] = new char[12];
50
reference
Array or Object
variableName
5.1. Khai bo v khi to mng
Khai bo, khi to gi tr ban u: C php:
kieu_dl[] ten_mang = {ds_gia_tri_cac_ptu};
V d: int[] number = {10, 9, 8, 7, 6};
Nu khng khi to nhn gi tr mc nh ty thuc vo kiu d liu.
Lun bt u t phn t c ch s 0
51
52
Tn ca mng (tt c cc thnh phn trong mng c cng tn, c)
Ch s (truy nhp n cc thnh phn ca mng thng qua ch s)
c[ 0 ]
c[ 1 ]
c[ 2 ]
c[ 3 ]
c[ 4 ]
c[ 5 ]
c[ 6 ]
c[ 7 ]
c[ 8 ]
c[ 9 ]
c[ 10 ]
c[ 11 ]
-45
6
0
72
1543
-89
0
62
-3
1
6453
78
c.length: cho bit di ca mng c
V d - mng
5.1. Khai bo v khi to mng (2)
V d: int MAX = 5;
boolean bit[] = new boolean[MAX];
float[] value = new float[2*3];
int[] number = {10, 9, 8, 7, 6};
System.out.println(bit[0]); // prints false
System.out.println(value[3]); // prints 0.0
System.out.println(number[1]); // prints 9
53
5.2. Mng nhiu chiu
Bng vi cc dng v ct Thng s dng mng hai chiu
V d khai bo mng hai chiu b[2][2]
int b[][] = { { 1, 2 }, { 3, 4 } }; 1 v 2 c khi to cho b[0][0] v b[0][1]
3 v 4 c khi to cho b[1][0] v b[1][1]
int b[3][4];
55
5.2. Mng nhiu chiu (2)
56
b[ 1 ][ 0 ] b[ 1 ][ 1 ] b[ 1 ][ 2 ] b[ 1 ][ 3 ]
Row 0
Row 1
Row 2
Column 0 Column 1 Column 2 Column 3
Ch s hng
Tn mng
Ch s ct
b[ 0 ][ 0 ] b[ 0 ][ 1 ] b[ 0 ][ 2 ] b[ 0 ][ 3 ]
b[ 2 ][ 0 ] b[ 2 ][ 1 ] b[ 2 ][ 2 ] b[ 2 ][ 3 ]
C++: Cp pht b nh ng Ton t cp pht b nh ng new. C hai
cch s dng new: Cp pht b nh cho mt bin
new type;
gi tr tr v l: mt con tr ch n v tr tng ng khi cp
pht thnh cng v NULL trong trng hp tri li.
Cp pht mt mng ng cc phn t new type[n]
gi tr tr v l:
Con tr ch n u vng nh cha n phn t thuc kiu type
NULL khi khng cn b nh cp pht
C++: thu hi b nh ng
Ton t gii phng vng nh ng (heap) delete
delete con_tr;
delete [] con_tr;
Tr li vng nh tr bi con_tr
Sau lnh delete gi tr ca con_tr
khng xc nh
C++: new v delete
V d: Vi khai bo int *adr;
lnh adr=new int; s cp pht mt vng nh cn thit cho mt
gi tr kiu int v gn a ch cho adr. lnh: delete adr; s gii phng vng nh tr bi adr;
Lnh char *adc= new char[100];
s cp pht mt vng nh cha 100 k t v t a ch u vng nh vo bin adc.
Lnh delete adc; s gii phng vng nh ny.
R r b nh
Vn : mt mi con tr n mt vng b nh c cp pht. Khi , vng b nh bmt du, khng th tr li cho heap c.
int* ptr = new int; *ptr = 8; int* ptr2 = new int; *ptr2 = -5; ptr = ptr2;
8
ptr
-5
ptr2
8
ptr
-5
ptr2
Con tr lc
Khi delete ptr2, ta cn ch khng xo vng b nh m mt con tr ptr khc ang tr ti.
int* ptr = new int; *ptr = 8; int* ptr2 = new int; *ptr2 = -5; ptr = ptr2; delete ptr2; // ptr is left
dangling ptr2 = NULL;
8
ptr
-5
ptr2
8
ptr
NULL
ptr2