You are on page 1of 56

www.uit.edu.

vn

NHẬP MÔN LẬP TRÌNH

KHÁI NIỆM CƠ BẢN VỀ C


BIỂU THỨC & CÁC PHÉP TOÁN
NHẬP XUẤT DỮ LIỆU
NỘI DUNG

1 KHÁI NIỆM CƠ BẢN VỀ C

Trường Đại Học CNTT


KHÁI NIỆM CƠ BẢN VỀ C

◼ Chương trình C
◼ Các kiểu dữ liệu cơ sở
◼ Hằng, biến
◼ Chương trình ví dụ

Trường Đại Học CNTT


DẪN NHẬP

BÀI TOÁN

THUẬT GIẢI

NN LẬP TRÌNH

MÁY TÍNH

Trường Đại Học CNTT


CHƯƠNG TRÌNH C ĐƠN GIẢN
/* Nhập vào 2 số nguyên. Tính và in ra tổng của chúng */
#include <stdio.h> // stdio.h, conio.h: tên thư viện
#include <conio.h>
void main() // void : Kiểu hàm trả về
{
int a, b, sum; // khai báo biến địa phương
clrscr();
printf("Nhap a="); // hàm xuất ra màn hình
scanf("%d", &a); // hàm nhập theo dịa chỉ biến a
printf("Nhap b="); // %d: chỉ thị đặc tả
// cho biến kiểu int
scanf("%d", &b);
sum=a+b; // phép gán =
printf("Tong: %d + %d = %d", a, b, sum);
getch( ); // hàm nhận ký tự trực tiếp từ bộ đệm
} // kết thúc hàm chính
Trường Đại Học CNTT
CÁC KIỂU DỮ LIỆU CƠ SỞ

➢ Kiểu ký tự: char, unsigned char


➢ Kiểu số nguyên: int, unsigned,
long, unsigned long
➢ Kiểu dấu chấm động: float,
double, long double
➢ Kiểu void (khong kieu)

Trường Đại Học CNTT


CÁC KIỂU DỮ LIỆU CƠ SỞ

➢KDL trên C

Trường Đại Học CNTT


HẰNG, BIẾN
◼ HẰNG
➢ Cách định nghĩa hằng trong chương
trình:
Cách 1:
#define <tên hằng> <giá trị>
Cách 2:
const <kiểu> <tên hằng> = <giá trị>;
➢ Ví dụ:
#define PI 3.1415
const float PI = 3.1415;

Trường Đại Học CNTT


HẰNG, BIẾN

➢ Các loại hằng:


Hằng số:
#define MAX 100
Hằng ký tự:
#define STOP ‘Q’
Hằng chuỗi:
#define NNC “Ngôn ngữ LT C”

Trường Đại Học CNTT


HẰNG, BIẾN
◼ BIẾN
➢ Cách khai báo biến:
<Kiểu dữ liệu> <danh_sách_tên_biến>;
VD: int a, b;
float x;
➢ Khởi tạo giá trị ban đầu cho các biến
VD: int a, b=6, d=1;
➢ Truy xuất đến địa chỉ của biến: &tên_biến
VD: &a
Trường Đại Học CNTT
CHƯƠNG TRÌNH VÍ DỤ

#include <stdio.h>
#include <conio.h>  Kết quả:
#define PI 3.1415 Chu vi = 19.47
void main ()
Dien tich = 30.18
{
float r = 3.1;
float cv=2*r*PI;
float dt=PI*r*r;
printf("\nChu vi = %10.2f\n\
Dien tich = %10.2f", cv, dt);
// 10.2 : định dạng xuất giá trị của biến dành 10
// khoảng trắng, trong đó 2 cho phần lẻ thập phân
getch(); // lệnh chờ nhấn một phím bất kỳ
}
Trường Đại Học CNTT
MỘT SỐ QUY TẮC CẦN NHỚ

➢ Trong C, câu lệnh phân biệt ký tự thường – ký tự


hoa
➢ Mỗi câu lệnh có thể viết trên một hay nhiều dòng
nhưng phải kết thúc bằng dấu chấm phẩy ‘;’
➢ Muốn biểu diễn một dãy hằng ký tự (dãy ký tự đặt
trong cặp dấu nháy kép) trên nhiều dòng, thì ta phải
đặt thêm dấu ‘\’ trước khi xuống dòng

VD: printf("\n Chu vi = %10.2f \


\n Dien tich = \
%10.2f", cv, dt);

Trường Đại Học CNTT


MỘT SỐ QUY TẮC CẦN NHỚ

➢ Các lời giải thích phải đặt giữa cặp


dấu /*…*/ hoặc sau dấu //
VD:

/* Chương trình tính diện tích và chu


vi của đường tròn, khi biết bán kính r
= 3.1 */
// printf chỉ thị in ra màn hình

Trường Đại Học CNTT


MỘT SỐ QUY TẮC CẦN NHỚ

➢ Muốn sử dụng các hàm chuẩn của C thì ở


đầu chương trình ta phải khai báo thư
viện chuẩn có chứa hàm muốn sử dụng.
VD:
Muốn sử dụng hàm printf để in một chuỗi ra
màn hình chúng ta phải khai báo:
#include <stdio.h>
Muốn sử dụng hàm sqrt để tính giá trị căn
bậc hai của một biến chúng ta phải khai báo:
#include <math.h>
Trường Đại Học CNTT
NỘI DUNG

2 BIỂU THỨC VÀ CÁC PHÉP TOÁN

Trường Đại Học CNTT


BIỂU THỨC VÀ CÁC PHÉP TOÁN

◼ BIỂU THỨC
Là sự kết hợp của những phép toán thực
hiện hợp lệ trên các biến, hằng hoặc các
giá trị của hàm.
Ví dụ:
int i, a=3;
a=(i=a*11);
Trường Đại Học CNTT
BIỂU THỨC VÀ CÁC PHÉP TOÁN

◼ CÁC PHÉP TOÁN


➢ Các phép toán số học
➢ Các phép thao tác trên bit
➢ Phép toán bù bit
➢ Các phép toán quan hệ
➢ Các phép toán logic
➢ Các phép toán tăng giảm
Trường Đại Học CNTT
BIỂU THỨC VÀ CÁC PHÉP TOÁN

◼ CÁC PHÉP TOÁN SỐ HỌC


➢ Cộng (+), trừ (-), nhân (*), chia (/) thực hiện
trên các kiểu dữ liệu int, char, float, double.
➢ Kết quả của các phép toán này sẽ có giá trị cùng
kiểu với toán hạng có kiểu cao nhất.
Ví dụ:
int a;
float b;
Biểu thức (a*b) có giá trị là kiểu số thực.

Trường Đại Học CNTT


BIỂU THỨC VÀ CÁC PHÉP TOÁN

◼ CÁC PHÉP TOÁN SỐ HỌC


➢ Phép chia của hai số nguyên cho ra kết quả
là số nguyên.
VD: float f = 5/2; // cho kết quả f = 2
➢ Phép toán phẩy (,): thứ tự thực hiện ở vế
phải là từ trái sang phải.
VD:
int m, t, h;
m=(t=2,h=t*t+3);
/* sẽ cho t=2, h=7 và m=7 */
int a, b=2;
b=(a=3,(5*b)+(a*=b));
/* b=16 a=6 */ Trường Đại Học CNTT
BIỂU THỨC VÀ CÁC PHÉP TOÁN

◼ CÁC PHÉP THAO TÁC TRÊN BIT


➢ Gồm AND(&), OR(|), XOR(^), Dịch
trái(<<), Dịch phải (>>), lấy phần bù ()
➢ Các phép toán này cho phép xử lý từng bit
của một số nguyên (không dùng cho kiểu
float và double).

Trường Đại Học CNTT


BIỂU THỨC VÀ CÁC PHÉP TOÁN
Ví dụ:
unsigned char a = 135; // a2 = 10000111
unsigned char b = 50; // b2 = 00110010
unsigned char c;
c = a&b; // c10 = 2; c2 = 00000010
c = a|b; // c10 = 183, c2 = 10110111
c = a^b; // c10 = 181, c2 = 10110101
c = a>>3; // c10 = 16, c2 = 00010000
c = a<<4; // c10 = 112, c2 = 01110000
c = a>>n; //  c = a / 2n,
c = a<<n; //  c = a * 2n
// n : số bit dịch chuyển

Trường Đại Học CNTT


BIỂU THỨC VÀ CÁC PHÉP TOÁN

◼ PHÉP TOÁN BÙ BIT ~


1=0
0=1
Ví dụ:
char a = 52;// a2=00110100
char b = ~a;// b2=11001011, b10 = 203

Trường Đại Học CNTT


BIỂU THỨC VÀ CÁC PHÉP TOÁN

◼ CÁC PHÉP TOÁN QUAN HỆ


➢ Bao gồm các phép toán so sánh:
==, !=, >, >=, <, <=
➢ So sánh giá trị của các toán hạng cho ra
kết quả 0 (sai) hoặc 1 (đúng).
Ví dụ:
int a = 3, b = 5, f;
f = a==b; // f = 0
f = a * 2 > b; // f = 1

Trường Đại Học CNTT


BIỂU THỨC VÀ CÁC PHÉP TOÁN

◼ CÁC PHÉP TOÁN LOGIC


➢ Bao gồm các toán tử:
! : NOT
&& :AND
||: OR
➢ Dùng kết hợp các biểu thức thành một biểu thức
logic.
➢ Kết quả của các phép toán này có giá trị:
0 (sai) hoặc 1 (đúng)
Trường Đại Học CNTT
BIỂU THỨC VÀ CÁC PHÉP TOÁN

➢ Ví dụ:
x y x&&y x||y !x !!x
0 0 0 0 1 0
0 7 0 1 1 0
5 0 0 1 0 1
5 7 1 1 0 1
8 7 1 1 0 1

▪ Chú ý: !!x có thể có giá trị khác x


Trường Đại Học CNTT
BIỂU THỨC VÀ CÁC PHÉP TOÁN

◼ CHUYỂN ĐỔI KIỂU DỮ LIỆU


➢ Chuyển đổi kiểu dữ liệu tự động: Khi hai
toán hạng trong một phép toán khác kiểu dữ liệu
thì kiểu dữ liệu thấp được nâng thành kiểu dữ
liệu cao trước khi tính toán.
Ví dụ:
float f, x = 5;
int y = 2;
f = x/y; // f = 2.5
◼ Vì x kiểu float nên y sẽ tạm thời được chuyển
sang kiểu float để thực hiện phép chia x/y
Trường Đại Học CNTT
BIỂU THỨC VÀ CÁC PHÉP TOÁN

➢ Chuyển đổi kiểu “bắt buộc”: chuyển đổi kiểu bất


kỳ sang kiểu mong muốn, gọi là ép kiểu.
Cú pháp khai báo: (<KiểuDL>) <biểu thức>
Ví dụ:
float f1, f2;
int x = 5, y = 2 ;
f1 = x/y; // f1= 2
f2 = (float)x/y; // f2 = 2.5
◼ f1 = 2 vì x và y cùng kiểu int, nên x/y → kết quả
kiểu int

Trường Đại Học CNTT


BIỂU THỨC VÀ CÁC PHÉP TOÁN

◼ CÁC PHÉP TĂNG GIẢM MỘT ĐƠN VỊ: ++, --


Ví dụ:
int n = 5, x;
// tăng n lên 1 rồi gán cho x
x = ++n; // n = n+1 = 6; x = n = 6
// gán n cho x rồi mới tang n lên 1
x = n++; // x = n = 5; n = n+1 = 6
◼ Phép toán ++, -- chỉ thao tác trên các biến có giá
trị nguyên.

Trường Đại Học CNTT


BIỂU THỨC VÀ CÁC PHÉP TOÁN

◼ CÂU LỆNH GÁN =


➢ Dạng 1: Biến = <biểu thức>;
➢ Dạng 2: Biến <toán tử> = <biểu thức>;
Với <toán tử> là một trong các phép toán:
+, -, *, /, %, &, |, ^, <<, >>

Ví dụ:
int c, a=3, b=4;
int so = 10;
c = a+b; // dạng 1, c=3+4=7
so += 5; // dạng 2: so=so+5=15
a = b = c = 0;Trường Đại Học CNTT
BIỂU THỨC VÀ CÁC PHÉP TOÁN

a = a + n  a + = n;
a = a – n  a - = n;
a = a * n  a * = n;
a = a / n  a / = n;
a = a % n  a % = n;
a = a + 1  a + = 1; a ++; ++a;
a = a – 1  a - = 1; a --; --a;

Trường Đại Học CNTT


BIỂU THỨC VÀ CÁC PHÉP TOÁN

◼ TOÁN TỬ ĐIỀU KIỆN (?)


➢ Cú pháp khai báo

<điều kiện>?<biểu thức 1>:<biểu thức 2>;


➢ Kết quả của biểu thức
▪ nhận <biểu thức 1> nếu điều kiện có giá trị
khác 0 (điều kiện đúng),
▪ ngược lại, nhận <biểu thức 2>.

Trường Đại Học CNTT


BIỂU THỨC VÀ CÁC PHÉP TOÁN

◼ Ví dụ:
int a = 7, b = 10;
int min, max;
min = (a<b)? a : b; // min = a = 7
max = (a>b)? a : b; // max = b = 10

Trường Đại Học CNTT


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

ĐỘ ƯU PHÉP TOÁN TRÌNH TỰ KẾT


TIÊN HỢP
1 () [] . -> Trái sang phải
2 ! ~ ++ -- + - Phải sang trái
(type) * & sizeof
3 * / % Trái sang phải
4 + - Trái sang phải
5 << >> Trái sang phải
Trường Đại Học CNTT
THỨ TỰ ƯU TIÊN CỦA CÁC PHÉP TOÁN

ĐỘ ƯU PHÉP TOÁN TRÌNH TỰ KẾT


TIÊN HỢP
6 < <= > >= Trái sang phải
7 == != Trái sang phải
8 & Trái sang phải
9 ^ Trái sang phải
10 | Trái sang phải

Trường Đại Học CNTT


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

ĐỘ ƯU PHÉP TOÁN TRÌNH TỰ KẾT


TIÊN HỢP
11 && Trái sang phải

12 || Trái sang phải

13 ? : Phải sang trái

14 = += -= *= /= %= Phải sang trái


>>= <<= &= ^= |=
15 , Trái sang phải

Trường Đại Học CNTT


NỘI DUNG

3 NHẬP XUẤT DỮ LIỆU

Trường Đại Học CNTT


NHẬP XUẤT DỮ LIỆU

◼ CÁC HÀM NHẬP XUẤT TRONG


◼ #include “stdio.h”
➢ scanf(…), printf(…): Nhập, xuất
giá trị cho biến theo kiểu đã được định
dạng.
➢ gets(char*), puts(char*): nhập,
xuất biến kiểu chuỗi ký tự ra màn hình.
➢ getchar(), putchar() : nhập, xuất
ký tự ra màn hình .

Trường Đại Học CNTT


Nhập xuất theo kiểu được định dạng
◼ Cú pháp:
◼ Nhập (Giá trị cho biến):
scanf(“Định dạng kiểu dữ liệu”, địa chỉ
chứa biến cần nhập);

◼ Xuất (giá trị của biến, của biểu


thức,hằng):
printf(“Định dạng kiểu dữ liệu”, Giá trị cần
xuất);

Trường Đại Học CNTT


NHẬP XUẤT DỮ LIỆU

Ví dụ:
◼ float f;
scanf(“%f”,&f);
printf(“Gia tri cua f = %0.2f”, f);
◼ char str[10]; // biến chuỗi ký tự
gets(str); // hoặc scanf(“%s”,str);
puts(str); // hoặc printf(“%s”,str);
◼ char ch;
ch = getchar();

Trường Đại Học CNTT


ĐỊNH DẠNG KIỂU DỮ LIỆU
Mã ĐT Kiểu DL Tác dụng
%c char Đặc tả ký tự
%d int Đặc tả số nguyên
%ld long int Đặc tả số nguyên dài
%o int Đặc tả số nguyên ở hệ bát phân
%x int Đặc tả số nguyên ở hệ thập lục phân
%u unsigned int Đặc tả số nguyên không dấu
%lu unsigned long Đặc tả số nguyên dài không dấu
%f float Đặc tả số thực
%lf double Đặc tả số thực
%lf long double Đặc tả số thực
%s mảng ký tự Đặc tả chuỗi ký tự
Trường Đại Học CNTT
MÃ KÝ TỰ ĐIỀU KHIỂN

Mã Ý nghĩa
'\n' Xuống hàng
'\t' Tab
'\0' “NULL”– ứng với giá trị nguyên 0 trong
bảng mã ASCII (khác với số 0)
'\b' Backspace
'\r' CR(về đầu dòng)
'\f' LF(sang trang)
'\\' \
'\”' ”
'\'' '
Trường Đại Học CNTT
NHẬP XUẤT DỮ LIỆU
◼ CÁC HÀM NHẬP XUẤT TRONG conio.h
Hàm getch(), getche(), và putch(): nhận và xuất
một ký tự trực tiếp từ bộ đệm bàn phím.
VD:
do{
ch=getch();
if (ch==0) // Nhấn phím đặc biệt
{
ch=getch(); // Nhận mã lần thứ 2
if (ch == 59)
break; // Nếu ch == F1: thoát
// khỏi vòng do..while
}
} while(1); Trường Đại Học CNTT
CÁC VÍ DỤ

◼ Viết chương trình xuất ra màn hình dòng


“Chao tat ca cac ban K3_C5”
#include <conio.h>
#include <stdio.h>
int main()
{
printf("Chao tat cac ban K3_C5 \n");
return 0;
}

Trường Đại Học CNTT


CÁC VÍ DỤ
◼ Viết chương trình nhập 2 số nguyên khác
0 và tính tổng, tích, hiệu, thương của 2
số trên

Trường Đại Học CNTT


CÁC VÍ DỤ
◼ Chương trình:
#include <conio.h> printf("%d+%d=%d\n",a,b,tong);
#include <stdio.h> printf("%d-%d=%d\n",a,b,hieu);
int main() printf("%d*%d=%d\n",a,b,tich);
{ printf("%d/%d=%d\n",a,b,thuong);
int a,b; return 0;
}
int tong,tich,hieu,thuong;
printf("Nhap a:");
scanf("%d",&a);
printf("Nhap b:");
scanf("%d",&b);
tong=a+b;
tich=a*b;
hieu=a-b;
thuong=a/b; Trường Đại Học CNTT
CÁC VÍ DỤ
◼ Viết chương trình nhập chiều dài, rộng
của hình chữ nhật. Tính và in ra diện tích
và chu vi của hình chữ nhật

Trường Đại Học CNTT


CÁC VÍ DỤ - CHƯƠNG TRÌNH
#include <conio.h>
#include <stdio.h>
int main()
{ float dai,rong,chuvi,dientich;
printf("Nhap dai:");
scanf("%f",&dai);
printf("Nhap rong:");
scanf("%f",&rong);
dientich=dai*rong;
chuvi=(dai+rong)*2;
printf("dien tich hinh chu nhat:%0.2f\n",dientich);
printf("chi vi hinh chu nhat:%0.2f ",chuvi);
return 0;
} Trường Đại Học CNTT
CÁC VÍ DỤ
◼ Viết chương trình nhập vào bán kính R
của hình tròn. Tính và in ra diện tích của
hình tròn

Trường Đại Học CNTT


CÁC VÍ DỤ - CHƯƠNG TRÌNH
#include <conio.h>
#include <stdio.h>
#define PI 3.1415
int main()
{ float R,dientich,chuvi;
printf("Nhap R:");
scanf("%f",&R);
dientich=PI*R*R;
chuvi=PI*2*R;
printf("dien tich hinh tron:%0.2f\n",dientich);
printf("chi vi hinh tron:%0.2f ",chuvi);
return 0;
} Trường Đại Học CNTT
PHỤ LỤC 1 – Tạo project trong Visual C++ 6.0

◼ File → New hoặc sử dụng phím tắt Ctrl + N


để hiện ra cửa sổ sau. Sau đó, chọn tab
Projects → Win32 Console Application

Trường Đại Học CNTT


PHỤ LỤC 1 – Tạo project trong Visual C++ 6.0

◼ Đặt tên cho project trong ô Project name.


◼ Chọn đường dẫn để lưu project trong ô
Location.
◼ Nhấn OK.
◼ Chọn 1 trong 2 tùy chọn : A “ Hello,
World !” application
◼ Nhấn Finish
◼ Nhấn OK cho cửa sổ New Project
Information.

Trường Đại Học CNTT


PHỤ LỤC 1 – Tạo project trong Visual C++ 6.0

◼ F5: Biên dịch chương trình


◼ Ctrl+F5: Chạy chương trình
◼ F4: Bắt lỗi
◼ F11: Chạy từng bước, từng dòng (debug)
◼ Ctrl+F10: Chạy từng bước tới cursor

Trường Đại Học CNTT


Tạo 1 file mới trong DevCPP
◼ Thao tác với tập tin source code thay vì project,
bằng cách chọn File → New → Source File hoặc
chọn tổ hợp phím tắt Ctrl+N
◼ Chọn File → Save As… hoặc Ctr+F12 để lưu file
source lại dưới dạng *.CPP
◼ Ctrl+F9: dịch chương trình
◼ Ctrl+F10: Chạy chương trình
◼ Khi có lỗi chương trình sẽ tự động báo dòng bị lỗi
◼ Sử dụng command line để dịch chương trình
mà không cần sử dụng IDE
◼ C:Dev-Cpp\bin> gcc BaiTap1.cpp –o BaiTap1.exe

Trường Đại Học CNTT


VÍ DỤ 1 CHƯƠNG TRÌNH TRONG VISUAL C++ 6.0

Trường Đại Học CNTT


VÍ DỤ 1 CHƯƠNG TRÌNH TRONG Dev C

Trường Đại Học CNTT


www.uit.edu.vn

You might also like