Bạn đang xem bài viết Hướng Dẫn Lập Trình Swift Cho Người Mới Bắt Đầu được cập nhật mới nhất tháng 9 năm 2023 trên website Englishhouse.edu.vn. Hy vọng những thông tin mà chúng tôi đã chia sẻ là hữu ích với bạn. Nếu nội dung hay, ý nghĩa bạn hãy chia sẻ với bạn bè của mình và luôn theo dõi, ủng hộ chúng tôi để cập nhật những thông tin mới nhất.
1- Giới thiệuĐây là tài liệu hướng dẫn Swift cho người mới bắt đầu. Để lập trình Swift bạn phải cài đặt công cụ lập trình XCode. Bạn có thể xem hướng dẫn download và cài đặt tại:
Đây là một tài liệu học nhanh, nếu bạn mới bắt đầu với Swift, cách hướng dẫn là “Từng bước từng bước” vì vậy bạn nên đọc và thực hành lần lượt từ trên xuống, tài liệu này sẽ giúp bạn có cái nhìn tổng quan trước khi đi vào các tài liệu chi tiết khác.
Đây là hình ảnh đầu tiên khi bạn mở XCode
Chúng ta tạo một Project đơn giản (Ứng dụng Console, là ứng dụng không có giao diện).
Đặt tên cho project là SwiftBasics:
Tạo một thư mục tại Desktop để chứa các Project của bạn.
Đặt tên thư mục sẽ chứa các project của bạn là SwiftTutorials:
Project của bạn đã được tạo ra.
main.swift là một file nguồn đã được tạo ra khi bạn tạo project, bạn cần chạy file nguồn này, nó sẽ ghi ra màn hình Console dòng chữ “Hello, world”.
Nhấn “Enable” để cho phép chương trình chạy ở chế độ dành cho người lập trình.
Chương trình chạy và in ra dòng chữ “Hello, world”.
Bạn cần có một cái nhìn cơ bản về Swift, điều này rất quan trọng.
Top level là gì?
Một dòng lệnh hoặc biểu thức không nằm trong một hàm, khối lệnh hoặc một class nghĩa là nó nằm ở Top-Level.
Top-Level là nơi khai báo sử dụng các thư viện, khai báo biến, hằng số, hàm, lớp. Theo mặc định các biến và hằng số được khai báo ở mức Top-Level của file nguồn này có thể được sử dụng trong các file nguồn khác trong cùng một module (project).
Bạn không thể viết một biểu thức ở Top-Level, chẳng hạn một biểu thức để gọi hàm. Vì vậy gọi hàm print(“Hello”) để in ra dòng chữ “Hello” ở Top-Level là không hợp lệ, trừ khi bạn làm việc đó ở file nguồn có tên main.swift (Đây là trường hợp ngoại lệ).
Điểm bắt đầu của chương trình Swift:
Trong một chương trình Swift file main.swift là một file đặc biệt, vì nó chính là điểm bắt đầu để chạy chương trình. Bạn có thể gọi hàm hoặc viết biểu thức ở Top-Level trên file nguồn main.swift, đó là một ngoại lệ dành riêng cho file này.
Tôi tạo ra một file nguồn mới có tên newfile.swift, bạn sẽ thấy một thông báo lỗi khi tôi cố tình viết một biểu thức ở Top-Level.
Các biểu thức cần được đặt trong một hàm hoặc khối lệnh.
Bây giờ bạn cần tạo một file nguồn đầu tiên của bạn, và chạy được nó.
Trên XCode, nhấn phải chuột vào thư mục chứa file nguồn main.swift, chọn “New file”.
Nhập vào tên file MyFirstSwift:
MyFirstSwift.swift đã được tạo ra:
Tôi sửa nội dung của file nguồn vừa được tạo ra, và thêm vào một hàm sayHello(), chú ý chi tiết về hàm sẽ được đề cập ở một phần khác.
import Foundation var message = "Hello every body" func sayHello() { print(message) }Trong Swift điểm bắt đầu để chạy ứng dụng chính là main.swift, vì vậy để test hàm sayHello() bạn cần phải gọi trong main.swift. Sửa code của main.swift:
import Foundation print("Hello, World!") sayHello() Kiểu dữ liệu Độ rộng Phạm vi giá trị 6- Biến và khai báoMột biến xác định bởi một cái tên cho một khu vực lưu trữ dữ liệu mà chương trình của bạn có thể thao tác. Mỗi biến trong Swift có một kiểu dữ liệu cụ thể, trong đó xác định kích thước và phạm vi giá trị có thể được lưu trữ trong bộ nhớ, và tập hợp các toán tử có thể áp dụng cho biến.
Biến có thể thay đổi giá trị trong quá trình tồn tại của nó trong chương trình. Các biến có giá trị cố định được gọi là các hằng số. Sử dụng từ khóa let để khai báo một biến là hằng số.
Trong swift, bạn có thể khai báo một biến ở Top-Level hoặc là một biến địa phương nằm trong một class hoặc hàm. Với các biến được khai báo ở Top-Level nó có thể được sử dụng tại các file nguồn khác trong cùng một module (Project).
var year: Int = 2023; .. var languageName = "Swift" var version = 1.0 var introduced = 2014 var isAwesome = true import Foundation let COPYRIGH: String = "o7planning" var year: Int = 2023 func variableExample() { let MAX_SCORE = 100; var score = 90; var studentName = "Tom" print("Hi (studentName)") print("Your score: (score)/(MAX_SCORE)") print("Assign new value for studentName") studentName = "Jerry" print("Hi (studentName)") }Sửa code của file nguồn main.swift:
import Foundation variableExample()Các toán tử so sánh thông dụng:
if ( condition ) { } if ( 5 < 10 ) { print( "Five is now less than ten"); } if ( true ) { print( "Do something here"); }Cấu trúc đầy đủ của if – else if – else:
... if (condition1 ) { } else if(condition2 ) { } else if(conditionN ) { } else { } 7.2- Câu lệnh Switch-CaseMột số ví dụ sử dụng switch:
Bạn có thể gộp nhiều giá trị vào trong một trường hợp (case):
Fallthrought:
Nếu bạn đã làm việc với các ngôn ngữ khác như Java, C# bạn có thể nhận thấy cú pháp sử dụng switch có sự khác biệt so với Swift. Trong Swift mỗi khi một trường hợp (case) đúng, khối lệnh của trường hợp (case) này sẽ được thực thi, và các trường hợp khác không được chạy.
Với Java, C# khi một trường hợp đúng khối lệnh của trường hợp đó được chạy, và nếu không có lệnh break thì khối lệnh case (hoặc default) tiếp theo sẽ được thực thi.
Swift đã tự động break sau khi nó thực thi xong một khối lệnh case.
Swift thêm vào lệnh fallthrought (Lệnh này không có trong Java, C#), fallthrought nói với chương trình rằng tiếp tục thực thi khối lệnh case (hoặc khối lệnh default) kế tiếp.
Hãy xem một ví dụ minh họa:
8- Vòng lặp trong SwiftVòng lặp được sử dụng để chạy lặp lại một khối lệnh. Nó làm chương trình của bạn thực thi lặp đi lặp lại một khối lệnh nhiều lần, đây là một trong các nhiệm vụ cơ bản trong lập trình.
Swift hỗ trợ 4 loại vòng lặp khác nhau:
FOR .. IN
FOR
WHILE
REPEAT WHILE
8.1- Vòng lặp for inVòng lặp for .. in dùng để duyệt trên một tập hợp, hoặc một mảng.
} 8.2- Vòng lặp forCấu trúc của vòng lặp FOR:
for (initialize variable ; condition ; updates new value for variable ) { } for (int x = 0; x < 5 ; x = x + 1) { } for (int x = 2; x < 15 ; x = x + 3) { } 8.3- Vòng lặp while while (condition) { } int x = 2; while ( x < 10) { ... x = x + 3; } 8.4- Vòng lặp repeat-whileCú pháp của vòng lặp REPEAT-WHILE
repeat { } while (condition) 8.5- Lệnh break trong vòng lặpbreak là một lệnh nó có thể nằm trong một khối lệnh của một vòng lặp. Đây là lệnh kết thúc vòng lặp vô điều kiện.
8.6- Lệnh continue trong vòng lặpcontinue là một lệnh, nó có thể nằm trong một vòng lặp, khi bắt gặp lệnh continue chương trình sẽ bỏ qua các dòng lệnh trong khối phía dưới của continue và bắt đầu một vòng lặp mới.
9- Mảng trong Swift 9.1- Mảng một chiềuMảng của Swift về bản chất là một Struct, nó khác với một mảng trong các ngôn ngữ khác như Java, C#,…Mảng của Java, C# có số phần tử cố định và không thể thêm hoặc bớt số phần tử, trong khi đó mảng của Swift lại làm được điều này.
Cú pháp khai báo mảng một chiều:
var years: [Int] = [ 2001, 2003, 2005, 1980, 2003 ]; var years = [ 2001, 2003, 2005, 1980, 2003 ]; var salaries:[Float] = [Float](count: 3,repeatedValue :0 ); var salaries = [Float](count: 3,repeatedValue :0 ); var emptyArray:[Int] = [Int]()Mảng của Swift là một Struct
Trong Swift, mảng bản chất là một Struct (Cấu trúc) vì vậy nó có các thuộc tính và phương thức. Bao gồm các phương thức thêm các phần tử vào mảng hoặc loại bỏ các phần tử.
var languages = ["Java","C#"] languages.append("Swift") languages += ["C/C++", "Perl"];enumerate
Phương thức enumerate() của mảng trả về đối tượng của EnumerateSequence struct. Mỗi phần tử của EnumerateSequence chứa thông tin chỉ số, và phần tử của mảng ban đầu.
Ví dụ duyệt các phần tử của một mảng:
Hướng Dẫn Lập Trình Android Cho Người Mới Bắt Đầu
1- Giới thiệu
Trong lần chạy đầu tiên, Android Studio hỏi bạn có nhập khẩu các sét đặt từ phiên bản Android Studio mà bạn có thể đã cài đặt trước đó hay không. Bạn có thể chọn NO.
Lựa chọn một Theme mà bạn thích:
Trong lần chạy đầu tiên, Android cần download một vài thành phần. Bạn cần chờ đợi cho tới khi tiến trình download và cài đặt hoàn thành.
Trước hết bạn cần tạo một Project đầu tiên, và chạy nó thành công.
Name: HelloAndroid
Package name: org.o7planning.helloandroid
Project của bạn đã được tạo ra.
4- Chạy thử ứng dụngĐảm bảo rằng bạn đã cài đặt một thiết bị ảo (Một chiếc điện thoại giả lập), nó cần thiết để triển khai ứng dụng của bạn.
Màn hình mô phỏng đã hiển thị cái điện thoại, và ghi ra dòng chữ “Hello World”.
Bạn cần phải cài đặt phần mềm quản lý tăng tốc phần cứng của Intel:
5- Tổng quan cấu trúc Project AndroidĐây là hình ảnh project của bạn trên Android Studio:
File hoặc thư mụcMô tảAndroidManifest.xml
Đây là file manifest mô tả các đặc điểm cơ bản của ứng dụng và xác định từng thành phần của nó.
java
Thư mục này có chứa các file nguồn java cho dự án của bạn. Theo mặc định, nó bao gồm một tập tin nguồn MainActivity.java một lớp hoạt động (activity) chạy khi ứng dụng của bạn được khởi động.
res/drawable
Các phiên bản Android trước đây sử dụng thư mục này để chứa ảnh, các phiên bản hiện tại sử dụng thư mục mipmap thay thế làm nơi chứa ảnh. Thư mục này gần như không còn sử dụng.
res/layout
Thư mục này chứa các file định nghĩa giao diện người dùng.
res/menu
Thư mục này chứa các file xml, định nghĩa các menu sẽ hiển thị trên Action Bar.
res/mipmap
Chứa các ảnh ‘mipmap’.
res/values
Đây là một thư mục cho các tập tin XML khác nhau có chứa một tập hợp các nguồn, chẳng hạn như các chuỗi (String) và các định nghĩa màu sắc.
AndroidManifest.xml
Dù thành phần bạn phát triển như một phần của ứng dụng của bạn, bạn phải khai báo tất cả các thành phần của nó trong một chúng tôi . Tập tin này hoạt động như một giao tiếp giữa hệ điều hành Android và ứng dụng của bạn, vì vậy nếu bạn không khai báo thành phần của bạn trong tập tin này, sau đó nó sẽ không được xem xét bởi các hệ điều hành. Ví dụ, một file manifest mặc định sẽ trông giống như file sau:
<manifest xmlns:android="http://schemas.android.com/apk/res/android" <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" <activity android:name=".MainActivity"res/mipmap
Một trong các vấn đề mà tôi thỉnh thoảng bắt gặp khi sử dụng ứng dụng Andorid là tôi thấy các ảnh mờ, nhòe, hoặc giãn không chuẩn. Các giải pháp cho vấn đề này là tạo ra một thư mục mipmap cho mỗi mật độ (density) điểm ảnh mà Android hỗ trợ, và để các hình ảnh thu nhỏ một cách chính xác. Có 6 dẫy mật độ khác nhau (đo theo số điểm ảnh trên 1 inch) mà Android hỗ trợ:
ldpi: Dành cho các màn hình độ phân giải thấp; xấp sỉ 120dpi
mdpi: Dành cho các màn hình độ phân giải trung bình (trên HVGA truyền thống) ; xấp sỉ 160dpi
hdpi: Dành cho các màn hình phân giải cao; xấp sỉ 240dpi
xhdpi: Dành cho các màn hình phân giải cao hơn nữa; xấp sỉ 320dpi. Đã được thêm vào trong API Level 8
nodpi: Cái này có thể được sử dụng cho tài nguyên bitmap mà bạn không muốn được thu nhỏ để phù hợp với mật độ thiết bị
tvdpi: Có một số màn hình độ phân giải nằm giữa mdpi và hdpi; xấp sỉ 213dpi. Nó không được coi là nhóm phân giải chính. Nó chủ yếu dành cho TV và hầu hết các ứng dụng không cần cung cấp nguồn mdpi và hdpi, hệ thống sẽ tự co giãn phù hợp. Tiêu chuẩn này được giới thiệu trong API Level 13.
6- Vòng đời của Android ActivityTrước hết Activity là gì?
Activity là một mã Java có hỗ trợ một màn hình hoặc giao diện người dùng. Nói cách khác, xây dựng khối của giao diện người dùng là một Activity.Activity là một lớp được có sẵn trong Android và tất cả các ứng dụng trong đó có giao diện người dùng phải kế thừa nó để tạo ra cửa sổ.
Một vòng đời của Activity mô tả các quá trình của một Activity kể từ khi nó bắt đầu chạy (Launched), cho tới khi ứng dụng bị tắt. Bao gồm cả quá trình Activity bị dừng tạm thời, chạy lại (resume),..
Để dễ hiểu hơn bạn có thể sửa đổi lại code của class MainActivity, ghi đè các phương thức onStart(), onResume(),… thêm vào các thông báo (message) chứng tỏ phương thức đó vừa được chạy. Sau đó chạy lại ứng dụng và theo dõi các quá trình trong vòng đời của Activity hoạt động thế nào.
package org.o7planning.helloandroid; import androidx.appcompat.app.AppCompatActivity; import android.util.Log; import android.os.Bundle; public class MainActivity extends AppCompatActivity { public static final String TAG ="MyMessage"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Log.i(TAG,"onCreate"); } @Override protected void onStop() { super.onStop(); Log.i(TAG,"onStop"); } @Override protected void onDestroy() { super.onDestroy(); Log.i(TAG,"onDestroy"); } @Override protected void onPause() { super.onPause(); Log.i(TAG,"onPause"); } @Override protected void onResume() { super.onResume(); Log.i(TAG,"onResume"); } @Override protected void onStart() { super.onStart(); Log.i(TAG,"onStart"); } @Override protected void onRestart() { super.onRestart(); Log.i(TAG,"onRestart"); } }Chạy lại ứng dụng của bạn, và bạn thấy các message được ghi ra trên cửa sổ logcat.
Filter Name: My Filter
Log Tag (regex): MyMessage
Màn hình điện thoại của bạn:
7- Ứng dụng Android đã hoạt động thế nàoBạn cần biết rằng những gì bạn nhìn thấy trên cửa sổ Project không phải là tất cả thành phần tham gia tạo nên ứng dụng của bạn. Có những thành phần được tạo ra một cách tự động bởi chương trình biên dịch. Và nó không hiển thị trên cửa sổ Project. Chẳng hạn dựa vào cấu trúc các file nguồn trong project của bạn trình biên dịch tạo ra một file nguồn R.java, file này định nghĩa ra các hằng số cho các nguồn tài nguyên trên project.
Để xem file R.java trên Android Studio, mở class MainActivity, nhấn chuột phải vào R.layout.main_activity chọn Go To/Implementation(s)
Như vậy ở đâu đó trong Project, bạn có thể sử dụng các hằng số để tham chiếu các tài nguyên trong project. Chẳng hạn R.layout.activity_main là một hằng số ám chỉ file activity_main.xml trong thư mục res/layout.
Nguyên tắc hoạt động:
Có thể lúc này bạn đang nghĩ rằng activity_main.xml là file tạo ra giao diện của ứng dụng. Điều đó đúng 50%, thực chất activity_main.xml là một file định nghĩa ra các thực thể tham gia vào giao diện của ứng dụng, và chúng sắp xếp thế nào trên màn hình. Activity sẽ đọc file này và vẽ lên giao diện ứng dụng. Như vậy bản chất giao diện của ứng dụng do Activity tạo nên.
package org.o7planning.helloandroid; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.util.Log; import android.view.Menu; import android.view.MenuItem; public class MainActivity extends AppCompatActivity { public static final String TAG ="MyMessage"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } } package org.o7planning.helloandroid; import androidx.appcompat.app.AppCompatActivity; import android.graphics.Color; import android.os.Bundle; import android.widget.Button; import android.widget.RelativeLayout; public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); RelativeLayout layout = new RelativeLayout(this); layout.setBackgroundColor(Color.GREEN); Button button = new Button(this); button.setText("My Button"); layout.addView(button); setContentView(layout); } }Android Studio phiên bản hiện tại không hỗ trợ bạn thiết kế giao diện trực quan trên Java. Nhưng nó hỗ trợ rất tốt bạn thiết kế giao diện trực quan trên file xml. Android Studio sẽ tạo ra mã XML cho bạn. Thực tế thiết kế giao diện trên XML sẽ làm ứng dụng của bạn dễ dàng bảo trì hơn.
Quay trở lại với activity_main.xml, bạn dễ dàng thiết kế giao diện ứng dụng:
Mã XML được tự động sinh ra:
Hướng Dẫn Lập Trình C Cho Người Mới Bắt Đầu
Tài liệu được viết dựa trên:
Các tài liệu hướng dẫn C/C++ trên website o7planning chúng tôi sử dụng Eclipse IDE. Bạn cần cài đặt và cấu hình Eclipse và môi trường C/C++ trước khi bắt đầu. Bạn có thể xem chỉ dẫn tại:
3- Phân biệt C và C++Bạn cần có cái nhìn tổng quát để phân biệt C và C++.
C là ngôn ngữ ra đời trước, và là ngôn ngữ hướng thủ tục, nó dễ dàng được triển khai và chạy trên các hệ điều hành. C++ ra đời sau mở rộng từ C nó mang vào khái niệm lập trình hướng đối tượng, C là nền tảng của C++, và C++ không ra đời để thay thế C, các thư viện của nó được mở rộng lên rất nhiều.
Lập trình hướng thủ tục ở đây có nghĩa là: Các file nguồn (Chứa code của bạn) sẽ chứa các hàm. Trong khi đó hướng đối tượng file nguồn chứa một class (lớp) và trong class có chứa các phương thức. Để gọi một phương thức trong một class bạn cần tạo ra một đối tượng của class và sau đó gọi hàm thông qua đối tượng này, trong khi đó với hướng thủ tục bạn có thể gọi trực tiếp.
Trong tài liệu hướng dẫn này tôi sẽ hương dẫn bạn làm việc trên C. Còn C++ sẽ được đề cập tới trong một tài liệu khác.
Nếu bạn làm việc với: Windows 64bit + Eclipse 64bit + Java64bit, bạn cần phải mở Eclipse với quyền Administrator, có một rắc rối là Eclipse không in các message ra màn hình Console trong trường hợp chạy ở chế độ thông thường.
Project đã được tạo ra, thực tế mã (code) của ví dụ HelloWorld này có mã C++. Tuy nhiên chưa cần phải quan tâm tới nó.
Biên dịch project (Compile project).
Project đã được biên dịch thành công.
Tiếp theo bạn cần phải cấu hình để có thể chạy được project trực tiếp trên Eclipse, việc này rất quan trọng.
Chạy thử ví dụ HelloWorld
OK! Mọi thứ hoạt động tốt.
Khi một chương trình C được chạy nó sẽ tìm hàm main() để thực thi, chẳng hạn thực thi hàm main() của ví dụ HelloWorld nói trên.
Một chương trình C có thể có nhiều file nguồn, mỗi file nguồn có thể nhiều hàm. Tuy nhiên chỉ cho phép duy nhất một hàm main() trên toàn bộ Project của bạn.
Trên kia bạn vừa tạo ra một file chúng tôi nó có một hàm main(), giờ bạn tạo ra một file khác để thực hành chẳng hạn chúng tôi và có hàm main() bạn cần đổi tên hàm main() của chúng tôi thành một tên khác để nó không xung đột và bạn có project thể biên dịch được, sau đó có thể thực hành những gì viết trong chúng tôi .
Theo tôi trong quá trình thực hành bạn nên chọn cách đổi tên như sau:
Tôi sẽ tạo ra một file cpp mới để minh họa và giải thích về cấu trúc của một chương trình C.
Source file: MyFirstExample.cpp
Template: Default C source temple
File nguồn đã được tạo ra, nó chẳng có gì cả.
Chúng ta sẽ viết code cho file nguồn này:
Chú ý: Hãy đổi tên hàm main của file nguồn chúng tôi thành mainCBasicTutorial vì một project của C chỉ cho phép một hàm main trên toàn bộ Project.
int main() { printf("Hello!, This is your first C example.n"); printf("Exit!"); return 0; }Có một vài chú ý: Có một số hàm trong thư viện conio.h của C đã không được hỗ trợ trong C++. Chẳng hạn như getch() – Vốn là một hàm tạm dừng chương trình chờ cho tới khi người dùng gõ một ký tự bất kỳ mới tiếp tục chạy tiếp. Vì vậy trong hướng dẫn này tôi cố gắng không sử dụng các hàm như vậy trong các ví dụ.
int main() { getch(); } 7- Kiểu dữ liệu trong C 7.1- Kiểu số nguyên Type Storage size Value range Format 7.2- Kiểu số chấm động (Floating point type) Kiểu dữ liệu Kích thước lưu trữ Tập giá trị Phần thập phân 7.3- Ví dụCác toán tử so sánh thông dụng:
if ( condition ) { } if ( 5 < 10 ) { printf( "Five is now less than ten"); } if ( true ) { printf( "Do something here"); }Cấu trúc đầy đủ của If-Else if-Else:
... if ( condition1) { } else if( condition2 ) { } else if( conditionN ) { } else { } int main_IfElseExample() { int age; printf("Please enter your age: n"); fflush (stdout); scanf("%d", &age); if (age < 80) { printf("You are pretty young"); } printf("You are old"); } else { printf("You are verry old"); } return 0; }Chương trình in ra dòng chữ “mời bạn nhập một số”, nhập vào 70 và nhấn Enter.
Bạn có thể chạy lại ví dụ và nhập vào các con số khác và xem kết quả.
Cú pháp câu lệnh rẽ nhánh switch:
switch ( a_variable ) { case value1: break; case value2: break; default: break; } int main() { printf("Please select one option:n"); printf("1 - Play a game n"); printf("2 - Play music n"); printf("3 - Shutdown computer n"); fflush (stdout); int option; scanf("%d", &option); switch (option) { case 1: printf("You choose to play the game n"); break; case 2: printf("You choose to play the music n"); break; case 3: printf("You choose to shutdown the computer n"); break; default: printf("Nothing to do...n"); break; } fflush(stdout); return 0; }Kết quả chạy ví dụ (Trong trường hợp nhập vào số 2 và nhấn Enter).
Chú ý:
Có một vấn đề bạn đặt ra câu lệnh break trong trường hợp này có ý nghĩa gì?.
break trong trường hợp này nói với chương trình rằng thoát ra khỏi switch. Trong trường hợp bạn không sử dụng break câu chương trình sẽ tiếp tục thực hiện các khối lệnh trong ‘case’ ở phía dưới (hoặc cả default) cho tới khi nó bắt gặp break, kể cả giá trị của biến trong trường hợp đó khác với giá trị trong ‘case’.
Hãy xem một ví dụ minh họa:
int main() { int option = 3; printf("Option = %d n", option); switch (option) { case 1: printf("Case 1 n"); break; case 2: printf("Case 2 n"); case 3: printf("Case 3 n"); case 4: printf("Case 4 n"); case 5: printf("Case 5!!! n"); break; default: printf("Nothing to do...n"); break; } fflush (stdout); return 0; }Vòng lặp được sử dụng để chạy lặp lại một khối lệnh. Nó làm chương trình của bạn thực thi lặp đi lặp lại một khối lệnh nhiều lần, đây là một trong các nhiệm vụ cơ bản trong lập trình.
C hỗ trợ 3 loại vòng lặp khác nhau:
10.1- Vòng lặp FORCấu trúc của vòng lặp FOR:
for ( variable_initialization; condition; variable_update ) { } for (int x = 0; x < 5; x = x + 1) { } for (int x = 2; x < 15; x = x + 3) { } 10.2- Vòng lặp WHILECú pháp của vòng lặp WHILE:
while ( condition ) { } int x = 2; while ( x < 10) { x = x + 3; } 10.3- Vòng lặp DO WHILECú pháp của vòng lặp DO-WHILE
do { }while ( condition ); 10.4- Lệnh break trong vòng lặpbreak là một lệnh nó có thể nằm trong một khối lệnh của một vòng lặp. Đây là lệnh kết thúc vòng lặp vô điều kiện.
10.5- Lệnh continue trong vòng lặpcontinue là một lệnh, nó có thể nằm trong một vòng lặp, khi bắt gặp lệnh continue chương trình sẽ bỏ qua các dòng lệnh trong cùng vòng lặp và ở phía dưới của continue và bắt đầu một vòng lặp mới.
Cú pháp khai báo mảng một chiều:
int years[] = { 2001, 2003, 2005, 1980, 2003 }; int age[5] = { 20, 10, 50 }; float salaries[3];Cú pháp khai báo một mảng 2 chiều:
int a[3][5] = { { 1, 2, 3, 4, 5 }, { 0, 3, 4, 5, 7 }, { 0, 3, 4, 0, 0 } }; int a[3][5];Một con trỏ (Pointer) là một biến có giá trị là địa chỉ của một biến khác, ví dụ, địa chỉ trực tiếp của vị trí bộ nhớ. Giống như bất kỳ biến hoặc hằng số, bạn phải khai báo một con trỏ trước khi bạn có thể sử dụng nó để lưu trữ bất kỳ địa chỉ biến nào. Cú pháp khai báo biến con trỏ là:
int var = 120; int *ip; ip = &var; int var2 = *ip; int main() { int var = 120; int *ip; ip = &var; printf("Address of var variable: %x n", &var); printf("Address stored in ip variable: %x n", ip); printf("Value of *ip variable: %dn", *ip); fflush (stdout); int var2 = *ip; return 0; } 12.1- NULL PointerNULL là một hằng số được định nghĩa trước trong một vài thư viện của C. Khi bạn khai báo một con trỏ mà không gán giá trị cụ thể cho con trỏ, nó sẽ trỏ vào một vùng bộ nhớ ngẫu nhiên. Trong một số tình huống bạn có thể khai báo con trỏ và gán trực tiếp giá trị NULL cho nó. Hãy xem một ví dụ:
13- Hàm (Function)Hướng Dẫn Lập Trình Spring Cho Người Mới Bắt Đầu
1- Giới thiệu
Tài liệu này viết dựa trên:
Spring Framework 4.x
Eclipse 4.6 NEON (ok for Eclipse 4.5 MARS)
Trong tài liệu này tôi sử dụng Maven để khai báo các thư viện Spring sẽ sử dụng, thay vì download Spring và khai báo thư viện theo cách thông thường.
Trong trường hợp bạn muốn download Spring và khai báo thư viện theo cách truyền thống bạn có thể xem phụ lục ở phía cuối tài liệu.
IoC Container: Đây là phần quan trọng nhất và cũng là phần cơ bản, nền tảng của Spring. Nó giữ vai trò về cấu hình và quản lý vòng đời (Lifecycle) của các đối tượng java. Bài hôm nay chúng ta sẽ tìm hiểu về phần này.
DAO, ORM, AOP, WEB: Các module này là tool hoặc là framework có sẵn được tích hợp vào Spring.
public interface HelloWorld { public void sayHello(); } public class SpringHelloWorld implements HelloWorld { public void sayHello() { System.out.println("Spring say Hello!"); } } public class StrutsHelloWorld implements HelloWorld { public void sayHello() { System.out.println("Struts say Hello!"); } } public class HelloWorldService { private HelloWorld helloWorld; public HelloWorldService() { this.helloWorld = new StrutsHelloWorld(); } }Có thể nhận thấy một điều rằng lớp HelloWorldService quản lý việc tạo ra đối tượng HelloWorld.
– Trong trường hợp trên khi một đối tượng HelloWorldService được tạo ra từ phương thức khởi tạo (constructor) của nó, đối tượng HelloWorld cũng được tạo ra, và nó được tạo từ StrutsHelloWorld.
Câu hỏi đặt ra là bạn muốn tạo ra đối tượng HelloWorldService đồng thời đối tượng HelloWorld được tạo, nhưng nó phải là SpringHelloWorld.
Như vậy ở đây là HelloWorldService đang điều khiển “object creation” của HelloWorld. Tại sao chúng ta không chuyển việc tạo HelloWorld cho một bên thứ 3 xử lý thay vì làm ở HelloWorldService. Chúng ta có khái niệm “inversion of control” nghĩa là “Sự đảo ngược điều khiển” (IoC).
Và IoC Container sẽ đóng vai trò người quản lý việc tạo ra cả HelloWorldService lẫn HelloWorld.
IoC = Inversion of Control
IoC Container tạo ra đối tượng HelloWorldService và đối tượng HelloWorld sau đó pass HelloWorld vào HelloWorldService thông qua setter. Việc IoC Container đang làm chính là “tiêm sự phụ thuộc” ( Dependency Injection) vào HelloWorldService . Sự phụ thuộc ở đây nghĩa là sự phụ thuộc giữa các object : HelloWorldService và HelloWorld.
3- Tạo Maven project
Group Id: org.o7planning
Artifact Id: HelloSpringAnnotation
package: org.o7planning.spring
Project của bạn đã được tạo ra:
Đảm bảo rằng Project của bạn được build trên Java 7 hoặc mới hơn. Nhấn phải chuột vào project chọn Properties.
Đây là ví dụ HelloWorld Spring, vì vậy chúng ta chỉ sử dụng thư viện Spring cơ bản (Core). Mở file chúng tôi khai báo các thư viện sẽ sử dụng:
@Service là một annotation, nó được sử dụng để chú thích trên một class để nói với Spring rằng class đó là một Spring BEAN.
@Autowired được chú thích trên một trường (field) để nói với Spring rằng hãy tiêm (inject) giá trị vào cho trường đó. Chú ý: Từ tiêm ở đây có ý giống với gán giá trị cho trường đó.
@Repository là một annotation, nó được sử dụng để chú thích trên một class để nói với Spring rằng class này là một Spring BEAN.
@Component là một annotation, nó được chú thích trên một class để nói với Spring rằng class này là một Spring BEAN.
@Autowired được chú thích trên một trường (field) để nói với Spring rằng hãy tiêm (inject) giá trị vào cho trường đó. Chú ý: Từ tiêm ở đây có ý giống với gán giá trị cho trường đó.
Không có sự khác biệt về cách sử dụng của @Service, @Component và @Repository, bạn sử dụng để chú thích trên các class của bạn nên phù hợp với ý nghĩa và ngữ cảnh trong ứng dụng.
6- Spring @Configuration & IoC@Configuration là một annotation, nó được chú thích trên một class, class này sẽ định nghĩa các Spring BEAN.
@ComponentScan – Nói cho Spring các package để tìm kiếm các Spring BEAN khác, Spring sẽ quét (scan) các package đó để tìm kiếm.
Các Spring BEAN được tạo ra sẽ được quản lý trong Spring IoC Container (Bộ chứa Spring IoC).
ApplicationContext context = new AnnotationConfigApplicationContext(AppConfiguration.class);Spring sẽ tạo các Spring BEAN, theo các định nghĩa trong class AppConfiguration, (Chú ý: Class AppConfiguration phải được chú thích bởi @Configuration).
Tiếp theo Spring sẽ tìm kiếm trong package “org.o7planning.spring.bean” để tạo các Spring BEAN khác, (Tạo các đối tượng từ các class được chú thích bởi @Service, @Component hoặc @Repository).
Trở về với câu hỏi “IoC là gì?”.
Theo cách truyền thống một đối tượng được tạo ra từ một class, các trường (field) của nó sẽ được gán giá trị từ chính bên trong class đó. Spring đã làm ngược lại với cách truyền thống, các đối tượng được tạo ra và một vài trường của nó được tiêm giá trị từ bên ngoài vào bởi một cái được gọi là IoC.
IoC viết tắt của “Inversion of Control” – Có nghĩa là “Đảo ngược của sự điều khiển”.
IoC Container là bộ chứa tất cả các Spring BEAN được sử dụng trong ứng dụng.
Tiếp theo bạn có thể tìm hiểu lập trình ứng dụng web với Spring Boot:
10- Phụ lục: Download thư viện SpringBạn có thể download Spring tại địa chỉ:
Giải nén file zip vừa download được vào một thư mục ổ cứng:
Hướng Dẫn Lập Trình Python Cho Người Mới Bắt Đầu
Windows:
Ubuntu
Sử dụng “Grammar Version” 3.x (Ngữ pháp phiên bản 3.x):
Project đã được tạo ra.
Thêm nội dung cho chúng tôi :
print ("Hello Python!"); x = 5; y = 10; z = 20; print (x + y + z);Chạy file chúng tôi bằng cách nhấn phải chuột vào nó và chọn:
Kết quả nhận được khi chạy chúng tôi :
Trong Python, module có thể hiểu một cách đơn giản là môt file nguồn ( *.py), nó có thể phơi bầy ra các lớp (class), hàm (function) và các biến toàn cục (global variables), mà các module khác có thể sử dụng.
Khi nhập khẩu (import) một file nguồn Python khác. Tên của file được đối xử như là một namespace (Không gian tên)
“Python package” đơn giản là một thư mục chứa các “Python module”.
Khi bạn tạo một package có tên “org.o7planning.test” sẽ có 3 thư mục được tạo ra là “org”, “o7planning”, “test”, trong mỗi thư mục tạo sẵn một file có tên “__init__.py”. Các file “__init__.py” thực chất không có nội dung bên trong, nhưng nó nói với Python rằng hãy đối xử với các thư mục chứa nó như là một “package”.
Bạn có thể tạo một module bên trong package, chẳng hạn tôi tạo một module có tên “mymodule.py” trong package “org.o7planning.test”:
Và trong một module khác có thể nhập khẩu “mymodule” để sử dụng với cú pháp:
# Nhập khẩu module "mymodule" trong package "org.o7planning.test" import org.o7planning.test.mymoduleHoặc nhập nhẩu một class “myclass” trong module “mymodule”:
# Nhập khẩu một class nằm trong module mymodule. from org.o7planning.test.mymodule import myclass HàmMô tảmath.floor(x)
Trả về phần nguyên của x như một kiểu float, là só nguyên lớn nhất và nhỏ hơn hoặc bằng x.
math.fabs(x)
Trả về giá trị tuyệt đối của x.
# Nhập khẩu module math để sử dụng. import math # math.floor(x) # Hàm này trả về số nguyên (interger) lớn nhất và nhỏ hơn hoặc bằng x. print ("math.floor(100.12) : ", math.floor( 100.12) ) # Hàm trả về giá trị tuyệt đối (absolute value). print ("math.fabs(-100.72) : ", math.fabs( -100.72) )Tạo một module với tên “mymodule” và nằm trong package “org.o7planning.test”. Trong mymodule định nghĩa một hàm có tên sayHello.
Chú ý: Trong bài hướng dẫn này tôi không giới thiệu chi tiết về hàm. Nếu bạn là một người mới bắt đầu với Python, bạn không cần lo lắng về điều đó.
# Định nghĩa một hàm, truyền vào tên người # và trả về một chuỗi. def sayHello(name) : return "Hello "+ name # Sử dụng hàm sayHello ở trên. text = sayHello("Python") print(text)Trong một module khác bạn muốn sử dụng hàm sayHello của “mymodule” bạn cần phải nhập khẩu module này, hoặc chỉ nhập khẩu hàm sayHello của module này.
import module:
# Import module. import org.o7planning.test.mymodule # Gọi hàm sayHello của mymodule: greeting = org.o7planning.test.mymodule.sayHello("Python") print(greeting)Import function:
# Nhập khẩu hàm sayHello. from org.o7planning.test.mymodule import sayHello # Gọi hàm sayHello của mymodule: greeting = sayHello("Python") print(greeting) 6- Tra cứu thư viện PythonKhi làm việc với Python, bạn cần các tài liệu để có thể tra cứu các thư viện Python, và cách sử dụng chúng. Các tài liệu này được giới thiệu trên trang chủ của Python, các tài liệu này rất đầy đủ và chi tiết cho từng phiên bản khác nhau của Python.
Hướng Dẫn Học Lập Trình Java Cho Người Mới Bắt Đầu
Lập trình Java là một trong những kỹ năng được tuyển dụng nhiều nhất trên toàn thế giới, ngoài ra bạn sẽ có được mức lương cao ngất ngưởng nếu có kiến thức Java
Java được xây dựng trên tư tưởng lập java coffee là một ngôn ngữ lập trình bậc cao, mạnh mẽ, bảo mật cao và là ngôn ngữ hướng đối tượng (object-oriented programming – OOPs) rất phổ biến hiện nay.
Java còn được gọi là một nền tảng (platform) bởi vì nó có thể chạy trên mọi nền cấu hình phần cứng và mọi hệ điều hành như linux, Window, OSX,…
Một ví dụ đơn giản về lập trình Java :
Class Simple {
Public static void main(String args[]) {
System.out.println(“Xin chào, Viêt Nam!”);
}
}
Kết quả: “Xin chào, Việt Nam!” in ra trên màn hình.
Java có lịch sử bắt nguồn từ một nhóm có tên là Green Team của tập đoàn Netscape. Họ đã khởi đầu nhiệm vụ phát triển một ngôn ngữ cho các thiết bị số như các đầu thu phát song hay tivi,… Vì thế lúc bấy giờ công nghệ Java chỉ được sử dụng cho việc lập trình các thiết bị di động, games hay các ứng dụng chạy trên internet và thương mại điện tử.
Học lập trình Java để làm gì ?
Hiện tại có trên 3 tỷ thiết bị đang chạy java (theo ghi nhận của Sun). Nếu bạn thành thạo lập trình Java bạn có thế làm được rất nhiều điều với nó:
– Ứng dụng cho máy tình để bàn, laptop như các trình chơi nhạc, quét virus,…
– Các ứng dụng nền web (Web site) như trang chúng tôi …
– Các ứng dụng cho doanh nghiệp chạy trên các máy chủ như ứng dụng cho các ngân hàng, các hãng hàng không,…
– Ứng dụng di động như các ứng dụng android cũng được code bằng java đã được tùy biến lại, hay các ứng dụng chạy trên máy Nokia cũ.
– Java cho thiết bị smart card
– Java cho các hệ thống nhúng
– Java cho điều khiển Robot
– Java cho game,…
Các loại ứng dụng mà bạn có thể xây dựng bằng ngôn ngữ lập trình Java
– Ứng dụng Standalone (Standalone application)
Nó được biết như các ứng dụng cho máy tính cá nhân, hay máy tính để bàn. Bạn có thể dùng các công nghệ Swing, AWT hay JavaFX để tạo ra các ứng dụng này.
– Ứng dụng web (Web application)
Hiện tại có rất nhiêu framework hỗ trợ bạn làm một trong web bằng công nghệ Java như Spring framework, Strut framework, jsf, jsp và servlet, …
– Ứng dụng dành cho các doanh nghiệp (Enterprise application)
Đây thường là các ứng dụng lớn chạy trên nhiều máy chủ khác nhau trên đòi hỏi hiệu năng cao, tính ổn định và độ bảo mật cao. Trong java, EJB là công nghệ được sử dụng để tạo ra các ứng dụng loại này.
– Ứng dụng cho thiết bị di động (Mobile application)
Với việc đánh giá cẩn thận nhu cầu đang phát triển của thị trường hiện tại cũng như sau khi nghiên cứu xu hướng thị trường trong tương lai, Stanford luôn luôn nâng cấp và tinh chỉnh chương trình giảng dạy khóa học lập trình Java phù hợp nhất với nhu cầu của ngành công nghiệp phần mềm đang cần.
Kết quả đạt được sau khóa học:
– Rèn luyện tư duy lập trình và tư duy giải quyết vấn đề trong thực tế
– Nền tảng vững chắc về lập trình Java cơ bản
– Nắm vững các kỹ thuật thao tác với Array và String trong thực tế
– Nắm vững triệt để tinh thần của lập trình hướng đối tượng
– Sử dụng linh hoạt các collecton trong vấn đề lưu trữ danh sách
– Biết cách vận dụng các kiến thức đã học trong việc xây dựng ứng dụng trong thực tế
– Xây dựng được các ứng dụng với JAVA
– Dễ dàng chinh phục lập trình ứng dụng Android
– Trở thành lập trình viên JAVA Full Stack, đáp ứng đầy đủ nhu cầu của doanh nghiệp
—
STANFORD – ĐÀO TẠO VÀ PHÁT TRIỂN CÔNG NGHỆ
Hotline: 0936 172 315 – 024. 6275 2212
Cập nhật thông tin chi tiết về Hướng Dẫn Lập Trình Swift Cho Người Mới Bắt Đầu trên website Englishhouse.edu.vn. Hy vọng nội dung bài viết sẽ đáp ứng được nhu cầu của bạn, chúng tôi sẽ thường xuyên cập nhật mới nội dung để bạn nhận được thông tin nhanh chóng và chính xác nhất. Chúc bạn một ngày tốt lành!