Thông báo thành lập đội dự tuyển OLYMPIC Tin Học 2014 của Học Viện

Thành phần tham gia : Tất cả sinh viên HVANND


Cách đăng ký tham gia : Click vào nút đăng ký và điền thông tin theo mẫu


Điều kiện để tham gia đội dự tuyển

  • Có tư duy lập trình tốt
  • Nắm vững một trong những ngôn ngữ sau
    • C
    • C++
    • Java
    • Free Pascal
  • Chăm chỉ, tích cực và đam mê

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