CTT003 Ch03 GioiThieuVeCacCauTrucDieuKhien

You might also like

Download as pdf or txt
Download as pdf or txt
You are on page 1of 58

Nhp mn lp trnh

ThS. ng Bnh Phng (dbphuong@fit.hcmus.edu.vn)


Khi lnh trong lp trnh
Dng cu trc r nhnh trong lp trnh
X l lp trong lp trnh
Cc vn tm hiu m rng kin thc
ngh nghip
Thut ng v bi c thm ting Anh

10/7/2013 Khoa CNTT - H Khoa hc t nhin 2


Mt dy cc cu lnh c bao bi du {}
gi l mt khi lnh.
V d:
{
a = 2;
b = 3;
printf("\n%d%d", a, b);
}

10/7/2013 Khoa CNTT - H Khoa hc t nhin 4


Mt namespace l gii hn phm vi
ngha ca mt ci tn, ngha l tn ch c
ngha trong phm vi c nh ngha bi
namespace.
Namespace gip trnh ng tn bin,
tn hm

10/7/2013 Khoa CNTT - H Khoa hc t nhin 5


// namespaces
#include <iostream>
using namespace std;
namespace first {
int var = 5;
}
namespace second {
double var = 3.1416;
}
void main () {
cout << first::var << endl;
cout << second::var << endl;
}

10/7/2013 Khoa CNTT - H Khoa hc t nhin 6


Khi lp trnh, cn phi nm r phm vi ca
bin. Nu khai bo v s dng khng
ng, khng r rng s dn n sai st
kh kim sot c, v vy bn cn phi
xc nh ng v tr, phm vi s dng bin
trc khi s dng bin.
C 2 loi bin:
Bin ton cc (Global variable)
Bin cc b (Local variable)

10/7/2013 Khoa CNTT - H Khoa hc t nhin 7


Bin ton cc (Global variables): v tr
bin t bn ngoi tt c cc hm, cu
trc...Cc bin ny c nh hng n
ton b chng trnh. Chu trnh sng ca
n l bt u chychng trnh n lc
kt thc chng trnh.
Nguyn tc s dng: c th c s
dng bt k u trong chng trnh,
ngay sau khi n c khai bo.

10/7/2013 Khoa CNTT - H Khoa hc t nhin 8


Bin cc b (Local variables): V tr bin t
bn trong hm, cu trc. Ch nh hng ni b
bn trong hm, cu trc . Chu trnh sng ca
n bt u t lc hm, cu trc c gi thc
hin n lc thc hin xong.
Nguyn tc s dng: b gii hn trong phn m
m n c khai bo. Nu chng c khai bo
u mt hm (nh hm main), tm hot ng s
l ton b hm main. iu c ngha l cc bin
c khai bo trong hm main() ch c th c
dng trong hm , khng c dng bt k
u khc.

10/7/2013 Khoa CNTT - H Khoa hc t nhin 9


Cc cu trc iu khin cho php chng ta
thay i th t thc hin cc cu lnh.
Vic s dng cc cu trc iu khin trong
chng trnh gip chng ta thc hin cc
cu lnh trong chng trnh theo ca
mnh ch khng cng nhc l t trn
xung di.

10/7/2013 Khoa CNTT - H Khoa hc t nhin 11


Cu trc iu khin c 2 loi:
Cu trc iu khin r nhnh:
if else
switch
Cu trc iu khin vng lp:
for
while
do while

10/7/2013 Khoa CNTT - H Khoa hc t nhin 12


Cu trc r nhnh if cho if (biu_thc_iu_kin)
{
php la chn thc hin Lnh 1;

mt lnh hay khi lnh i Lnh 2;



sau cu trc iu khin if Lnh n;

hay khng, vic la chn }

ny ty thuc vo gi tr
tr v ca biu thc iu
kin.

10/7/2013 Khoa CNTT - H Khoa hc t nhin 13


ng
<KRN>

10/7/2013 Khoa CNTT - H Khoa hc t nhin 14


Tm s ln nht trong 3 s thc a, b, c
#include <stdio.h>
void main() {
float a, b, c, max;
printf(Nhap 3 so thuc: );
scanf(%f%f%f, &a, &b, &c);
max = a;
if (b > max)
max = b;
if (c > max)
max = c;
printf(So lon nhat la: %.2f\n, max);
}

10/7/2013 Khoa CNTT - H Khoa hc t nhin 15


Cu trc iu khin r nhnh if else cho
php la chn mt trong hai nhnh lnh
ca chng trnh v vic la chn ny ty
thuc gi tr tr v ca biu thc iu
kin.

10/7/2013 Khoa CNTT - H Khoa hc t nhin 16


if (biu_thc_iu_kin)
Cu trc iu khin r {
nhnh if else cho php la Lnh 1;
Lnh 2;
chn mt trong hai nhnh

lnh ca chng trnh v }


Lnh n;

vic la chn ny ty else


{
thuc gi tr tr v ca Lnh 1;
biu thc iu kin. Lnh 2;

Lnh n;
}

10/7/2013 Khoa CNTT - H Khoa hc t nhin 17


Sai ng
<KRN>

10/7/2013 Khoa CNTT - H Khoa hc t nhin 18


Kim tra 2 s thc cho trc c cng du
hay khng?
#include <stdio.h>
void main() {
float a, b;
printf(Nhap 2 so thuc: );
scanf(%f%f, &a, &b);
if (a * b > 0)
printf(%.2f va %.2f cung dau!\n, a, b);
else
printf(%.2f va %.2f trai dau!\n, a, b);
}

10/7/2013 Khoa CNTT - H Khoa hc t nhin 19


Gii phng trnh bc nht ax + b = 0
#include <stdio.h>
void main() {
float a, b;
printf(Nhap 2 so thuc: );
scanf(%f%f, &a, &b);
if (a == 0)
if (b == 0)
printf(Phuong trinh vo so nghiem!\n);
else
printf(Phuong trinh vo nghiem!\n);
else
printf(Phuong trinh co nghiem x = %.2f\n, -b / a);
}
10/7/2013 Khoa CNTT - H Khoa hc t nhin 20
Nu sau if hoc else ch c mt khi lnh
th khng cn phi lnh y trong khi
lnh {}. Ngoi ra NNLT C cng cho php
chng ta s dng cu trc chn if, if else
lng nhau, nhng phi xc nh khi lnh
mt cch r rng.

10/7/2013 Khoa CNTT - H Khoa hc t nhin 21


switch (biu_thc_chn)
Cu trc iu khin r {
case Gi_Tr_1:
nhnh switch cho php Lnh 1;
..
cn c vo gi tr ca biu Lnh n;
break;
thc nguyn cho mt case Gi_Tr_2:
Lnh 1;

trong nhiu cch nhy. ..


Lnh n;
break;
default:
Lnh 1;
..
Lnh n;
break;
}

10/7/2013 Khoa CNTT - H Khoa hc t nhin 22


<kim tra
gi tr>
case gi tr 1 break

case gi tr 2 break

default
break

10/7/2013 Khoa CNTT - H Khoa hc t nhin 23


Cho bit thng cho trc thuc qu my?
#include <stdio.h>
void main() {
int thang;
printf(Nhap thang: );
scanf(%d, &thang);
switch (thang)
{
case 1: case 2: case 3: printf(Quy I\n); break;
case 4: case 5: case 6: printf(Quy II\n); break;
case 7: case 8: case 9: printf(Quy III\n); break;
case 10: case 11: case 12: printf(Quy IV\n); break;
}
}
10/7/2013 Khoa CNTT - H Khoa hc t nhin 24
Biu thc chn trong cu trc iu khin
r nhnh switch s c tnh ton, c
lng v so snh vi cc gi tr trong
tng ng vi cc mnh case.
Nu gi tr ca biu thc bng Gi_Tr_i
th khi lnh ca mnh case i c
thc hin.

10/7/2013 Khoa CNTT - H Khoa hc t nhin 25


Nu gi tr ca biu thc khng bng vi
bt k Gi_Tr_i no trong cc mnh
case th khi lnh tng ng vi kha
default c thc hin.
Mi khi lnh ca mi mnh case
thng c kt thc bi mt cu lnh
break.

10/7/2013 Khoa CNTT - H Khoa hc t nhin 26


Vic thc hin khi lnh sau khi so snh
gi tr ca biu thc bng Gi_Tr_i nh
sau: thc hin tt c nhng lnh ngay sau
mnh case ca Gi_tr_i trn cho n
khi gp t kha break.

10/7/2013 Khoa CNTT - H Khoa hc t nhin 27


while (iu_kin_lp)
{
Lnh 1;
Lnh 2;

Lnh n;
}

10/7/2013 Khoa CNTT - H Khoa hc t nhin 29


Sai ng
<K lp>

10/7/2013 Khoa CNTT - H Khoa hc t nhin 30


Tnh S = 13 + 23 + + n3
#include <stdio.h>
void main() {
int n, i, s;
printf(Nhap n: );
scanf(%d, &n);
i = 1;
s = 0;
while (i <= n) {
s = s + i*i*i;
}
printf(Tong s la %d\n, s);
}

10/7/2013 Khoa CNTT - H Khoa hc t nhin 31


Tm s nguyn dng n nh nht sao cho
1 + 2 + + n > 10000.
#include <stdio.h>
void main() {
int s = 0, n = 0;
while (s <= 10000) {
n++;
s = s + n;
}
printf(So n la %d\n, n);
}

10/7/2013 Khoa CNTT - H Khoa hc t nhin 32


Cc lnh trong khi lnh ca vng lp
while s c thc hin t nht mt ln.
iu kin lp ca vng lp while thng
c cp nht sau mi ln thc hin khi
lnh hay c mt bin c no thun li xy
ra.

10/7/2013 Khoa CNTT - H Khoa hc t nhin 33


do
{
Lnh 1;
Lnh 2;

Lnh n;
}
while (iu_kin_lp);

10/7/2013 Khoa CNTT - H Khoa hc t nhin 34


Sai ng
<K lp>

10/7/2013 Khoa CNTT - H Khoa hc t nhin 35


Tm s nguyn dng n ln nht sao cho
1 + 2 + + n < 10000.
#include <stdio.h>
void main() {
int n = 0, s = 0;
do {
n++;
s = s + n;
} while (s + n + 1 < 10000);
printf(So n la %d\n, n);
}

10/7/2013 Khoa CNTT - H Khoa hc t nhin 36


Bc 1: Thc hin cc cu lnh trong
khi lnh lp do while.
Bc 2: Khi gp n cui khi lnh lp do
while, chng trnh s xc nh gi tr ca
iu kin lp sau t kha while.
Bc 3: Chng trnh s thc thi mt
trong 2 nhnh sau ty theo gi tr ca
biu thc va nhn c.

10/7/2013 Khoa CNTT - H Khoa hc t nhin 37


Bc 3.1: Nu biu thc c gi tr ng
(khc 0), chng trnh s quay tr li
bc 1 tip tc thc hin vng lp mi.
Bc 3.2: Nu biu thc c gi tr sau
(bng 0), chng trnh s ra khi chu trnh
v chuyn ti cu lnh ng sau du
chm phy t cui t kha do while.

10/7/2013 Khoa CNTT - H Khoa hc t nhin 38


for (biu_thc_1;biu_thc_2;biu_thc_3)
{
Lnh 1;
Lnh 2;

Lnh n;
}

10/7/2013 Khoa CNTT - H Khoa hc t nhin 39


Sai ng
<K lp>

10/7/2013 Khoa CNTT - H Khoa hc t nhin 40


Xut cc k t t A n Z.
#include <stdio.h>
void main() {
char kytu;
for (kytu = A; kytu <= Z; kytu++) {
printf(%c , kytu);
}
}

10/7/2013 Khoa CNTT - H Khoa hc t nhin 41


Tnh tng cc s dng l ca s nguyn
dng n.
#include <stdio.h>
void main() {
int n, i, s;
printf(Nhap n: );
scanf(%d, &n);
s = 0;
for (i = 1; i < n; i = i + 2) {
s = s + i;
}
printf(Tong cac so duong le nho hon %d la %d\n, n, s);
}
10/7/2013 Khoa CNTT - H Khoa hc t nhin 42
Tnh tng cc s dng l ca s nguyn
dng n.
#include <stdio.h>
void main() {
int n, i, s;
printf(Nhap n: ); scanf(%d, &n);
s = 0; i = 1;
for (;;) {
s = s + i;
i = i + 2;
if (i >= n) break;
}
printf(Tong cac so duong le nho hon %d la %d\n, n, s);
}10/7/2013 Khoa CNTT - H Khoa hc t nhin 43
Biu thc 1: thng dng khi to bin
m ca vng lp. Biu thc ny c th c
hoc khng c cng c.
Biu thc 2: thng dng kim tra iu
kin ca vng lp. Biu thc ny bt buc
phi c (nu b qua biu thc ny ta phi
dng n vi t kha break)
Biu thc 3: thng dng iu khin
bin m ca vng lp. Biu thc ny c th
c hoc khng c cng c.
10/7/2013 Khoa CNTT - H Khoa hc t nhin 44
Bc 1: Xc nh biu thc 1.
Bc 2: Xc nh biu thc 2
Bc 3: Ty thuc vo gi tr ca biu thc 2,
chng tnh thc thi mt trong hai nhnh.
Bc 3.1: Nu biu thc 2 c gi tr 0 (sai),
chng trnh s thot khi for v chuyn ti cu
lnh sau khi lnh ca for.
Bc 3.2: Nu biu thc 2 c gi tr khc 0
(ng) chng trnh s thc hin cc cu lnh
trong khi lnh for.
Bc 4: Trong biu thc 3, sau quay li bc
2 bt u mt vng lp mi.
10/7/2013 Khoa CNTT - H Khoa hc t nhin 45
iu kin dng ca vng lp s tr v
true hoc false, nu true vng lp chy
tip v false s thot.

10/7/2013 Khoa CNTT - H Khoa hc t nhin 46


Lnh break
Lnh continue
Lnh return

10/7/2013 Khoa CNTT - H Khoa hc t nhin 47


Cu lnh break cho php ra khi cu trc
iu khin lp (vng for, while, do while)
v cu trc chn switch. Khi c nhiu
vng lp lng nhau, cu lnh break s
thot khi vng lp cha n bn trong
khi lnh lp.
Nh vy break cho ta kh nng ra khi
mt cu trc iu khin lp m khng
dng iu kin kt thc chng trnh.

10/7/2013 Khoa CNTT - H Khoa hc t nhin 48


Ngc li vi cu lnh break, cu lnh
continue dng bt u mt vng mi
ca cu trc iu khin lp cha n.
Khi gp cu lnh continue bn trong thn
ca mt ton t for, chng trnh s thc
hin bc 4 trong phn phn tch s hot
ng ca cu trc lp for

10/7/2013 Khoa CNTT - H Khoa hc t nhin 49


Khi gp cu lnh continue bn trong thn
ca while hoc do while, chng trnh
thc hin bc 1 trong phn phn tch s
hot ng ca cu trc lp while
Ghi ch: Cu lnh continue ch p dng
cho cc cu trc iu khin lp ch khng
p dng cho cu trc iu khin chn
switch.

10/7/2013 Khoa CNTT - H Khoa hc t nhin 50


In ra cc s l nh hn 100, tr cc s 5,
7, 93.
#include <stdio.h>
void main() {
int i;
for (i = 1; i < 100; i += 2) {
if (i == 5 || i == 7 || i == 93)
continue;
printf(%5d, i);
}
}

10/7/2013 Khoa CNTT - H Khoa hc t nhin 51


Tr v dng iu khin m ni n gi, khi
lnh return c theo sau bi mt biu thc
th biu thc s c nh gi v gi tr
ny s c tr v cho ni gi hm. Khi
return c gi m khng c biu thc i
km th gi tr tr v l khng xc nh.
Cu lnh return khng ch thot khi vng
lp m n cn thot lun khi hm m ang
cha n.

10/7/2013 Khoa CNTT - H Khoa hc t nhin 52


Trnh s nhp nhng v kh hiu trong
m ngun
Cc ch th c bit bao hm cu trc iu
khin
Cu trc iu khin cp cao trong cc
NNLT
S khc bit, tng ng gia cc NNLT

10/7/2013 Khoa CNTT - H Khoa hc t nhin 54


block: khi lnh
branching: r nhnh, phn nhnh.
control structures: cc cu trc iu khin.
global variables: bin ton cc
instruction: lnh.
local variables: bin cc b
loop: vng lp.
program: chng trnh.
variable: bin.

10/7/2013 Khoa CNTT - H Khoa hc t nhin 56


Thinking in C, Bruce Eckel, E-book, 2006.
Theory and Problems of Fundamentals of
Computing with C++, John R.Hubbard,
Schaums Outlines Series, McGraw-Hill, 1998.

10/7/2013 Khoa CNTT - H Khoa hc t nhin 57

You might also like