Các hàm trình bày màn hình nằm trong tập tin conio.h
VIII.1. Hàm di chuyển con trỏ :
• Mẫu : gotoxy(int x, int y);
• Công dụng : đặt con trỏ màn hình vào tọa độ (x,y) của màn hình. x là tọa độ cột có giá trị từ 1 đến 80, y là tọa độ cột có giá trị từ 1 đến 25
VIII.2. Haỡm xọa maỡn hỗnh clrscr() : (Clear Screen)
• Mẫu : clrscr();
• Công dụng : xóa toàn bộ màn hình và đặt con trỏ ở vị trí góc trên bên trái.
VIII.3. Haìm clreol() : (Clear End of line)
• Mẫu : clreol();
• Công dụng : xóa các kí tự nằm bên phải con trỏ.
VIII.4. Haìm delline():
• Mẫu : void delline(void);
• Công dụng : xóa dòng của cửa sổ đang chứa con trỏ.
Các hằng màu : được sử dụng với các hàm textcolor() và hàm textbackground()
Giạ trở Maỡu
0 BLACK Âen
1 BLUE Xanh lồ
2 GREEN Xanh lạ cáy
3 CYAN Xanh cẩm thạch
4 RED Âoí
5 MAGENTA Têa
6 BROWN Náu
7 LIGHTGRAY Xạm nhảt
8 DARKGRAY Xanh đậm
9 LIGHTBLUE Xanh nhảt
10 LIGHTGREEN Xanh lạ cáy nhảt
11 LIGHTCYAN Xanh cẩm thạch nhạt
12 LIGHTRED Âoí nhảt
13 LIGHTMAGENTA Têa nhảt
14 YELLOW Vaìng
15 WHITE Trắng
128 BLINK Nhấp nháy
VIII.5. Haìm textcolor() :
• Mẫu : void textcolor(int newcolor);
• Công dụng : chọn màu kí tự mới.
Newcolor có giá trị từ 0 đến 15 tương ứng với các màu ở bảng trên Để các kí tự nhấp nháy ta cộng thêm 128 vào giá trị màu.
Vê duû : textcolor(WHITE);
hoặc textcolor(15);
VIII.6. Haìm textbackground() :
• Mẫu : void textbackground(int color);
• Công dụng: chọn màu nền mới
Color có giá trị từ 0 đến 7 tương ứng với 8 màu ở bảng trên.
Vê duû :
#include <stdio.h>
#include <conio.h>
main() {
int x,y,i=0;
int attr;
char *s=”Da Nang”;
clrscr();
x=10;y=12;
while (s[i]!=’\0’)
{ gotoxy(x++,y++);
putch(s[i]);
i++; attr+=17;
textattr(attr);
} getch();
return 0;
}
VIII.7. Haìm highvideo(), lowvideo() vaì normvideo() :
Các hàm này điều khiển độ sáng của kí tự. highvideo() cho độ sáng lớn, lowvideo() cho độ sáng yếu, normvideo() cho độ sáng bình thường.
Vê duû : lowvideo(); printf(“ABC”);
normvideo(); printf(“ABC”);
VIII.8. Haìm textattr() :
• Mẫu : textattr(int newattr);
Trong õọ newattr laỡ byte maỵ họa thuọỹc tờnh maỡu.
B b b b f f f f
4 bit f là màu kí tự (foreground), 3 bit b là màu nền (background) và bit B xác lập nhấp nhạy.
• Công dụng : xác lập thuộc tính của kí tự trên màn hình.
VIII.9. Haìm wherex, wherey :
• Mẫu : int wherex();
int wherey();
• Giá trị trả về : Trả về giá trị là tọa độ hiện thời của con trỏ trên màn hình
VIII.10. Haìm printf, scanf, cprintf, cscanf :
Chức năng cprintf, cscanf gần giống như printf, scanf nhưng với các hàm cprintf, cscanf các kí tự hiện trên màn hình sẽ ảnh hưởng bởi câu lệnh textcolor, còn printf, scanf thì khọng.
VIII.11. Haìm window :
• Mẫu : window(int x1, int y1, int x2, int y2);
• Công dụng : tạo ra cửa sổ văn bản với các tọa độ như trên và đưa con trỏ về góc trên bên trái cửa sổ vừa tạo. Các lệnh ghi ra văn bản trên màn hình sẽ nằm trong cửa sổ này.
IX. Bài tập :
1. Viết chương trình nhập bán kính R và xuất ra màn hình thể tích, diện tích của hình cầu (V=4πR3/3, S=4πR2)
2. Viết chương trình nhập theo thứ tự các thông tin của một người (họ tên, tuổi, nghề nghiệp, địa chỉ,...) rồi xuất ra màn hình các thông tin đó.
Ch−ơng V. CÁC CÂU LỆNH ĐIỀU KHIỂN
Thông thường trong một chương trình, các câu lệnh được thực hiện tuần tự từ trên xuống. Tuy nhiên có nhiều khi ta lại muốn thay đổi trật tự trên nhờ sử dụng các câu lệnh điều khiển chương trình. Các câu lệnh điều khiển có thể làm cho các câu lệnh được thực hiện nhiều lần hoặc không lần nào cả.
Các câu lệnh điều khiển gồm có :
• câu lệnh rẽ nhánh : if...else ; switch
• câu lệnh nhảy không điều kiện
• câu lệnh vòng lặp
• câu lệnh hỗ trợ như break, continue.
I. Câu lệnh if .. else....:
I.1. Các dạng của câu lệnh if :
Dạng 1 : if (biểu thức) /* không có dấu chấm phẩy ở đây*/
lệnh_1;
Dạng 2 : if (biểu thức) lệnh_1;
else lệnh_2;
biểu thức
khối lệnh 1 T
F
Dạng 1 : nếu biểu thức có giá trị khác 0 (TRUE) thì thực hiện khối lệnh 1, nếu bằng 0 (FALSE) thì tiếp tục thực hiện lệnh tiếp theo sau lệnh if.
Dạng 2 : nếu biểu thức có giá trị khác 0 (TRUE) thì thực hiện khối lệnh 1, nếu bằng 0 (FALSE) thì thực hiện khối lệnh 2.
Biểu thức không nhất thiết phải là biểu thức so sánh mà có thể là biểu thức số học.
Ví dụ : tìm số lớn nhất và nhỏ nhất trong 2 số nhập từ bàn phím.
#include <stdio.h>
#include <conio.h>
main() {
float x,y,min,max;
printf(“Nhap so thuc thu nhat:”);scanf(“%f”,&x);
printf(“Nhap so thuc thu hai :”);scanf(“%f”,&y);
if ( x<y ) { min = x;
max = y;
} else
{ min = y;
max = x;
}
printf(“\n Gia tri lon nhat = %f, Gia tri nho nhat = %f”,max, min);
getch();
return 0;
}
Ta có thể thay thế lệnh trên bằng lệnh : min=(x<y)? x:y;
max=(x>y)? x:y;
I.2. Sự lồng nhau giữa các câu lệnh if:
Các câu lệnh if có thể lồng nhau : trong khối lệnh của câu lệnh if này có thể có câu lệnh if khác. Để tránh nhầm lẫn ta nên sử dụng dấu đóng mở khối lệnh.
biểu thức Khối lệnh 2
khối lệnh 1 T
F
Nếu số từ khóa if bằng số từ khóa else thì ta có tương ứng từng cặp if-else Nếu số từ khóa if nhiều hơn số từ khóa else thì else được gắn với if liền trước nó.
Vê duû : if (n>0) if (a>b) z=a;
else z=b;
Như vậy else sẽ gắn liền với if thứ hai.
Để chương trình trong sáng, ta cần tuân thủ :
• Ta nên sử dụng cặp dấu {} để chắc chắn không nhầm lẫn.
• Các câu lệnh, khối lệnh nằm trong một câu lệnh if nằm dịch về bên phải.
• Các câu lệnh, khối lệnh cùng cấp thì viết thẳng cột.
• Điểm đầu và điểm cuối của khối lệnh phải nằm thẳng cột.
Vê duû : if (n>0) if(a>b) z=a;
tương đương với : if ((n>0)&&(a>b)) z=a;
I.3. else if:
if (biểu thức 1) khối lệnh 1;
else if (biểu thức 2) khối lệnh 2;
...
else if ( biểu thức n) khối lệnh n;
else khối lệnh n+1;
Đối với câu lệnh này :
• Chỉ có 1 trong n+1 khối lệnh được thực hiện .
• Nếu biểu thức i là biểu thức đầu tiên khác 0 (TRUE) thì khối lệnh i được thực hiện
• Nếu cả n biểu thức đều bằng 0 (FALSE) thì khối lệnh n+1 được thực hiện.
Ví dụ : giải phương trình bậc 2
#include <stdio.h>
#include <conio.h>
#include <math.h>
main() {
float a,b,c,delta;
printf(“\nNhap vao 3 he so:”);
scanf(“%f%f%f”,&a,&b,&c);
if (a==0)
if (b==0) if (c==0)
printf(“\nPhuong trinh dung voi moi x”);
else printf(“\nPhuong trinh vo nghiem!”);
else printf(“\nPhuong trinh co 1 nghiem x: %f”,(-c) / b);
else {
delta=b*b-4*a*c;
if (delta<0.0)
printf(“\nPhuong trinh vo nghiem”);
else if (delta==0.0)
printf(“\nPhuong trinh co mot nghiem kep : x = %f”,-b/(2*a));
else { printf(“\nPhuong trinh co hai nghiem phan biet :”);
printf(“\nx1 = %f”, (-b+sqrt(delta))/(2*a));
printf(“\nx2 = %f”, (-b-sqrt(delta))/(2*a));
} } getch();
return 0;
}