lOMoARcPSD| 46342576
ĐẠI HỌC ĐÀ NẴNG
TRƯỜNG ĐH SƯ PHẠM KĨ THUẬT
KHOA ĐIỆN –
ĐIỆN TỬ
-----

-----
GIÁO TRÌNH THỰC HÀNH
Giảng viên: Phạm Thị Trà My
lOMoARcPSD| 46342576
LỜI NÓI ĐẦU
Cuốn Giáo Trình Thực Hành Kỹ Thuật Lập Trình” nhằm giúp sinh viên trường Đại học
phạm Kỹ thuật Đà Nẵng vận dụng những kiến thức lý thuyết vào từng bài thực hành. Cung cấp
cho sinh viên hệ thống các bài tập, những kĩ năng thực hành về ngôn ngữ lập trình C. Cuốn này
ược xem ntài liệu hướng dẫn thực hành cho sinh viên trong học phần thực hành kỹ thuật
lập trình.
Trong từng bài thực hành sẽ có 3 phần:
Ví dụ: Những kiến thức lí thuyết sẽ ược ưa vào ví dụ ể sinh viên ôn lại lí thuyết qua từng ví dụ
cụ thể
Phần bài tập: với nhiều bài tập ược chia làm hai mức ộ cơ bản và nâng cao ể sinh viên vận dụng
kiến thức thuyết giải quyết o từng bài tập Phần lưu ý: Những u ý sinh viên cần nắm trong
bài
Bài Thực Hành Số 1 LÀM QUEN VỚI PHẦN MỀM Dev – C++
Sau khi thực hành xong bài này sinh viên biết ược cách thực thi một chương trình ược viết trên
trình biên dịch ngôn ngữ C, C++ bao gồm các bước: Tạo file/ project; soạn thảo nguồn; Chạy
thử và kiểm tra kết quả; Debug ( nếu cần).
Bước 1: Tạo file/project mới
Khởi ộng phần mềm lên bằng cách click chuột vào biểu tượng icon của Dev – C++ ngoài
Desktop
lOMoARcPSD| 46342576
Đây là giao diện của Dev-C++
Trong trường hợp chương trình ơn giản, chúng ta ch cần 1 file ể lưu mã nguồn, khi ó chúng
ta chọn menu File New Source File (Ctrl-N) . Và nhập mã nguồn trực tiếp vào file.
Đối với chương trình C/C++ phức tạp, 1 chương trình cần nhiều file ể thực hiện thì DevCPP
có khái niệm dự án (project). Project là nơi cất giữ tất cả những thông tin liên quan ến
nguồn, thư viện, tài nguyên,… ể biên dịch thành chương trình. • Để tạo Project mới, vào
menu "File" chọn "New", "Project...".
lOMoARcPSD| 46342576
Chọn "Console Application" và chọn "C project" nếu là lập trình C, Chọn “C++ Project” nếu
là C++. Nhập tên project, tên project cũng là tên của file thực thi (.exe) stạo ra khi biên dịch.
Nhấn "OK". Dev-C++ sẽ hỏi nơi lưu trữ project. Nhấn "OK".
Bước 2: Soạn tho mã nguồn
Nếu chương trình ơn giản thì chúng ta bắt tay ngay vào việc nhập nguồn chương trình Nếu
là chương trình phức tạp, chúng ta có 2 cách thêm mã nguồn vào dự án.
Vào menu "File" chọn "New Source File" (CTRL+N).
Vào menu "Project" chọn "New File".
Dev-C++ sẽ không hỏi tên file cho ến khi chúng ta thực hiện:
o Compile o Save
the project o Save the
source file o Exit
Dev-C++
Bạn cũng có thể thêm file nguồn có sẵn bằng 1 trong 2 phương pháp sau:
Vào menu "Project" chọn "Add to Project".
Nhấn phím phải chuột vào project name ở khung bên trái và chọn "Add to Project".
Các quy tắc soạn thảo gần giống với chương trình soạn thảo văn bản chuấn (Word,…). Một vài
tính năng như:
Undo
Redo
Copy
Paste
Cut
Select All
Tham khảo menu Edit ể biết chi tiết và các phím tắt trong khi soạn thảo.
lOMoARcPSD| 46342576
Bước 3: Chạy thử và kiểm tra kết quả
Sau khi nhập file nguồn xong
Để biên dịch chúng ta thực hiệnVào menu "Execute" chọn "Compile" (F9).
Để thực thi chương trình Vào menu “Excute” chọn run (F10)
Để thực hiện ồng thời vừa biên dịch và chạy chương trình Vào menu chọn Compile
& Run (F11)
Bước 4: Debug. (Nếu cần)
Khi viết chương trình thường hay những lỗi xảy ra không hề hiển thị trên khung
báo lỗi hoặc muốn xem giá trị các biến, cách thức hoạt ộng của chương trình . Lúc này cần phải
dùng ến chức năng debug. Vậy, debug là một chức năng cho phép chúng ta xem ược giá trị ca
các biến và cách hoạt ộng của chương trình ể hiểu chương trình hơn.
Kĩ thuật debug:
- Trước khi debug cần phải compile file nguồn
lOMoARcPSD| 46342576
- Để con trỏ vào phần ầu tiên trong hàm main (). Rồi click chuột vào thanh dọc màu
nâu. Lúc này dấu Breakpoint màu xuất hiện hay chúng ta muốn chương trình chạy debug
bắt ầu từ dòng lệnh nào thì chúng ta ặt dấu Breakpoint tại v trí ó.
- Vào menu “Execute” và chọn Debug (F5)
- Nhấn Next Step (F7) ể chương trình chạy bước tiếp theo
lOMoARcPSD| 46342576
- Để theo dõi biến nào chọn Add watch, nhập tên biến và Enter, giá trị của biến cần
theo dõi sẽ hiện ra trong tab Debug ở phần khung bên trái. Muốn bỏ theo dõi một biến bạn
chọn biến ó cọn Remove Watch. Khi gọi 1 hàm, nếu chọn Next Step thì chương trình s
tự ộng thực hiện hàm ó (không debug hàm), còn nếu nhấn Step into (Shift + F7) thì con trỏ
debug sẽ chuyển vào trong thân hàm ược gọi và tiến hành debug hàm ó - Muốn dừng Debug
bạn chọn Stop Execution (Ctrl + Alt + F12).
- Chú ý: Dev C ++ một trong những trình biên dịch cho ngôn ngữ lập trình C
ngoài ra còn các trình biên dịch khác thể chạy C như Turbo C, Microsoft Visual Studio,
Eclipse,.. Mỗi trình biên dịch ều có ưu và nhược iểm riêng.
Bài Thực Hành Số 2 CÁC LỆNH NHẬP XUẤT
Sau khi thực hành xong bài này, sinh viên sẽ nắm ược và vận dụng:
- Ý nghĩa, cách sử dng hàm printf, scanf
- Sử dụng ịnh dạng, ký tự ặc biệt, ký tự iều khiển trong printf, scanf.
Ví dụ 2.1: In giá trị của các biến ra màn hình
#include<stdio.h> main()
{
int a=12,b=17;
printf("Con duong thanh cong \n");
printf("%s \n","Khong co buoc chan cua ke luoi bieng");
printf("kieu nguyen, kieu thuc, kieu ki tu: %d, %f, %c \n", 2, 2.1,'M');
printf("123456789\n"); printf("%4d\n",a); printf("%-4d\n",a);
printf("%02d\n",a); printf("%05d\n",a); printf("%02d\n",b);
printf("%1d\n",b); printf ("%.2f\n", 3.1415929);
printf("%6.1f\n",3.1515929);
}
Ví dụ 2.2: Nhập và in giá tr của các biến ra màn hình
#include<stdio.h>
#include<conio.h>
main () {
lOMoARcPSD| 46342576
printf ("Lam quen voi ham scanf!\n");
int a;
float b;
char my[100];
printf ("Nhap vao so nguyen va so thuc: ");
scanf ("%d %f", &a, &b);
printf ("So nguyen vua nhap: %d\nSo thuc vua nhap: %f\n", a, b);
getchar();
printf ("Nhap vao ho ten cua ban: ");
//scanf("%s",my); ???? fgets(my,
sizeof my, stdin); printf("ho ten ban
la:"); printf("%s", my);
}
Bài tập:
Bài 1: Viết chương trình nhập vào 2 số nguyên a, b. In ra kết quả của phép +, -, *, / và % (phép
lấy dư) của a và b.
Nhận xét kết quả của phép chia a và b.
=>Sửa lại phép chia cho úng?
Bài 2: Viết chương trình tính diện tích các hình sau: a.
Hình chữ nhật: S=a*b
b. Hình thang: S=((a+b)*h)/2
c. Hình tròn: S= PI * r * r với PI=3.14 (PI ược khai báo là hằng số)
Bài 3: Viết chương trình nhập vào một số thực x và tính giá tr y của các biểu thức sau:
a) y= ex 1 x1
b) y=3x − +
3
x 1
c) y= + +(x 1)
5 3
x
d) y= e
x
+ −5 x
HD : Sử dụng các hàm có trong C ể tính giá trị cho y. pow(double x,double y) – tính x
y
;
exp(x) – tính e
x
, hàm fabs(x) –tính trị tuyệt ối của một số thực x (|x|); hàm sqrt(x) – tính căn
bậc 2 của x.
Ví dụ với y=x
7
.e
x
+ 3x – 8 thì y=pow(x,7)*exp(x)+3*x-8
Bài 4: Nhập vào 2 số nguyên a, b. Hãy in ra màn hình số lớn hơn. HD:
Sử dụng biểu thức ? :
max= a>=b ? a: b
Bài 5: Nhập vào một số kiểu nguyên có 3 chữ số, hãy in ra các chữ số ở hàng trăm, chục, ơn vị.
Chú ý: Những lỗi sinh viên thường gặp phải trong bài thực hành số 2 này:
lOMoARcPSD| 46342576
o Không truyền tham chiếu vào hàm scanf ( phải thêm toán tử & vào trước tên
biến).
o Sử dụng biến mà quên khai báo (phải xác ịnh input và output của bài toán ể khai
báo trước khi viết code)
o Thiếu dấu chẩm phẩy “;” khi kết thúc dòng lệnh
Bài Thực Hành Số 3 CẤU TRÚC RẼ NHÁNH
Sau khi thực hành xong các bài này, sinh viên sẽ hiểu và vận dụng ược:
- Ý nghĩa, cú pháp các lệnh if, if…else, switch. -
Cách sử dụng các cấu trúc if…else lồng nhau
- So
sánh sử dụng if và switch.
Ví dụ 3.1 Nhập vào 1 số cho biết số ó là số dương hay s âm hay s 0
Cách 1:
#include<stdio.h>
#include<conio.h>
main()
{
int x;
printf("nhap x=");
scanf("%d",&x); if(x==0)
printf("so la so 0 \n");
if(x<0) printf("so %d la so
am\n",x);
if(x>0) printf("so %d la so
duong",x);
}
Cách 2:
#include<stdio.h>
#include<conio.h>
main()
{
int x;
printf("nhap x=");
scanf("%d",&x); if(x==0)
printf("so la so 0 \n");
else if(x<0) printf("so %d la so am\n",x);
else
printf("so %d la so duong",x);
}
lOMoARcPSD| 46342576
Ví dụ 3.2 Nhập 1 số cho biết số ó là số dương hay số âm hay số 0. Nếu là số
dương thì tăng giá trị ó lên 1 ơn vị; Nếu là số âm thì giảm giá trị ó 1 ơn v; Nếu
là số 0 thì giữ nguyên.
#include<stdio.h>
#include<conio.h>
main()
{
int x; int
y,t; printf("nhap
x=");
scanf("%d",&x);
if(x>0)
{
printf("so %d la so duong \n",x);
y=x+1;
printf("so %d sau khi tang 1 don vi la %d \n",x,y);
}
else
if(x<0)
{
printf("so %d la so am\n ",x);
t=x-1;
printf("so %d sau khi giam 1 don vi la %d\n",x,t);
}
else
printf("so vua nhap la so 0");
}
Ví dụ 3.3: Nhập vào 1 số từ 1-12. In ra quý tương ứng. Ngoài các số này, chương trình
sẽ in ra thông báo: Bạn phải nhập số từ 1..12.
#include<stdio.h>
#include<conio.h>
main()
{ int thang;
switch(thang)
{ case 1:
case
2:
case 3: printf(“\n Qui 1 “); break;
case 4: case 5:
case 6: printf(“\n Qui 2 “); break;
case 7: case 8:
case 9: printf(“\n Qui 3 “); break;
case 10: case 11:
lOMoARcPSD| 46342576
case 12: printf(“\n Qui 4 “); break; default:
printf(“\n Bn phi nhp thÆng từ 1-12”);
}
getch()
; }
Bài Tập
Bài 1: Viết chương trình tìm số lớn nhất giữa 3 số a,b,c.
Bài 2: Viết chương trình giải phương trình bậc nhất ax+b=0
Bài 3: Viết chương trình giải phương trình bậc 2: ax
2
+ bx +c = 0 (xét trường hợp a=0
a ≠ 0)
Bài 4: Viết chương trình nhập vào iểm Toán, Lý và Hóa của một sinh viên. Sau ó tính và
xuất ra màn hình iểm trung bình cùng kết quả xếp loại của sinh viên này biết:
dtb<4: Loại F 4<=dtb<5.5:
Loại D
5.5<=dtb<7: Loại C
7<=dtb<8.5: Loại B
8.5<=dtb<=10: Loại A
Bài 5: Viết chương trình nhập vào tháng, in ra tháng ó có bao nhiêu ngày.
Hướng dẫn: Nhập vào tháng
Nếu là tháng 1, 3, 5, 7, 8, 10, 12 thì có 30 ngày
Nếu là tháng 4, 6, 9, 11 thì có 31 ngày
Nếu là tháng 2 và là năm nhuận thì có 29 ngày ngược lại 28 ngày
(Năm nhuận là năm chia chẵn cho 4)
Bài 6: Viết chương trình nhập vào hai số nguyên a, b và 1 trong 4 toán tử +, -, *, /, nếu
toán tử là là + thì in ra kết quả x + y, nếu là – thì in ra x – y, nếu là * thì in ra x * y, nếu
là / thì in ra x / y (xét nếu y = 0 thì thông báo không chia ược).
- Sử dụng if…else
- Sử dụng switch
Chú ý:
- Sau if else là 1 câu lệnh nếu có nhiều hơn 1 câu lệnh phải bỏ vào cặp dấu {}.
- Nếu nhiều câu lệnh if (có else và không else) lồng nhau việc hiểu if và else nào i với
nhau cần phải chú ý. Qui tắc là else sẽ i với if gần nó nhất mà chưa ược ghép cặp với
else khác.
Bài Thực Hành Số 4 CẤU TRÚC LẶP
Sau khi học xong bài này sinh viên sẽ hiểu và vận dụng ược
- Ý nghĩa, hoạt ng, cú pháp ca các vòng lặp: for, while, do…while -
So sánh giữa các vòng lặp.
- Lệnh goto, break và continue.
- Các vòng lặp lồng nhau.
Ví dụ 4.1: Nhập n không âm, in ra các số từ n ến 0.
lOMoARcPSD| 46342576
#include<stdio.h>
#include<conio.h>
main()
{
int n,i;
printf("Nhap n: ");
scanf("%d",&n);
for( i=n; i>=0; i--)
printf("%d\t",i);
}
Ví dụ 4.2: Nhập n số dương, tính tổng các số từ 1 ến n
#include<stdio.h>
#include<conio.h>
main()
{
int n,i,s;
printf("Nhap n: ");
scanf("%d",&n);
s=0;
for( i=1; i<=n; i++)
s=s+i;
printf("\nTong cac so tu 1 den %d la %d",n,s);
}
Ví dụ 4.3: Đếm và in tổng các số chẵn từ 1 ến n
#include<stdio.h>
#include<conio.h>
main()
{
int n,i,dem;
printf("Nhap n: ");
scanf("%d",&n);
dem=0;
printf("cac so chan tu 1 den n la: ");
for( i=1; i<=n; i++)
if(i%2==0)
{
dem=dem+1;
printf("%d \t",i);
}
printf("\n co %d so chan tu 1 den %d",dem,n);
}
Ví dụ 4.4 : Viết chương trình nhp vào 1 số ến khi nào nhập số âm thì dừng lại
lOMoARcPSD| 46342576
#include<conio.h>
#include<stdio.h>
main()
{
int a;
while(a>=0)
{
printf("nhap vao 1 so:");
scanf("%d",&a);
}
}
Ví dụ 4.5: Viết chương trình nhập vào 1 số; Nếu số nhập là số không dương thì
nhập lại. In số vừa nhập ra màn hình
#include<stdio.h>
#include<conio.h
> main() { int
so; do
{
printf("\nNhap so = ");
scanf("%d", &so);
}while(so < 1);
printf("\n so duong da nhap la = %d", so);
}
Ví dụ 4.6: Viết chương trình nhập vào 1 số, cho ến khi nhập số âm thì dừng lại
#include<stdio.h> main()
{
int n;
while(1)
{
printf("Nhap so thu n: ");
scanf("%d",&n);
if(n<0) break;
}
}
Ví dụ 4.7: Viết chương trình in các số từ 1 10 bỏ qua các số
2 và 5
#includ
e<stdio
.h>
#includ
e<coni
o.h>
main()
{
int i;
for(i=1; i<=10; i++)
{
if(i==2 || i==5)
continue;
printf("%d\t",i);
}
}
Ví dụ 4.8: Đọc ví dụ cho biết kết quả, sau ó chạy chương trình ể
kiểm tra kết qu
#includ
e<stdio
.h>
#includ
e<coni
o.h>
main()
{
int i,j;
for(i=
1;i<=2;i++)
for(j=
1;j<=3;j++)
printf("%d\t",i+j);
}
Bài tập
Bài 1: Viết chương trình nhập n (có kiểm tra iều kiện n) ể tính các tổng
sau:
a) S1= 1+3+5+…+(2*n+1).
b) S2= 2+4+6+…+2*n
c) S3= 1+1/2+1/3+….+1/n
d) S4= 1+ 1/2!+1/3!+…+1/n!
Bài 2: Nhập vào số nguyên dương n, hãy in ra các ước số của n.
Bài 3: Kiểm tra xem một số nguyên dương n có phải là số hoàn hảo
hay không? (S hoàn hảo là số có tổng tất cả các ước số bằng hai lần
chính nó).
Bài 4: Kiểm tra xem một số nguyên dương n có là số nguyên tố hay
không?
Bài 5: Nhập vào 1 số n nguyên dương. In ra số ngược lại. Ví dụ
n=123, in ra 321.
Bài 6: Tính tổng của các chữ số của một số tự nhiên n. Đếm xem n có
bao nhiêu chữ số.
HD: Dùng vòng lặp: Để lấy chữ số hàng ơn vị, ta thực hiện phép lấy
phần dư:
dv=n%10; Sau ó, cộng vào tổng: s+= dv; sau ó, Tăng biến ếm dem++ (
ể tính số chữ số), tiếp tục chia số n/10 ể lấy hàng chục, rồi cộng vào s,
tiếp tục lặp cho ến khi n=0 (tức ã lấy hết các chữ s của n).
Bài 7: Nhập s n gồm k chữ số, tính giá trị trung bình các chữ số ca
n. Ví dụ: n=1234.
In ra TB= 2.50
HD: Tương tự bài 6 nhưng thêm phần tính giá trị trung bình các chữ số ược
xác ịnh:
TB= (float)s/dem;
Bài 8: Viết chương trình giải bài toán cổ:
Vừa gà vừa chó
Bó lại cho tròn
36 con, 100 chân chẵn
Hỏi có bao nhiêu gà, bao nhiêu chó?
HD:
Gọi x l sg
, y l sch
x>0 v y>0
x+y=36
, x<36
2x+4y=100 -> 4y<100 -> y<25
for(x=1;x<36;x++)
for(y=1;y<25;y++)
if(2*x+4*y==100 &&
x+y==36)
printf(“(“\nSg : %d, v sch : %d”,x,y);
Bài 9: Viết chương trình in ra
bảng cửu chương. Bài 10:
Viết chương trình in ra dãy
Fibonaci f1 = f0 =1 ; fn = fn-
1 + fn-2 ; (n>1)
Chú ý:
Bài Thực Hành Số 5
HÀM VÀ CẤU TRÚC CHƯƠNG TRÌNH
Sau khi thực hành xong bài này, sinh viên sẽ hiểu và vận dụng ược :
- Cách khai báo hàm, gọi hàm.
- Sử dụng biến cục bộ, biến toàn cục trong hàm
- Phân biệt hàm không có tham số và hàm có tham số
Ví dụ 5.1 : Viết và chạy chương trình sau :
#include<stdio.h>
#include<conio.h>
void chamngon()
{
printf("\ncon duong thanh cong khong co buoc chan ke luoi bieng");
}
m
a
i
n
(
)
{
printf("\n Moi luc nhac hoc hay
nho"); chamngon();
printf("\nMoi khi buon ngu hay
nho"); chamngon();
}
Ví dụ 5.2 : Viết chương trình tìm số lớn nhất giữa
2 số a và b Cách 1 :
#include<stdio.h>
#include<conio.h>
void tsln(int a,int b)
{
int
max
;
max
=a;
if(b
>ma
x)
max=b;
printf("so lon nhat giua 2 so la %d",max);
}
m
a
i
n
(
)
{
int c,d;
printf("nhap 2
so c, d: ");
scanf("%d%d",&c,&
d); tsln(c,d);
}
Cách 2 :
#include<stdio.h>
#include<conio.h>
int sln(int a,int b,int c)
{
int
max
;
max
=a;
if(b
>ma
x)
max=b;
if(c>max)
max=c;
return max;
}
m
a
i
n
(
)
{
int x,y,z;
printf("nhap vao 3 so");
scanf("%d%d%d",&x,&y,&z);
printf("so lon nhat giua 3 so la : %d",sln(x,y,z));
}
Bài tập
Bài 1 : Viết hàm tính n !
Bài 2: Viết hàm tính diện tích hình tròn và hình thang, hình chữ nhật. Hãy
viết hàm menu ể cho phép người dùng lựa chọn ể tính diện tích từng hình.
HD: Sử dụng cấu trúc switch ể lựa chọn giá trị người dùng nhập vào.
Bài 4: Viết hàm kiểm tra n có phải là số hoàn hảo hay không?
Bài 5: Xây dựng hàm kiểm tra số n phải là số nguyên tố hay không. In
ra các số nguyên tố <1000.
Bài 6: Xây dựng hàm tính UCLN và BCNN
Bài Thực Hành Số 6 CON TRỎ
Thực hành xong bài này sinh viên sẽ hiểu và vận dụng ược : -
Cách khai báo con tr
- Gán giá trị cho con trỏ
- Bản chất của con trỏ trong chương trình
Ví dụ 1: Viết chương trình tính tổng của 2 số với x là biến con trỏ và
y là biến thường
#incl
ude<s
tdio.h
>
#incl
ude<
conio
.h>
int
cong
2so(i
nt
*x,int
y)
{
y=y+*
x;
*x=*x
+y;

Preview text:

lOMoAR cPSD| 46342576
ĐẠI HỌC ĐÀ NẴNG
TRƯỜNG ĐH SƯ PHẠM KĨ THUẬT KHOA ĐIỆN – ĐIỆN TỬ
BỘ MÔN CÔNG NGHỆ THÔNG TIN -----  -----
GIÁO TRÌNH THỰC HÀNH
Giảng viên: Phạm Thị Trà My lOMoAR cPSD| 46342576 LỜI NÓI ĐẦU
Cuốn “ Giáo Trình Thực Hành Kỹ Thuật Lập Trình” nhằm giúp sinh viên trường Đại học Sư
phạm Kỹ thuật Đà Nẵng vận dụng những kiến thức lý thuyết vào từng bài thực hành. Cung cấp
cho sinh viên hệ thống các bài tập, những kĩ năng thực hành về ngôn ngữ lập trình C. Cuốn này
ược xem như là tài liệu hướng dẫn thực hành cho sinh viên trong học phần thực hành kỹ thuật lập trình.
Trong từng bài thực hành sẽ có 3 phần:
Ví dụ: Những kiến thức lí thuyết sẽ ược ưa vào ví dụ ể sinh viên ôn lại lí thuyết qua từng ví dụ cụ thể
Phần bài tập: với nhiều bài tập ược chia làm hai mức ộ cơ bản và nâng cao ể sinh viên vận dụng
kiến thức lí thuyết ể giải quyết vào từng bài tập Phần lưu ý: Những lưu ý sinh viên cần nắm trong bài
Bài Thực Hành Số 1 LÀM QUEN VỚI PHẦN MỀM Dev – C++
Sau khi thực hành xong bài này sinh viên biết ược cách thực thi một chương trình ược viết trên
trình biên dịch ngôn ngữ C, C++ bao gồm các bước: Tạo file/ project; soạn thảo mã nguồn; Chạy
thử và kiểm tra kết quả; Debug ( nếu cần).
Bước 1: Tạo file/project mới
Khởi ộng phần mềm lên bằng cách click chuột vào biểu tượng icon của Dev – C++ ngoài Desktop lOMoAR cPSD| 46342576
Đây là giao diện của Dev-C++
Trong trường hợp chương trình ơn giản, chúng ta chỉ cần 1 file ể lưu mã nguồn, khi ó chúng
ta chọn menu File  New  Source File (Ctrl-N) . Và nhập mã nguồn trực tiếp vào file.
Đối với chương trình C/C++ phức tạp, 1 chương trình cần nhiều file ể thực hiện thì DevCPP
có khái niệm dự án (project). Project là nơi cất giữ tất cả những thông tin liên quan ến mã
nguồn, thư viện, tài nguyên,… ể biên dịch thành chương trình. • Để tạo Project mới, vào
menu "File" chọn "New", "Project...". lOMoAR cPSD| 46342576
• Chọn "Console Application" và chọn "C project" nếu là lập trình C, Chọn “C++ Project” nếu
là C++. Nhập tên project, tên project cũng là tên của file thực thi (.exe) sẽ tạo ra khi biên dịch.
• Nhấn "OK". Dev-C++ sẽ hỏi nơi lưu trữ project. Nhấn "OK".
Bước 2: Soạn thảo mã nguồn
Nếu là chương trình ơn giản thì chúng ta bắt tay ngay vào việc nhập mã nguồn chương trình Nếu
là chương trình phức tạp, chúng ta có 2 cách thêm mã nguồn vào dự án.
• Vào menu "File" chọn "New Source File" (CTRL+N).
• Vào menu "Project" chọn "New File".
Dev-C++ sẽ không hỏi tên file cho ến khi chúng ta thực hiện: o Compile o Save the project o Save the source file o Exit Dev-C++
Bạn cũng có thể thêm file nguồn có sẵn bằng 1 trong 2 phương pháp sau:
• Vào menu "Project" chọn "Add to Project".
• Nhấn phím phải chuột vào project name ở khung bên trái và chọn "Add to Project".
Các quy tắc soạn thảo gần giống với chương trình soạn thảo văn bản chuấn (Word,…). Một vài tính năng như: • Undo • Redo • Copy • Paste • Cut • Select All • …
Tham khảo menu Edit ể biết chi tiết và các phím tắt trong khi soạn thảo. lOMoAR cPSD| 46342576
Bước 3: Chạy thử và kiểm tra kết quả
Sau khi nhập file nguồn xong
Để biên dịch chúng ta thực hiệnVào menu "Execute" chọn "Compile" (F9). ▪
Để thực thi chương trình Vào menu “Excute” chọn run (F10)
▪ Để thực hiện ồng thời vừa biên dịch và chạy chương trình  Vào menu chọn Compile & Run (F11) ▪
Bước 4: Debug. (Nếu cần)
Khi viết chương trình thường hay có những lỗi xảy ra mà không hề hiển thị trên khung
báo lỗi hoặc muốn xem giá trị các biến, cách thức hoạt ộng của chương trình . Lúc này cần phải
dùng ến chức năng debug. Vậy, debug là một chức năng cho phép chúng ta xem ược giá trị của
các biến và cách hoạt ộng của chương trình ể hiểu chương trình hơn. Kĩ thuật debug: -
Trước khi debug cần phải compile file nguồn lOMoAR cPSD| 46342576 -
Để con trỏ vào phần ầu tiên trong hàm main (). Rồi click chuột vào thanh dọc màu
nâu. Lúc này dấu Breakpoint màu ỏ xuất hiện hay chúng ta muốn chương trình chạy debug
bắt ầu từ dòng lệnh nào thì chúng ta ặt dấu Breakpoint tại vị trí ó. -
Vào menu “Execute” và chọn Debug (F5) -
Nhấn Next Step (F7) ể chương trình chạy bước tiếp theo lOMoAR cPSD| 46342576 -
Để theo dõi biến nào chọn Add watch, nhập tên biến và Enter, giá trị của biến cần
theo dõi sẽ hiện ra trong tab Debug ở phần khung bên trái. Muốn bỏ theo dõi một biến bạn
chọn biến ó và cọn Remove Watch. Khi gọi 1 hàm, nếu chọn Next Step thì chương trình sẽ
tự ộng thực hiện hàm ó (không debug hàm), còn nếu nhấn Step into (Shift + F7) thì con trỏ
debug sẽ chuyển vào trong thân hàm ược gọi và tiến hành debug hàm ó - Muốn dừng Debug
bạn chọn Stop Execution (Ctrl + Alt + F12). -
Chú ý: Dev C ++ là một trong những trình biên dịch cho ngôn ngữ lập trình C
ngoài ra còn có các trình biên dịch khác có thể chạy C như Turbo C, Microsoft Visual Studio,
Eclipse,.. Mỗi trình biên dịch ều có ưu và nhược iểm riêng.

Bài Thực Hành Số 2 CÁC LỆNH NHẬP XUẤT
Sau khi thực hành xong bài này, sinh viên sẽ nắm ược và vận dụng:
- Ý nghĩa, cách sử dụng hàm printf, scanf
- Sử dụng ịnh dạng, ký tự ặc biệt, ký tự iều khiển trong printf, scanf.
Ví dụ 2.1: In giá trị của các biến ra màn hình #include main() { int a=12,b=17;
printf("Con duong thanh cong \n");
printf("%s \n","Khong co buoc chan cua ke luoi bieng");
printf("kieu nguyen, kieu thuc, kieu ki tu: %d, %f, %c \n", 2, 2.1,'M');
printf("123456789\n"); printf("%4d\n",a); printf("%-4d\n",a); printf("%02d\n",a); printf("%05d\n",a); printf("%02d\n",b); printf("%1d\n",b); printf ("%.2f\n", 3.1415929); printf("%6.1f\n",3.1515929); }
Ví dụ 2.2: Nhập và in giá trị của các biến ra màn hình #include #include main () { lOMoAR cPSD| 46342576
printf ("Lam quen voi ham scanf!\n"); int a; float b; char my[100];
printf ("Nhap vao so nguyen va so thuc: ");
scanf ("%d %f", &a, &b);
printf ("So nguyen vua nhap: %d\nSo thuc vua nhap: %f\n", a, b); getchar();
printf ("Nhap vao ho ten cua ban: ");
//scanf("%s",my); ???? fgets(my,
sizeof my, stdin); printf("ho ten ban la:"); printf("%s", my); } Bài tập:
Bài 1: Viết chương trình nhập vào 2 số nguyên a, b. In ra kết quả của phép +, -, *, / và % (phép lấy dư) của a và b.
Nhận xét kết quả của phép chia a và b.
=>Sửa lại phép chia cho úng?
Bài 2: Viết chương trình tính diện tích các hình sau: a. Hình chữ nhật: S=a*b b. Hình thang: S=((a+b)*h)/2
c. Hình tròn: S= PI * r * r với PI=3.14 (PI ược khai báo là hằng số)
Bài 3: Viết chương trình nhập vào một số thực x và tính giá trị y của các biểu thức sau:
a) y= ex −1 x−1
b) y=3x − +3 x 1
c) y= + +(x 1)5 3 x
d) y= ex + −5 x
HD : Sử dụng các hàm có trong C ể tính giá trị cho y. pow(double x,double y) – tính xy ;
exp(x) – tính ex, hàm fabs(x) –tính trị tuyệt ối của một số thực x (|x|); hàm sqrt(x) – tính căn bậc 2 của x.
Ví dụ với y=x7.ex + 3x – 8 thì y=pow(x,7)*exp(x)+3*x-8
Bài 4: Nhập vào 2 số nguyên a, b. Hãy in ra màn hình số lớn hơn. HD: Sử dụng biểu thức ? : max= a>=b ? a: b
Bài 5: Nhập vào một số kiểu nguyên có 3 chữ số, hãy in ra các chữ số ở hàng trăm, chục, ơn vị.
Chú ý: Những lỗi sinh viên thường gặp phải trong bài thực hành số 2 này: lOMoAR cPSD| 46342576
o Không truyền tham chiếu vào hàm scanf ( phải thêm toán tử & vào trước tên biến).
o Sử dụng biến mà quên khai báo (phải xác ịnh input và output của bài toán ể khai
báo trước khi viết code)
o Thiếu dấu chẩm phẩy “;” khi kết thúc dòng lệnh
Bài Thực Hành Số 3 CẤU TRÚC RẼ NHÁNH
Sau khi thực hành xong các bài này, sinh viên sẽ hiểu và vận dụng ược:
- Ý nghĩa, cú pháp các lệnh if, if…else, switch. -
Cách sử dụng các cấu trúc if…else lồng nhau - So
sánh sử dụng if và switch.
Ví dụ 3.1 Nhập vào 1 số cho biết số ó là số dương hay số âm hay số 0 Cách 1: #include #include main() { int x; printf("nhap x="); scanf("%d",&x); if(x==0) printf("so la so 0 \n");
if(x<0) printf("so %d la so am\n",x);
if(x>0) printf("so %d la so duong",x); } Cách 2: #include #include main() { int x; printf("nhap x="); scanf("%d",&x); if(x==0) printf("so la so 0 \n");
else if(x<0) printf("so %d la so am\n",x); else
printf("so %d la so duong",x); } lOMoAR cPSD| 46342576
Ví dụ 3.2 Nhập 1 số cho biết số ó là số dương hay số âm hay là số 0. Nếu là số
dương thì tăng giá trị ó lên 1 ơn vị; Nếu là số âm thì giảm giá trị ó 1 ơn vị; Nếu
là số 0 thì giữ nguyên.
#include #include main() { int x; int y,t; printf("nhap x="); scanf("%d",&x); if(x>0) {
printf("so %d la so duong \n",x); y=x+1;
printf("so %d sau khi tang 1 don vi la %d \n",x,y); } else if(x<0) {
printf("so %d la so am\n ",x); t=x-1;
printf("so %d sau khi giam 1 don vi la %d\n",x,t); } else
printf("so vua nhap la so 0"); }
Ví dụ 3.3: Nhập vào 1 số từ 1-12. In ra quý tương ứng. Ngoài các số này, chương trình
sẽ in ra thông báo: Bạn phải nhập số từ 1..12.
#include #include main() { int thang; switch(thang) { case 1: case 2:
case 3: printf(“\n Qui 1 “); break; case 4: case 5:
case 6: printf(“\n Qui 2 “); break; case 7: case 8:
case 9: printf(“\n Qui 3 “); break; case 10: case 11: lOMoAR cPSD| 46342576
case 12: printf(“\n Qui 4 “); break; default:
printf(“\n Bạn phải nhập thÆng từ 1-12”); } getch() ; } Bài Tập
Bài 1:
Viết chương trình tìm số lớn nhất giữa 3 số a,b,c.
Bài 2: Viết chương trình giải phương trình bậc nhất ax+b=0
Bài 3: Viết chương trình giải phương trình bậc 2: ax2 + bx +c = 0 (xét trường hợp a=0 và a ≠ 0)
Bài 4: Viết chương trình nhập vào iểm Toán, Lý và Hóa của một sinh viên. Sau ó tính và
xuất ra màn hình iểm trung bình cùng kết quả xếp loại của sinh viên này biết:
dtb<4: Loại F 4<=dtb<5.5: Loại D 5.5<=dtb<7: Loại C 7<=dtb<8.5: Loại B 8.5<=dtb<=10: Loại A
Bài 5: Viết chương trình nhập vào tháng, in ra tháng ó có bao nhiêu ngày.
Hướng dẫn: Nhập vào tháng
Nếu là tháng 1, 3, 5, 7, 8, 10, 12 thì có 30 ngày
Nếu là tháng 4, 6, 9, 11 thì có 31 ngày
Nếu là tháng 2 và là năm nhuận thì có 29 ngày ngược lại 28 ngày
(Năm nhuận là năm chia chẵn cho 4)
Bài 6: Viết chương trình nhập vào hai số nguyên a, b và 1 trong 4 toán tử +, -, *, /, nếu
toán tử là là + thì in ra kết quả x + y, nếu là – thì in ra x – y, nếu là * thì in ra x * y, nếu
là / thì in ra x / y (xét nếu y = 0 thì thông báo không chia ược). - Sử dụng if…else - Sử dụng switch Chú ý:
- Sau if else là 1 câu lệnh nếu có nhiều hơn 1 câu lệnh phải bỏ vào cặp dấu {}.
- Nếu nhiều câu lệnh if (có else và không else) lồng nhau việc hiểu if và else nào i với
nhau cần phải chú ý. Qui tắc là else sẽ i với if gần nó nhất mà chưa ược ghép cặp với else khác.
Bài Thực Hành Số 4 CẤU TRÚC LẶP
Sau khi học xong bài này sinh viên sẽ hiểu và vận dụng ược
- Ý nghĩa, hoạt ộng, cú pháp của các vòng lặp: for, while, do…while -
So sánh giữa các vòng lặp.
- Lệnh goto, break và continue.
- Các vòng lặp lồng nhau.
Ví dụ 4.1: Nhập n không âm, in ra các số từ n ến 0. lOMoAR cPSD| 46342576 #include #include main() { int n,i; printf("Nhap n: "); scanf("%d",&n); for( i=n; i>=0; i--) printf("%d\t",i); }
Ví dụ 4.2: Nhập n số dương, tính tổng các số từ 1 ến n #include #include main() { int n,i,s; printf("Nhap n: "); scanf("%d",&n); s=0; for( i=1; i<=n; i++) s=s+i;
printf("\nTong cac so tu 1 den %d la %d",n,s); }
Ví dụ 4.3: Đếm và in tổng các số chẵn từ 1 ến n #include #include main() { int n,i,dem; printf("Nhap n: "); scanf("%d",&n); dem=0;
printf("cac so chan tu 1 den n la: "); for( i=1; i<=n; i++) if(i%2==0) { dem=dem+1; printf("%d \t",i); }
printf("\n co %d so chan tu 1 den %d",dem,n); }
Ví dụ 4.4 : Viết chương trình nhập vào 1 số ến khi nào nhập số âm thì dừng lại lOMoAR cPSD| 46342576 #include #include main() { int a; while(a>=0) { printf("nhap vao 1 so:"); scanf("%d",&a); } }
Ví dụ 4.5: Viết chương trình nhập vào 1 số; Nếu số nhập là số không dương thì
nhập lại. In số vừa nhập ra màn hình #include #include> main() { int so; do { printf("\nNhap so = "); scanf("%d", &so); }while(so < 1);
printf("\n so duong da nhap la = %d", so); }
Ví dụ 4.6: Viết chương trình nhập vào 1 số, cho ến khi nhập số âm thì dừng lại #include main() { int n; while(1) { printf("Nhap so thu n: "); scanf("%d",&n); if(n<0) break; } }
Ví dụ 4.7: Viết chương trình in các số từ 1 10 bỏ qua các số 2 và 5 #includ e.h> #includ eo.h> main() { int i; for(i=1; i<=10; i++) { if(i==2 || i==5) continue; printf("%d\t",i); } }
Ví dụ 4.8: Đọc ví dụ cho biết kết quả, sau ó chạy chương trình ể kiểm tra kết quả #includ e.h> #includ eo.h> main() { int i,j; for(i= 1;i<=2;i++) for(j= 1;j<=3;j++) printf("%d\t",i+j); } Bài tập
Bài 1: Viết chương trình nhập n (có kiểm tra iều kiện n) ể tính các tổng sau: a) S1= 1+3+5+…+(2*n+1). b) S2= 2+4+6+…+2*n c) S3= 1+1/2+1/3+….+1/n d) S4= 1+ 1/2!+1/3!+…+1/n!
Bài 2: Nhập vào số nguyên dương n, hãy in ra các ước số của n.
Bài 3: Kiểm tra xem một số nguyên dương n có phải là số hoàn hảo
hay không? (Số hoàn hảo là số có tổng tất cả các ước số bằng hai lần chính nó).
Bài 4: Kiểm tra xem một số nguyên dương n có là số nguyên tố hay không?
Bài 5: Nhập vào 1 số n nguyên dương. In ra số ngược lại. Ví dụ n=123, in ra 321.
Bài 6: Tính tổng của các chữ số của một số tự nhiên n. Đếm xem n có bao nhiêu chữ số.
HD: Dùng vòng lặp: Để lấy chữ số hàng ơn vị, ta thực hiện phép lấy phần dư:
dv=n%10; Sau ó, cộng vào tổng: s+= dv; sau ó, Tăng biến ếm dem++ (
ể tính số chữ số), tiếp tục chia số n/10 ể lấy hàng chục, rồi cộng vào s,
tiếp tục lặp cho ến khi n=0 (tức ã lấy hết các chữ số của n).
Bài 7: Nhập số n gồm k chữ số, tính giá trị trung bình các chữ số của n. Ví dụ: n=1234. In ra TB= 2.50
HD: Tương tự bài 6 nhưng thêm phần tính giá trị trung bình các chữ số ược xác ịnh: TB= (float)s/dem;
Bài 8: Viết chương trình giải bài toán cổ: Vừa gà vừa chó Bó lại cho tròn 36 con, 100 chân chẵn
Hỏi có bao nhiêu gà, bao nhiêu chó? HD: Gọi x l số g , y l số ch x>0 v y>0 x+y=36 , x<36
2x+4y=100 -> 4y<100 -> y<25 for(x=1;x<36;x++) for(y=1;y<25;y++) if(2*x+4*y==100 && x+y==36)
printf(“(“\nSố g : %d, v số ch : %d”,x,y);
Bài 9: Viết chương trình in ra
bảng cửu chương. Bài 10:
Viết chương trình in ra dãy Fibonaci f1 = f0 =1 ; fn = fn- 1 + fn-2 ; (n>1) Chú ý: Bài Thực Hành Số 5
HÀM VÀ CẤU TRÚC CHƯƠNG TRÌNH
Sau khi thực hành xong bài này, sinh viên sẽ hiểu và vận dụng ược :
- Cách khai báo hàm, gọi hàm.
- Sử dụng biến cục bộ, biến toàn cục trong hàm
- Phân biệt hàm không có tham số và hàm có tham số
Ví dụ 5.1 : Viết và chạy chương trình sau : #include #include void chamngon() {
printf("\ncon duong thanh cong khong co buoc chan ke luoi bieng"); } m a i n ( ) {
printf("\n Moi luc nhac hoc hay nho"); chamngon();
printf("\nMoi khi buon ngu hay nho"); chamngon(); }
Ví dụ 5.2 : Viết chương trình tìm số lớn nhất giữa
2 số a và b Cách 1 : #include #include void tsln(int a,int b) { int max ; max =a; if(b >ma x) max=b;
printf("so lon nhat giua 2 so la %d",max); } m a i n ( ) { int c,d; printf("nhap 2 so c, d: "); scanf("%d%d",&c,& d); tsln(c,d); } Cách 2 : #include #include int sln(int a,int b,int c) { int max ; max =a; if(b >ma x) max=b; if(c>max) max=c; return max; } m a i n ( ) { int x,y,z; printf("nhap vao 3 so");
scanf("%d%d%d",&x,&y,&z);
printf("so lon nhat giua 3 so la : %d",sln(x,y,z)); } Bài tập
Bài 1
: Viết hàm tính n !
Bài 2: Viết hàm tính diện tích hình tròn và hình thang, hình chữ nhật. Hãy
viết hàm menu ể cho phép người dùng lựa chọn ể tính diện tích từng hình.
HD: Sử dụng cấu trúc switch ể lựa chọn giá trị người dùng nhập vào.
Bài 4: Viết hàm kiểm tra n có phải là số hoàn hảo hay không?
Bài 5: Xây dựng hàm kiểm tra số n có phải là số nguyên tố hay không. In
ra các số nguyên tố <1000.
Bài 6: Xây dựng hàm tính UCLN và BCNN
Bài Thực Hành Số 6 CON TRỎ
Thực hành xong bài này sinh viên sẽ hiểu và vận dụng ược : - Cách khai báo con trỏ
- Gán giá trị cho con trỏ
- Bản chất của con trỏ trong chương trình
Ví dụ 1: Viết chương trình tính tổng của 2 số với x là biến con trỏ và y là biến thường #incl udetdio.h > #incl ude< conio .h> int cong 2so(i nt *x,int y) { y=y+* x; *x=*x +y;