Chuỗi ký tự trong C

Leave a Comment

Chuỗi ký tự trong C

Khái niêm :

Là mảng 1 chiều gồm các phần tử có kiểu char như mẫu tự, con số và bất cứ ký tự đặc biệt như +, -, *, /, $, #… 
•Viết trong cặp nháy kép, ví dụ: "I like C++"
–Theo quy ước, một xâu sẽđược kết thúc bởi ký tự null ('\0' : kí tựrỗng). 
–Xâu là một con trỏ (pointer) trỏ đến ký tự đầu tiên của xâu (giống như với mảng)
Ví dụ: xâu s="Infoworld";được lưu trữ như sau:


Trong đó con trỏ s trỏ đến ký tựđầu tiên 'I' 
Kết thúc bằng nul lnhư vậy rất khác so với các ngôn ngữ khác. Ví dụ, trong Pascal, mỗi chuỗi kí tự bao gồm một mảng kí tự và length byte chứa chiều dài chuỗi. Cấu trúc này giúp Pascal dễ dàng trả về độ dài chuỗi khi được yêu cầu. Khi đó, Pascal chỉ việc trả về giá trị  length byte, trong khi C phải đếm cho tới khi nó gặp kí tự '\0'. Đây là lí do khiến C chậm hơn Pascal trong một vài tình huống nhất định

1.Gán giá trị cho xâu (string assignment)


• Mảng của ký tự:
char color[] = "blue"; 
Biến con trỏ char* 
char*colorPtr = "blue";
tạo con trỏ colorPtr trỏ đến chữ b trong xâu "blue" ("blue" ởtrong bảng chuỗi hằng)
• Khởi tạo chuỗi như mảng:
char color[] = { 'b', 'l', 'u', 'e', '\0' };
Cần phải nhắc nhở bạn rằng việc gán nhiều hằng như việc sử dụng dấu ngoặc kép (") chỉ hợp lệ khi khởi tạo mảng, 
tức là lúc khai báo mảng. Các biểu thức trong chương trình như sau là không hợp lệ: 

mystring = "Hello";
mystring[] = "Hello";
mystring = { 'H' , 'e', 'l', 'l', 'o',  ' \0' };
Chúng ta chỉ có thể "gán" nhiều hằng cho một mảng v ào lúc khởi tạo nó. Nguyên nhân là mộtthao tác gán (=) không thể nhận vế trái là cả một mảng mà chỉ có thể nhận một trong những phần tử của nó. Vào thời điểm khởi tạo mảng là một trường hợp đặc biệt, vì nó không thực sự là một lệnh gán mặc dù nó sử dụng dấu (=).
Tuy nhiên C++ cho phép ta gán 2 mảng tĩnh có cùng kích thước như sau:
chara[]="Hello", b[6];
//hello và ký tự null tổng cộng 6 ký tự
//khai báo như trên thì 2 mảng tĩnh có cùng kích thước
b=a;
Phép gán này tương đương đoạn chương trình sau:
int i=0; 
while ( a[i] <= 6 ) 
b[i]=a[i++];
Thiết lập n ký tự đầu của xâu s bằng kýtự c bằng 1 trong 2 hàm sau:
voidstrnset( chars[], charc, intn): 
void memset(char *Des, intc, size_tn);

2.Những chuỗi hằng

Bạn hãy thử hai đoạn chương trình sau:
char *s="hello";    
cout<< s;
và:
chars[100]; 
strcpy( s,"hello");    
cout<< s; 
Hai đọan mã trên đưa ra cùng một kết qủa, nhưng cách họat động của chúng hòan tòan khác nhau. Trong đọan 2, bạn không thể viết s=”hello”;. Để hiểu sự khác nhau, bạn cần phải biết họat động của bảng chuỗi hằng(string constant table) trong C.
Khi chương trình được thực thi, trình biên dịch tạo ra một file object, chứa mã máy và một bảng chứa tất cả các chuỗi hằng khai báo trong chương trình. Trong  đọan 1, lệnh  s  =  ”hello”;xác định rằng  s chỉ đến địa chỉ của chuỗi  hello trong bảng chuỗi hằng. Bởi vì chuỗi này nằm trong bảng chuỗi hằng, và là một bộ phận trong mã exe, nên bạn không thể thay đổi được nó. Bạn chỉ có thể dùng nó theo kiểu chỉ-đọc (read-only).Để minh họa, bạn có thể chèn thêm câu 
lệnh strcpy(s,"modify"); vào sau lệnh gán ở ví dụ 1, trình biên dich sẽ báo lỗi ghi vào hằng.
Trong đọan 2, chuỗi hello cũng tồn tại trong bảng chuỗi hằng, do đó bạn có thể copy nó vào mảng kí tự tên là s. Bởi vì s không phải là một con trỏ, lệnh s=”hello”;sẽ không làm việc.

Sẽ đề cập trong phần con trỏ.

3.Đọc chuỗi 


• Đọc dữ liệu cho mảng ký tự:
char word[20];
cin >>word;

-Đọc xâu không chấp nhận khoảng trống.
-Xâu có thể vượt quá kích thước mảng.

cin >>setw( 20 ) >>word; // đọc 19 ký tự (1 để dành cho '\0')

Đọc xâu với khoảng trống dùng 1 trong các cú pháp sau:

gets(array);//trong stdio.h, không được khuyến khích sử dụng 
cin.get(array);
cin.get(array,size);
cin.getline(array,delimiter='\n' );
//ký tự delimiter mac dinh la ' \n' -xuong dong
cin.getline(array, size, delimiter=' \n');

–Lưu input vào mảng array đến khi xảy ra một trong hai trường hợp 
+ Kích thước dữ liệu đạt đến size –1
+ Ký tự delimiter được nhập vào
Lưu ý :delimiter='\n' th ìdấu = làtham số mặc định trong C++, tức là nếu không có tham số này thì trình biên dịch sẽ hiểu là để mặc định
Ví dụ:
charsentence[ 80 ];
cin.getline(sentence, 80);
//dung delimiter mac dinh

Đối với các hàm get hay getline ta hoàn toàn có thể kết hợp với toán tử >> như thế này:
cout << " Nhap ten,tuoi, nghe nghiep" << endl ;
//cin.ignore();
cin.getline( name )>> age >>job;

Nếu một chương trình bị treo hay kết thúc bất thường khi làm việc với xâu thường là do một số ký tự vẫn còn trong vùng đệm. Kết quả là chương trình có vẻ kết thúc sớm hơn mong muốn.
Hàm fflush() hay cin.ignore() sẽ giải quyết vấn đề này. Nó sẽ làm sạch vùng đệm và chép tất cả những gì có trong vùng đệm ra ngoài( trong ví dụ ở trên thì nó không thật sự cần thiết lắm )

Bài trước : Kiểu ký tự char 

Kiểu ký tự char.

Leave a Comment

I. Kiểu ký tự char

Khai báo : char c;

Kiểm tra kiểu của ký tự

Các hàm liên quan đến kiểu của dữ liệu được định nghĩa trong thư viện ctype.h

  • isalnum(char c) : kiểm tra ký tự c có phải là số hoặc chữ không?
  • isalpha(char c) : kiểm tra ký tự c có phải là chữ không?
  • isascii(char c) : kiểm tra ký tự c có phải là ký tự của bảng mã ascii  không?
  • isspace(char c) : kiểm tra ký tự c có phải là dấu cách không?
  • ispunct(char c): kiểm tra ký tự c có phải là dấu câu không?
  • isdigit ( char c) : kiểm tra ký tự c có phải là số không?
  • islower(char c) : kiểm tra ký tự c có phải là chữ thường không?
  • isupper(char c) : kiểm tra ký tự c có phải là chữ hoa không?
Đúng kết quả trả về là true, sai trả về là false.

Ví dụ. Chương trình nhập vào 1 ký tự c. kiểm tra ký tự c, nếu là chữ cái thì kiểm tra xem đó là chữ viết hoa hay viết thường.

#include<iostream>
#include<ctype.h>
using namespace std;

main(){
    char c;
    cin>>c;
    if(islower(c)) cout<<"Chu thuong";
    else cout<<"Chu hoa";
}


Chuyển đổi case của ký tự


  • tolower(char c) : chuyển ký tự c thành chữ thường
  • toupper(char c) : chuyển ký tự c thành chữ hoa.

Bài tiếp : xâu ký tự 



Thông Báo Tuyển thành viên đội OLYMPIC Tin Học 2014

1 comment

Thông Báo Tuyển thành viên đội OLYMPIC Tin Học 2014


Khoa Toán Tin Học Viện An Ninh Nhân Dân thông báo : Tuyển thành viên đội OLYMPIC Tin học 2014.

Thành phần tham gia

Tất cả sinh viên Học viện ( kể cả khối điều tra và D46 chưa nhập trường)

Yêu cầu tham gia:

 Có kiến thức nền lập trình như C,C++, Java. 
Các ngôn ngữ lập trình khác cũng được sau khi vào đội dự tuyển thì phải học C++.

Thời gian : 16h45p ngày 26/8/2014.
Địa điểm : 107N7.
Cách thức tham gia:  Click link, điền đầy đủ thông tin
Lưu ý: Khóa D46 cũng có thể tham gia nhưng với điều kiện phải có kiến thức tốt về lập trình : Có giải các cấp.... 

Hạn chót đăng ký :  12h trưa ngày 26/08/2014

MOS - CÔNG CỤ HỌC TIN HỌC VĂN PHÒNG THI Microsoft Office Specialist

3 comments

1. MOS là gì?

MOS: Microsoft Office  Specialist  là bài thi đánh giá kỹ năng tin học văn phòng được sử dụng rộng rãi nhất trên thế giới với hơn 1 triệu bài thi được tổ chức hàng năm.
Bài thi MOS được sáng tạo bởi Microsoft  và triển khai bởi Certiport (Hoa Kỳ). Bài thi được thực hiện hiện trực tuyến, với hơn 25 ngôn ngữ được xây dựng và được được Việt hóa bài thi, giáo trình đã được IIG Việt Nam biên soạn dựa trên thực tế tại Việt Nam.
MOS là chứng chỉ duy nhất xác nhận kỹ năng sử dụng phần mềm tin học văn phòng Microsoft Office và do Microsoft trực tiếp cấp chứng chỉ.
Các cấp độ của chứng chỉ MOS
 Specialist: Chứng nhận kỹ năng cơ bản trong các sản phẩm Microsoft Office: Word, Excel, PowerPoint, Access, Outlook.
 Expert: Chứng nhận kỹ năng cao cấp trong Microsoft Word và Microsoft Excel.
 Master:  Chứng nhận kỹ năng tổng thể toàn diện cao cấp nhất trong sử dụng Microsoft Office. Yêu cầu 4 bài thi: Word Expert, Excel Expert, PowerPoint và một trong 2 bài thi: Outlook hoặc Access.
 
Cuộc thi Microsoft Office Specialist

2. Thời gian làm bài thi

Mỗi bài thi 50 phút

3. Nội dung các bài thi

Chứng chỉ MOS do Microsoft chính thức cấp cho các chương trình trình ứng dụng tin học văn phòng bao gồm
Các bài thi MOS 2007: Word® 2007, Excel® 2007, PowerPoint® 2007, Outlook® 2007, Access® 2007, Word 2007 Expert, Excel® 2007 Expert

Các bài thi MOS 2010: Word®2010, 2010, PowerPoint® 2010, Access® 2010, Outlook® 2010, SharePoint® 2010, Word 2010 Expert, Excel® 2010 Expert

4. Lợi ích của bài thi MOS

Được công nhận rộng rãi trên thế giới, chứng chỉ MOS giúp bạn chứng tỏ được năng lực một cách dễ dàng. Cho dù bạn đang tìm kiếm một công việc, một cơ hội thăng tiến trong sự nghiệp hay theo đuổi một mục tiêu học tập, MOS là công cụ hữu hiệu để bạn khẳng định bản thân và tiến xa hơn trong môi trường học tập và làm việc cạnh tranh. 

*Đối với người tìm việc

MOS giúp bạn nổi bật để giành được công việc mà bạn mong muốn. Một nghiên cứu cho thấy các ứng viên có chứng chỉ MOS không những tìm được công việc nhanh hơn mà thu nhập của họ cũng cao hơn khoảng 12% so với những người không có chứng chỉ này
MOS là chứng nhận rõ ràng nhất cho việc bạn đã được đào tạo thành thạo về chương trình tin học văn phòng của Microsoft.
Đối với những người đang tìm kiếm cơ hội thăng tiến
Tăng mức lương kì vọng. Nghiên cứu cho thấy 82% số người sở hữu MOS đạt được mức lương cao hơn so với trước khi có chứng chỉ này.
Khẳng định vị thế tiên phong trong công ty như một chuyên gia tin học văn phòng.
Mang lại nhiều cơ hội nghề nghiệp. 88% các nhà quản lý cho rằng những nhân viên sở hữu chứng chỉ MOS sẽ có lợi thế hơn trong việc tuyển dụng và đề bạt, điều này cũng đồng nghĩa với sự gia tăng của mức lương và sự tôn trọng từ phía các đồng nghiệp khác.

*Đối với sinh viên

MOS là chứng chỉ đánh giá kỹ năng nghệ nghiệp được công nhận trên toàn cầu
Chứng minh được năng lực sử dụng máy tính đặc biệt trong mội trường làm việc

5. Thời hạn 

Chứng chỉ MOS có giá trị vô thời hạn ( giá trị trọn đời)

6. Lịch Sử MOS C500 

Những năm gần đây, nhận thấy tầm quan trong của việc nắm vững kỹ năng tin học văn phòng. Được sự đồng ý của ban giám đốc và lãnh đạo khoa. Khoa Toán Tin đã tổ chức cho học sinh tham dự cuộc thi Vô địch tin học văn phòng, tính đến nay đã được 3 năm và đạt được nhiều kết quả cao.

7. Hình thức tham gia 

- Thành phần : Sinh viên đang học tập tại Học Viện An Ninh Nhân Dân Từ năm thứ 3 đổ lại.( Năm thứ tư thì ngày sinh phải trước ngày tổ chức dự thi của ban tổ chức - Tùy từng năm sẽ có ngày tổ chức khác nhau ^.^ ) 
- Yêu cầu : Có khả năng đọc để tiếng anh, thành thạo kỹ năng tin học văn phòng. 2 kỹ năng này rất quan trọng nếu muốn đạt kết quả cao trong kỳ thi MOS . Các bạn có thể luyện tập ngay từ bây giờ bằng cách tải phần mềm ôn luyện ở Link dưới đây
- Công cụ học tập : 
  + GMETRIX  : Download Link 
  + Office 2010 :  Download Link

Android - Bài tập 6: Phân biệt Foreground Lifetime và Visible Lifetime

Leave a Comment
Để củng cố thêm sự hiểu biết về Lifetime Cycle trong bài tập 5,  bài tập này Tôi sẽ Demo cho các bạn một ứng dụng để bạn có thể hiểu rõ hơn về Lifetime Cycle, đặc biệt là nhận biết được Foreground Lifetime và Visible Lifetime:

Bạn tạo một ứng dụng tên là “LearnAndroidLifetime“, với cấu trúc như hình dưới:


-
 Nhìn vào hình bên trên thì ứng dụng này sẽ có tổng cộng 3 Activities. Chú ý là ta sẽ cấu hình  SubActivity1 để hiển thị dưới dạng Dialog (khi SubActivity1 kích hoạt thì nó sẽ nằm phía trên MainActivity, nhưng mà vẫn nhìn thấy màn hình MainActivity – tức là đồng thời nhìn thấy 2 Activity). Còn khi SubActivity2 hiển thị thì nó sẽ chiếm toàn bộ màn hình, không thể thấy được MainActivity.

- Giao diện và xml layout của MainActivity sẽ như bên dưới:


đây là activity_main.xml của MainActivity

Android - Bài tập 5: Tìm hiểu vòng đời của một Ứng Dụng Android

Leave a Comment
Trong bài tập 3bài tập 4 bạn đã biết cách tạo một Android Project cũng như giải quyết một số vấn đề gặp phải khi thực hiện ứng dụng.

Trong bài tập 5 bạn cần hiểu các khái niệm sau:

1) Applications là gì?

2) Activities là gì?

3) Activity Stack là gì?

4) Tasks là gì?

5) Life Cycle States là gì?

------------------------------------------------------------------------------------------------


1) Applications là gì?

- Bạn hiểu nôm na như sau: Mỗi một Android Project khi bạn biên dịch thành công thì sẽ được đóng gói thành tập tin .apk, tập tin .apk được gọi là một Application (Ứng dụng cụ thể nào đó – Ví dụ như ứng dụng chống tin nhắn rác, ứng dụng tìm đường đi ngắn nhất, ứng dụng đăng ký học phần bằng sms …. )

2) Activities là gì?

- Thông thường trong một ứng dụng (Application) sẽ có một hoặc nhiều Activity (bạn hiểu đại khái là các màn hình tương tác giống như Form trong .Net).

- Mỗi một Activity này sẽ có một vòng đời riêng độc lập hoàn toàn với các Activity khác, bạn sẽ hiểu rõ hơn về vòng đời trong phần Life Cycle States. Việc hiểu rõ vòng đời của Activity là rất quan trọng trong việc xử lý thông tin.

- Mỗi một Activity muốn được triệu gọi trong ứng dụng thì bắt buộc nó phải được khai báo trong Manifest

3) Activity Stack là gì?

- Tương tự như các ngôn ngữ lập trình khác, Activity Stack hoạt động theo cơ chế LIFO (LAST IN FIRST OUT)

-Mỗi một Activity mới được mở lên nó sẽ ở bên trên Activity cũ, để trở về Activity thì bạn chỉ cần nhấn nút “Back” để trở về hoặc viết lệnh. Tuy nhiên nếu bạn nhấn nút Home rồi thì sẽ không thể dùng nút “Back” để quay lại màn hình cũ được.



- Ở đây bạn chú ý là có 2 kiểu mở Activity mới :

a) Mở Activity mới lên làm che khuất toàn bộ Activity cũ (không nhìn thấy Activity cũ): sảy ra sự kiện onPause rồi onStop đối với Activity cũ

b) Mở Activity mới lên làm che khuất một phần Activity cũ (vẫn nhìn thấy Activity cũ): Sảy ra sự kiện onPause với Activity cũ.

- Khi quay trở về Activity cũ thì sau khi thực hiện xong các hàm cần thiết, chắc chắn nó phải gọi hàm onResume để phục hồi lại trạng thái ứng dụng

- Như vậy ta thường lưu lại trạng thái của ứng dụng trong sự kiện onPause và đọc lại trạng thái ứng dụng trong sự kiện onResume

4) Tasks là gì?

- Bạn hiểu đại khái Task là khả năng  thực hiện một công việc nào đó giữa các Ứng dụng với nhau, cụ thể là các Activity

- Ví dụ bạn đang mở chương trình quản lý BlackList, trong chương trình này cho phép mở danh bạ để đưa vào danh sách đen. Lúc đó chương trình bạn sẽ gọi Activity của ứng dụng danh bạ, sau khi lấy xong lại quay trở về ứng dụng của bạn. Nhớ là 2 ứng dụng này hoàn toàn không liên quan gì tới nhau cả.


5) Life Cycle States là gì?

Với mỗi Activity thường vòng đời có 3 trạng thái sau:

1- Running (đang kích hoạt)

2- Paused (tạm dừng)

3- Stopped (dừng – không phải Destroyed)


1- Running (đang kích hoạt): Khi màn hình là Foreground ( Activity nằm trên cùng ứng dụng và cho phép người sử dụng tương tác)

2- Paused (tạm dừng) : Activity bị mất focus nhưng mà vẫn nhìn thấy được Activity này (Ví dụ bạn mở một Activity mới lên dưới dạng Dialog). Trường hợp này nó vẫn có khả năng bị hệ thống tự động “XỬ” trong tình huống bộ nhớ quá ít.

3- Stopped (dừng – không phải Destroyed): Activity mất focus và không nhìn thấy được (ví dụ bạn mở một Activity mới lên mà Full màn hình chẳng hạn). Trong trường hợp này nó có thể bị hệ thống “Xử” trong bất kỳ tình huống nào.

*** Như vậy cả Paused hay Stopped đều có khả năng bị Destroyed (hủy) khi bộ nhớ cần cho việc khác ưu tiên hơn.



- Trong vòng đời của ứng dụng Android bạn cần phần biệt 2 loại sau:

- Visible Lifetime Foreground Lifetime


- Visible Lifetime:

+ sảy ra từ sau khi gọi onStart –> cho tới lúc gọi onStop : trong trường hợp này TA vẫn có thể thấy màn hình Activity (có thể tương tác khi nó là foreground, không tương tác được khi nó không phải foreground như đã giải thích ở trên)

- Foreground Lifetime:

+ Sảy ra từ khi gọi onResume –> cho tới lúc gọi onPause : trong suốt thời gian này Activity luôn nằm ở trên cùng và Ta có thể tương tác được với nó

Như vậy bạn đã hiểu được vòng đời của một ứng dụng Android diễn ra như thế nào.

Bây giờ Tôi sẽ Demo ứng dụng Android để kiểm tra vòng đời của nó:

- Bạn tạo một ứng dụng tên là : CheckLifeTimeCycle với cấu trúc như hình dưới đây:


- Double Click vào MainActivity.java:

- Sau đó bấm chuột phải vào màn hình Coding/ chọn Source/ chọn Override / Implement Methods… :



- Màn hình Override / Impement Methods sẽ hiển thị ra như bên dưới, bạn chọn các hàm: onStart, onRestart, onResume, onPause, onStop, onDestroy…: rồi bấm OK


Bạn xem coding bên trong:



Ở trên bạn thấy dòng lệnh trong hàm onResume:

protected void onResume() {

Toast.makeText(this,”onResume”, Toast.LENGTH_SHORT)

.show();

super.onResume();

}

Đơn giản là Tôi chỉ hiển thị lên xem hàm nào sẽ được triệu gọi ứng với Life time cycle của Activity

- Bây giờ bạn chạy ứng dụng vào Máy ảo Android và thực hiện một số thao tác : Mở một ứng dụng khác, mở Menu, nhấn nút Back, nhấn nút Home … quan sát hiện tượng bạn sẽ hiểu được cách vận hành các hành này.

- Trong bài tập tiếp theo Tôi sẽ làm thêm một ví dụ về Life time cycle để bạn hiểu rõ hơn về nó, đặc biệt là tận mắt chứng kiến đâu là Visible Life time, đâu là Foreground Life time

- Bạn cần phải hiểu rõ về Life time cycle để giúp ích cho việc quản lý ứng dụng

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


Android - Bài tập 4: Cách sửa một số lỗi thường gặp trong Android Project

Leave a Comment
bài tập 3 các bạn đã biết cách tạo và thực thi một ứng dụng Android, trong bài tập này Tôi sẽ nói một số cách sửa lỗi thường gặp trong quá trình thực thi một ứng dụng Android:

- Bạn nhớ là những lỗi này thường không phải do bạn gây ra mà do Eclipse hoặc một số nguyên nhân nào đó (ta gọi tạm thời là Chương trình bị tưng tưng). Bạn cũng không hiểu vì sao nó lại bị lỗi, nó không cho phép bạn biên dịch và thực thi ứng dụng mặc dù bạn chả làm gì cả?

- Khi bạn gặp những trường hợp khó đỡ như vậy thì hãy làm theo một số cách dưới đây (nếu mà vẫn không được thì bạn có thể sử dụng phần mềm TeamView, cung cấp Id và Password Tôi sẽ login vào máy bạn sửa giùm nếu được):

Giải pháp 1:

- b1)  Vào menu Project / chọn Clean :

- b2) Màn hình Clean hiển thị lên, bạn chọn Project bị báo lỗi và bấm Ok:


- Ở hình trên, nếu bạn chọn “Clean All Project “,  eclipse sẽ clean toàn bộ Project trong Package Explorer.

- Nếu bạn chọn “Clean Projects selected  below“, eclipse sẽ clean những Project mà bạn Checked ở bên dưới.

b3) Bạn Unchecked “Build Automatically” và Checked lại “Build Automatically” trong menu Project

Giải pháp 2:

- Bấm chuột phải vào Project / chọn Android Tools / chọn Fix Project Properties:


Giải pháp 3:

- Khai bạn kéo thả một số tập tin, hình ảnh vào Android Project nó sẽ báo lỗi và không thể tạo ra gen. Bạn hãy kiểm tra xem có phải tên các tập tin đó bị Viết Hoa ký tự đầu hay không, hay tên tập tin bị để khoảng trắng hoặc là có các ký tự không hợp lệ. Bạn chỉ cần sửa lại là hết lỗi

Giải pháp 4:

- Đơn giản là tắt và khởi động lại Eclipse.

Trong bài tập tiếp theo, Tôi sẽ hướng dẫn các bạn hiểu được Vòng Đời của một Ứng dụng Android và đưa ra một số lời khuyên về việc lưu trạng thái cũng như phục hồi trạng thái của ứng dụng.

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

Nguồn : https://duythanhcse.wordpress.com




Android - Bài tập 3: Cách tạo Android Project và tìm hiểu cấu trúc bên trong của một Android Project

Leave a Comment
bài tập số 2, bạn đã biết cách tạo và sử dụng máy ảo Android cũng như DDMS.

 Trong bài tập này các bạn sẽ thực hành cách tạo Android Project và tìm hiểu các thành phần bên trong của nó:

Cách tạo Android Project
Activity, Intent, View
Auto gen
Android libs
Resource
Layout, menu, values
Manifest XML
- Cũng như cách chạy chương trình Android, hiểu được cơ chế vận hành của nó.

1) Cách tạo một Android Project:

Ở đây Tôi cung cấp 2 cách tạo Android Project:

Cách 1: Bạn vào Menu File/ Chọn New/ chọn Android Project (xem hình bên dưới):


Cách 2: Bấm chuột phải vào vị trí bất kỳ trong Package Explorer / Chọn New / Chọn Android Project (xem hình bên dưới):


Các bạn chú ý là khi một Android Project được tạo ra thì nó sẽ được lưu trữ trong Package Explorer. Một số trường hợp bạn không thể thấy được Package Explorer (do bạn lỡ tay đóng nó đi, hoặc một nguyên nhân nào đó), nếu như chưa biết cách lôi nó ra thì các bạn làm như sau:

- Vào menu Windows/ chọn Show View/ click chọn Package Explorer

- Nếu như trong Show View mà không thấy Package Explorer thì bạn nhìn mục dưới cùng có nhãn “Other…“, click vào nó thì chắc chắn bên trong sẽ có Package Explorer:


2) Nhập thông số cho một Android Project mới:

Khi bạn chọn New Android Project thì một màn hình sẽ hiển thị ra như bên dưới:


Mục Application Name: bạn đặt tên cho ứng dụng mà bạn mong muốn, trong ví dụ này là Tôi đặt “SampleProject“

Mục Project Name : thông thường khi bạn đặt tên cho Application Name thì mục Project Name sẽ tự động cập nhật giống như vậy

Mục Package Name: bạn nên viết thường hết và phải ít nhất có 1 dấu chấm ngăn cách, ví dụ bạn có thể đặt “tranduythanh.com” nhưng không thể đặt “tranduythanh”.

Mục Minimum Required SDK : Chọn giới hạn API thấp nhất mà ứng dụng có thể cài đặt (Điện thoại đó có API phải >= Minimum Require)

Mục Target SDK : chọn API mà ứng dụng mong muốn tốt nhất có thể thực thi trên API này

Bạn cần phần biệt giữa Minimum và Target:

 Tôi muốn giải thích sơ qua chỗ này, ở trên bạn thấy Tôi chọn Minimum là API 8, và Target là API 17.  Điều này nghĩa là:
+ Nếu như ứng dụng của Tôi mà được cài đặt trên điện thoại có API 17 tức là cái đích Tôi mong muốn và nó sẽ được hỗ trợ tối đa cho các đặc tính bên trong ứng dụng của Tôi (tức là cái tốt nhất)
+ Nếu như ứng dụng của Tôi cài trên điện thoại có API là 7 thì chắc là không thể vì ở đây Tôi yêu cầu Minimum là API 8
+ Nếu như ứng dụng của Tôi cài trên điện thoại có API >17 chẳng hạn, thì thông thường là sẽ được vì Version mới đa phần hỗ trợ version cũ, nhưng dĩ nhiên có thể không tốt bằng đúng cái điện thoại sử dụng API 17
- Lý do cho phần này là bởi vì đối với từng API luôn có một lỗi nào đó, các API mới ra đời để sửa vá lỗi hoặc là nâng cấp thêm một số đặc tính mới. Ví dụ như để sử chức năng Nhận Diện Khuôn Mặt có sẵn của Android thì bắt buộc phải chọn Minimum API =14 vì từ Android 4.0 mới hỗ trợ chức năng Nhận Diện Khuôn Mặt
- Sau khi chọn các thông số xong, bạn nhấn Next cho tới khi nút Finish xuất hiện (Tôi khuyên là các bạn cứ bấm Next, đừng có chỉnh sửa gì cả vì các bạn mới bắt đầu làm quen với nó. Khi nào quen rồi thì Ta sẽ quay lại chi tiết sau):

- Khi bấm Finish thì bạn quan sát Package Explorer để xem cấu trúc bên trong của ứng dụng Android:

3) Tìm hiểu cấu trúc bên trong của Ứng dụng Android:


Bạn cần hiểu được cấu trúc cây trong Ứng Dụng Android ở trên:

Hãy quan sát MainActivity.java và activity_main.xml . Khi một Ứng dụng được tạo ra thì thông thường sẽ có một Activity để khởi chạy ứng dụng. Ở đây bạn hiểu rằng MainActivity.java chính là class chứa toàn bộ source code, còn activity_main.xml chính là phần giao diện. Đối với Android khi một Activity tạo ra thì thường nó đi kèm với một Layout giao diện nào đó (Tức là nó luôn được tách thành 2 phần: phần source code riêng và phần giao diện riêng). Bạn hiểu Activity giống như là các màn hình (cửa sổ) tương tự như là C#, mỗi Activity là một màn hình tương tác cụ thể nào đó.

- Bạn cũng cần nhớ rằng bất kỳ một Activity nào muốn được triệu gọi thành công trong Android Project thì bắt buộc nó phải được khai báo trong tập tin AndroidManifest.xml . Nếu như bạn gọi một Activity mà Activity này không được khai báo trong Manifest thì chắc chắn chương trình sẽ bị lỗi và tắt luôn.

- Hãy xem cấu trúc bên trong của AndroidManifest.xml (double click vào nó và chọn tab như hình bên dưới):
- Như hình bên trên bạn thấy đó, MainActivity muốn được triệu gọi thì nó phải được khai báo trong này. Và đặc biệt nếu như muốn nó là màn hình đầu tiên được thực thi khi chạy ứng dụng thì bạn phải khai báo giống như  tag <intent-filter> ở trên. Như vậy nếu bạn muốn một Activity bất kỳ nào đó được gọi đầu tiên khi chạy ứng dụng thì bạn chỉ khai báo y chang như vậy, còn các Activity khác bạn không cần khai báo <intent-filter> như trên (tức là hoàn toàn không có tag này)

- Tiếp theo bạn double – click vào activity_main.xml :



- Hãy quan sát màn hình ở trên (nhìn kỹ có 2 phần Graphical Layout và activity_main.xml. Bạn nên làm quen trong phần Graphical Layout trước):

+ Vùng số 1 : chính là nơi chứa các control, layout, component… bạn muốn sử dụng cái nào thì kéo thả nó vào Vùng số 2. Như bạn thấy thì Tôi vừa kéo một Button vào và đặt Id nó là “btnXinChao”,

+ Vùng số 2: là giao diện, nơi mà bạn cần thiết kế

+ Vùng số 3: cho phép thiết kế theo chiều đứng hay chiều ngang

+ Vùng số 4: chức năng Zoom in – zoom out để dễ thiết kế

+ Vùng số 5: chính là nơi thiết lập các thuộc tính cho các control được kéo thả vào giao diện

- Bây giờ bạn vào thư mục gen trong Package Explorer và mở tập tin R.java lên:


Thư mục gen , là thực mục cho Android tự động tạo ra, cho dù bạn có xóa nó thì nó cũng lại tự tạo ra. Nội dung bên trong bạn đừng có chỉnh sửa nó. Tất cả những gì bạn kéo thả vào giao diện, hay thiết lập string.xml, menu … tất tần tật liên quan tới resource thì nó sẽ được sinh ra bên trong R.java. Dựa vào đây để ta có thể truy suất các đối tượng trong coding.

Ví dụ:

- Ở trên bạn thấy class Id có chứa Id của Button mà lúc nãy Tôi kéo vào giao diện đặt tên là btnXinChao. Ta dựa vào Id này để tương tác với control.

- Hay layout activity_main cũng sẽ tự động lưu trữ trong này

- Tiếp tục double – click vào MainActivity.java:



 Trong màn hình trên, bạn thấy bên trong hàm onCreate có lệnh:

+ setContentView(R.Layout.activity_main) ==> thiết lập giao diện cho Activity. Với activity_main lấy từ R.java

+ findViewById(R.id.btnXinChao) ==> truy suất control là Button trên giao diện. với btnXinChao lấy từ R.java

* Bạn sẽ hiểu hơn về các hàm này vào các phần sau. Ở đây mục đích là Tôi đang giải thích chức năng của từng phần trong Android

- Tiếp tục bạn quan sát các thư mục: Drawable-hdpi, Drawable-ldpi,Drawable-mdpi, Drawable-xdpi:

Bạn có thể tự tạo thêm một thư mục cùng cấp tên là Drawable, các tập tin bạn kéo thả trực tiếp vào trong này (tạo Resource). Khi chương trình load các ReSource sẽ tự động vào đây lấy. Còn -hdpi, -ldbpi, -xdpi là tùy thuộc vào độ phân giải màn hình mà chương trình tự động vào lấy đúng dữ liệu ở bên trong.

- Tiến hành thực thi chương trình:

 Bấm chuột phải vào ứng dụng / chọn Run As/ chọn Android Application , xem kết quả:



- Tôi gom lại thành 5 bước thực hiện của một ứng dụng Android như sau:

 bước 1: Android Project sẽ được tự động biên dịch và chuyển qua Android Executables (.dex)

 bước 2: Đóng gói thành tập tin .apk

bước 3: Upload .apk vào thiết bị android

bước 4: Tiến hành cài đặt .apk đó

bước 5: Khi cài đặt thành công, chương trình sẽ được thực hiện Activity được thiết lập : android.intent.action.MAIN
Mỗi một ứng dụng Android sẽ được thực thi trên một máy ảo Dalvik (không phải máy ảo Java). Theo như giải thích của developer Android thì mục đích là chạy đa tiến trình, giúp tối ưu bộ nhớ.

Như vậy đến đây là bạn đã biết cách tạo một ứng dụng Android và khởi động nó như thế nào, đồng thời cũng biết được một số thành phần bên trong ứng dụng và công năng của chúng

Bạn cần hiểu rõ bài tập này, Trong bài tập tiếp theo Tôi sẽ nêu ra các tình huống LỖI của chương trình và cách xử lý chúng như thế nào. Vì  Tôi chắc chắn rằng trong quá trình học lập Trình Android bạn sẽ gặp các tình huống đó mà không hiểu vì sao nó bị lỗi, bạn sẽ bế tắc trong việc giải quyết lỗi.

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





Android - Bài tập 2: Thao tác với Android Virtual Device và DDMS

Leave a Comment
Bài 1 : 

 Mục đích của bài tập này sẽ giúp các bạn thao tác được với AVD (tạo, sửa, xóa, cấu hình…) và cách sử dụng DDMS cho việc nhắn tin, gọi điện thoại, sử dụng File Explorer ( Đưa tập tin từ máy tính vào máy ảo, và lấy tập tin từ máy ảo ra máy tính….). Biết được cách kết nối một số thiết bị Android thiệt với DDMS, cũng như cách thức debug.

-  Tại sao sử dụng AVD?

+ Có nhiều lý do để sử dụng AVD, còn theo Tôi thì đơn giản là nó thay thế cho thiệt bị thật (Android Emulator) nên cho dù bạn không có chiếc Alô Android nào thì vẫn lập trình ầm ầm như thường. Mọi sự tương tác trên Emulator cũng chính là tương tác trên thiết bị thật

+ AVD – DDMS hỗ trợ giả lập location base service với định dạng KML nên dễ dàng cho việc lập trình LBS

+ Chỉ có một vài hạn chế của Emulator : Khó hỗ trợ Camera, không hỗ trợ thiết bị cảm ứng. Nhưng bạn yên tâm là trên mạng cũng đã hỗ trợ thư viện tương tác cảm ứng trong Emulator  (hỗ trợ accelerometer, compass, và temperature sensors)

1) Cách tạo Android emulator:


- Vào menu Windows/ chọn Android Virtual Device Manager hoặc click vào biểu tưởng máy ảo trên thanh Toolbar:



 Cửa sổ Android Virtual Device Manager sẽ hiển thị ra như bên dưới:
- Để tạo một Android Emulator : click nút New (khoanh vùng màu đỏ):

- Ở màn hình dưới  ta thiết lập các thông số: Tên máy ảo, độ phân giải, API, bộ nhớ trong, bộ nhớ ngoài (SD Card) rồi nhấn nút OK. Muốn lần tiếp theo khởi động máy ảo nhanh thì ta checked vào mục Snapshot

may ao android AVD
 Như bạn thấy máy ảo avdnew đã được tạo ra, bạn chú ý là khi một máy ảo được tạo ra thì nó sẽ được lưu trữ vào user của máy tính đang hoạt động, ở hình trên thì lưu trong “c:\Users\drthanh\.android\avd“. Máy của bạn cài đặt với user nào thì bạn vào đúng chỗ mà xem cấu trúc bên trong:

 - Ở đây bạn chú ý là nếu bạn cấp dung lượng cho SD Card tại màn hình tạo máy ảo bao nhiêu thì tập tin sdcard.img sẽ có dung lượng bấy nhiêu trong này (do đó bạn phải cẩn trọng khi tạo SD Card đối với máy tính có dung lượng ổ cứng khiêm tốn)

- tương tự bạn nhìn thấy tập tin snapshots.img, hiện giờ bạn chỉ thấy có 250kb, nhưng  nếu như bạn khởi động lần đầu tiên và vào đây quan sát thì dung lượng của nó sẽ tăng lên rất lớn, mục đích để lưu trữ lại toàn bộ thông số để lần khởi chạy thứ 2 cho lẹ

2) Chạy Android emulator:

- Từ màn hình Android Virtual Device Manager, ta chọn tên máy ảo cần chạy rồi nhấn nút Start:


- Bạn chờ khoảng một thời gian vài phút (hoặc lâu hơn tùy vào khả năng của máy). Tùy vào cấu hình mà bạn chọn (API, độ phân giải…), Android Emulator sẽ xuất  hiện như bên dưới:


3) cách sử dụng Android Emulator:

- Bạn để ý là mỗi một máy ảo được khởi động nó sẽ đi với một port nào đó, ví dụ trong trường hợp ở trên là port 5554 (xem ở tiêu đề của cửa sổ). Bạn chú ý là port này chính là đại diện cho số điện thoại của máy ảo đó. Ta sẽ dựa vào port này để thao tác : Gửi tin nhắn, gọi điện thoại…. trong của sổ DDMS.

- Các phím chức năng : (không quan trọng lắm nên ở đây Tôi không liệt kê ra, các bạn tự mò). Ở đây Tôi chỉ nói một phím chức năng mà Tôi cho là đáng lưu tâm, đó là phím chức năng cho phép quay ngang màn hình điện thoại. Bởi vì người sử dụng điện thoại Smart Phone thường có thói quen quay ngang, quay dọc điện thoại để thao tác cái gì đó. Ta phải lập trình để hỗ trợ cho xem đứng và ngang đối với một ứng dụng cụ thể nào đó.

+ Bạn nhấn tổ hợp phím Ctrl + F11 để xoay ngang (bấm lại để trở về như cũ):


 - Cách gửi tin nhắn – gọi điện thoại trong máy ảo:

+ Cách 1: Bạn tạo thêm một máy ảo Android khác, khi một máy thứ 2 được khởi chạy thì thông thường port của nó sẽ là 5556, Như bên trên Tôi đã nói Port này là đại diện cho số điện thoại. Máy tính của bạn hiện tại sẽ có 2 máy ảo Android (Bạn tưởng tượng đó là 2 cái điện thoại thật mà bạn đang cầm trên tay đi). Do đó cách mà bạn thao tác với điện thoại thật như thế nào thì với Emulator nó sẽ y xì như vậy.

+ Cách 2: Trên thanh công cụ bạn quan sát thấy nút DDMS, nhấn vào nó (chú ý là bạn phải ít nhất đang chạy 1 máy ảo android)

Thông thường thì trên thanh công cụ sẽ có DDMS, nhưng nếu như không thấy thì bạn vào menu Windows/ chọn Open Perspective/ DDMS , xem hình dưới:


-  sau khi chọn DDMS, bạn vào tab Emulator Control như hình bên dưới:


- Ở màn hình trên:

+ Mục Incoming Number Tôi nhập là 5554 (port này chính là số điện thoại của máy ảo)

+ Tôi chọn SMS và nhập vào “Hell0 … Ty Map”

+ Nhấn nút Send

–>Bạn quan sát máy Ảo có port 5554 sẽ nhận được tin nhắn này:



- Cách sử dụng Profile Explorer:

+ Trong màn hình DDMS, bạn chọn tab Profile Explorer: Trong bài tập này bạn chỉ cần tập cách thả 1 tập tin từ máy tính vào SD Card, và kéo 1 tập tin từ SD Card ra máy tính (Chúng ta còn phải làm việc với nó rất nhiều lần ở các bài tập kế tiếp):


- bạn quan sát thư mục mnt/ sdcard . Chú ý là có một vài nơi cùng tên sdcard, nhưng bạn phải vào mnt.

+ Để lấy 1 tập tin từ SD Card ra thì bạn chọn tập tin đó rồi nhấn vào biểu tượng ở đĩa mềm ở bên trên (Tôi tô màu vàng)

+Để đưa một tập tin từ Máy tính vào SD card bạn nhấn vào biểu tượng điện thoại (kế bên biểu tượng đĩa mềm), chọn tập tin cần đưa, Hoặc bạn kéo thả trực tiếp một tập tin nào đó vào màn hình này luôn. cả 2 cách đều như nhau.

4) Cách kết nối với Thiết Bị Android Thật

- Để làm được điều này thì bạn phải am hiểu về Driver cho mỗi Model điện  thoại. Sau khi đã cài Driver đầy đủ:

Đối với Điện thoại Android sử dụng API 4.0 trở lên:

+ Vào Settings

+ Chọn Developer Options

+ Checked vào USB debugging.



- Bạn xem hình bên dưới (ở đây Tôi kết nối điện thoại SAM SUNG SII của Tối tới DDMS):



-  Bạn thao tác bình thường: Thêm tập tin vào Điện thoại thật, lấy tập tin ra…. Khi chạy chương trình Android ta sẽ chọn Điện thoại Thật nếu như bạn muốn chạy trên thiết bị thật. Eclipse cho phép cấu hình lựa chọn các loại Máy ảo, máy thật khi chạy ứng dụng.

**** Như vậy Tôi đã hướng dẫn các bạn xong phần thao tác với AVD, trong bài tập kế tiếp Tôi muốn bạn hiểu được cách thức mà một ứng dụng Android khi triển khai nó đi theo đường nào:

 - Ví dụ:

+ Dalvik Virtual Machine là gì? nó có tác dụng gì trong ứng dụng?

+ Biên dịch như thế nào?

+ Biên dịch xong thì làm gì?

+ Cách thức ứng dụng upload vào thiết bị

+ Cách thực ứng dụng được cài đặt vào thiết bị

+ Chạy ứng dụng như thế nào trong thiết bị

+ Làm sao tháo gỡ ứng dụng ra khỏi thiết bị

+ Làm sao kiểm tra có bao nhiêu ứng dụng đang chạy trong điện thoại.

Bài tập này Tôi hi vọng các bạn phải thao tác thật nhuần nhuyễn để khi vào sâu bên trong để lập trình thì nó giúp ích cho các bạn rất nhiều.

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

Nguồn : http://duythanhcse.wordpress.com/







Android - Bài tập 1: Làm quen với môi trường phát triển điện thoại di động

Leave a Comment
Nội dung kiến thức thực hành :
-          Làm quen với môi trường phát triển điện thoại di động
-          Sử dụng Eclipse, DDMS – cách thức Debug
-          Cách cài đặt Android SDK, Update Android API, Upgrade Firmware
-          Sử dụng Android Virtual Device
-          Tìm hiểu các thành phần trong Android App
-          Tìm hiểu các đơn vị đo lường trong Android
-          Tìm hiểu vòng đời của ứng dụng
-          Tìm hiểu Google Play
Trong bài tập 1 này, chúng ta  phải thực hiện : Cài đặt được Java JDK, Android SDK, ADT plugin for Eclipse, update Android SDK

  Các bước chi tiết 

-   Tải và cài đặt Java JDKhttp://adf.ly/7086332/java-jdk (cài đặt cái này trước, nên chọn bản mới nhất


 -   Tải và cài đặt Android SDKhttp://adf.ly/7086332/android-sdk, tải gói ADT Bundle for Windows, gói này sẽ chứa các thành phần:


  • Eclipse + ADT plugin
  • Android SDK Tools
  • Android Platform tools
  • Android API mới nhất
  • Android system image mới nhất cho Emulator
-          Cập nhật ADT plugin mới nhất cho Eclipse:



  1. Vào menu Help / chọn Install New Software
  2. Nhập đường dẫn: https://dl-ssl.google.com/android/eclipse/  và bấm nút Add ở góc bên phải
  3. Chọn các thông số thích hợp để tiến hành cập nhật.


-          Tiến hành Cập nhật Android SDK (nếu cần thiết)

-          Tham chiếu Android SDK (bắt buộc, nếu cài gói ADT Bundle for Windows trên trang developer.android.com thì nó đã tự tham chiếu cho chúng ta rồi).

Sau khi cài đặt xong đầy đủ (JDK, Android SDK …), ta khởi động Elipse trong gói  ADT Bundle for windows, ta có giao diện như hình bên dưới:


-    Đóng màn hình Welcome bằng cách click vào dấu chéo kế bên chữ Android IDE

-      Để tham chiếu tới Android SDK, ta vào menu Windows/ Preferences/ chọn Android và Browse tới SDK location mà bạn lưu trữ:


Các bạn nhìn vào hình trên, thấy có Android 4.2, API 17 hiển thị ra. Đó chính là API mới nhất của Android, tùy vào danh sách API được tải về máy nó sẽ hiển thị ra đây. Hiện tại trong máy của Tôi chỉ có 1 API 17, nếu máy bạn có nhiều API khác thì nó sẽ liệt kê ra đây hết.

- Nếu như máy tính của bạn có kết nối internet, thì bạn có thể cập nhật API theo cách sau:

Vào menu Windows/ Android SDK Manager (hoặc bấm vào biểu tượng trên thanh toolbar), màn hình Android SDK Manager sẽ hiện thị ra như bên dưới:


Bạn quan sát trong màn hình bên trên, Những gói nào chưa được cài đặt thì có dòng chữ “Not installed”, bạn checked vào nó và nhấn nút Install packages.. ở góc phải dưới cùng.

Tới đây là bạn đã biết cài đặt JDK, cài đặt Android SDK, cách chạy Eclipse và cập nhật API.

Trong topic tiếp theo bạn sẽ học cách sử dụng Android Virtual Devices, cách sử dụng DDMS, cách debug.

Nguồn :http://duythanhcse.wordpress.com/

Download Chrome NewVersion Offline Auto Update - Free IT-C500

Leave a Comment

Download Chrome bản mới nhất Offline cập nhật liên tục 

Chrome offline moi nhat, Tải chrome Full, Download Chrome bản mới nhất


Google Chrome là 1 trong những phần mềm được sử dụng nhiều nhất tại Việt Nam hiện nay cùng với Firefox, Crom+... Với tính năng mạnh mẽ đặc biệt là về bảo mật, giao diện thân thiện luôn được cập nhật liên tục Google chrome là 1 lựa chọn đáng tin cậy khi lướt web.

Những tính năng hay của Chrome
·         Lướt web tốc độ cao, an toàn
·         Lướt web cùng lúc với nhiều tab khác nhau trên cùng 1 cửa sổ
·         Có thể đăng nhập nhiều tài khoản khác nhau
·         Đồng bộ hóa với tài khoản google, lưu lại những trang web yêu thích được đánh dấu
·         Có thể lướt web với chế độ riêng tư bảo mật hơn về thông tin
·         ...
Google Chrome 35 offline mới nhất 22/5/2014