SlideShare a Scribd company logo
1 of 12
CHƯƠNG 1 : CáC KHÁI NIỆM CƠ BẢN CỦA NGÔN NGỮ C
1.1/ Tập ký tự hợp lệ dùng trong ngôn ngữ C
- Các chữ cái : A, B, C ..., 2, a,n,c,...z ( 26 chữ cái thường)
- Các chữ số : 0,1,..., 9.
- Ký tự gạch nối _ ( chú ý phân biệt dấu - ).
- Dấu cách ( space) : dùng để phân biệt các từ :
Ví dụ : lop Học( 7 kí tự) - LopHoc( 6 kí tự).
1.2/ Tên ( định danh ) :
là 1 dãy kí tự bắt đầu bằng chữ hoặc ký tự gạch dưới, theo sau là chữ cái, chữ số
hoặc ký tự gạch nối (-).
- Tên : dùng làm tên hằnp, tên biến , nhãn , tên hàm....
Ví dụ : Tên đúng : _abc, Delta_1, BETA.
Tên sai : 1xyz ( vì bắt đầu là 1 chữ số )
A#B ( vì có dâu #)
Delta ( vì có khoảng trống) , X-1 (vì sử dụng dấu gạch ngang).
* Chú ý :
+ Tên : chữ hoa và chữ thường được xem là khác nhau
+ Thông thường :
. Ðặt chữ hoa cho hằng, chữ thường cho các đại lượng còn lại(biến, hàm..).
. Nên đặt 1 cách gợi nhớ ( 8 kí tự đầu có nghĩa và tuỳ thuộc chương trình ).
1.3/ Từ khoá :
là từ dành riêng cho ngôn ngữ. Tên biến, hằng, hàm ...không được trùng với từ
khoá, luôn luôn viết bằng chữ thường.
Các từ khoá trong C gồm : Break, char, continue, case, do, double, default, else,
float, for, goto, int,if, long, return, struct, switch, unsigned, while, typedef, union voi,
volatile,..
1.4/ Các kiểu dữ liệu cơ bản trong C :
4 kiểu : char, Int, float, double.
- Kiểu char (1 byte ) : biễu diễn 1 ký tự thuộc ASCII
Ký tù M· ASCII
1
0 048
1 049
2 050
A 065
B 066
a 097
b 098
Ph©n lo¹i ký tù : Cã thÓ chia 256 ký tù lµm ba nhãm :
Nhãm 1: Nhãm c¸c ký tù ®iÒu khiÓn cã m· tõ 0 ®Õn 31. Ch¼ng h¹n ký
tù m· 13 dïng ®Ó chuyÓn con trá vÒ ®Çu dßng, ký tù 10 chuyÓn con trá
xuèng dßng díi ( trªn cïng mét cét ). C¸c ký tù nhãm nµy nãi chung kh«ng hiÓn
thÞ ra mµn h×nh.
Nhãm 2 : Nhãm c¸c ký tù v¨n b¶n cã m· tõ 32 ®Õn 126. C¸c ký tù nµy cã
thÓ ®îc ®a ra mµn h×nh hoÆc m¸y in.
Nhãm 3 : Nhãm c¸c ký tù ®å ho¹ cã m· sè tõ 127 ®Õn 255. C¸c ký tù
nµy cã thÓ ®a ra mµn h×nh nhng kh«ng in ra ®îc ( b»ng c¸c lÖnh DOS ).
- Kiểu Int : 3 loại : Int, long Int ( long ) và unsigned Int ( unsigned). KÝch cì vµ
ph¹m vi biÓu diÔn cña chóng ®îc chØ ra trong b¶ng díi ®©y :
KiÓu Ph¹m vi biÓu diÔn KÝch thíc
int -32768 ®Õn 32767 2 byte
unsigned int 0 ®Õn 65535 2 byte
long -2147483648 ®Õn
2147483647
4 byte
unsigned
long
0 ®Õn 4294967295 4 byte
- Kiểu Float và Kiểu double : biễu diễn các số thực .
KiÓu Ph¹m vi biÓu diÔn Sè ch÷ sè cã nghÜa KÝch thíc
Float 3.4E-38 ®Õn 3.4E+38 7 ®Õn 8 4 byte
Double 1.7E-308 ®Õn
1.7E+308
15 ®Õn 16 8 byte
2
long
double
3.4E-4932 ®Õn
1.1E4932
17 ®Õn 18 10 byte
- Kiểu void : Kiểu không giá trị, củ dùng để biểu diễn kết quả hàm cũng như nội
dung củ pointer. Kiểu này sẽ nói chi tiết ở các phần liên quan.
1.5/ Biến và mảng :
a/ Biến :
Biến đại lượng thay đổi; mỗi biến có 1 tên và địa chỉ vùng nhờ danh riêng cho nó.
Khai báo biến :
Cú pháp < Kiểu dữ liệu > < Danh sách các biến >;
Ví dụ :
int i,j ;
long cucdai;
double tongsothue;
int a,b = 20;
float e = 35.1; x=30.5;
b/ Mảng:
Là tập hợp các phần tử có cùng 1 kiểu và chung 1 tên. Khai báo :
< Kiểu dữ liệu > < Tên mảng >;
Ví dụ :
int Mang1[ 10 ];
float Bang [10][10];
- Mảng một chiều : là một dãy các ký tự phần tử tuần tự trong bộ nhớ, mỗi một phần
tử chiếm một số byte tương ứng với kiểu của nó.
- Mảng nhiều chiều : Gồm các phần tử sắp liên tiếp từ hàng này sang hàng kia. Các
chỉ số được đánh số từ 0 trở đi.
Ví dụ :
- Mãng 1[0] ..Mãng1[9]
- Bang [0][0] Bang [0][1] .. Bang [0][9].
Bang[1][0] .. Bang[1][9]
.....
Bang[9][0] .. Bang[9][9]
* Chú ý : &Mang1[3] đúng nhưng &Bang[2][5]sai
3
( Ðúng đối với 1 chiều và sai đối với nhiều chiều)
1.6 / Hằng :
Ðại lượng không thay đổi
a/ Hằng nguyên ( Int ): có giá trị từ -32768 đến 32767
- Có thể viết theo hệ 16 bằng cách thêm tiền tố Ox hoặc theo cơ số 8 bằng cách
thêm tiền tố O ( Octal = bát phân ).
Ví dụ :
O306 viết theo cơ số 8 : Giá trị = 6 * 8 0 + 3* 8 * 8 = 198 trong hệ 10.
O345 = 3*8*8 + 4*8 + 5 = 229
Ox147 = 1*16*16 + 4*16 +7 =327 trong hệ 10.
OxAa= 10*16+13=173
b/ Hằng long ( long Int : nguyên lớn ) : giống như hằng nguyên, chỉ khác thêm L
hoặc l ở đầu.
Ví dụ :
180L, 123456789l
( Hằng nguyên là giá trị vượt quá số nguyên là hằng nguyên lớn (long)
c/ Hằng thực ( float và double ) : Có 2 cách viết
- Cách 1 : (dạng thập phân) Số gồm : phần nguyên, dấu chấm thập phân và phần
thập phân.
Ví dụ : 214.35 , - 234.34.
- Cách 2 : Viết theo dạng khoa học
Ví dụ : 1.543e7 = 15430000
123.456E-4 = 0.123456 ( 123.456/105)
d/ Hằng ký tự : Viết trong 2 dấu nháy đơn. Giá trị của hằng chính là mã ASCII .
Ví dụ : 'A' = 65; 'd' = 100, '9 ' - '0 ' = 57 - 48 = 9
- Hằng ký tự có thể viết X1X2X3 , x1x2x3 : trong đó x1,x2,x3 là số nguyên hệ 8.
Ví dụ : chữ a mã hệ 10 là 97 đổi ra hệ 8 là O141 => 141='a';  101='A';  142 ='b'
Một số hằng đặc biệt được viết theo qui ước như sau :
Viết Ký tự Diễn giải
'  " ' dấu nháy đơn
' " ' " dấu nháy kép
'  '  dấu chéo ngược
4
'n ' n ký tự xuống dòng
' 0 ' 0 ký tự rỗng ( null)
Chú ý :
- Phân biệt ký tự '0 ' và ' 0 '. Hằng ' 0 ' cùng với chữ số 0 có mã = 48
- Hằng '0 ' cùng với ký tự 0 (null) có mã 0.
- Hằng ký tự thực sự là số nguyên => có thể dùng số nguyên hệ 10 đê biểu diễn ký tự .
Ví dụ : printf( " %c%c", 65,66) sẽ in ra AB.
e/Hằng xâu ký tự : đặt trong dấu nháy kép ( " "). Hằng được lưu trữ trong 1 mãng
ký tự mà ký tự cuối cùng là rỗng (null) ' 0 '.
Ví dụ : "Lơp Hoc"
- Hằng có thể được đinh nghĩa đối với toán tử define .
Cú pháp : # define < tên hằng > < giá trị>
Trong chương trình mọi biến max đều được thay đổi giá trị 100.
Ví dụ :
# define MAX 100
# define pi 3.141593
1.7/ Phép toán :
+ Phép toán số học gồm :
,-,*, / ( Phép chia lấy phần nguyên ), % ( phép chia lấy phần dư).
+ Phép toán quan hệ : <, >, <=,>=, = =, ! = ( khác).
+ Phép toán logic :
|| ( hoặc ) , && ( và) ! ( not ), #0 hay =1 : True( đúng) ; =0 : Falsse ( sai)
+ Phép toán tăng giảm : ++ cộng thêm 1 vào toán hạng.
Ví dụ : int n=10; n++; tức là n=11 <=> n=n+1;
Chú ý :
- n++ : giá trị n được lấy trước khi tăng n.
- ++n : giá trị n được lấy sau khi tăng n
- tương tự n-- , --n ;
+ Toán tử thao tác bit : Không áp dụng cho kiểu float hoặc double.
& : phép hội các bít ( và)
| : phép tuyển các bit ( hoặc)
^ : phép tuyển các bit loại trừ
<< : phép dịch trái
>> : phép dịch phải.
5
: phép lấy phần bù.
Ví dụ :
105 & 7 = 1
0111 1001 & 0000 0111 = 0000 0001
105 | 17 = 127
0111 1001 | 0000 0111 = 0111.1111
+ Toán tử chuyển đổi kiểu : ta có thể dùng toán tử chuyển kiểu để chuyển 1 kiểu
bất kỳ sang kiểu mong muốn bằng cách dùng toán tử sắc thái ( cast) theo quy tắc sau :
ép Kiểu ( type cast ) : ( kiểu ) Biến Kiểu mong muốn
Ví dụ : int i = 10
và ( float ) i => 10.0
- Chú ý :
+ Một số kiểu float khi chuyển sang kiểu Int sẽ bị chặt cụt phần thập phân.
+Một số kiểu long khi chuyển sang kiểu Int sẽ cắt bỏ vài chữ số.
Ví dụ : n = 2560.70 thì (int)n = 2560
+ Toán tử gán : Cú pháp : < biến> = < biểu thức>
Ví dụ :
c = a + b ; d= t + 3 ;
i= i+2 (Viết gọn i+=2; )
i= i*2 (i*=2; )
x = x >> 1 (x >> = 1;)
Chú ý : Các phép toán trong C có độ ưu tiên khác nhau và quy tắc kết hợp khác nhau
Bảng liệt kê các phép toán theo thứ tự ưu tiên từ trên xuống dưới, các phép toán
trên dòng có thứ tự như nhau.
Phép toán Trình tự kết hợp
(),[ ], trái qua phải
|, dấu ngã, &*, - -, + + , ( type ) size of phải qua trái
*,/, % trái qua phải
+, - trái qua phải
<< ,>> trái qua phải
<,<= ,> ,>= trái qua phải
&, | , && , || trái qua phải
? phải qua trái
6
= =, !=, +=, -= phải qua trái
1.8/ Biểu thức : được xây dựng bằng các toán tử , toán hạng là các hằng, biến, hàm....
- Biểu thức gán : Ví dụ : A = B =C =5 => A=5, B = 5, C = 5.
- Biểu thức điều kiện có dạng : B1?E1 : E2 : Nếu B 1 đúng giá trị biểu thức = E1.
ngược lại E2.
Ví dụ : S=x>y ? x:y cho giá trị lớn nhất của x và y.
1.9/ Cấu trúc tổng quát của chương trình viết bằng ngôn ngữ C :
#include < Thuvien.h>
#define ....
/* Các khai báo kiểu dữ liệu, hằng */
Type of....
{ Các biến toàn cục, biến ngoài}
prototype { khai báo tiêu đề hàm}
void main ()
{ x1,x2,........xn}
Ví dụ : Viết chương trình số lớn nhất cho trước a, b, c
# include < stdio.h>
# include < conio.h>
void main ()
{
int n1,n2, n3, nmax ;
do
{
printf(" nhập số thứ nhất : "); scanf( " %d", &n1);
printf(" nhập số thứ hai : "); scanf( " %d", &n2);
printf(" nhập số thứ ba : "); scanf( " %d", &n3);
/* tìm số lớn nhất */
nmax = n1>n2 ? n1:n2;
nmax = nmax > n3 ? nmax : n3;
/* In ra kết quả */
printf ( " số lớn nhất trong 3 số %d%d%d là : %d  n ", n1,n2,n3 ,nmax);
printf ( " ấn ESC để kết thúc );
} while ( getch ()! = 27 );
}
2/ CÁC LỆNH XUẤT NHẬP CHUẩN:
2.1/ Hàm printf
7
printf (" formated string ", <biểu thức> );
Biểu thức có thể là : const ( hằng), var ( biến), function (hàm).
Ví dụ : int Siso= 30;
printf ( " In sĩ số lớp học là %d, Siso );
a/ Các ký tự điều khiển :
n : sang dòng mới
b : lùi lại 1 tab.
f : sang trang mới
t : dấu tab
' : In ra dấu '
" : in ra dấu "
  : in ra dấu 
2.2/ Hàm scanf :
scanf (" formated string ", các địa chỉ biến );
Ví dụ :
int a ;
float x,y;
char cr[6], ct[6];
scanf (" %f %5f3d%35%5 ", &x , &y , &a , c r, ct);
Nhập vào 5.4 25 124 523 48ab
Kết quả là : x=5.4 ; y=25.0; a = 124; cr= "523"; ct = "48ab"
CHƯƠNG 2 : CẤU TRÚC ÐIỀU KHIỂN VÀ VÒNG LẶP
3.1/
a/Khái niệm : mọi chương trình đều có thể biểu diễn qua 3 cấu trúc :
- tuần tự : mặc định ( default)
- lựa chọn ( lệnh if hoặc lệnh switch)
- lặp ( for, while hoặc do while)
b/ Khối lệnh : là tập hợp các câu lệnh được khai báo bởi 2 dấu { và } .
không đặt dấu chấm phẩy ( ; ) sau một khối lệnh trừ một vài trường hợp đặc biệt.
8
3.2 / Các câu lệnh
3.2.1 Lệnh if :
- Cú pháp : if ( biểu thức) < lệnh> ;
- Diễn giải : nếu Biểu thức đúng ( khác 0 ) --> thực hiện <lệnh>
ngược lại nếu biểu thức sai ( = 0 ) thực hiện lệnh đứng sau câu lệnh if.
if ( biểu thức) <lệnhA>;
else < lệnh B);
Ví dụ : tìm số lớn nhất trong 2 số a, b :
if (a<b)
max = b ;
else
max = a ;
* Cách khác : max = (a>b)? a:b;
- Chú ý : trong trường hợp có nhiều lệnh if lồng nhau thì else sẽ gắn liền với if gần
nhất.
if(bt1) <lệnh1>;
else
if (bt2)
if(bt3) < lệnh2>;
else <lệnh 3>; /* bt3 = = 0 */
else <lệnh 4>; /* bt2= = 0 */
Ví dụ : Viết chương trình giải phương trình bậc nhất : Ax + B = 0 (A, B : số thực).
Giải : Xét các trường hợp xảy ra :
- Nếu A! =0 thì nghiệm x = -B/A
- Nếu A = 0 +> B=0 => Nếu B=0 : vô số nghiệm
B != 0 ( ngược lại) : vô nghiệm.
/* Giải phương trình bậc nhất : Ax + B = 0 */
#Include <stdio.h>
#Include < conio.h>
void main ( )
{
float a, b ;
/* nhập dữ liệu từ bàn phím */
print ( " nhập 2 số a,b : "); scanf(" %f %f ", &a, &b);
/* giải phương trình*/
if ( a= = 0 )
if( b= =0 )
printf (" Phương trình có vô số nghiệm ! n " );
else
printf (" phương trình vô nghiệm n ");
else / * a khác 0 */
printf (" phương trình có nghiệm là : x= %f n ", -b/a);
getch();
}
9
Bài tập 1 : Tìm những lỗi cú pháp các đoạn chương trìnhh sau :
A/ scanf ( "d", value);
B/ printf ("tích các %d và %d là %d " n, x,y);
C/ printf (" phần dư của %d chia cho %d là n ", x , y , x%y );
D/ if(x=y);
printf (" %d bằng %d n ", x,y);
E/ if ( age>=65);
printf (" gia ì! ');
else
printf(' Tre! ');
3.2.2 Lệnh switch
- Cú pháp : Switch (biểu thức nguyên).
{
Case N1 : lệnh 1;
Case N2 : lệnh 2;
.....
[ default : lệnh;]
}
- Biểu thức nguyên là giá trị nguyên : Ni(i=1,2...) là các số nguyên.
- Với biểu thức khác với mọi Ni => thực hiện lệnh sau default.
- Chú ý : nếu nhóm câu lệnh sau nhãn case Ni không có câu lệnh break thì máy sẽ
chuyển sang nhóm câu lệnh sau nhãn case Ni+1
Ví dụ : đổi 1 số nguyên sang chuỗi ký tự là tên các môn học
#Include<stdio.h>
#Include<conio.h>
void main( )
{
int ma ;
do
{
printf(" n cho mã cần chuyển "); scanf(" %d ", &ma);
switch(ma)
{
case 0 : printf(" n lớp tin học a ");
break;
case 1 : printf( " n lớp tin học b");
break;
case 2 : printf(" n lớp trung cấp ");
break;
case 3 : printf (" n lóp chuyên viên ");
break;
default : printf( " n lợp thiế tiền học phí");
}
10
printf( " n có tiếp tục không ?(Y/N)");
}
while( toupper ( getch () ! = 'N '); /* Chuyển san ký tự hoa */
}
3.2.3 / Lệnh For :
- Cú pháp : for ( bt1; bt2 ; bt3) lệnh;
- Giải thích :
+ bt1 : là toán tử gán để tạo giá trị ban đầu cho biến điều khiển.
+ bt2 : biểu thức điều kiện để thực hiện vòng lặp.
+ bt3 : biểu thức tăng giá trị của biến điều khiển của vòng lặp.
Ví dụ : Tính Tổng S=1+2+3+..+n
S=0;
for ( i=1; i<=n; i++ )
#include <stdio.h>
#include<conio.h>
#include<math>
/* int i, j, t, n ; double gt, s; */
void main()
{
int i, s;
clrscr () ;
printf ("nhập n= ");
scanf(" %d ", &n);
s=0 ;
for (i=1; i<=n ; i++ )
s = s+i;
printf ( " tong s = %d ", s);
getch();
}
3.24/ Câu lệnh while :
- Cú pháp : while ( biểu thức 1) lệnh 1 ;
- Nguyên tắc thực hiện :
+b1. Tính giá trị của biểu thức 1.
+b2. Nếu giá trị của biểu thức 1 sai ( = 0 ) thì chương trình ra khỏi vòng while
+b3. Nếu giá trị của biểu thức đúng thì thực hiện lệnh 1 và quay lại bước 1(b1).
- Chú ý : Biểu thức 1 có thể gồm nhiều biểu thức nhưng tính đúng sai phụ thuộc vào
biểu thức cuối cùng.
3.25/ Câu lệnh Do while ( làm trước hỏi sau )
- Cú pháp : do lệnh 1 ;
while ( biểu thức 1 ) ;
- Nguyên tắc thực hiện :
11
+b1. Máy thực hiện câu lệnh 1 ;
+b2. Sau đó tính giá trị của biểu thức 1, nếu giá trị của biểu thức 1 sai thì chương trình
thoát ra khỏi vòng lặp. Nếu giá trị của biểu thức 1 đúng thì quay lại bước 1.
Chú ý : - while : Ðiều kiện được kiểm tra trước, nếu đúng mới thực hiện.
- do while : câu lệnh được thực hiện trước khi kiểm tra. Câu lệnh thực hiện bao giờ ít
nhất là 1 lần. ( do while ngược với
Repeat until của Pascal : lệnh Do while sai thì dừng, còn lệnh repeat until đúng thì
dừng ).
-Biểu thức 1 có thể gồm nhiều biểu thức, tuy nhiên tính đúng sai căn cứ theo biểu thức
cuối cùng.
3.2.6/ Câu lệnh Break :
- Cú pháp : Dùng để thoát khỏi vòng lặp. Khi gặp câu lệnh này trong vòng lặp, máy ra
khỏi và chỉ đến câu lệnh sau các lệnh trên. Nếu nhiều vòng lặp ----> break sẽ thoát ra
khỏi vòng lặp gần nhất.
3.3/ Toán tử goto và nhãn ( label );
- Ví dụ : tiep tuc : st = a[ i ]; => tiep tuc là nhãn của lệnh st = a [ i ];
- Lệnh goto nhãn => nhảy đến câu lệnh đứng sau nhãn.
- CHÚ Ý : PHẠM VI NHÃN TRONG CÙNG 1 HÀM.
BÀI TẬP CHƯƠNG 2
1/ Kiểm tra tìm lỗi :
while ( x<.= 10 )
Total t=x;
++x ;
2/ Giải phương trình bậc 2 : ax2 + bx + c = 0 với a, b, c là số thực nhập từ bàn phím.
3/ Nhập số liệu vào bàn phím, kết thúc nhập bằng cách ấn ^Z hoặc F6 ( mũ = 255 ).
Biết :
InWord = on khi ở trong 1 từ. InWord = off khi ngược lại. Ðếm số dòng, số từ, số ký
tự.
4/ Tìm các số nằm trong khoảng từ 150 đến 140 thoả tính chất số bằng tổng lập
phương các chữ số của chúng :
Ví dụ : 153 = 13 + 53 + 33 hoặc 370 = 33 + 73 + 03
5/ Số tuyệt hảo là số bằng tổng các ước số thực sự của nó. Ví dụ : 6 = 1 + 2 + 3.Tìm
các số tuyệt hảo trong khoảng từ 1 đến 3000.
6/Nhập số liệu vào mãng A gồm 10 phần tử và sắp xếp theo thứ tự tăng dần.
7/ Tìm tất cả các số nguyên tố từ 2 đến 100 bằng lệnh For.
8/ Tìm các số nguyên có 3 chữ số sao cho tổng 3 chữ bằng tích 3 chữ. Ví dụ : 123.
9/ a/ Dùng lệnh while để viết chương trình tính :
S1 = 1 x 3 x 5 x 7 x 9. . . . . x ( 2n - 1 ).
S2 = 2 x 4 x 6 x 8 x ......x (2n).
b/ làm lại bài trên bằng cách dùng do...while.
10/Giải bài toán cổ điển vừa gà vừa chó bó lại cho tròn 36 con 100 chân chẵn.
12

More Related Content

What's hot

Fortran cơ sở
Fortran cơ sởFortran cơ sở
Fortran cơ sởHajunior9x
 
Thu vien lap trinh c++
Thu vien lap trinh c++Thu vien lap trinh c++
Thu vien lap trinh c++ptquang160492
 
Phần 9: Chuỗi ký tự
Phần 9: Chuỗi ký tựPhần 9: Chuỗi ký tự
Phần 9: Chuỗi ký tựHuy Rùa
 
Bài 12: Kiểu xâu
Bài 12: Kiểu xâuBài 12: Kiểu xâu
Bài 12: Kiểu xâuMinh Lê
 
Code và sơ đồ khối môn Phương pháp số và lập trình Fortran
Code và sơ đồ khối môn Phương pháp số và lập trình FortranCode và sơ đồ khối môn Phương pháp số và lập trình Fortran
Code và sơ đồ khối môn Phương pháp số và lập trình FortranLee Ein
 
Cau hoi trac nghiem tin 11 hoc ky 2
Cau hoi trac nghiem tin 11   hoc ky 2Cau hoi trac nghiem tin 11   hoc ky 2
Cau hoi trac nghiem tin 11 hoc ky 2Nguyen Cong Nguyen
 
Huong dan su dung va debug voi dev c++
Huong dan su dung va debug voi dev c++Huong dan su dung va debug voi dev c++
Huong dan su dung va debug voi dev c++tuandong_ptit
 
Bai tap lap trinh c
Bai tap lap trinh  cBai tap lap trinh  c
Bai tap lap trinh ctiểu minh
 
Hướng dẫn làm bt về chuỗi.doc
Hướng dẫn làm bt về chuỗi.docHướng dẫn làm bt về chuỗi.doc
Hướng dẫn làm bt về chuỗi.docHoang Dinh Vu
 
chuỗi ký tự c++
chuỗi ký tự c++chuỗi ký tự c++
chuỗi ký tự c++ptquang160492
 
Bài tập nhập môn lập trình
Bài tập nhập môn lập trìnhBài tập nhập môn lập trình
Bài tập nhập môn lập trìnhHuy Rùa
 
Chuong13
Chuong13Chuong13
Chuong13na
 

What's hot (19)

Fortran cơ sở
Fortran cơ sởFortran cơ sở
Fortran cơ sở
 
Thu vien lap trinh c++
Thu vien lap trinh c++Thu vien lap trinh c++
Thu vien lap trinh c++
 
Phần 9: Chuỗi ký tự
Phần 9: Chuỗi ký tựPhần 9: Chuỗi ký tự
Phần 9: Chuỗi ký tự
 
Pointer
PointerPointer
Pointer
 
Thdc 07
Thdc 07Thdc 07
Thdc 07
 
Bài 12: Kiểu xâu
Bài 12: Kiểu xâuBài 12: Kiểu xâu
Bài 12: Kiểu xâu
 
Code và sơ đồ khối môn Phương pháp số và lập trình Fortran
Code và sơ đồ khối môn Phương pháp số và lập trình FortranCode và sơ đồ khối môn Phương pháp số và lập trình Fortran
Code và sơ đồ khối môn Phương pháp số và lập trình Fortran
 
Cau hoi trac nghiem tin 11 hoc ky 2
Cau hoi trac nghiem tin 11   hoc ky 2Cau hoi trac nghiem tin 11   hoc ky 2
Cau hoi trac nghiem tin 11 hoc ky 2
 
Kế toán Excel
Kế toán ExcelKế toán Excel
Kế toán Excel
 
Session 06
Session 06Session 06
Session 06
 
Huong dan su dung va debug voi dev c++
Huong dan su dung va debug voi dev c++Huong dan su dung va debug voi dev c++
Huong dan su dung va debug voi dev c++
 
Bai tap lap trinh c
Bai tap lap trinh  cBai tap lap trinh  c
Bai tap lap trinh c
 
Hướng dẫn làm bt về chuỗi.doc
Hướng dẫn làm bt về chuỗi.docHướng dẫn làm bt về chuỗi.doc
Hướng dẫn làm bt về chuỗi.doc
 
chuỗi ký tự c++
chuỗi ký tự c++chuỗi ký tự c++
chuỗi ký tự c++
 
Chuong 2
Chuong 2Chuong 2
Chuong 2
 
Bài tập nhập môn lập trình
Bài tập nhập môn lập trìnhBài tập nhập môn lập trình
Bài tập nhập môn lập trình
 
Debug trong c
Debug trong cDebug trong c
Debug trong c
 
Nmlt c09 chuoi_kytu
Nmlt c09 chuoi_kytuNmlt c09 chuoi_kytu
Nmlt c09 chuoi_kytu
 
Chuong13
Chuong13Chuong13
Chuong13
 

Similar to Bai giangtrenlop

LAP TRINH C - SESSION 2
LAP TRINH C - SESSION 2LAP TRINH C - SESSION 2
LAP TRINH C - SESSION 2pnanhvn
 
Chuong 1 Matlab co ban.pdf
Chuong 1 Matlab co ban.pdfChuong 1 Matlab co ban.pdf
Chuong 1 Matlab co ban.pdfHngTrn365275
 
Chuong 1 Matlab co ban.pdf
Chuong 1 Matlab co ban.pdfChuong 1 Matlab co ban.pdf
Chuong 1 Matlab co ban.pdfnguyenkaka2
 
Chuong 2 - Cac cau truc du lieu co ban.pptx
Chuong 2 - Cac cau truc du lieu co ban.pptxChuong 2 - Cac cau truc du lieu co ban.pptx
Chuong 2 - Cac cau truc du lieu co ban.pptxNhatMinh733974
 
Bài giảng Lập trình cơ bản - truongkinhtethucpham.com
Bài giảng Lập trình cơ bản - truongkinhtethucpham.comBài giảng Lập trình cơ bản - truongkinhtethucpham.com
Bài giảng Lập trình cơ bản - truongkinhtethucpham.commai_non
 
Phan2 chuong8 chuoikitu
Phan2 chuong8 chuoikituPhan2 chuong8 chuoikitu
Phan2 chuong8 chuoikituLy hai
 
Phan 2 chuong 8 (chuoi ky tu)
Phan 2   chuong 8 (chuoi ky tu)Phan 2   chuong 8 (chuoi ky tu)
Phan 2 chuong 8 (chuoi ky tu)Trần Văn Nam
 
Nhập môn lập trình - Vương Bá Thịnh
Nhập môn lập trình - Vương Bá ThịnhNhập môn lập trình - Vương Bá Thịnh
Nhập môn lập trình - Vương Bá Thịnhsilverclaw
 
ngon-ngu-lap-trinh-python_C1_cac_khai_niem_(PII).pptx
ngon-ngu-lap-trinh-python_C1_cac_khai_niem_(PII).pptxngon-ngu-lap-trinh-python_C1_cac_khai_niem_(PII).pptx
ngon-ngu-lap-trinh-python_C1_cac_khai_niem_(PII).pptxssuser49db3c1
 
Nmlt C03 Cac Kieu Du Lieu Co So
Nmlt C03 Cac Kieu Du Lieu Co SoNmlt C03 Cac Kieu Du Lieu Co So
Nmlt C03 Cac Kieu Du Lieu Co SoCuong
 

Similar to Bai giangtrenlop (20)

LAP TRINH C - SESSION 2
LAP TRINH C - SESSION 2LAP TRINH C - SESSION 2
LAP TRINH C - SESSION 2
 
Chuong 1 Matlab co ban.pdf
Chuong 1 Matlab co ban.pdfChuong 1 Matlab co ban.pdf
Chuong 1 Matlab co ban.pdf
 
Chuong 1 Matlab co ban.pdf
Chuong 1 Matlab co ban.pdfChuong 1 Matlab co ban.pdf
Chuong 1 Matlab co ban.pdf
 
Bai 12 kx
Bai 12 kxBai 12 kx
Bai 12 kx
 
Chuong 2 - Cac cau truc du lieu co ban.pptx
Chuong 2 - Cac cau truc du lieu co ban.pptxChuong 2 - Cac cau truc du lieu co ban.pptx
Chuong 2 - Cac cau truc du lieu co ban.pptx
 
String c++
String c++String c++
String c++
 
Chuong1 c
Chuong1 c Chuong1 c
Chuong1 c
 
Bài giảng Lập trình cơ bản - truongkinhtethucpham.com
Bài giảng Lập trình cơ bản - truongkinhtethucpham.comBài giảng Lập trình cơ bản - truongkinhtethucpham.com
Bài giảng Lập trình cơ bản - truongkinhtethucpham.com
 
Chuong 2@ngon ngu c
Chuong 2@ngon ngu cChuong 2@ngon ngu c
Chuong 2@ngon ngu c
 
Lesson 2 lý thuyết
Lesson 2 lý thuyếtLesson 2 lý thuyết
Lesson 2 lý thuyết
 
06 tong quan ve ngon ngu c
06 tong quan ve ngon ngu c06 tong quan ve ngon ngu c
06 tong quan ve ngon ngu c
 
Phan2 chuong8 chuoikitu
Phan2 chuong8 chuoikituPhan2 chuong8 chuoikitu
Phan2 chuong8 chuoikitu
 
C9 templates
C9 templatesC9 templates
C9 templates
 
C9 templates
C9 templatesC9 templates
C9 templates
 
Phan 2 chuong 8 (chuoi ky tu)
Phan 2   chuong 8 (chuoi ky tu)Phan 2   chuong 8 (chuoi ky tu)
Phan 2 chuong 8 (chuoi ky tu)
 
Nhập môn lập trình - Vương Bá Thịnh
Nhập môn lập trình - Vương Bá ThịnhNhập môn lập trình - Vương Bá Thịnh
Nhập môn lập trình - Vương Bá Thịnh
 
ngon-ngu-lap-trinh-python_C1_cac_khai_niem_(PII).pptx
ngon-ngu-lap-trinh-python_C1_cac_khai_niem_(PII).pptxngon-ngu-lap-trinh-python_C1_cac_khai_niem_(PII).pptx
ngon-ngu-lap-trinh-python_C1_cac_khai_niem_(PII).pptx
 
Session 11
Session 11Session 11
Session 11
 
Session 11
Session 11Session 11
Session 11
 
Nmlt C03 Cac Kieu Du Lieu Co So
Nmlt C03 Cac Kieu Du Lieu Co SoNmlt C03 Cac Kieu Du Lieu Co So
Nmlt C03 Cac Kieu Du Lieu Co So
 

More from Hồ Lợi

Tóm tắt các hàm chuẩn của c
Tóm tắt các hàm chuẩn của cTóm tắt các hàm chuẩn của c
Tóm tắt các hàm chuẩn của cHồ Lợi
 
Lect04 functions
Lect04 functionsLect04 functions
Lect04 functionsHồ Lợi
 
Ky thuatkhudequy
Ky thuatkhudequyKy thuatkhudequy
Ky thuatkhudequyHồ Lợi
 
Itt epc assignment
Itt epc assignmentItt epc assignment
Itt epc assignmentHồ Lợi
 
H hai epc_baitap
H hai epc_baitapH hai epc_baitap
H hai epc_baitapHồ Lợi
 
Giaotrinhbaitapkythuatlaptrinh
GiaotrinhbaitapkythuatlaptrinhGiaotrinhbaitapkythuatlaptrinh
GiaotrinhbaitapkythuatlaptrinhHồ Lợi
 
Giao trinh ky thuat lap trinh 2
Giao trinh ky thuat lap trinh 2Giao trinh ky thuat lap trinh 2
Giao trinh ky thuat lap trinh 2Hồ Lợi
 
Giao trinh c c++
Giao trinh c c++Giao trinh c c++
Giao trinh c c++Hồ Lợi
 
Epc assignment
Epc assignmentEpc assignment
Epc assignmentHồ Lợi
 
Epc test practical
Epc test practicalEpc test practical
Epc test practicalHồ Lợi
 
De thic++ --th
De thic++ --thDe thic++ --th
De thic++ --thHồ Lợi
 

More from Hồ Lợi (20)

Xu ly chuoi
Xu ly chuoiXu ly chuoi
Xu ly chuoi
 
Tóm tắt các hàm chuẩn của c
Tóm tắt các hàm chuẩn của cTóm tắt các hàm chuẩn của c
Tóm tắt các hàm chuẩn của c
 
T4
T4T4
T4
 
Nguyen lyoop
Nguyen lyoopNguyen lyoop
Nguyen lyoop
 
Lect04 functions
Lect04 functionsLect04 functions
Lect04 functions
 
Ky thuatkhudequy
Ky thuatkhudequyKy thuatkhudequy
Ky thuatkhudequy
 
Itt epc assignment
Itt epc assignmentItt epc assignment
Itt epc assignment
 
H hai epc_baitap
H hai epc_baitapH hai epc_baitap
H hai epc_baitap
 
Gtrinh oop
Gtrinh oopGtrinh oop
Gtrinh oop
 
Giaotrinhbaitapkythuatlaptrinh
GiaotrinhbaitapkythuatlaptrinhGiaotrinhbaitapkythuatlaptrinh
Giaotrinhbaitapkythuatlaptrinh
 
Giao trinh ky thuat lap trinh 2
Giao trinh ky thuat lap trinh 2Giao trinh ky thuat lap trinh 2
Giao trinh ky thuat lap trinh 2
 
Giao trinh c c++
Giao trinh c c++Giao trinh c c++
Giao trinh c c++
 
File trong c_
File trong c_File trong c_
File trong c_
 
Epc assignment
Epc assignmentEpc assignment
Epc assignment
 
Epc test practical
Epc test practicalEpc test practical
Epc test practical
 
De thic++ --th
De thic++ --thDe thic++ --th
De thic++ --th
 
Dethi c++ -lt
Dethi c++ -ltDethi c++ -lt
Dethi c++ -lt
 
D05 stl
D05 stlD05 stl
D05 stl
 
Cpl test3
Cpl test3Cpl test3
Cpl test3
 
Cpl test2
Cpl test2Cpl test2
Cpl test2
 

Bai giangtrenlop

  • 1. CHƯƠNG 1 : CáC KHÁI NIỆM CƠ BẢN CỦA NGÔN NGỮ C 1.1/ Tập ký tự hợp lệ dùng trong ngôn ngữ C - Các chữ cái : A, B, C ..., 2, a,n,c,...z ( 26 chữ cái thường) - Các chữ số : 0,1,..., 9. - Ký tự gạch nối _ ( chú ý phân biệt dấu - ). - Dấu cách ( space) : dùng để phân biệt các từ : Ví dụ : lop Học( 7 kí tự) - LopHoc( 6 kí tự). 1.2/ Tên ( định danh ) : là 1 dãy kí tự bắt đầu bằng chữ hoặc ký tự gạch dưới, theo sau là chữ cái, chữ số hoặc ký tự gạch nối (-). - Tên : dùng làm tên hằnp, tên biến , nhãn , tên hàm.... Ví dụ : Tên đúng : _abc, Delta_1, BETA. Tên sai : 1xyz ( vì bắt đầu là 1 chữ số ) A#B ( vì có dâu #) Delta ( vì có khoảng trống) , X-1 (vì sử dụng dấu gạch ngang). * Chú ý : + Tên : chữ hoa và chữ thường được xem là khác nhau + Thông thường : . Ðặt chữ hoa cho hằng, chữ thường cho các đại lượng còn lại(biến, hàm..). . Nên đặt 1 cách gợi nhớ ( 8 kí tự đầu có nghĩa và tuỳ thuộc chương trình ). 1.3/ Từ khoá : là từ dành riêng cho ngôn ngữ. Tên biến, hằng, hàm ...không được trùng với từ khoá, luôn luôn viết bằng chữ thường. Các từ khoá trong C gồm : Break, char, continue, case, do, double, default, else, float, for, goto, int,if, long, return, struct, switch, unsigned, while, typedef, union voi, volatile,.. 1.4/ Các kiểu dữ liệu cơ bản trong C : 4 kiểu : char, Int, float, double. - Kiểu char (1 byte ) : biễu diễn 1 ký tự thuộc ASCII Ký tù M· ASCII 1
  • 2. 0 048 1 049 2 050 A 065 B 066 a 097 b 098 Ph©n lo¹i ký tù : Cã thÓ chia 256 ký tù lµm ba nhãm : Nhãm 1: Nhãm c¸c ký tù ®iÒu khiÓn cã m· tõ 0 ®Õn 31. Ch¼ng h¹n ký tù m· 13 dïng ®Ó chuyÓn con trá vÒ ®Çu dßng, ký tù 10 chuyÓn con trá xuèng dßng díi ( trªn cïng mét cét ). C¸c ký tù nhãm nµy nãi chung kh«ng hiÓn thÞ ra mµn h×nh. Nhãm 2 : Nhãm c¸c ký tù v¨n b¶n cã m· tõ 32 ®Õn 126. C¸c ký tù nµy cã thÓ ®îc ®a ra mµn h×nh hoÆc m¸y in. Nhãm 3 : Nhãm c¸c ký tù ®å ho¹ cã m· sè tõ 127 ®Õn 255. C¸c ký tù nµy cã thÓ ®a ra mµn h×nh nhng kh«ng in ra ®îc ( b»ng c¸c lÖnh DOS ). - Kiểu Int : 3 loại : Int, long Int ( long ) và unsigned Int ( unsigned). KÝch cì vµ ph¹m vi biÓu diÔn cña chóng ®îc chØ ra trong b¶ng díi ®©y : KiÓu Ph¹m vi biÓu diÔn KÝch thíc int -32768 ®Õn 32767 2 byte unsigned int 0 ®Õn 65535 2 byte long -2147483648 ®Õn 2147483647 4 byte unsigned long 0 ®Õn 4294967295 4 byte - Kiểu Float và Kiểu double : biễu diễn các số thực . KiÓu Ph¹m vi biÓu diÔn Sè ch÷ sè cã nghÜa KÝch thíc Float 3.4E-38 ®Õn 3.4E+38 7 ®Õn 8 4 byte Double 1.7E-308 ®Õn 1.7E+308 15 ®Õn 16 8 byte 2
  • 3. long double 3.4E-4932 ®Õn 1.1E4932 17 ®Õn 18 10 byte - Kiểu void : Kiểu không giá trị, củ dùng để biểu diễn kết quả hàm cũng như nội dung củ pointer. Kiểu này sẽ nói chi tiết ở các phần liên quan. 1.5/ Biến và mảng : a/ Biến : Biến đại lượng thay đổi; mỗi biến có 1 tên và địa chỉ vùng nhờ danh riêng cho nó. Khai báo biến : Cú pháp < Kiểu dữ liệu > < Danh sách các biến >; Ví dụ : int i,j ; long cucdai; double tongsothue; int a,b = 20; float e = 35.1; x=30.5; b/ Mảng: Là tập hợp các phần tử có cùng 1 kiểu và chung 1 tên. Khai báo : < Kiểu dữ liệu > < Tên mảng >; Ví dụ : int Mang1[ 10 ]; float Bang [10][10]; - Mảng một chiều : là một dãy các ký tự phần tử tuần tự trong bộ nhớ, mỗi một phần tử chiếm một số byte tương ứng với kiểu của nó. - Mảng nhiều chiều : Gồm các phần tử sắp liên tiếp từ hàng này sang hàng kia. Các chỉ số được đánh số từ 0 trở đi. Ví dụ : - Mãng 1[0] ..Mãng1[9] - Bang [0][0] Bang [0][1] .. Bang [0][9]. Bang[1][0] .. Bang[1][9] ..... Bang[9][0] .. Bang[9][9] * Chú ý : &Mang1[3] đúng nhưng &Bang[2][5]sai 3
  • 4. ( Ðúng đối với 1 chiều và sai đối với nhiều chiều) 1.6 / Hằng : Ðại lượng không thay đổi a/ Hằng nguyên ( Int ): có giá trị từ -32768 đến 32767 - Có thể viết theo hệ 16 bằng cách thêm tiền tố Ox hoặc theo cơ số 8 bằng cách thêm tiền tố O ( Octal = bát phân ). Ví dụ : O306 viết theo cơ số 8 : Giá trị = 6 * 8 0 + 3* 8 * 8 = 198 trong hệ 10. O345 = 3*8*8 + 4*8 + 5 = 229 Ox147 = 1*16*16 + 4*16 +7 =327 trong hệ 10. OxAa= 10*16+13=173 b/ Hằng long ( long Int : nguyên lớn ) : giống như hằng nguyên, chỉ khác thêm L hoặc l ở đầu. Ví dụ : 180L, 123456789l ( Hằng nguyên là giá trị vượt quá số nguyên là hằng nguyên lớn (long) c/ Hằng thực ( float và double ) : Có 2 cách viết - Cách 1 : (dạng thập phân) Số gồm : phần nguyên, dấu chấm thập phân và phần thập phân. Ví dụ : 214.35 , - 234.34. - Cách 2 : Viết theo dạng khoa học Ví dụ : 1.543e7 = 15430000 123.456E-4 = 0.123456 ( 123.456/105) d/ Hằng ký tự : Viết trong 2 dấu nháy đơn. Giá trị của hằng chính là mã ASCII . Ví dụ : 'A' = 65; 'd' = 100, '9 ' - '0 ' = 57 - 48 = 9 - Hằng ký tự có thể viết X1X2X3 , x1x2x3 : trong đó x1,x2,x3 là số nguyên hệ 8. Ví dụ : chữ a mã hệ 10 là 97 đổi ra hệ 8 là O141 => 141='a'; 101='A'; 142 ='b' Một số hằng đặc biệt được viết theo qui ước như sau : Viết Ký tự Diễn giải ' " ' dấu nháy đơn ' " ' " dấu nháy kép ' ' dấu chéo ngược 4
  • 5. 'n ' n ký tự xuống dòng ' 0 ' 0 ký tự rỗng ( null) Chú ý : - Phân biệt ký tự '0 ' và ' 0 '. Hằng ' 0 ' cùng với chữ số 0 có mã = 48 - Hằng '0 ' cùng với ký tự 0 (null) có mã 0. - Hằng ký tự thực sự là số nguyên => có thể dùng số nguyên hệ 10 đê biểu diễn ký tự . Ví dụ : printf( " %c%c", 65,66) sẽ in ra AB. e/Hằng xâu ký tự : đặt trong dấu nháy kép ( " "). Hằng được lưu trữ trong 1 mãng ký tự mà ký tự cuối cùng là rỗng (null) ' 0 '. Ví dụ : "Lơp Hoc" - Hằng có thể được đinh nghĩa đối với toán tử define . Cú pháp : # define < tên hằng > < giá trị> Trong chương trình mọi biến max đều được thay đổi giá trị 100. Ví dụ : # define MAX 100 # define pi 3.141593 1.7/ Phép toán : + Phép toán số học gồm : ,-,*, / ( Phép chia lấy phần nguyên ), % ( phép chia lấy phần dư). + Phép toán quan hệ : <, >, <=,>=, = =, ! = ( khác). + Phép toán logic : || ( hoặc ) , && ( và) ! ( not ), #0 hay =1 : True( đúng) ; =0 : Falsse ( sai) + Phép toán tăng giảm : ++ cộng thêm 1 vào toán hạng. Ví dụ : int n=10; n++; tức là n=11 <=> n=n+1; Chú ý : - n++ : giá trị n được lấy trước khi tăng n. - ++n : giá trị n được lấy sau khi tăng n - tương tự n-- , --n ; + Toán tử thao tác bit : Không áp dụng cho kiểu float hoặc double. & : phép hội các bít ( và) | : phép tuyển các bit ( hoặc) ^ : phép tuyển các bit loại trừ << : phép dịch trái >> : phép dịch phải. 5
  • 6. : phép lấy phần bù. Ví dụ : 105 & 7 = 1 0111 1001 & 0000 0111 = 0000 0001 105 | 17 = 127 0111 1001 | 0000 0111 = 0111.1111 + Toán tử chuyển đổi kiểu : ta có thể dùng toán tử chuyển kiểu để chuyển 1 kiểu bất kỳ sang kiểu mong muốn bằng cách dùng toán tử sắc thái ( cast) theo quy tắc sau : ép Kiểu ( type cast ) : ( kiểu ) Biến Kiểu mong muốn Ví dụ : int i = 10 và ( float ) i => 10.0 - Chú ý : + Một số kiểu float khi chuyển sang kiểu Int sẽ bị chặt cụt phần thập phân. +Một số kiểu long khi chuyển sang kiểu Int sẽ cắt bỏ vài chữ số. Ví dụ : n = 2560.70 thì (int)n = 2560 + Toán tử gán : Cú pháp : < biến> = < biểu thức> Ví dụ : c = a + b ; d= t + 3 ; i= i+2 (Viết gọn i+=2; ) i= i*2 (i*=2; ) x = x >> 1 (x >> = 1;) Chú ý : Các phép toán trong C có độ ưu tiên khác nhau và quy tắc kết hợp khác nhau Bảng liệt kê các phép toán theo thứ tự ưu tiên từ trên xuống dưới, các phép toán trên dòng có thứ tự như nhau. Phép toán Trình tự kết hợp (),[ ], trái qua phải |, dấu ngã, &*, - -, + + , ( type ) size of phải qua trái *,/, % trái qua phải +, - trái qua phải << ,>> trái qua phải <,<= ,> ,>= trái qua phải &, | , && , || trái qua phải ? phải qua trái 6
  • 7. = =, !=, +=, -= phải qua trái 1.8/ Biểu thức : được xây dựng bằng các toán tử , toán hạng là các hằng, biến, hàm.... - Biểu thức gán : Ví dụ : A = B =C =5 => A=5, B = 5, C = 5. - Biểu thức điều kiện có dạng : B1?E1 : E2 : Nếu B 1 đúng giá trị biểu thức = E1. ngược lại E2. Ví dụ : S=x>y ? x:y cho giá trị lớn nhất của x và y. 1.9/ Cấu trúc tổng quát của chương trình viết bằng ngôn ngữ C : #include < Thuvien.h> #define .... /* Các khai báo kiểu dữ liệu, hằng */ Type of.... { Các biến toàn cục, biến ngoài} prototype { khai báo tiêu đề hàm} void main () { x1,x2,........xn} Ví dụ : Viết chương trình số lớn nhất cho trước a, b, c # include < stdio.h> # include < conio.h> void main () { int n1,n2, n3, nmax ; do { printf(" nhập số thứ nhất : "); scanf( " %d", &n1); printf(" nhập số thứ hai : "); scanf( " %d", &n2); printf(" nhập số thứ ba : "); scanf( " %d", &n3); /* tìm số lớn nhất */ nmax = n1>n2 ? n1:n2; nmax = nmax > n3 ? nmax : n3; /* In ra kết quả */ printf ( " số lớn nhất trong 3 số %d%d%d là : %d n ", n1,n2,n3 ,nmax); printf ( " ấn ESC để kết thúc ); } while ( getch ()! = 27 ); } 2/ CÁC LỆNH XUẤT NHẬP CHUẩN: 2.1/ Hàm printf 7
  • 8. printf (" formated string ", <biểu thức> ); Biểu thức có thể là : const ( hằng), var ( biến), function (hàm). Ví dụ : int Siso= 30; printf ( " In sĩ số lớp học là %d, Siso ); a/ Các ký tự điều khiển : n : sang dòng mới b : lùi lại 1 tab. f : sang trang mới t : dấu tab ' : In ra dấu ' " : in ra dấu " : in ra dấu 2.2/ Hàm scanf : scanf (" formated string ", các địa chỉ biến ); Ví dụ : int a ; float x,y; char cr[6], ct[6]; scanf (" %f %5f3d%35%5 ", &x , &y , &a , c r, ct); Nhập vào 5.4 25 124 523 48ab Kết quả là : x=5.4 ; y=25.0; a = 124; cr= "523"; ct = "48ab" CHƯƠNG 2 : CẤU TRÚC ÐIỀU KHIỂN VÀ VÒNG LẶP 3.1/ a/Khái niệm : mọi chương trình đều có thể biểu diễn qua 3 cấu trúc : - tuần tự : mặc định ( default) - lựa chọn ( lệnh if hoặc lệnh switch) - lặp ( for, while hoặc do while) b/ Khối lệnh : là tập hợp các câu lệnh được khai báo bởi 2 dấu { và } . không đặt dấu chấm phẩy ( ; ) sau một khối lệnh trừ một vài trường hợp đặc biệt. 8
  • 9. 3.2 / Các câu lệnh 3.2.1 Lệnh if : - Cú pháp : if ( biểu thức) < lệnh> ; - Diễn giải : nếu Biểu thức đúng ( khác 0 ) --> thực hiện <lệnh> ngược lại nếu biểu thức sai ( = 0 ) thực hiện lệnh đứng sau câu lệnh if. if ( biểu thức) <lệnhA>; else < lệnh B); Ví dụ : tìm số lớn nhất trong 2 số a, b : if (a<b) max = b ; else max = a ; * Cách khác : max = (a>b)? a:b; - Chú ý : trong trường hợp có nhiều lệnh if lồng nhau thì else sẽ gắn liền với if gần nhất. if(bt1) <lệnh1>; else if (bt2) if(bt3) < lệnh2>; else <lệnh 3>; /* bt3 = = 0 */ else <lệnh 4>; /* bt2= = 0 */ Ví dụ : Viết chương trình giải phương trình bậc nhất : Ax + B = 0 (A, B : số thực). Giải : Xét các trường hợp xảy ra : - Nếu A! =0 thì nghiệm x = -B/A - Nếu A = 0 +> B=0 => Nếu B=0 : vô số nghiệm B != 0 ( ngược lại) : vô nghiệm. /* Giải phương trình bậc nhất : Ax + B = 0 */ #Include <stdio.h> #Include < conio.h> void main ( ) { float a, b ; /* nhập dữ liệu từ bàn phím */ print ( " nhập 2 số a,b : "); scanf(" %f %f ", &a, &b); /* giải phương trình*/ if ( a= = 0 ) if( b= =0 ) printf (" Phương trình có vô số nghiệm ! n " ); else printf (" phương trình vô nghiệm n "); else / * a khác 0 */ printf (" phương trình có nghiệm là : x= %f n ", -b/a); getch(); } 9
  • 10. Bài tập 1 : Tìm những lỗi cú pháp các đoạn chương trìnhh sau : A/ scanf ( "d", value); B/ printf ("tích các %d và %d là %d " n, x,y); C/ printf (" phần dư của %d chia cho %d là n ", x , y , x%y ); D/ if(x=y); printf (" %d bằng %d n ", x,y); E/ if ( age>=65); printf (" gia ì! '); else printf(' Tre! '); 3.2.2 Lệnh switch - Cú pháp : Switch (biểu thức nguyên). { Case N1 : lệnh 1; Case N2 : lệnh 2; ..... [ default : lệnh;] } - Biểu thức nguyên là giá trị nguyên : Ni(i=1,2...) là các số nguyên. - Với biểu thức khác với mọi Ni => thực hiện lệnh sau default. - Chú ý : nếu nhóm câu lệnh sau nhãn case Ni không có câu lệnh break thì máy sẽ chuyển sang nhóm câu lệnh sau nhãn case Ni+1 Ví dụ : đổi 1 số nguyên sang chuỗi ký tự là tên các môn học #Include<stdio.h> #Include<conio.h> void main( ) { int ma ; do { printf(" n cho mã cần chuyển "); scanf(" %d ", &ma); switch(ma) { case 0 : printf(" n lớp tin học a "); break; case 1 : printf( " n lớp tin học b"); break; case 2 : printf(" n lớp trung cấp "); break; case 3 : printf (" n lóp chuyên viên "); break; default : printf( " n lợp thiế tiền học phí"); } 10
  • 11. printf( " n có tiếp tục không ?(Y/N)"); } while( toupper ( getch () ! = 'N '); /* Chuyển san ký tự hoa */ } 3.2.3 / Lệnh For : - Cú pháp : for ( bt1; bt2 ; bt3) lệnh; - Giải thích : + bt1 : là toán tử gán để tạo giá trị ban đầu cho biến điều khiển. + bt2 : biểu thức điều kiện để thực hiện vòng lặp. + bt3 : biểu thức tăng giá trị của biến điều khiển của vòng lặp. Ví dụ : Tính Tổng S=1+2+3+..+n S=0; for ( i=1; i<=n; i++ ) #include <stdio.h> #include<conio.h> #include<math> /* int i, j, t, n ; double gt, s; */ void main() { int i, s; clrscr () ; printf ("nhập n= "); scanf(" %d ", &n); s=0 ; for (i=1; i<=n ; i++ ) s = s+i; printf ( " tong s = %d ", s); getch(); } 3.24/ Câu lệnh while : - Cú pháp : while ( biểu thức 1) lệnh 1 ; - Nguyên tắc thực hiện : +b1. Tính giá trị của biểu thức 1. +b2. Nếu giá trị của biểu thức 1 sai ( = 0 ) thì chương trình ra khỏi vòng while +b3. Nếu giá trị của biểu thức đúng thì thực hiện lệnh 1 và quay lại bước 1(b1). - Chú ý : Biểu thức 1 có thể gồm nhiều biểu thức nhưng tính đúng sai phụ thuộc vào biểu thức cuối cùng. 3.25/ Câu lệnh Do while ( làm trước hỏi sau ) - Cú pháp : do lệnh 1 ; while ( biểu thức 1 ) ; - Nguyên tắc thực hiện : 11
  • 12. +b1. Máy thực hiện câu lệnh 1 ; +b2. Sau đó tính giá trị của biểu thức 1, nếu giá trị của biểu thức 1 sai thì chương trình thoát ra khỏi vòng lặp. Nếu giá trị của biểu thức 1 đúng thì quay lại bước 1. Chú ý : - while : Ðiều kiện được kiểm tra trước, nếu đúng mới thực hiện. - do while : câu lệnh được thực hiện trước khi kiểm tra. Câu lệnh thực hiện bao giờ ít nhất là 1 lần. ( do while ngược với Repeat until của Pascal : lệnh Do while sai thì dừng, còn lệnh repeat until đúng thì dừng ). -Biểu thức 1 có thể gồm nhiều biểu thức, tuy nhiên tính đúng sai căn cứ theo biểu thức cuối cùng. 3.2.6/ Câu lệnh Break : - Cú pháp : Dùng để thoát khỏi vòng lặp. Khi gặp câu lệnh này trong vòng lặp, máy ra khỏi và chỉ đến câu lệnh sau các lệnh trên. Nếu nhiều vòng lặp ----> break sẽ thoát ra khỏi vòng lặp gần nhất. 3.3/ Toán tử goto và nhãn ( label ); - Ví dụ : tiep tuc : st = a[ i ]; => tiep tuc là nhãn của lệnh st = a [ i ]; - Lệnh goto nhãn => nhảy đến câu lệnh đứng sau nhãn. - CHÚ Ý : PHẠM VI NHÃN TRONG CÙNG 1 HÀM. BÀI TẬP CHƯƠNG 2 1/ Kiểm tra tìm lỗi : while ( x<.= 10 ) Total t=x; ++x ; 2/ Giải phương trình bậc 2 : ax2 + bx + c = 0 với a, b, c là số thực nhập từ bàn phím. 3/ Nhập số liệu vào bàn phím, kết thúc nhập bằng cách ấn ^Z hoặc F6 ( mũ = 255 ). Biết : InWord = on khi ở trong 1 từ. InWord = off khi ngược lại. Ðếm số dòng, số từ, số ký tự. 4/ Tìm các số nằm trong khoảng từ 150 đến 140 thoả tính chất số bằng tổng lập phương các chữ số của chúng : Ví dụ : 153 = 13 + 53 + 33 hoặc 370 = 33 + 73 + 03 5/ Số tuyệt hảo là số bằng tổng các ước số thực sự của nó. Ví dụ : 6 = 1 + 2 + 3.Tìm các số tuyệt hảo trong khoảng từ 1 đến 3000. 6/Nhập số liệu vào mãng A gồm 10 phần tử và sắp xếp theo thứ tự tăng dần. 7/ Tìm tất cả các số nguyên tố từ 2 đến 100 bằng lệnh For. 8/ Tìm các số nguyên có 3 chữ số sao cho tổng 3 chữ bằng tích 3 chữ. Ví dụ : 123. 9/ a/ Dùng lệnh while để viết chương trình tính : S1 = 1 x 3 x 5 x 7 x 9. . . . . x ( 2n - 1 ). S2 = 2 x 4 x 6 x 8 x ......x (2n). b/ làm lại bài trên bằng cách dùng do...while. 10/Giải bài toán cổ điển vừa gà vừa chó bó lại cho tròn 36 con 100 chân chẵn. 12