程式變數的功能和用途。
1.計數器(counter):用來標示次數、序號,如工作次數和資料的序號。
2.累積器(ccumulator):用來存放計算結果、累算結果。
3.旗標(flag、indicator):用來標示狀態。
其中計數器為進行累加、減的變數。為能清楚表現其次序、經常執行加一或減一的運算。;
而累積器則是用來暫存各種累算的結果,無法由計數器來得。
口令為計數值,每變化一次即為為仰臥起坐。
口令也為累積器,代表做過的仰臥起坐總數。
獎金為累積器,代表為其獎金總數。(已無法直接由計數器(口令)的最終值推算出來。
而在旗標,標示不同狀態來執行不同程序,而在設定旗標的初始化值的設定上。
需依程式來決定,初始值否定原則。
依初始值否定原則,故我們先設為no為質數,然後在程序中去檢測來推翻。
1.寫出解決問題的外迴圈敘述,必要時可先用中文及(工作)數數描朮要重複執行的工作
2.逐步將迴圈內的中文句子轉成C語言,必要時使用直線方程式決定(工作)變數與迴圈變數間的關係(方程式)
即類似系統分析的Top-Down,先寫出解決問題的幾個大步驟,再分若干小步驟,直到可用C描述為之。
而其中直線方程式最為重要。
EX:
印出:
1.由最外圍的for,可先用中文及(工作)數數描朮要重複執行的工作
2.轉成C語言,必要時使用直線方程式決定(工作)變數與迴圈變數間的關係(方程式)
(i可由0開始,除了在C語中是以從0開始外。還可方便計算出其直線關係方程。
3.其" "中,其之間的直線關係式
8=a*0+b;
6=a+b;
a=-2; b=8;
其*中,其之間的直線關係式
1=a*0+b;
4=a+b;
b=1,a=3
4.
for(i=0;i<5;i++)
印出(-2i+8)個" ";
印出(3i+1)個*;
\n;
5.轉換成C
EX:求面積:
求y=x^2和y=0以x=1所來之面積
1.求其切割的次數
因為最好為可整除的,故令1/5
故為
iSum=0;
for(i=0;i<=5;i++)
2.其i與x之間的線性方程.
故為z=0.2i+0.2
iSum=0;
for(i=0;i<=5;i++)
//在未接觸Bottom-UP程式策略的什都是使用Top-Down程式策略來撰寫程式。
且少先去規劃其程式流程,而在Top-Down程式策略與規劃流程圖一樣,需要程式的經驗、直觀與巧技。
所以用Top-Down時,若寫不出時,可改以Bottom-UP程式策略。
1.計數器(counter):用來標示次數、序號,如工作次數和資料的序號。
2.累積器(ccumulator):用來存放計算結果、累算結果。
3.旗標(flag、indicator):用來標示狀態。
其中計數器為進行累加、減的變數。為能清楚表現其次序、經常執行加一或減一的運算。;
而累積器則是用來暫存各種累算的結果,無法由計數器來得。
//每仰臥起坐,每得相對的$.
獎金=0;
for(口令=1;口令<=100;口令=口令+1)
做一次仰臥起坐;
獎金=獎金+口令;
}
口令為計數值,每變化一次即為為仰臥起坐。
口令也為累積器,代表做過的仰臥起坐總數。
獎金為累積器,代表為其獎金總數。(已無法直接由計數器(口令)的最終值推算出來。
而在旗標,標示不同狀態來執行不同程序,而在設定旗標的初始化值的設定上。
需依程式來決定,初始值否定原則。
//任意指定127給整數變數no,判斷是否為質數
1.判斷(no-1)是否可整除no,如果可以,no就不為質數
2.判斷(no-2)是否可整除no,如果可以,no就不為質數
n-2.判斷(2)是否可整除no,如果可以,no就不為質數
依初始值否定原則,故我們先設為no為質數,然後在程序中去檢測來推翻。
no=127;
prime=1; //1為質數;0反之.
for(k=no-1;k>1;k--)
if(no%k==0) prime=0; //推翻
if(prime)
為質數
else
不為質數
Top-Down程式策略:
1.寫出解決問題的外迴圈敘述,必要時可先用中文及(工作)數數描朮要重複執行的工作
2.逐步將迴圈內的中文句子轉成C語言,必要時使用直線方程式決定(工作)變數與迴圈變數間的關係(方程式)
即類似系統分析的Top-Down,先寫出解決問題的幾個大步驟,再分若干小步驟,直到可用C描述為之。
而其中直線方程式最為重要。
EX:
印出:
1.由最外圍的for,可先用中文及(工作)數數描朮要重複執行的工作
for(i=0;i<5;i++)
{
印出空白;
印出*;
/n;
}
2.轉成C語言,必要時使用直線方程式決定(工作)變數與迴圈變數間的關係(方程式)
(i可由0開始,除了在C語中是以從0開始外。還可方便計算出其直線關係方程。
i | 0 | 1 | 2 |
" " | 8 | 6 | 4 |
* | 1 | 4 | 7 |
3.其" "中,其之間的直線關係式
8=a*0+b;
6=a+b;
a=-2; b=8;
其*中,其之間的直線關係式
1=a*0+b;
4=a+b;
b=1,a=3
4.
for(i=0;i<5;i++)
印出(-2i+8)個" ";
印出(3i+1)個*;
\n;
5.轉換成C
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
int i;
for(i=0;i<5;i++)
{
//space=-2i+8;
int j;
for(j=0;j< -2*i+8;j++)
printf(" ");
//start=3i+1
for(j=0;j<3*i+1;j++)
printf("*");
printf("\n");
}
system("PAUSE");
return 0;
}
EX:求面積:
求y=x^2和y=0以x=1所來之面積
1.求其切割的次數
因為最好為可整除的,故令1/5
故為
iSum=0;
for(i=0;i<=5;i++)
{
所在的面積,並做累加的動作 。y=x^2
}
2.其i與x之間的線性方程.
i | 0 | 1 | 3 |
y | 0.2 | 0.4 | 0.6 |
故為z=0.2i+0.2
iSum=0;
for(i=0;i<=5;i++)
{
x=(0.2*i+0.2); //x
y=x*x;//y
sum=sum+y*0.2;
}
//在未接觸Bottom-UP程式策略的什都是使用Top-Down程式策略來撰寫程式。
且少先去規劃其程式流程,而在Top-Down程式策略與規劃流程圖一樣,需要程式的經驗、直觀與巧技。
所以用Top-Down時,若寫不出時,可改以Bottom-UP程式策略。
沒有留言:
張貼留言