• 沒有找到結果。

109學年度第二學期自主學習計畫發表:自主學習成果-APCS之自我培訓

N/A
N/A
Protected

Academic year: 2022

Share "109學年度第二學期自主學習計畫發表:自主學習成果-APCS之自我培訓"

Copied!
8
0
0

加載中.... (立即查看全文)

全文

(1)

自主學習成果-APCS 之自我培訓 201 班 14 號陳依婕 一、APCS 介紹

APCS 為 Advanced Placement Computer Science 的英文縮寫,是指「大 學程式設計先修檢測」。其檢測模式乃參考美國大學先修課程(Advanced Placement,AP),與各大學合作命題,並確定檢定用題目經過信效度考驗,

以確保檢定結果之公信力。

二、學習動機

未來升學想選擇資訊工程系或相關工程學系,由於 APCS 對於程式設計 須具備一定的標準,因此我想參加 2021 年的 6 月 5 日的 APCS,透過這次經 驗來了解自己程式設計的能力與待加強的地方,若自己的檢測結果達到大學 要求的檢定級分,會採用此次級分來參加大學特殊選才,若未達到自己預期,

則會繼續參加 2021 年 10 月的檢測。

三、培訓方法

1. 在 APCS 官網上了解命題內容領域

2. 在 APCS 官網下載歷屆試題(程式設計觀念題、實作題) 3. 將計算過程寫下並熟知程式碼的基礎概念

4. 複習實作題的運算概念 5. 培養寫程式的習慣

四、計算過程

(以下圖片為民國 106 年 10 月的歷屆試題解題過程) 觀念題:

(2)

實作題:

(以下為 106 年 10 月第 1 題-邏輯運算子)

#include <iostream>

using namespace std;

int main() {

int a = 0, b = 0, c = 0, flag = 1;

cin >> a >> b >> c;

if(a != 0) {a = 1;}

if(b != 0) {b = 1;}

(3)

if((a && b) == c)

{cout << "AND" << endl;

flag = 0;}

if((a || b) == c)

{cout << "OR" << endl;

flag = 0;}

if((a != b) == c)

{cout << "XOR" << endl;

flag = 0;}

if(flag == 1)

{cout << "IMPOSSIBLE";}

return 0;

}

(以下為 106 年 10 月第 2 題-交錯字串)

#include <iostream>

#include <cstring>

#include <string>

using namespace std;

int main() {

string s;

int k, cU, cL, len, flen;

bool bU;

while(cin >> k){

cin >> s;

int length = s.length();

cU = 0;

cL = 0;

len = 0;

flen = 0;

if (isupper(s[0])) { bU = true;

cU++;

(4)

if (cU == k){

len = k;

flen = max(flen, len);

} }else{

bU = false;

cL++;

if (cL == k){

len = k;

flen = max(flen, len);

} }

for(int i = 1;i < length;i++){

if (isupper(s[i]) && bU) { cU++;

cL=0;

if (cU == k){

len += k;

flen = max(flen,len);

}

if (cU > k){

len = k;

}

} else if (isupper(s[i]) && (!bU)) { if (cL < k){

len = 0;

}

cU =1 ; cL = 0;

if (cU == k){

len += k;

flen = max(flen,len);

}

bU = true;

} else if (islower(s[i]) && (!bU)) { cL++;

cU = 0;

if (cL == k){

(5)

len += k;

flen = max(flen,len);

}

if (cL > k){

len = k;

}

}else if (islower(s[i]) && (bU)) { if (cU < k){

len = 0;

}

cL = 1;

cU = 0;

if (cL == k){

len += k;

flen = max(flen,len);

}

bU = false;

} }

cout << flen << endl;

} }

(以下為 106 年 10 月第 3 題-樹狀圖分析)

#include <iostream>

#include <cstdio>

#include <queue>

#include <cstring>

#define MAX 100001 using namespace std;

int p[MAX];

int d[MAX];

int num[MAX];

deque<int> t;

int main() {

int n,k,c;

(6)

long long int sum;

while (scanf("%d",&n) != EOF) { sum = 0;

memset(d,-1,sizeof(d));

memset(p,0,sizeof(p));

memset(num,0,sizeof(num));

for (int i = 1; i<=n; i++) { cin >> k;

if (k == 0){

t.push_back(i);

d[i]=0;

}else{

num[i]=k;

for(int j=0;j<k;j++){

cin >> c;

p[c] = i;

} } }

int node;

while(!t.empty()){

node = t.front();

t.pop_front();

d[p[node]]=max(d[p[node]],d[node]+1);

num[p[node]]--;

if (num[p[node]] == 0){

t.push_back(p[node]);

} }

for (int i = 1; i<=n; i++) { sum += d[i];

}

cout << node << endl;

cout << sum << endl;

} }

(以下為 106 年 10 月第 4 題-物品堆疊)

(7)

#include <iostream>

#include <algorithm>

using namespace std;

typedef struct _box{

int w;

int f;

} Box;

bool cmp(Box a,Box b){

return a.w*b.f < b.w*a.f;

}

Box b[100001];

int main() {

int n;

long long int result,sum;

while (cin >> n){

result = 0;

sum = 0;

for(int i = 0; i < n; i++){

cin >> b[i].w;

}

for(int i = 0; i < n; i++){

cin >> b[i].f;

}

sort(b,b+n,cmp);

for(int i = 0; i < n-1; i++){

sum += b[i].w;

result += sum * b[i + 1].f;

}

cout << result << endl;

} }

五、自主學習心得

程式設計從小就是我的興趣之一,在這塊領域,我靠著這份熱情學得比 同學還多,更透過了自主學習的時間,將這個技能練熟,雖然資訊老師曾讓

(8)

我參加國際運算思維挑戰賽,但我覺得這不足以讓我把自己在程式設計的天 賦及專長發揮的淋漓盡致,我極力地想知道自己在這方面還有什麼地方需要 加強與學習的,我想證明在沒有補習的環境下,我也能靠著自己學的很好,

我利用高一所學的 C++,以及高一下學期的自主學習中所學的 C 語言,這之 前的自主學習計畫都是為了 APCS 所規劃的。

時間離考試的日子越來越近,壓力也隨之增加,正當我忙完學校及社團 的活動後,遙控小車的微課程也告一段落了,想趁這一個月的時間好好為 APCS 做充足的準備,只要一有時間,我就會打開題庫,靜靜地讀著歷屆試 題,儘管身邊沒有手和筆寫下觀念題的計算,也會用自己的腦袋把題目中的 程式碼「執行」一遍又一遍,直到自己完全理解並解出答案後,才甘願繼續 寫下一題,剛開始會想得很久很慢,有時候還會出現「當機」的狀況,整個 人愣在椅子上,滿腦子程式碼只為了想出解題的方法。

一切進度都在計畫之中,直到離 6/5 剩下半個月時,悲劇發生了,因為 疫情,疾管署於 5/18 宣布停課,隨後 APCS 的主辦單位宣布 6/5 的檢測取消,

而非延後,俗話說:「There is always a plan B.」,對於這巨大的變化我 不但沒有慌亂,還藉由這個契機讓備用方案派上用場,就是參加今年 10 月 的 APCS,我還有更多的時間可以準備及練習,透過暑假來練習程式設計。

做完歷屆試題後,我發現這個檢測對我來說是有挑戰性的,那些題目我 答得出來,但對於時間的掌握有待加強,我需要練習更多的題目來讓我能運 用得更巧妙,讓程式設計成為生活的一部份,雖有挑戰性,但我接受挑戰。

參考文獻

相關文件

不 過他也確有提出一個統一出發點的具體想法, 就是利用學校數學研習組 (School Math- ematics Study Group:SMSG) 的公設系統。 這亦體現於他有份主導的 1999 年加州內容框架 (California

這個部分是我最滿意的檔案資料,單元或學習任務完成時,我會 利用時間整理教學成果,並且及時寫下省思,這些省思有利於下

國立嘉義大學附設實驗國民小學 103 學年度第 2 學期 資源班(六)年級 數學 領域教學計畫(含期末課程檢核). 資料來源

電子 、 機械系 、 環工系 、 高分子、光電、電腦與通訊 本學程共計 7 學科, 18 學分,必須修畢全部學分,始

第四章 直角座標與二元一次方程式.

第四章 直角座標與二元一次方程式.

我們已經學過了一元一次方程式與二元一次方程式,在本章中,我們將學習一元二次

• 利用緊扣 課程設計 讓同學做討論,使同學 必須要讀過內容才能針對議題發表意見,這 樣不只讓教師知道學生的學習情況,也能慢