Thứ Hai, 15 tháng 9, 2014

đơn vị đo thông tin

đơn vị thông tin
bit: mỗi kí số 0 hay 1 là 1 bit
8 bit liền nhau = 1 byte
*byte là đơn vị đo thông tin nhỏ nhất dùng để đo khả năng lưu dữ liệu của của bộ nhớ, đĩa.
các bội số của byte

  • kilobyte: 1K=1024B
  • megabyte  1M=1024K
  • gigabyte   1G=1024M
  • tetabyte   1T=1024G

hệ đếm nhị phân, thập phân và thập lục phân

1. hệ đếm nhị phân:
dùng 2 kí số cơ bản là 0 và 1

  • đổi hệ 10 sang hệ 2 thì chia liên tiếp cho 2 đến khi bằng 0, số dư được viết theo chiều từ phải qua trái.
  • đổi hệ 2 sang hệ 10 ta dùng khai triển đa thức theo lũy thừa của 2.
  • ưu điểm là chỉ có 2 kí số nên biểu diễn được trong máy. số 0 là đèn tắt, số 1 là đèn sáng.
  • ví dụ:
12=1100
1100=2^3+2^2=12
2. hệ đếm thập lục phân:
dùng các kí hiệu: 0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F
trong đó: 9+1=A, A+1=B, B+1=C, C+1=D, D+1=E, E+1=F
dưới đây là bảng đổi cơ sở:

  • đổi hệ 10 sang hệ 16: chia liên tiếp cho 16 đến khi thương số =0, đỏi các số dư từ hệ 10 sang hệ 16 theo bảng cơ sở, viết liên tiếp các số dư từ dưới lên, từ trái qua phải
  • đổi hệ 16 sang 10 : ta khai triển theo đa thức các lũy thừa của 16, đổi các hệ số của đa thức từ hệ 16 sang 10 theo bảng cơ sở và tính toán bình thường ta được số hệ 10
  • đổi 16 sang hệ 2: đổi từng kí số hệ 16 sang hệ 2 theo bảng cơ sở.
  • đổi hệ 2 sang hệ 16: từ trái qua phải tách ra từng cụm 4 số nhị phân rồi đổi theo bảng cơ sở.
  • đổi từ hệ 2 sang hệ 10 ta thường đổi sang hệ 16 rồi áp dụng bảng cơ sở sẽ nhanh hơn

khái niệm và so sánh ngôn ngữ lập trình, ngôn ngữ thảo chương


1. khái niệm ngôn ngữ thảo chương:
là phương tiện giao tiếp giữa người và máy

  • câu lệnh: là thành phần chủ yếu của ngôn ngữ thảo chương, nó gồm 1 dãy các kí tự được sắp xếp  theo 1 quy tắc nhất định nhằm yêu cầu máy thực hiện thao tác nào đó.
  • ngữ  nghĩa: là ý nghĩa của câu lệnh, cú pháp và ngữ nghĩa tạo thành 1 văn phạm của ngôn ngữ thảo chương.
  • ngôn ngữ thảo chương : là tập hợp các kí tự, các câu lệnh kèm theo cú pháp và ngữ nghĩa của chúng.
  • chương trình: là 1 dãy có trình tự các câu lệnh của ngôn ngữ thảo chương mà máy phải thực hiện.
  • lập trình : là viết chương trình bằng ngôn ngữ thảo chương cụ thể
2.ngôn ngữ thảo chương: chia làm 3 loại:
a) ngôn ngữ máy:

  • các lệnh còn ở dạng mã hóa (ví dụ mã hóa nhị phân)
  • người viết phải nắm chắc cấu trúc máy.
  • khi sang máy có cấu trúc khác thì phải sửa lại chương trình
  • khai thác tốt tài nguyên của máy.
  • ít người viết được.
b) ngôn ngữ thảo chương cấp cao như pascal ,c , bacsic,..

  • gần với ngôn ngữ con người nhất là tiếng anh.
  • không cần nắm vững cấu trúc máy
  • đa số người viết được.
  • chương trình chung chạy được trên các máy khác nhau.
  • hiệu quả khai thác tài nguyên không cao bằng ngôn  ngữ máy.
c) ngôn ngữ lập trình cấp thấp như assenbler

  • là ngôn ngữ trung gian giữa ngôn ngữ máy và ngôn ngữ lập trình cấp cao.
  • thường được dùng cho người viết hệ điều hành.
*đẻ máy hiểu ngôn ngữ lập trình cấp cao thì phải có biên dich sang ngôn ngữ máy. các phần mềm ta hay dùng đẻ viết chương trình là chương trình biên dịch.

khái niệm giải thuật trong lập trình


1. giải thuật (thuật toán):
là đường lối giải quyết bài toán trên máy tính , gồm 1 dỹ các trình tự các tác động mà tính phải thực hiện để đạt được kết quả mong muốn, gồm có 5 đặc tính:

  • tính có mục đích: phải giải quyết 1 vấn đề ác định.
  • tính khả thi: máy có khả năng làm được.
  • tính hữu hạn: số lượng các tác động phải là hữu hạn.
  • tính đầy đủ: xét hết mọi tình huống có thể xảy ra.
  • tính tổng quát: áp dụng được cho tất cả các bài toán cùng loại, có cấu trúc giông nhau chỉ khác nhau dữ liệu ban đầu.
2. có ba cách mô tả giải thuật:

  • bằng ngôn ngữ của con người.
  • bằng sơ đồ khối.
  • bằng mã giả (kết hợp ngôn ngữ của con người sao cho thật ngắn gọn với ngôn ngữ thảo chương như c,pascal ,....).

Thứ Ba, 15 tháng 7, 2014

Khảo sát một mảng số nguyên

Viết chương trình nhập vào một mảng số nguyên có N chữ số, sau đó khảo sát xem dãy số đó là dãy tăng hay giảm hay bình thường.



Bài Giải

/*
Name: Khao sat day so tang hay giam
Copyright: None
Author: Tran Anh
Description: http://www.code.tavn.net
*/
#include<conio.h>
#include<stdio.h>

main()
{
 int n,i;
 printf("\t- Nhap so phan tu cua mang: ");
 scanf("%d",&n);

 int a[n];

 for(i=0;i<n;i++)
 {
  printf("\t- Nhap phan tu A[%d]: ",i);
  scanf("%d",&a[i]);
  }

 int tang=1,giam=1;

 for (i=0;i<n-1;i++)
  {
   if (a[i]>a[i+1]) tang=0;
   if (a[i]<a[i+1]) giam=0;
   }


 if (tang)
  {
   printf("\t=> Day so ban nhap TANG:\n\t");
   for(i=0;i<n;i++)
      printf("%5d",a[i]);
   }
 if (giam)
  {
   printf("\t=> Day so ban nhap GIAM:\n\t");
   for(i=0;i<n;i++)
      printf("%5d",a[i]);
   }
 if ((tang==0)&&(giam==0))
  {
   printf("\t=> Day so ban nhap BINH THUONG:\n\t");
   for(i=0;i<n;i++)
      printf("%5d",a[i]);
   }
 
 
 getch();
 return 0;
}


Thứ Hai, 14 tháng 7, 2014

Đảo chiều dãy số bằng con trỏ

Viết chương trình nhập vào một dãy số nguyên có N chữ số, lưu chúng vào vùng nhớ được cấp phát và được con trỏ đến bởi một con trỏ (không dùng mảng). Dùng cách truy xuất đến từng phần tử của mảng thông qua con trỏ, đão ngược dãy số vừa nhập.




Bài Giải


/*
Name: Dao chieu day so bang con tro
Copyright: None
Author: Tran Anh
Description: http://www.code.tavn.net
*/
#include<conio.h>
#include<stdio.h>
#include<malloc.h>

main()
{
 int *a,i,n,temp;
 a=(int*)malloc(sizeof(int));
 printf("\t- Nhap so phan tu cua day so: ");
 scanf("%d",&n);
 printf("\t- Nhap phan tu day so: \n");

  for(i=0;i<n;i++)
  {
   printf("\t- Nhap phan tu %d: ",i);
   scanf("%d",a+i);
   }

 for(i=0;i<n/2;i++)
 {
  temp=*(a+i);
  *(a+i)=*(a+(n-i-1));
  *(a+(n-i-1))=temp;
  }

 printf("\n");
 printf("\t=> Day so da dao chieu: ");
 for (i=0;i<n;i++)
  printf("%4d",*(a+i));
  printf("\n");

 getch();
 return 0;

}


Thứ Tư, 2 tháng 7, 2014

Viết chương trình chứa hàm tính tổng các phần tử của mảng hai chiều

Viết chương trình nhập vào từ bàn phím một ma trận có M dòng và N cột, sau đó tính tổng các phần tử của ma trận bằng cách dùng hàm.



Bài Giải



/*
Name: Ham tinh tong phan tu mang 2 chieu
Copyright: None
Author: Tran Anh
Description: http://www.code.tavn.net
*/

#include<conio.h>
#include<stdio.h>

void inpm(int t[][20], int u, int v)
{
     int i,j;
     for (i=0;i<u;i++)
         for (j=0;j<v;j++)
             {
                          printf("\t- Nhap phan tu A[%d][%d]: ",i,j);
                          scanf("%d",&t[i][j]);
                          }
 
     }
void printsreen(int t[][20], int u, int v)
{
     int i,j;
     for (i=0;i<u;i++)
     {
         for (j=0;j<v;j++)
             printf("%5d",t[i][j]);
             printf("\n");
             }
}

int plus(int t[][20], int u, int v)
{
    int i,j,temp=0;
    for (i=0;i<u;i++)
        for (j=0;j<v;j++)
            temp+=t[i][j];
       
    return temp;
            }



main()
{
      int n,m;
      printf("\t- So dong: "); scanf("%d",&m);
      printf("\t- So cot: "); scanf("%d",&n);
 
      int a[20][20];
      inpm(a,m,n);      //Nhap mang hai chieu
      printf("\t=> Ma Tran ban vua nhap: \n");
      printsreen(a,m,n);
 
      printf("\t => Tong cac phan tu cua mang = %d",plus(a,m,n));
 
      getch();
      return 0;
}


Bài đăng phổ biến