Tải bản đầy đủ (.pdf) (29 trang)

Thành phần cơ bản của chương trình potx

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.5 MB, 29 trang )

ThànhThành
phầnphần
cơcơ
bảnbản
củacủa
GV. GV. NguyễnNguyễn Minh Minh HuyHuy
ThànhThành
phầnphần
cơcơ
bảnbản
củacủa
chươngchương trìnhtrình
1Nhập môn lập trình - Nguyễn Minh Huy
NộiNội dungdung
 GiớiGiới thiệuthiệu ngônngôn ngữngữ C.C.
 BiếnBiến, , hằnghằng, , kiểukiểu dữdữ liệuliệu
 LệnhLệnh nhậpnhập, , xuấtxuất, , tínhtính toántoán
2Nhập môn lập trình - Nguyễn Minh Huy
NộiNội dungdung
 GiớiGiới thiệuthiệu ngônngôn ngữngữ C.C.
 BiếnBiến, , hằnghằng, , kiểukiểu dữdữ liệuliệu
 LệnhLệnh nhậpnhập, , xuấtxuất, , tínhtính toántoán
3Nhập môn lập trình - Nguyễn Minh Huy
GiớiGiới thiệuthiệu ngônngôn ngữngữ CC
 LịchLịch sửsử phátphát triểntriển::

NămNăm rara đờiđời??
TácTác
giảgiả
??



TácTác
giảgiả
??
 TiềnTiền thânthân??
 HậuHậu duệduệ??
 ĐặcĐặc điểmđiểm??
 SáchSách thamtham khảokhảo??
Dennis Ritchie, Brian Kernighan, 1973
4Nhập môn lập trình - Nguyễn Minh Huy
K&R C, 1978
GiớiGiới thiệuthiệu ngônngôn ngữngữ CC
 CấuCấu trúctrúc chươngchương trìnhtrình C:C:
Chương trình Các phần của chương trình
#include
<
stdio.h
>
1.
Phần
khai
báo
thư
viện
.
#include
<
stdio.h
>
#include <math.h>
1.

Phần
khai
báo
thư
viện
.
int a, b, c;
void nhap();
2. Phần khai báo biến
và hàm dùng chung.
void main()
{
3. Phần chương trình chính.
5Nhập môn lập trình - Nguyễn Minh Huy
{
}
void nhap()
{
}
4. Phần cài đặt các hàm dùng chung.
GiớiGiới thiệuthiệu ngônngôn ngữngữ CC
 CácCác kýký tựtự sửsử dụngdụng trongtrong chươngchương trìnhtrình C:C:
Bảng chữ cái Latin A  Z, a  z
Bộ chữ số thập phân 0  9
Phép toán số học +, -, *, /, %, =, (, )
Phép toán so sánh >, <, >=, <=, ==, !=
Phép toán logic !, &&, ||
Phép toán trên bit &, |, >>, <<
Ký tự đặc biệt #, {, }, ;, ., ->, :
Dấu

gạch
dưới
,
khoảng
trắng
_, ‘ ‘
6Nhập môn lập trình - Nguyễn Minh Huy
Dấu
gạch
dưới
,
khoảng
trắng
_, ‘ ‘
GiớiGiới thiệuthiệu ngônngôn ngữngữ CC
 CâuCâu lệnhlệnh vàvà khốikhối lệnhlệnh::

CâuCâu lệnhlệnh::

ChỉChỉ
thịthị
rara
lệnhlệnh

void void mainmain()()
{{
;;

ChỉChỉ
thịthị

rara
lệnhlệnh

 YêuYêu cầucầu máymáy tínhtính thựcthực hiệnhiện
 KếtKết thúcthúc bằngbằng dấudấu chấmchấm phẩyphẩy ;.;.
 TrìnhTrình biênbiên dịchdịch bỏbỏ qua qua dấudấu cáchcách
vàvà xuốngxuống dòngdòng chenchen ngangngang
 KhốiKhối lệnhlệnh::

GồmGồm
nhiềunhiều
câucâu
lệnhlệnh
liênliên
tiếptiếp
nhaunhau

intint a, b, ca, b, c
;;
a = 100a = 100;;
b = b =
a / a /
22;;
{{
b = b + 5;b = b + 5;

GồmGồm
nhiềunhiều
câucâu
lệnhlệnh

liênliên
tiếptiếp
nhaunhau

 BaoBao giữagiữa dấudấu ngoặcngoặc { }.{ }.
 CâuCâu lệnhlệnh phứcphức hợphợp
 HàmHàm main main làlà khốikhối lệnhlệnh khổngkhổng lồlồ
7Nhập môn lập trình - Nguyễn Minh Huy
b = b + 5;b = b + 5;
c = a * b;c = a * b;
}}
printfprintf(“%d”, a, b)(“%d”, a, b);;
}}
GiớiGiới thiệuthiệu ngônngôn ngữngữ CC
 CâuCâu chúchú thíchthích::

GhiGhi chúchú, , giảigiải thíchthích chươngchương trìnhtrình
TrìnhTrình
biênbiên
dịchdịch
bỏbỏ
qua qua
khikhi
dịchdịch

/* /* ChươngChương trìnhtrình tínhtính
cườngcường độđộ dòngdòng điệnđiện

TrìnhTrình
biênbiên

dịchdịch
bỏbỏ
qua qua
khikhi
dịchdịch

 LàmLàm rõrõ nghĩanghĩa chươngchương trìnhtrình
 KhôngKhông ảnhảnh hưởnghưởng tínhtính toántoán
 BaoBao giữagiữa dấudấu /* /* vàvà */ (*/ (trongtrong C).C).
 BắtBắt đầuđầu bằngbằng dấudấu // (// (trongtrong C++).C++).
*/*/
void main()void main()
{{
intint U, I, R;U, I, R;
// // TínhTính CĐDĐCĐDĐ
I = U / R;I = U / R;
}}
8Nhập môn lập trình - Nguyễn Minh Huy
NộiNội dungdung
 GiớiGiới thiệuthiệu ngônngôn ngữngữ C.C.
 BiếnBiến, , hằnghằng, , kiểukiểu dữdữ liệuliệu
 LệnhLệnh nhậpnhập, , xuấtxuất, , tínhtính toántoán
9Nhập môn lập trình - Nguyễn Minh Huy
BiếnBiến, , hằnghằng, , kiểukiểu dữdữ liệuliệu
 BiếnBiến vàvà hằnghằng::

NhữngNhững đơnđơn vịvị chứachứa giágiá trịtrị
DùngDùng
đểđể
nhậpnhập

, ,
xuấtxuất
, ,
tínhtính
toántoán


DùngDùng
đểđể
nhậpnhập
, ,
xuấtxuất
, ,
tínhtính
toántoán

 BiếnBiến: : giágiá trịtrị cócó thểthể thaythay đổiđổi
 HằngHằng: : giágiá trịtrị khôngkhông đổiđổi
Nhập N
S = 1
N > 1
S = S * N
đúng
sai
10Nhập môn lập trình - Nguyễn Minh Huy
N = N - 1
Xuất S
BiếnBiến, , hằnghằng, , kiểukiểu dữdữ liệuliệu
 KhaiKhai báobáo biếnbiến vàvà hằnghằng::


ĐặtĐặt têntên chocho biếnbiến vàvà hằnghằng
PhảiPhải
khaikhai
báobáo
tấttất
cảcả
biếnbiến
trướctrước
khikhi
dùngdùng
!!

PhảiPhải
khaikhai
báobáo
tấttất
cảcả
biếnbiến
trướctrước
khikhi
dùngdùng
!!
 CâuCâu lệnhlệnh khaikhai báobáo biếnbiến trongtrong C:C:
<<kiểukiểu dữdữ liệuliệu> <> <têntên biếnbiến>;>;
intint a, b, a, b, tuoituoi;;
float x, y, float x, y, diemTBdiemTB;;
 CâuCâu lệnhlệnh khaikhai báobáo hằnghằng trongtrong C:C:
constconst <<kiểukiểu dữdữ liệuliệu> <> <têntên hằnghằng> = <> = <giágiá trịtrị>;>;
#define#define <<têntên hằnghằng> <> <giágiá trịtrị>>
const float PI = 3.14;const float PI = 3.14;

#define NAM_HIEN_TAI #define NAM_HIEN_TAI 20112011
11Nhập môn lập trình - Nguyễn Minh Huy
BiếnBiến, , hằnghằng, , kiểukiểu dữdữ liệuliệu
 QuyQuy tắctắc đặtđặt têntên biếnbiến vàvà hằnghằng trongtrong C:C:

CácCác kýký tựtự đượcđược phépphép sửsử dụngdụng::

A A

Z, a Z, a

z, 0 z, 0

9.9.

A A

Z, a Z, a

z, 0 z, 0

9.9.
 DấuDấu gạchgạch dướidưới ‘_’.‘_’.
 KýKý tựtự đầuđầu tiêntiên khôngkhông đượcđược làlà sốsố!!
 KhôngKhông đượcđược trùngtrùng cáccác từtừ khóakhóa::
 while, if, new, delete, while, if, new, delete, gotogoto, , intint, float, namespace, return, , float, namespace, return, 
 NênNên đặtđặt têntên cócó nghĩanghĩa!!
intint aa, , bb;; // // TênTên hợphợp lệlệ, , khôngkhông cócó nghĩanghĩa
float float diem1diem1, , diem2diem2;; // // TênTên hợphợp lệlệ, , cócó nghĩanghĩa
char char _ky_tu123_ky_tu123;; // // TênTên hợphợp lệlệ, , cócó nghĩanghĩa

intint 123so123so, , newnew;; // // TênTên KHÔNG KHÔNG hợphợp lệlệ
12Nhập môn lập trình - Nguyễn Minh Huy
BiếnBiến, , hằnghằng, , kiểukiểu dữdữ liệuliệu
 KiểuKiểu dữdữ liệuliệu::

ĐiềuĐiều gìgì xảyxảy rara trongtrong máymáy khikhi khaikhai báobáo biếnbiến vàvà hằnghằng??

MộtMột
vùngvùng
nhớnhớ
đượcđược
cấpcấp
phátphát
vàvà
đặtđặt
têntên


MộtMột
vùngvùng
nhớnhớ
đượcđược
cấpcấp
phátphát
vàvà
đặtđặt
têntên

intint a; a;
 VùngVùng nhớnhớ a:a:

charchar kytukytu;;
 VùngVùng nhớnhớ kytukytu::

KíchKích
thướcthước
vùngvùng
nhớnhớ
??
0010 1101 1010 0111
0010 1101
Bộ nhớ máy tính

KíchKích
thướcthước
vùngvùng
nhớnhớ
??
 GiáGiá trịtrị chứachứa trongtrong vùngvùng nhớnhớ??
 Do Do kiểukiểu dữdữ liệuliệu quyếtquyết địnhđịnh
13Nhập môn lập trình - Nguyễn Minh Huy
BiếnBiến, , hằnghằng, , kiểukiểu dữdữ liệuliệu
 CácCác kiểukiểu dữdữ liệuliệu cơcơ sởsở trongtrong C:C:
Kiểu dữ liệu Ý nghĩa Kích thước Miền giá trị
int
Số
nguyên
đơn
4 bytes
-
2147483648 2147483647

int
unsigned int
Số
nguyên
đơn
4 bytes
-
2147483648 2147483647
0 4,294,967,295
long
unsigned long
Số nguyên kép 8 bytes
–9,223,372,036,854,775,808
9,223,372,036,854,775,807
0 18,446,744,073,709,551,615
short
unsigned short
Số nguyên ngắn 2 bytes -32768 32767
float Số thực chính xác đơn 4 bytes 3.4E +- 10
38
(7
chữ
số
thập
phân
)
14Nhập môn lập trình - Nguyễn Minh Huy
(7
chữ
số

thập
phân
)
double Số thực chính xác kép 8 bytes 1.7E +- 10
308
(15 chữ số thập phân)
char Ký tự 1 byte -128 127
bool Logic 1 byte true, false
NộiNội dungdung
 GiớiGiới thiệuthiệu ngônngôn ngữngữ C.C.
 BiếnBiến, , hằnghằng, , kiểukiểu dữdữ liệuliệu
 LệnhLệnh nhậpnhập, , xuấtxuất, , tínhtính toántoán
15Nhập môn lập trình - Nguyễn Minh Huy
LậpLập nhậpnhập, , xuấtxuất, , tínhtính toántoán
 LệnhLệnh nhậpnhập trongtrong C:C:

ThưThư việnviện: : ##includeinclude <<stdio.hstdio.h> (> (ststananddard ard iinput/nput/ooutpututput).).
CúCú
pháppháp
::

CúCú
pháppháp
::
 scanfscanf(“<(“<ĐịnhĐịnh dạngdạng kkiểuiểu>”[, &bien1, &bien2, ]);>”[, &bien1, &bien2, ]);
 ĐĐịnhịnh dạngdạng kiểukiểu::
 XXácác địnhđịnh kiểukiểu dữdữ liệuliệu chocho biếnbiến cầncần nhậpnhập
Định dạng kiểu Ý nghĩa
%
d,

%
ld
Số
nguyên

dấu
:
int
, long, short
16Nhập môn lập trình - Nguyễn Minh Huy
%
d,
%
ld
Số
nguyên

dấu
:
int
, long, short
%f, %lf Số thực: float, double
%u Số nguyên không dấu: unsigned int/long/short
%c Ký tự: char
%s Chuỗi ký tự: char [ ], char *
LệnhLệnh nhậpnhập, , xuấtxuất, , tínhtính toántoán
 LệnhLệnh nhậpnhập trongtrong C:C:
#include#include <<stdio.hstdio.h>>
void void mainmain()()
{{

intint a, b, c;a, b, c;
float diem;float diem;
char char kytukytu;;
char ten[30];char ten[30];
scanfscanf(“%d”, &a);(“%d”, &a); // // NhậpNhập sốsố nguyênnguyên a.a.
scanfscanf
(“%d %d”, &b, &c);(“%d %d”, &b, &c);
// //
NhậpNhập
2 2
sốsố
nguyênnguyên
b, c.b, c.
scanfscanf
(“%d %d”, &b, &c);(“%d %d”, &b, &c);
// //
NhậpNhập
2 2
sốsố
nguyênnguyên
b, c.b, c.
scanfscanf(“%f”, &diem);(“%f”, &diem); // // NhậpNhập sốsố thựcthực diem.diem.
scanfscanf(“%c”, &(“%c”, &kytukytu);); // // NhậpNhập kýký tựtự. .
scanfscanf(“%s”, &ten);(“%s”, &ten); // // NhậpNhập têntên
}}
17Nhập môn lập trình - Nguyễn Minh Huy
LệnhLệnh nhậpnhập, , xuấtxuất, , tínhtính toántoán
 LệnhLệnh xuấtxuất trongtrong C:C:

ThưThư việnviện: : #include#include <<stdio.hstdio.h> (> (ststananddard ard iinput/nput/ooutput)utput)

CúCú
pháppháp
::

CúCú
pháppháp
::
 printfprintf(“<(“<ĐịnhĐịnh dạngdạng xuấtxuất>”[, >”[, biếnbiến 1, 1, biếnbiến 2, ]);2, ]);
 ĐĐịnhịnh dạngdạng xuấtxuất::
 CáchCách trìnhtrình bàybày thôngthông tin tin cầncần xuấtxuất
 BaoBao gồmgồm::
 ChuỗiChuỗi kýký tựtự cầncần xuấtxuất

ĐịnhĐịnh
dạngdạng
kiểukiểu
: :
xácxác
địnhđịnh
kiểukiểu
dữdữ
liệuliệu
chocho
biếnbiến
cầncần
xuấtxuất


ĐịnhĐịnh
dạngdạng

kiểukiểu
: :
xácxác
địnhđịnh
kiểukiểu
dữdữ
liệuliệu
chocho
biếnbiến
cầncần
xuấtxuất

 KýKý tựtự điềuđiều khiểnkhiển
18Nhập môn lập trình - Nguyễn Minh Huy
LệnhLệnh nhậpnhập, , xuấtxuất, , tínhtính toántoán
 LệnhLệnh xuấtxuất trongtrong C:C:

KýKý tựtự điềuđiều khiểnkhiển::

XuấtXuất
rara
mànmàn
hìnhhình
cáccác
kýký
tựtự
đặcđặc
biệtbiệt



XuấtXuất
rara
mànmàn
hìnhhình
cáccác
kýký
tựtự
đặcđặc
biệtbiệt

Ký tự điều khiển Ý nghĩa
\a Tiếng chuông
\b Lùi một bước
\n Xuống dòng
\t Ký tự tab
19Nhập môn lập trình - Nguyễn Minh Huy
\\ Dấu ‘\’
\” Dấu nháy kép ‘“’
LệnhLệnh nhậpnhập, , xuấtxuất, , tínhtính toántoán
 LệnhLệnh xuấtxuất trongtrong C:C:

ĐịnhĐịnh dạngdạng sốsố nguyênnguyên: %: %nndd
intint
a = 123;a = 123;
intint
a = 123;a = 123;
printfprintf(“(“GiaGia tri a = %d”, a);tri a = %d”, a); // // XuấtXuất GiaGia tri a = tri a =
printfprintf(“(“GiaGia tri a = %5d”, a);tri a = %5d”, a); // // XuấtXuất GiaGia tri a = tri a =
 ĐịnhĐịnh dạngdạng sốsố thựcthực: %: %n.kn.kdd
float x = 15.62;float x = 15.62;

printfprintf(“(“GiaGia tri x = %f”, x);tri x = %f”, x); // // XuấtXuất GiaGia trịtrị x =x =
printfprintf
(“(“
GiaGia
tri x = %7.3f”, x);tri x = %7.3f”, x);
// //
XuấtXuất
GiaGia
tri x =tri x =
1 2 3
1 2 3
1
5
.
6
2
0
1 5 . 6 2
printfprintf
(“(“
GiaGia
tri x = %7.3f”, x);tri x = %7.3f”, x);
// //
XuấtXuất
GiaGia
tri x =tri x =
20Nhập môn lập trình - Nguyễn Minh Huy
1
5
.

6
2
0
LệnhLệnh nhậpnhập, , xuấtxuất, , tínhtính toántoán
 LệnhLệnh xuấtxuất trongtrong C:C:
#include#include <<stdio.hstdio.h>>
void void mainmain()()
{{
intint a = 5;a = 5;
char *ten = “Minh”;char *ten = “Minh”;
printfprintf(“Hello World”);(“Hello World”); // // XuấtXuất Hello WorldHello World
printfprintf(“Hello “);(“Hello “); // // XuấtXuất HelloHello
printfprintf(“World”);(“World”); // // XuấtXuất World World tiếptiếp theotheo
printfprintf
(“Hello(“Hello
\\
nWorldnWorld
“);“);
// //
XuấtXuất
Hello Hello
xuốngxuống
dòngdòng
WorldWorld
printfprintf
(“Hello(“Hello
\\
nWorldnWorld
“);“);
// //

XuấtXuất
Hello Hello
xuốngxuống
dòngdòng
WorldWorld
printfprintf(“(“GiaGia tri a = %d”, a);tri a = %d”, a); // // XuấtXuất GiáGiá trịtrị a = 5a = 5
printfprintf(“Ten hoc (“Ten hoc sinhsinh la %s”, ten);la %s”, ten); // // XuấtXuất Ten hoc Ten hoc sinhsinh la Minhla Minh
}}
21Nhập môn lập trình - Nguyễn Minh Huy
LệnhLệnh nhậpnhập, , xuấtxuất, , tínhtính toántoán
 CácCác lệnhlệnh tínhtính toántoán trongtrong C:C:

ThưThư việnviện: : #include#include <<math.hmath.h>>
Hàm tính toán Ý nghĩa Ví dụ
sin, cos, tan, atan Hàm lượng giác float x = sin(30 * 3.14 / 180);
log, log10, exp Hàm logarithm float y = log(exp(5.0));
sqrt Hàm lấy căn float z = sqrt(2.0);
pow Hàm tính lũy thừa float a = pow(2.0, 5);
ceil, floor Hàm làm tròn float b = ceil(2.4);
22Nhập môn lập trình - Nguyễn Minh Huy
abs, fabs Hàm lấy trị tuyệt đối float c = fabs(a);

TómTóm tắttắt
 GiớiGiới thiệuthiệu ngônngôn ngữngữ CC::

Kernighan & Ritchie, 1973.Kernighan & Ritchie, 1973.
PhânPhân
biệtbiệt
hoahoa
thườngthường



PhânPhân
biệtbiệt
hoahoa
thườngthường

 CâuCâu lệnhlệnh: : chỉchỉ thịthị rara lệnhlệnh, , kếtkết thúcthúc bằngbằng ;.;.
 KhốiKhối lệnhlệnh: : câucâu lệnhlệnh phứcphức, , baobao giữagiữa { }.{ }.
 BiếnBiến, , hằnghằng, , kiểukiểu dữdữ liệuliệu::

BiếnBiến, , hằnghằng: : đơnđơn vịvị chứachứa giágiá trịtrị trongtrong chươngchương trìnhtrình
KhaiKhai
báobáo
biếnbiến
, ,
hằnghằng
::

KhaiKhai
báobáo
biếnbiến
, ,
hằnghằng
::
 ĐĐặtặt têntên chocho biếnbiến, , hằnghằng
 BiếnBiến: <: <kiểukiểu dữdữ liệuliệu> <> <têntên biếnbiến>;>;
 HằngHằng: #define <: #define <têntên hằnghằng> <> <giágiá trịtrị>>
const <const <kiểukiểu dữdữ liệuliệu> <> <têntên hằnghằng> = <> = <giágiá trịtrị>;>;
23Nhập môn lập trình - Nguyễn Minh Huy

TómTóm tắttắt
 LệnhLệnh nhậpnhập, , xuấtxuất::

ThưThư việnviện: #include <: #include <stdio.hstdio.h>>
scanfscanf
(“<(“<
địnhđịnh
dạngdạng
kiểukiểu
>”[, &>”[, &
biếnbiến
1, &1, &
biếnbiến
2, ]);2, ]);

scanfscanf
(“<(“<
địnhđịnh
dạngdạng
kiểukiểu
>”[, &>”[, &
biếnbiến
1, &1, &
biếnbiến
2, ]);2, ]);
 printfprintf(“<(“<địnhđịnh dạngdạng xuấtxuất>”[, >”[, biếnbiến 1, 1, biếnbiến 2, ]);2, ]);
 LệnhLệnh tínhtính toántoán::

ThưThư việnviện: #include <: #include <math.hmath.h>>
 CácCác hàmhàm tínhtính toántoán::

sin, sin,
coscos
, tan, , tan,
atanatan


sin, sin,
coscos
, tan, , tan,
atanatan

 log, log10, exp.log, log10, exp.
 sqrtsqrt, , powpow
 ceil, floor, abs.ceil, floor, abs.
24Nhập môn lập trình - Nguyễn Minh Huy
BàiBài tậptập
 BàiBài tậptập 3.1:3.1:
ViếtViết chươngchương trìnhtrình C C chocho phépphép::

NhậpNhập
vàovào
têntên
vàvà
nămnăm
sinhsinh
củacủa
mộtmột
ngườingười



NhậpNhập
vàovào
têntên
vàvà
nămnăm
sinhsinh
củacủa
mộtmột
ngườingười

TínhTính tuổituổi chocho ngườingười đóđó vàvà xuấtxuất kếtkết quảquả nhưnhư sausau::
“Chao ban “Chao ban <ten><ten>, , namnam nay ban nay ban <<tuoituoi>> tuoituoi”.”.
GhiGhi chúchú::
<ten>: <ten>: têntên nhậpnhập vàovào
<<tuoituoi>: >: tuổituổi tínhtính đượcđược
25Nhập môn lập trình - Nguyễn Minh Huy

×