Thứ Ba, 23 tháng 9, 2014

Cấu trúc lựa chọn: switch trong c


Cú pháp của lệnh switch hơi đặc biệt một chút. Mục đích của nó là kiểm tra một vài giá trị hằng cho một biểu thức, tương tự với những gì chúng ta làm ở đầu bài này khi liên kết một vài lệnh if và else if với nhau. Dạng thức của nó như sau:
switch(biến cần kiểm tra)
{
case giá trị 1 : lẹnh thực hiện; break;
case giá trị 2: lệnh thực hiện; break;
.........................................................
case giá trị n : lệnh thực hiện; break;
default: lệnh thực hiện mặc định; break;
}
Nó hoạt động theo cách sau: switch tính biểu thức và kiểm tra xem nó có bằng các giá trị sau case hay không, nếu bằng thì thực hiện lệnh, nếu không tìm thấy giá trị cần tìm thì thực hiện lênh mặc định.
ví dụ;
#include<stdio.h>
#include<conio.h>
void main()
{
int n = 10;
switch (n)
{
case 1:printf("ok"); break;
case 2:printf("ok"); break;
default:printf("no");
break;
}
_getch();
}
Tôi đã nói ở trên rằng cấu trúc của lệnh switch hơi đặc biệt. Chú ý sự tồn tại của lệnh break ở cuối mỗi khối lệnh. Điều này là cần thiết
 có thể được dùng khi bạn muốn thực hiện một khối lệnh cho nhiều trường hợp khác nhau, ví dụ
#include<stdio.h>
#include<conio.h>
void main()
{
int n = 10;
switch (n)
{
case 1:
case 2:
case 3:
case 4:
case 5: printf("so nho hon 5"); break;
default: printf("so lon hon 5");
break;
}
_getch();
}
Chú ý rằng lệnh switch chỉ có thể được dùng để so sánh một biểu thức với các hằng. Vì vậy chúng ta không thể đặt các biến (case (n*2):) hay các khoảng (case (1..3):) vì chúng không phải là các hằng hợp lệ.  

Các lệnh rẽ nhánh và lệnh nhảy trong c


1.lệnh break
Sử dụng break chúng ta có thể thoát khỏi vòng lặp ngay cả khi điều kiện để nó kết thúc chưa được thoả mãn. Lệnh này có thể được dùng để kết thúc một  vòng lặp không xác định hay buộc nó phải kết thúc giữa chừng thay vì kết thúc một cách bình thường. Ví dụ, chúng ta sẽ dừng việc đếm ngược trước khi nó kết thúc:
#include<stdio.h>
#include<conio.h>
void main()
{
int n=10;
for (; n >0 ; n--) {
printf(" %d ", n);
if (n == 3){
printf("stop"); break;
}

}
_getch();
}
2.Lệnh continue:
Lệnh continue làm cho chương trình bỏ qua phần còn lại của vòng lặp và nhảy sang lần lặp tiếp theo. Ví dụ chúng ta sẽ bỏ qua số 5 trong phần đếm ngược:
#include<stdio.h>
#include<conio.h>
void main()
{
int n=10;
for (; n >0 ; n--) {
if (n == 5) continue;
printf(" %d ", n);
}
_getch();
}
3.Lệnh goto. 
Lệnh này cho phép nhảy vô điều kiện tới bất kì điểm nào trong chương trình. Nói chung bạn nên tránh dùng nó trong chương trình C. Tuy nhiên chúng ta vẫn có một ví dụ dùng lệnh goto để đếm ngược:
#include<stdio.h>
#include<conio.h>
void main()
{
int n=10;
up:;
printf(" %d ", n);
n--;
if (n > 0) goto up;
_getch();
}

Thứ Hai, 22 tháng 9, 2014

các cấu trúc lặp, while , do-while trong c


Mục đích của các vòng lặp là lặp lại một thao tác với một số lần nhất định hoặc trong khi một điều kiện nào đó còn thoả mãn
1. vòng lặp while 
dạng của nó như sau: while (điều kiện) lệnh thực thi khi điều  kiện đúng;
Ví dụ, chúng ta sẽ viết một chương trình đếm ngược sử dụng vào lặp while:
#include<stdio.h>
#include<conio.h>
void main()
{
int n;
printf("nhap n");
scanf_s("%d",&n);
while (n>0){ printf("%d",n); --n;}
_getch();
}
Khi chương trình chạy người sử dụng được yêu cầu nhập vào một số để đếm ngược. Sau đó, khi vòng lặp while bắt đầu nếu số mà người dùng nhập vào thoả mãn điều kiện điều kiện n>0 khối lệnh sẽ được thực hiện một số lần không xác định chừng nào điều kiện (n>0) còn được thoả mãn.
Chúng ta cần phải nhớ rằng vòng lặp phải kết thúc ở một điểm nào đó, vì vậy bên trong vòng lặp chúng ta phải cung cấp một phương thức nào đó để buộc (điều kiện)  trở thành sai nếu không thì nó sẽ lặp lại mãi mãi. Trong ví dụ trên vòng lặp phải có lệnh --n;
2. vòng lặp do while 
cú pháp: do lệnh thức thi while (điều kiện);
Chức năng của nó là hoàn toàn giống vòng lặp while chỉ trừ có một điều là ít nhất có 1 lần lệnh được thực hiện dù điều kiện có là sai đi chăng nữa.
 Ví dụ, chương trình dưới đây sẽ viết ra bất kì số nào mà bạn nhập vào cho đến khi bạn nhập số 0.
#include<stdio.h>
#include<conio.h>
void main()
{
unsigned long n;
do {
printf("nhap n:");
scanf_s("%lu", &n);
printf("\n ban da nhap: %lu \n", n);
} while (n != 0);
_getch();
}
Vòng lặp do-while thường được dùng khi điều kiện để kết thúc vòng lặp nằm trong vòng lặp, như trong ví dụ trên, số mà người dùng nhập vào là điều kiện kiểm tra để kết thúc vòng lặp. Nếu bạn không nhập số 0 trong ví dụ trên thì vòng lặp sẽ không bao giờ chấm dứt.
3. vòng lặp for
cú pháp: for ( đặt một giá khí ban đầu cho biến điều khiển; điều kiện; thay đổi trên biến ) lệnh thực hiện;
Sau đây là một ví dụ đếm ngược sử dụng vòng for.
#include<stdio.h>
#include<conio.h>
void main()
{
int n;
for (n = 10; n > 0; n--) printf("%d", n);
_getch();
}
Phần khởi tạo và lệnh tăng không bắt buộc phải có. Chúng có thể được bỏ qua nhưng vẫn phải có dấu chấm phẩy ngăn cách giữa các phần. Vì vậy, chúng ta có thể viết for (;n<10;) hoặc for (;n<10;n++).
#include<stdio.h>
#include<conio.h>
void main()
{
int n=10;
for (; n>0; n--) printf("%d", n);
_getch();
}
Bằng cách sử dụng dấu phẩy, chúng ta có thể dùng nhiều lệnh trong bất kì trường nào trong vòng for, như là trong phần khởi tạo. Ví dụ chúng ta có thể khởi tạo một lúc nhiều biến trong vòng lặp:

for ( n=0, i=100 ; n!=i ; n++, i-- ) {   // cái gì ở đây cũng được... }

Cấu trúc điều kiện: if và else trong c



.Cấu trúc điều kiện: if  và else 
Cấu trúc này được dùng khi một lệnh hay một khối lệnh chỉ được thực hiện khi một điều kiện nào đó thoả mãn. Dạng của nó như sau:
if (điều kiện) lệnh khi đk đúng;
Ví dụ, đoạn mã sau đây sẽ viết x is 100 chỉ khi biến  x chứa giá trị 100
if (x==100) printf("x í 100);
chúng ta có thể chỉ định một khối lệnh bằng cách sử dụng một cặp ngoặc nhọn { }:
ví dụ
if(x==100) { printf("x is"); printf("x"); }
Chúng ta cũng có thể chỉ định điều gì sẽ xảy ra nếu điều kiện không được thoả mãn bằng cách sửu dụng từ khoá else. Nó được sử dụng cùng với if như sau:
if (điều kiện) lệnh khi dk đúng;
else lệnh khi điều kiện sai;
ví dj:
if(x==100) printf("x is 100");
else printf("x not is 100");

các toán tử trong lập trình c


  1. toán tử gán:
dùng để gán 1 giá trị nào đó cho biến.
ví dụ: a = 5;
gán giá trij5 cho biến a. vế trái là biến, còn vế phải có thể là hằng bất kì hây biến hay biểu thức.
toán tử gán luôn luôn được hiện từ trái sang phải và không bao giờ có thú tự ngược lại.
ví dụ:
a = b;
a=5;
a=5-2;
a=b*9;
2.các toán tử số học;
+ cộng
- trừ
* nhân
/ chia
% chia lấy dư
thứ tự thực hện cũng giống như trong toán học. ví dụ phép chia láy dư như sau;
11%3=2
11%5=1
3.các phép toán phức hợp;
a+=5; tương đương với a=a+5;
a-=5; tương đương với a=a-5;
a*=5 tương đương với a=a*5;
a/=5; tương đương với a=a/5;
a%=5; tương đương với a=a % 5;
4. toán tở tăng và giảm:
++a, a++ : tăng a 1 đơn vị
--a, a-- : giảm a 1 đơn vị.
các dấu ++,--, đặt vào đâu nó cũng có chung 1 ý nghĩa nhưng chúng có sự khác nhau:
nếu đặt ++ trước biến thì nó sẽ tăng biến trước khi làm nhiệm vụ khác trong biểu thức chẳng hạn, còn ++ sau biến thì sẽ tăng biến saukhi biến làm xong nhiệm vụ trong biểu thức.
ví dụ để dễ hiểu về ấn đề này:
b=4;
a=++b; ///thì b=5, a=5
a=b++;///thì b=5 nhưng a mới chỉ bằng 4
 5.các toán tử quan hệ:
== Bằng
 != Khác 
> Lớn hơn
 < Nhỏ hơn
 > = Lớn hơn hoặc bằng
 < = Nhỏ hơn hoặc bằng
 Ví dụ:  
(7 == 5) sẽ trả giá trị false (6 >= 6) sẽ trả giá trị true tất nhiên thay vì sử dụng các số, chúng ta có thể sử dụng bất cứ biểu thức nào. Cho a=2, b=3 và c=6 (a*b >= c) sẽ trả giá trị true. (b+4 < a*c) sẽ trả giá trị false 
6.toán tử logic
! not
&& and và
|| or hoặc
ví dụ:
!(2==2) trả về false
7.  toán tử điều kiện
điều kiện ? giá trị 1 nếu đk đúng : giá trị 2 nếu dk kiện sai;
ví dụ: 7==5 ? 3:4; trả về 4 vì đk sai
7==5 ? 4 : 3 trả về 3 vì 7 không bằng 5. 
5>3 ? a : b trả về a, vì 5 lớn hơn 3. 
8.các toán tử thao tác trên bit
& AND Logical AND 
| OR Logical OR 
^ XOR Logical exclusive OR 
~ NOT Đảo ngược bit 
<< SHL Dịch bit sang trái 
>> SHR Dịch bit sang phải 
ví dụ;
& và | thì dễ hiểu, tôi không nói thêm.
a^b=1 nếu a khác b
a^b=0 nếu a = b
k=m<<n tương ứng với k=m*2^n
k=m>>n tương ứng với k=m/2^n
cho m=[00001101]
thì ~m=[11110010] đây là phếp đảo bit.
9.ép kiểu dữ liệu của biến
 đặt trước biểu thức cần chuyển đổi tên kiểu dữ liệu được bọc trong cặp ngoặc đơn (), ví dụ: 
int i;
 float f = 3.14;
 i = (int) f;
Đoạn mã trên chuyển số thập phân 3.14 sang một số nguyên (3).

cấu trúc của 1 chương trình c



có lẽ 1 trong những cách tốt nhất để học 1 ngôn ngữ lập trình là bằng 1 chương trình . vậy đây là chương trình đầu tiên của chúng ta:
///chương trình c
#include<stdio.h>
#include<conio.h>
void main()
{
printf("hello world ");
_getch();
}
chương trình trên đây là chương trình đầu tiên mà hầu hết người mới học ngon ngữ lập trình c phải làm, nó bao gồm những phần cơ bản của 1 chương trình c cần có:

  • ///chương trình c: đây là chú thích , tất cả các dòng bắt đầu bằng dấu /// là chú thích và không ảnh hưởng gì đến chương trình của chúng ta hết. có thể khai báo chú thích bằng /* chú thchs ở đây */
  • #include<stdio.h>:đây là dòng lệnh khai báo thư viện, để sử dụng được các lệnh trong trong chương trình thì chúng ta phải khai báo thư viện, ví dụ ở đây lệnh printf nằm trong thư viện stdio.h
  • void main(){}: nội dung của chương trình nằm trong dấu {}, có thể là void main() hay int main(), và 1 số kiểu khai báo nội dung của chương trình, chúng ta sẽ đề cấp đến nó trong các phần sau. bên trong nội dung của chương trình sẽ là các lệnh, chúng ta sẽ học ơ các phàn sau. 

Thứ Hai, 15 tháng 9, 2014

biểu diễn dữ liệu trong máy tính

1. biểu diễn số trong máy :
  • số nguyên không dấu : độ lớn của nó phụ thuộc vào số byte dùng để chứa nó

1B lưu trữ được số lớn nhất là 255 và số nhỏ nhất là 0
  • số nguyên có dấu: dùng bit trái cùng để biểu diễn: 0 là dương , 1 là âm
1 byte lưu trữ được số dương lớn nhất là 127, số âm nhỏ nhất là -128
2. biểu diễn kí tự trong máy:
1B biểu diễn được 256 kí tự, có trong bảng mã sau:

Bài đăng phổ biến