Tag: print()

  • Bài 1. Cấu trúc một chương trình Flutter/Dart

    Bài 1. Cấu trúc một chương trình Flutter/Dart

    Cấu trúc một chương trình Flutter/Dart

    Để lập trình được bằng Flutter thì điều quan trọng là trước tiên bạn phải thành thạo Dart. Bởi xét cho cùng thì Flutter chỉ là một bộ công cụ (toolkit) sử dụng ngôn ngữ Dart để phát triển các ứng dụng đa nền tảng (cross platform).

    Dart là ngôn ngữ lập trình được tối ưu hóa cho ứng dụng khách (client-optimized) để phát triển một cách nhanh chóng các ứng dụng trên mọi nền tảng (Android, iOS, Web và Desktop). Mục tiêu của nó là cung cấp ngôn ngữ lập trình hiệu quả nhất để phát triển đa nền tảng, kết hợp với nền tảng thời gian chạy thực thi linh hoạt cho các khung ứng dụng.

    Xem thêm: Cài đặt Flutter với Visual Studio Code

    1. Cấu trúc chung của một chương trình Flutter/Dart

    Một chương trình viết bằng Dart ít nhất phải có một hàm main(), như ví dụ dưới đây.

    main() {
      print("Hello World!");
    }

    Chương trình trên có sử dụng hàm print() – là một hàm được xây dựng sẵn của Dart, có chức năng in xâu nằm trong cặp ngoặc đơn ra ngoài màn hình. Kết quả thu được là dòng chữ Hello World! được in ra trên màn hình Console.

    Hàm main() là một hàm đặc biệt, nó báo cho trình biên dịch Dart biết điểm bắt đầu để thực hiện chương trình. Hàm main() có thể được đặt ở vị trí đầu tiên hoặc cuối cùng của tệp mã nguồn Dart, nhưng khi thực thi nó sẽ được tìm và thực thi đầu tiên.

    Ngoài ra thì một chương trình viết bằng Dart còn có các biến, các hàm, các câu chú thích, các câu lệnh điều khiển luồng, các lớp, các thư viện… Ví dụ sau là chương trình tính toán và in ra số Fibonacci thứ 20.

    void main() {
      var i = 20;
      print(fibonacci(i));
    }
    
    int fibonacci(int n) {
      if (n < 2) {
        return n;
      } else {
        return fibonacci(n - 1) + fibonacci(n - 2);
      }
    }

    Các quy ước của chương trình sử dụng ngôn ngữ Dart:

    • Dart có phân biệt chữ HOA và chữ thường
    • Cú pháp của Dart gần giống với Java, JavaScript, Python, C#
    • Mỗi câu lệnh của Dart kết thúc bằng dấu chấm phảy ;
    • Khác với Python, các lệnh trong Dart được viết mà các thành phần không bị ảnh hưởng bởi khoảng trắng
    • Một khối lệnh (nhiều câu lệnh, câu lệnh hợp thành) được bao trong cặp ngoặc móc { }
    • Chú thích trên một dòng được viết sau 2 dấu gạch chéo //
    • Chú thích trên nhiều dòng được đặt trong cặp dấu /**/
    • Là ngôn ngữ lập trình hướng đối tượng, mọi thứ trong Dart đều là đối tượng (object)
    • Dart không có từ khóa public, private, protected khi khai báo phương thức, thuộc tính lớp. Nếu thuộc tính, tên lớp bắt đầu bằng _ thì hiểu đó là private
    • Các định danh (tên biến, tên hàm, tên lớp …) bắt đầu bằng chữ (a-z A-Z) hoặc _, theo sau là chuỗi chữ có thể kế hợp với số

    Các từ khóa của Dart (Keywords in Dart)

    keywords in dart

    abstract 2 else import 2 super
    as 2 enum in switch
    assert export 2 interface 2 sync 1
    async 1 extends is this
    await 3 extension 2 library 2 throw
    break external 2 mixin 2 true
    case factory 2 new try
    catch false null typedef 2
    class final on 1 var
    const finally operator 2 void
    continue for part 2 while
    covariant 2 Function 2 rethrow with
    default get 2 return yield 3
    deferred 2 hide 1 set 2
    do if show 1
    dynamic 2 implements 2 static 2
    • Các từ có chỉ số trên 1 là các từ khóa theo ngữ cảnh , chỉ có nghĩa ở những nơi cụ thể. Chúng là số nhận dạng hợp lệ ở mọi nơi.
    • Các từ có chỉ số trên 2 là số nhận dạng được tích hợp sẵn . Để đơn giản hóa nhiệm vụ chuyển mã JavaScript sang Dart, các từ khóa này là số nhận dạng hợp lệ ở hầu hết các vị trí, nhưng chúng không thể được sử dụng làm tên lớp hoặc tên loại hoặc làm tiền tố nhập.
    • Các từ có chỉ số trên 3 là các từ dành riêng hạn chế liên quan đến hỗ trợ không đồng bộ . Bạn không thể sử dụng awaithoặc yieldnhư một định danh trong bất kỳ cơ quan chức năng đánh dấu asyncasync*hoặc sync*.

    Tất cả các từ khác trong bảng là các từ dành riêng , không thể là số nhận dạng.

    2. Cách chạy chương trình Flutter/Dart trên Windows

    Dưới đây, O2 Education xin giới thiệu cách chạy một chương trình viết bằng ngôn ngữ Dart trên Windows.

    2.1. Chạy chương trình Dart online

    Cách dễ dàng nhất để học lập trình Dart (và từ đó là lập trình Flutter) là sử dụng các trình biên dịch Dart online. Có rất nhiều website cung cấp dịch vụ này, nhưng đơn giản nhất là DartPad

    1. Bạn truy cập DartPad tại địa chỉ https://dartpad.dev
    2. Gõ mã code vào khung bên trái và bấm nút RUN (hoặc gõ tổ hợp phím tắt Ctrl + Enter), kết quả thực thi sẽ hiện ở khung bên phải.
    3. Khung phía dưới bên phải là phần tài liệu (giải thích, cách sử dụng…) cho các hàm, thủ tục của ngôn ngữ lập trình Dart.
    4. Ở phía trên bên phải của thanh công cụ là menu Samples gồm các ví dụ Dart mẫu để bạn tham khảo.

    cách chạy biên dịch chương trình dart online

    Các phím tắt của DartPad

    • Run (Chạy chương trình): Ctrl+Enter
    • Documentation (Hiển thị tài liệu/trợ giúp): F1
    • Quick fix (Tự động sửa nhanh): Alt+Enter
    • Completion (Tự động hoàn thiện lệnh – gợi ý hoàn thiện câu lệnh): Ctrl+Space
    • Format (Định dạng lại code cho đúng chuẩn): Shift+Ctrl+F

    cac phim tat cua dartpad

    2.2. Chạy chương trình Dart với Visual Code

    Khi bạn cài đặt phần mở rộng (extentions) Flutter trong VS Code thì phần mở rộng Dart cũng được mặc định cài luôn (như trong hình vẽ của tôi có cài đặt các gói mở rộng là Dart, Flutter, Jupyter và Python).

    cau truc chuong trinh dart

    Sau khi cài đặt thành công, để tạo mới và chạy một chương trình Dart trong VS Code bạn thực hiện các bước sau:

    • Bấm tổ hợp phím tắt Ctrl + Shift + P và gõ Dart để tìm lệnh Dart: New Project để tạo mới một dự án viết bằng Dart.
    • Lựa chọn tiếp Console Application để tạo chương trình Dart với giao diện dòng lệnh (console)

    tao moi du an dart trong vs code

    • Chọn tiếp thư mục để lưu dự án Dart và đặt tên cho chương trình. Ở đây tôi lưu tên dự án là heloo và lưu ở Desktop. Lúc này VS Code sẽ tạo sẵn cho chúng ta các thư mục và file mặc định như hình sau:

    chuong trinh dart trong vs code

    • Để chạy chương trình Dart này, chúng ta bấm vào chữ Run, để gỡ lỗi chương trình chúng ta bấm vào Debug hoặc các nút hình tam giác ở góc trên bên phải. Kết quả thực thi chương trình được hiện ở khung phía dưới.

    cach chay chuong trinh dart trong vs code

    2.3. Chạy chương trình Dart với Sublime Text

  • Bài 4. Các thủ tục vào ra dữ liệu cơ bản trong Python

    Bài 4. Các thủ tục vào ra dữ liệu cơ bản trong Python

    Các thủ tục vào ra dữ liệu Hàm print trong Python

     1. Hàm print()

    • Để in một xâu string ra màn hình ta dùng hàm print()chẳng hạn:
    >>> print('Toi la Phu Ong')
    Toi la Phu Ong
    • Hàm print() có các tham số sau

    print(value, sep, end, file, flush)

    Trong đó, value là giá trị sẽ được in ra màn hình, giá trị này phải là một xâu kí tự, hoặc chỉ được là các giá trị thuộc cùng một kiểu dữ liệu, nếu có nhiều giá trị thì cách nhau bởi dấu phảy; sep là kí tự ngăn cách giữa các giá trị, end là kí tự khi kết thúc câu lệnh print().

    • Để in nhiều xâu cùng lúc ta có thể sử dụng các toán tử trên xâu. Ở đây xin giới thiệu qua một số cách, chi tiết xin xem chương dữ liệu kiểu xâu.
    • Chẳng hạn ta muốn in ra màn hình nội dung của xâu chứa trong biến temp và xâu Tên tôi là
    >>> temp = 'Phu Ong'
    >>> print("Tên tôi là", temp)
    Tên tôi là Phu Ong
    • Hoặc có thể sử dụng phép nối xâu để in
    >>> temp = 'Phu Ong'
    >>> print("Tên tôi là" + temp)
    Tên tôi làPhu Ong
    • Tuy nhiên, nếu sử dụng phép nối xâu, ta thấy kết quả thu được sẽ không có dấu cách giữa các đối số của hàm print() như cách trước nữa.
    • Phép in nội suy xâu
    >>> print("Ten toi la %s va toi nang %d kg!" % ('Phu Ong', 51))

    Bản chất của câu lệnh trên là ta đã sử dụng các phép toán định dạng xâu, có thể viết như sau cũng thu được cùng một kết quả.

    >>> temp = "Ten toi la %s va toi nang %d kg!" % ('Phu Ong', 51)
    >>> print(temp)

    Hoặc sử dụng kiểu mới để định dạng xâu:

    print("Ten toi la {} va toi nang {} kg".format('Phu Ong', 51))

    2. Hàm input()

    • Để nhập dữ liệu trực tiếp từ bàn phím vào chương trình ta dùng hàm input(). Kiểu dữ liệu mặc định chương trình nhận vào sẽ là kiểu xâu.
    >>> x = input('Ban ten gi? ')
    Ban ten gi? Phuong
    >>> print(x)
    Phuong
    • Để nhập vào một số nguyên hoặc số thực, hoặc một kiểu có cấu trúc phức tạp hơn, thì ta làm thế nào? Chúng ta phải sử dụng các hàm chuyển đổi kiểu của Python. Chẳng hạn để nhập vào một số nguyên, ta dùng hàm int() để chuyển sang kiểu số nguyên, dùng hàm float() để chuyển sang kiểu số thực. Ví dụ
    >>> a=input('Xin moi nhap mot so: ')
    Xin moi nhap mot so: 13
    >>> a*2
    '1313'
    >>> a = int(input('Xin moi nhap mot so: '))
    Xin moi nhap mot so: 13
    >>> a*2
    26
    • hoặc nhập vào một số thực
    >>> a = float(input('Xin moi nhap mot so: '))
    Xin moi nhap mot so: 1.3
    >>> a*2
    2.6
    • Đối với các kiểu dữ liệu phức tạp hơn, ta phải sử dụng thêm các hàm để xử lý xâu kí tự nhập vào.
    • Để nhập một vào nhiều giá trị cùng một lần, các giá trị cách nhau bởi dấu phẩy hoặc một kí tự bất kì, ta dùng vẫn hàm input() nhưng phải sử dụng thêm phương thức split() của kiểu xâu. Ví dụ, nhập vào hai số nguyên a, b cách nhau bởi dấu phẩy.
    >>> a, b = input("Xin moi nhap vao hai so:").split(',')

    hoặc cách nhau bởi dấu cách trắng

    >>> a, b = input("Xin moi nhap vao hai so:").split(' ')

    dĩ nhiên, sau đó ta muốn sử dụng a, b như là các số nguyên thì phải chuyển đổi từ kiểu xâu này sang kiểu số nguyên, vì mặc định nhập vào luôn là kiểu xâu.

    • Để nhập vào một danh sách list, ta nhập vào một xâu, sau đó chuyển xâu đó sang danh sách bằng cách tách rời các phần tử. Ví dụ, người dùng nhập vào một dãy các số nguyên, cách nhau bởi dấu cách trắng, và chúng ta phải chuyển thành một list.
    >>> a = [int(x) for x in input().split()]
    3 4 5
    >>> a
    [3, 4, 5]

    nếu cách nhau bởi dấu phẩy

    >>> a = [int(x) for x in input().split(',')]
    3,4,5
    >>> a
    [3, 4, 5]

    Ở cách này, chúng ta phải sử dụng thêm vòng lặp for, bạn có thể xem chi tiết ở chương sau. Hoặc có thể sử dụng hàm map() để ánh xạ mỗi giá trị với một phần tử của danh sách.

    >>> s = input()
    1 2 3 4 5
    >>> numbers = list(map(int, s.split()))
    >>> numbers
    [1, 2, 3, 4, 5]

    Bài tập

    Bài 1. Viết chương trình nhập vào một số nguyên n và in ta màn hình giá trị bình phương của số đó.

    Bài 2. Viết chương trình nhập vào bán kính r của đường tròn, là một số thực, và in ra diện tích của hình tròn đó.