編譯時期 Compile (C語言為例)
- 預處理 processing
(1) 檢查語法錯誤
(2) 處理 #include - 編譯 Compiling
(1) 程式碼 => 組合語言 (簡單指令) - 組譯 Assembling
(1) 組合語言 => 機器語言 (011001) - 連結 Linking
(1) 機器語言 => 完整檔案 (stdio.h / cs50.h 的 01011)
C-編譯 & 執行
使用 editor編輯, terminal編譯 & 執行
$ make main.c
$ clang -o main main.c
=> main.exe
$ ./main
=> output
JAVA-編譯 & 執行
使用 text編輯, cmd編譯 & 執行
C:\>javac main.java
=> main.class
C:\>java main
=> output
C-主架構
- 安裝配件 => #inclde
- 主要運作函式 => int(輸出型態) main(void) (函式名稱 & 輸入型態)
#include <stdio.h>
int main(void)
{
printf("hello, world\n");
}
JAVA-主架構
- 安裝配件 import
- 主要運作類別 => class(類別) Main (檔案名稱 / 大寫開頭)
- 主要運作函式 => public(公開的) static(靜態的,若否則指定物件使用)
- 主要運作函式 => void(輸出型態) main(String[] args)(函式名稱 & 輸入型態)
import java.util.Scanner;
class Main {
public static void main(String[] args) {
System.out.println("hello,world");
}
}
C-宣告變數
- 不同變數型態不可混用
//整數型態
int number = 15;
//浮點數型態
double d1 = 0.123456789; //倍精度:存15位
float f1 = 0.123456789f; //單精度:存8位
//字元型態 (一個字母) / 字串型態 (2個字母/1中文字以上)
char demo = 'A'; //單引號
char str[] = "pc school"; //雙引號;字串 = 字元陣列
JAVA-宣告變數
- 基本資料型態"可以"混用
- 基本資料型態儲存在 "Stack"
- 參考資料型態 "變數" 儲存在 "Stack"
- 參考資料型態 "實際資料" 儲存在 "Heap"
- 參考資料型態 "變數" 存放 "實際資料" 的位置資訊
// 基本變數型態 (小寫開頭)
// byte(number, 1byte)
// short(number, 2bytes)
// int(number, 4bytes)
// long(number, 8bytes)
// float(a float number, 4bytes)
// double(a float number, 8bytes)
// char(a character, 2bytes)
// boolean(true or false, 1byte)
// 參考資料型態 (大寫開頭)
// 字串 String (唯一不需要new新空間,會放在字串池)
String my_name = "Penny";
// 接受器 Scanner
import java.util.Scanner;
Scanner sc = new Scanner(System.in);
// 陣列 Array
int[] array = new int[3];
int[] array = new int{1, 2, 3};
int[] array;
C-輸出函式
// 變數資料
// 整數-十進位
printf("十進位: %d ", v ); //正負格式 %+d
// 整數-八進位
printf("八進位: %o ", v ); //完整格式 %#o
// 整數-十六進位
printf("十六進位: %x ", v ); //完整格式 %#x
// 浮點數-單精度 / 倍精度
printf("浮點數: %lf / %f ", v ); //求到特定位數 %.4lf
// 字元
printf("字元: %c ", v );
// 字串
printf("字串: %s ", v );
// 多項資料:如數字轉撲克牌符號
int heart = 3, ace = 6;
printf("紅心:%c\n黑桃:%c\n" , heart , ace );
// 多項資料:指定寬度並靠右對齊
printf(" %7d , v"); //靠左對齊-7 用0填滿 %07d
JAVA-輸出函式
// 輸出函式
class Main {
public static void main(String[] args) {
System.out.printf("hello,world"); //格式化輸出
System.out.print("hello,world"); //輸出後不換行
System.out.println("hello,world"); //輸出後換行
}
}
// 變數資料
String my_name = "Penny";
int age = 26;
System.out.println("My name is "+my_name+".");
System.out.println("I am "+age+"year's old.");
// 基本資料型態 "可以" 混用
double a = 6.7 ;
double b = 3.2 ;
System.out.println(a * b - 0.44);