暑假資讀[0]

郭彥聖

講師介紹

資讀介紹

暑假資訊讀書會

  • 暑假資讀
  • C++基本語法
  • 銜接開學資讀的演算法課程
  • 時間:每週二晚上18:00~21:00
  • 8/10、8/17、8/24、8/31共四堂課
  • 利用Discord線上進行

暑假資讀課表

日期 講師 課程
8/10 郭彥聖 資讀介紹、C++簡介與環境安裝、基本輸入輸出、變數與資料型態、運算子
8/17 謝一 競賽介紹、OJ介紹、條件判斷、迴圈、陣列、時間複雜度
8/24 陳仲肯 函數、struct與object、運算子重載、指標、鏈結串列
8/31 王政凱 stack、queue、tree、STL

資訊讀書會

  • 資讀
  • 建中行之多年的傳統(?
  • 以競賽程式為主
  • 傳授進階演算法知識
  • 程式語言:C++

資訊讀書會

  • 時間:每週二18:00~21:00
  • 段考週停課
  • 考前一週模競
  • 地點:建中資源大樓三樓電腦教室
  • 有異動會在FB社團公告

資訊讀書會

什麼是程式語言?

什麼是程式?

  • 指令
  • 流程
  • 函數
  • 食譜?

什麼是程式語言?

  • 用來敘述程式的語言
  • 人類與電腦溝通的方式

程式語言

低階語言v.s.高階語言

低階語言 高階語言
親近度 貼近硬體 貼近人類
執行速度
記憶體用量
可讀性
可攜性
開發難度
例子 機器碼、組合語言 C++、Java

低階語言v.s.高階語言

編譯式v.s.直譯式

編譯式語言 直譯式語言
一次編譯完,全部一起執行 逐行直譯,逐行執行
執行速度快 執行速度慢
可獨立執行 依賴執行環境
C/C++、C# python、javascript、R

C++簡介

關於C++

  • 1979年由比雅尼·史特勞斯特魯普發明
  • 改良自C
  • 1998年發布第一個C++標準:C++98
  • 之後還有C++03、C++11、C++14、C++17等各種版本的標準
  • 目前最新版是2020發布的C++20

關於C++

  • 編譯式語言
  • 執行速度快
  • 標準函式庫
  • 物件導向

C++編譯環境安裝

常見的C++編輯器

  • Code::Blocks
  • Dev C++
  • Visual Studio Code
  • Visual Studio
  • Vim
  • Sublime Text

接下來帶大家安裝

dev C++

裝不了的替代方案

線上編輯器:repl.it

Hello World!

來寫人生第一支程式吧!

#include <iostream>

using namespace std;

int main(){
    cout << "Hello world!" << endl;
    return 0;
}

看到這個代表你成功ㄌ

基本輸入輸出

輸出

  • 把資料顯示到螢幕上
  • #include <iostream>
  • std::cout
  • std::endl
  • '\n'
  • std::cout.flush()

輸出--小數

  • 要指定小數的輸出位數的話
  • #include <iomanip>
  • cout << setprecision(4)
  • cout << fixed << setprecision(4)
  • setprecision一旦用了在這支程式中就會一直有效
  • setprecision可以重複設定

Hello World!

就是單純的輸出練習

輸入

  • 讀取使用者輸入的資料
  • #include <iostream>
  • 讀到空白或換行
  • std::cin
  • 一次讀一個字元,可以讀空白和換行
  • std::cin.get(ch)
  • 讀一個字串,讀到換行停止,可以讀空白
  • getline(cin, str)

哈囉

變數與資料型態

整數

資料型態 佔用空間(bytes) 值域
short 2 -32768~32767
int 4 -2147483648~2147483647
unsigned int 4 0~4294967295
long long 8 -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807
unsigned long long 8 0~18,446,744,073,709,551,615

浮點數

資料型態 佔用空間(bytes) 值域 精度
float 4 3.4 E +-38 7位數
double 8 1.7 E +- 308 15位數

字元與字串

  • char可以存一個字元
  • 占用1 byte
  • 值域-128~127 
  • ASCII編碼儲存
  • string可以存字串
  • 空間視長度而定
  • 可以想成是char的陣列

布林值

  • bool
  • 佔用空間:1byte
  • 值域:0~1
  • True/False

變數命名規則

  • 命名可以是英文字母、底線、數字
  • 不能以數字開始
  • 大小寫都可以,但大小寫視為不同
  • 保留字不允許用
  • 盡量用有意義的名字命名

運算子

指定運算子

  • a=3
  • 把=左邊的變數設定成右邊的值
  • 左邊必須是變數

算術運算子

  • +
  • -
  • *
  • /
  • %
  • 前後要是同型態的變數才可以運算
  • 常見的型態C++會幫你轉換
  • 一般會轉換成比較大的資料型態
  • 除不盡會 向0取整
  • 負數取餘數是負數
  • 浮點數不能取餘數

算術指定運算子

  • +=
  • -=
  • *=
  • /=
  • %=
  • 算術+指定
  • a+=b
  • a=a+b
  • 特性大致上和算術差不多

遞增遞減運算子

  • ++
  • --
  • 就是把值+1或-1

關係運算子

  • >
  • >=
  • <
  • <=
  • ==
  • !=
  • 比較兩個變數的大小關係
  • 回傳一個布林值(True/False)

邏輯運算子

  • &&
  • ||
  • !

位元運算子

  • <<
  • >>
  • <<=
  • >>=
  • &
  • |
  • ^
  • &=
  • |=
  • ^=
  • ~

優先性

  • 先乘除後加減
  • 大致上是算術>位元>關係>邏輯>算術指定
  • i++與++i

簡易加法

兩光法師占卜術

a + b problem

暑假資讀[0]

By yennnn

暑假資讀[0]

  • 831