構建之法第一章

除整數外,還要實現真分數的四則運算java

①主要函數:c++

char getSignal();                      //獲取隨機運算符函數編程

int random(double,double);             //獲取隨機數函數小程序

int getResult(int,int,char);           //結果計算函數c#

int takeTest();                        //題目生成函數瀏覽器

②主函數框架

void main()dom

{編程語言

         int n,a,right=0;函數

         double percent;

         printf("Please enter the number of the test:");

         scanf("%d",&n);

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

         {

                   a=takeTest();

                   right=right+a;

         }

         printf("Powerful!\n");

         printf("The number of right:%d\n",right);

         percent=((double)right*100.00)/(double)n;

         printf("The percent of right:%0.2f %%\n",percent);

}

③獲取隨機運算符函數:

char getSignal()

{

    char signal[4]={'+','-','*','/'};

    srand((unsigned)time(NULL));

    return signal[rand()%4];

}

 ④獲取隨機數函數:

int random(double start, double end)

{

    return (int)(start+(end-start)*rand()/(RAND_MAX+ 1.0));

}

⑤結果計算函數:

int getResult(int num1,int num2,char signal)

{

    int res;

    switch(signal)

    {

    case '+':

        res=num1+num2;break;

    case '-':

        res=num1-num2;break;

    case '*':

        res=num1*num2;break;

    case '/':

        res=num1/num2;break;

    default:

        printf("運算符錯誤!\n");

    }

    return res;

}

⑥題目生成函數:

int takeTest()

{

    int get;

    int num1,num2,a;

    char signal;

 

    srand((unsigned)time(NULL));

    signal=getSignal();

    num1=random(0,1000);

    num2=random(1,1000);

    if(signal=='-')

    {

        if(num1<num2)

        {

            int temp;

            temp=num1;

            num1=num2;

            num2=temp;

        }

    }

    if(signal=='/')

    {

        if(num2==0)

        {

            int temp;

            temp=num1;

            num1=num2;

            num2=temp;

        }

    }

    printf("%d%c%d=",num1,signal,num2);

    scanf("%d",&get);

    fflush(stdin);   //清空輸入緩衝區

    if(getResult(num1,num2,signal)==get)

        {

        printf("You're right!\n");

        a=1;

        }

    else

    {

        printf("It's wrong!\n");

        printf("The right answer is: %d\n",getResult(num1,num2,signal));

        a=0;

    }

    return a;

}

支持多個運算符

# include <stdio.h>

int main(void)

{

               double a, b;

               int chose;

 

               printf("歡迎使用個人計算器\n");

               while (1)

               {

                               printf("********************\n");

                               printf("一、兩數相加\n");

                               printf("二、兩數相減\n");

                               printf("三、兩數相乘\n");

                               printf("四、兩數相除\n");

                               printf("五、退出\n");

                               printf("********************\n");

 

                               scanf("%d", &chose);

 

               /*             if (chose<1 || chose>5)

                               {

                               printf("你的輸入有誤,請從新輸入!\n");

                               continue;

                               }*/

 

                               switch (chose)

                               {

                               case 1:

                                                             printf("請輸入第一個數字:\n");

                                                             scanf("%lf", &a);

                                                             printf("請輸入第二個數字:\n");

                                                             scanf("%lf", &b);

                                                             printf("%lf+%lf = %lf\n", a, b, a+b);

                                                             break;

                               case 2:

                                                             printf("請輸入第一個數字:\n");

                                                             scanf("%lf", &a);

                                                             printf("請輸入第二個數字:\n");

                                                             scanf("%lf", &b);

                                                             printf("%lf-%lf = %lf\n", a, b, a-b);

                                                             break;

                               case 3:

                                                             printf("請輸入第一個數字:\n");

                                                             scanf("%lf", &a);

                                                             printf("請輸入第二個數字:\n");

                                                             scanf("%lf", &b);

                                                             printf("%lf*%lf = %lf\n", a, b, a*b);

                                                             break;

                               case 4:

                                                             printf("請輸入第一個數字:\n");

                                                             scanf("%lf", &a);

                                                             printf("請輸入第二個數字:\n");

                                                             scanf("%lf", &b);

                                                             printf("%lf/%lf = %lf\n", a, b, a/b);

                                                             break;

                               case 5:

                                                             printf("再見!\n");

                                                             return  ;

                               default:

                                                             printf("你的輸入有誤,請從新輸入!\n");

                                                             continue;

 

}

               }

}

   

2.博客做業:我是呂越新,一名計算機應用技術專業的大二學生,我想經過對構建之法的學習,瞭解軟件相關知識,從需求分析到最後軟件投入市場過程當中如何提升軟件質量,瞭解相關流程,針對不一樣章節提煉出有內涵的東西,充分利用教材,彌補知識上的空缺,除了課上時間學習外,還要花費5小時閒暇時光在本書上,好好預習,複習,提升學習知識的能力,和小組成員共同進步,學會合做和互相配合,實現雙贏。

3.快速看完整章教材,列出你不懂的5-10個問題,發佈在你的我的博客上。

1我在《構建之法》第三版的26頁看到這樣一段話「若是用隨機數以增長測試的真實性,好嗎?

答:通常狀況下很差,若是某個隨機數致使程序出錯,可是下一次運行又不能重複這一錯誤,則於事無補。咱們仍是要用隨機數等辦法「增長測試真實性」,但不是在單元測試中。單元測試不能解決全部問題,沒必要指望它會發現全部的缺陷。 

2.單元測試是應在最基本的功能/參數上驗證程序的正確性

答:單元測試應該測試程序中最基本的單元—如在c++/c#/java中的類,在此基礎上,能夠測試一些系統中最基本的功能點(這些功能由幾個基本點組成),從面向對象設計原理出發,系統中最基本的功能點也該由一個類及其方法來表現。單元測試API中的每個方法及每個參數。

3.單元測試應覆蓋全部代碼路徑

單元測試應覆蓋所測單元的代碼路徑,包括錯誤處理路徑。爲了保證代碼覆蓋率,單元測試必須測試公開的和私有的函數/方法。(基本路徑測試法是在程序控制流圖的基礎上,經過分析控制構造的環路複雜性,導出基本可執行路徑集合,從而設計測試用例的方法)。

4.單元測試必需要用最熟悉代碼的人(程序的做者來寫)
代碼的做者最瞭解代碼的目的、特色和實現的侷限性。因此,寫單元測試沒有比做者更適合的人選了。根據我實踐的經驗,本身的錯誤和缺點每每很難由本身發現,即便發現所需花費的時間成本也比較大。因此,才須要互測、互評。代碼的做者雖然熟悉代碼,但腦中傾向於驗證代碼的正確性而不是檢查錯誤。有些疏忽很明顯但容易視而不見,心中想象的代碼是完美的,而屏幕上的代碼卻有失誤。羅傑老師在第一節課時也提到,通常公司的開發人員和測試人員比例是1:1,有時甚至可能達到1:7.可見測試人員不可或缺。開發人員同時做測試人員既越俎代庖又效率低下。因此,我不是很理解和信服書做者的觀點。

5.對於「迴歸測試」中的"迴歸」,咱們能夠將其理解爲「迴歸到之前不正常的狀態」。

 迴歸測試最好要自動化,由於這樣就能夠對於每個構建快速運行全部迴歸測試,以保證儘早發現問題。單元測試是迴歸測試的基礎。在專一於模塊基本功能的單元測試以外,還有功能測試------從用戶的角度檢車功能完成得怎麼樣。在微軟的實踐中,在一個項目的最後穩定階段,全部人都要參加全面的測試工做,把之前發現並修復的Bug找出來,一個一個驗證,以保證全部已經修復過的Bug的確獲得了修復,而且每在最後一個版本中"復發",這是一個大規模的,全面的「迴歸測試」。

 

 4.

           一  遊戲類軟件
      遊戲有不少種類,分類方式有不少。好比說按照遊戲內容分,分爲射擊遊戲,益智遊戲,策略遊戲休閒遊戲......等等。還能夠按照遊戲平臺分類,遊戲大小分類,運行方式分類等多種分類方式。本類軟件能夠說是最受歡迎的軟件,幾乎人人都會使用,可是每一個人玩的都不盡相同,由於人的喜愛不一樣。遊戲最大的樂趣在於,它能夠實現現實中咱們想作卻不能作的事。

        二.  工具類軟件

      我對工具類軟件是這樣理解的:任何對咱們有幫助做用的軟件,好比WinRar它是咱們壓縮文件的工具,瀏覽器是咱們上網的工具,暴風影音是咱們看視頻的工具,我第一次使用這類軟件是大一初,決定我使用它有這麼幾個條件:1.互聯網購物興起。2.我擁有了本身的銀行卡。3.淘寶網是我國最大的網購平臺,支付寶對應淘寶。4.移動支付的快捷方便。

      我國如今有超過四億的智能機用戶,使用移動平臺支付的有不到2個億,因此還有很大的發展空間,在將來20年,還會大行其道。

             三   系統類軟件

      我對系統類軟件不是很瞭解,在這裏先科普一下:系統軟件是指控制和協調計算機及外部設備,支持應用軟件開發和運行的系統,是無需用戶干預的各類程序的集合,主要功能是調度,監控和維護計算機系統;負責管理計算機系統中各類獨立的硬件,使得它們能夠協調工做  我第一次使用是時2016年,當時使用的是智能手機Android系統。緣由很簡單蘋果手機價格高,安卓更加親民。

     

     

5.軟件工程是否是教那些不怎麼會寫程序的人開發軟件? 你怎麼看?

軟件工程是教那些不會開發複雜項目的人怎樣去編程的學科。當學習一門編程語言時,咱們會在學習過程當中試着編寫一些小程序,這些程序可能只有幾十行代碼,而當咱們編寫的程序變得複雜,須要成千上萬行代碼和複雜的邏輯結構時,咱們會發現本身變得又不會編程了;就會試着像之前同樣按本身所想去實現這個複雜的程序,可是當程序的代碼愈來愈多,結構愈來愈複雜時,會發現出現的錯誤也愈來愈多,同時很難去修改,甚至可能會出現不能修復的錯誤。因此,一個複雜系統的開發,須要一套規範的管理方法去管理這個開發的過程,軟件工程就是關於怎樣管理開發過程的學科。軟件工程會使你知道怎樣去作需求分析以瞭解程序須要實現的功能,怎樣去作系統設計以構建程序的框架,怎樣測試以驗證程序功能的正確等。你能夠經過軟件工程的指導去實現一個結構清晰、可維護和健壯的程序。軟件工程會教給你如何從工程的角度去完成一個項目的開發,如何處理開發過程當中的各類問題,如何創造一個完美的軟件系統。

 6你所在的學校有計算機科學專業和軟件工程專業麼?相關專業的教學計劃和畢業出路有什麼不一樣?

有,關於軟件工程的教學計劃有軟件測試和軟件開發,學習的相關軟件知識更側重於測試,相對於開發的偏寫代碼的不一樣,測試行業試講開發人員寫的程序進行測試,檢測其程序是否存高危bug,並能及時的使開發人員修正錯誤,減小軟件開發須要使用的資金,同時軟件測試也不必定須要很強的專業能力,相對開發對來講更但願測試一類的工做。 

相關文章
相關標籤/搜索