Kiểu Date Trong Java

Date trong Java là 1 trong các class mô tả ngày tháng đầu tiên trong Java. Thật đáng tiếc là hầu hết các cách thức của nó đã lỗi thời, và thay vào đó là dùng các cách thức của java.util.Calendar. Nhưng bạn vẫn có thể dùng java.util.Date để mô tả ngày tháng.

1. Các Lớp Date, Time, Calendar Trong Java

Java cung cấp 1 số class liên quan tới thời gian và lịch (Calendar), sau đây là danh sách các class này:

Class Mô tả
java.util.Date 1 lớp đại diện cho ngày tháng năm và thời gian. Tiếc là hầu hết các cách thức của nó đã bị lỗi thời, khuyến cáo là không nên dùng các cách thức đó, tuy nhiên lớp Date vẫn được dùng rỗng rãi.
java.util.concurrent.TimeUnit TimeUnit là 1 Enum mô tả các đơn vị ngày tháng năm và thời gian.
java.sql.Date 1 lớp mô tả ngày tháng năm. Thông tin về thời gian bị cắt bỏ. Lớp này thường dùng trong JDBC.
java.sql.Time 1 lớp mô tả thời gian (Giờ phút giây, milli giây), và không chứa thông tin ngày tháng năm. Lớp này thường dùng trong JDBC.
java.sql.Timestamp 1 lớp mô tả ngày tháng năm và thời gian. Lớp này thường dùng trong JDBC.
java.util.Calendar Lớp mô tả bộ Lịch. Nó có các cách thức toán học về thời gian, chẳng hạn thêm ngày, bớt ngày,…
java.util.GregorianCalendar Là 1 lớp con trực tiếp của java.util.Calendar, mô tả ngày Dương Lịch, bộ lịch được dùng rộng rãi trên thế giới ngày nay. Nó có tất cả các method từ java.util.Calendar để thao tác toán học trên ngày tháng năm và thời gian.
java.util.TimeZone TimeZone là lớp mô tả múi giờ, nó có ích khi bạn làm việc với Lịch trên múi giờ.
java.text.SimpleDateFormat Lớp này giúp bạn chuyển 1 String có định dạng ngày tháng sang kiểu Date và ngược lại

2. System.currentTimeMillis()

CurrentTimeMillis() là 1 method tĩnh của class System. Kết quả trả về khoảng thời gian bằng mili giây tính từ ngày 1-1-1970 cho tới thời điểm hiện tại.

System.currentTimeMillis() thường được dùng để đo khoảng thời gian làm 1 việc gì đó bằng cách gọi method này trước khi bắt đầu công việc, và sau khi hoàn thành công việc.

JobTimeDemo.java

package org.o7planning.tutorial.dt;

public class JobTimeDemo {

   // Đây là cách thức tính tổng các số từ 1 tới 100.
   private static int sum() {
      int sum = 0;
      for (int i = 0; i <= 100; i++) {
         sum += i;
      }
      return sum;
   }

   private static void doJob(int count) {
      // Gọi cách thức 'sum' với số lần cho bởi tham số.
      for (int i = 0; i < count; i++) {
         sum();
      }
   }

   public static void main(String[] args) {
      long millis1 = System.currentTimeMillis();

      doJob(10000);

      long millis2 = System.currentTimeMillis();

      long distance = millis2 - millis1;

      System.out.println("Distance time in milli second: " + distance);
   }
}

Kết quả chạy ví dụ:

Distance time in milli second: 3

3. TimeUnit

TimeUnit là 1 Enum mô tả các đơn vị ngày tháng năm và thời gian. Nó cung cấp các phương pháp có sẵn để chuyển đổi thời gian qua các đơn vị thời gian. TimeUnit khá hữu ích để biết cách diễn giải 1 thời gian nhất định là đơn vị thời gian cần được xem xét. Sự khác biệt nhỏ giữa các khoảng thời gian như micro giây và nano giây có thể được tìm ra bằng cách sử dụng TimeUnit.

Nó hỗ trợ các đơn vị nano giây, micro giây, mili giây, giây, phút, giờ và ngày. Đối với các đơn vị này, TimeUnit chỉ định các hằng số enum tương ứng:

  • Nanoseconds: 1 phần nghìn của micro giây
  • Microseconds: 1 phần nghìn của mili giây
  • Mili giây: 1 phần nghìn giây
  • Giây: 1 giây
  • Phút: 60 giây
  • Giờ: 60 phút
  • Ngày: Hai mươi bốn giờ

Ví dụ 1:

// Java program to demonstrate TimeUnit Class
 
import java.util.concurrent.TimeUnit;
 
public class GFG {
    public static void main(String args[])
    {
        long hours = 96;
 
        // Convert given time (hours)in days
        long days = TimeUnit.DAYS.convert(hours, TimeUnit.HOURS);
 
        // Convert days in minutes
        long minutes = TimeUnit.MINUTES.convert(days, TimeUnit.DAYS);
 
        System.out.println(hours + " Hours = " + days
                           + " Days = " + +minutes
                           + " Minutes");
 
        // Convert given time (minutes) to microseconds
        long micros = TimeUnit.MINUTES.toMicros(minutes);
        System.out.println(minutes + " Minutes = " + micros
                           + " Microseconds");
 
        // Convert given time (microseconds) to seconds
        long seconds = TimeUnit.MICROSECONDS.toSeconds(micros);
        System.out.println(micros + " Microseconds = "
                           + seconds + " Seconds");
 
        // Create TimeUnit object of type Minutes
        TimeUnit time = TimeUnit.valueOf("MINUTES");
        System.out.println("TimeUnit object type: " + time);
    }
}

Kết quả:

96 Giờ = 4 Ngày = 5760 Phút
5760 Phút = 345600000000 Micro giây
345600000000 Microseconds = 345600 giây
Loại đối tượng TimeUnit: MINUTES

Ví dụ 1:

// Java program to demonstrate TimeUnit Class
 
import java.util.concurrent.TimeUnit;
 
public class GFG implements Runnable {
    public void run()
    {
        // Get array of TimeUnit enum constants using
        // values()
        for (TimeUnit unit : TimeUnit.values()) {
            try {
               
                // pause for 1 second
                TimeUnit.SECONDS.sleep(1);
            }
            catch (InterruptedException e) {
                e.printStackTrace();
            }
 
            System.out.println(
                unit + " : "
                + unit.convert(24, TimeUnit.HOURS));
        }
    }
    public static void main(String args[])
    {
        GFG obj1 = new GFG();
        System.out.println("TimeUnit Example");
       
        // Create and start Thread
        Thread t1 = new Thread(obj1);
        t1.start();
       
        System.out.println("Now, thread will run for 5 seconds");
        try {
           
            // Specify Thread join time, here, 5 seconds
            TimeUnit.SECONDS.timedJoin(t1, 5);
        }
        catch (InterruptedException e) {
            e.printStackTrace();
        }
       
        System.out.println("Thread  Execution Paused");
        System.out.println("Resuming Thread Execution...");
    }
}

Kết quả:

Ví dụ về TimeUnit
Bây giờ, chuỗi sẽ chạy trong 5 giây
NANOSECONDS: 86400000000000
MICROSECONDS: 86400000000
TRIỆU GIÂY: 86400000
GIÂY: 86400
Thực thi chuỗi bị tạm dừng
Tiếp tục thực thi chuỗi ...
PHÚT: 14g40
GIỜ: 24
NGÀY: 1

4. Java.Util.Date

Lớp java.util.Date trong java biểu diễn ngày và giờ (date và time). Nó cung cấp các Constructor và cách thức để xử lý date và time trong java.

Lớp java.util.Date implements các giao diện Serializable, Cloneable and Comparable<Date>. Nó được kế thừa bởi các lớp java.sql.Date, java.sql.Time và java.sql.Timestamp.

Sau khi lớp Calendar ra đời, hầu hết các Constructor và cách thức của lớp java.util.Date đã bị khuyến cáo không nên sử dụng nữa (@deprecated).

Các Constructor của lớp java.util.Date trong java

No. Constructor Mô tả
1) Date() Tạo 1 đối tượng Date đại diện cho ngày tháng và thời gian hiện tại.
2) Date(long milliseconds) CTạo 1 đối tượng Date trong 1 mili giây cho trước kể từ ngày 1 tháng 1 năm 1970, 00:00:00 GMT.

Các cách thức của lớp java.util.Date trong java

No. cách thức Mô tả
1) boolean after(Date date) kiểm tra nếu ngày hiện tại là sau ngày đã cho.
2) boolean before(Date date) kiểm tra nếu ngày hiện tại là trước ngày đã cho.
3) Object clone() Trả về đối tượng nhân bản của ngày hiện tại.
4) int compareTo(Date date) So sánh ngày hiện tại với ngày đã cho.
5) boolean equals(Date date) So sánh ngày hiện tại với ngày đã cho.
6) static Date from(Instant instant) Trả về 1 thể hiện của đối tượng Date từ ngày Instant.
7) long getTime() Trả về thời gian được đại diện bởi đối tượng date.
8) int hashCode() Trả về giá trị mã băm cho đối tượng ngày này.
9) void setTime(long time) Thay đổi ngày hiện tại và thời gian cho thời gian đã cho.
10) Instant toInstant() Chuyển đổi date hiện tại thành đối tượng Instant.
11) String toString() Chuyển đổi date hiện tại thành chuỗi String.

Ví dụ về java.util.Date trong java

Dưới đây là ví dụ lấy date trong java và in ra màn hình:

package vn.viettuts.date;
 
import java.util.Date;
 
public class DateExample1 {
    public static void main(String[] args) {
        long miliSeconds = System.currentTimeMillis();
        // cach 1
        Date date1 = new Date();
        System.out.println(date1);
        // cach 2
        Date date2 = new Date(miliSeconds);
        System.out.println(date2);
    }
}

Kết quả:

Mon Sep 11 09:04:18 ICT 2017
Mon Sep 11 09:04:18 ICT 2017

5. Date, Time, Timestamp (java.sql)

java.sql có 3 class liên quan đến ngày tháng và thời gian:

  • java.sql.Date
  • java.sql.Time
  • java.sql.Timestamp

Cụ thể:

– java.sql.Date đại diện cho SQL DATE, lưu trữ năm, tháng và ngày mà không có thành phần thời gian. java.sql. Date đang bỏ qua múi giờ.

– java.sql.Time đại diện cho SQL TIME và chỉ chứa thông tin về giờ, phút, giây và mili giây mà không có thành phần ngày tháng.

– java.sql.Timestamp đại diện cho SQL TIMESTAMP chứa cả thông tin Ngày và Giờ với độ chính xác nano giây.

Những class trên tham gia vào trong PreparedStatement trong JDBC API, chẳng hạn các method setDate, setTime, setTimestamp. Hoặc có thể lấy ra từ ResultSet.

Hãy kiểm tra bảng sau đây đề cập đến 5 cơ sở dữ liệu hàng đầu (không theo thứ tự) các kiểu dữ liệu ngày giờ:

Cơ sở dữ liệu SQL DATE SQL TIME SQL TIMESTAMP Nguồn
MySQL / MariaDB NGÀY
DATETIME
THỜI GIAN TIMESTAMP Liên
kết Liên kết
PostgreSQL NGÀY GIỜ THỜI
GIAN VỚI KHU VỰC THỜI GIAN
TIMESTAMP
TIMESTAMP VỚI KHU VỰC THỜI GIAN
Liên kết
Oracle NGÀY TIMESTAMP
TIMESTAMP VỚI THỜI GIAN KHU VỰC THỜI GIAN
VỚI KHU VỰC GIỜ ĐỊA PHƯƠNG
Liên kết
Microsoft SQL Server DATE
SMALLDATETIME
DATETIME
DATETIME2
DATETIMEOFFSET
THỜI GIAN Liên kết
IBM Db2 NGÀY THỜI GIAN TIMESTAMP Liên kết

6. Java.Util.Calendar

Sơ lược về các bộ lịch:

Gregorian Calendar: Đây chính là Dương Lịch, còn gọi lịch Thiên chúa giáo, là lịch quốc tế. Nó được dùng rộng rãi nhất được đặt tên theo Đức Giáo Hoàng Gregory XIII, người đã giới thiệu nó vào năm 1582.

Buddhist Calendar: Đây là 1 bộ lịch phật giáo, thường được sử dụng tại một số nước Đông Nam Á trước kia như Thái Lan, Lào, Campuchia, cũng như Sri Lanka. Hiện nay lịch này được dùng trong các lễ hội phật giáo. Và không còn quốc gia nào sử dụng lịch này 1 cách chính thức, các quốc gia này đã đổi sang dùng Gregorian Calendar. Bạn có thể tham khảo thêm thông tin về lịch này tại:

Japanese Imperial Calendar: Đây là bộ lịch truyền thống của Nhật bản, hiện nay Nhật bản đã chuyển sang sử dụng dương lịch (Gregorian Calendar), tuy nhiên bộ lịch truyền thống vẫn được dùng 1 cách không chính thức.

Calendar là class mô phỏng một hệ thống Lịch. Lớp Calendar trong java là một lớp trừu tượng (abstract) cung cấp phương thức chuyển đổi ngày giữa 1 thời điểm cụ thể theo thời gian và 1 tập hợp các trường của calendar như MONTH, YEAR, HOUR, … Nó kế thừa lớp Object và implements giao diện Comparable.

Calendar có một vài class con:

  • GregorianCalendar
  • JapaneseImperialCalendar
  • BuddhistCalendar

Calendar là 1 class trừu tượng. Nghĩa là bạn không thể khởi tạo nó từ cấu tử (Constructor). Tuy nhiên có 2 method tĩnh để tạo ra đối tượng Calendar.

public static Calendar getInstance();

public static Calendar getInstance(TimeZone zone);

public static Calendar getInstance(Locale aLocale);

public static Calendar getInstance(TimeZone zone,Locale aLocale);

Ví dụ:

// Tạo đối tượng Calendar mô tả thời điểm hiện tại.
// Với Locale mặc định, và TimeZone (múi giờ) mặc định 
// (Của máy tính đang chạy).
Calendar c = Calendar.getInstance();

Khi bạn dùng Calendar.getInstance(TimeZone,Locale) sẽ nhận được trả về là 1 trong các class con nói trên. Mà hầu hết là trả về GregorianCalendar.

Gọi Calendar.getInstance() trả về đối tượng Calendar với tham số TimeZone theo máy tính của bạn và Locale mặc định.

Hãy xem code của class Calendar (JDK7):

Calendar (JDK7)

/**
* Gets a calendar using the default time zone and locale. The
* <code>Calendar</code> returned is based on the current time
* in the default time zone with the default locale.
*
* @return a Calendar.
*/
public static Calendar getInstance()
{
  Calendar cal = createCalendar(TimeZone.getDefaultRef(),
                                  Locale.getDefault(Locale.Category.FORMAT));
  cal.sharedZone = true;
  return cal;
}

/**
* Gets a calendar using the specified time zone and default locale.
* The <code>Calendar</code> returned is based on the current time
* in the given time zone with the default locale.
*
* @param zone the time zone to use
* @return a Calendar.
*/
public static Calendar getInstance(TimeZone zone)
{
  return createCalendar(zone, Locale.getDefault(Locale.Category.FORMAT));
}

/**
* Gets a calendar using the default time zone and specified locale.
* The <code>Calendar</code> returned is based on the current time
* in the default time zone with the given locale.
*
* @param aLocale the locale for the week data
* @return a Calendar.
*/
public static Calendar getInstance(Locale aLocale)
{
  Calendar cal = createCalendar(TimeZone.getDefaultRef(), aLocale);
  cal.sharedZone = true;
  return cal;
}

/**
* Gets a calendar with the specified time zone and locale.
* The <code>Calendar</code> returned is based on the current time
* in the given time zone with the given locale.
*
* @param zone the time zone to use
* @param aLocale the locale for the week data
* @return a Calendar.
*/
public static Calendar getInstance(TimeZone zone,
                                 Locale aLocale)
{
  return createCalendar(zone, aLocale);
}

private static Calendar createCalendar(TimeZone zone,
                                     Locale aLocale)
{
  Calendar cal = null;

  String caltype = aLocale.getUnicodeLocaleType("ca");
  if (caltype == null) {
      // Calendar type is not specified.
      // If the specified locale is a Thai locale,
      // returns a BuddhistCalendar instance.
      if ("th".equals(aLocale.getLanguage())
              && ("TH".equals(aLocale.getCountry()))) {
          cal = new BuddhistCalendar(zone, aLocale);
      } else {
          cal = new GregorianCalendar(zone, aLocale);
      }
  } else if (caltype.equals("japanese")) {
      cal = new JapaneseImperialCalendar(zone, aLocale);
  } else if (caltype.equals("buddhist")) {
      cal = new BuddhistCalendar(zone, aLocale);
  } else {
      // Unsupported calendar type.
      // Use Gregorian calendar as a fallback.
      cal = new GregorianCalendar(zone, aLocale);
  }

  return cal;
}

Một số method quan trọng:

Phương thức get(int) Giá trị trả về
get(Calendar.DAY_OF_WEEK) 1 (Calendar.SUNDAY) tới 7 (Calendar.SATURDAY).
get(Calendar.YEAR) Năm (year)
get(Calendar.MONTH) 0 (Calendar.JANUARY) tới 11 (Calendar.DECEMBER).
get(Calendar.DAY_OF_MONTH) 1 tới 31
get(Calendar.DATE) 1 tới 31
get(Calendar.HOUR_OF_DAY) 0 tới 23
get(Calendar.MINUTE) 0 tới 59
get(Calendar.SECOND) 0 tới 59
get(Calendar.MILLISECOND) 0 tới 999
get(Calendar.HOUR) 0 tới 11, được sử dụng cùng với Calendar.AM_PM.
get(Calendar.AM_PM) 0 (Calendar.AM) hoặc 1 (Calendar.PM).
get(Calendar.DAY_OF_WEEK_IN_MONTH) DAY_OF_MONTH 1 tới 7 luôn luôn tương ứng với DAY_OF_WEEK_IN_MONTH 1;

8 tới 14 tương ứng với DAY_OF_WEEK_IN_MONTH 2, …

get(Calendar.DAY_OF_YEAR) 1 tới 366
get(Calendar.ZONE_OFFSET) Giá trị GMT của múi giờ.
get(Calendar.ERA) Biểu thị AD (GregorianCalendar.AD), BC (GregorianCalendar.BC).

CalendarFieldsDemo.java

package org.o7planning.tutorial.calendar;

import java.util.Calendar;

public class CalendarFieldsDemo {

   public static void main(String[] args) {
      // Tạo một đối tượng Calendar (Lịch) mặc định.
      // Với time zone (múi giờ) và locale mặc định.
      Calendar c = Calendar.getInstance();
      int year = c.get(Calendar.YEAR);

      // Trả về giá trị từ 0 - 11
      int month = c.get(Calendar.MONTH);
      int day = c.get(Calendar.DAY_OF_MONTH);
      int hour = c.get(Calendar.HOUR_OF_DAY);
      int minute = c.get(Calendar.MINUTE);
      int second = c.get(Calendar.SECOND);
      int millis = c.get(Calendar.MILLISECOND);

      System.out.println("Year: " + year);
      System.out.println("Month: " + (month + 1));
      System.out.println("Day: " + day);
      System.out.println("Hour: " + hour);
      System.out.println("Minute: " + minute);
      System.out.println("Second: " + second);
      System.out.println("Minute: " + minute);
      System.out.println("Milli Second: " + millis);

   }

}

Kết quả chạy ví dụ:

Year: 2021
Month: 5
Day: 15
Hour: 20
Minute: 34
Second: 52
Minute: 34
Milli Second: 382

Một số method khác của Calendar:

void set(int calendarField, int value)
void set(int year, int month, int date)
void set(int year, int month, int date, int hour, int minute, int second)

// Thêm hoặc trừ một khoảng thời gian trên một trường (field) của Calendar.
// Dựa trên quy tắc của bộ Lịch.
void add(int field, int amount)

// Cuộn (lên/xuống) một trường (field) của Calendar. 
// roll(): Không làm ảnh hưởng tới các trường khác của Calendar.
void roll(int calendarField, boolean up)

// Cuộn lên (roll up) một trường của Calendar.
// roll(): Không làm ảnh hưởng tới các trường khác của Calendar.
void roll(int calendarField, int amount):

// Trả về đối tượng Date dựa trên giá trị của Calendar.
Date getTime()

void setTime(Date date)

// Trả về số mili giây của đối tượng Calendar này.
long getTimeInMills():

void setTimeInMillis(long millis)

void setTimeZone(TimeZone value)

CalendarDemo.java

package org.o7planning.tutorial.calendar;

import java.util.Calendar;

public class CalendarDemo {

   public static void showCalendar(Calendar c) {
      int year = c.get(Calendar.YEAR);

      // Trả về giá trị từ 0 - 11
      int month = c.get(Calendar.MONTH);
      int day = c.get(Calendar.DAY_OF_MONTH);
      int hour = c.get(Calendar.HOUR_OF_DAY);
      int minute = c.get(Calendar.MINUTE);
      int second = c.get(Calendar.SECOND);
      int millis = c.get(Calendar.MILLISECOND);

      System.out.println(" " + year + "-" + (month + 1) + "-" + day //
            + " " + hour + ":" + minute + ":" + second + " " + millis);
   }

   public static void main(String[] args) {
      // Tạo đối tượng Calendar, mô tả thời điểm hiện tại.
      // Với time zone (múi giờ) và locale mặc định.
      Calendar c = Calendar.getInstance();

      System.out.println("First calendar info");
      showCalendar(c);

      // roll(..): Cuộn một trường (field) của Calendar.
      // roll(..): Không làm thay đổi các trường khác.
      // Ví dụ: Cuộn lên thêm một giờ (boolean up = true)
      c.roll(Calendar.HOUR_OF_DAY, true);

      System.out.println("After roll 1 hour");
      showCalendar(c);

      // roll(..): Không làm thay đổi các trường khác của Calendar.
      // Cuộn xuống một giờ (boolean up = false)
      c.roll(Calendar.HOUR_OF_DAY, false);

      System.out.println("After roll -1 hour");
      showCalendar(c);

      // add(..): Có thể làm thay đổi các trường khác của Calendar.
      // Tăng thêm một giờ (boolean up = true)
      c.add(Calendar.HOUR_OF_DAY, 1);

      System.out.println("After add 1 hour");
      showCalendar(c);

      // roll(..): Không làm thay đổi các trường khác của Calendar.
      // Cuộn xuống 30 ngày.
      c.roll(Calendar.DAY_OF_MONTH, -30);

      System.out.println("After roll -30 day");
      showCalendar(c);

      // add(..): Có thể làm thay đổi các trường khác của Calendar.
      // Thêm 30 ngày.
      c.add(Calendar.DAY_OF_MONTH, 30);
      System.out.println("After add 30 day");
      showCalendar(c);

   }

}

Kết quả chạy ví dụ:

First calendar info
 2021-5-15 20:35:27 395
After roll 1 hour
 2021-5-15 21:35:27 395
After roll -1 hour
 2021-5-15 20:35:27 395
After add 1 hour
 2021-5-15 21:35:27 395
After roll -30 day
 2021-5-16 21:35:27 395
After add 30 day
 2021-6-15 21:35:27 395

7. Chuyển Đổi Kiểu Dữ Liệu Giữa Date Và Timestamp Trong Java

Date ở đây là class thuộc gói java.util

Timestamp là class thuộc gói java.sql

Các bạn cùng Techacademy tìm hiểu ví dụ sau đây để hiểu cách chuyển đổi cụ thể ra sao nhé.

Ví dụ Chuyển Date thành Timestamp và Timestamp thành Date

package com.ngockhuong;

import java.sql.Timestamp;
import java.util.Date;

public class DateToTimestamp {
   public static void main(String[] args) {
      // lấy ngày giờ hiện tại
      Date now = new Date();
      System.out.println(now);
      
      // chuyển Date sang Timestamp
      Timestamp timestamp = new Timestamp(now.getTime());
      System.out.println(timestamp);
      
      // chuyển Timestamp sang Date 
      Date last = new Date(timestamp.getTime());
      System.out.println(last);
   }
}

Kết quả:

Tue Feb 14 01:53:24 ICT 2017
2017-02-14 01:53:24.981
Tue Feb 14 01:53:24 ICT 2017

8. Chuyển Đổi Kiểu Dữ Liệu Giữa String Và Date Trong Java

Các bạn có thể chuyển đổi String thành Date trong java bằng cách sử dụng phương thức parse() của các lớp DateFormat và SimpleDateFormat. Để tìm hiểu sâu hơn về 2 khái niệm này, bạn có thể tham khảo lớp DateFormat và lớp SimpleDateFormat.

Ví dụ về chuyển đổi String thành Date trong java

Ví dụ 1:

import java.text.SimpleDateFormat;
import java.util.Date;
 
public class StringToDateExample1 {
    public static void main(String[] args) throws Exception {
        String sDate = "17/07/2017";
        Date date = new SimpleDateFormat("dd/MM/yyyy").parse(sDate);
        System.out.println(sDate + "\t" + date);
    }
}

Kết quả:

17/07/2017 Mon Jul 17 00:00:00 ICT 2017

Ví dụ 2: Các kiểu khác của chuyển đổi String thành Date trong java

import java.text.SimpleDateFormat;
import java.util.Date;
 
public class StringToDateExample2 {
    public static void main(String[] args) throws Exception {
        String sDate1 = "12/7/2017";
        String sDate2 = "12-07-2017";
        String sDate3 = "12/7/2017 13:30:50";
        String sDate4 = "12-07-2017 13:30:50";
        SimpleDateFormat formatter1 = new SimpleDateFormat("dd/MM/yyyy");
        SimpleDateFormat formatter2 = new SimpleDateFormat("dd-MM-yyyy");
        SimpleDateFormat formatter3 = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss");
        SimpleDateFormat formatter4 = new SimpleDateFormat("dd-MM-yyyy HH:mm:ss");
        Date date1 = formatter1.parse(sDate1);
        Date date2 = formatter2.parse(sDate2);
        Date date3 = formatter3.parse(sDate3);
        Date date4 = formatter4.parse(sDate4);
        System.out.println(sDate1 + "\t" + date1);
        System.out.println(sDate2 + "\t" + date2);
        System.out.println(sDate3 + "\t" + date3);
        System.out.println(sDate4 + "\t" + date4);
    }
}

Kết quả:

12/7/2017 Wed Jul 12 00:00:00 ICT 2017
12-07-2017 Wed Jul 12 00:00:00 ICT 2017
12/7/2017 13:30:50 Wed Jul 12 13:30:50 ICT 2017
12-07-2017 13:30:50 Wed Jul 12 13:30:50 ICT 2017

9. Tùy Biến Định Dạng Date, Time

Tùy biến định dạng Date. Hãy xem 1 số ví dụ định dạng và kết quả trả về.

Khuôn mẫu Kết quả
dd.MM.yy 30.06.09
yyyy.MM.dd G ‘at’ hh:mm:ss z 2009.06.30 AD at 08:29:36 PDT
EEE, MMM d, ”yy Tue, Jun 30, ’09
h:mm a 8:29 PM
H:mm 8:29
H:mm:ss:SSS 8:28:36:249
K:mm a,z 8:29 AM,PDT
yyyy.MMMMM.dd GGG hh:mm aaa 2009.June.30 AD 08:29 AM

Tham khảo bảng sau đây cho một số ngày và thời gian phổ biến được dùng trong java.text.SimpleDateFormat

Ký hiệu Ý nghĩa Trả về Example
G Kỷ nguyên Text AD
y Năm Number 2009
M Tháng trong năm Text & Number July & 07
d Ngày trong tháng Number 10
h Giờ am/pm (1-12) Number 12
H Giờ trong ngày (0-23) Number 0
m Phút trong giờ Number 30
s Giây trong phút Number 55
S millisecond Number 978
E Ngày trong tuần Text Tuesday
D Ngày trong năm Number 189
F Ngày của tuần trong tháng Number 2 (2nd Wed in July)
w Tuần trong năm Number 27
W Tuần trong tháng Number 2
a am/pm Text PM
k Giờ trong ngày (1-24) Number 24
K Giờ am/pm (0-11) Number 0
z Múi giờ (time zone) Text Pacific Standard Time
escape for text Delimiter (none)
single quote Literal

10. Kiểu Ngày Tháng Trong Java

Dưới đây là 1 số lớp hỗ trợ kiểu dữ liệu ngày giờ:

  • java.util.Date: Một lớp đại diện cho ngày tháng năm và thời gian. Tiếc là hầu hết các phương thức của nó đã bị lỗi thời, khuyến cáo là không nên sử dụng các phương thức đó, tuy nhiên lớp Date vẫn được sử dụng rỗng rãi.
  • java.sql.Date: Một lớp mô tả ngày tháng năm. Thông tin về thời gian bị cắt bỏ. Lớp này thường sử dụng trong JDBC.
  • java.util.Calendar: Lớp mô tả bộ Lịch. Nó có các phương thức toán học về thời gian, chẳng hạn thêm ngày, bớt ngày,…
  • java.time.*: Lớp này cung cấp đầy đủ các API xử lý ngày giờ trong Java. Đây là lớp mới được hỗ trợ từ Java 8.

11. Ép Kiểu Date Sang  String Trong Java

Các bạn cũng có thể dùng hàm String() hoặc phương thức toString()

String(Date())  // Trả về "Thu Jul 17 2021 15:38:19 GMT+0200 (W. Europe Daylight Time)"

Dùng toString() cũng cho kết quả tương tự.

Date().toString()  // Trả về "Thu Jul 17 2014 15:38:19 GMT+0200 (W. Europe Daylight Time)"

12. Khai Báo Date Trong Java

Cú pháp khai báo date đơn giản như sau:

new Date(...);

 

The post Kiểu Date Trong Java first appeared on Techacademy.

source https://techacademy.edu.vn/kieu-date-trong-java/

Căn Bậc 2 Trong Java

Trước khi thảo luận về mã căn bậc hai trong java, trước tiên chúng ta nên hiểu thuật ngữ căn bậc hai.

Căn bậc hai của một số n là một số x sao cho x2 = n hoặc, một số x có bình phương là n.

Ngoài ra còn có một phương thức dựng sẵn trong java để tính căn bậc hai trong gói java.math có phương thức sqrt ().

Căn bậc hai của x là hợp lý khi và chỉ khi x là số hữu tỷ có thể được biểu diễn dưới dạng tỷ lệ của hai hình vuông hoàn hảo. (căn bậc hai của 2 là một số vô tỷ và bất phương trình bậc hai cho tất cả các số tự nhiên không vuông.) Hàm căn bậc hai ánh xạ các số hữu tỷ thành các số đại số (một siêu số của các số hữu tỷ).

I. Cú Pháp Hàm Sqrt() Trong Thư Viện Math Java

Trước tiên các bạn sẽ tìm hiểu về cú pháp của nó đã nhé.

double sqrt(double d)

Tham số

Dưới đây là chi tiết về tham số của sqrt() trong Java:

d — Một kiểu dữ liệu gốc

Trả về giá trị

Trả về căn bậc 2 của tham số.

II. Cách Dùng Hàm Sqrt() Trong Thư Viện Math Java

Trong phần này chúng tôi sẽ thực hiện 2 ví dụ sử dụng phương thức sqrt() để minh họa cho cách dùng của nó.

Ví dụ 1: Ở ví dụ dưới đây mình sẽ khai báo và khởi tạo sẵn giá trị cho biến, sau đó tính căn bậc hai của các số đó.

import java.lang.Math;
class Main {
  public static void main(String[] args) {
    //khai báo 4 biến và khởi tạo cho nó
    double value1 = Double.POSITIVE_INFINITY;
    double value2 = 25.0;
    double value3 = -16;
    double value4 = 0.0;
    //sử dụng phương thức sqrt() để tính căn bậc hai của 4 số trên
    System.out.println(Math.sqrt(value1));  
    System.out.println(Math.sqrt(value2));  
    System.out.println(Math.sqrt(value3));  
    System.out.println(Math.sqrt(value4));  
 
    System.out.println("--------------------------------");
    System.out.println("Chương trình này được đăng tại Freetuts.net");
  }
}

Kết quả:

Ví dụ 2: Ở ví dụ dưới đây chúng tôi sẽ yêu cầu người dùng nhập vào một số, sau đó tính căn bậc 2 rồi hiển thị ra màn hình.

import java.lang.Math;
import java.util.Scanner;
class Main {
  public static void main(String[] args) {
    //sử dụng class Scanner để yêu cầu người dùng nhập vào số cần tính căn bậc hai
    Scanner sc = new Scanner(System.in);
    double a, squareRoot;
    System.out.println("Nhập vào số cần tính căn bậc hai: ");
    a = sc.nextDouble();
    //tính căn bậc hai của số nhập vào rồi gán cho biến squareRoot
    squareRoot = Math.sqrt(a);
    System.out.println("Căn bậc hai của "+a+" là: " + squareRoot);
 
    System.out.println("--------------------------------");
    System.out.println("Chương trình này được đăng tại Freetuts.net");
  }
}

Trong ví dụ  dưới đây chúng tôi sẽ sử dụng class Scanner, để nhận dữ liệu từ người dùng rồi mới thực hiện tính căn bậc 2 của giá trị đó.

Kết quả:

 

III. Tính Căn Bậc 2 Từ 1 Đến 100 Trong Java

Đề bài: Viết chương trình dùng ngôn ngữ lập trình Java tính S = √1 + √2 + √3 + … + √100′

Yêu cầu kiến thức:

  • Xác định chính xác kiểu dữ liệu cho các biến
  • Sử dụng hàm căn bậc 2 trong thư viện Math của Java

Code tham khảo dưới đây được viết trên JDK 8.x:

package timoday;

public class Main {

    public static void main(String[] args) {
        double S = 0;
        for (int i = 1; i <= 100; i++) {
            S += Math.sqrt(i);
        }
        System.out.println("Tong can bac 2 tu 1 den 100 la: " + S);
    }
}

IV. Giải Phương Trình Bậc 2 Trong Java

Viết chương trình giải phương trình bậc 2 trong java. Phương trình bậc 2 có dạng:

ax2 + bx + c = 0

Kiến thức dùng trong bài này, java.util.Scanner được dùng để đọc dữ liệu nhập vào từ bàn phím và từ khóa static trong java. Các bạn cũng cần tìm hiểu về package trong java.

Bài này được viết trên eclipse, bạn có thể tham khảo bài tạo chương trình java đầu tiên trên eclipse.

package vn.viettuts.baitap;
 
import java.util.Scanner;
 
/**
 * Giải phương trình bậc 2
 * 
 * @author viettuts.vn
 */
public class BaiTap1 {
    private static Scanner scanner = new Scanner(System.in);
    /**
     * main
     * 
     * @param args
     */
    public static void main(String[] args) {
        System.out.print("Nhập hệ số bậc 2, a = ");
        float a = BaiTap1.scanner.nextFloat();
        System.out.print("Nhập hệ số bậc 1, b = ");
        float b = BaiTap1.scanner.nextFloat();
        System.out.print("Nhập hằng số tự do, c = ");
        float c = scanner.nextFloat();
        BaiTap1.giaiPTBac2(a, b, c);
    }
     
    /**
     * Giải phương trình bậc 2: ax2 + bx + c = 0
     * 
     * @param a: hệ số bậc 2
     * @param b: hệ số bậc 1
     * @param c: số hạng tự do
     */
    public static void giaiPTBac2(float a, float b, float c) {
        // kiểm tra các hệ số
        if (a == 0) {
            if (b == 0) {
                System.out.println("Phương trình vô nghiệm!");
            } else {
                System.out.println("Phương trình có một nghiệm: "
                        + "x = " + (-c / b));
            }
            return;
        }
        // tính delta
        float delta = b*b - 4*a*c;
        float x1;
        float x2;
        // tính nghiệm
        if (delta > 0) {
            x1 = (float) ((-b + Math.sqrt(delta)) / (2*a));
            x2 = (float) ((-b - Math.sqrt(delta)) / (2*a));
            System.out.println("Phương trình có 2 nghiệm là: "
                    + "x1 = " + x1 + " và x2 = " + x2);
        } else if (delta == 0) {
            x1 = (-b / (2 * a));
            System.out.println("Phương trình có nghiệm kép: "
                    + "x1 = x2 = " + x1);
        } else {
            System.out.println("Phương trình vô nghiệm!");
        }
    }
}

Kết quả:

Nhập hệ số bậc 2, a = 2
Nhập hệ số bậc 1, b = 1
Nhập hằng số tự do, c = -1
Phương trình có 2 nghiệm là: x1 = 0.5 và x2 = -1.0

Trong ví dụ trên, phương thức Math.sqrt(double a) được dùng để tính căn bậc 2 của a.

The post Căn Bậc 2 Trong Java first appeared on Techacademy.

source https://techacademy.edu.vn/can-bac-2-trong-java/

Kế Thừa Trong Java

Kế thừa trong Java là 1 trong những tính năng quan trọng nhất của hệ thống lập trình hướng đối tượng (OOP). Chúng ta đã thấy tổng quan về kế thừa trong hướng dẫn trước của Các khái niệm OOP trong Java. Trong hướng dẫn này, chúng ta sẽ hiểu chi tiết về kế thừa trong Java và kiểu của nó với nhiều ví dụ khác nhau.

Kế thừa trong Java là 1 tính năng giúp dùng lại các phương thức và biến của 1 lớp này trong 1 lớp khác. Nói cách khác, nó cho phép 1 lớp mới kế thừa các thuộc tính và chức năng của 1 lớp hiện có mà không cần viết lại mã. Nó thực hiện Cha mẹ và con mối quan hệ. Điều này có nghĩa là lớp con có thể dùng lại trực tiếp các biến và hàm của lớp cha.

I. Tại Sao Dùng Tính Kế Thừa Trong Java?

Tính kế thừa trong Java là môt kỹ thuật mà trong đấy 1 đối tượng thu được hầu hết thuộc tính và hành vi của đối tượng cha. Ý tưởng đằng sau tính kế thừa trong Java là các các bạn có thể tạo các lớp mới mà được xây dựng dựa trên các lớp đang tồn tại.

Khi các các bạn kế thừa từ 1 lớp đang tồn tại, các các bạn có thể tái dùng các phương thức và các trường của lớp cha, và các các bạn cũng có thể bổ sung thêm các phương thức và các trường khác. Tính kế thừa biểu diễn mối quan hệ IS-A, còn được gọi là mối quan hệ cha-con.

Có 1 số lý do vì sao nên dùng kế thừa trong lập trình Java:

– Khả năng thể hiện các mối quan hệ kế thừa đảm bảo sự gần gũi với các mô hình trong thế giới thực.

– 1 lý do khác là khả năng tái dùng. Khi dùng tính kế thừa ta có thể lấy 1 lớp mới từ 1 lớp hiện có và thêm tính năng mới vào nó mà không cần sửa đổi lớp cha và viết lại lớp cha để kế thừa nó.

– 1 lý do khác là tính chất bắc cầu. Nếu lớp 1 kế thừa các thuộc tính từ 1 lớp B, sau đấy hầu hết các lớp con của A sẽ tự động kế thừa từ B. Tính chất này được gọi là tính chất bắc cầu của kế thừa.

II. Cú Pháp Của Tính Kế Thừa Trong Java

Mọi người đã biết rằng để kế thừa 1 lớp, chúng ta dùng từ khóa expand. Cú pháp của việc dùng kế thừa trong Java chính là:

class ten_lop_con extends ten_lop_cha {
  //cac phuong thuc va cac truong  
}

Từ khóa extends chỉ rằng bạn đang tạo 1 lớp mới mà kế thừa từ 1 lớp đang tồn tại. Trong Java, 1 lớp mà được kế thừa được gọi là 1 lớp cha. Lớp mới được gọi là lớp con.

Trong ví dụ sau, Programmer là lớp con và Employee là lớp cha. Mối quan hệ giữa hai lớp là Programmer IS-A Employee. Nghĩa là Programmer là 1 kiểu của Employee.

class Employee {
  float salary = 40000;
}
class Programmer extends Employee {
  int bonus = 10000;
  public static void main(String args[]) {
    Programmer p = new Programmer();
    System.out.println("Luong Lap trinh vien la:" + p.salary);
    System.out.println("Bonus cua Lap trinh vien la:" + p.bonus);
  }
}

Ở trên, đối tượng Programmer có thể truy cập trường của riêng lớp nó cũng như của lớp Employee, đấy là ví dụ cho tính tái dùng.

III. Các Loại Kế Thừa Trong Java

Có 5 kiểu kế thừa trong Java đấy là đơn kế thừa, Đa kế thừa, Kế thừa đa cấp, Kế thừa phân cấp, Kế thừa lai

Khi 1 class được kế thừa từ nhiều class đươc gọi là đa kế thừa. Trong Java, đa kế thừa chỉ được support thông qua interface, như đã được nói đến trong bài interface trong Java

1. Đơn kế thừa (Single Inheritance):

Đơn kế thừa: nghĩa là 1 lớp chỉ được kế thừa từ đúng 1 lớp khác. Hay nói cách khác, lớp con chỉ có duy nhất 1 lớp cha.

Cú pháp khai báo đơn kế thừa:

class lopcon : phamvidulieu lopcha
{
  // nội dung lớp con
};

dưới đây là 1 ví dụ:

#include <iostream>
using namespace std;
 
// Lớp cha
class Mayvitinh
{
public:
    Mayvitinh()
    {
        cout << "This is a computer" << endl;
    }
};
 
// Lớp con kế thừa từ lớp cha
class mayAcer : public Mayvitinh
{
};
 
// main function
int main()
{
    mayAcer may1;
    return 0;

Chương trình sẽ cho kết quả:

2. Đa kế thừa (Multiple Inheritance):

Đa kế thừa là 1 tính năng của ngôn ngữ C++. Trong đấy 1 lớp có thể kế thừa từ nhiều hơn 1 lớp khác. Nghĩa là 1 lớp con được kế thừa từ nhiều hơn 1 lớp cơ sở.

Cú pháp khai báo đa kế thừa:

class lopcon : phamvitruycap lopcha1, phamvitruycap lopcha2, ....
{
  // nội dung của lớp con
};

Ở đây, các lớp cơ sở sẽ được phân tách bằng dấu phẩy , và phạm vi truy cập cho mọi lớp cơ sở phải được chỉ định.

Chúng ta cùng xem ví dụ sau:

#include <iostream>
using namespace std;
 
// Lớp cơ sở thứ nhất
class Mayvitinh
{
public:
    Mayvitinh()
    {
        cout << "This is a computer's brand" << endl;
    }
};

// Lớp cơ sở thứ hai
class Maylaptop
{
public:
    Maylaptop()
    {
        cout << "This is a laptop's brand" << endl;
    }
};
 
// Lớp con kế thừa từ 2 lớp cha
class mayAcer : public Mayvitinh, public Maylaptop
{
};
 
// main function
int main()
{
    mayAcer may1;
    return 0;
}

Sau khi chạy ta sẽ có kết quả sau:

3. Kế thừa đa cấp (Multilevel Inheritance):

Kế thừa đa cấp: Trong kiểu thừa kế này, 1 lớp dẫn xuất được tạo từ 1 lớp dẫn xuất khác.

Ví dụ về kế thừa đa cấp:

#include <iostream>
using namespace std;
 
// Lớp cha
class Mayvitinh
{
public:
    Mayvitinh()
    {
        cout << "This is a computer's brand" << endl;
    }
};

// Lớp con kế thừa từ lớp cha
class Maylaptop : public Mayvitinh
{
public:
    Maylaptop()
    {
        cout << "This is a laptop's brand" << endl;
    }
};
 
// Lớp con kế thừa từ lớp cha thứ 2
class mayAcer : public Maylaptop
{
public:
     mayAcer(){
         cout << "This brand is Acer" << endl;
     }
};
 
// main function
int main()
{
    mayAcer may1;
    return 0;
}

Sau khi chạy ta có kết quả:

4. Kế thừa phân cấp (Hierarchical Inheritance):

Kế thừa phân cấp: Trong kiểu thừa kế này, sẽ có nhiều hơn 1 lớp con được kế thừa từ 1 lớp cha duy nhất.

Chúng ta có ví dụ:

#include <iostream>
using namespace std;
 
// Lớp cha
class Mayvitinh
{
public:
    Mayvitinh()
    {
        cout << "This is a computer's brand" << endl;
    }
};

// Lớp con thứ nhất
class mayAsus : public Mayvitinh
{
};
 
// Lớp con thứ hai
class mayAcer : public Mayvitinh
{
};
 
// main function
int main()
{
    mayAcer may1;
    mayAsus may2;
    return 0;
}

Sau khi chạy ta có kết quả:

5. Kế thừa lai (Kế thừa ảo) – Hybrid (Virtual) Inheritance:

Kế thừa lai (Kế thừa ảo): được thực hiện bằng cách kết hợp nhiều hơn 1 loại thừa kế.

Chúng ta lấy ví dụ về sự kết hợp của phân cấp và đa kế thừa dưới đây:

#include <iostream>
using namespace std;
 
// Lớp cha
class Mayvitinh
{
public:
    Mayvitinh()
    {
        cout << "This is a computer's brand" << endl;
    }
};

// Lớp cha
class Maylaptop
{
public:
    Maylaptop()
    {
        cout << "This is a laptop's brand" << endl;
    }
};
 
// Lớp con thứ nhất
class mayAcer : public Mayvitinh
{
};

// Lớp con thứ hai
class mayAsus : public Mayvitinh, public Maylaptop
{
};
 
// main function
int main()
{
    mayAsus may1; 
    mayAcer may2;
    return 0;
}

Sau khi chạy ta có kết quả:

IV. Từ Khóa Instanceof Trong Java

Trong bài viết này, các bạn sẽ tìm hiểu về toán tử Instanceof Java 1 cách chi tiết với sự trợ giúp của các ví dụ.

Trong Java, từ khóa Instanceof là 1 toán tử nhị phân. Nó được dùng để kiểm tra xem 1 đối tượng có phải là 1 Instance của 1 class cụ thể hay không.

Toán tử cũng kiểm tra xem 1 đối tượng có phải là 1 Instance của 1 class thực hiện 1 giao diện(interface) hay không (sẽ được thảo luận sau trong bài hướng dẫn này).

Cú pháp của toán tử Instanceof là:

result = objectName Instanceof className;

Toán hạng bên trái của toán tử Instanceof là tên đối tượng và toán hạng bên phải là tên class. Kết quả sẽ true nếu 1 đối tượng là 1 Instance của 1 class và sẽ là false nếu nó không phải.

Ví dụ 1: Toán tử Instanceof

/**
* Cafedev.vn - Kênh thông tin IT hàng đầu Việt Nam
*
* @author cafedevn
* Contact: cafedevn@gmail.com
* Fanpage: https://www.facebook.com/cafedevn
* Instagram: https://instagram.com/cafedevn
* Twitter: https://twitter.com/CafedeVn
* Linkedin: https://www.linkedin.com/in/cafe-dev-407054199/
*/

class Main {
    public static void main (String[] args) {
        String name = "Programiz";
        Integer age = 22;

        System.out.println("Is name an Instance of String: "+ (name Instanceof String));
        System.out.println("Is age an Instance of Integer: "+ (age Instanceof Integer));
    }
}

Khi chúng ta chạy chương trình, kết quả sẽ là:

Is name an Instance of String: true
Is age an Instance of Integer: true

Trong ví dụ trên, chúng ta đã tạo đối tượng name của kiểu String và 1 đối tượng khác là age của kiểu Integer. Sau đấy, chúng ta đã dùng toán tử Instanceof để kiểm tra xem liệu rằng đối tượng name có thuộc kiểu String và đối tượng age có thuộc kiểu Integer hay không.

dùng toán tử Instanceof trong tính kế thừa

Vơi tính thừa kế, toán tử Instanceof được dùng để kiểm tra xem liệu rằng 1 đối tượng của subclass có phải cũng là 1 toán tử Instanceof của siêu class hay là không.

Ví dụ 2: Instanceof trong kế thừa

/**
* Cafedev.vn - Kênh thông tin IT hàng đầu Việt Nam
*
* @author cafedevn
* Contact: cafedevn@gmail.com
* Fanpage: https://www.facebook.com/cafedevn
* Instagram: https://instagram.com/cafedevn
* Twitter: https://twitter.com/CafedeVn
* Linkedin: https://www.linkedin.com/in/cafe-dev-407054199/
*/

class Animal {
}

// Dog class is a subclass of Animal
class Dog extends Animal {
}

class Main {
    public static void main(String[] args){
        Dog d1 = new Dog();

        // checks if d1 is an object of Dog
        System.out.println("Is d1 an Instance of Dog: "+ (d1 Instanceof Dog));
       
        // checks if d1 is an object of Animal
        System.out.println("Is d1 an Instance of Animal: "+ (d1 Instanceof Animal));
    }
}

Khi chúng ta chạy chương trình, kết quả sẽ là:

Is d1 is an Instance of Dog: true
Is d1 an Instance of Animal: true

Trong ví dụ trên, d1 là 1 Instance của cả class Dog và Animal. Do đấy, cả d1 Instanceof Dog và d1 Instanceof Animal trả về kết quả là true .

V. Quan hệ HAS-A Trong Java

Nếu 1 class có tham chiếu đến 1 thực thể khác, được gọi là quan hệ HAS – A.

Ví dụ Chúng ta có class Student, 1 Student cần có các thông tin như id, name, email, etc. Và thực thể Address chứa các thông tin city, country, zipcode etc.

// File Student.java
public class Student {
    String id;
    String name;
    Address address;
}
// File Address.java
public class Address {
    String city;
    String country;
    String zipcode;
}

Class Student tham chiếu đến Address là 1 thực thể, chúng ta có thể phát biểu như sau: Student có quan hệ HAS – A Address.

Mục đích dùng HAS – A

Ở ví dụ trên, các bạn hoàn toàn có thể gộp các thuộc tính địa chỉ vào class Student như sau.

// File Student.java
public class Student {
    String id;
    String name;
    String city;
    String country;
    String zipcode;
}

Với cách làm trên của chúng ta là hoàn toàn ổn. Sau đấy ứng dụng mở rộng chúng ta có thêm class Employee cũng cần dùng đến địa chỉ. Nếu như làm theo cách trên thì chúng ta phải duplicate các thuộc tính address cho Employee. Làm như vậy thì code sẽ trở nên dài dòng, giảm tính reused code của project.

Vậy nên chúng ta cần dùng HAS – A để tăng tính tái dùng code. Định nghĩa Address ra 1 class riêng, và Student, Employee đều tham chiếu đến Address.

Khi nào nên dùng HAS -A

Như đã bàn luận ở trên, dùng HAS – A làm tăng tính tái dùng code. Khi các bạn thấy giữa các class có các thông tin chung giống hệt nhau thì ta nên tách nhỏ nó ra thành 1 class khác bao gồm những thuộc tính chung.

Các bạn đừng nhầm lẫn HAS – A với IS – A(thừa kế) nha. Thừa kế là 1 khái niệm mà các class con dùng lại các thuộc tính và method của class cha có sẵn. HAS – A là đặt những điểm chung ra riêng 1 class và import vào các class khác để dùng.

Ví dụ

Address.java

// File Address.java
public class Address {
    String city;
    String country;
    String zipcode;
    public Address(String city, String country, String zipcode) {
        this.city = city;
        this.country = country;
        this.zipcode = zipcode;
    }
}

Student.java

// File Student.java
public class Student {
    int id;
    String name;
    Address address;
    Student(int id, String name, Address address) {
        this.id = id;
        this.name = name;
        this.address = address;
    }
    void display() {
        System.out.println("ID: " + id);
        System.out.println("Name: " + name);
        System.out.println("Address: " + address.city + " " + address.country + " " + address.zipcode);
    }
}
// File Main.java
public class Main {
    public static void main(String[] args) {
        Address address = new Address("HCM", "VN", 11000);
        Student student = new Student(1, "Hai", address);
        student.display();
    }
}

Output:

ID: 1
Name: Hai
Address: HCM VN 11000

VI. Bài Tập Kế Thừa Trong Java Có Lời Giải

Tạo 1 lớp Person lưu trữ các thông tin dưới đây ( Tên, giới tính, địa chỉ,ngay sinh)

Tạo 1 lớp Student kế thừa từ lớp person lưu trữ các thông tin như dưới đây:

Mã sinh viên,điểm trung bình, email

Viết 1 phương thức nhập thông tin của student

Viết 1 phương thức hiện thị thông tin của student

Viết phương trình xem xét có sinh viên nào được học bổng không? điểm trung bình hơn 8.0 sẽ được hổng bổng

Khai báo class parent Person

class Person{
   protected String name;
   protected String sex;
   protected String adrress;
   protected String ngaysinh;
      public void intputPerson(){
      Scanner scanner = new Scanner(System.in);
      System.out.println("Nhap Ten :");
      this.name = scanner.nextLine();
      System.out.println("Nhap gioi tinh");
      this.sex = scanner.nextLine();
      System.out.println("Nhap dia chi");
      this.adrress = scanner.nextLine();
      System.out.println("Nhap ngay sinh");
      this.ngaysinh = scanner.nextLine();
   }
   public void showPerson(){
      System.out.println("Ho Ten : " +this.name + " Gioi Tinh : " +this.sex +" Dia chi : " +this.adrress +" Ngay sinh : " +this.ngaysinh);
   }
   }

Trong đấy:

Có 4 biến bao gồm ( ten,gioitinh,diachi,ngaysing) và có 2 phương thức:

intputPerson : Là phương thức nhập thông tin

showPerson : Xuất hiện thông tin

Tiếp thep khai báo 1 lớp student được kế thừa từ lớp Person

class Student extends Person{
   protected String masv;
   protected float diemtrungbinh;
   protected String email;
   public void intPutStudent(){
         Scanner input = new Scanner(System.in);
      System.out.println("Nhap ma sinh vien");
      this.masv = input.nextLine();
      System.out.println("Nhap diem trung binh");
      this.diemtrungbinh = input.nextFloat();
      System.out.println("Nhap email");
      this.email = input.nextLine();
   }
   public void showStudent(){
      System.out.println("Ma sinh vien : " +this.masv +" Diem trung binh " + this.diemtrungbinh);
   }
   public void kiemtrahocbong(){
      if(this.diemtrungbinh >=8){
         System.out.println("Duoc hoc bong");
      }else{
         System.out.println("Khong duoc hoc bong");
      }
   }
}

Lớp Person có 3 biến cần lưu trữ,và 3 phương thức java

intPutStudent : Nhập thông tin của sinh viên đấy.

showStudent : Xuất thông tin của sinh viên

kiemtrahocbong : Phương thức kiểm tra học bổng

Hàm khởi tạo để thực hiện chương trình như sau:

ublic class BT1 {
   public static void main(String []args){
      Student person = new Student();
      person.intputPerson();
      person.intPutStudent();
      person.showPerson();
      person.showStudent();
      person.kiemtrahocbong();
   }
}

Kết quả:

VII. Đa Kế Thừa Trong Java

Nếu 1 lớp triển khai đa kế thừa, hoặc 1 Interface kế thừa từ nhiều Interface thì đó là đa kế thừa.

Trong Java, 1 lớp chỉ được thừa kế (extends) từ 1 lớp, có thể cài đặt (implements) nhiều interface. Tuy nhiên, 1 interface có thể thừa kế (extends) nhiều interface.

1 interface không thể cài đặt (implements) interface khác, do interface không phần cài đặt, chỉ chứa các khai báo.

Ví dụ 1 lớp cài đặt (implements) nhiều interface:

public interface Shape {    
    void draw();    
}
 
public interface Color {
    String getColor();
}
 
public class Rectangle implements Shape, Color {
 
    @Override
    public void draw() {
        System.out.println("Draw " + this.getColor() + " rectangle");
    }
 
    @Override
    public String getColor() {
        return "red";
    }
     
}

Ví dụ interface kế thừa (extend) nhiều interface:

public interface Shape {    
    void draw();    
}
 
public interface Color {
    String getColor();
}
 
public interface ShapeColor extends Shape, Color {
 
}
 
public class Circle implements ShapeColor {
 
    @Override
    public void draw() {
        System.out.println("Draw " + this.getColor() + " circle");
    }
 
    @Override
    public String getColor() {
        return "red";
    }
     
}

Câu hỏi: Đa kế thừa không được hỗ trợ thông qua lớp trong Java nhưng là có thể bởi Interface, vì sao?

Như đã giới thiệu, kế thừa không được hỗ trợ thông qua lớp. Nhưng nó được hỗ trợ bởi Interface bởi vì không có tính lưỡng nghĩa khi trình triển khai được cung cấp bởi lớp Implementation.

Ví dụ đa thừa kế với Interface

public interface Printable {  
    void print();  
} 
  
public interface Showable {  
    void print();  
}  
    
public class InterfaceDemo implements Printable, Showable {  
    public void print() {
        System.out.println("Welcome to gpcoder.com");
    }  
 
    public static void main(String args[]) {  
        InterfaceDemo obj = new InterfaceDemo();  
        obj.print();  
    }  
}

Trong ví dụ trên, interface Printable và Showable có cùng các phương thức print() nhưng trình triển khai của nó được cung cấp bởi lớp InterfaceDemo, vì thế không có tính lưỡng nghĩa ở đây.

Ví dụ đa thừa kế với class

public class Printable {
    void print() {
        System.out.println("Printable");
    }
}  
 
public class Showable {  
    void print() {
        System.out.println("Showable");
    }
}  
 
// Không thể thực hiện đa thừa kế với class
public class InterfaceDemo extends Printable, Showable {  
    public static void main(String args[]) {  
        InterfaceDemo obj = new InterfaceDemo();  
        obj.print();  // Không thể xác định được gọi phương thức print() của class nào
    }  
}

Trong ví dụ trên, lớp Printable và Showable có cùng các phương thức print() và InterfaceDemo kế thừa 2 class đó không override lại phương thức print() nên trình biên dịch không biết thực thi phương thức print() của lớp Printable hay là của lớp Showable. Để bảo đảm an toàn và giảm tính phức tạp của hệ thống nên Java không hỗ trợ đa thừa kế đối với class.

The post Kế Thừa Trong Java first appeared on Techacademy.

source https://techacademy.edu.vn/ke-thua-trong-java/

Cách Sử Dụng Google Meet Trên Máy Tính

Google Meet hiện nay là một trong những phần mềm dạy học online hiệu quả được nhiều nhà trường sử dụng do cách dạy và tham gia rất đơn giản, khi chúng ta chỉ cần tạo tài khoản Google để tham gia Google Meet. Dưới đây là toàn bộ hướng dẫn sử dụng Google Meet trên máy tính.

1. Cách Thiết Lập Lớp Học Online Trong Google Meet

Bước 1:

Để tạo lớp học online trên Google Meet thì thầy cô giáo truy cập ngay vào link dưới đây.

Sau đó chúng ta đăng nhập tài khoản Google để có thể sử dụng được Google Meet.

Bước 2:

Sau đó tại giao diện của Google Meet chúng ta nhấn vào Cuộc họp mới rồi nhấn tiếp vào Bắt đầu một cuộc họp tức thì.

Bước 3:

Sau đó bạn sẽ được yêu cầu cho phép sử dụng micro và máy ảnh trên trình duyệt, bạn nhấn vào Cho phép.

Bước 4:

Ngay sau đó chúng ta đã truy cập vào lớp học trên Google Meet để giảng dạy trực tuyến.

2. Cách mời người khác tham gia Google Meet

Bước 1:

Tại giao diện trên Google Meet ngay sau khi vừa mới tạo xong lớp học trực tuyến bạn sẽ nhìn thấy một khung để thêm người khác vào Google Meet. Nhấn Thêm người khác để thêm học sinh.

Bước 2:

Lúc này hiển thị giao diện để nhập địa chỉ email những người muốn tham gia vào lớp học online này. Bạn nhập địa chỉ email rồi chọn Gửi email.

Ngoài việc thêm địa chỉ email thì chúng ta cũng có thể sao chép URL lớp học rồi gửi vào trong nhóm, chẳng hạn như nhóm trên Zalo để học sinh truy cập nhanh chóng hơn.

3. Cách Bật, Tắt Camera Và Micro Google Meet

Bước 1:

Trong quá trình dạy học online thì thầy cô giáo có thể bật tắt mic và camera thông qua biểu tượng micro và camera dưới màn hình.

Bước 2:

Ngoài ra người dùng cũng có thể nhấn vào biểu tượng 3 dấu chấm rồi chọn Cài đặt.

Bước 3:

Khi đó bạn sẽ thấy phần chỉnh Âm thanh với Tùy chọn micro và loa. Chúng ta có thể nhấn Kiểm tra để test loa.

Bước 4:

Tiếp tục nhấn vào Video để chỉnh webcam trên Google Meet.

4. Gửi Tin Nhắn Trong Google Meet

Bước 1:

Tại giao diện Google Meet bạn nhìn sang bên phải sẽ thấy biểu tượng tin nhắn như hình dưới đây.

Bước 2:

Hiển thị giao diện để nhắn tin, nếu thầy cô giáo muốn tất cả học sinh trong lớp có thể nhắn tin thì kích hoạt vào Cho phép mọi người nhắn tin. Nếu không bật tùy chọn này thì chỉ có thầy cô giáo mới được phép nhắn tin cho học sinh mà thôi.

Tin nhắn sẽ chỉ hiển thị với các học sinh trong lớp học và sẽ xóa ngay sau khi cuộc gọi kết thúc

5. Cách Ghim Học Sinh Trong Google Meet

Bước 1:

Tại giao diện trên Google Meet bạn nhấn vào biểu tượng số lượng người tham gia ở góc dưới cùng bên phải màn hình

Bước 2:

Lúc này hiển thị giao diện Mọi người. Tại đây bạn có thể nhấn vào biểu tượng 3 chấm tại người tham gia bất kỳ rồi chọn Ghim vào màn hình.

Bước 3:

Ngoài ra cũng tại giao diện này bạn có thể nhấn Tắt tiếng của tất cả để không ai được phép sử dụng micro, trừ các thầy cô giáo người tổ chức lớp học trực tuyến.

Bước 4:

Tiếp tục nhấn vào Bộ điều khiển của người tổ chức. Tại đây bạn sẽ nhìn thấy tùy chọn chia sẻ màn hình và gửi tin nhắn trò chuyện. Nếu tắt hai tùy chọn này thì học sinh trong lớp sẽ không được phép thực hiện hành động này.

6. Cách Xóa Học Sinh Khỏi Lớp Học Google Meet

Để xóa học sinh, bạn bạn nhấn vào biểu tượng Mọi người tại giao diện này. Tại học sinh muốn xóa khỏi lớp học, nhấn vào biểu tượng 3 chấm rồi chọn Xóa khỏi cuộc họp.

7. Cách Đổi Background Google Meet

Nếu bạn muốn thay đổi background trong Google Meet thì nhấn vào biểu tượng ba chấm rồi chọn Thay đổi nền. Sau đó bạn có thể lựa chọn hình nền muốn sử dụng hoặc làm mờ background

8. Cách Thay Đổi Bố Cục Trong Google Meet

Bước 1:

Bạn cũng nhấn vào biểu tượng ba chấm dọc rồi chọn Thay đổi bố cục

Bước 2:

Lúc này hiển thị giao diện để bạn lựa chọn cách sắp xếp màn hình video khi dạy trực tuyến.

9. Đôi Điều Về Google Meet

Google Meet (trước đây được gọi là Google Hangouts Meet hay GG Meet) là công cụ họp trực tuyến của Google. Bạn có thể tìm thấy nó được liệt kê trong các ứng dụng Google sau khi đăng nhập vào tài khoản Google của mình hoặc tải xuống từ kho ứng dụng trên thiết bị di động.

Google Meet là phiên bản dành cho doanh nghiệp cho nền tảng Hangouts của Google và phù hợp với các doanh nghiệp thuộc mọi quy mô. Giải pháp này cho phép người dùng thực hiện cuộc gọi điện video với tối đa 30 người dùng cho mỗi cuộc họp video độ nét cao.

Ứng dụng cho phép người dùng tham gia các cuộc họp được lên lịch trước từ các sự kiện lịch, chọn liên kết, nhập mã cuộc họp và thậm chí quay số từ điện thoại của họ nếu lời mời bao gồm số điện thoại. Google Meet tích hợp với các phiên bản G-Suite của Google Calendar và Gmail, đồng thời hiển thị danh sách đầy đủ những người tham gia và các cuộc họp đã lên lịch. Nó hiển thị nút “Join” để người dùng kết nối với cuộc họp và cung cấp các tùy chọn để tắt tiếng và video trong cuộc họp.

Google Meet cho phép người dùng quay số điện thoại để truy cập cuộc họp, do đó, cho phép người dùng có kết nối Internet chậm hoặc không có kết nối Internet gọi đến. Tuy nhiên, tính năng này chỉ khả dụng cho khách hàng phiên bản G-Suite dành cho doanh nghiệp.

Trong một tweet vào tháng 3 năm 2021, Google tuyên bố sẽ không giới hạn thời lượng cuộc gọi ở mức 60 phút cho người dùng Google Meet miễn phí nữa. Giới hạn này sẽ bắt đầu lại vào ngày 30 tháng 6 năm 2021. Cho đến lúc đó, bất kỳ ai sử dụng phiên bản miễn phí của dịch vụ sẽ có thể tổ chức các cuộc gọi có thời lượng lên đến 24 giờ (Google gọi đây là “không giới hạn”).

Đây là lần thứ hai Google đẩy lùi việc giới hạn cuộc gọi kể từ khi mở dịch vụ cho người dùng miễn phí vào tháng 4 năm ngoái. Giới hạn 60 phút ban đầu dự kiến ​​có hiệu lực vào cuối tháng 9 năm 2020, nhưng thời hạn đó sau đó đã được lùi lại sang tháng 3 năm sau khi tình hình dịch bệnh vẫn chưa thể kiểm soát.

10. Những Tính Năng Mới Nhất Của Google Meet

Google lưu ý rằng các bản cập nhật mới nhất cho Google Meet sẽ giúp đào sâu và nâng cao trải nghiệm trực tuyến hơn nữa, bất kể mọi người muốn giao tiếp bằng cách nào và ở đâu. Cụ thể, công ty đã công bố sự xuất hiện của các tính năng và giao diện người dùng mới được cung cấp bởi các dịch vụ AI mới nhất của Google.

Tạo trải nghiệm cuộc họp phong phú hơn

Tiếp tục lộ trình đổi mới liên tục trong năm qua, từ tự động tạo phụ đề trực tiếp đến kiểm soát mức độ tương tác mới dành cho sinh viên và các nhà giáo dục, Google hiện đang triển khai giao diện người dùng mới. Bắt đầu từ tháng 5 năm 2021, người dùng laptop và máy tính để bàn sẽ được tận hưởng giao diện người dùng mới với nhiều tính năng dễ truy cập.

Cung cấp Meet for Web mới bao gồm cập nhật nguồn cấp dữ liệu video, các tính năng xem và thuyết trình cũng như những giải pháp để giảm bớt sự mệt mỏi trong cuộc họp. Ví dụ, bạn có thể chọn cách xem chính mình trong cuộc họp video hoặc xóa hoàn toàn luồng video của bạn khỏi màn hình. Cũng sẽ có một cài đặt để cho phép xóa nguồn cấp dữ liệu của riêng mình trên tất cả các cuộc trò chuyện Google Meet.

Để cải thiện sự tự tin của người thuyết trình trong các cuộc họp, Google đã thêm tính năng ghim và bỏ ghim được cải tiến. Khi một tile dành cho việc thuyết trình được bỏ ghim, tile này sẽ giảm xuống cùng kích thước với các tile khác, cho phép xem cuộc hội thoại tốt hơn.

Trong những tháng gần đây, Google cũng đã tung ra một loạt bản cập nhật cho các thiết bị Android và iOS, chẳng hạn như khả năng thay thế nền và tạo cuộc thăm dò ý kiến ​​cho Meet. Trong tương lai, công ty sẽ thêm tính năng thay thế nền video để giúp bạn kiểm soát nhiều hơn những gì đang diễn ra sau lưng trong một cuộc họp.

Hỗ trợ các cuộc họp với Google AI

Theo Google, ưu tiên của trải nghiệm Meet là tạo ra các cuộc họp chất lượng cao, bất kể người dùng đang ở đâu hay sử dụng thiết bị nào. Để cải thiện cuộc gọi video cho những nhân viên phải thường xuyên di chuyển, nhóm phát triển hiện đang khởi động việc áp dụng Data Saver. Đây là một tính năng làm giảm mức sử dụng dữ liệu trên mạng di động, giúp hạn chế chi phí dữ liệu cho những người làm việc trong môi trường di động.

Vào năm 2020, Google đã giới thiệu chế độ ánh sáng thấp cho Meet trên thiết bị di động, sử dụng AI để tự động điều chỉnh trải nghiệm video nhằm giúp người dùng dễ nhìn hơn trong môi trường tối. Giải pháp web của Google Meet hiện tự động phát hiện khi bạn có vẻ như đang ở trong môi trường tối và tăng cường độ sáng để tăng khả năng hiển thị. Tính năng Light Adjustment này sẽ được tung ra cho tất cả người dùng trong vài tuần tới.

Ngoài ra, chức năng Autozoom sẽ hỗ trợ người khác nhìn thấy bạn rõ ràng hơn trong các cuộc họp bằng cách sử dụng AI để phóng to và cải thiện vị trí của bạn trước camera. Nếu bạn di chuyển trong cuộc họp, hệ thống thông minh sẽ tự động điều chỉnh để giữ cho mọi người tập trung vào khuôn mặt của bạn.

Google cho biết họ sẽ tiếp tục phát hành những cải tiến mới trong Google Meet để mang mọi người đến gần nhau hơn.

11. Google Meet Có Filter Không

Tương tự như Facebook, Google Meet cũng được trang bị tính năng filter giúp người dùng có thể sử dụng được những hiệu ứng khuôn mặt bắt mắt thay cho khuôn mặt của mình, thay đổi giao diện ở trên màn hình gọi giúp cuộc gọi trở nên thu hút, hấp dẫn hơn.

Hiện tại, filter trên Google Meet chỉ áp dụng trên phiên bản điện thoại Android, iOS, mà chưa áp dụng trên máy tính. Nếu muốn thì bạn cần cài đặt tính năng này. Cùng tham khảo chi tiết hướng dẫn sử cách dùng filter trên Google Meet dưới đây.

Hướng Dẫn Dùng Filter Trên Google Meet Trên Máy Tính

Điều kiện: Cài tiện ích Filter và Sticker cho Google Meet TẠI ĐÂY

Bước 1: Bạn truy cập vào đường link tải filter ở trên. Bạn nhìn vào góc trên bên phải, click vào “Thêm vào Chrome”

Lúc này, bạn click “Thêm tiện ích” rồi chờ quá trình cài đặt công cụ filter này hoàn tất.

Bước 2: Mở Google Meet trên trình duyệt rồi tham gia vào lớp học, họp online. Tiếp đó, ở góc trên bên trái, bạn nhấn vào biểu tượng dấu cộng như hình ở thanh công cụ Filter for Meet.

Bước 3: Một loạt filter hiện ra, bạn chọn và click vào filter mà bạn muốn thay.

Còn nếu muốn sử dụng sticker thì bạn nhấn biểu tượng ở bên cạnh filter như hình dưới.

Lúc này, bạn cũng làm như chọn filer để thay, bạn click vào sticker bạn thích rồi chờ sticker hiển thị là được.

Hy vọng với chia sẻ trên đây về hướng dẫn dùng filter trên Google Meet trên máy tính, trên điện thoại, các bạn có thể thay filter, sticker dễ dàng hơn. Nếu bạn còn thắc mắc gì về Google Meet thì cùng để lại bình luận ở bài viết phía dưới, chúng tôi sẽ giải đáp cho bạn.

12. Google Meet Có Record Không

Khi dịch Covid-19 bùng phát, cả thế giới thực sự phải tìm cách thích nghi và chuyển đổi sang cách làm việc, học tập mới. Đó là online từ xa.

Google Meet là phần mềm họp, học online chất lượng không kém Zoom. Tuy nhiên, so với Zoom, Meet an toàn hơn về độ bảo mật và “thân thiện” với người dùng Google hơn.

Google Meet cung cấp cho người dùng gần như đủ mọi tính năng của Zoom. Bạn có thể mở một phiên làm việc học online trên Meet ngay tại trình duyệt web hoặc cài app riêng cho Windows, iOS, Android. Google Meet cũng cho phép người dùng chia sẻ màn hình, ghi âm, thậm chí quay video cuộc họp. Bạn có thể dùng mọi tính năng cơ bản của Meet miễn phí, bao gồm cả mã hóa end-to-end.

Như đã nói ở trên, Google Meet cho phép người dùng quay cả video màn hình. Đây là tính năng thực sự tuyệt vời, giúp cả chủ cuộc họp/học online lẫn người tham gia có thể xem lại nội dung sau đó. Cách record trên Google Meet không quá khó. Nếu chưa biết cách, mời bạn tham khảo hướng dẫn ghi màn hình Google Meet dưới đây.

Yêu cầu

  • Tài khoản G Suite
  • Dung lượng trống trong tài khoản Google Drive
  • Là người tổ chức cuộc họp/học online/hội thảo

Bắt đầu quay video trên Google Meet

Bắt đầu ghi hình trong Google Meet khá đơn giản, bạn chỉ cần làm như sau:

Bước 1: Tham gia một cuộc họp/học/hội thảo online trên Google Meet qua link mời, sự kiện trên lịch hoặc mã liên quan. Sau đó, click icon menu 3 dấu chấm ở góc phải dưới màn hình và chọn Record Meeting.

Bước 2: Xác nhận lựa chọn bằng cách click Accept trong Ask for consent. Sau đó, một thông báo sẽ được gửi tới toàn bộ thành viên rằng bạn đang bắt đầu quay video buổi họp online.

Bạn có thể quay lại toàn bộ sự kiện xảy ra trong cuộc họp online để xem lại bất cứ khi nào muốn

Cách dừng ghi hình trên Google Meet

Bước 1: Click menu 3 dấu chấm ở góc phải phía dưới màn hình và chọn Stop Recording.

Bước 2: Xác nhận lựa chọn bằng cách click Stop Recording trong hộp thoại xác nhận hiện ra.

Hoạt động ghi hình sẽ dừng lại và một email kèm link tới file đã lưu sẽ được gửi tới người tổ chức họp và cả bạn. Nếu đó là một sự kiện được đánh dấu trên lịch thì bạn cũng sẽ thấy link này trên đó.

Vị trí lưu bản ghi

Bản ghi cuộc họp/hội thảo/học online qua video trên Google Meet sẽ được lưu vào thư mục Meet Recordings trong Google Drive của người tổ chức.

Nội dung có thể quay lại trên Google Meet
Chỉ người nói chính và bài thuyết trình được ghi lại. Tất cả thành viên khác nằm ngoài phạm vi ghi hình, dù họ có được ghim tại vị trí đầu. Ngoài ra, cửa sổ hay thông báo mà bạn nhận hoặc mở trong khi diễn ra cuộc họp cũng không được ghi lại. Hiện tại, Google Meet chưa hỗ trợ tính năng ghi hình trên mobile.

Người dùng miễn phí có thể quay màn hình Google Meet?

Điều đó tùy thuộc vào loại phiên bản người dùng miễn phí:

  • Nếu đang dùng tài khoản Google miễn phí, bạn không có sẵn chức năng ghi hình.
  • Nếu dùng tài khoản G-Suite, bạn có thể ghi màn hình Google Meet.

Toàn bộ bản ghi sẽ được lưu trong Google Drive và bạn sẽ nhận được liên kết dẫn tới nó qua email. Nếu cuộc họp được bắt đầu bằng sự kiện trên Google Calendar, link đó cũng sẽ được đính kèm vào lịch của bạn. Nhờ đó, mọi thành viên trong cuộc họp đều có thể truy cập file ghi hình đó dễ dàng.

File quay màn hình trên Google Meet có được mã hóa?

Google Meet được quảng cáo là một trong số phần mềm làm việc từ xa hữu ích nhất hiện nay. Google tuyên bố nó bảo mật và an toàn hơn Zoom. Thực tế, đúng như vậy.

Tuy nhiên, hiện hãng chưa cung cấp chuẩn mã hóa end-to-end trong các phiên làm việc hay bản ghi hình hoạt động trên Meet. Video được bảo mật bằng TLS hay Transport Layer Security. Cấp độ mã hóa này đảm bảo không ai có quyền truy cập dữ liệu chưa được bảo vệ. Bằng cách này, các bản ghi hình trên Meet được chuyển sang hình thức mã hóa mà chỉ có thể được giải mã nếu dùng đúng key.

Cách xem, chia sẻ và tải bản ghi hình trên Google Meet

Đầu tiên, bạn cần truy cập file ghi hình cuộc họp trong Meet Recordings, rồi mở nó hoặc tải về máy.

  • Để phát file ghi hình, click vào nó, rồi nhấn nút Play ở trên cùng. Nếu dung lượng video quá lớn, thời gian tải sẽ lâu hơn.
  • Để chia sẻ file với đồng nghiệp, bạn cần chọn tập tin, rồi nhấn nút Share và thêm người muốn chia sẻ hoặc tạo một link chia sẻ bằng cách click Link.
  • Cuối cùng, nếu muốn tải file video, tới More và nhấn Download.

13. Google Meet Có Bị Giới Hạn Thời Gian Không

Hiện tại, không có giới hạn trên nền tảng. Tuy nhiên, các cuộc họp dành cho người dùng miễn phí có thể sẽ ngắn hơn trong tương lai gần.

Năm ngoái, Google đã phát triển nền tảng họp video, Google Meet, miễn phí cho tất cả mọi người. Trước đây, chỉ người dùng G-Suite (bây giờ, Workspace) mới có quyền truy cập vào nền tảng này. Trong bối cảnh của đại dịch, bước đi của Google được chứng minh là rất quan trọng. Người dùng từ khắp mọi nơi có thể tiếp tục cuộc sống của họ bằng Google Meet.

Cho dù bạn đang họp vì cơ quan, trường học hay gặp gỡ xã hội, Google Meet đã trở thành lựa chọn hàng đầu của nhiều người. Bạn không cần một ứng dụng riêng và trong hầu hết các trường hợp, bạn thậm chí không cần tạo tài khoản. Rốt cuộc, hầu hết mọi người đều có tài khoản Google.

Khi Google cung cấp dịch vụ miễn phí cho tất cả mọi người, Google cũng không đặt bất kỳ giới hạn thời gian nào đối với các cuộc gọi. Ngay cả những người dùng có tài khoản miễn phí cũng có thể gặp gỡ liên tục trong tối đa 24 giờ (thực tế là một cuộc gọi không giới hạn).

Ban đầu, Google thông báo rằng họ sẽ chấm dứt cuộc gọi không giới hạn cho người dùng miễn phí. Khi Meet miễn phí ra mắt, Google đã lên kế hoạch áp dụng giới hạn thời gian 60 phút vào cuối tháng 9 năm 2020.

Nhưng công ty đã lùi thời hạn đến tháng 3 năm 2021, một lần nữa do đại dịch. Bây giờ, nhiều người dùng đang tự hỏi liệu thay đổi mới này đã có hiệu lực hay chưa. Cuối cùng thì có giới hạn thời gian cho các cuộc gọi trên Google Meet không? Chà, vẫn chưa. Nhưng sẽ sớm có thôi.

Google đã lùi thời hạn từ tháng 3 đến tháng 6 năm 2021 một lần nữa. Vì vậy, người dùng miễn phí vẫn có thể gặp gỡ liên tục trên Google Meet với các cuộc gọi không giới hạn (tối đa 24 giờ) cho đến cuối tháng này.

Google đã thông báo về việc lùi thời hạn này trên Twitter.

Sau khi hết khoảng thời gian này, nếu công ty không đẩy lùi thời hạn nữa – điều mà bây giờ có vẻ khó xảy ra-người dùng miễn phí sẽ có giới hạn thời gian là 60 phút cho các cuộc gọi trên Google Meet.

Người dùng Google Workspace sẽ vẫn có thể tận hưởng các cuộc gọi điện video không giới hạn trên nền tảng này.

Giới hạn thời gian hoạt động như thế nào trong Google Meet?

Giới hạn thời gian là 60 phút không có nghĩa là người dùng miễn phí sẽ chỉ có thể gặp gỡ trên Google Meet tối đa 60 phút mỗi ngày. Có nghĩa là họ chỉ có thể gặp nhau không bị gián đoạn trong 60 phút. Sau khi hết thời gian, cuộc gọi sẽ tự động ngắt kết nối và bạn sẽ phải bắt đầu một cuộc họp mới và thực hiện lại tất cả các vòng một lần nữa (mời người khác và thừa nhận họ tham gia cuộc gọi).

Giới hạn thời gian dành cho tài khoản miễn phí chỉ áp dụng trong các cuộc họp do chủ sở hữu tài khoản miễn phí tổ chức. Khi người dùng rảnh tham gia các cuộc họp do người dùng Google Workspace tổ chức, họ sẽ không bị ngắt kết nối khỏi cuộc gọi sau một giờ.

Google Meet là một nền tảng tuyệt vời để kết nối với những người khác, bất kể bạn đang sử dụng loại tài khoản nào. Google cũng đã không ngừng bổ sung các tính năng mới để làm cho trải nghiệm thậm chí còn siêu thực hơn.

Cho dù bạn đang bắt đầu cuộc họp cho các buổi làm việc, lớp học hay buổi xem phim, hãy tận hưởng các cuộc gọi không giới hạn với tất cả các tính năng mà nó cung cấp trong khi chúng kéo dài. Sau đó, bạn phải làm quen với nhiều phiên ngắn hơn hoặc bạn có thể trở thành người dùng trả phí.

14. Google Meet Có Quay Màn Hình Được Không

Để hỗ trợ tốt hơn cho việc giảng dạy online trong mùa vi-rút COVID-19. Mới đây phần mềm Google Meet đã cập nhật thêm 1 số tính năng bao gồm:

  • Tăng giới hạn số lượng người tham gia lên 250 người/cuộc gọi video
  • Ghi lại cuộc gọi video

Trong bài viết này Phòng CNTT xin hướng dẫn Thầy/Cô dùng chức năng ghi lại cuộc gọi video để ghi lại buổi học.

Trước khi bắt đầu buổi học Thầy/Cô bật chức năng ghi lại buổi học bằng cách vào mục tùy chọn sau đó click chọn ghi lại cuộc họp

sau khi click vào ghi lại cuộc họp hệ thống hiện thông báo yêu cầu đồng ý thầy cô vui lòng click vào chấp nhận

Thầy/Cô chờ tầm 5s sẽ xuất hiện biểu tượng ghi hình nằm phía trên cùng bên trái báo hiệu hệ thống bắt đầu ghi.

Sau khi kết thúc buổi học Thầy/Cô tắt chức năng ghi bằng cách vào mục tùy chọn và click vào Dừng ghi

Một bảng thông báo xác nhận dừng ghi lại buổi học này thầy cô vui lòng click vào Dừng ghi

Sau khi kết thúc việc ghi hệ thống sẽ biên tập lại thành file video. Và khi đã hoàn thành Google sẽ lưu file video này vào 1 thư mục Google tự tạo trên Google Drive của tài khoản Thầy/Cô dùng để tạo buổi học. Đồng thời Google cũng gửi 1 email thông báo đến Thầy/Cô

15. Google Meet Có Background Không

Google Meet có tùy chọn đổi background để thay đổi phông nền video với những phông nền có sẵn hoặc lựa chọn hình ảnh từ trên máy tính, điện thoại để làm phông nền Google Meet. Ngoài tùy chọn đổi background Google Meet thì người dùng cũng có lựa chọn làm mờ nền Google Meet nếu không muốn dùng phông nền đằng sau.

Việc dùng phông nền Google Meet sẽ giúp chúng ta che được cảnh thật ở đằng sau, hạn chế để lộ những cảnh vật bạn không muốn hiển thị trên màn hình khi tham gia Google Meet ngoài việc dùng filter trên Google Meet.

Bước 1:

Tại giao diện trên Google Meet điện thoại bạn tạo cuộc họp như bình thường.

Bước 2:

Trong giao diện họp tại video nhỏ dưới góc màn hình bạn sẽ nhìn thấy biểu tượng hình nền như dưới đây. Nhấn vào biểu tượng này để chọn background khi học online trên Google Meet.

Lúc này chúng ta sẽ nhìn thấy các tùy chọn hình nền cho Google Meet để sử dụng. Bạn nhấn vào hình nền muốn sử dụng để học online Google Meet.

Bước 3:

Hình nền sẽ che đi cảnh vật thật và thay thế bằng hình nền mà chúng ta đã chọn. Hình ảnh của bạn sẽ hiển thị đè lên hình nền. Có rất nhiều chủ đề hình nền để chúng ta lựa chọn. Nếu không muốn dùng hình nền thì nhấn vào biểu tượng hình tròn gạch chéo ở đầu danh sách là được.

Bước 4: Để lấy ảnh trong điện thoại làm background, chúng ta nhấn vào dấu cộng và chọn ảnh muốn làm background cho Google Meet.

16. Google Meet Có Ghi Âm Không

Sau thời kỳ bùng nổ mạnh mẽ trong lĩnh vực làm việc từ xa, việc sử dụng các cuộc gọi điện video để đưa ra các quyết định về công việc và cộng tác trong một nhóm đã phát triển rất nhiều. Trong trường hợp này, một trong những nền tảng được sử dụng nhiều nhất là Google Meet, được nhiều công ty trên thế giới sử dụng cho cả công việc lẫn lớp học và các nhiệm vụ tương tự.

Một ý tưởng thú vị đi qua khả năng ghi âm cuộc gọi. Bằng cách này, có thể tham khảo nội dung của họ sau này, và do đó không bỏ sót bất cứ thứ gì, ngoài ra có thể sử dụng cho bất kỳ mục đích nào. Theo nghĩa này, ngoài các lựa chọn thay thế, chẳng hạn như tùy chọn ghi lại màn hình máy tính, có thể là một ý kiến ​​hay khi sử dụng chức năng mà Google bao gồm, vì vậy chúng tôi chỉ cho bạn cách bạn có thể dễ dàng lấy được nó.

Google Meet: để bạn có thể dễ dàng ghi lại cuộc họp

Như chúng tôi đã đề cập, khi sử dụng công cụ Google Meet để gặp gỡ, có một tùy chọn mà bạn có thể nhận được bản sao hoàn chỉnh của cuộc trò chuyện để sử dụng sau này. Tuy nhiên, điều quan trọng cần lưu ý là Bạn phải là quản trị viên cuộc họp để bắt đầu ghi hoặc là giáo viên trong trường hợp có giấy phép giáo dục.

Một trong những yêu cầu cơ bản khác khi bắt đầu ghi lại Google Meet là dựa trên giấy phép Google Workspace. Để ghi âm cuộc gọi, công ty hoặc trung tâm giáo dục của bạn phải có một trong các giấy phép sau: Thông tin cơ bản, Tiêu chuẩn dành cho doanh nghiệp, Tiêu chuẩn dành cho doanh nghiệp, Thông tin cơ bản về doanh nghiệp, Tiêu chuẩn dành cho doanh nghiệp, Enterprise Plus, Cơ bản về giáo dục hoặc Education Plus.

Bằng cách này, nếu cả hai yêu cầu được đáp ứng, có thể bắt đầu ghi âm cuộc gọi. Để làm được điều này, bạn phải nhấn một lần trong cuộc họp vào 3 điểm xuất hiện ở phần dưới bên trái, sau đó trong menu thả xuống, hãy chọn chức năng “ghi lại cuộc họp”. Khi làm như vậy, bạn phải lưu ý rằng những người tham gia sẽ nhận được thông báo và bạn có thể kết thúc quá trình ghi bất kỳ lúc nào từ chính trang web này. Sau đó, tập tin sẽ được xử lý và bạn có thể sử dụng nó bất cứ lúc nào.

16. Google Meet Có Share Màn Hình Được Không

Những lợi ích khi chia sẻ màn hình Google Meet trong lúc học tập và làm việc:

  • Tất cả thành viên tham gia Google Meet đều có thể nhìn thấy tài liệu bạn chia sẻ.
  • Chia sẻ màn hình trên Google Meet trên máy tính, điện thoại trong lúc học và làm việc giúp cho thầy, cô giáo chia sẻ bài giảng đến học sinh
  • Ngược lại, học sinh cũng có thể chia sẻ bài tập của mình đến với bạn bè và thầy cô.

Hướng dẫn chia sẻ màn hình Google Meet

Bước 1: Đầu tiên, thầy cô giáo tạo lớp học trên Google Meet và yêu cầu học sinh tham gia lớp học trên Google Meet.

Sau khi đầy đủ học, để chia sẻ màn hình, chỉ cần nhấn biểu tượng Trình bày ngay.

Bước 2: Màn hình sẽ hiển thị 3 tùy chọn sau:

  • Toàn bộ màn hình của bản: Bạn có thể chia sẻ toàn bộ nội dung hiển thị trên màn hình máy tính của mình.
  • Một cửa sổ: Bạn có thể tùy chọn 1 cửa sổ trình duyệt đang mở trên máy tính để chia sẻ.
  • Một thẻ: Bạn chọn 1 tab đang mở trên máy tính để chọn chia sẻ video hoặc hình ảnh động.

Bước 3: Bạn có thể chọn 1 trong 3 tùy chọn trên và chọn nội dung chia sẻ, nhấn vào nội dung muốn chia sẻ và chọn Chia sẻ bên dưới.

Bước 4: Khi đó, nội dung bạn muốn chia sẻ được truyền đến người tham gia trên Google Meet.

Nếu bạn muốn dùng chia sẻ màn hình, nhấn chọn Dừng chia sẻ màn hình

17. Google Meet Có An Toàn Không

Việc đảm bảo an toàn cho bạn trong môi trường mạng có nghĩa là bảo vệ thông tin và tôn trọng quyền riêng tư của bạn. Đó là lý do tại sao trong mỗi sản phẩm Google tạo ra, chúng tôi luôn chú tâm đến việc bảo mật thông tin của bạn, xử lý thông tin một cách có trách nhiệm và giúp bạn nắm quyền kiểm soát. Đội ngũ của chúng tôi nỗ lực từng ngày để đảm bảo các sản phẩm của Google an toàn bất kể bạn đang làm gì — duyệt web, quản lý hộp thư đến của bạn hay nhận thông tin chỉ đường.

Chúng tôi sử dụng các biện pháp bảo mật đẳng cấp thế giới để bảo vệ thông tin của bạn. Bạn luôn có thể kiểm soát các chế độ cài đặt quyền riêng tư trong Tài khoản Google của mình.

Một trải nghiệm hữu ích và phù hợp hơn với bạn

Khi bạn sử dụng Google Meet, chúng tôi sẽ xử lý một số dữ liệu để mang lại cho bạn trải nghiệm tốt hơn về sản phẩm. Thông tin của bạn vẫn được bảo mật. Bạn luôn có thể kiểm soát các chế độ cài đặt quyền riêng tư trong Tài khoản Google của mình.

Nội dung của bạn được lưu trữ an toàn

Khi bạn thay đổi phông nền của cuộc họp trong Google Meet, thực hiện cuộc thăm dò ý kiến hoặc ghi lại cuộc họp, dữ liệu này được lưu trữ an toàn trong các trung tâm dữ liệu đẳng cấp thế giới của chúng tôi. Dữ liệu được mã hóa trong khi truyền cũng như khi lưu trữ.

Meet sử dụng hàng loạt biện pháp an toàn nhằm đảm bảo an toàn cho các cuộc họp video của bạn. Trong đó có các biện pháp kiểm soát chống xâm nhập dành cho cả cuộc họp video trên web lẫn cuộc họp quay số qua điện thoại.

Tài khoản Google của bạn tích hợp sẵn tính năng bảo mật được thiết kế để phát hiện và ngăn chặn các mối đe dọa như tin nhắn rác, lừa đảo và phần mềm độc hại. Hoạt động của bạn được lưu trữ theo các phương thức và tiêu chuẩn ngành nghiêm ngặt.

Tên, địa chỉ email và số điện thoại của bạn sẽ giúp đồng bộ hóa dữ liệu

Để lưu trữ các lựa chọn ưu tiên của bạn và giúp bạn đăng nhập, chúng tôi lưu tên và địa chỉ email của bạn.

Để giúp bạn biết ai đang tham gia cuộc họp, chúng tôi lưu số điện thoại của những người dùng khác gọi qua điện thoại và hiển thị số trong cuộc họp.

Thông tin của bạn giúp bạn tạo và quản lý Tài khoản Google của mình

Để giúp bạn tạo một Tài khoản Google hoàn toàn mới, chúng tôi sẽ thu thập tên và số điện thoại của bạn. Khi quản lý Tài khoản Google của mình, bạn có thể chọn cung cấp địa chỉ thực, tải danh bạ lên hoặc thêm ảnh hồ sơ.

Meet sử dụng dữ liệu để mang đến cho bạn trải nghiệm tốt hơn
Để cung cấp các dịch vụ như phụ đề trực tiếp và lọc lời mời không mong muốn, chúng tôi xử lý nội dung của bạn. Đối với phụ đề trực tiếp, dữ liệu âm thanh tạm thời được gửi đến máy chủ chép lời của Google, nhưng không liên kết với bất kỳ thông tin nhận dạng người dùng nào và cũng không được lưu trữ vĩnh viễn.

Để cải thiện hiệu suất và độ tin cậy của Meet, đồng thời giúp khắc phục sự cố có thể xảy ra khi bạn sử dụng Meet, chúng tôi thu thập dữ liệu về hiệu suất cũng như số liệu phân tích sự cố. Chúng tôi cũng lưu thông tin này để giúp ngăn chặn hành vi lạm dụng dịch vụ của chúng tôi và để phân tích.

Google Meet không sử dụng nội dung của bạn cho hoạt động quảng cáo

Chúng tôi không sử dụng thông tin trong các ứng dụng mà bạn chủ yếu lưu trữ nội dung cá nhân, bao gồm cả Meet, cho mục đích quảng cáo.

Nắm quyền kiểm soát nội dung bằng các chế độ cài đặt dễ sử dụng

Bạn có quyền quyết định nội dung được chia sẻ và người được bạn chia sẻ nội dung đó

Nội dung bạn chia sẻ trên Meet, chẳng hạn như tệp đính kèm và bảng trắng, cũng như mọi bản ghi cuộc họp đều ở chế độ riêng tư đối với bạn và những người tham gia cuộc họp của bạn. Tìm hiểu thêm về cách thức hoạt động của tính năng chia sẻ và cộng tác trong Meet

Google tôn trọng quyền riêng tư của bạn. Chúng tôi chỉ truy cập nội dung riêng tư của bạn khi bạn cho phép hoặc theo yêu cầu của luật pháp. Thông qua Báo cáo minh bạch của Google, chúng tôi chia sẻ dữ liệu về tác động của những chính sách và hành động của các chính phủ và tập đoàn đối với quyền riêng tư, tính bảo mật và quyền truy cập thông tin.

Nếu bạn có tài khoản công việc hoặc tài khoản trường học thì tổ chức của bạn có thể xem lại nhật ký ghi lại những việc mà Google làm khi truy cập nội dung. Tìm hiểu cách xem nhật ký thông qua tính năng Thông tin minh bạch về việc truy cập. Tìm hiểu cách Google bảo vệ quyền riêng tư và sự bảo mật cho tổ chức của bạn.

Kiểm soát nhật ký tìm kiếm của bạn

Nhằm giúp bạn tiết kiệm thời gian khi tìm kiếm sự trợ giúp trong Google Meet, chúng tôi lưu trữ một số cụm từ tìm kiếm trong Trung tâm trợ giúp.

Để xem lại hoặc quản lý nhật ký tìm kiếm trên Google Meet, hãy sử dụng trang Hoạt động của tôi.

Đồng bộ hóa các dịch vụ bạn sử dụng với vị trí của bạn

Để tìm hiểu mức độ liên quan giữa vị trí địa lý với việc bạn trải nghiệm sản phẩm, như khi bạn gửi ý kiến phản hồi cho Google và để giữ an toàn cho tài khoản của bạn, như khi chúng tôi nhận thấy bạn đăng nhập ở một vị trí mới, chúng tôi sẽ lưu một số thông tin vị trí.

18. Google Meet Có Bị Lật Camera Không

Google Meet không phản chiếu hoặc lật video cho khán giả, ngay cả khi nó hiển thị cho bạn hình ảnh phản chiếu trong bản xem trước. Vì vậy, không cần phải lật nó mỗi lần xem để điều chỉnh chế độ xem. Tuy nhiên, nếu bạn thực sự cần lật hoặc phản chiếu video của mình trên Google Meet vì lý do nào đó, hướng dẫn này sẽ giúp bạn.

Google Meet có camera lật không?

Có và không. Google Meet thực hiện lật nguồn cấp dữ liệu Camera nhưng có một điểm khó khăn – nó chỉ phản chiếu video trong bản xem trước được hiển thị cho bạn, khán giả sẽ nhìn thấy chế độ xem không chỉnh sửa. Google Meet thực hiện điều này để mọi người có thể xem bản xem trước video khi họ nhìn thấy trong gương mà không quá chói tai đối với họ.

Tuy nhiên, Google Meet không lật video cho người dùng cuối. Điều này có nghĩa là ngay cả khi văn bản và các mục trong bản xem trước video có thể được lật cho bạn, chúng vẫn được hiển thị theo hướng chính xác cho những người tham gia cuộc họp.

Đây là một lợi ích tuyệt vời cho các giáo viên và giảng viên sử dụng Google Meet để truyền đạt các khái niệm quan trọng cho những người tham gia cuộc họp của họ. Điều này thường liên quan đến việc sử dụng Bảng trắng và biểu đồ có thể mất ý nghĩa nếu chúng được lật trong video.

Tại sao tôi nhìn thấy một Camera được phản chiếu?

Giống như hầu hết các smartphone và webcam, Google tự động lật bản xem trước video cho bạn. Đây là một xu hướng đang diễn ra trong thập kỷ gần đây liên quan nhiều đến sự phổ biến của ảnh tự chụp và sự ra đời của camera selfie chuyên dụng trên smartphone.

Con người đã quen với việc nhìn thấy hình ảnh bị lật của họ do việc sử dụng gương thật trong cuộc sống của chúng ta hàng ngày. Hầu hết chúng ta thường nhìn vào hình ảnh được lật của mình, vì vậy việc nhìn thấy một hình ảnh không được chỉnh sửa của chính mình thường có thể gây khó chịu cho nhiều người dùng.

Để chống lại trải nghiệm chói tai này và để cung cấp một môi trường thân thiện với ảnh tự chụp và thẩm mỹ hơn, các công ty bắt đầu phản chiếu các bản xem trước video trên smartphone để chúng giống như một tấm gương hàng ngày. Xu hướng này đã sớm bắt đầu và hiện hầu như có sẵn trong mọi dịch vụ quay video từ bất kỳ thiết bị điện tử nào, có thể là smartphone, máy tính bảng, laptop hoặc Camera chuyên dụng.

19. Google Meet Có Chia Nhóm Được Không

Tháng 11/2020 Google đã ra mắt tính năng Breakout rooms trong Google Meet cho khách hàng Google Workspace for Education. Tính năng này nó giúp các lớp học online hoặc cuộc họp của bạn hiệu quả hơn, cho phép người kiểm duyệt chia những người tham gia cuộc họp thành các nhóm nhỏ hơn.

Tính năng Breakout Rooms ( chia nhóm ) trong Google Meet giúp tạo 1 hoặc nhiều video call riêng biệt trong video chính, nơi mỗi nhóm không thể nhìn thấy hoặc nghe thấy các nhóm khác.Tạo điều kiện cho việc dạy và học từ xa thông qua các ứng dụng công nghệ trở nên thuận lợi và hiệu quả hơn.

Tạo breakout rooms trong Google meet chỉ mất một phút và có thể thay đổi cách bạn nghĩ về các cuộc meeting trực tuyến. Dưới đây Adtimin sẽ hướng dẫn cụ thể cùng theo dõi nhé.

Cách tạo breakout rooms trong Google Meet (với tư cách là người kiểm duyệt)

Bạn có thể tạo tối đa 100 breakout rooms trong Google Meet.

1. Bắt đầu video call trong Google Meet.

2. Nhấp vào biểu tượng “Activities” (biểu tượng hình tròn, hình vuông và hình tam giác) ở góc trên cùng bên phải.

3. Nhấp “Breakout rooms.”

4. Nhấp vào biểu tượng bút chì “Edit” và chọn số lượng breakout rooms bạn muốn tạo.

5. Những người tham gia sau đó được phân bổ khắp các phòng. Người kiểm duyệt có thể di chuyển mọi người đến các phòng khác nhau bằng cách nhập tên của ai đó vào phòng hoặc nhấp và kéo vào đó. Nút trộn sẽ trộn các nhóm một cách ngẫu nhiên.

6. Nhấp vào “Open Rooms” ở dưới cùng bên phải để kích hoạt các phòng.

Bạn cũng có thể đặt hẹn giờ cho breakout rooms bằng cách truy cập đầu bảng điều khiển và nhấp vào biểu tượng đồng hồ cát. Bạn có thể thay đổi hoặc loại bỏ bộ hẹn giờ bất kỳ lúc nào.

20. Google Meet Có Cần Gmail Không

Google Meet có sẵn cho người dùng G Suite (trong giáo dục, kinh doanh…). Nếu bạn là người dùng G Suite, bạn có thể tạo lớp học để người khác tham gia. Nếu chỉ có tài khoản Gmail cá nhân, bạn chỉ có thể tham gia cuộc họp mà người khác tạo.

Tuy nhiên, hiện Google đang miễn phí truy cập tính năng cao cấp của Google Meet mùa dịch Covid-19. Bạn có thể tham khảo: Kích hoạt Google Hangouts Meeting miễn phí trên G Suite

1. Mở Gmail bằng cách vào Gmail.

2. Trong thanh bên, chọn Start a meeting.

Lưu ý: Nếu bạn không thấy tùy chọn này thì hãy liên hệ với quản trị viên G Suite của mình.

3. Trong cửa sổ Meet, chọn tùy chọn tham gia cuộc họp.

  • Nếu tham gia bằng máy tính, bạn có thể tùy chọn bật / tắt webcam, audio và ấn Join now.
  • Nếu tham gia sử dụng điện thoại để nghe âm thanh, click vào Join and use a phone for audio và sau đó làm theo lời nhắc trên màn hình. Khi sử dụng lựa chọn này, bạn vẫn có thể dùng máy tính để quay video.

4. Khi bạn đang ở trong cuộc họp, có thể thêm người khác vào cuộc họp của mình:

  • Để chia sẻ mã cuộc họp với ai đó, nhấp vào Copy joining info sau đó gửi cho người khác.
  • Nếu muốn mời ai đó bằng cách gửi email cho họ, nhấp vào Add people, nhập tên hoặc địa chỉ email của họ, nhấp vào Send invite.
  • Nếu muốn mời ai đó tham gia cuộc họp bằng điện thoại, click Add people sau đó click Call và nhập số điện thoại.

21. Google Meet Có Đổi Tên Được Không

Google Meet cho phép bạn tùy ý đổi tên hiển thị và ảnh đại diện, tuy vậy, Meet được liên kết thẳng với tài khoản Google của bạn, do đó bạn phải đổi tên và ảnh đại diện trực tiếp trên tài khoản Google. Thay đổi này cũng sẽ áp dụng lên các dịch vụ khác của Google như Drive, Photo và Gmail.

Cách thay đổi tên trên Google Meet từ trình duyệt web

Cách nhanh nhất và dễ nhất để thay đổi tên trên Google Meet là từ trình duyệt web và bạn có thể thực hiện việc này trong bất kỳ trình duyệt web nào bạn sử dụng.

1. Truy cập tài khoản Google (Thường là Gmail) và đăng nhập vào tài khoản (nếu cần).

2. Chọn Personal Info

3. Trong Name, hãy chọn mũi tên hướng sang phải.

4. Nhập họ và/hoặc tên mới của bạn vào các trường được cung cấp.

22. Google Meet Có Kết Nối Tivi Được Không

Dưới đây sẽ là cách kết nối Google Meet với tivi để học và họp online trên màn hình lớn được thuận tiện nhất.

Cách kết nối Google Meet với tivi để học và họp online trên màn hình lớn như thế nào?

Bạn có thể đưa màn hình máy tính lên tivi hay các máy chiếu màn hình lớn với Google Chromecast. Các bước tiến hành như sau:

Bước 1: Bạn cài đặt Google Chromecast hoặc sử dụng TV có tích hợp sẵn Chromecast.

Bước 2: Trên máy tính, bạn sử dụng trình duyệt Chrome để truy cập vào cuộc họp.

Bước 3: Click chuột vào biểu tượng dấu ba chấm ở góc dưới bên phải màn hình, và chọn Truyền cuộc họp này .

Bước 4: Chọn Chromecast để chuyển toàn bộ màn hình cuộc gọi lên TV.

The post Cách Sử Dụng Google Meet Trên Máy Tính first appeared on Techacademy.

source https://techacademy.edu.vn/cach-su-dung-google-meet-tren-may-tinh/

Các Toán Tử Trong Java

Một chương trình thực tế bao hàm việc tạo ra các biến. Các toán tử kết hợp các giá trị đơn giản hoặc các biểu thức con thành những biểu thức mới, phức tạp hơn và có thể trả về các giá trị. Điều này có hàm ý tạo ra các toán tử luận lý, số học, quan hệ và so sánh trên các biểu thức.

Toán tử trong java là 1 ký hiệu được dùng để thực hiện 1 phép tính/chức năng nào đấy. Techacademy sẽ giới thiệu đến bạn các toán tử cơ bản (Basic Operators) trong Java

I. Toán Tử New Trong Java

1. Từ khóa new trong Java là gì?

Đầu tiên, phải khẳng định luôn “new” trong Java là 1 … từ khóa (keyword). Vâng, chính vì vậy, chúng ta không được đặt tên hàm, phương thức, biến hay bất cứ thứ gì trùng với từ khóa new. Từ khóa new được dùng để cấp phát bộ nhớ cho đối tượng.

Nói rõ hơn đó là:

Lúc ta định nghĩa ra 1 đối tượng, chúng ta chỉ mới tạo ra nó trong “kế hoạch”, trong “tưởng tượng”. Đối tượng chưa thực sự tồn tại vì chưa được cấp phát vùng nhớ trên máy tính.

Tiếp đó, chúng ta dùng new để chính thức cấp phát vùng nhớ cho đối tượng. Đến lúc này thì đối tượng mới thực sự tồn tại trong chương trình của chúng ta.

Lưu ý: Trong Java có 1 số lớp đặc trưng không cần dùng từ khóa “new” để tạo đối tượng cho nó, do đó cách dùng của nó khá giống với 1 kiểu dữ liệu, điển hình trong trường hợp này là String.

2. Những cách dùng từ khóa new trong Java?

Từ khóa new được dùng chủ yếu trong việc tạo ra đối tượng, giúp ta có thể thao tác với đối tượng đó.

Cú pháp đơn giản của nó:

ViDuNew obj = new ViDuNew();

Nó thường được dùng bằng 1 số cách sau đây:

Cách 1: Các dùng từ khóa new để tạo đối tượng đơn giản

public class ViDuTuKhoaNew1 {
    void hienThiThongTin()
    {
        System.out.println("Gọi phương thức hienThiThongTin");  
    }
    public static void main(String[] args) {
        // Tạo đối tượng mới
        ViDuTuKhoaNew1 obj = new ViDuTuKhoaNew1();
        // Truy cập phương thức của đối tượng
        obj.hienThiThongTin();
    }  
}

Như các bạn thấy, sau khi tạo 1 class và định nghĩa phương thức hienThiThongTin() thì chúng ta chưa truy cập được phương thức đó ngay.

Mà phải tạo 1 đối tượng (thể hiện) của class đó thì mới truy cập được:

ViDuTuKhoaNew1 obj = new ViDuTuKhoaNew1();

Sau đó, các bạn có thể dùng đối tượng (thể hiện) vừa tạo để truy cập các phương thức, biến đối tượng của nó.

obj.hienThiThongTin();

Kết quả nhận được là:

Gọi đến phương thức hienThiThongTin

Cách 2: dùng từ khóa new và tham chiếu đến constructor tương ứng.

Như các bạn đã biết, khi tạo đối tượng, chương trình sẽ tự động gọi đến constructor tương ứng (nếu có định nghĩa rõ ràng constructor) hoặc nếu không có thì tự tạo và gọi đến constructor mặc định.

public class ViDuTuKhoaNew2 {

    ViDuTuKhoaNew2() {
        System.out.println("Gọi đến constructor tương ứng");
    }

    public static void main(String[] args) {
        // Tạo đối tượng mới
        ViDuTuKhoaNew2 obj = new ViDuTuKhoaNew2();
    }
}

Khi chạy chương trình, chúng ta nhận được kết quả là:

Gọi đến constructor tương ứng

Cách 3: Gọi từ khóa new để khởi tạo đối tượng mới có đối số.

Ví dụ, ở đây mình định nghĩa 1 class là Student và thực hiện get / set cho class này.

class Student {
    private String MSSV;
    private String ten;

    // Hàm (constructor) khởi tạo đối tượng
    public Student(String MSSV, String ten) {
        this.MSSV = MSSV;
        this.ten = ten;
    }

    // Các hàm get, set thuộc tính của đối tượng
    public String LayMSSV() {
        return this.MSSV;
    }

    public String LayTen() {
        return this.ten;
    }

    public void DatMSSV(String MSSV) {
        this.MSSV = MSSV;
    }

    public void DatTen(String ten) {
        this.ten = ten;
    }
}

Tiếp đó mình tạo 1 class Main (trong cùng file Main.java) để thực hiện 1 số hành động dùng class Student.

class Main {
    public static void main(String[] args) {
        // Khai báo 1 đối tượng Student và khởi tạo nó luôn, cùng 1 dòng lệnh
        Student student = new Student("B1714757", "Tran Thanh Tam");
        // Thao tác với đối tượng vừa được khởi tạo
        System.out.println("Trước khi chỉnh sửa:");
        System.out.println("Mã số sinh viên: " + student.LayMSSV());
        System.out.println("Tên sinh viên: " + student.LayTen());

        student.DatMSSV("B1704948");
        student.DatTen("Nguyen Viet Tu");

        System.out.println("Sau khi chỉnh sửa:");
        System.out.println("Mã số sinh viên: " + student.LayMSSV());
        System.out.println("Tên sinh viên: " + student.LayTen());
    }
}

Khi định nghĩa xong class Student thì bạn chưa dùng được chúng, chưa gọi đến được các phương thức của nó.

Bởi vì bạn mới chỉ lập 1 bản kế hoạch thôi.

Sau khi dùng từ khóa new, ví dụ như thế này:

Student student = new Student("B1714757", "Tran Thanh Tam");

Thì 1 sinh viên thực thụ mới được tạo ra (được cấp phát bộ nhớ)

Ở đây, mình truyền đối số trong khi new đối tượng để tận dụng constructor tạo ra các thông tin ban đầu của sinh viên luôn.

Kết quả có được như thế này:

Trước khi chỉnh sửa:
Mã số sinh viên: B1714757
Tên sinh viên: Tran Thanh Tam
Sau khi chỉnh sửa:
Mã số inh viên: B1704948
Tên sinh viên: Nguyen Viet Tu

Nếu bạn không tạo đối tượng, thì bạn không thể truy cập, chỉnh sửa như thế này được đâu:

student.DatMSSV("B1704948");
student.DatTen("Nguyen Viet Tu");

Cách 4: dùng từ khóa new để tạo mảng

Đúng vậy, bạn có thể tạo 1 mảng bằng cách dùng từ khóa new:

public class ViDuTuKhoaNew4 {  

    // Tạo 1 đối tượng mảng
    static int arr[]=new int[5];
    
    public static void main(String[] args) {  
        System.out.println("Độ dài của mảng là: "+ arr.length);  
    }
}

Lưu ý, ta dùng từ khóa static khi tạo mảng đối tượng để truy cập mà không cần tạo đối tượng mới.

Kết quả nhận được là:

Độ dài của mảng là: 5

Hoặc nếu bạn tạo đối tượng mảng mới trong phương thưc main thì không cần static, ví dụ:

public class ViDuTuKhoaNew4 {  

    public static void main(String[] args) {
        // Tạo 1 đối tượng mảng
        int arr[]=new int[5];
        System.out.println("Độ dài của mảng là: "+ arr.length);  
    }
}

Khi chạy chương trình, chúng ta cũng nhận được kết quả tương tự:

Độ dài của mảng là: 5

II. Toán Tử Bit Trong Java

Các toán tử dạng bit cho phép mọi người thao tác trên từng bit riêng biệt trong các kiểu dữ liệu nguyên thuỷ. Toán tử Bit có thể áp dụng cho kiểu số nguyên integer, long, short, char, byte.

Giả sử A = 60, B = 13

Chuyển qua dạng nhị phân

A = 0011 1100

B = 0000 1101

Toán tử Mô tả Ví dụ
& Bitwise and A & B = 0000 1100
| Bitwise or A || B = 0011 1101
^ Bitwise xor A ^ B = 0011 0001
~ Bitwise đảo bit ~A = 1100 0011
<< Left shift A << 2 = 1111 0000
>> Right shift A >> 2 = 1111
>>> Righ shift fill zero A >> 2 = 0000 1111

dùng hàm Integer.toBinaryString() để chuyển 1 số nguyên sang số dạng bit.

public class Main {
    public static void main(String[] args) {
        int a = 60, b = 13;
        int c;
        System.out.println("bit a: " + Integer.toBinaryString(a));
        System.out.println("bit b: " + Integer.toBinaryString(b));
        c = a & b;
        System.out.println("Ket qua phep (&): " + Integer.toBinaryString(c));
        c = a | b;
        System.out.println("Ket qua phep (|): " + Integer.toBinaryString(c));
        c = a ^ b;
        System.out.println("Ket qua phep (^): " + Integer.toBinaryString(c));
        c = ~a;
        System.out.println("Ket qua phep (~): " + Integer.toBinaryString(c));
        c = a << 2;
        System.out.println("Ket qua phep (<<): " + Integer.toBinaryString(c));
        c = a >>2;
        System.out.println("Ket qua phep (>>): " + Integer.toBinaryString(c));
        c = a >>>2;
        System.out.println("Ket qua phep (>>>): " + Integer.toBinaryString(c));
    }
}

III. Toán Tử Instanceof Trong Java

Toán tử instanceof trong Java là 1 toán tử được dùng để kiểm tra xem đối tượng này có phải là instance của 1 class hay interface nào đấy hay không? Kết quả trả về của toán tử này sẽ là true nếu đối tượng đấy là thể hiện của class mà bạn đang check, ngược lại thì false.

Ví dụ, mình có 1 class Application dưới đây:

package com.huongdanjava.java;

public class Application {

public static void main(String[] args) {
Application application = new Application();
System.out.println(application instanceof Application);
}

Trong hàm main() của class này, mình initialize 1 đối tượng của class Application và dùng toán tử instanceof để kiểm tra xem đối tượng này có phải là instance của class Application này hay không? bạn sẽ thấy kết quả sẽ dưới đây:

Nếu bạn viết code dưới đây:

package com.huongdanjava.java;

public class Application {

public static void main(String[] args) {
Application application = new Application();
System.out.println(application instanceof String);
}

}

thì IDE sẽ báo lỗi ngay:

Đây là trong trường hợp quá tường minh, quá rõ ràng, IDE có thể báo lỗi cho bạn biết ngay.

Nhưng nếu bạn có 1 interface với 2 implementation dưới đây:

package com.huongdanjava.java;

public interface Shape {

}
package com.huongdanjava.java;

public class Triangle implements Shape {

}
package com.huongdanjava.java;

public class Rectangle {

}

thì lúc này nếu bạn initialize đối tượng của class Triangle nhưng lại đi kiểm tra đối tượng này có phải là thể hiện của class Rectangle,

package com.huongdanjava.java;

public class Application {

public static void main(String[] args) {
Shape shape = new Triangle();

System.out.println(shape instanceof Rectangle);
}

}

IDE sẽ không thể detect lỗi lúc compile time nhưng khi chạy bạn sẽ thấy kết quả dưới đây:

Chúng ta sẽ thường dùng toán tử instanceof trong trường hợp kiểm tra xem tham số truyền vào của 1 phương thức có phải là instance của 1 class nào đấy hay không? Ví dụ như:

private void check(Shape shape) {
    if (shape instanceof Triangle) {
        Triangle triangle = (Triangle) shape;

        System.out.println("This is triangle: " + triangle.toString());
    }
}

Trong phương thức trên, tham số interface Shape có nhiều implementation khác nhau, trong phần body của phương thức, chúng ta sẽ check xem là instance được truyền vào phương thức này có phải là Triangle hay không? Nếu đúng thì xử lý code tiếp.
Kết quả:

package com.huongdanjava.java;

public class Application {

private void check(Shape shape) {
if (shape instanceof Triangle) {
Triangle triangle = (Triangle) shape;

System.out.println("This is triangle: " + triangle.toString());
}
}

public static void main(String[] args) {
Application application = new Application();
application.check(new Triangle());
}

}

Từ Java 14, bạn có thể viết lại phương thức check() dùng pattern matching instanceof, đơn giản dưới đây:

private void check(Shape shape) {
    if (shape instanceof Triangle triangle) {
        System.out.println("This is triangle: " + triangle.toString());
    }
}

Với cách viết mới, chúng ta không cần viết thêm 1 dòng code để cast instance về đối tượng mà chúng ta muốn nữa. Tất cả sẽ được thực hiện trong dòng lệnh if.

Kết quả vẫn như vậy:

IV. Toán Tử Gán Trong Java

Chương trình ví dụ đơn giản như sau minh họa những toán tử gán trong Java. Copy và paste chương trình Java này trong Test.java file và sau đó biên dịch và thực thi chương trình này:

TOÁN TỬ MIÊU TẢ VÍ DỤ: B = 20, A = 10
= Toán tử gán đơn giản. Gán giá trị toán hạng bên phải cho toán hạng trái. C = A + B sẽ gán giá trị của A + B vào cho C
+= Thêm giá trị toán hạng phải tới toán hạng trái và gán giá trị đó cho toán hạng trái. C += A là tương đương với C = C + A
-= Trừ đi giá trị toán hạng phải từ toán hạng trái và gán giá trị này cho toán hạng trái. C -= A là tương đương với C = C – A
*= Nhân giá trị toán hạng phải với toán hạng trái và gán giá trị này cho toán hạng trái. C *= A là tương đương với C = C * A
/= Chia toán hạng trái cho toán hạng phải và gán giá trị này cho toán hạng trái. C /= A là tương đương với C = C / A
%= Lấy phần dư của phép chia toán hạng trái cho toán hạng phải và gán cho toán hạng trái. C %= A là tương đương với C = C % A
<<= Dịch trái toán hạng trái sang số vị trí là giá trị toán hạng phải. C <<= 2 là giống như C = C << 2
>>= Dịch phải toán hạng trái sang số vị trí là giá trị toán hạng phải. C >>= 2 là giống như C = C >> 2
&= Phép AND bit C &= 2 là giống như C = C & 2
^= Phép OR loại trừ bit C ^= 2 là giống như C = C ^ 2
|= Phép OR bit. C |= 2 là giống như C = C | 2
public class Test {

  public static void main(String args[]) {
     int a = 10;	
     int b = 20;
     int c = 0;

     c = a + b;
     System.out.println("c = a + b = " + c );

     c += a ;
     System.out.println("c += a  = " + c );

     c -= a ;
     System.out.println("c -= a = " + c );

     c *= a ;
     System.out.println("c *= a = " + c );

     a = 10;
     c = 15;
     c /= a ;
     System.out.println("c /= a = " + c );

     a = 10;
     c = 15;
     c %= a ;
     System.out.println("c %= a  = " + c );

     c <<= 2 ;
     System.out.println("c <<= 2 = " + c );

     c >>= 2 ;
     System.out.println("c >>= 2 = " + c );

     c >>= 2 ;
     System.out.println("c >>= a = " + c );

     c &= a ;
     System.out.println("c &= 2  = " + c );
  
     c ^= a ;
     System.out.println("c ^= a   = " + c );

     c |= a ;
     System.out.println("c |= a   = " + c );
  }
}

Nó sẽ cho kết quả như sau:

c = a + b = 30
c += a  = 40
c -= a = 30
c *= a = 300
c /= a = 1
c %= a  = 5
c <<= 2 = 20
c >>= 2 = 5
c >>= 2 = 1
c &= a  = 0
c ^= a   = 10
c |= a   = 10

Các bạn không được dùng toán tử gán này để gán giá trị boolean cho 1 biến có kiểu dữ liệu là char, byte, short, int, long hay float, hay double và ngược lại. Nếu cố gắng làm điều đó thì sẽ bị lỗi compile ngay.

Bạn không thể gán 1 biến mà kiểu dữ liệu của nó có khoảng giá trị lớn hơn sang 1 biến có kiểu giá trị có khoảng giá trị nhỏ hơn.

Ví dụ, chúng ta không thể gán 1 biến có kiểu long sang biến có kiểu int như sau:

đó là bởi vì khoảng giá trị của kiểu long lớn hơn int rất nhiều.

– Các toán tử còn lại bao gồm “+=“, “-=“, “*=“, “/=” là dạng viết tắt của của phép tính cộng trừ nhân chia với toán tử gán.

“+=”: đầu tiên là cộng sau đó là gán.

“-=”: đầu tiên là trừ sau đó là gán.

“*=”: đầu tiên là nhân sau đó là gán.

“/=”: đầu tiền là chia sau đó là gán.

Ví dụ chúng ta có phép tính như sau:

   
a += b;

có nghĩa là

1
a = a + b;

Hay

Java
a -= b;
1
a -= b;

có nghĩa là

Toán Tử Xor

Phép toán thao tác bit XOR lấy hai dãy bit có cùng độ dài và thực hiện phép toán logic bao hàm XOR trên mỗi cặp bit tương ứng. Kết quả ở mỗi vị trí là 1 chỉ khi bit đầu tiên là 1 hoặc nếu chỉ khi bit thứ hai là 1, nhưng sẽ là 0 nếu cả hai là 0 hoặc cả hai là 1. Ở đây ta thực hiện phép so sánh hai bit, kết quả là 1 nếu hai bit khác nhau và là 0 nếu hai bit giống nhau. Ví dụ:

0101 (số thập phân 5)

XOR 0011 (số thập phân 3)

0110 (số thập phân 6)

(cách nhớ dễ nhất là: 2 bit giống nhau trả về 0, 2 bit khác nhau trả về 1)

Bảng chân trị cho XOR:

Phép toán thao tác bit XOR có thể được dùng để đảo ngược các bit được lựa chọn trong thanh ghi (còn được gọi là bật (set) hoặc lật (flip)). Bất kỳ bit nào được bật bằng cách thực hiện phép toán thao tác bit XOR nó với 1. Ví dụ: cho dãy bit 0010 (số 2 thập phân), bit thứ hai và thứ tư có thể được kích hoạt bằng cách dùng phép toán thao tác bit XOR với 1 dãy bit có chứa 1 ở vị trí thứ hai và thứ tư:

0010 (số thập phân 2) XOR 1010 (số thập phân 10) = 1000 (số thập phân 8)

Kỹ thuật này có thể được dùng để điều khiển dãy bit biểu hiện các bộ chứa phép toán logic đúng sai (boolean).

Trong C, C++, Java, C#, toán tử thao tác bit XOR được biểu diễn bằng ký hiệu “^” (dấu mũ). Trong Pascal, toán tử này là “xor”. Ví dụ:

x = y ^ z; // C

Hay:

x:= y xor z;

Câu lệnh trên sẽ gáp trình thienmaonline.vnên hợp ngữ (Assembly) thường dùng toán tử XOR để gán giá trị của 1 thanh ghi (register) về 0. Khi thực hiện phép toán XOR cho 1 mẫu bit với chính bản thân nó, mẫu nhị phân nhận được sẽ toàn bit 0. Trên nhiều kiến trúc máy tính, dùng XOR để gán 0 cho 1 thanh ghi sẽ được CPU xử lý nhanh hơn so với chuỗi thao tác tương ứng để nạp và lưu giá trị 0 vào thanh ghi.

Toán Tử Or

Phép toán trên thao tác bit OR lấy hai dãy bit có độ dài bằng nhau và thực hiện phép toán lý luận bao hàm OR trên mỗi cặp bit tương ứng. Kết quả ở mỗi vị trí sẽ là 0 nếu cả hai bit là 0, ngược lại thì kết quả là 1. Ví dụ:

0101 (số thập phân 5)

OR 0011 (số thập phân 3)

= 0111 (số thập phân 7)

Bảng chân trị cho OR:

Phép toán thao tác bit XOR có thể được dùng để đảo ngược các bit được lựa chọn trong thanh ghi (còn được gọi là bật (set) hoặc lật (flip)). Bất kỳ bit nào được bật bằng cách thực hiện phép toán thao tác bit XOR nó với 1. Ví dụ: cho dãy bit 0010 (số 2 thập phân), bit thứ 2 và thứ tư có thể được kích hoạt bằng cách dùng phép toán thao tác bit XOR với 1 dãy bit có chứa 1 ở vị trí thứ hai và thứ tư:

0010 (số thập phân 2)

XOR 1010 (số thập phân 10)

= 1000 (số thập phân 8)

Kỹ thuật này có thể được dùng để điều khiển dãy bit biểu hiện các bộ chứa phép toán logic đúng sai (boolean).

Trong C, C++, Java, C#, toán tử thao tác bit XOR được biểu diễn bằng ký hiệu “^” (dấu mũ). Trong Pascal, toán tử này là “xor”. Ví dụ:

x = y ^ z; // C

Hay:

x:= y xor z; { Pascal }

Câu lệnh trên sẽ gáp trình viên hợp ngữ (Assembly) thường dùng toán tử XOR để gán giá trị của 1 thanh ghi (register) về 0. Khi thực hiện phép toán XOR cho 1 mẫu bit với chính bản thân nó, mẫu nhị phân nhận được sẽ toàn bit 0. Trên nhiều kiến trúc máy tính, dùng XOR để gán 0 cho 1 thanh ghi sẽ được CPU xử lý nhanh hơn so với chuỗi thao tác tương ứng để nạp và lưu giá trị 0 vào thanh ghi.

XIV. Toán Tử Logic Trong Java

Toán tử logic được sử dụng để kiểm tra tính đúng đắn của một hoặc nhiều biểu thức. Giá trị trả về của các biểu thức này là 1 giá trị kiểu boolean, true hoặc false. Trong Java, ta có các toán tử logic như sau:

AND (&&)

OR (||)

NOT (!)

Toán tử AND

Toán tử AND được sử dụng trong trường hợp chúng ta có hai hay nhiều biểu thức và chúng ta cần tất cả các biểu thức đó đều đúng, có nghĩa là kết quả trả về của chúng đều là true.

Ví dụ:

int a = 10;
int b = 15;
int c = 200;
System.out.println(c > a && c > b);

Ở đây ta có hai biểu thức là c > a và c > b và toán tử AND được sử dụng để chắc chắn rằng giá trị của c đều lớn hơn hai giá trị của hai biến còn lại là a và b.

Toán tử OR

Toán tử OR cũng được sử dụng trong trường hợp chúng ta có hai hay nhiều biểu thức và chúng ta chỉ cần 1 trong các biểu thức đó là đúng, nghĩa là giá trị của nó là true. Các biểu thức còn lại true hay false đều được nhưng ít nhất phải có 1 cái là true.

Ví dụ:

int a = 10;
int b = 15;
int c = 200;
System.out.println(c > a || b > c);

Trong ví dụ này, ta chỉ cần c lớn a là được rồi, b có lớn hơn c hay không cũng ko sao. 😀

Toán tử NOT

Toán tử NOT dùng để đảo ngược kết quả của một hay nhiều biểu thức trả về giá trị boolean. Có nghĩa nếu 1 biểu thức bất kỳ trả về giá trị true, sử dụng toán tử NOT thì kết quả cuối cùng sẽ là ngược lại với true, là false.

Ví dụ:

int a = 10;
int b = 15;
System.out.println(!(a > b));

Kết quả của ví dụ này là true bởi vì a không lớn hơn b, false, đảo ngược lại sẽ là true.

Để bạn hiểu rõ hơn về kết quả của các biểu thức sử dụng với toán tử logic, mình đưa ra bảng dưới đây, ta thường gọi nó là bảng chân trị:

Toán tử AND (&&) Toán tử OR (||)  Toán tử NOT (!) 
true && true => true true || true => true !true => false
true && false => false true || false => true !false => true
false && true => false false || true => true
false && false => false false || false => false
true && true && false => false false || false || true => true

Nhìn vào bảng trên ta có thể thấy

Toán tử AND chỉ có thể trả về true nếu tất cả các kết quả của biểu thức đều là true, nếu một trong số chúng là false thì kết quả sẽ là false.

Toán tử OR chỉ trả về false nếu tất cả các kết quả của biểu thức là false, ngược lại, chỉ cần một biểu thức là true thì kết quả sẽ là true.

Toán tử NOT thì đảo ngược kết quả có giá trị boolean.

XV. Thứ Tự Ưu Tiên Toán Tử Trong Java

Toán tử trong lập trình cũng có những thứ tự ưu tiên giống như các phép toán của chúng ta ngoài đời thực (vd: nhân chia trước cộng trừ sau). Trong Java độ ưu tiên các toán tử sẽ được sắp xếp như sau (Toán tử nào có độ ưu tiên cao hơn sẽ được thực thi trước).

Bảng dưới đây liệt kê thứ tự ưu tiên của các toán tử. Những toán tử với quyền ưu tiên cao nhất xuất hiện trên cùng của bảng, và các toán tử có quyền ưu tiên thấp nhất thì ở bên dưới cùng của bảng. Trong 1 biểu thức, các toán tử có quyền ưu tiên cao nhất được tính toán đầu tiên.

Cùng xem ảnh sau để biết thứ tự ưu tiên của các loại toán tử trong Java:

Thứ Tự Ưu Tiên Toán Tử Trong Java
Thứ Tự Ưu Tiên Toán Tử Trong Java

The post Các Toán Tử Trong Java first appeared on Techacademy.

source https://techacademy.edu.vn/cac-toan-tu-trong-java/

Extends Trong Java

Khi chúng ta nói về tính kế thừa, từ khóa thường xuyên nhất được sử dụng là extends trong java và implements trong java. Những từ khóa này có thể định nghĩa 1 kiểu là loại IS-A của loại khác. Sử dụng những từ khóa, chúng ta có thể tạo 1 đối tượng sử dụng thuộc tính của đối tượng khác.

Chúng ta sử dụng từ khóa extends của lớp con để có thể kế thừa những thuộc tính của lớp cha trừ những thuộc tính private của lớp cha. Bài viết này mình sẽ giới thiệu cho các bạn hiểu về tính kế thừa trong java. Qua đây hi vọng các bạn có thể tự viết được 1 class kế thừa từ class khác để giải quyết 1 bài toán.

I. Extends Trong Java Là Gì

Tính kế thừa trong Java là 1 kỹ thuật mà trong đó 1 đối tượng thu được tất cả thuộc tính và hành vi của đối tượng cha. Ý tưởng đằng sau tính kế thừa trong Java là bạn có thể tạo những lớp mới mà được xây dựng dựa trên những lớp đang tồn tại.

Khi các bạn kế thừa từ 1 lớp đang tồn tại, bạn có thể tái sử dụng những phương thức và những trường của lớp cha, và các bạn cũng có thể bổ sung thêm những phương thức và những trường khác. Tính kế thừa biểu diễn mối quan hệ IS-A, còn được gọi là mối quan hệ cha-con.

Như vậy, để hiểu 1 cách thực tế, giả sử đầu tiên chúng ta có 1 lớp nào đó, lớp này có thể là do chúng ta viết ra, hay “lượm lặt” ở đâu đó, mình tạm gọi tên lớp sẵn có này là A. Sau đó, để tận dụng lại những hàm hay những thuộc tính của A mà không cần phải viết lại (hoặc copy lại, có thể vi phạm bản quyền), thì chúng ta xây dựng 1 lớp mới kế thừa từ A, mình gọi lớp mới này là B.

Khi đó B của chúng ta sẽ có sẵn những phương thức và thuộc tính mà A có. Cũng có lúc không vì mục đích dùng lại những giá trị của A, mà là vì 1 vài giá trị của A không phù hợp với nhu cầu của B, thế là việc kế thừa từ A còn giúp cho B có cơ hội được hoàn thiện lại (hay còn gọi là mở rộng) những giá trị chưa phù hợp đó của A mà không làm thay đổi bản chất của A.

Vì sao sử dụng tính kế thừa trong Java?

  • Để ghi đè phương thức (Method Overriding), do đó có thể thu được tính đa hình tại runtime.
  • Để làm tăng tính tái sử dụng của code.

II. Cách Sử Dụng Extends?

Cú pháp của kế thừa trong Java

Sử dụng từ khóa extends để kế thừa.

class Subclass-name extends Superclass-name {  
   //methods and fields
}

Từ khóa extends có ý nghĩa rằng các bạn đang tạo 1 lớp mới và kế thừa từ 1 lớp đang tồn tại. Trong Java, 1 lớp mà được kế thừa được gọi là lớp cha, lớp kế thừa là lớp con.

Cách sử dụng Extends

Hãy cùng Techacademy xem qua 1 ví dụ sau:

Tạo 1 tập tin là: myClass.java

public class myClass {
        
        public myClass() {
            // Construct
        }
        
        int number = 200;
    }

Tiếp theo tạo file TwoClass.java

public class TwoClass extends myClass {
    public TwoClass() {
        // Constructor
    }
    public static void main(String[] args) {
        
        TwoClass obj = new TwoClass();
        System.out.println(obj.number);
    }
}

Ví dụ chúng ta có các class A,B.Class A có 1 phương thức để hiển thị là show(). Class B gồm hai phương thức display() và show() nhưng Class B kế thừa từ class A. Sau đó chúng ta sẽ tạo ra đối tượng dựa vào class B rồi gọi phương thức show, kết quả trả về sẽ là “better show” chứ không phải là “show”. Lý do vì class B đã extends từ class A thì nếu có 2 phương thức của lớp cha trùng tên thì sẽ ghì đè lên phương thức trùng tên của lớp con.

Dưới đây là 1 ví dụ của extends trong Java:

class A {
  public void show() {
    System.out.println("show");
  }
}

class B extends A {
  public void display() {
    System.out.println("display");
  }

  public void show() {
    System.out.println("better show");
  }
}

public class Main {

  public static void main(String[] args) {

    A a = new B(); // possible because B extends A
    a.show(); // this will now call to show() method of class B
  }
}

Output
better show

III. Ví Dụ Extends Trong Java

Có 3 kiểu kế thừa trong java là đơn kế thừa, kế thừa nhiều cấp, kế thừa thứ bậc.

Khi 1 class được kế thừa từ nhiều class đươc gọi là đa kế thừa. Trong java, đa kế thừa chỉ được support thông qua interface, như đã được nói đến trong bài interface trong java

Ví dụ về đơn kế thừa

File: TestInheritance1.java

class Animal {
    void eat() {
        System.out.println("eating...");
    }
}
 
class Dog extends Animal {
    void bark() {
        System.out.println("barking...");
    }
}
 
public class TestInheritance1 {
    public static void main(String args[]) {
        Dog d = new Dog();
        d.bark();
        d.eat();
    }
}

Output:

barking...
eating...

Ví dụ về kế thừa nhiều cấp

File: TestInheritance2.java

class Animal {
    void eat() {
        System.out.println("eating...");
    }
}
 
class Dog extends Animal {
    void bark() {
        System.out.println("barking...");
    }
}
 
class BabyDog extends Dog {
    void weep() {
        System.out.println("weeping...");
    }
}
 
public class TestInheritance2 {
    public static void main(String args[]) {
        BabyDog d = new BabyDog();
        d.weep();
        d.bark();
        d.eat();
    }
}

Kết quả là:

weeping...
barking...
eating...

Ví dụ về kế thừa thứ bậc

File: TestInheritance3.java

class Animal {
    void eat() {
        System.out.println("eating...");
    }
}
 
class Dog extends Animal {
    void bark() {
        System.out.println("barking...");
    }
}
 
class Cat extends Animal {
    void meow() {
        System.out.println("meowing...");
    }
}
 
public class TestInheritance3 {
    public static void main(String args[]) {
        Cat c = new Cat();
        c.meow();
        c.eat();
        // c.bark(); // compile error
    }
}

Kết quả là:

meowing...
eating...

III. Phân Biệt Extends Và Implements Trong Java

Phân biệt Extends và Implements trong Java là một trong những câu hỏi trong phỏng vấn thường xuyên gặp. Extends và Implements là 2 từ khóa được sử dụng rất nhiều trong Java. Tuy nhiên 1 số lập trình viên mới học chưa nắm được sự khác biệt thì ở bài viết này sẽ cụ thể hóa vấn đề này.

Extends: kế thừa các class

Implements: kế thừa các interface

Mặc dù cả 2 Extends và Implements trong Java được sử dụng để thực hiện kế thừa nhưng có các sự khác biệt giữa chúng. Extends được sử dụng để kế thứ từ 1 class khác trong khi đó Implements cũng được sử dụng để kế từ các Interface

Cách sử dụng Extends ?

Ví dụ chúng ta có các class A,B.Class A có một phương thức để hiển thị là show(). Class B gồm hai phương thức display() và show() nhưng Class B kế thừa từ class A. Sau đó chúng ta sẽ tạo ra đối tượng dựa vào class B rồi gọi phương thức show, kết quả trả về sẽ là “better show” chứ không phải là “show”. Lý do vì class B đã extends từ class A thì nếu có hai phương thức của lớp cha trùng tên thì sẽ ghì đè lên phương thức trùng tên của lớp con.

Dưới đây là một ví dụ của Extends trong Java:

class A {
  public void show() {
    System.out.println("show");
  }
}

class B extends A {
  public void display() {
    System.out.println("display");
  }

  public void show() {
    System.out.println("better show");
  }
}

public class Main {

  public static void main(String[] args) {

    A a = new B(); // possible because B extends A
    a.show(); // this will now call to show() method of class B
  }
}

Output
better show

Cách sử dụng Implements ?

Ở ví dụ dưới chúng ta có 1 class R và implements từ interface Runnable thì bắt buộc rằng class R phải orver @Override tất cả các phương thức trừu tượng của interface Runnable.Ở đây là method run().

class R implements Runnable{
public void run(){
   System.out.println("do nothing");
  }
}

Điểm khác biệt quan trọng :

Dưới đây là 1 số điểm khác biệt quan trọng của Extends và Implements trong Java :

1) Một class có thể kế thừa từ 1 class khác, không thể Extends từ 1 Interface.

interface I{

}

class A{
}

class B extends A{

}

class C extends I{

}

Khi bạn chương trình chạy và biên dịch thì sẽ xuất hiện lỗi sau:

$ javac Main.java
Main.java:27: no interface expected here
class C extends I{
^
1 error

2) Khi sử dụng Extends, 1 class chỉ có thể kế thừa từ một class khác, dưới đây là code thông báo lỗi khi cố gắng Extends từ nhiều class:

class C extends A, B{

}

$ javac Main.java
Main.java:27: '{' expected
class C extends A, B{
^
1 error

3) Một Interface có thể Extends từ một Interface khác.

interface J extends I{

}

4) Một class có thể kế thừa từ nhiều Interface khác bằng cách sử dụng Implements, đoạn code dưới đây thể hiện :

class D implements I, J, K{

}

5) Strong một lớp có thể sử dụng Extends và Implements.

class E extends A implements I, J{

}

6) Một Interface không thể Implements từ một  Interface, nó không thể xảy ra cho nên lúc này khi chạy chương trình, nó sẽ xảy ra ngoại lệ :

interface L implements J{

}

javac Main.java
Main.java:49: '{' expected
interface L implements J{
^
1 error

Đó là tất cả về sự khác biệt giữa Extends và Implements trong Java. Bài viết nói lên những sự khác biết là kinh nghiệm trong lập trình của Techacademy có được, hy vọng bạn đọc xem và áp dụng được ở thực tế.

Phân Biệt Extends Và Implements Trong Java
Phân Biệt Extends Và Implements Trong Java

The post Extends Trong Java first appeared on Techacademy.

source https://techacademy.edu.vn/extends-trong-java/

If Else Trong PHP

Xin chào các bạn độc giả của khóa học lập trình PHP, bài học Câu lệnh if else trong PHP này là bài đầu tiên trong chương Cấu trúc điều khiển và rẽ nhánh. Cấu trúc if else là thành phần được sử dụng gần như trong mọi chương trình phần mềm. Do đó, bạn cần nắm chắc kiến thức về lệnh if else để có thể học tốt các bài tập tiếp theo. Bắt đầu từ bài này thì các bạn sẽ được thực hành nhiều để luyện tập kỹ năng lập trình.

I. If Else Trong PHP Dùng Làm Gì

Mệnh đề if-else trong PHP được sử dụng để kiểm tra một biểu thức điều kiện nào đó có đúng hay không, nếu đúng thì thực thi những câu lệnh bên trong khối lệnh if và ngược lại nếu sai thì nó sẽ bỏ qua những câu lệnh đó. Có ba dạng của câu lệnh if trong PHP.

+ Mệnh đề if.

+ Mệnh đề if-else.

+ Mệnh đề if-elseif-else.

Trong đó:

– Câu lệnh if ( không có else ): Khối lệnh sau if được thực thi nếu giá trị của điều kiện là True

– Câu lệnh if … else: Mệnh đề if được sử dụng để kiểm tra giá trị dạng boolean của điều kiện. Khối lệnh sau if được thực thi nếu giá trị của điều kiện là True, nếu là False thì chỉ có khối lệnh sau else được thực hiện

– Câu lệnh if … elseif … else: Mệnh đề if-elseif-else cũng kiểm tra giá trị dạng boolean của điều kiện. Nếu giá trị điều kiện if là True thì chỉ có khối lệnh sau if sẽ được thực hiện. Nếu giá trị điều kiện else if nào là True thì chỉ có khối lệnh sau if else đó sẽ được thực hiện… Nếu tất cả điều kiện của if và if else là False thì chỉ có khối lệnh sau else sẽ được thực hiện

II. Câu lệnh IF

– Sử dụng câu lệnh if khi thực hiện một số mã khi và chỉ khi điều kiện qui định của nó đúng với mã được qui định

Cú pháp câu if :

If ( điều kiện ) sẽ được thực hiện nếu điều kiện đúng . 

Ví dụ sau đây sẽ đưa ra “Have a nice weekend!” nếu ngày hiện nay là thứ Sáu:

<html>
<body>
<?php
$d=date("D");
if ($d=="Fri") echo "Have a nice weekend!";
?>
</body>
</html>

Chú ý rằng đoạn mã trên không có else . vì vậy mã này được thực thi khi nó chỉ đúng với điều kiện .

III. Câu lệnh IF ELSE

Sử dụng câu lệnh if … else để thực hiện đoạn mã nếu điều kiện nó là đúng hoặc sai .
Cú pháp :

if (điều kiện)
 {
 Mã lệnh sẽ được thực hiện nếu điều kiện đúng;
 }
else
 {
 Mã lệnh sẽ được thực hiện nếu điều kiện sai;
 }

Ví dụ sau đây sẽ đưa ra “Have a nice weekend!” nếu ngày hiện nay là thứ Sáu, nếu không phải nó sẽ trả kết quả khác là “Have a nice day!”

<html>
<body>
<?php
$d=date("D");
if ($d=="Fri")
 {
 echo "Have a nice weekend!";
 }
else
 {
 echo "Have a nice day!";
 }
?>
</body>
</html> 

IV. Câu lệnh IF ELSEIF ELSE

Sử dụng câu lệnh if …. elseif … else để lựa chọn một trong nhiều khối mã sẽ được thực hiện.

Cú pháp

if (Điều kiện 1)
 {
 code sẽ được thực hiện nếu điều kiện 1 đúng;
 }
elseif (Điều kiện 2)
 {
 code sẽ được thực hiện nếu điều kiên 2 đúng;
 }
else
 {
 code sẽ được thực hiện nếu mấy cái điều kiện trên sai;
 }

Ví dụ sau đây sẽ đưa ra “Have a nice weekend!”nếu ngày hiện nay là thứ Sáu, và “Have a nice Sunday!” nếu ngày hiện nay là chủ nhật. Nếu không, nó sẽ ra “Have a nice day!”

<html>
<body>
<?php
$d=date("D");
if ($d=="Fri")
 {
 echo "Have a nice weekend!";
 }
elseif ($d=="Sun")
 {
 echo "Have a nice Sunday!";
 }
else
 {
 echo "Have a nice day!";
 }
?>
</body>
</html> 

V. Biểu thức điều kiện if else rút gọn trong Php

Biểu thức điều kiện if else rút gọn giúp chúng ta viết câu lệnh điều kiện trong Php một cách ngắn gọn dễ hiểu.

Cú pháp viết if else rút gọn

$var = BTĐK?Giá trị 1: Giá trị 2

Trong đó

+ $var: biến nhận giá trị biểu thức

+ BTKĐ: biểu thức điều kiện

Hoạt động

+ Nếu BTĐK trả về TRUE thì $var = Giá trị 1

+ Ngược lại $var = Giá trị 2

$n = 26;
$check_even = $n%2==0?true:false;
echo $check_even;

Khi chạy chương trình trên kết quả nhận được là true. Thay vì viết if else dài dòng thì mọi thứ giờ đây ngắn gọn hơn nhiều.

VI. Bài tập IF Else trong PHP

Bài 1: Viết chương trình C++ để nhập tuổi và in ra kết quả nếu tuổi học sinh đó không đủ điều kiện vào học lớp 10. Biết tuổi vào lớp 10 của học sinh là 16.

Bài 2: Viết chương trình C++ để nhập một số nguyên bất kỳ từ bàn phím và in kết quả ra màn hình để thông báo cho người dùng biết số đó lớn hay nhỏ hơn 100.

Bài 3: 

Viết một chương trình C++ để nhập lương nhân viên, tính thuế thu nhập và lương ròng (số tiền lương thực sự mà nhân viên đó nhận được). Với các thông số giả sử như sau (không theo luật lương, chỉ là con số giả sử để dễ tính toán):

+ 30% thuế thu nhập nếu lương là 15 triệu.
+ 20% thuế thu nhập nếu lương từ 7 đến 15 triệu.
+ 10% thuế thu nhập nếu lương dưới 7 triệu.

 

The post If Else Trong PHP first appeared on Techacademy.

source https://techacademy.edu.vn/if-else-trong-php/

Chuỗi Trong PHP

I. String trong php là gì

Chuỗi biến được sử dụng sử dụng cho các giá trị có chứa ký tự . Trong chương trình này, chúng ta sẽ nhìn vào chức năng phổ biến nhất được sử dụng để thao tác các chuỗi trong PHP.

Sau khi chúng tôi tạo ra một chuỗi, chúng ta có thể thao tác nó . Một chuỗi có thể được sử dụng trực tiếp trong một hàm hoặc nó có thể được lưu trữ trong một biến .

Dưới đây, các tập lệnh PHP gán văn bản “Hello World” vào một chuỗi biến gọi là $ txt:

<?php
$txt="Hello World";
echo $txt;
?> 

Khi thực thi code trên thì sẽ ra kết quả trả về là “Hello World”
Nào , bây giờ chúng ta thử 1 số chức năng và các chức năng khác nhau để xử lý 1 chuỗi

<?php
$txt1="Hello World!";
$txt2="What a nice day!";
echo $txt1 . " " . $txt2;
?>

Kết quả trả về sẽ là

Hello World ! What a nice day!

Nếu chúng ta nhìn vào đoạn mã trên, bạn thấy rằng chúng ta sử dụng toán tử nối hai lần. Điều này là bởi vì chúng tôi đã để chèn một chuỗi thứ ba, để phân cách hai chuỗi.

II. Xử lý chuỗi trong php

Việc xử lý chuỗi trong PHP rất là quan trọng vì dữ liệu hiển thị trên trang web luôn luôn ở dạng chuỗi, vì thế nếu bạn nắm vững và xử lý nhuần nhuyễn thì sẽ giúp bạn ít tốn công sức và thời gian hơn mà web chạy lại nhanh nữa.

Bên dưới đây Techacademy sẽ liệt kê các hàm xử lý chuỗi trong php thông dụng hay sử dụng nhất, tuy nhiên chúng ta cần hiểu một số quy tắc trong chuỗi trước đã.

2.1 Độ dài chuỗi trong PHP

Hàm strlen () được sử dụng để trả lại chiều dài của một chuỗi.
Hãy tìm chiều dài của một chuỗi:

<?php
echo strlen("Hello world!");
?>

Kết quả trả về là

12

Chiều dài của một chuỗi thường được sử dụng trong vòng lặp hoặc các chức năng khác, điều quan trọng là để biết khi nào kết thúc chuỗi. (tức là trong một vòng lặp, chúng tôi muốn ngừng vòng lặp sau khi ký tự cuối cùng trong chuỗi).

2.2 Tìm kiếm vị trí đầu tiên của kí tự hoặc chuỗi con xuất hiện trong chuỗi nguôn

Hàm strpos () được sử dụng để tìm kiếm một nhân vật / văn bản trong một chuỗi.

Nếu kết hợp được tìm thấy, chức năng này sẽ trở lại với vị trí nhân vật của trận đấu đầu tiên. Nếu không phù hợp được tìm thấy, nó sẽ trả về FALSE

Hãy xem nếu chúng ta có thể tìm thấy chuỗi “thế giới” trong chuỗi ký tự của chúng tôi:

<?php
echo strpos("Hello world!","world");
?> 

Kết quả trả về là

6

Vị trí từ “world” trong ví dụ trên là 6. Lý do mà nó là 6 (và không phải 7), là vị trí của ký tự đầu tiên trong chuỗi là 0, và không phải 1.
Thông tin về 1 số chức năng của các hàm khác ( có thể là không đầy đủ nhưng cũng nên đọc qua cho biết )

2.3 Nối chuỗi trong PHP

Để nối 2 chuỗi chúng ta sử dụng toán tử (.)

<?php
    $string_1 = "Hello";
    $string_2 = "world!";
    echo $string_1. " " .$string_2."<br>";
?>

2.4 Cắt chuỗi trong PHP

substr – Cắt chuỗi, trả về một phần của chuỗi

string substr ( string $string , int $start [, int $length ] )

Trả về một phần của chuỗi được cắt bởi 2 tham số: $start và $length

string

Chuỗi ký tự đầu vào. Cần phải có ít nhất 1 ký tự.

start

Nếu $start là một số không âm, chuỗi trả về sẽ bắt đầu từ vị trí thứ $start trong chuỗi, ký tự đầu tiên được tính là vị trí số 0. Ví dụ, trong chuỗi ‘abcdef’, ký tự ở vị trí số 0 là ‘a’, ký tự ở vị trí số 2 là ‘c’.

Nếu $start là một số âm, chuỗi trả về sẽ bắt đầu từ vị trí thứ $start nhưng tính từ cuối chuỗi trở lại.

Nếu độ dài của chuỗi nhỏ hơn giá trị $start, giá trị trả về sẽ là FALSE.

length

Nếu tham số $length được sử dụng và là một số dương, chuỗi trả về sẽ bao gồm $length ký tự, tính từ vị trí thứ $start (tùy thuộc vào độ dài của chuỗi).

Nếu tham số $length được sử dụng và là một số âm, chuỗi trả về được tính từ vị trí $start đến vị trí $length (trong đó vị trí $length được tính từ cuối chuỗi trở lại). Nếu vị trí $start nằm giữa vị trí $length đến cuối chuỗi, giá trị trả về sẽ là FALSE.

Nếu tham số $length được sử dụng và là có giá trị là 0, FALSE hoặc NULL, giá trị trả về sẽ là một chuỗi rỗng.

Nếu tham số $length không được sử dụng, chuỗi trả về sẽ bắt đầu từ vị trí $start cho đến hết chuỗi.

Ví dụ:

<!DOCTYPE html>
<html>
<body>

<?php
// Positive numbers:
echo substr("Hello world",10)."<br>";
echo substr("Hello world",1)."<br>";
echo substr("Hello world",3)."<br>";
echo substr("Hello world",7)."<br>";
echo "<br>";

// Negative numbers:
echo substr("Hello world",-1)."<br>";
echo substr("Hello world",-10)."<br>";
echo substr("Hello world",-8)."<br>";
echo substr("Hello world",-4)."<br>";
?>

</body>
</html>

Kết quả:

d
ello world
lo world
orld

d
ello world
lo world
orld

2.5 Tách chuỗi trong PHP

– Hàm explode() dùng để tách chuỗi ra thành một mảng.

Để sử dụng hàm explode() thì ta dùng cú pháp như sau:

explode(separator, string, limit)

Trong Đó:

separator (bắt buộc)

– Chỉ định nơi dùng để tách chuỗi.

– Lưu ý: Giá trị của tham số separator không được là một chuỗi rỗng.

string (băt buộc)

– Chuỗi được dùng để xử lý.

limit (Không bắt buộc)

– Chỉ định số lượng phần tử mảng được trả về.

– Dưới đây là các giá trị có thể dùng cho tham số limit:

0 : Trả về mảng chỉ có một phần tử duy nhất.

Lớn hơn 0 : Trả về mảng có số lượng phần tử không vượt quá giá trị của tham số limit.

Nhỏ hơn 0 : Trả về mảng có số lượng phần tử bằng với số lượng phần tử có thể tách được từ chuỗi trừ đi giá trị của tham số limit.

Lưu ý: Nếu bỏ qua tham số này thì hàm sẽ trả về một mảng có số lượng phần tử bằng với số lượng phần tử có thể tách được từ chuỗi.

Ví Dụ:

<!DOCTYPE html>
<html>
<body>

<?php
$str = "Hello world. It's a beautiful day.";
print_r (explode(" ",$str));
?> 

</body>
</html>

Kết Quả:

Array ( [0] => Hello [1] => world. [2] => It's [3] => a [4] => beautiful [5] => day. )

2.6 So sánh chuỗi trong PHP

Hàm strcmp() sẽ so sánh hai chuỗi phân biệt chữ hoa chữ thường, hàm trả về số âm nếu chuỗi thứ nhất nhỏ hơn chuỗi thứ 2, trả về 0 nếu hai chuỗi bằng nhau và trả về số dương nếu chuỗi thứ nhất lớn hơn chuỗi thứ 2.

Cú pháp:

strcmp( $str1, $str2);

Trong đó:

$str1, $str2 là hai chuỗi cần so sánh.

Ví dụ:

<!DOCTYPE html>
<html>
<body>

<?php
echo strcmp("Hello world!","Hello world!");
?>

<p>If this function returns 0, the two strings are equal.</p>

</body>
</html>

Kết quả:

0
If this function returns 0, the two strings are equal.

2.7 Thay thế chuỗi trong PHP

Cú pháp:

str_replace($search, $replace, $subject);

$search là kí tự, chuỗi kí tự hoặc mảng các chuỗi ký tự cần tìm kiếm để thay thế.

$replace là kí tự, chuỗi kí tự hoặc mảng các chuỗi ký để thay thế cho kí tự, chuỗi kí tự hoặc mảng các chuỗi ký $sreach.

$subject là chuỗi ký tự hoặc mảng các chuỗi ký tự gốc cần được chỉnh sửa.

Hàm str_replace() sẽ thay thế tất cả các ký tự $strSearch nằm trong $subject bằng ký tự $strReplace.

Ví Dụ:

<!DOCTYPE html>
<html>
<body>

<p>Search the string "Hello World!", find the value "world" and replace it with "Peter":</p>

<?php
echo str_replace("world","Peter","Hello world!");
?>

</body>
</html>

Kết quả:

Search the string "Hello World!", find the value "world" and replace it with "Peter":

Hello Peter!

 

 

The post Chuỗi Trong PHP first appeared on Techacademy.

source https://techacademy.edu.vn/chuoi-trong-php/

Biến Trong PHP

Khái niệm về biến trong PHP là kiến thức nền tảng trong lập trình PHP mà hầu như lập trình viên nào cũng phải học đầu tiên. Trong bài này chúng ta sẽ đi tìm hiểu khái niệm thế nào là biến.

I. Biến trong php để làm gì

Bạn còn nhớ môn Đại Số ở Trường Không ?

Dạng như , x = 1 , y = 2 , z =3
Bạn còn nhớ với mỗi từ ta có thể gán 1 giá trị (vd : x = 2 , y = 123 , z = 52 v.v ) và bạn sẽ dùng mấy thông tin đó để tính 1 giá trị nào đó của d chẳng hạn .

Tất cả những cái trên được gọi là Biến PHP , và biến được dùng để giữ 1 giá trị nhất định (x=2) hoặc là các bài toán như ( d = a+b+c ) trong đó a,b,c là các hằng số có giá trị bất kỳ ( vd : a = 1 , b = 2 , c = 3 thì d = a + b + c = 6 )

Ví dụ:

<!DOCTYPE html>
<html>
<body>
<?php
//Đây là chú thích 1 dòng
/*
Đây là chú thích
Nhiều
Dòng
*/
?>
</body>
</html>

Biến PHP

Với đại số, các biến PHP được sử dụng để giữ các giá trị hoặc biểu thức.

Một biến có thể có một tên ngắn, như x, hoặc một cái tên dài hơn, như họ và tên chúng ta vậy.

Quy tắc cho tên biến PHP :

  • Các biến trong PHP bắt đầu với một kí hiệu $, tiếp theo là tên của biến
  • Tên biến phải bắt đầu với một ký tự hoặc ký tự gạch dưới
  • Một tên biến chỉ có thể chứa các ký tự chữ-số và gạch dưới (A-z, 0-9, và _)
  • Một tên biến không nên chứa không gian ( gọi là khoảng cách ý vd : $a b biến này là sai , $ba thế này mới đúng )
  • Tên biến là trường hợp nhạy cảm và quan trọng nên nó phân biệt cả hoa và thường (y và Y là hai biến khác nhau)
Phạm vi biến PHP
Phạm vi biến PHP

Creating (Declaring) PHP Variables

PHP không có lệnh để khai báo một biến.

Một biến được tạo ra thời điểm lần đầu tiên bạn chỉ định một giá trị cho nó: ( lúc mới bắt đầu file php )

Ví dụ về 1 biến:

$siverdragon12=”Hacker”;

Sau khi thực hiện biến trên thì biến siverdragon12 sẽ giữ giá trị là “Hacker”

Mẹo : Nếu bạn tạo một biến mà không để bất kỳ giá trị nào thì bạn nên để đặt giá trị đó là “null”

Ví Dụ :

$siverdragon12=null; 

Nào , bây giờ ta sẽ tạo ra 1 biến có chứa ký tự ( chữ từ a -> z ) và 1 biến có chứa số ( 0 -> 9 )

<?php
$txt="Hello World!";
$x=16;
?>

Chú ý : đối với chữ ( ký tự ) thì bạn phải để dấu ngoặc kép như trên , còn đối với số thì không cần .

PHP là một ngôn ngữ lỏng lẻo

Trong PHP, một biến không cần phải được khai báo trước khi thêm một giá trị cho nó.

Trong ví dụ trên, nhận thấy rằng chúng tôi không phải nói với PHP kiểu dữ liệu biến.

PHP sẽ tự động chuyển biến cho đúng kiểu dữ liệu, tùy thuộc vào giá trị của nó.

Trong một ngôn ngữ lập trình mạnh mẽ, bạn phải khai báo (xác định) các loại và tên của
biến trước khi sử dụng nó

II. Phạm Vi Biến Trong PHP

Phạm vi của một biến là một phần của kịch bản, trong đó biến có thể được tham chiếu.

PHP có bốn phạm vi biến khác nhau:

  • local
  • global
  • static
  • parameter

2.1 Biến Local

Một biến khai báo trong một hàm PHP là địa phương và chỉ có thể được truy cập trong phạm vi chức năng đó. (Biến có phạm vi local): Ví dụ .

<?php
$a = 5; // phạm vi local
function myTest()
{
    echo $a; // phạm vi local
    
}
myTest();
?>

Các kịch bản trên sẽ không sản xuất bất kỳ sản lượng vì echo tuyên bố đề cập đến biến phạm vi địa phương biến $a, mà đã không được chỉ định một giá trị trong phạm vi này.

Bạn có thể có các biến địa phương có cùng tên trong các chức năng khác nhau, bởi vì các biến địa phương chỉ được công nhận bởi các chức năng mà chúng được khai báo.

Các biến địa phương sẽ bị xóa ngay sau khi chức năng, nhiệm vụ được hoàn thành.

2.2 Biến Global

Phạm vi toàn cầu đề cập đến bất kỳ biến được định nghĩa bên ngoài của bất kỳ chức năng.

Biến toàn cầu có thể được truy cập từ bất kỳ một phần của kịch bản đó không phải là bên trong một hàm.

Để truy cập vào một biến toàn cầu từ bên trong một chức năng, sử dụng global từ khóa:

Ví dụ :

<?php
$a = 5;
$b = 10;
function myTest()
{
    global $a, $b;
    $b = $a + $b;
}
myTest();
echo $b;
?>

PHP cũng lưu trữ tất cả các biến toàn cầu trong một mảng gọi là $ GLOBALS [ index ]. Chỉ số của nó là tên của biến. Mảng này cũng có thể truy cập từ bên trong chức năng và có thể được sử dụng để cập nhật các biến toàn cầu trực tiếp.

Ví dụ trên có thể được viết lại như thế này:

<?php
$a = 5;
$b = 10;
function myTest()
{
    $GLOBALS['b'] = $GLOBALS['a'] + $GLOBALS['b'];
}
myTest();
echo $b;
?>

2.3 Biến Static

Khi một hàm được hoàn thành, tất cả các biến của nó thường bị xóa. Tuy nhiên, đôi khi bạn muốn biến địa phương để không bị xóa.

Để làm điều này, sử dụng các từ khóa tĩnh khi lần đầu tiên bạn khai báo các biến:

static $rememberMe; 

Sau đó, mỗi khi hàm được gọi, biến đó vẫn sẽ có những thông tin nó có từ thời gian qua các chức năng được gọi.

Lưu ý: biến vẫn là local đến chức năng.

2.4 Parameters

Một tham số là một biến địa phương có giá trị được truyền cho hàm mã gọi.

Các thông số được khai báo trong danh sách tham số như là một phần của việc kê khai hàm functions:

Function myTest($para1,$para2,...)
{
// function code
} 

Các thông số còn được gọi là đối số. Chúng tôi sẽ thảo luận chi tiết hơn khi chúng ta nói về các chức năng.

The post Biến Trong PHP first appeared on Techacademy.

source https://techacademy.edu.vn/bien-php/

Vòng Lặp Trong C

Khi tiến hành lập trình có thể bạn sẽ gặp phải tình huống đó là một khối mã cần được thực thi nhiều lần, khi đó các câu lệnh được thực thi tuần tự: Câu lệnh đầu tiên trong một hàm được thực hiện trước tiên, tiếp theo là câu lệnh thứ hai và tiếp tục như vậy. Vòng lặp trong C nhằm cung cấp các loại vòng lặp sau đây để xử lý các yêu cầu lặp:

vòng lặp trong c
vòng lặp trong c
  • Vòng lập while trong C
  • Vòng lặp for
  • Vòng lặp do…while
  • Vòng lặp nested

Một câu lệnh vòng lặp cho phép chúng ta thực hiện một câu lệnh hoặc một nhóm các câu lệnh nhiều lần. Dưới đây là hình thức chung của một vòng lặp trong hầu hết các ngôn ngữ lập trình:

vòng lặp trong c (2)
vòng lặp trong c (2)

1. Vòng Lặp While Trong C

Vòng lặp while thường được sử dụng để lặp đi lặp lại một khối lệnh không biết trước số lần lặp. Dưới đây là cú pháp của vòng lặp while:

while(condition) {

statement(s);

}

Ở đây, (các) câu lệnh có thể là một câu lệnh đơn hoặc một khối câu lệnh. Điều kiện có thể là bất kỳ biểu thức nào và là bất kỳ giá trị nào khác. Vòng lặp lại khi điều kiện là đúng. Khi điều kiện sai, chương trình sẽ thoát khỏi vòng lặp và chuyển đến dòng ngay sau vòng lặp.

Bài tập thực hành:

In ra các số lẻ <= 10

Lời Giải:

#include <stdio.h>
 
int main(){
    /*
        In ra các số lẻ <= 10.
     */
 
    int number = 1;
    while (number <= 10){
        if(number % 2 == 1){
            printf("%d\t", number);
        }
        number++;
    }
}

Kết Quả:

PS G:\c_cources\day_19> g++ .\WhileLoop.cpp -o .\WhileLoop
PS G:\c_cources\day_19> .\WhileLoop.exe
1       3       5       7       9

 

2. Vòng Lặp For Trong C

Vòng lặp For là một cấu trúc điều khiển lặp lại cho phép bạn viết một cách hiệu quả một vòng lặp mà cần phải thực hiện một số cụ thể.

Cú pháp của vòng lặp for trong ngôn ngữ lập trình C là:

for ( init; condition; increment ) {

statement(s);

}
  • Bước init được thực thi đầu tiên, và chỉ một lần. Bước này cho phép bạn khai báo và khởi tạo bất kỳ biến điều khiển vòng lặp nào.
  • Tiếp theo, điều kiện được đánh giá. Nếu nó là đúng, phần thân của vòng lặp được thực thi. Nếu nó sai, phần thân của vòng lặp không thực thi và luồng điều khiển nhảy đến câu lệnh kế tiếp ngay sau vòng lặp for.
  • Sau khi vòng lặp for thực hiện, luồng điều khiển nhảy ngược lại câu lệnh tăng dần. Câu lệnh này cho phép bạn cập nhật bất kỳ biến điều khiển vòng lặp nào. Câu lệnh này có thể để trống, miễn là dấu chấm phẩy xuất hiện sau điều kiện.
  • Điều kiện hiện được đánh giá lại. Nếu nó là true, vòng lặp thực hiện và quá trình lặp lại chính nó và nếu điều kiện sai, vòng lặp for chấm dứt.

Vòng lặp For là thường được sử dụng trong khóa học lập trình C

Bài Tập:

In ra 3 dòng chữ “Hoc C ba dao tai Lap trinh khong kho!”

Lời Giải:

/*
    In ra 3 dòng chữ "Hoc C ba dao tai Lap trinh khong kho!"
 */
 
 
#include <stdio.h>
 
int main(){
    for(int i = 0; i < 3; i++){
        printf("Hoc C ba dao tai Lap trinh khong kho!\n");
    }
    // Continue ...
    printf("Ket thuc vong lap!\n");
}
 
/*
    Giải thích:
    B1. Gán biến lặp i = 0
    B2. Kiểm tra điều kiện (i = 0) < 3 => Đúng
    B3. Do kiểm tra điều kiện đúng => Thực hiện thân vòng lặp for
    B4. Gọi tới (i++) => tăng i lên 1 đơn vị => i = 1
    B5. Kiểm tra điều kiện (i = 1) < 3 => Đúng
    B6. Do kiểm tra điều kiện đúng => Thực hiện thân vòng lặp for
    B7. Gọi tới (i++) => tăng i lên 1 đơn vị => i = 2
    B8. Kiểm tra điều kiện (i = 2) < 3 => Đúng
    B9. Do kiểm tra điều kiện đúng => Thực hiện thân vòng lặp for
    B10. Gọi tới (i++) => tăng i lên 1 đơn vị => i = 3
    B11. Kiểm tra điều kiện (i = 3) < 3 => Sai => Kết thúc vòng lặp
 */

Kết Quả:

Hoc C ba dao tai Lap trinh khong kho!
Hoc C ba dao tai Lap trinh khong kho!
Hoc C ba dao tai Lap trinh khong kho!
Ket thuc vong lap!

3. Vòng Lặp Do While

Không giống như vòng lặp for và while tiến hành kiểm tra điều kiện lặp ở đầu vòng lặp, do … while trong lập trình C kiểm tra điều kiện ở dưới cùng của vòng lặp.

Vòng lặp do … while tương tự như một vòng lặp while, tuy nhiên do … while luôn được thực hiện ít nhất một lần.

Cú pháp của vòng lặp do … while trong ngôn ngữ lập trình C là:

do {

statement(s);

} while( condition );

 

Lưu ý rằng biểu thức điều kiện xuất hiện ở cuối vòng lặp, do đó (các) câu lệnh trong vòng lặp thực hiện một lần trước khi điều kiện được kiểm tra.

Nếu điều kiện là đúng, luồng điều khiển nhảy trở lại để làm, và (các) câu lệnh trong vòng lặp thực hiện lại. Quá trình này lặp lại cho đến khi điều kiện đã cho trở thành sai.

Ví Dụ:

#include <stdio.h>
  
int main () {
    int a = 10;
 
    do {
        printf("Gia tri cua a: %d\n", a);
        a++;
    } while( a < 20 );
  
    return 0;
}

Kết Quả:

Gia tri cua a: 10
Gia tri cua a: 11
Gia tri cua a: 12
Gia tri cua a: 13
Gia tri cua a: 14
Gia tri cua a: 15
Gia tri cua a: 16
Gia tri cua a: 17
Gia tri cua a: 18
Gia tri cua a: 19

 

4. Vòng lặp nested

Lập trình C cho phép sử dụng vòng lặp nested (vòng lặp bên trong vòng lặp khác). Phần sau đây cho thấy một vài ví dụ để minh họa:

  • Cú pháp cho câu lệnh vòng lặp nested với vòng lặp for trong C như sau:

f

or ( init; condition; increment ) {

for ( init; condition; increment ) {

statement(s);

}

statement(s);

}

 

  • Cú pháp cho câu lệnh vòng lặp nested với vòng lặp while trong ngôn ngữ lập trình C như sau:
while(condition) {

while(condition) {

statement(s);

}

statement(s);

}

 

  • Cú pháp cho câu lệnh lồng nhau do … while trong ngôn ngữ lập trình C như sau:
do {

statement(s);

do {

statement(s);

}while( condition );

}while( condition );

 

Lưu ý cuối cùng về việc lồng vòng lặp là bạn có thể đặt bất kỳ loại vòng lặp nào bên trong loại vòng lặp khác.

5. Câu lệnh điều khiển vòng lặp

C hỗ trợ các câu lệnh điều khiển sau:

  • Chấm dứt vòng lặp hoặc switch tuyên bố và chuyển thực hiện để báo cáo kết quả ngay sau khi vòng lặp hoặc switch.
  • Làm cho vòng lặp bỏ qua phần còn lại của chương trình và ngay lập tức kiểm tra lại tình trạng của nó trước khi lặp lại.
  • Chuyển quyền kiểm soát vào câu lệnh được dán nhãn.

6. Vòng lặp vô hạn

Một vòng lặp trở thành một vòng lặp vô hạn nếu một điều kiện không bao giờ trở thành sai. Các vòng lặp theo truyền thống được sử dụng cho mục đích này, vì không có biểu thức nào trong số ba biểu thức tạo thành vòng lặp for là bắt buộc, bạn có thể tạo vòng lặp vô tận bằng cách để trống biểu thức điều kiện.

#include

int main () {

for( ; ; ) {

printf("This loop will run forever.\n");

}

return 0;

}

Khi biểu thức điều kiện để trống, nó được giả định là đúng. Bạn có thể có một biểu thức khởi tạo và gia tăng, nhưng các lập trình viên C thường sử dụng cấu trúc for (;;) để biểu thị một vòng lặp vô hạn. Bạn có thể chấm dứt vòng lặp vô hạn bằng cách nhấn các phím Ctrl + C.

7. Một số bài tập về vòng lặp trong C

Bài 1:

Viết chương trình nhập số nguyên dương n. Tính S(n)= 1 + (1+2)/2! + (1+2+3)/3! + … + (1+2+3+…+n)/n! (n>0)

Lời giải:

// Tính S(n)= 1 + (1+2)/2! + (1+2+3)/3! + ... + (1+2+3+..+n)/n! (n>0)

===========================================================================


#include <iostream>
using namespace std;

int Nhap()
{
   int x;
   do
   {
      cin >> x;
      if (x < 0)
         cout << "Nhap sai, yeu cau nhap lai!";
   } while (x < 0);
   return x;
}

double Tinh(int n)
{
   float s = 0, t = 0;
   long p = 1;
   for (int i = 1; i <= n; i++)
   {
      t = t + i;
      p = p * i;
      s = s + (double)t / p;
   }
   return s;
}

int main()
{
   int n; 

   cout << "Nhap so nguyen n: ";
   n = Nhap();
   cout << "Ket qua la: "<< Tinh(n) << endl;

   return 0;
}

Bài 2:

Viết chương trình nhập số nguyên dương n. Tính S(n) = 1-2+3-4+5+…+((-1)^(n+1))*n (n>0)

Ví dụ:

Input: 5

Output: 3

Lời Giải:

// Tinh P(n) = 1-2+3-4+5+...+((-1)^(n+1))*n (n>0)

===========================================================================


#include <iostream>
using namespace std;

int Nhap()
{
   int x;
   do
   {
      cin >> x;
      if (x < 0)
         cout << "Nhap sai, yeu cau nhap lai!";
   } while (x < 0);
   return x;
}

long Tinh(int n)
{
   long p = 0;
long tmp = 1;
   for (int i = 1; i <= n; i++)
{
      p += tmp*i;
      tmp *= -1;
}
   return p;
}

int main()
{
   int n; 

   cout << "Nhap so nguyen n: ";
   n = Nhap();
   cout << "Ket qua la: "<< Tinh(n) << endl;

   return 0;
}

 

The post Vòng Lặp Trong C first appeared on Techacademy.

source https://techacademy.edu.vn/vong-lap-trong-c/