Chủ Nhật, 14 tháng 6, 2015

HỌC LẬP TRÌNH WEB

Học Lập trình web cần những gì?
HTML, CSS, Javascript
Đầu tiên các bạn bắt buộc phải học các kiến thức về Thiết kế cơ bản đó là HTML, CSS để tạo nên bộ mặt hay còn gọi là Giao diện tĩnh cho website. Ngoài ra cũng có thể học luôn Ngôn ngữ Lập trình web dạng nhẹ là Javascript để làm quen với Ngôn ngữ Lập trình web, là bước đệm cho việc Học các Ngôn ngữ Lập trình web phức tạp hơn sau này (Có thể học sau cũng không sao)
PHP & MySQL (Lập trình hướng thủ tục & Lập trình hướng đối tượng)
Tiếp đến các bạn sẽ cần phải học Ngôn ngữ Lập trình web PHP và Hệ quản trị CSDL MySQL. Đây chính là những ngôn ngữ nền tảng để tạo nên một hệ thóng website hoàn chỉnh mà các bạn thường thấy trên mạng. Nó cũng chính là chìa khóa để các bạn có thể tiếp cận được với nhiều công nghệ web tiên tiến, phức tạp khác sau này. Vậy nên việc học tập và nghiên cứu nghiêm túc sao cho hiệu quả ở giai đoạn này là rất quan trọng và then chốt.
Giai đoạn này các bạn cũng có thể bổ sung vào kho tàng kiến thức của mình một số các Công nghệ web liên quan có thể nói là khá đình đám như Ajax, XML, Regular Expression, JQuery, Htaccess,…
PHP Framework
Sau khi bạn đã thành thạo với Ngôn ngữ Lập trình web PHP rồi, Thành thạo mà Tôi nói ở đây đó là các bạn đã phải trải qua một số dự án thức tế (Tự tay Build những hệ thống website của riêng mình) và phải xây dựng trên mô hình Hướng đối tượng trong PHP (PHP OOP). Thì các bạn sẽ phải làm quen với một mô hình Lập trình khá mới mẻ và hiện đang rất phổ biến đó là mô hình MVC.
Một số Framework PHP làm việc với mô hình MVC mà các bạn có thể tham khảo để học hoặc trong quá trình làm việc các bạn sẽ gặp phải hoặc bị sếp của mình bắt nghiên cứu đó là CodeIgniter, Zend Framework, CakePHP,… Các bạn chỉ cần nghiên cứu thật chuyên sâu 1 trong 3 cái trên thì những cái còn lại khi nào cần sử dụng các bạn sẽ học rất là nhanh. Chú ý là để tiếp cận được các PHP Framework thì các bạn cần phải biết các kiến thức về Lập trình hướng đối tượng trong PHP mà Tôi đã đề cập ở trên.
PHP CMS
Cuối cùng thì các bạn cũng nên nghiên cứu thêm về các PHP CMS. Vì trước sau gì thì các bạn cũng sẽ phải làm việc với nó cho các dự án trung bình và nhỏ. Bởi các PHP CMS là những hệ thống quan trị nội dung được xây dựng sẵn phần Admin (quản trị) một cách hết sức chuyên nghiệp và đầy đủ. Từ nền tảng đó chúng ta dễ dàng cài đặt và tùy biến thành những hệ thống website rất mạnh mẽ chỉ trong thời gian ngắn mà không tốn quá nhiều công sức (Các Công ty Thiết kế web hiện rất ưa chuộng cách sử dụng các hệ thống CMS này để xuất bản những website giá rẻ hoặc cả giá tầm trung cho khách hàng).

Một số CMS khá nổi tiếng và phổ biến hiện nay gồm có Joomla, WordPress, Drupal, Magento,…
CÔNG CỤ HỖ TRỢ VIẾT CODE VÀ XEM NGAY KẾT QUẢ TRÊN WEB:

Thứ Hai, 25 tháng 5, 2015

Tổng hợp bài giải Lập trình C [OTL]

Một số bài tập C và C++ do mình giải, viết trên Visual C, các bạn có thể tải về để tham khảo:
https://app.box.com/s/vwfmt1o7rntlzfysi6054cuodazjph38
Còn đây là file bài tập của thầy Nhật (Khoa CNTT - Đại học Khoa học Huế):
https://app.box.com/s/4np5v8ejm518kofffdpuuzyszbhhg2vm
Các bạn có thể tham khảo thêm các bài viết của thầy:
http://it.husc.edu.vn/gv/tvqnhat/baiviet/laptrinh/

Đề thi NNLT BC 2014:
https://app.box.com/s/6q5en2q2wps8zdgjzh642f3dxoo0niqy

Thứ Năm, 7 tháng 8, 2014

Danh sach liên kết Mật khẩu


/**
Tạo 1 dslk  THONG TIN gồm tài khoản và mật khẩu ...
a.Nhập danh sách, điều kiện mật khẩu phải có ít nhất 1 chữ cái hoa, 1 chữ cái thường, 1 chữ số và 1 kí tự đặc biệt.
mật khẩu có ít nhất 8 kí tự.
dừng nhập khi nhập vào tài khoản là kí tự trắng.
b. Bổ sung 1 tài khoản vào danh sách, nếu đã có thì ko bổ sung nữa.
c. Xóa tất cả các tài khoản trùng nhau.
/**/
#include<stdio.h>
#include<conio.h>
#include<string.h>
#include<malloc.h>
struct TK
{
 char tk[100];
 char mk[100];
 TK *tiep;
};
TK *dau=NULL, *cuoi;
void tao(char *tk,char *mk)
{
 TK *p=(TK*)malloc(sizeof(TK));
 // hoặc dùng TK *p=new TK; trong C++
 strcpy(p->tk,tk);
 strcpy(p->mk,mk);
 if(dau==NULL)
  dau=p;
 else
  cuoi->tiep=p;
 p->tiep=NULL;
 cuoi=p;
}
int ktra_mat_khau(char* s)
{
 if(strlen(s)<8)
  return 0;
 for(int i=0;s[i];i++)
  if(s[i]>=32&&s[i]<=126) // các ký tự ASCII in được bao gồm các chữ cái, chữ số và ký tự đặc biệt
   return 1;
 return 0;
}
void nhap()
{
 int i=1;
 char tk1[100],mk1[100];
 while(1)
 {
  printf("\n Nhap thong tin tai khoan %d: ",i);
  printf(" Ten tai khoan: ");
  fflush(stdin);
  gets(tk1);
  if(tk1[0]==NULL)
   return;
  do
  {
   printf(" Mat khau: ");
   fflush(stdin);
   gets(mk1);
  } while(ktra_mat_khau(mk1)==0);
 
  tao(tk1,mk1);
  i++;
 }
}
void inds()
{
 for(TK *p=dau;p!=NULL;p=p->tiep)
  printf("\n Tai khoan: %s; Mat khau: %s",p->tk,p->mk);
}
void bosung(char* tk1, char* mk1)
{
 for(TK *p=dau;p!=NULL;p=p->tiep)
  if(strcmp(p->tk,tk1)==0)
   return;
 tao(tk1,mk1);
}
void main()
{
 nhap();
 printf("\n---------------------------------\n");
 printf("\n\n Nhap thong tin can bo sung: ");
 char tk1[100],mk1[100];
 printf("Tai khoan: ");
 fflush(stdin);
 gets(tk1);
 printf("Mat khau: ");
 fflush(stdin);
 gets(mk1);
 bosung(tk1,mk1);
 inds();
 getch();
}

Thứ Tư, 6 tháng 8, 2014

In các từ dài nhất trong chuỗi

#include<stdio.h>
#include<string.h>
#include<conio.h>
#include<stdlib.h>
void tim(char *s)
 {
 int cuoi, i=0, j=0, max=0, dem=0;
 for(; i<=strlen(s); i++)
 {
  if(s[i]!=' '&&s[i]!='\0') dem++;
  else
  {
   if(dem>max)
   {
    max=dem;
    cuoi=i-1;
   }
   dem=0;
  }
 }
 int m=0;
 int vt[100];
 for(i=0; i<=strlen(s); i++)
{
 if(s[i]!=' '&&s[i]!='\0') dem++;
 else
 {
  if(dem==max)
  {
   vt[m]=i-1;
   m++;
  }
  dem=0;
 }
}
 for(i=0;i<m;i++)
 {
 for(j=vt[i]-max+1; j<=vt[i]; j++)
  printf("%c",s[j]);
 printf("\n");
 }

}

void main()
{
 char s[100];
 printf(" Nhap chuoi: ");
 gets(s);
 printf(" Cac tu dai nhat trong chuoi la: \n");
 tim(s);
 getch();
}

Thứ Hai, 4 tháng 8, 2014

Struct quản lý học phần

/**
Để quản lý các học phần trong một trường đại học, người ta quản lý các thông tin: 
+ mã học phần
+ tên học phần, 
+ số tín chỉ
+ loại học phần (có hai loại học phần: tự nhiên và xã hội. 
Nếu là học phần dành cho khối tự nhiên thì dữ liệu của trường này là “TN”, nếu là học phần dành cho khối xã hội thì dữ liệu của trường này là “XH”.

a. Nhập vào thông tin của n (n<=200) học phần với điều kiện không có hai học phần nào trùng mã với nhau.
b. In ra màn hình thông tin của những học phần có đơn giá lớn hơn g với g là giá trị nhập vào từ bàn phím. 
Biết rằng đơn giá của học phần tính theo công thức: số tín chỉ * 120000 * hệ số đơn giá 
(nếu là học phần tự nhiên thì hệ số đơn giá là 1.5, nếu là học phần xã hội thì hệ số đơn giá là 1.0). 
Thông tin của mỗi học phần in trên một dòng theo thứ tự: mã học phần, tên học phần, số tín chỉ, loại học phần 
(tự nhiên/xã hội), đơn giá học phần.
c. In ra màn hình thông tin của các học phần có mã học phần bắt đầu bởi chuỗi ký tự “TIN” và có số tín chỉ nhỏ hơn 3.
/**/

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

struct HP
{
char ma[20],ten[50];
int sotc;
char loai[3];
};

void nhap(HP *a,int n)
{
for(int i=0;i<n;i++)
{
printf("\n\n Nhap hoc phan thu %d",i+1);

printf("\n-   Ten hoc phan: ");
fflush(stdin);
gets(a[i].ten);

int k;
do
{
k=0;
printf("-   Ma hoc phan: ");
fflush(stdin);
gets(a[i].ma);
for(int j=0;j<i;j++)
if(strcmp(a[j].ma,a[i].ma)==0)
{
k=1;
break;
}
}
while(k==1);

printf("-   So Tin chi: ");
scanf("%d",&a[i].sotc);

printf("-   Loai hoc phan: chon (1): Tu Nhien  -  (2) Xa Hoi \n");

char t;
do
{
fflush(stdin);
t=getch();
if(t=='1')
strcpy(a[i].loai,"TN");
else if(t=='2')
strcpy(a[i].loai,"XH");

if(t=='1')
printf("+  HP tu nhien");
else if(t=='2')
printf("+  HP xa hoi");

} while(t!='1'&&t!='2');
}
}

float dongia(HP a)
{
float s=a.sotc*120000;
if(strcmp(a.loai,"TN")==0)
s=s*1.5;
return s;
}

void in(HP *a,int n,float m)
{
for(int i=0;i<n;i++)
if(dongia(a[i])>m)
printf("\n Ma: %s; TenHP: %s; SoTC: %d; Loai: %s; DonGia: %g",a[i].ma,a[i].ten,a[i].sotc,a[i].loai,dongia(a[i]));
}

void in1(HP *a,int n)
{
for(int i=0;i<n;i++)
if(strncmp(a[i].ma,"TIN",3)==0&&a[i].sotc<3)
printf("\n Ma: %s; TenHP: %s; SoTC: %d; Loai: %s; DonGia: %g",a[i].ma,a[i].ten,a[i].sotc,a[i].loai,dongia(a[i]));
}

void main()
{
HP a[200];
int n;

printf(" Nhap so hoc phan: ");
scanf("%d",&n);

nhap(a,n);

printf("\n\n--------------------------------");

float g;
printf("\n\n Nhap don gia g= ");
scanf("%f",&g);
printf("\n\n Thong tin cua nhung hoc phan co don gia lon hon %g la: ",g);

in(a,n,g);

printf("\n\n Cac hoc phan bat dau bang chuoi ky tu TIN va co so tin chi <3 la: ");

in1(a,n);

getch();
}

Struct cuộc gọi

/**
Để quản các cuộc gọi điện thoại nội mạng (gọi là các cuộc gọi) người ta quản lý các thông tin sau: 
+ số máy thực hiện cuộc gọi, 
+ số máy nhận cuộc gọi, thời gian thực hiện cuộc gọi (tính bằng giây), 
+ thời điểm thực hiện cuộc gọi (thời điểm thực hiện cuộc gọi có hai loại là giờ thấp điểm và giờ cao điểm (giá trị 1 ứng với giờ thấp điểm, giá trị 0 ứng với giờ cao điểm). 

Hãy khai báo mảng cấu trúc để lưu thông tin của các cuộc gọi và viết chương trình thực hiện các công việc sau:
a. Nhập vào thông tin của n (n  100) cuộc gọi với điều kiện không có cuộc gọi nào có số máy thực hiện cuộc gọi trùng với số máy nhận cuộc gọi.
b. In ra màn hình thông tin của những cuộc gọi có thời gian gọi lớn hơn m  phút với giá trị m  nhập vào từ bàn phím. Thông tin của mỗi cuộc gọi in trên một dòng theo thứ tự: 
 số máy thực hiện cuộc gọi, số máy nhận cuộc gọi, thời gian thực hiện cuộc gọi, 
thời điểm thực hiện cuộc gọi (giờ thấp điểm/giờ cao điểm).
c. In ra màn hình thông tin của các cuộc gọi có số tiền cao nhất. Biết rằng, 6 giây đầu tiên có đơn giá là 800 đồng/6 giây (nếu gọi chưa đủ 6 giây thì làm tròn số tiền đến 6 giây thực hiện cuộc gọi), các giây tiếp theo có đơn giá 100 đồng/giây. 
Ngoài ra trong giờ thấp điểm thì đơn giá sẽ được giảm 10%.
/**/

/**/

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

struct DT
{
char goi[12],nhan[12];
int tg,td;
};

void nhap(DT *a,int n)
{
for(int i=0;i<n;i++)
{
printf("\n\n Nhap cuoc goi thu %d",i+1);

printf("\n-   So may goi: ");
fflush(stdin);
gets(a[i].goi);

char tam[12];
do
{
printf("-   So may nhan: ");
fflush(stdin);
gets(tam);
}
while(strcmp(tam,a[i].goi)==0);

strcpy(a[i].nhan,tam);

printf("-   Thoi gian: ");
scanf("%d",&a[i].tg);

printf("-   Thoi diem: ");
scanf("%d",&a[i].td);
}
}

void thongtin(DT a)
{
printf("\n- So may goi: %s",a.goi);
printf("; So may nhan: %s",a.nhan);
printf("; Thoi gian: %d",a.tg);
if(a.td==1)
printf("; Gio thap diem");
else printf("; Gio cao diem");
}

void inthongtin(DT *a,int n,int m)
{
for(int i=0;i<n;i++)
if(a[i].tg>m)
thongtin(a[i]);
}

float dongia(DT a)
{
float gia;
if(a.tg<=6)
gia=800;
else gia=(a.tg-6)*100+800;
if(a.td==1)
gia=gia*9/10;
return gia;
}

void intiencaonhat(DT *a,int n)
{
float max=dongia(a[0]);
for(int i=0;i<n;i++)
if(dongia(a[i])>max)
max=dongia(a[i]);

for(int i=0;i<n;i++)
if(dongia(a[i])==max)
thongtin(a[i]);
}

void main()
{
DT a[100];
int n;

printf(" Nhap so luong cuoc goi: ");
scanf("%d",&n);

nhap(a,n);

printf("-------------------------------");

int m;
printf("\n Nhap so phut: ");
scanf("%d",&m);
printf("\n Thong tin cuoc goi lon hon %d phut la: ",m);
inthongtin(a,n,m);

printf("\n\n Thong tin cuoc goi co so tien cao nhat la: ");
intiencaonhat(a,n);

getch();

}
/**/