Hiển thị các bài đăng có nhãn Lập Trình. Hiển thị tất cả bài đăng
Hiển thị các bài đăng có nhãn Lập Trình. Hiển thị tất cả bài đăng

[C#]. WindowForm Đếm từ trong chuỗi

Người đăng: chisenhungsuutam on Thứ Tư, 16 tháng 7, 2014



using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace DemTuTrongChuoi
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void btnDem_Click(object sender, EventArgs e)
        {
            int sokytu = 0;
            string a = txtChuoi.Text;
            a= a.Trim();
            sokytu = a.Length;

            lbkq.Text = "Chuỗi có :" + sokytu;

        }
    }
}


Tải code tại đây : Tải xuống 
More about

[Bài Giảng] Slide bài giảng nhập môn lập trình

Người đăng: chisenhungsuutam on Thứ Năm, 10 tháng 7, 2014

More about

[c] Tài liệu ngôn ngữ lập trình C

Người đăng: chisenhungsuutam

More about

Giáo trình Giai thuat va lap trinh - LE MINH HOANG

Người đăng: chisenhungsuutam

More about

[Giáo Trình] Lập trình căn bản lập trình C Cao Đẳng Công thương

Người đăng: chisenhungsuutam

More about

[Java] Giáo trình lập trình mạng với Java DHSPKTHCM

Người đăng: chisenhungsuutam

More about

[LTM] Chương 6 : Java Threads

Người đăng: chisenhungsuutam on Thứ Tư, 26 tháng 3, 2014

More about

[LTM] Chương 3.4: Lớp String và StringBuffer, Math

Người đăng: chisenhungsuutam on Thứ Hai, 24 tháng 3, 2014

Xử lý chuỗi
Java cung cấp 2 lớp: 
  • String: dùng cho xâu ký tự bất biến (giá trị được khởi tạo ban đầu và không thay đổi; chỉ đọc)
  • StringBuffer: dùng cho xâu ký tự động, thay đổi tùy ý.
String class
Khởi tạo xâu: 
String str=“cong hoa xa hoi” (ko dung constructor)
Dùng toán tử new:
String str= new String(“cong hoa”);
String str= new String(mang); nhập xâu từ mảng
String str= new String(buff); buff là chuỗi động
Độ dài xâu: int length()
Ký tự thứ i: char charAt(int i)
Hoa: String toUperCase(), 
Chữ thường: String toLowerCase()
Xâu bắt đầu là s: boolean startWith(String s)
Xâu kết thúc là s: boolean endWith(String s)

Methods: ghép, so sánh
1. Ghép xâu: String concat(String s) hoặc dùng +
2. So sánh xâu
boolean equals(Object obj)
boolean equalsIgnoreCase(String str2)
int compareTo(String str2)
int compareTo(Object obj)
Ex: 
String str1=new String("hello"); 
String str2=new String("Hello"); 
String str3=new String("hello all");
boolean b1= str1.equals(str2);
boolean b2=str1.equalsIgnoreCase (str2);
int c1=str1.compareTo(str3);
String str4=str1.concat(str2);

Method: xâu con 
1. Vị trí xuất hiện đầu tiên/cuối cùng của ch (bắt đầu từ start)
  • indexOf(int ch); lastindexOf(int ch); 
  • indexOf(int ch, int start); lastindexOf(int ch, int start)
2. Vị trí xuất hiện đầu tiên/cuối cùng  của xâu con str (bắt đầu từ start)
  • indexOf(String str); lastindexOf(String str); 
  • indexOf(String str, int start); lastindexOf(String str, int start); 
3. Thay thế: 
  • String replace(char old, char new);
  • String replaceAll(String src, String dst)



Method: trích xâu con
  • Lấy xâu con từ vị trí start đến cuối (đến end): String substring(int start);+String substring(int start, int end);
  • Chuyển các đối tượng của Object về String :static String valueOf(Object obj); Object có thể là các giá trị kiểu nguyên thủy
  • Ngoại lệ: StringIndexOutOfBoundsException

StringBuffer class
Tạo lập:
  • StringBuffer(String str); đối tượng mới =str
  • StringBuffer(int len); đối tượng mới rỗng dài len
  • StringBuffer(); đối tượng mới rỗng dài 16 (defa
Ex: StringBuffer strbuf=new StringBuffer(s1)
Chiều dài xâu: int length()
đọc 1 ký tự tại i: char charAt(int i):
thay đổi ký tự tại i thành ch
void setCharAt(int I, char ch)
Chuyển xâu buffer về xâu của lớp String
String toString()
Thay thế: 
StringBuffer replace(int start, int end, String str) 
 Lấy xâu con:
String substring(int start);
String substring(int start, int end);


Thay đổi trong StringBuffer (private)

Thêm một chuỗi (object) vào cuối chuỗi:
StringBuffer append(Object obj): 
Chèn một chuỗi (Object) vào từ vị trí offset
StringBuffer insert(int offset, Object obj)
Xóa một chuỗi trong chuỗi hiện hành từ vị trí start đến cuối (đến vị trí end):
StringBuffer delete(int i) (ko dùng)
StringBuffer delete(int start, int end) 
Đảo ngược một chuỗi: StringBuffer reverse()
Đặt lại độ dài xâu: void setLength(int newlen)
ex
StringBuffer strbf= new StringBuffer(“hello everyone”);
StringBuffer strbfap=strbf.append(“xxxx”);
StringBuffer strbfin=strbf.insert(3, str3);
StringBuffer strbfde=strbf.delete(2,2);
StringBuffer strbfre=strbf.reverse();

String vs. Byte Array
Obtaining the Characters in a String as an Array of Bytes
String text = "To be or not to be"; byte[] textArray = text.getBytes();
Construct string from subset of char array
byte ascii[] ={65, 66, 67, 68, 69, 70 };
String s1 = new String(ascii);
String s2 = new String(ascii, 2, 3);

Char array vs String
Converting Char array to String
char[] ch = {'a','b','c','d'}; System.out.println(String.valueOf(ch));

String text = "To be or not to be"; char[] textArray = text.toCharArray();





More about

[LTM] Chương 3.3 : Cấu trúc mảng

Người đăng: chisenhungsuutam


Cấu trúc mảng

Khai báo: 
<Type>[] <arrayname>;
<Type> <arrayname>[];
<Type>: kiểu nguyên thủy hoặc kiểu lớp
Ex: int [] IntArray, IntVariable;
Poly[] recArray, squArray, ovalArray;
Tạo lập đối tượng: dùng new
<Arrayname> = new <Type>[size];
Ex: IntArray=new Int[10]; recArray=new Poly[5];
Kết hợp:  <Type1>[] <arrayname> = new <Type2>[size];
Khởi tạo: khai báo, tạo lập, gán gtri
<Type>[] <arrayname>={value1, value2..}

Truy xuất mảng<Arrayname>.[index]
index: 0-> Arrayname.length-1
Ngoại lệ: ArrayIndexOutOfBoundsExceptin
Example

Truyền tham số và nhận giá trị trả lại
int[] myCopy(int[] a) {
int b[] = new int[a.length];
for (i=0; i<a.length; i++)
b[i] = a[i];
return b;
}
...
int a[] = {0, 1, 1, 2, 3, 5, 8};
int b[] = myCopy(a);
Ex: sx mảng

Multi Dimensional Array (mảng nhiều chiều)

Khai báo 
<Type>[] [] []… <arrayname>;
<Type> <arrayname>[][]…;
Khai báo,tạo lập:
Ex: int [][] A=new int[4][5];
Khởi tạo: khai báo, tạo lập, gán gtri
Ex: int [] [] matrix =   { {3,5,6,0}, {1,2,0,3}, {0,1,2,4}}
int c[][] = new int[2][];
c[0] = new int[5];
c[1] = new int[10];

Example – Multi Dimensional Array
import java.util.Scanner;
class vd_math {
public static int n =2;
public static int m =3;
public  static int [][] A;
public  static void nhap() {
int i,j;
Scanner nhap = new Scanner(System.in);
for ( i=0; i<=n-1; i++)
for ( j=0; j<=m-1; j++) {
 System.out.print("Nhap pt " + i + "," + j + ": ");
A[i][j]=nhap.nextInt();
}
}  
Example – Multi Dimensional Array
public static void xuat() {
int i,j;
for ( i=0; i<=n-1; i++)
{
for ( j=0; j<=m-1; j++)
System.out.print(A[i][j] + " ");
System.out.println();
}
}
public  static void main(String [] args) {
A = new int [n][m];
nhap();
xuat();
}
}
Tiện ích
„ System.arraycopy(src, s_off, des, d_off, len)
  • …src/ des : mảng nguồn, 
  • s_off/ d_off : offset của mảng nguồn/đích
  • …len: số phầntử cần copy
„Copy nội dung của dữ liệu nguyên thủy, copy tham chiếu đối với đối tượng
Cung cấp 4 phương thức static
  • …fill(): khởi tạo các phần tử của mảng vớimột giá trị như nhau
  • …sort(): xắp xếp mảng
  • …equals(): so sánh hai mảng
  • …binarySearch(): tìm kiếm nhị phân trên mảng đã sắp xếp


ex
import java.util.Arrays;
class vd_math {
public  static void main(String [] args) 
{
int a[] = { 5, 3 , 7 , 4 };
int b[] = new int[a.length];
System.arraycopy(a,0,b,0,a.length);
System.out.println(Arrays.equals(a,b)); 
Arrays.sort(a);
for (int i=0; i<= a.length-1; i++)
System.out.print(a[i] + " ");
}
}
Xử lý toán học: Math class
„ Hằng số: Math.E +Math.PI
„ Các phương thức static
  • type abs(type), sqrt(double)
  • double ceil(double), double floor(double)
  • int round(float), long round(double)
  • type max(type, type), type min(type, type)
  • double random(): sinh số ngẫu nhiên trong đoạn [0.0,1.0]
Math class
„ Lũythừa
  • double pow(double, double)
  • … double exp(double)
  • … double log(double)
  • … double sqrt(double)
„ Lượng giác
  • … double sin(double)
  • … double cos(double)
  • … double tan(double)
More about

[LTM] Chương 3.2 : Xử lý Ngoại lệ

Người đăng: chisenhungsuutam

Ngoại lệ là gì?

Khi một ngoại lệ xảy ra, chương trình kết thúc đột ngột, điều khiển được trả về cho OS
Trình xử lý ngoại lệ được thực hiện để xác định lỗi và bẫy nó 
Trình xử lý ngoại lệ – Ví dụ
Một đoạn mã giả
…………
IF B IS ZERO GO TO ERROR
C = A/B
PRINT C
GO TO EXIT

ERROR:
DISPLAY “DIVISION BY ZERO”

EXIT:
END

Trình xử lý ngoại lệ trong Java

1.Các lớp Error và Exception xử lý các lỗi trong Java
2. Khi một ngoại lệ xảy ra:
  • một thể hiện biểu diễn ngoại lệ đó được tạo ra. 
  • Thể hiện này sau đó được truyền cho phương thức rút trích và xử lý thông tin
3. Trình xử lý ngoại lệ Java được quản lý thông qua năm từ khoá: try, catch, throw, throws, và finally. 

  • khối try : chứa các lệnh trong chương trình cần được khảo sát ngoại lệ 
  • Từ khoá catch: có thể bắt ngoại lệ và xử lý nó một cách hợp lý
  • Throw: Để ném bằng tay một ngoại lệ
  • Mệnh đề Throws: được dùng trong một phương thức để xác định phương thức này sẽ ném một ngoại lệ 
  • Khối finally: ta có thể xác định mã lệnh thực sự cần thực thi trước khi một phương thức trả về 
Phân cấp các lớp Exception

Mô hình xử lý ngoại lệ
Hai cách xử lý ngoại lệ trong Java
  1. Các lệnh có thể ném các ngoại lệ nằm trong khối try  và các lệnh xử lý ngoại lệ trong khối catch
  2. Một phương thức có thể được đặc tả theo cách sao cho khi ngoại lệ xảy ra thì việc thực thi nó bị cấm
Khối try và catch – Ví dụ

Ex Ngoại lệ

Các phương thức trong ví dụ
  1. toString() rút trích biểu diễn thông tin lưu trong một đối tượng Exception dưới dạng String 
  2. printStackTrace() dùng để in ra nguyên nhân gây ngoại lệ và dòng lệnh tạo ra nó
Nhiều khối catch

Ví dụ

Khối try - catch lồng nhau
  • Đôi khi một phần của khối có thể gây ra một lỗi và toàn bộ khối có thể gây ra một lỗi khác
  • Trong trường hợp đó, các trình xử lý ngoại lệ phải lồng nhau 
  • Khi các khối try lồng nhau được dùng, khối try bên trong sẽ thực  thi trước
Ví dụ

Khối finally

  • Đảm bảo rằng tất cả các việc dọn dẹp được thực hiện khi một ngoại lệ xảy ra
  • Dùng kết hợp với khối try 
  • Được đảm bảo thực thi bất kể ngoại lệ có xảy ra hay không


try {
catch(Exception1 e1) {
}
catch(Exception2 e2) {
}
finally {
}
Khối finally – Ví dụ


Sử dụng throw

Một phương thức có thể ném ra nhiều ngoại lệ
Sử dụng throws

Từ khoá throws liệt kê các ngoại lệ mà phương thức chặn.

Ngoại lệ do người dùng định nghĩa
Cần có lớp ngoại lệ do người dùng định nghĩa:
  • Nên là lớp con của lớp Exception 
  • Kiểu ngoại lệ mới có thể được bắt độc lập với những lớp con khác của Throwable
  • Được tạo ra sẽ có tất cả các phương thức của lớp Throwable

Một số ngoại lệ thường gặp 

Ưu điểm của ném bắt ngoại lệ


  • „ Dễ sử dụng: …dàng chuyển điều khiển đếnnơi có khả năng xử lý ngoại lệ + …có thể ném nhiều loại ngoại lệ
  • „ Tách xử lý ngoạilệ khỏi thuật toán: … tách mã xử lý +… sử dụng cú pháp khác
  • „ Không bỏ sót ngoại lệ (ném tự động)
  • „ Làm chương trình dễ đọc hơn, an toàn hơn
More about

[LTM] Chương 3.1 : Biến, hằng, toán tử, kiểu dữ liệu, Cấu trúc điều khiển

Người đăng: chisenhungsuutam

Basics of the Java Language 

Keywords

Comment: 3 types
/* Here is comment which 
   extends across two lines  */
/* * This comment has  especial meaning for the  javadoc unitily.It will be part of documenttation     
        automaticlly generated By the javadoc program 
     */ 
// this comment extends to the end of this line of text 
Command line and block
// A program to display the message
// "Hello World!" on standard output
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello World!");
}
} // end of class HelloWorld
Data Type
  • Xác định loại dữ liệu được lưu trữ trong biến
  • Xác định những tác vụ có thể thực hiện trên dữ liệu
  • Có 2 loại kiểu dữ liệu trong Java:
  1. Primitive data types (kiểu cơ bản/nguyên thủy)
  2. Reference data types (kiểu tham chiếu)

Các kiểu dữ liệu cơ bản( nguyên thủy)


Các kiểu dữ liệu tham chiếu
Một biến thuộc kiểu dữ liệu tham chiếu chỉ chứa tham khảo đến giá trị thực sự được biểu diễn bởi biến đó.

Hằng ký tự
Dãy ký tự đặc biệt dùng để biểu diễn các ký tự không thể nhập trực tiếp vào một chuỗi.

2. Variables(biến )
Variables must be declared (khai báo) before using,
Syntax(cú pháp)
datatype identifier [=value][, identifier[=value]...]; 
Three components of a declaration are:
  •  Data type
  •  Name
  •  Initial value to be assigned (optional)
Ex:
int numberOfStudents; 
String name; 
int x=10; 
boolean isFinished; 
char firstInitial, middleInitial, lastInitial;

Example

Scope variable(biến cục bộ)
Biến cục bộ có thời gian tồn tại giới hạn và quan hệ chỉ trong phần nhỏ của mã. 

Variables
JAVA có 4 loại biến : 
  1. Biến thành phần: là các thành phần của lớp và được khởi tạo giá trị khi một đối tượng của lớp được tạo ra
  2. Biến tĩnh: là các thành viên của lớp, đại diện cho cả lớp
  3. Biến tham chiếu: được sử dụng để xử lý các đối tượng. 
  4. Biến cục bộ: được khai báo trong các phương thức và các khối, khai báo trước khi dùng
Khởi tạo giá trị
  1. Giá trị mặc định
  2. Chuyển đổi kiểu
Chuyển đổi kiểu dữ liệu: 3 dạng 
 1. Dữ liệu cơ bản 
Cú pháp: (NewType) Value; 
Ex: float f= (float) 100.15D (double->float)
2. Các đối tượng: thành 1 đối tượng của một lớp khác. 
Với điều kiện các đối tượng muốn đổi kiểu phải thuộc các lớp thừa kế nhau.
Cú pháp : (NewClass) Object  ; 
3. Dữ liệu cơ bản sang đối tượng và ngược lại:
  • Trong gói java.lang có sẵn những lớp đặc biệt tương ứng với từng kiểu nguyên thủy: lớp Integer, Float,..
  • Tạo đối tượng, ex: int Intobj = new Integer (32); 
  • Khi muốn lấy lại giá trị ban đầu ta dùng phương thức có sẵn trong lớp tương đương. Như intValue() cho kiểu int... 
Ép kiểu
Một kiểu dữ liệu chuyển sang một kiểu dữ liệu khác

Hai loại ép kiểu
  1. Implicit casting (ngầm định)
  2. Explicit casting (tường minh)

Ép kiểu ngầm định: 
Chuyển kiểu tự động

Điều kiện
  • Kiểu đích phải lớn hơn kiểu nguồn
  • Mở rộng kiểu 
  • Các kiểu phải tương thích với nhau
int a= 100;
double b  = a + 2.5f;

Ép kiểu tường minh
  • Chuyển kiểu có độ chính xác cao hơn sang kiểu có độ chính xác thấp hơn 
  • Thu hẹp kiểu
Ex, float sang int
float a=21.2345f;
int b  = (int)a + 5;

3. Operators 

  • Arithmetic Operators
  • Assignment operators
  • Relational Operators and Conditional Operators
  • Logical Operators

Toán tử toán học

Toán tử một ngôi

Toán tử quan hệ
  • Kiểm tra mối quan hệ giữa hai toán hạng.
  • Luôn trả về một giá trị luận lý (true hay false)
Toán tử điều kiện
“&&”, “||”  : làm việc trên hai toán hạng luận lý

“ ? : ” : toán tử điều kiện chấp nhận 3 toán hạng

Toán tử trên bit
 Làm việc trên dạng biểu diễn nhị phân của dữ liệu

Độ ưu tiên toán tử

Sự kết hợp của toán tử


4. Classes in Java 


Class declaration Syntax


Lớp cơ bản trong Java

Input/ Output

Input: System.in  (ko cho nhập “ “)
Scanner nhap = new Scanner(System.in);
int x = nhap.nextInt();
String e= nhap.next();
Input: Luồng ký tự: BufferedReader (cho “ ”)
BufferedReader in =
new BufferedReader (new InputStreamReader (System.in));
String name = in.readLine ();
int hours = Integer.parseInt (in.readLine());
Double rate = Double.parseDouble (in.readLine());
Output: System.out 
System.out.println (“Hello”);
Express (điều kiện)
Có các loại biểu thức như biểu thức logic, biểu thức số học, biểu thức gán 
  • Ví dụ : a <= 10; 
  • Biểu thức gán: Variable1= Variable2=...=Value; 
  • Biểu thức điều kiện :  
Expression ? Expression_true : Expression_false; 

5. Control Flow

  • All application development environments provide a decision making process called control flow statements that direct the application execution.
  • Flow control enables a developer to create an application that can examine the existing conditions, and decide a suitable course of action. 
  • Loops or iteration are an important programming construct that can be used to repeatedly execute a set of actions. 
  • Jump statements allow the program to execute in a non-linear fashion. 
Control Flow Structures in Java

1. Decision-making
  • if-else statement
  • switch-case statement
2. Loops
  • while loop
  • do-while loop
  • for loop
if-else statement
if (condition)
{
action1;
}
else
{
action2;
}

Example: checkNum

If

switch – case statement
switch(integer expression) { 
    case integer expression: 
         statement(s) 
  break; 
    ... 
    default: 
         statement(s) 
         break; 
Expression : Biểu thức điều kiện phụ thuộc vào kiểu dữ liệu cơ bản (byte, int ...)
switch – case statement
Example

  

while Loop

  • while loops are used for situations when a loop has to be executed as long as certain condition is True. 
  • The number of times a loop is to be executed is not pre-determined, but depends on the condition. 
  • The syntax is:
while (condition)
{
action statements;
.
.
}

Example

do – while Loop

  • The do-while loop executes certain statements till the specified condition is True. 
  • These loops are similar to the while loops, except that a do-while loop executes at least once, even if the specified condition is False. The syntax is:
do
{
action statements;
.
.
} while (condition);
Example

for Loop
Syntax:
for (initialization statements;  condition; increment / decrement statements)
{
action statements;
.
.
}
Example

Jump Statements (nhảy)
Three jump statements are:
  1. break
  2. continue
  3. return
The three uses of break statements are: 
  1. It terminates a statement sequence in a switch statement.
  2. It can be used to exit a loop.
  3. It is another form of goto.
Example
More about