日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

构建之法--熟悉使用工具

發布時間:2023/12/20 编程问答 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 构建之法--熟悉使用工具 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
GIT地址MyGit
GIT用戶名liuxingbumie2014
學號后五位62408
博客地址博客
作業鏈接鏈接

1.配置過程

配置過程沒什么問題,從官網下載安裝程序,勾選.Net桌面開發即可。如下圖

2.代碼設計的思路

  • 獲取隨機算式
Random rd = new Random(Guid.NewGuid().GetHashCode());operatorNum = rd.Next(2, 4);//運算符個數for (j = 0; j < operatorNum; j++) {sb.Append(rd.Next(0, 101));sb.Append(opera[rd.Next(0, 4)]);}sb.Append(rd.Next(0, 101));
  • 排除除數為0的算式
//check dividend 0if (sb.ToString().Contains("/0")) {i--;continue;}
  • 設計一個Compute類將算式轉化為后綴表達式并求值
//中綴表達式轉后綴表達式public void DoTrans() {for (int i = 0; i < input.Length; i++) {if(input[i] >= '0' && input[i] <= '9') {while(input[i] >= '0' && input[i] <= '9') {post[z++] = input[i++];if (i == input.Length) {break;}}post[z++] = '#';i--;}else if (input[i]=='+' || input[i]=='-') {OperationOpStack(input[i], 1);} else if (input[i] == '*' || input[i] == '/') {OperationOpStack(input[i], 2);}}while (opStack.Count != 0) {post[z++] = opStack.Pop();}}//運算符棧操作public void OperationOpStack(char opThis, int prec1) {while (opStack.Count != 0) {char opTop = opStack.Pop();int prec2;if (opTop == '+' || opTop == '-') {prec2 = 1;} else {prec2 = 2;}//比較優先級if (prec2 < prec1) {opStack.Push(opTop);break;} else {post[z++] = opTop;}}opStack.Push(opThis);}//后綴表達式求值public double Calculate() {num=new Stack<double>();//操作數堆棧double a = 0, b = 0;for(int i = 0;i<z;i++) {if (post[i] >= '0' && post[i] <= '9') {int tmp = 0;while (post[i] >= '0' && post[i] <= '9') {tmp = tmp * 10 + Convert.ToInt32(post[i] - '0');i++;}num.Push(tmp);}else if (post[i] == '#') {continue;} else {a = num.Pop();b = num.Pop();num.Push(Operate(b, a, post[i]));}}return num.Pop();//最后的結果為棧頂元素}//計算結果public double Operate(double first, double second, char op) {double res = 0;switch (op) {case '+':res = first + second;break;case '-':res = first - second;break;case '*':res = first * second;break;case '/':res = first / second;break;default:break;}return res;}
  • 得到結果并排除結果為小數負數的算式
if (result.ToString().Contains(".") || result<0) {i--;continue;}sb.Append('=');sb.Append(result);
  • 將算式輸出
  • 完整代碼見Git

3.github克隆項目

  • 1、fork項目 點擊Clone or download 復制鏈接
  • 2、克隆到本地項目 git clone +鏈接

4.單元測試

  • 在方法處右鍵,點擊創建單元測試(注意方法和類必須為pubic),不然會出現以下提示

  • 點擊菜單欄的測試->運行->所有測試 左側綠色勾表示測試通過,測試Operate函數,測試四則運算。測試結果通過
  • 測試Calculate函數,,驗證輸入算術式能否得到正確的結果。測試結果通過

5.效能分析

  • 硬編碼n為一百萬
  • 點擊菜單欄 分析->性能探查器 勾選CPU測試率 開始 效能分析。即使程序沒跑完,效能分析也能強行結束。讓程序跑幾分鐘,點擊停止收集
  • 下圖是效能分析報告
  • 要想獲得更詳細的報告,點擊上圖中的創建詳細的報告...,創建完成后進入一個后綴為 .vspx 的文件,如下圖所示
  • 點進Calculator.Program.Main 可以看見函數占用時間的百分比,從而優化代碼

6.提交代碼

  • 使用git status查看本地改動是否add和commit
  • 將工作區"新建/修改"的文件添加到暫存區
  • 將暫存區內容添加到本地庫
  • 使用 push 命令后,會彈出一個窗口要求登錄 Github,此時輸入 Github 的 用戶名或郵箱 與 密碼 即可成功 push。
  • 完成 push 后,向源倉庫發起 Pull Request,點擊 New pull request
  • 點擊 Create pull request 即可發起請求

  • git常用命令
git status //查看工作區,暫存區狀態 git branch//顯示所有分支 git add . //將當前目錄下修改的所有代碼從工作區添加到暫存區 . 代表當前目錄 git commit -m "分支" //將暫存區內容添加到本地庫 git push //將本地版本庫的分支推送到遠程服務器上對應的分支

7.問題&解決

  • 使用后綴表達式求值時遇到瓶頸,因為一般的后綴表達式求值的操作數都是個位數,后來參考了該博客解決了問題,在遍歷算式字符串時當遍歷的字符是數字時繼續遍歷,直到不是數字為止。將得到的數字拼成一個數字然后在后綴字符串中以‘#’分割。

8.總結

以前我以為只要編寫能運行的程序就行,現在我知道得編寫單元測試、回歸測試來保證代碼的正確性,因為現實中不一定總遇到合法的輸入,進行單元測試能提高代碼的健壯性。同時進行效能分析,發現哪些代碼更耗時間,方便修改和提升效率。Git也很強大,能夠在本地和github上妥善的保管代碼,避免數據丟失。

轉載于:https://www.cnblogs.com/guduxuanze2014/p/11546111.html

總結

以上是生活随笔為你收集整理的构建之法--熟悉使用工具的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。