ICT SUBMIT 2016 : Cách mạng số - cơ hội và thách thức

Diễn đàn cấp cao CNTT - TRƯỜNG Việt Nam 2016 mở ra cơ hội tớ lớn cho sinh viên CNTT nói riêng và sinh viên Việt Nam nói chung.

Thủ tướng Nguyễn Xuân Phúc,  có bài phát biểu quan trọng mang tính chi đạo cụ thể. Trong đó nhấn mạnh vai trò đặc biệt quan trọng của CNTT - TT.
Qua dự báo của các chuyên gia, nhà lãnh đạo hàng đầu thì nguồn nhân lực CNTT đăng và sẽ thiếu hụt cả về số lượng và chất lượng một cách nghiệm trọng.
Ông Trương Đinh Tuyển,  trong bài dẫn của mình đã chỉ ra những cơ hội phát triển kinh tế của Việt Nam đã bị bỏ lỡ. Ông cũng chỉ ra các thách thức mà chúng ta phải đối mặt.
Trong diễn đàn đã nhắc nhiều về cuộc cách mạng công nghiệp lần thứ tư. Trong cuộc cách mạng này các xứ thế nổi bật nhất được kể tới như Điện toán nhận thức, trí tuệ nhân tạo, IoT (thế giới vạn vật kết nối), dữ liệu lớn, ...
Ông Trương Gia Bình dẫn dắt diễn đàn quan trọng mà chủ đề là Startup, gắn liền với chủ đề Quốc gia khởi nghiệp.


Sau diễn đàn này Chính phủ sẽ ban hành một loạt các qui định hỗ trợ trợ, thúc đẩy Startup và ứng dụng CNTT - TT. 
Thời cơ tuyệt vời đã đến với Sinh viên CNTT nói riêng và sinh viên Việt Nam nói chung. 
Chúc các bạn thành công.

TxT đưa tin từ ICT SUBMIT 2016.

[Lập trình hướng đối tượng với Java] Ví dụ: Bài toán quản lý điểm [210916]

[Lập trình hướng đối tượng với Java] Ví dụ: Bài toán quản lý điểm 

Xây dựng Project quản lý điểm cho sinh viên.
Yêu cầu: In ra thông tin sinh viên
- Họ tên
- Lớp
- Tuổi
- Điểm tổng kết
- Điểm chữ
(Biết rằng, sinh viên đã có các điểm năm 1,2,3)

* Lưu ý:
Tạo Project QLDiem
Code:

// Class SinhVien
package qldiem; 
import java.util.Scanner; 
public class SinhVien {
    // thuộc tính
    private String hoTen,tenLop;
    private int tuoi;
    private float diem1,diem2,diem3;
   
    // phương thức NhapTT
    void NhapTT(){
        Scanner inp=new Scanner(System.in);
        System.out.print("\n Ho ten: ");      
        hoTen=inp.nextLine();
        System.out.print("\n Ten lop: ");
        tenLop=inp.nextLine();
        System.out.print("\n Tuoi: ");
        tuoi=inp.nextInt();
        System.out.print("\n Diem nam 1: ");
        diem1=inp.nextFloat();
        System.out.print("\n Diem nam 2: ");
        diem2=inp.nextFloat();
        System.out.print("\n Diem nam 3: ");
        diem3=inp.nextFloat();
    } 
    // Tính điểm
    private float TinhDiem(){
        return (diem1+diem2+diem3)/3;
    } 
    // Điểm chữ
    private char DiemChu(){
        char dChu;
        float dtb=TinhDiem();
        if (dtb<4) dChu='F';
        else if (dtb<5.5) dChu='D';
            else if (dtb<7) dChu='C';
                else if (dtb<8.5) dChu='B';
                    else dChu='A';
        return dChu;
    }
    // In thông tin
    void InTT(){
        System.out.println("\n "
                + "* IN THONG TIN SINH VIEN: "
                + "\n Ho ten: "+ hoTen
                + "\n Lop:" + tenLop
                + "\n Tuoi:" + tuoi
                + "\n Diem trung binh: "+TinhDiem()
                + "\n Diem chu: "+DiemChu());               
    }
}

// Class QLDiem (class chính)
package qldiem;
public class QLDiem {
 
    public static void main(String[] args) {
      // khai bao doi tuong
      SinhVien toto=new SinhVien();
      toto.NhapTT();
      toto.InTT();
   
    }
   
}

tailieucntt.org



----------


Cùng bạn tự học CNTT - tailieucntt.org

[Lập trình Hướng đối tượng với Java] Khai báo lớp (class) và đối tượng (object) [Ví dụ 210916]

[Lập trình Hướng đối tượng với Java] Khai báo lớp (class) và đối tượng (object) [Ví dụ 210916]

Sử dụng ngôn ngữ lập trình Java xây dựng Project BaiThi2 với các class sau:
- Class HinhHoc:
+ Thuộc tính: Tên hình
+ Phương thức: Khởi tạo, nhập thông tin (tên hình và số cạnh)
- Class HinhTron (hình tròn), kế thừa lớp HinhHoc, bổ sung thêm các thuộc tính và phương thức:
+ Thuộc tính: r (bán kính)
+ Phương thức: Nhập thông tin (kế thừa từ lớp HinhHoc; bố sung thêm nhập r), tính chu vi, tính diện tích, in kết quả.


* Lưu ý: 
Tạo project: KhaiBaoClass_Object.
Code:

package baithi2;
import java.util.Scanner;

// class HinhHoc
class HinhHoc{
    // thuoc tinh
    String tenHinh;
    // khoi tao
    public HinhHoc(String tenHinh){
        this.tenHinh=tenHinh;
    }
    // nhap thong tin
    void NhapTT(){
        Scanner inp=new Scanner(System.in);
        System.out.print("\n Nhap ten hinh: ");
        tenHinh=inp.nextLine();
    }
}
// class HinhTamGiac
class HinhTron extends HinhHoc{
    // thuoc tinh
    float r;
    // khoi tao
    public HinhTron(String tenHinh,float r){
        super(tenHinh);
        this.r=r;       
    }
    // Nhap thong tin
    void NhapTT(){
        super.NhapTT();
        Scanner inp=new Scanner(System.in);
        System.out.print("\n Nhap ban kinh: ");
        do{       
        System.out.print("\n + r: ");
        r=inp.nextFloat();
        if (r<=0)
            System.out.print("\n => Nhap lai ban kinh duong tron! ");
        }while(r<=0);
    }
    // Tinh chu vi
    float ChuVi(){
        return (float)(2*Math.PI*r);
    }
    // tinh dien tich
    float DienTich(){
        return (float)Math.PI*r*r;
    }

----------


Cùng bạn tự học CNTT - tailieucntt.org
    // In ket qua
    void InKQ(){
        System.out.print("\n In ket qua: ");
        System.out.print("\n + Ten hinh: "+tenHinh);
        System.out.print("\n + Chu vi: "+ChuVi());
        System.out.print("\n + Dien tich : "+DienTich());               
    }
}

// class chính
public class BaiThi2 {  
    public static void main(String[] args) {
        // khai bao doi tuong
        HinhTron tr=new HinhTron("",1);
        tr.NhapTT();
        tr.InKQ();
    }
   

}


tailieucntt.org

[Java core] Bài tập cấu trúc điều khiển và mảng [210916]

[Java core] Bài tập cấu trúc điều khiển và mảng [210916]

Sử dụng ngôn ngữ lập trình Java viết chương trình thực hiện (6 điểm):
- Nhập vào từ bàn phím dãy số nguyên dương có n phần tử (2< n < 20)
- In dãy số vừa nhập
- In ra màn hình số lớn nhất
Sắp xếp dãy số trên theo thứ tự tăng dần.


------------------
* Lưu ý:
Tạo project: Vidu210916
Code:

package Vidu210916;
import java.util.Scanner;

public class Vidu210916 {
  
    public static void main(String[] args) {
        // khai bao
        int [] a = new int[20];
        int n;
       
        // Nhap day so
        Scanner inp=new Scanner(System.in);
        do{
            System.out.print("\n n= ");
            n=inp.nextInt();
            if (n<2||n>20)
                System.out.print("\n Nhap lai n ");
        }while (n<2||n>20);
       
   
        for(int i=0;i<n;i++)
        {
            System.out.print("\n a["+i+"]= ");
            a[i]=inp.nextInt();
        }
       
        // in day so
        System.out.print("\n In day vua nhap: \n");
        for(int i=0;i<n;i++)       
            System.out.print(a[i]+", ");
           
        // in so lon nhat
        int max=a[0];
        for(int i=0;i<n;i++)       
            if(a[i]>max) max=a[i];
        System.out.print("\n So nho nhat: "+max);
       
        // Sap xep day tang dan
        for(int i=0;i<n-1;i++)       
            for (int j=i+1;j<n;j++)
            if(a[j]<a[i])
            {
                int t=a[i];
                a[i]=a[j];
                a[j]=t;
            }
        
        System.out.print("\n Day da sap xep");                      
        for(int i=0;i<n-1;i++)       
            System.out.print(a[i]+", ");                      
    }   
}
tailieucntt.org

----------


Cùng bạn tự học CNTT - tailieucntt.org

[Bài viết hay] Hãy trả lời những câu hỏi sau, trước khi quyết định trở thành một nhà phát triển độc lập.

[Bài viết hay] Hãy trả lời những câu hỏi sau, trước khi quyết định trở thành một nhà phát triển độc lập.

Lập trình viên độc lập

Tôi có nên trở thành một nhà phát triển độc lập?

Đây là một câu hỏi tôi chắc chắn rằng rất nhiều người sẽ bỏ qua trước khi họ bắt đầu cuộc hành trình của họ như là một nhà phát triển độc lập. Có một số thành công với những mục tiêu của họ, một số thì không. Tôi nghĩ trước khi bắt đầu bạn thực sự nên tự hỏi bản thân một số câu hỏi và nghiêm túc trả lời chúng càng thực tế càng tốt để tránh những "thất vọng" về sau. Nếu bạn muốn làm điều đó để trải nghiệm thì bạn có thể bỏ qua, bởi vì bạn sẽ tìm thấy được niềm vui của bạn. Nhưng nếu bạn muốn làm điều đó như một nghề nghiệp thực sự, bạn nên đọc những câu hỏi sau đây và trả lời chúng một cách thực tế nhất.

1. Trở thành một nhà phát triển độc lập vì bạn thích thế hay bạn muốn tạo dựng sự nghiệp theo con đường này? 

Đối với nhiều người, đây thực sự chỉ là một sở thích hay một cái gì đó họ làm bán thời gian trong khi họ tìm kiếm một công việc toàn thời gian. Quyết định trở thành một nhà phát triển độc lập toàn thời gian mà không nhận thấy được những khó khăn đã được chứng minh là sẽ trở thành một thảm họa chứ không phải là một giấc mơ trở thành sự thật. Để có được một sản phẩm để ra bán, bạn sẽ phải đảm nhiệm rất nhiều công việc. Nếu bạn thực hiện dự án của bạn một mình, ở mức độ tối thiểu bạn cần code, thiết kế scene/level, tạo video/audio, tạo/chỉnh sửa hình ảnh, test, quản lý tài khoản, và tiếp thị sản phẩm của bạn. Nếu bạn không thể làm tất cả những điều này, bạn cần phải tìm kiếm một đội hoặc sẽ phải đối mặt với một chuỗi dài của sự thất vọng và lo lắng.

2. Bạn có đủ khả năng về tài chính cũng như làm chủ cảm xúc khi thất bại? 

Nó sẽ xảy ra, chắn chắn là thế. Nếu trò chơi đầu tiên bạn làm mà đạt được thành công vang dội tức là bạn chỉ vừa trúng số mà thôi. Nhiều khả năng nó sẽ lấy đi của "một chút" thời gian và tiền bạc. Và nếu như bạn không thể mạnh dạng chấp nhận thất bại và cố gắng thử lại một lần nữa, bạn sẽ không thể bước tiếp.

3. Bạn có chắc chắn là những game, ứng dụng bạn sẽ phát triển chỉ cần 1 mình bạn (hoặc thêm một người nào đó) là có thể hoàn thiện? 

Là một nhà phát triển độc lập hoặc nhóm indie nhỏ đòi hỏi bạn phải có khả năng để làm một loạt các nhiệm vụ không "chuyên ngành" khác. Nó giống như bạn là một thợ xây chính, nhiệm vụ của bạn là xếp những cục gạch để xây bức tường, nhưng vì bạn chỉ có một mình, bạn cần phải tự mình xách nước, xúc cát, trộn hồ.... Nếu bạn đang nghĩ đến việc làm một cái gì đó rất chuyên nghiệp và to lớn về quy mô, bạn cần phải suy nghĩ về những rủi ro so với những phần thưởng mà dự án có thể mang lại. Bạn có đủ khả năng tài chính để làm việc trên một dự án 1-2 năm? Nếu không, có lẽ bạn nên bắt đầu từ những cái nhỏ nhất và làm việc theo cách nào đó để bạn có thể phát triển ra nhiều tham vọng lớn hơn.

4. Bạn có thực sự thích thú tất cả các khía cạnh của làm game, ứng dụng? 

Để tạo ra được một sản phẩm, từng công đoạn/thành phần của sự phát triển là sẽ lấy đi của bạn một số lượng thời gian rất đáng kể. Có lẽ sẽ có một số giai đoạn mà bạn không thích hoặc nhàm chán như cắt ghép ảnh, tìm kiếm audio cho từng hành động... Bạn có chắc là bạn có đủ kiên nhẫn để vượt qua những công đoạn này? Nếu bạn không, bạn sẽ có thể bỏ qua hoặc thấy mình tăng tốc để lướt qua các công đoạn này và cuối cùng bạn đã tạo ra một cái gì đó không hoàn thiện.

Đây chỉ là một số câu hỏi mà bạn nên biết trước khi bạn quyết định đi theo con đường phát triển độc lập, nhưng tôi nghĩ nó đã bao hàm hết tất cả những vấn đề của con đường này. Hãy dành một chút thời gian và nghiêm túc trả lời chúng. Tất nhiên, thất bại là một điều tốt nếu bạn có kế hoạch cho nó. Thất bại có thể dạy cho bạn những bài học mà thành công sẽ không bao giờ dạy cho bạn. Nhưng nếu bạn có thể "xử lý" được những câu hỏi này, tôi tin rằng... cho dù bạn có thất bại, nó cũng không thể đánh gục được bạn.

Nguồn gamestudio

----------


Cùng bạn tự học CNTT - tailieucntt.org

[Đồ họa máy tính] Sử dụng thuật toán DDA_Line và tô màu miền kín để vẽ ngôi nhà [C\C++]

Sử dụng thuật toán DDA_Line và thuật toán tô màu miền kín:
Viết chương trình C\C++ vẽ ngôi nhà.




/*  Tô màu miền kín với thuật toán quét dòng */

#include<iostream.h>
#include<conio.h>
#include<math.h>
#include<graphics.h>
#include<dos.h>
// LÀM TRÒN
int Round(float a){
return (int)(floor(a+0.5));
}
// HAM DDA_LINE -x
void ddaline_x(int x1, int y1, int x2, int y2, int c) 
{
   float k,x,y,m;
   k=(float)(y2-y1)/(x2-x1);
   x=x1; y=y1;
   putpixel(x,y,c);
   while (x<=x2){
//delay();
x=x+1;
y=y+k;
putpixel((int)(x),Round(y),c);
   }
}
// HAM DDA_LINE - y
void ddaline_y(int x1, int y1, int x2, int y2, int c)
{
   float k,x,y,m;
   k=(float)(y2-y1)/(x2-x1);
   x=x1; y=y1;
   putpixel(x,y,c);
   while (y<=y2){
delay(10);
y=y+1;
x=x+1.0/k;
putpixel((int)(x),Round(y),c);
   }
}

// duong thang // 0x
void Line_ox(int x1, int x2, int y, int c){
for(int x=x1;x<=x2;x++)
putpixel(x,y,c);
}

// duong thang // 0y
void Line_oy(int x, int y1, int y2, int c){
for(int y=y1;y<=y2;y++)
putpixel(x,y,c);
}

// To mau quet dong mai nha
void ToMaiNha(int y1,int y2,int c){
int x1,x2;
    for(int y=y1;y<=y2;y++)
{
x1=400-2*y;
x2=x1+300;
Line_ox(x1,x2,y,c);
}
}

// to mat truoc
void ToMatTruoc(int x1, int y1, int x2, int y2, int c) 
{
for(int x=x1;x<=x2;x++)
Line_oy(x,y1,y2,c);
}

// to doc nha
void ToDocNha(int y1, int y2, int c) 
{
for(int y=y2;y>=y1;y--){
ddaline_x(400,y,600,y-20,c);
}
// To mau theo thuat toan duong bien
void FloodFill (int x, int y, int in_color, int new_color) 
{
if (getpixel(x, y) == in_color){
putpixel(x, y, new_color);
FloodFill(x-1, y, in_color, new_color);
FloodFill(x+1, y, in_color, new_color);
FloodFill(x, y-1, in_color, new_color);
FloodFill(x, y+1, in_color, new_color);  
}
// HAM CHINH
void main(){
    clrscr();
    int gdriver = DETECT,gmode;
    initgraph(&gdriver,&gmode,"c:\\TC\\BGI");
    cout<<"\** VE NGOI NHA **\n"; 
/* Vẽ các cạnh song song với ox */
// AF
Line_ox(100,400,300,5);
// CD
Line_ox(200,300,200,5);
// GK
Line_ox(100,400,150,5);
// LH
Line_ox(200,500,100,5); 
/* Vẽ các cạnh song song với oy */
// AK
Line_oy(100,150,300,5);
// BC
Line_oy(200,200,300,5);
// DE
Line_oy(300,200,300,5);
// GF
Line_oy(400,150,300,5);
// IJ
Line_oy(600,130,280,5);
/* Vẽ các cạnh xiên */
// KL
ddaline_x(100,150,200,100,5);
// GH
ddaline_x(400,150,500,100,5);
// HI
ddaline_x(500,100,600,130,5);
// FJ
ddaline_x (400,300,600,280,5); 
/* Tô màu ngôi nhà */
   // tô mái nhà
       ToMaiNha(100,150,7);
   // tô tường trước
       ToMatTruoc(100,150,400,300,2);
   // Tô cửa chính
       ToMatTruoc(200,200,300,300,8);
   // Tô đốc nhà
       ToDocNha(150,300,6);
   // Tô phần tam giác đốc nhà
       FloodFill(500,130,0,6);
       getch();
       closegraph();
}
-----------
* Đề nghị các bạn sử dụng các thuật toán khác để vẻ đoạn thẳng và phối hợp các phương pháp tô màu khác nhau để vẻ ngôi nhà.

tailieucntt.org

----------


Cùng bạn tự học CNTT - tailieucntt.org

[Java] Một số ví dụ về cấu trúc điều khiển và mảng trong Java [Chữa bài tập 200416]

 [Code Java] Một số ví dụ về cấu trúc điều khiển và mảng trong Java [Chữa bài tập 200416]


Bài 1. Viết chương trình tính hóa đơn tiền điện
Khung giá:
- 0 đến 100: đơn giá điện 1200đ
- 101 đến 150: đơn giá điện 1500đ
- 151 đến 200: đơn giá điện 1800đ
- lớn hơn 200: đơn giá 2000đ
Yêu cầu: In hóa đơn tiền điện với
+ Họ tên khách hàng:
+ Số đầu:
+ Số cuối:
+ Thành tiền:


package bai1_java_200416;
import java.util.Scanner;

public class Bai1_Java_200416 {
    public static void main(String[] args) {
       String hoTen;
       int soDau,soCuoi;
       float thanhTien;
      
       // Nhap thong tin khach hang
       Scanner inp=new Scanner(System.in);
       System.out.print("\n Ho ten KH: ");
       hoTen=inp.nextLine();
       do{
        System.out.print("\n So dau: ");
        soDau=inp.nextInt();
        if(soDau<0)
            System.out.print("\n Nhap lai so dien ");
       }while(soDau<0);
      
       do{
       System.out.print("\n So cuoi: ");
       soCuoi=inp.nextInt();
       if  (soCuoi<soDau)
            System.out.print("\n Nhap lai so dien ");
       }while (soCuoi<soDau);
      
       int soDien=soCuoi-soDau;
      
       // Tinh tien
       if(soDien<=100)
           thanhTien=soDien*1200;
       else if(soDien<=150)
           thanhTien=100*1200+(soDien-100)*1500;
       else if(soDien<=200)
           thanhTien=100*1200+50*1500+(soDien-150)*1800;
       else
           thanhTien=100*1200+50*1500+50*1800+(soDien-200)*2000;
      
       System.out.print("\n IN THONG TIN HOA DƠN:\n");
       System.out.println("\n + Ho ten khach hang:  "+ hoTen);
       System.out.println("\n + So dien dau: "+soDau);
       System.out.println("\n + So dien cuoi: "+soCuoi);
       System.out.println("\n + Thanh tien: "+thanhTien);
      
      
    }
   
}






Bài 2. Viết chương trình 
- Nhập số thực x, thỏa mãn 1<=x<=3; số nguyên n, thỏa mãn 1<=n<=1000.
- Tính: s=1/x+2!/x^2 +... n!/x^n.

package bai2_java_200416;
import java.util.Scanner;
public class Bai2_Java_200416 {

  
    public static void main(String[] args) {
        float x;
        int n;
       
       Scanner inp=new Scanner(System.in);
       System.out.print("\n Nhap x, n: ");
      
       do{
        System.out.print("\n x= ");
        x=inp.nextFloat();
        if(x<1||x>3)
            System.out.print("\n Nhap lai x ");
       }while(x<1||x>3);
      
      
       do{
        System.out.print("\n n= ");
        n=inp.nextInt();
        if(n<1||n>1000)
            System.out.print("\n Nhap lai n ");
       }while(n<1||n>1000);
      
       //Tinh s
      
       float s=0;
      
       for (int i=1;i<=n;i++)
       {
           // tinh giai thua cua i
           long gt=1;
           for (int j=1;j<=i;j++)
               gt=gt*i;
           s=(float)gt/(float)Math.pow(x,i);
       }
      
       System.out.println("\n S= "+ s);
    }
   
}


Bài 3. Viết chương trình thực hiện
- Nhập vào dãy số nguyễn dương, có không quá 100 phần tử
- In ra vị trí số chẵn
- Sắp xếp dãy tăng dần


package bai3_java_200416;
import java.util.Scanner;
public class Bai3_java_200416 {

   
    public static void main(String[] args) {
        // khai bao mang
        int[] a=new int[100];
        int n;
        // nhap so phan tu mang
        Scanner inp=new Scanner(System.in);
        do{
        System.out.print("\n n= ");
        n=inp.nextInt();
        if(n<1||n>100)
            System.out.print("\n Nhap lai n ");
       }while(n<1||n>100);
       
        // Nhap mang
        for (int i=0;i<n;i++)
            do{
                System.out.print("\n a["+i+"]= ");
                a[i]=inp.nextInt();
                if(a[i]<0)
                    System.out.print("\n Nhap lai a["+i+"]");
            }while(a[i]<0);
        // In ra vi tri so chan
        System.out.print("\n In ra vi tri so chan:\n");      
        for (int i=0;i<n;i++)
            if(a[i]%2==0) System.out.print(i+ ", ");      
       
        // Sap xep day tang dan
        System.out.print("\n Sap xep day tang dan:\n");      
        for (int i=0;i<n;i++)
            for (int j=i+1;j<n;j++)
                if(a[i]>a[j])
                {
                    int t=a[i];
                    a[i]=a[j];
                    a[j]=t;
                }
               
        for (int i=0;i<n;i++)
            System.out.print(a[i]+" , ");
    }
   
}


Bài 4. Đổi cơ số 10 ra 2.
 /*
- Nhập vào từ bàn phím số nguyên a (0<a<255)
- Đổi a ra số nhị phân, in kết quả ra màn hình
*/

package doi10ra2;
import java.util.Scanner;
// Doi co so
 class DoiCoSo{
        int a;
        int m[]=new int[8];
        void DoiCoSo(){
            // Nhap a
            Scanner in=new Scanner(System.in);
            do{
                System.out.printf("\n a= ");
                a=in.nextInt();
                if (a<0||a>255)
                    System.out.printf("\n a= ");
            }while (a<0||a>255);
            // khoi tao mang
            int i;
            for(i=0;i<8;i++)
                m[i]=0;
            // Doi co so
            i=7;           
            while (a!=0)
            {
                m[i--]=a%2;
                a=a/2;               
            }
            // In so co so 2
            System.out.printf("\n In ket qua: ");
            for(i=0;i<8;i++)
                System.out.printf(m[i]+"");           
        }
       
     }

class Doi10ra2 {

    public static void main(String[] args) {
        DoiCoSo t=new DoiCoSo();
        t.DoiCoSo();
    }
}
// -----------------------------------------------


http://lap-trinh-may-tinh.blogspot.com/

[Tự học lập trình Android] Bài 1: Giới thiệu về Android và hướng dẫn cài đặt Android SDK

I. Giới thiệu Android [Nguồn vietnamandroid.com]
1. Android là gì?
Android ™ cung cấp một bộ đầy đủ các phần mềm cho các thiết bị di động: Android là gì? là một hệ thống điều hành, middleware và các ứng dụng di động chủ chốt. Các Android Software Development Kit (SDK) bây giờ đã có.

Android là hệ điều hành trên điện thoại di động (và hiện nay là cả trên một số đầu phát HD, HD Player, TV) phát triển bởi Google và dựa trên nền tảng Linux. Trước đây, Android được phát triển bởi công ty liên hợp Android ( sau đó được Google mua lại vào năm 2005).

Các nhà phát triển viết ứng dụng cho Android dựa trên ngôn ngữ Java. Sự ra mắt của Android vào ngày 5 tháng 11 năm 2007 gắn với sự thành lập của liên minh thiết bị cầm tay mã nguồn mở, bao gồm 78 công ty phần cứng, phần mềm và viễn thông nhằm mục đính tạo nên một chuẩn mở cho điện thoại di động trong tương lai.


2. Lịch sử phát triển Anroid
Tháng 7 năm 2005, Google mua lại Android, Inc., một công ty nhỏ mới thành lập có trụ sở ở Palo Alto, California, Mỹ. Những nhà đồng sáng lập của Android chuyển sang làm việc tại Google gồm có Andy Rubin (đồng sáng lập công ty Danger), Rich Miner (đồng sáng lập công ty Wildfire Communications), Nick Sears (từng là phó chủ tịch của T-Mobile), và Chris White (trưởng nhóm thiết kế và phát triển giao diện tại WebTV). Khi đó, có rất ít thông tin về các công việc của Android, ngoại trừ việc họ đang phát triển phần mềm cho điện thoại di động. Điều này tạo những tin đồn về việc Google có ý định bước vào thị trường điện thoại di động.

Tại Google, nhóm do Rubin đứng đầu đã phát triển một nền tảng thiết bị di động dựa trên hạt nhân Linux, được họ tiếp thị đến các nhà sản xuất thiết bị cầm tay và các nhà mạng trên những tiền đề về việc cung cấp một hệ thống mềm dẻo, có khả năng nâng cấp mở rộng cao. Một số nguồn tin cho biết trước đó Google đã lên danh sách các thành phần phần cứng và các đối tác phần mềm, đồng thời ra hiệu với các nhà mạng rằng họ sẵn sàng hợp tác ở nhiều cấp độ khác nhau. Ngày càng nhiều suy đoán rằng Google sẽ tham gia thị trường điện thoại di động xuất hiện trong tháng 12 năm 2006. Tin tức của BBC và Nhật báo phố Wall chú thích rằng Google muốn đưa công nghệ tìm kiếm và các ứng dụng của họ vào điện thoại di động và họ đang nỗ lực làm việc để thực hiện điều này. Các phương tiện truyền thông in và online cũng sớm có bài viết về những tin đồn cho rằng Google đang phát triển một thiết bị cầm tay mang thương hiệu Google. Và lại càng có nhiều suy đoán sau bài viết về việc Google đang định nghĩa các đặc tả công nghệ và trình diễn các mẫu thử với các nhà sản xuất điện thoại di động và nhà mạng.

3. Tính Năng Mở của hệ điều hành Android là gì?
Android được xây dựng để cho phép các nhà phát triển để tạo ra các ứng dụng di động hấp dẫn tận dụng tất cả một chiếc điện thoại đã cung cấp. Nó được xây dựng để được thực sự mở. Ví dụ, một ứng dụng có thể kêu gọi bất kỳ chức năng lõi của điện thoại như thực hiện cuộc gọi, gửi tin nhắn văn bản, hoặc bằng cách sử dụng máy ảnh, cho phép các nhà phát triển để tạo ra phong phú hơn và nhiều hơn nữa những kinh nghiệm cố kết cho người dùng. Android được xây dựng trên mở Linux Kernel. Hơn nữa, nó sử dụng một máy ảo tuỳ chỉnh được thiết kế để tối ưu hóa bộ nhớ và tài nguyên phần cứng trong một môi trường di động. Android là mã nguồn mở, nó có thể được liberally mở rộng. Nền tảng này sẽ tiếp tục tiến triển như cộng đồng nhà phát triển công việc cùng nhau để xây dựng các ứng dụng di động sáng tạo.

4. Tất cả các ứng dụng có thể được tạo ra cho Android?
Android không phân biệt giữa các ứng dụng lõi của điện thoại và các ứng dụng của bên thứ ba. Họ tất cả có thể được xây dựng để có thể truy cập bằng khả năng của một người cung cấp cho người sử dụng điện thoại với một dải rộng các ứng dụng và dịch vụ. Với các thiết bị xây dựng trên Hệ điều hành Android, người dùng có thể hoàn toàn thích ứng với điện thoại đến lợi ích của họ. Họ có thể trao đổi trên màn hình của điện thoại, những phong cách của dialer, hoặc bất kỳ ứng dụng. Họ thậm chí có thể hướng dẫn điện thoại của họ để sử dụng hình ảnh ưa thích của họ xem các ứng dụng để xử lý xem tất cả các hình ảnh.

4. Phá bỏ các rào cản ứng dụng của Android?
Android phá bỏ rào cản để xây dựng các ứng dụng mới và sáng tạo. Ví dụ, một nhà phát triển có thể kết hợp thông tin từ các trang web với dữ liệu trên điện thoại di động của một cá nhân – ví dụ như địa chỉ liên hệ của người dùng, lịch, hoặc vị trí địa lý – để cung cấp một trải nghiệm người dùng có liên quan hơn. Với Android, một nhà phát triển có thể xây dựng một ứng dụng cho phép người dùng xem vị trí của bạn bè của họ và được cảnh báo khi họ đang có trong vùng phụ cận cho họ một cơ hội để kết nối.

5. Với Android tốc độ nhanh & phát triển ứng dụng dễ dàng
Android cung cấp truy cập đến một loạt các thư viện công cụ hữu ích và có thể được sử dụng để xây dựng các ứng dụng phong phú. Ví dụ, Android cho phép các nhà phát triển để có được vị trí của điện thoại, và cho phép các thiết bị để giao tiếp với nhau tạo điều kiện cho đồng đẳng rich-to-peer ứng dụng xã hội. Ngoài ra, Android bao gồm một tập hợp đầy đủ công cụ đã được xây dựng từ mặt đất lên cùng với việc cung cấp nền tảng phát triển, với năng suất cao và cái nhìn sâu vào các ứng dụng của họ.

6. Phát triển Android ROM
Rất nhiều nhà phát triển hệ điều hành Android đã vào cuộc và các ROM cho Android độc đáo được ra đời với nhiều tích năng nổi trội được tích hợp và đầy sáng tạo

II. Hướng dẫn cài đặt Android SDK
1. Download và Cài đặt Eclipse, Android SDK.
Bước 1: Truy cập: http://developer.android.com/sdk/index.html
Bước 2: Download bộ cài đầy đủ bao gồm Eclipse và Android SDK : ADT Bundle for Windows
 


Bước 3: Giải nén, chạy file SDK Manager (trong bước phải chờ khá lâu)
Bước 4: Mở Android SDK, bạn sẽ có giao diện như sau:


2. Bắt đầu lập trình với Android
Bước 1: Mở Project mới

Bước 2: Mở ứng Android mới

Bước 3: Đặt tên gói ứng dụng Android
Bước 4: Chọn vị trí lưu Project
(Bạn có thể chọn icon cho ứng dụng hoặc bỏ qua bước này với icon mặc định, 
click Next -> Next -> Finish)
Bước 4: Môi trường soạn thảo code


-----------------------------------------
Xem thêm bài và ví dụ khác:
Bài 1: Giới thiệu về Android và hướng dẫn cài đặt Android SDK

----------


Cùng bạn tự học CNTT - tailieucntt.org

[Bài viết hay] Xu hướng công nghệ lập trình năm 2016

[Bài viết hay] Xu hướng công nghệ lập trình năm 2016
(Bài viết lấy bối cảnh thị trường phần mềm TP Đà Nẵng)

Nhằm mục đích cung cấp cái nhìn cụ thể về nhu cầu nguồn nhân lực ngành phần mềm, từ đó giúp sinh viên chọn đúng công nghệ để có được những định hướng học tập và nghiên cứu. Trong bài viết này chúng tôi muốn gửi tới bạn đọc những thông tin hữu ích về thực trạng và xu thế phát triển của công nghệ lập trình nói riêng và công nghệ phần mềm nói chung.





Bài viết “Xu hướng công nghệ lập trình năm 2016” sẽ phân tích dữ liệu đó và đưa ra nhận định về xu hướng phát triển của các công nghệ lập trình trong năm 2016 để giúp các bạn trẻ có lựa chọn tốt nhất cho việc xây dựng và phát triển nghề nghiệp của mình.


Thế giới

Trước tiên, chúng ta tham khảo xu thế phát triển của thế giới để có cái nhìn rộng hơn. Theo TIOBE Programing community Index, một trang chuyên thống kê nhu cầu tuyển dụng lập trình viên dựa trên kết quả tìm kiếm của 25 công cụ tìm kiểm nổi tiếng thế giới như Google, Bing, Yahoo… để thống kê, so sánh và đưa ra xu hướng phát triển cảu các ngôn ngữ lập trình. Kết quả công bố tháng 1 năm 2016 như sau:

Xu hướng công nghệ lập trình 2016



TIOBE Programing community Index – Tháng 1 2016

Theo công bố của TIOBE thì Java đang là ngôn ngữ lập trình đứng số 1 và vẫn tăng trưởng tốt với gần 6%. Thống lĩnh trong các ngôn ngữ lập trình ứng dụng enterprise.

Về mảng lập trình Web thì PHP có phần chửng lại nhưng vẫn ở mức rất cao, các ngôn ngữ mới như Python, Ruby có xu hướng tăng nhưng chưa đe dọa vị trí của PHP.

Riêng về di động thì Objective –C đã giảm và đang xếp thứ 18, nó đang được Swift dần thay thế. Tuy nhiên, theo TIOBE tốc độ thay thế này chậm hơn sơ với dự kiến vì theo nhận định của TIOBE từ tháng 6/2015 thì đến cuối năm 2015 Objective-C sẽ rời khỏi Top 20. Điều này được lý giải là do các công ty vẫn còn khó khăn khi chuyển đổi hệ thống đã tồn tại sang Swift. Nhưng điều này sẽ diễn ra mạnh vào năm 2016.

Lý giải việc Java vẫn luôn đứng ở top đầu và liên tục tăng trưởng trong 10 năm trở lại đây. TIOBE cho rằng Java đã cải tiến mạnh và thích nghi tốt với yêu cầu. Hiện nay Java chiếm phần lớn trong các ứng dụng Enterprise, ngoài ra nó cũng đáp ứng tốt nhu cầu WebService và có vai trò lớn trong việc phát triển ứng dụng trên di động (Android). Do vậy năm 2016 Java vẫn chiếm thế thượng phong.

Tại Việt Nam

iViettech (Đà Nẵng) đã thống kê nhu cầu tuyển dụng của các công ty phần mềm tại thị trường Việt Nam từ năm 2014 và kết quả được thể hiện qua bảng dưới đây.



Thống kê của iViettech về nhu cầu nguồn nhân lực phần mềm Đà Nẵng

Nhận định xu hướng của các ngôn ngữ phổ biến

Dựa vào các kết quả trên và những nghiên cứu độc lập, chúng tôi đưa ra nhận định xu hướng cho các ngôn ngữ phổ biến như sau:

Java

Trong nhiều năm nay Java luôn dẫn đầu với nhu cầu vượt trội tuyệt đối so với các ngôn ngữ khác bởi việc liên tục được cải tiến và có độ thích nghi cao cũng như phổ ứng dụng rộng. Java đáp ứng được từ ứng dụng Enterprise, Mobile, Web.. nên gần như chắc chắn Java sẽ tiếp tục tăng trưởng trong năm 2016. Sở hữu kỹ năng về Java sẽ là một lợi thế cho bạn trong tìm việc cũng như khẳng định nghề nghiệp lâu dài.

PHP

PHP cũng là ngôn ngữ tăng trưởng ấn tượng trong năm 2015 nhờ vào một loạt các công ty mới mở tại Đà Nẵng chuyên làm về 02 lĩnh vực là Web và Mobile. Ngoài ra, với sự ra đời của PHP 7 hứa hẹn sẽ tăng mạnh sức cạnh tranh cho PHP. Mặc dù có sự cạnh tranh từ Python và Ruby nhưng chưa lớn nên 2016 sẽ là một năm tăng trưởng tốt của PHP. Do vậy nếu bạn quan tâm đến lập trình Web thì PHP là lựa chọn an toàn cho bạn.

Swift (iOS)

Mặc dù năm 2015, Swift chưa có vai trò tại Đà Nẵng nói riêng và Việt Nam nói chung với số lượng tuyển dụng không đáng kể. Lý do là hầu hết các công ty lấy Lập trình viên Objective C chuyển sang và việc nâng cấp liên tục cũng làm cho Swift mất tính ổn định. Tuy nhiên, với Swift 2.0 nền tảng này đã ổn định và nhu cầu thế giới tăng mạnh về Swift nên năm 2016 hứa hẹn nhu cầu về Lập trình Swift trên iOS sẽ tăng mạnh. Do vậy, đây là lựa chọn thú vị cho các bạn yêu thích lập trình di động bên cạnh nền tảng phổ biến Android.

JavaScripts


Năm 2015 là năm tăng trưởng khá tốt của JavaScript với sự mạnh lên đáng kể các Front End framworks như Angular JS, BootStrap… Trong đó, đặc biệt sự phát triển mạnh của Node JS đã đưa nhu cầu lập trình viên JavaScript tăng mạnh. Năm 2016 dự kiến sẽ là năm tiếp tục tăng trưởng của JavaScript.

C# (.Net)

2015 chứng kiến sự tăng trưởng vượt bật của .net sau năm 2014 tương đối trầm lắng. Với nền tảng ổn định, dễ tiếp cận và cũng có phổ ứng dụng rộng .Net là một lựa chọn không tồi cho các Lập trình viên. Do vậy nếu có kỹ năng về .Net cũng là một lợi thế đáng kể cho bạn trong quá trình tìm việc năm 2016

C++

C++ luôn nằm trong nhóm khó tìm Lập trình viên giỏi của các công ty, nên nếu sở hữu kỹ năng tốt về C++ bạn luôn có cơ hội tìm được việc làm tốt. Nhiều công ty ở Đà Nẵng luôn săn đón lập trình C++ như Sioux, Gameloft, Global Cyber Soft …

Tester

Sau năm 2014 tăng trưởng nóng, Tester đã chửng lại trong năm 2015. Lý do là các công ty tuyển dụng Tester hàng đầu có dấu hiệu chững lại để sắp xếp và cơ cấu lại khách hàng. Hy vọng 2016, tester sẽ tăng trưởng trở lại.

Kết luận


Nhu cầu nhân lực ngành phần mềm ở Đà Nẵng nói riêng và Việt Nam nói chung đang tăng trưởng nóng, đây là cơ hội cho các bạn trẻ yêu thích công nghệ thông tin tìm việc trong ngành phần mềm. Ngoài những kỹ năng cơ bản của ngành các bạn cần trang bị cho mình kiến thức, kỹ năng về công nghệ để có thể tiếp cận việc làm ở các công ty.

Các nhận định trên chỉ mang tính tham khảo, việc thành công phụ thuộc vào nhiều yếu tố như sự chuẩn bị, cơ hội và khả năng nắm bắt cơ hội của bạn. Tuy nhiên, lựa chọn đúng ngôn ngữ, công nghệ để học, nghiên cứu sẽ giúp cho con đường thành công của bạn sáng hơn và thuận lợi hơn.

Chúc các bạn thành công !

Nguồn dnict

[Bài viết hay] Danh ngôn lập trình viên

Danh ngôn là những câu nói đơn giản, ngắn gọn nhưng chất chứa bên trong cả một bầu trời chân lý. Danh ngôn dễ nhớ, dễ thuộc, đọc ít hiểu nhiều. Vì thế, trong bài viết này tôi sẽ giới thiệu và phân tích một số câu danh ngôn … để đời của ngành lập trình dành cho các lập trình viên.

Các bạn có thể thoải mái chia sẻ mấy câu danh ngôn này nhé.

(Phần bình luận là ý kiến cá nhân theo cách hiểu của tác giả, các bạn có thể bình luận chia sẻ cách hiểu của các bạn, hoặc góp thêm danh ngôn cho vui.)

Danh ngôn lập trình và bình luận

Danh ngôn lập trình

Bất kì ngôn ngữ lập trình nào cũng có những điểm mạnh, điểm yếu riêng. Do đó, ngôn ngữ được sử dụng càng nhiều thì càng bị nhiều người ném đá ví như PHP. Có những ngôn ngữ rất hay như Haskell nhưng vì nhiều lý do lại không ai sử dụng.

Danh ngôn lập trình viên


Câu này cũng tương tự như câu “nguyên nhân dẫn đến 100% vụ ly hôn chính là kết hôn” vậy. Tuy đây là câu nói của một lập trình viên nhưng các bạn tester có thể học thuộc câu này để "quăng vào mặt" các bạn dev mỗi khi chương trình có bug.


Bản thân tác giả là một người đặt nền móng cho ngành Computer Science thông qua bộ sách The Art of Programming (Đây là bộ sách được tỉ phú Bill Gates khuyên đọc).

Đôi khi, chúng ta mải mê optiomize code, làm code chạy nhanh hơn mà quên mất một điều là code phải chạy đúng, dễ hiểu dễ đọc trước đã. Việc optimize code sớm thường không đem lại hiệu quả cao, nhưng lại gây mất thời gian của dev, làm code khó đọc hơn.



Anh em code lâu năm hẳn cũng biết nỗi khổ ra sao khi phải đặt tên biến, tên hàm, tên class, nó thật sự là một trong hai thứ khó nhất đấy.

Việc invalidate code cũng vậy, vô cùng phức tạp. Nếu làm quá thường xuyên thì không có tác dụng mấy, nếu chờ quá lâu thì dữ liệu sẽ bị mất đồng bộ.



Sử dụng phần mềm mà gặp lỗi thì chỉ bực mình một ngày. Làm nghề lập trình, lúc nào cũng gặp bug nên bực mình cả đời.




Trong ngành lập trình, không phải cứ nhiều người là dự án sẽ hoàn thành nhanh hơn. Bạn nên học thuộc câu này để nói với Project Manager khi họ cố đưa thêm người vào dự án.




Viết code có lương tâm, dễ đọc dễ hiểu, nhớ comment đầy đủ. Hãy thương người maintain code của bạn (Đôi khi chính bạn phải maintain code của mình đấy, phải tự thương mình thôi).


Danh ngon danh cho lap trinh vien


Khi lập trình đôi khi do code ẩu, thiết kế ẩu, xuất hiện nhiều bug, bạn sẽ phải chịu trách nhiệm với đống code đó suốt đời (cho đến khi chuyển team hoặc chuyển công ty).


* Các bạn tự biện bình luận nhé:





Kết luận

Tuy những câu danh ngôn này rất hay, nhưng chúng không phải lúc nào cũng hoàn toàn đúng. Là lập trình viên, chúng ta phải tự thân suy nghĩ, tự tìm cách giải quyết vấn đề chứ đừng quá dựa dẫm vào các nguyên lý hay danh ngôn.

Nguồn toidicoddao

Tags

Android ASP Assembly Bài giảng lập trình C và Cpp Bài viết hay Biểu diễn thuật toán Bubble-Sort C C sharp C++ Cây (tree) Cây quyết định CDSL phân tán Công nghệ điện toán đám mây Công nghệ lập trình Cơ sở dữ liệu CSS Danh ngôn lập trình Danh sách liên kết (list) Datamining Đệ quy Đồ họa Độ phức tạp của thuật toán Giải hệ phương trình tuyến tính Góc học tập Góc suy ngẫm Google App Engine Heap-Sort Hệ quản trị CSDL Học lập trình Học lập trình C và CPP qua ví dụ học lập trình Java HTML Insert-sort iOS Java Java Căn bản java core Java GUI JavaScript Kiếm tiền online Kỹ thuật đồ họa máy tính Kỹ thuật lập trình Lập trình căn bản Lập trình Cơ sở dữ liệu Lập trình hướng đối tượng Lập trình hướng đối tượng với Java Lập trình mạng Lập trình mobile lập trình viên Lập trình viên độc lập Luyện thi IC3 Lý thuyết Cơ sở dữ liệu Lý thuyết đồ thị Mạng máy tính Mẹo tìm kiếm trên Google Merge-Sort MS Access Ngôn ngữ lập trình Nhúng code Assembly trong C\C++ Oracle phần cứng máy tính PHP Queue (hàng đợi) Quick-Sort Seclection-sort SQL Stack (ngăn xếp) Thiết kế Web Thủ thuật máy tính Thuật toán Thuật toán di truyền Thuật toán Đệ quy Thuật toán K-Mean Thuật toán khác Thuật toán leo đồi Thuật toán ma trận Thuật toán Sắp Xếp -Sort Thuật toán Tìm kiếm - Search Tiện ích máy tính Tìm kiếm nhị phân Tìm kiếm tuần tự (Line search) Tin học văn phòng Tin tức công nghệ Tính định thức của ma trận Toán rời rạc Trí tuệ nhân tạo Tự học lập trình Android Tự học lập trình C và CPP Tự học lập trình java qua các ví dụ Ứng dụng cơ sở dữ liệu VB XML Xử lý ma trận (mảng 2 chiều) Xử lý mảng 1 chiều Xử lý ngoại lệ