Showing posts with label THDC. Show all posts
Showing posts with label THDC. Show all posts

Tuesday, September 19, 2017

Một số đề tài thuyết trình THDC 20171 sáng thứ 3

Bài 1. Máy tính lượng tử
  • Khác gì so với máy tính nhị phân
  • công nghệ nghiên cứu tới hiện tại
  • phạm vi áp dụng
  • hướng phát triển

Bài 2. Công nghệ in 3D
  • Khái niệm
  • Các công nghệ in hiện có
  • áp dụng 
  • những vẫn đề giới hạn về công nghệ
  • hướng phát triển

Bài 3. Ô tô tự lái
  • Công nghệ hiện tại, các hãng nào đang áp dụng
  • Phạm vi áp dụng
  • Các hạn chế 
  • Tương lai phát triển

Bài 4. Hệ thống ngôi nhà thông minh
  • Công nghệ hiện tại
  • Mô hình áp dụng
  • Hướng phát triển

Monday, November 7, 2016

Một số câu hỏi tìm hiểu môn THDC cho các lớp SIE kỳ 20161

Yêu cầu:
  • Mỗi câu trả lời khoảng 3-5 trang
  • Yêu cầu trình bày lại ý hiểu, không copy và paste
  • Phải bảo vệ mới được công nhận
  • Mỗi câu chỉ được 1 điểm
  • Không làm nhóm
Chú ý:
  • Nếu làm slide trình bày trên lớp sẽ được cộng 5 điểm
  • Mỗi câu chỉ được tối đa 2 người trình bày, vì vậy hay đăng ký sớm nhất có thể!
  1. IoT là gì ? hãy nêu một số mô hình về IoT trên thực tế?
  2. In 3D là gì? Hiện tại đang có những công nghệ in 3D nào, nêu một số thành tựu của in 3D đã có trong 
    1. Sinh học
    2. Công nghệ
    3. Y học
    4. Vật liệu mới
  3. Xe ô tô tự lái dùng những loại cảm biến nào? Tác dụng của những cảm biến ấy làm gì?
    Hiện có những hãng nào đang làm ô tô tự lái, và đã có ứng dụng nào trong thực tế chưa?
  4. Hiện tại công nghệ chế tạo bán dẫn đạt tới kích thước nhỏ nhất là bao nhiêu nm.
    Đã có những công nghệ của hãng nào được ứng dụng vào sản xuất các chip trong thực tế?
  5. Công nghệ chip Kabi Lake của intel đang đạt tới kích thước bao nhiêu nm?
    so với thế hệ chip sky lake, thì công nghệ này có những ưu việt gì?
  6. Big Data là công nghệ về lưu trữ và xử lý dữ liệu lớn.
    Vậy dữ liệu lớn là gì?
    Hiện tại Google, Facebook, Microsoft đang sử dụng những công nghệ gì để lưu trữ và xử lý dữ liệu lớn?
    Ứng dụng trong thực tế của nó là sản phẩm nào?
  7. Hiện tại đang có những công nghệ nào trong chế tạo card màn hình. Card màn hình được sử dụng trong nhận diện và học máy có cấu hình như thế nào, và có thể xử lý được bao nhiêu hình ảnh trong 1 s? Đang được áp dụng trong sản phẩm nào?
  8. Công nghệ lưu trữ dùng ổ cứng đặc SSD mới của Samsung có gì đặc biệt, tốc độ tối đa và dung lượng tối đa mà một ổ cứng mới nhất của Samsung có thể lưu trữ là bao nhiêu? Chip nhớ này có ưu điểm gì?
  9. Công nghệ chế tạo HDD (ổ cứng dùng đĩa từ) truyền thống hiện tại đang đạt tới tốc độ và dung lượng bao nhiêu? Hãng nào đang nắm công nghệ chủ đạo trong chế tạo ổ cứng HDD?
  10. Chuẩn bluetooth 5.0 sắp tới có những ưu điểm gì hơn so với chuẩn 4.0 hiện tại? Chuẩn này hiện đang được hỗ trợ bởi những hãng công nghệ nào và trong các thiết bị mới nào? 
  11. Công nghệ mạng không dây mới Li-fi khác gì so với Wi-fi? Ưu nhược điểm và tốc độ của Li-fi như thế nào?
  12. Chuẩn kết nối mới USB Type-C có những đặc điểm gì khác so với chuẩn USB 3.0 truyền thống? Tốc độ truyền dữ liệu ra sao? Hiện đã có những sản phẩm và những hãng công nghệ nào hỗ trợ chuẩn Type C này ?
  13. Điện năng lượng mặt trời hiện đang có những công nghệ nào mới nhất? Công suất lớn nhất mà 1 cell tế bào quang điện có thể cung cấp là bao nhiêu? Để cung cấp năng lượng khoảng 5Kwh thì cần bao nhiêu cell pin năng lượng mặt trời?

Monday, November 9, 2015

Một số bài tập cộng điêm môn THDC 20151

Bài 1. Nhập vào một số nguyên, hãy in ra số đó theo cách nhóm theo bộ 3 số
VD. nhập vào 123456789 thì in ra 123,456,789
Nhập vào 12345 thì in ra 12,345

Bài 2, Nhập vào một chuỗi số, hãy kiểm tra xem đó có phải là một SDT di động hợp lệ hay không. (Kiểu nhập vào nên là xâu ký tự)

Bài 3. Nhập vào một số nguyên có 3 tới 9 chữ số, hãy in ra màn hình cách đọc số nguyên đó
VD. 112 ==> mot tram muoi hai
104 ==> mot tram le bon
12345 ==> muoi hai nghin ba tram bon muoi nam

Bài 4. Nhập vào một số nguyên, hãy in ra màn hình xem số đó được tạo nên từ các chữ số nào.
VD 123123123 thì in ra các chữ số tạo nên số đó là 1 2 3

Bài 5. Nhập vào một đoạn văn bản từ bàn phím, hãy in ra màn hình những từ có ký tự được in hoa.
VD. At first, researchers did not see an obvious relationship between coffee consumption and death rates. Study participants who drank between less than a cup of coffee and three cups a day had 5% to 9% lower risk of dying than those who drank no coffee. Those who drank more than three cups a day did not see any benefit. The finding was murky, like previous studies, some of which suggested a benefit and some did not.

Thì in ra màn hình  At, Study, Those, The

Bài 6. Nhập vào một câu xâu, hãy chuẩn hóa xâu đó sao cho

  • Bắt đầu và kết thúc không được có dấu các trống
  • Không có quá 2 dấu cách trống giữa 2 từ liên tiếp
Bài 7.  Nhập vào một địa chỉ email, kiểm tra xem đó có phải là email hợp lệ hay không.
VD email hợp lệ abcd@efgh.com

Bài 8. Nhập vào một mảng xâu ký tự biểu diễn họ tên của các thành viên trong lớp (số thành viên không quá 100). Hay sắp xếp và in ra danh sách sao cho họ tên theo thứ tự ABC

Bài 9 (2 Đ). Nhập vào một mảng xâu ký tự biểu diễn họ tên của các thành viên trong lớp (số thành viên không quá 100). Hay sắp xếp và in ra danh sách sao cho tên các thành viên theo thứ tự ABC

Bài 10. Nhập vào một đoạn văn bản gồm chữ cái và chữ số, dấu cách. Hãy thống kê tần số xuất hiện của các ký tự trong văn bản và in ra các ký tự theo thứ tự tần số xuất hiện giảm dần.
Chú ý: Có phân biệt ký tự hoa và thường

Bài 11. 

Một số bài code VD trên lớp


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


// minh hoa toan tu logic tren bit
int main1()
{
int a = 5, b = 17;
// 5 = 0000 0000 0000 0000 0000 0000 0000 0101
// 17 = 0000 0000 0000 0000 0000 0000 0001 0001
//5^17 = 0000 0000 0000 0000 0000 0000 0001 0100

//5|17 = 0000 0000 0000 0000 0000 0000 0001 0101
//5&17 = 0000 0000 0000 0000 0000 0000 0000 0001
/*int c = a^b;
printf("%d ^ %d = %d", a, b, c);*/

/*
// 5 = 0000 0000 0000 0000 0000 0000 0000 0101
//~5 = 1111 1111 1111 1111 1111 1111 1111 1010
int d = ~a;
printf("~%d = %d", a, d);
*/
// 5 = 0000 0000 0000 0000 0000 0000 0000 0101
//5<<2 = 0000 0000 0000 0000 0000 0000 0001 0100
int d = a<<2;
printf("%d<<2 = %d", a, d);

_getch();
return 0;
}

========================================================
#include <stdio.h>
#include <stdlib.h>


// int ra man hinh co quy cach
int main2()
{
printf("1234567890123456789012345678901234567890\n");
printf("%5c\n", 'A');
printf("%-5c\n", 'A');
/*
printf("%f\n", 34.2);
printf("%7.2f\n", 34.2);
printf("%-7.2f\n", 34.2);
printf("%7.2f\n", 34.256);
printf("%.2f\n", 34.256);
*/
/*
printf("%5d\n", 4);
printf("%-5d\n", 4);
printf("%-5d\n", 123456);
*/
system("pause");
return 0;
}
========================================================
#include <stdio.h>
#include <stdlib.h>

// minh hoa if..else
int main3()
{
//1 nhap so kwh tieu thu
//2 tinh va in ra gia theo cong thuc
int soKwh; // so kwh
printf("Nhap vao so Kwh:");
scanf_s("%d", &soKwh);

int tien;
if (soKwh <= 50)
tien = soKwh * 500;
else if (soKwh <= 100)
tien = 50 * 500 + (soKwh - 50) * 1000;
else
tien = 50 * 500 +50*1000+ (soKwh - 100) * 2000;

printf("Tien phai tra cho so %d kwh la %d\n", soKwh, tien);

system("pause");
return 0;
}
========================================================

#include <stdio.h>
#include <stdlib.h>

// minh hoa switch..case
int main()
{
//1 nhap vao thang va in ra so ngay
int thang;
printf("Nhap vao thang can tra cuu:");
scanf_s("%i", &thang);
switch (thang)
{
case 2: printf("Thang co 28/29 ngay\n");
//break;
case 4: case 6: case 9: case 11: printf("Thang co 30 ngay\n");
break;
case 1: case 3: case 5: case 7: case 8: case 10: case 12:
printf("Thang co 31 ngay\n");
break;
default:
printf("%i la thang khong hop le\n", thang);
}

system("pause");
return 0;
}
========================================================
/*
Nhap vao mot so nguyen,
tinh tong cac chu so cua so nguyen do
VD: 1234 -> tong la 10
*/
#include <stdio.h>
#include <stdlib.h>

int main() {
int n, tong;
printf("Nhap vao mot so nguyen:");
scanf_s("%d", &n);

//tach tung chu so cua so nguyen? vd 1234
// chia lay phan du cho 10, (ta duoc 4)
//phan con lai la so chia lay phan nguyen cho 10 (duoc 123)
// lap toi khi phan nguyen bang 0 thi dung

/*
1234 ==> 123 va 4
123 ==> 12 va 3
12 ==> 1 va 2
1 ==> 0 va 1
*/
tong = 0;
int count=0;
while (n > 0)
{
/*count++;
printf("lan lap %d\n", count);
printf("Chu so don vi: %d\n", n % 10);
printf("So nguyen con lai: %d\n", n / 10);*/

tong = tong + n % 10;
n = n / 10;
}

printf("Tong cua cac chu so tao nen so la %d\n", tong);
system("pause");
return 0;
}
======================================================
/*
minh hoa switch .. case
*/
#include <stdio.h>
#include <stdlib.h>

int main4()
{
/*
nhap vao mot tuoi di hoc, va in ra trinh do va
cap hoc tuong ung
VD. 1-3 : mam non
4-5: mau giao
6-10: pho thong co so (tieu hoc)
11-15: trung hoc co so (trung hoc)
16-18: trung hoc pho thong (pho thong)
19-23: dai hoc
24->100: truong doi
*/
int n; // n>=1 va n<=100
printf("Nhap vao do tuoi:");
scanf_s("%d", &n);
while (n < 1 || n>100)
{
printf("Do tuoi khong hop le, nhap lai do tuoi:");
scanf_s("%d", &n);
}

if(n<=3)
printf("Hoc truong mam non");
else if(n<=5) //n>3 AND n<=5
printf("Hoc truong mau giao");
else if(n<=10)
printf("Hoc truong tieu hoc");
else if(n<=15)
printf("Hoc truong trung hoc");
else if(n<=18)
printf("Hoc truong pho thong");
else if (n <= 23)
printf("Hoc truong dai hoc");
else
printf("Hoc truong doi");

printf("\n");
system("pause");
return 0;
}

==================================================
/*
minh hoa switch .. case
*/
#include <stdio.h>
#include <stdlib.h>

int main3()
{
/*
nhap vao mot tuoi di hoc, va in ra trinh do va
cap hoc tuong ung
VD. 1-3 : mam non
4-5: mau giao
6-10: pho thong co so (tieu hoc)
11-15: trung hoc co so (trung hoc)
16-18: trung hoc pho thong (pho thong)
19-23: dai hoc
24->100: truong doi
*/
int n; // n>=1 va n<=100
printf("Nhap vao do tuoi:");
scanf_s("%d", &n);
while (n < 1 || n>100)
{
printf("Do tuoi khong hop le, nhap lai do tuoi:");
scanf_s("%d", &n);
}

switch (n)
{
case 1: case 2: case 3:
printf("Hoc truong mam non");
break;
case 4: case 5:
printf("Hoc truong mau giao");
break;
case 6: case 7: case 8: case 9: case 10:
printf("Hoc truong tieu hoc");
break;
case 11: case 12: case 13: case 14: case 15:
printf("Hoc truong trung hoc");
break;
default:
printf("Hoc truong doi");
break;
}
printf("\n");
system("pause");
return 0;
}

========================================================

#include <stdio.h>
#include <stdlib.h>

// minh hoa break, continue
int main()
{
/*
for (int i = 0; i < 10; i++)
for (int j = 1; j <= 10000; j++)
{
printf("Vong lap i = %d, j = %d\n", i, j);
if (j >= 5) break; //chi co tac dung voi vong lap cua j
}
*/
for (int i = 0; i < 5; i++)
for (int j = 1; j <= 20; j++)
{
if (j % 5) continue; //chi co tac dung voi vong lap cua j
//bo qua lenh phia sau khi
//j khong chia het cho 5
printf("Vong lap i = %d, j = %d\n", i, j);

}

system("pause");
return 0;
}

==================================================

#include <stdio.h>
#include <stdlib.h>

// minh hoa mang phan tu kieu so thuc (n<=100)
// 1. nhap mang
// 2. tim min, max
// 3. sap xep mang va in ra theo thu tu tang va giam dan
//  (cung voi mang ban dau) ==> tao ra mang copy
int main()
{
double A[100], B[100];
int n;

//0<n va n<=100
printf("Nhap vao so phan tu cua mang:");
scanf_s("%d", &n);
while (n<=0 || n>100)
{
printf("Hay nhap nhap so luong hop le:");
scanf_s("%d", &n);
}

//nhap vao mang
printf("Nhap vao gia tri tung phan tu:\n");
for (int i = 0; i < n; i++)
{
printf("A[%d]=", i);
scanf_s("%lf", &A[i]);
}

// tim min va max
double max=A[0];
for (int i = 0; i < n; i++)
{
if (max < A[i]) max = A[i];
}

double min = A[0];
for (int i = 0; i < n; i++)
{
if (min > A[i]) min = A[i];
}

printf("Gia tri lon nhat la %.2lf\n", max);
printf("Gia tri nho nhat la %.2lf\n", min);

// tao ban copy cua mang ban dau
for (int i = 0; i < n; i++)
B[i] = A[i];

for (int i = n; i >= 2; i--)
for (int j = 0; j < i - 1; j++)
{
if (A[j] > A[j + 1])
{
double phu = A[j];
A[j] = A[j + 1];
A[j + 1] = phu;
}
}

printf("Mang ban dau: \n");
for (int i = 0; i < n; i++)
{
printf("%.2lf, ", B[i]);
}
printf("\n");
printf("Mang sau khi sap xep: \n");
for (int i = 0; i < n; i++)
{
printf("%.2lf, ", A[i]);
}
printf("\n");
system("pause");
return 0;
}
=======================================================
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
/*
nhap vao mot ten
tach ra ho va ten

VD. Nguyen Tan Dung
Ho: Nguyen Tan
Ten : Dung
*/
int main()
{
char fullname[50];
//nhap vao ten
printf("Nhap vao ten:");

gets_s(fullname); //nhap duoc xau co dau cach trong


//scanf_s("%s", fullname); // khong co dau &
//==> khong nhap duoc xau co dau cach trong

printf("Xau vua nhap: %s\n", fullname);

//Tach ra phan ten va phan Ho
//1. Tim vi tri dau cach trong cuoi cung
int vitri = 0;
int i = 0;
while (i < strlen(fullname))
{
if (fullname[i] == ' ')vitri = i;
i++;
}

printf("Vi tri dau cach trong cuoi cung: %d\n", vitri);
// Phan Ho tu vi tri 0 toi Dau cach trong cuoi cung
char surname[50];
printf("Ho: ");
for (i = 0; i < vitri; i++)
{
surname[i] = fullname[i];
}
surname[i] = '\0';
printf("%s", surname);

printf("\n");

// Phan ten tu dau cach trong cuoi cung toi het
printf("Ten: ");

// in tung ky tu!, dung strncpy
for (i = vitri+1; i < strlen(fullname); i++)
printf("%c", fullname[i]);
printf("\n");
system("pause");
return 0;
}

============================================================
#include <stdlib.h>
#include <stdio.h>

/*
minh hoa mang struct dung luu tru thong tin sinh vien
*/
typedef struct TTSV
{
char hoten[50];
char shsv[15];
float gk, th, ck;
float hp; //tinh theo cong thuc 0.2*(gk+th) + 0.6*ck
} SV;

//dung typedef de dinh nghia lai ten cau truc cho ngan
//typedef struct TTSV SV;

int main9()
{
SV lop[100];
int n; // so thanh vien thuc su (n>0 va n<=100)

//nhap thong tin cac thanh vien lop
printf("Nhap so thanh vien cua lop:");
scanf_s("%d", &n);
while (n <= 0 || n > 100)
{
printf("Hay nhap so luong hop le:");
scanf_s("%d", &n);
}
char buffer[100];

// dung vong lap for der nhap thong tin tung thanh vien
for (int i = 0; i < n; i++)
{
gets_s(buffer);
printf("Nhap vao thong tin thanh vien thu %d:\n", i + 1);
printf("Ho ten:"); fflush(stdin);// do bo nho dem truoc khi nhap xau
gets_s(lop[i].hoten);

printf("SHSV:"); fflush(stdin);// do bo nho dem truoc khi nhap xau
gets_s(lop[i].shsv);

printf("Diem giua ky:");
scanf_s("%f", &lop[i].gk);

printf("Diem thuc hanh:");
scanf_s("%f", &lop[i].th);

printf("Diem cuoi ky:");
scanf_s("%f", &lop[i].ck);
}

// tinh diem hoc phan
for (int i = 0; i < n; i++)
{
if (lop[i].gk < 3 || lop[i].th < 3)
lop[i].hp = 0;
else
lop[i].hp = 0.2*(lop[i].gk + lop[i].th) + 0.6*lop[i].ck;
}

//dem so luong sinh vien khong qua va in ra thong tin sinh vien qua
printf("Ket qua hoc tap:\n");
int sosinhvienkodat = 0;
printf("%30s %10s %4s %4s %4s %4s\n","Ho ten   ","SHSV  ","GK ","TH ","CK ","HP ");
for (int i = 0; i < n; i++)
{
if (lop[i].hp < 4) sosinhvienkodat++;
else
{
printf("%30s %10s %.2f %.2f %.2f %.2f\n", lop[i].hoten,
lop[i].shsv, lop[i].gk, lop[i].th, lop[i].ck, lop[i].hp);
}
}
printf("Tong so sinh vien khong dat: %d\n", sosinhvienkodat);

// sap xep va in ra thong tin sinh vien theo diem hoc phan giam dan
for (int i = n; i >= 2; i--)
for (int j = 0; j < i-1; j++)
{
if (lop[j].hp < lop[j + 1].hp)
{
SV phu = lop[j];
lop[j] = lop[j + 1];
lop[j + 1] = phu;
}
}
printf("\n========================================\n");
printf("Danh sach sinh vien voi diem hp giam dan:\n\n");
printf("%30s %10s %4s %4s %4s %4s\n", "Ho ten   ", "SHSV  ", "GK ", "TH ", "CK ", "HP ");
for (int i = 0; i < n; i++)
{
printf("%30s %10s %.2f %.2f %.2f %.2f\n", lop[i].hoten,
lop[i].shsv, lop[i].gk, lop[i].th, lop[i].ck, lop[i].hp);
}
system("pause");
return 0;
}


====================================================================

#include <stdlib.h>
#include <stdio.h>
#include <math.h>
/*
minh hoa ham xu ly tam giac
*/
double tinhChuvi(double a, double b, double c)
{
if (a <= 0 || b <= 0 || c <= 0) return -1; //Canh khong hop le
if (a + b <= c || b + c <= a || a + c <= b)
return -2;// khong tao thanh tam giac
return a + b + c;
}

double tinhDienTich(double a, double b, double c)
{
if (a <= 0 || b <= 0 || c <= 0) return -1; //Canh khong hop le
if (a + b <= c || b + c <= a || a + c <= b) 
return -2;// khong tao thanh tam giac

double p = tinhChuvi(a, b, c) / 2;
return sqrt(p*(p - a)*(p - b)*(p - c));
}

int main10()
{
double x, y, z;
printf("Nhap vao do dai 3 canh tam giac:");
scanf_s("%lf%lf%lf", &x, &y, &z);
if (tinhChuvi(x, y, z) < 0) printf("Tam giac khong hop le!\n");
else printf("Chu vi tam giac : %lf\n", tinhChuvi(x, y, z));
if (tinhDienTich(x, y, z) < 0) printf("Tam giac khong hop le!\n");
else printf("Dien tich tam giac : %lf\n", tinhDienTich(x, y, z));

system("pause");
return 0;

}


=========================================================

#include <stdio.h>
#include <stdlib.h>

/*
mih hoa doc so co tu 1->3 chu so
*/

//hàm đọc chữ số
void docChuSo(int a)
{
if (a == 0) printf("khong");
else if (a == 1)printf("mot");
else if (a == 2)printf("hai");
else if (a == 3)printf("ba");
else if (a == 4)printf("bon");
else if (a == 5)printf("nam");
else if (a == 6)printf("sau");
else if (a == 7)printf("bay");
else if (a == 8)printf("tam");
else if (a == 9)printf("chin");
else printf("ERROR!!!");
}

// kiem tra so can doc co phai so tuf 1->3 chu so hay khong
// ham tra ve -1 neu khong hop le, nguoc lai tra ve 0
int kiemTra(int n)
{
if (n>999 || n<-999) return -1;
else return 0;
}

// doc so co tu 1->3 chu so
void docSo(int n)
{
int a, b, c;// phan tram, chuc va don vi
if (kiemTra(n) == -1)
printf("Loi! So khong hop le.\n");
else
{
if (n<0) {
printf("am ");
n = -n;
}
c = n % 10; n = n / 10;
b = n % 10; n = n / 10;
a = n % 10;

if (a>0) { docChuSo(a); printf(" tram "); }
if (a>0 && b == 0 && c!=0)printf("le ");
if (b == 1) { printf("muoi "); }
if (b>1) { docChuSo(b); printf(" muoi "); }
if(c!=0) docChuSo(c);  
printf("\n");
}
}

int main11(void)
{
docSo(-115);
docSo(-125);
docSo(-105);
docSo(-5);
docSo(25);
docSo(15);
docSo(110);
docSo(100);
docSo(10);
system("pause");
return 0;
}


===================================================

#include <stdio.h>
#include <stdlib.h>

void increase(int x)
{
x = x * 2;
}
void increase(int A[], int size)
{
for (int i = 0; i < size; i++)
A[i] = A[i] * 2;
}
void printArray(int A[], int size)
{
for (int i = 0; i < size; i++)
printf("%d ", A[i]);
}
int main12()
{
int a = 5;
printf("Gia tri ban dau cua a:%d\n", a);
increase(a);
printf("Gia tri cua a sau khi goi ham:%d\n", a);

int A[] = { 1,3,5,7,4 };
printf("Mang ban dau:"); 
printArray(A, 5);
printf("\n");

increase(A, 5);

printf("Mang sau khi goi ham:");
printArray(A, 5);
printf("\n");

system("pause");
return 0;
}


=========================================================

#include <stdio.h>
#include <stdlib.h>


void sort(int a[], int n)
{
int i, j, temp;
for (i = 0; i < n - 1; ++i)
for (j = i + 1; j < n; ++j)
if (a[i] < a[j]) {
temp = a[i];
a[i] = a[j];
a[j] = temp;
}
}
void display(int A[], int size)
{
int i;
for (i = 0; i<size; i++)
printf("%d ", A[i]);
printf("\n");
}

int main(void)
{
int i;
int array[16] = { 34, -5, 6, 0, 12, 100, 56, 22,
44, -3, -9, 12, 17, 22, 6, 11 };

printf("Mang ban dau:\n");
display(array, 16);

sort(array, 16);

printf("Mang sau khi sap xep:\n");
display(array, 16);

system("pause");
return 0;
}

Thursday, October 22, 2015

Một số đề kiểm tra cũ môn THDC


Friday, October 3, 2014

Một số bài tập lập trình cho SIE

Bài 1. Tính điểm
Đầu vào: là một file text  (input.txt) chứa tên các thư mục của các bạn nộp bài tập theo tuần
Đầu ra: Số lượng bài tập nộp của từng sinh viên (lấy theo mã sinh viên) và điểm được in ra màn hình và xuất ra file output.txt

VD. File đầu vào: input.txt
DSA_20133_BuiDuyKhanh_20101702
DSA_20133_BuiTranLinh_20125640
DSA_20133_BuiVanKhanhDuy_20115499
DSA_20133_BuiVanQuan_20125730
DSA_20133_DANGTUNGQUAN_20115703
DSA_20133_DangVanToan_20115783
DSA_20133_DaoDieuThanh_20115770
DSA_20133_DinhHuyHung_20125577
DSA_20133_DoThiAnh_20115455
DSA_20133_DoVanTuan_20112412
DSA_20133_DngVnNhn_20136934
DSA_20133_Ha Minh Quyet_20122305
DSA_20133_HoangQuocViet_20112500
DSA_20133_Hoàng Minh Quyn_20125738
DSA_20133_LeHaiNam_20101907
DSA_20133_LuuAnhTai_20102116
DSA_20133_LyVanHieu_20115572
DSA_20133_LÊ MINH TRANG_20115796
DSA_20133_Lê Tun Anh_20104839
DSA_20133_Lê Ðc Anh_20115429
DSA_20133_LêCaoK_20115609
DSA_20133_LêVnHi_20090936
DSA_20133_Lu Trung Hiu _20101512
DSA_20133_LngVnAnh_20115434
DSA_20133_NguyenDaiPhong_20111979
DSA_20133_NguyenDangHoang_20101577
DSA_20133_NguyenDinhGiap_20121601
DSA_20133_NguyenDucDuy_20104833
DSA_20133_NguyenGiaVu_20112479
DSA_20133_NguyenHoangSon_20112073
DSA_20133_NguyenHuyHieu_20102652
DSA_20133_NguyenHuyHoang_20121749
DSA_20133_NGUYENHUYMEN_20136928
DSA_20133_NguyenManhSang_20115724
DSA_20133_NGUYENNGOCHIEU_20115573

File đầu ra output.txt

Tong so bai nop: 111
So bai nop trung binh: 4.05
Diem trung binh: 1.48
=================================
BuiDuyKhanh 20101702 5 2
BuiTranLinh 20125640 5 2


Điểm được tính theo số bài nộp theo công thức sau

5 bài : 2 điểm
4 bài : 1.5 điểm
3 bài: 1 điểm
2 bài 0.5 điểm
<=1 bài: 0 điểm

Download Data
https://drive.google.com/folderview?id=0B5nb3v94xY_WSVBzWnctQW9qeDA&usp=sharing


Bài 2. Xây dựng chương trình hiển thị giờ hiện tại của hệ thống

Yêu cầu: Viết chương trình hiển thị giờ hiện tại của hệ thống dưới dạng số dùng các ký hiệu giống dạng LED điện tử

12:35:00

*   ****         ****    ****        ****    ****
*         *           *    *           *     *   *    *
*   ****         ****    ****       *    *   *    *
*   *                 *          *     *     *   *    *
*   ****         ****    ****        ****    ****

Độ dài của mỗi số có thể thay đổi trong khoảng (5-9)

Bài 3. Xây dựng chương trình đọc số 

Mục đích: đọc số

123 -> mot tram hai muoi ba
12454 -> muoi hai nghin buon tram nam muoi bon
1013.678 -> mot nghin khong tram muoi ba phay sau tram bay tam

Các số này sẽ được nhập từ file hoặc bàn phím, kết quả sẽ được in ra màn hình và file tương ứng

Số được đọc có định dạng: số thực, phần nguyên tối đa 11 chữ số và phần thập phân tối đa 4 chữ số

XX XXX XXX XXX.YYYY

Bài 4. Xây dựng một chương trình quản lý danh ban tương tự chương trình quản lý danh bạ trên điện thoại.
Thông tin contact được lưu vào file (khi hiển thị sẽ được đọc ra từ file)
Các trường của một contact gồm

  • họ tên
  • giới tính
  • sdt
  • địa chỉ
  • email
Chương trình hỗ trợ tìm kiếm đơn giản theo họ tên hoặc địa chỉ

Bài 5. xây dựng tiện ích tìm kiếm các file trên windows 

Đầu vào là một pattern (một từ hoặc một phần tên file), và một thư mục sẽ tìm kiếm
Đầu ra là danh sách các file (kèm đường dẫn) mà có tên file chứa pattern

VD. pattern là ".mp3", và đường dẫn là C:\musics

Thì chương trình sẽ đưa ra tất cả các file có tên chứa ".mp3" trong phần tên của thư mục trên


Bài 6. Xây dựng chương trình tính và hiển thị góc giữa kim giờ và kim phút của đồng hồ.

VD. 9:00 thì kim giờ ở vị trí 9 và kim phút ở vị trí 10 -> góc là 90o
6:00 thì góc là 180o
(chỉ cần tính góc <=180o)

Đầu vào: Một giờ bất kỳ
Đầu ra: Góc giữa hai kim

Bài 7. Xây dựng chương trình tìm kiếm các tên riêng trong văn bản

Đầu vào: một file văn bản chứa một đoạn văn bản bằng tiếng anh lấy trên trang báo nước ngoài
Đầu ra: Danh sách các tên riêng xuất hiện trong văn bản đó và tần số

VD. Văn bản đầu vào là

"Come out of the shadows and get right with the law," urged President Barack Obama in a televised address.
Republicans say the action, without Congress, is beyond his authority and relations will now be poisoned.
There are about 11m illegal immigrants in the US and this year children coming across the border prompted a crisis.
Under the plan, undocumented parents of children who are US citizens or legal residents will be able to apply for work permits lasting three years.
Only parents who have lived in the US for five years will qualify - about 3.7m people are estimated to fit this criteria.

Các tên riêng và tần số xuất hiên tương ứng

President Barack Obama 1
Republicans 1
Congress 1
US 3



Bài 8. Thống kê số lượng câu, từ và độ dài của văn bản
Đầu vào: một file văn bản chứa một đoạn văn bản bằng tiếng anh lấy trên trang báo nước ngoài
Đầu ra: Số lượng câu, số lượng từ, số lượng ký tự, độ dài trung bình của một câu, một từ

Các từ trong tiếng nah được ngăn cách bởi dấu các trống và các dấu câu

Tuesday, September 9, 2014

Một số card màn hình thế hệ mới - THDC_SIE_20141_TRANTHIPHUONG_20138355 baitaptuan3


Máy tính bảng và giáo dục phổ thông - THDC_SIE_20141_VũMinhTrí_20138474 baitaptuan3


Thực trạng thương mại điện tử ở Việt Nam - THDC_SIE_20141_VuTuanAnh_20138730 Baitaptuan3


Thực trạng thương mại điện tử ở Việt Nam - THDC_SIE_nguyenhoangphong_20138639 baitaptuan3

I. Khó khăn khách quan
1. Thị phần nhỏ bé
Hiện nay chỉ mới được khoảng hơn 2 triệu khách hàng mua hàng qua TMĐT – con số quá bé so với hơn 35 triệu người dùng Internet và dân số 90 triệu người dân Việt Nam.
Nếu xét về doanh số, tại Việt Nam rất khó thống kê chính xác nhưng ước tính đạt khoảng gần $500 triệu trong năm 2012. Đem so với các cường quốc về TMĐT trên thế giới như Mỹ (343 tỷ), Nhật (127 tỷ), Anh (124 tỷ) và Trung Quốc (110 tỷ) thì thị trường TMĐT thật quá nhỏ bé.
Chính vì thị phần bé như vậy, nên khi triển khai mô hình TMĐT cụ thể, việc lựa chọn đối tượng khách hàng khá khó khăn và phải rất thận trọng để đưa ra mô hình phục vụ phù hợp với phân khúc khách hàng mình lựa chọn.
Khi triển khai mô hình TMĐT cụ thể, việc lựa chọn đối tượng khách hàng khá khó khăn và phải rất thận trọng để đưa ra mô hình phục vụ phù hợp.

2. Thói quen mua hàng
Vẫn tâm lý ra cửa hàng tạp hoá đầu ngõ để mua những đồ dùng thiết yếu hay ra các cửa hàng offline để mua sắm các đồ dùng, đồ thời trang và đồ công nghệ.
- Thói quen thích nhìn tận mắt, sờ tận tay
- Thói quen thanh toán bằng tiền mặt

3. Niềm tin
Người tiêu dùng tại Việt Nam vẫn chưa đặt niềm tin vào mua sắm trực tuyến, họ vẫn có cái nhìn thiếu thiện cảm với các hình thức kinh doanh trên mạng. Thực tế, có rất nhiều khách hàng phản ánh rằng sản phẩm họ nhận được khác xa với những gì họ nhìn thấy trên website, do vậy niềm tin vào TMĐT cũng bị lung lay.
Nguyên nhân của thực trạng này là do TMĐT đang bị lạm dụng, bóp méo bởi sự làm ăn thiếu chuyên nghiệp của các đơn vị cung cấp sản phẩm. Điển hình như vụ việc MB24 đã lợi dụng danh nghĩa TMĐT để phục vụ lợi ích riêng cho mình khiến cho khách hàng hiểu sai về TMĐT.
Một số khác thì dùng kênh TMĐT để phân phối hàng giả, hàng nhái kém chất lượng nhằm qua mắt người tiêu dùng – một cách làm ăn rất chụp giựt.

4. Hạ tầng thanh toán
- Thanh toán qua thẻ còn ít
- Các bước thanh toán qua internet banking rắc rối và không nhất quán giữa các ngân hàng
- Thẻ chủ yếu dùng để nhận lương và rút tiền tại ATM
- Chi phí giao dịch cao
- Hình thức thanh toán chưa đa dạng
- Cơ chế hoàn tiền còn chậm và chưa rõ ràng
- Hành lang pháp lý còn lỏng lẻo

5. Dịch vụ giao nhận
- Chưa có đơn vị thứ 3 thực sự chuyên nghiệp để đảm bảo tốt dịch vụ giao nhận mà không ảnh hưởng đến chất lượng phục vụ, hầu hết các đơn vị làm TMĐT đều phải tự xây dựng đội ngũ giao nhận để nắm quyền chủ động trong việc kiểm soát và điều phối hiệu quả cũng như chất lượng phục vụ khách hàng.
- Do đặc thù địa lý Việt Nam trải dài, mặt khác volume thị trường còn bé đồng thời việc tự tổ chức đội ngũ giao nhận khiến cho chi phí giao nhận rất cao, chiếm từ 10-15% giá trị của 1 giao dịch.

6. Vốn đầu tư
Đầu tư vào TMĐT là dài hạn và đốt tiền, thậm chí đốt rất nhiều tiền. Chi phí cho nhân sự, marketing, stock hàng là những chi phí rất lớn. Nếu không có khoản đầu tư lớn thì chỉ đi được nửa đường là chết, khi mà lợi nhuận chưa thể bù đắp cho khoản tiền đầu tư để educate thị trường, để làm brand và hoàn thiện quy trình.
Do vậy bạn nào đang hi vọng làm TMĐT sẽ thu lời được ngay thì tốt nhất đừng dấn thân vào TMĐT làm gì. Theo nguồn tin cá nhân thì tất cả các đơn vị đang đầu tư cho TMĐT tại Việt Nam thì chưa có đơn vị nào có lãi (trừ một số dự án vertical e-commerce), mà ngược lại số tiền đầu tư đã lên đến hàng triệu đô.

II. Khó khăn chủ quan
Xét một cách toàn diện thì các đơn vị làm TMĐT vẫn đang ở tâm lý vừa làm vừa thăm dò thị trường và tìm cách phản ứng để phù hợp với tâm lý người tiêu dùng. Do vậy việc triển khai khó có thể diễn ra bài bản ngày từ đầu và xuyên suốt trong quá trình hoạt động.
Mặt khác, rất nhiều đơn vị làm TMĐT vẫn chưa hiểu rõ thấu đáo sự khác biệt của TMĐT với bán hàng offline truyền thống, vẫn bê nguyên tư duy vận hành offline lên online, dẫn đến sự phản ứng chậm chạp, thiếu chuyên nghiệp và không phát huy hết lợi thế của online, chưa đánh trúng tâm lý của người tiêu dùng online.
Người tiêu dùng online có những hành vi và tâm lý mua hàng khác với người tiêu dùng offline. Người làm TMĐT cần hiểu rõ tâm lý đối tượng khách hàng của mình để có thể đưa ra những phương thức phục vụ phù hợp.


III. Kết luận
Để triển khai TMĐT thành công, bạn phải hiểu rất rõ về những gì bạn đang có và hiểu rõ về ngành hàng cũng như phân khúc khách hàng bạn đang nhắm tới, nhằm phát triển và chiếm tối đa thị phần trong mảng mình kinh doanh.
Chất lượng dịch vụ và kiểm soát tồn kho, thất thoát là hai khó khăn lớn nhất trong việc triển khai TMĐT nhưng nó lại là yếu tố sống còn để quyết định mô hình TMĐT của bạn có thành công hay không.


Ví dụ khó khan trong một số mô hình TMĐT
a. Mô hình sàn giao dịch
- Người dùng thường tìm đến các website có nhiều tin để đọc, và ngược lại người bán cũng tìm đến website có nhiều người đọc để đăng tin rao. Do đó, khi thiết lập mới một sàn giao dịch TMĐT, cần phải có được ngay lượng thông tin phong phú để thu hút người đọc, đặc biệt việc làm SEO sẽ giúp cho website có được nguồn traffic tự nhiên cực lớn
- Giao dịch trên các sàn giao dịch hầu như không có, mà đó chỉ là nơi người bán và người mua gặp nhau, sau đó tự liên lạc và thoả thuận hình thức bán hàng và thanh toán. Vì thế độ tin cậy sẽ không cao.
- Bài toán kiếm tiền từ mô hình này khá đơn giản, khiến cho việc muốn tăng mạnh doanh số rất khó khăn. Các mô hình tiêu biểu bao gồm: bán banner quảng cáo, bán tin VIP, bán lượt hiển thị các trang đầu

b. Mô hình website bán lẻ
- Khó khăn lớn nhất của mô hình này là kiểm soát hàng tồn kho. Để hàng tồn kho quá lâu và không có sự kiểm soát chặt chẽ và thường xuyên thì tất cả những khoản lãi thu được đều không đủ để bù lỗ cho chi phí hàng tồn kho
- Khó khăn thứ 2 là tạo được sự tin cậy và minh bạch về thông tin hàng hoá, giá cả, để cho tỷ lệ chuyển đổi (CR) phải luôn ở mức cao nhất nhằm tiết kiệm chi phí marketing, nâng cao hiệu quả bán hàng. Theo kinh nghiệm của tôi thì các website TMĐT phải đảm bảo tỷ lệ chuyển đổi ở mức tối thiểu 1% (CR=1%), có nghĩa là 100 người truy cập vào website của bạn thì ít nhất phải có 1 người mua hàng. Nhưng thực tế rất ít đơn vị đầu tư cho việc tracking hiệu quả và liên tục cải tiến để tăng CR.
- Khó khăn thứ 3 là đảm bảo chất lượng dịch vụ logistic từ khâu giao hàng, hỗ trợ sau bán, bảo hành, đổi trả hàng hoá đều phải chính xác, thân thiện và nhanh chóng. Mỗi nhân viên giao hàng, nhân viên CSKH đều phải là đại sứ bán hàng của công ty.
- Khó khăn thứ 4 là về margin, nếu bạn bán được nhiều thì các nhà phân phối mới chiết khấu cao cho bạn, nếu không thì % chiết khấu sẽ thấp và khó cạnh tranh về giá với đối thủ và thị trường offline. Ngược lại, nếu bạn để giá cao thì khó bán hàng, dẫn đến sản lượng thấp. Do vậy bạn cần cân đối thật chắc chắn về chính sách giá cũng như doanh số bán hàng.
- Khó khăn thứ 5 là cá lớn nuốt cá bé. Các ông lớn sẵn sàng vung tiền để phủ thị trường, để đạt quy mô và được giá tốt, lúc này việc cạnh tranh giữa các đơn vị quy mô nhỏ sẽ khó khăn hơn rất nhiều.


c. Mô hình website khuyến mãi, giảm giá
Ở mô hình này thì ngoài khó khăn như mô hình website bán lẻ, nó còn có khó khăn rất lớn đó là làm việc và thuyết phục nhà cung cấp đồng ý giảm giá ở mức đủ để hấp dẫn khách hàng mà nhà cung cấp không được lỗ hoặc chỉ lỗ ít để mang lại nguồn thu cũng như khách hàng mới cho họ.
Khách hàng của mô hình này thông thường kém trung thành, nên việc giữ chân khách hàng là điều rất khó. Do vậy cần có những quyết định trong chiến lược để khai thác lợi nhuận ngắn hạn từ những khách hàng có được, tránh việc đầu tư dài hạn để lấy user với hi vọng sau đó sẽ khai thác từ tập khách hàng đó.

d. Mô hình website đấu giá trực tuyến
Rõ ràng rằng tại Việt Nam, mô hình này đang gặp rào cản rất lớn đó là thiếu niềm tin. Tôi không tin là tôi đấu giá có thể trúng với giá rẻ, tôi không tin các nhà cung cấp sẵn sàng cho đi sản phẩm của mình chỉ nhằm mục đích quảng bá… có hàng vạn lý do để người tham gia không tin vào hình thức này.
Để làm mô hình này thành công, trước hết website đấu giá phải đảm bảo mọi yếu tố đều minh bạch và show được nó cho khách hàng thấy để họ khỏi nghi ngờ chân gỗ hay sự thiếu trung thực.

e. Mô hình localize e-commerce và dịch vụ
- Về localize e-commerce, sự mở rộng thị trường rất khó khăn và chậm do yếu tố địa phương hoá. Mặt khác, yếu tố chất lượng dịch vụ được đặt lên hàng đầu. Do vậy áp lực về chất lượng dịch vụ rất lớn, đòi hỏi người làm mô hình này phải kiểm soát tốt, song song với đó là chi phí đầu tư cho dịch vụ phải cao thì mới đảm bảo được chất lượng theo yêu cầu. Ví dụ về mô hình gọi món online, nếu sau 30-45 phút mà không giao được đồ ăn cho khách thì khách sẵn sàng huỷ order ngay lập tức.

- Về các website dịch vụ như đặt bàn, đặt chỗ, đặt phòng khách sạn,… thì khó kiểm soát được chất lượng của nhà cung cấp. Bởi lẽ mô hình này chỉ là yếu tố trung gian kết nối khách hàng với merchant. Nếu merchant không làm hài lòng khách hàng thì sẽ khó chiêu dụ khách hàng quay lại sử dụng tiếp dịch vụ của website. Do vậy cần kết hợp với các merchant để cùng kiểm soát chất lượng dịch vụ của merchant.

Wednesday, September 3, 2014

Hệ thống nhúng THDC_SIE_20141_LeMinhNguyen_20138317

Bài tập tuần 2: Tìm hiểu về hệ thống nhúng

Hệ thống nhúng (Embedded system) là một thuật ngữ để chỉ một hệ thống có khả năng tự trị được nhúng vào trong một môi trường hay một hệ thống mẹ. Đó là các hệ thống tích hợp cả phần cứng và phần phềm phục vụ các bài toán chuyên dụng trong nhiều lĩnh vực công nghiệp, tự động hoá điều khiển, quan trắc và truyền tin. Đặc điểm của các hệ thống nhúng là hoạt động ổn định và có tính năng tự động hoá cao.

Nói một cách đơn giản khi một hệ tính toán (có thể là PC, IPC, PLC, vi xử lý, vi hệ thống, DSP vv…) được nhúng vào trong một sản phẩm hay một hệ thống một cách hữu cơ và thực hiện một số chức năng cụ thể của hệ thống thì ta gọi đó là một hệ thống nhúng. Ví dụ quanh ta có rất nhiều sản phẩm nhúng như lò vi sóng, nồi cơm điện, điều hoà, điện thoại di động, ô tô, máy bay, tàu thuỷ, các đầu đo cơ cấu chấp hành thông minh vv. Ta có thể thấy hiện nay hệ thống nhúng có mặt ở mọi lúc mọi nơi trong cuộc sống của chúng ta.            Các nhà thống kê trên thế giới đã thống kê được rằng số chip vi xử lý ở trong các máy PC và các server, các mạng LAN, WAN, Internet chỉ chiếm không đầy 1% tổng số chip vi xử lý có trên thế giới. Hơn 99% số vi xử lý còn lại nằm trong các hệ thống nhúng.Như vậy công nghệ thông tin không chỉ đơn thuần là PC, mạng LAN, WAN và Internet như nhiều người thường nghĩ. Đó chỉ là bề nổi của một tảng băng chìm. Phần chìm của công nghệ thông tin chính là các ứng dụng của các hệ nhúng có mặt trong mọi ngành nghề của đời sống xã hội hiện nay.            Các hệ nhúng được tích hợp trong các thiết bị đo lường điều khiển và các sản phẩm cơ điện tử tạo nên đầu não và linh hồn của sản phẩm.Trong các hệ nhúng, hệ thống điều khiển nhúng đóng một vai trò hết sức quan trọng.            Hệ điều khiển nhúng là hệ thống mà máy tính được nhúng vào vòng điều khiển của sản phẩm nhằm điều khiển một đối tượng, điều khiển một qúa trình công nghệ đáp ứng các yêu cầu đặt ra. Hệ thống điều khiển nhúng lấy thông tin từ các cảm biến, xử lý tính toán các thuật điều khiển và phát tín hiệu điều khiển cho các cơ cấu chấp hành.            Khác với các hệ thống điều khiển cổ điển theo nguyên lý thuỷ lực, khí nén, rơ le, mạch tương tự, hệ điều khiển nhúng là hệ thống điều khiển số được hình thành từ những năm 1960 đến nay. Trước đây các hệ điều khiển số thường do các máy tính lớn đảm nhiệm, ngày nay chức năng điều khiển số này do các chip vi xử lý, các hệ nhúng đã thay thế. Phần mềm điều khiển ngày càng tinh sảo tạo nên độ thông minh của thiết bị và ngày càng chiếm tỷ trọng lớn trong giá thành của thiết bị.            Như vậy không phải tất cả các sản phẩm đo lường và điều khiển đều là các hệ nhúng. Hiện nay chúng ta còn gặp nhiều hệ thống điều khiển tự động hoạt động theo nguyên tắc cơ khí, thuỷ lực, khí nén, rơ le, hoặc diện tử tương tự…            Ngược lại phần lớn các sản phẩm cơ điện tử hiện nay đều có nhúng trong nó các chip vi xử lý hoặc một mạng nhúng. Ta biết rằng cơ điện tử là sự cộng năng của các công nghệ cơ khí, điện tử, điều khiển và công nghệ thông tin. Sự phối hợp đa ngành này tạo nên sự vượt trội của các sản phẩm cơ điện tử.         Sản phẩm cơ điện tử ngày càng tinh sảo và ngày càng thông minh mà phần hồn của nó do các phần mềm nhúng trong nó tạo nên. Các sản phẩm cơ điện tử là các sản phẩm có ít nhất một quá trình cơ khí (thường là một quá trình chuyển động), là đối tượng để điều khiển do vậy các sản phẩm cơ điện tử ngày nay thường có các hệ nhúng trong nó nhưng ngược lại không phải hệ thống nhúng nào cũng là một hệ cơ điện tử.


Các đặc điểm của hệ thống nhúng
Hệ thống nhúng thường có một số đặc điểm chung như sau:
• Các hệ thống nhúng được thiết kế để thực hiện một số nhiệm vụ chuyên dụng chứ không phải đóng vai trò là các hệ thống máy tính đa chức năng. Một số hệ thống đòi hỏi ràng buộc về tính hoạt động thời gian thực để đảm bảo độ an toàn và tính ứng dụng; một số hệ thống không đòi hỏi hoặc ràng buộc chặt chẽ, cho phép đơn giản hóa hệ thống phần cứng để giảm thiểu chi phí sản xuất.
• Một hệ thống nhúng thường không phải là một khối riêng biệt mà là một hệ thống phức tạp nằm trong thiết bị mà nó điều khiển.
• Phần mềm được viết cho các hệ thống nhúng được gọi là firmware và được lưu trữ trong các chip bộ nhớ ROM hoặc bộ nhớ flash chứ không phải là trong một ổ đĩa. Phần mềm thường chạy với số tài nguyên phần cứng hạn chế: không có bàn phím, màn hình hoặc có nhưng với kích thước nhỏ, dung lượng bộ nhớ thấp Sau đây, ta sẽ đi sâu, xem xét cụ thể đặc điểm của các thành phần của hệ thống nhúng.

- Giao diện
Các hệ thống nhúng có thể không có giao diện (đối với những hệ thống đơn nhiệm) hoặc có đầy đủ giao diện giao tiếp với người dùng tương tự như các hệ điều hành trong các thiết bị để bàn. Đối với các hệ thống đơn giản, thiết bị nhúng sử dụng nút bấm, đèn LED và hiển thị chữ cỡ nhỏ hoặc chỉ hiển thị số, thường đi kèm với một hệ thống menu đơn giản.
Còn trong một hệ thống phức tạp hơn, một màn hình đồ họa, cảm ứng hoặc có các nút bấm ở lề màn hình cho phép thực hiện các thao tác phức tạp mà tối thiểu hóa được khoảng không gian cần sử dụng; ý nghĩa của các nút bấm có thể thay đổi theo màn hình và các lựa chọn. Các hệ thống nhúng thường có một màn hình với một nút bấm dạng cần điểu khiển (joystick button). Sự phát triển mạnh mẽ của mạng toàn cầu đã mang đến cho những nhà thiết kế hệ nhúng một lựa chọn mới là sử dụng một giao diện web thông qua việc kết nối mạng. Điều này có thể giúp tránh được chi phí cho những màn hình phức tạp nhưng đồng thời vẫn cung cấp khả năng hiển thị và nhập liệu phức tạp khi cần đến, thông qua một máy tính khác. Điều này là hết sức hữu dụng đối với các thiết bị điều khiển từ xa, cài đặt vĩnh viễn. Ví dụ, các router là các thiết bị đã ứng dụng tiện ích này.

- Kiến trúc CPU
Các bộ xử lý trong hệ thống nhúng có thể được chia thành hai loại: vi xử lý và vi điều khiển. Các vi điều khiển thường có các thiết bị ngoại vi được tích hợp trên chip nhằm giảm kích thước của hệ thống. Có rất nhiều loại kiến trúc CPU được sử dụng trong thiết kế hệ nhúng như ARM, MIPS, Coldfire/68k, PowerPC, x86, PIC, 8051, Atmel AVR, Renesas H8, SH, V850, FR-V, M32R, Z80, Z8 … Điều này trái ngược với các loại máy tính để bàn, thường bị hạn chế với một vài kiến trúc máy tính nhất định. Các hệ thống nhúng có kích thước nhỏ và được thiết kế để hoạt động trong môi trường công nghiệp thường lựa chọn PC/104 và PC/104++ làm nền tảng. Những hệ thống này thường sử dụng DOS, Linux, NetBSD hoặc các hệ điều hành nhúng thời gian thực như QNX hay VxWorks. Còn các hệ thống nhúng có kích thước rất lớn thường sử dụng một cấu hình thông dụng là hệ thống on chip (System on a chip – SoC), một bảng mạch tích hợp cho một ứng dụng cụ thể (an application-specific integrated circuit – ASIC). Sau đó nhân CPU được mua và thêm vào như một phần của thiết kế chip. Một chiến lược tương tự là sử dụng FPGA (field-programmable gate array) và lập trình cho nó với những thành phần nguyên lý thiết kế bao gồm cả CPU.

-Thiết bị ngoại vi
Hệ thống nhúng giao tiếp với bên ngoài thông qua các thiết bị ngoại vi, ví dụ như:
• Serial Communication Interfaces (SCI): RS-232, RS-422, RS-485...
• Synchronous Serial Communication Interface: I2C, JTAG, SPI, SSC và ESSI
• Universal Serial Bus (USB)
• Networks: Controller Area Network, LonWorks...
• Bộ định thời: PLL(s), Capture/Compare và Time Processing Units
• Discrete IO: General Purpose Input/Output (GPIO)

-Công cụ phát triển
Tương tự như các sản phẩm phần mềm khác, phần mềm hệ thống nhúng cũng được phát triển nhờ việc sử dụng các trình biên dịch (compilers), chương trình dịch hợp ngữ (assembler) hoặc các công cụ gỡ rối (debuggers). Tuy nhiên, các nhà thiết kế hệ thống nhúng có thể sử dụng một số công cụ chuyên dụng như:
• Bộ gỡ rối mạch hoặc các chương trình mô phỏng (emulator)
• Tiện ích để thêm các giá trị checksum hoặc CRC vào chương trình, giúp hệ thống nhúng có thể kiểm tra tính hợp lệ của chương trình đó.
• Đối với các hệ thống xử lý tín hiệu số, người phát triển hệ thống có thể sử dụng phần mềm workbench như MathCad hoặc Mathematica để mô phỏng các phép toán.
• Các trình biên dịch và trình liên kết (linker) chuyên dụng được sử dụng để tối ưu hóa một thiết bị phần cứng.
• Một hệ thống nhúng có thể có ngôn ngữ lập trình và công cụ thiết kế riêng của nó hoặc sử dụng và cải tiến từ một ngôn ngữ đã có sẵn.
Các công cụ phần mềm có thể được tạo ra bởi các công ty phần mềm chuyên dụng về hệ thống nhúng hoặc chuyển đổi từ các công cụ phát triển phần mềm GNU. Đôi khi, các công cụ phát triển dành cho máy tính cá nhân cũng được sử dụng nếu bộ xử lý của hệ thống nhúng đó gần giống với bộ xử lý của một máy PC thông dụng.

-Độ tin cậy
Các hệ thống nhúng thường nằm trong các cỗ máy được kỳ vọng là sẽ chạy hàng năm trời liên tục mà không bị lỗi hoặc có thể khôi phục hệ thống khi gặp lỗi. Vì thế, các phần mềm hệ thống nhúng được phát triển và kiểm thử một cách cẩn thận hơn là phần mềm cho máy tính cá nhân. Ngoài ra, các thiết bị rời không đáng tin cậy như ổ đĩa, công tắc hoặc nút bấm thường bị hạn chế sử dụng. Việc khôi phục hệ thống khi gặp lỗi có thể được thực hiện bằng cách sử dụng các kỹ thuật như watchdog timer – nếu phần mềm không đều đặn nhận được các tín hiệu watchdog định kì thì hệ thống sẽ bị khởi động lại.
Một số vấn đề cụ thể về độ tin cậy như:
• Hệ thống không thể ngừng để sửa chữa một cách an toàn, ví dụ như ở các hệ thống không gian, hệ thống dây cáp dưới đáy biển, các đèn hiệu dẫn đường,… Giải pháp đưa ra là chuyển sang sử dụng các hệ thống con dự trữ hoặc các phần mềm cung cấp một phần chức năng.
• Hệ thống phải được chạy liên tục vì tính an toàn, ví dụ như các thiết bị dẫn đường máy bay, thiết bị kiểm soát độ an toàn trong các nhà máy hóa chất,… Giải pháp đưa ra là lựa chọn backup hệ thống.
• Nếu hệ thống ngừng hoạt động sẽ gây tổn thất rất nhiều tiền của ví dụ như các dịch vụ buôn bán tự động, hệ thống chuyển tiền, hệ thống kiểm soát trong các nhà máy …

-  Một số ví dụ điển hình về hệ thống nhúng
o   Các hệ thống dẫn đường trong không lưu, hệ thống định vị toàn cầu, vệ tinh.
o   Các thiết bị gia dụng: tủ lạnh, lò vi sóng, lò nướng,…
o   Các thiết bị kết nối mạng: router, hub, gateway,…
o   Các thiết bị văn phòng: máy photocopy, máy fax, máy in, máy scan,…
o   Các thiết bị y tế: máy thẩm thấu, máy điều hòa nhịp tim,…
o   Các máy trả lời tự động 
o   Dây chuyền sản xuất tự động trong công nghiệp, robots.
Các hệ thống nhúng tạo cơ sở cho kỷ nguyên hậu PC (post-PC era), các hệ thống xử lý thông tin chuyển dần từ PC sang hệ thống nhúng cho các ứng dụng cụ thể.


NOTE: Đặt tên các thư mục con cho các tuần sai!