QG之魔鬼訓練營系列:第三周周記
這是訓練營第十一篇日記,日期:2016年5月1日
--------------------------------生活小記--------------------------------
春雨綿綿的四月伴隨著最後一周漸行漸遠,來不及抓住四月的尾巴,忙碌的五月就坐在身旁。望著四月的尾巴消失在眼際,我想起的是她陪伴我的每一個夜晚,因為她的伴隨,夜晚,不只有打碼,還有歌和遠方。我想起的是她送給我的每一縷朝陽,因為她的相送,陽光灑照,刷牙也別有一番滋味......她走了,下個四月,還會來。但,已然不是眼前的她,她只說「深愛地活著,飄高飛遠」。
------------------------------學習開發比賽概要-----------------------------
這周學習分三部分總結,如下:
第一部分:C語言知識的鞏固
總的來說這周主要是鞏固宏,可移植性。
1.關於宏從它的使用,展開字元串出現的問題角度結合實例理解了宏與函數,宏與表達式,宏與語句,宏與typedef的區別。與調用函數相比,使用宏函數可以減少時間,空間的使用,提高效率。與表達式、語句相比,這樣可以減少寫代碼的數量,但是由於宏的展開會帶截然相反的作用,所以要小心使用。就好比指針定義的語句出現的只有第一個變數定義成指針,其他不是。所以未解決這種情況可以用類型定義typedef來解決。
2.關於可移植性,C語言的實現依機器的不同而不同。從數據的表示範圍,數據類型的轉換,移位運算,內存位置0來理解可移植性。在理解這個的時候,使用兩個不一樣的編譯器進行編譯,發現可移植性問題不僅僅涉及以上問題,還有變數的環境等。這也讓我明白了為什麼編程要寫那麼詳細的注釋了,這是因為使用的運行環境要與開發環境相適應,這也可以減少可移植性帶來的問題。
3.本周把C指針和陷阱看完了,這是Andrew
Koenig自身寶貴經驗的分享,這些細枝末節有助於減少自己犯錯。但是正如作者所說的是自身編程經歷的總結。由於我自己對宏,可移植性等掌握的知識較少,所以理解上有所欠缺。不過作者做了拋磚引玉,後面的就看我自己了。第二部分:獎學金管理系統編寫總結
總的來說還是價值很大。這是對以後編程有很大的作用。
優點:1.在異常輸入上做了處理,但是還有疏漏。
2.代碼書寫還算整齊,但是過於密集。
3.使用switch來選擇執行的功能,這樣可觀不會閃退。
缺點:1.代碼沒有模塊化處理,所謂模塊化是指除了文件頭注釋外,每一個功能函數也要有一 個頭注釋,具體的頭注釋包括,函數名,功能描述,參數說明,返回值說明,提醒共五個。
2.功能函數編寫時間長。這緣於沒有提前寫好流程圖和具體的細節設計。
3.對於函數的異常輸入處理,忘記考慮scanf本身是否有讀取到值,而只是對輸入不正常的值做了考慮。後來加上一個判斷scanf的返回值。
4.關於變數名和函數名,沒能很好的規範書寫,見名知意。這緣於編寫代碼的時候沒有仔細看源代碼的排版說明。以後一定要注意。
5.功能函數實現有局限,緣於沒有從基本情況來設計而是直接考慮特例,導致測試的時候遇到普遍情況就GG了,另外自己也沒有一個整體的構思。下次編寫代碼事先考慮畫流程圖
6.鏈表排序混亂,耗時長。緣於對鏈表調試的時候沒有畫圖,從而把問題歸於排序錯誤,而重新寫了兩三次排序代碼。最後才發現是返回值出錯,應該返回頭結點,卻返回了頭指針。
7.創建新的無序或有序鏈表,使用完沒有刪除而是疊加使用。緣於沒有具體清楚某些代碼滿足什麼功能具體要如何實現。導致班級前三名排序的時候出現多個班級排序錯誤。最後修改為每個班級使用無序鏈表之前都要重新申請一個無序鏈表。
8.找bug花費時間長,沒有掌握如何在多個函數的使用中調試bug,而是將該函數複製出來進行斷點調試,再修改,這樣耗費的時間較長。這裡需要學會用#ifdef #endif來調試bug。
9.有關鏈表的循環,使用指針是否為null來判斷,容易造成死循環。緣於指針的指向出錯,指向同一個結點了。這需要畫出過程並debug。
10.對鏈表結點的下一個結點訪問錯誤,沒有很好的判斷結點是否為null,導致將指針賦值給一個結點的下一個結點的時候,出現錯誤。即:first->next=p;此時first已經是null,但是自己卻沒有發現。
11.switch中的case該寫break忘記寫。這導致異常輸入的時候出現死循環。
12.功能相似的函數,修改其一另一沒有更新。在寫根據學號或者姓名來刪除或查找的時候,依據姓名來寫代碼。但修改了姓名的代碼後,學號的代碼沒有更新。以後要注意。
13.漏寫某些部分代碼,緣於第二次繼續寫代碼的時候忘記寫到哪裡,最後在debug 的時候才發現。這需要一個好的辦法來解決!!!
第三部分:文檔的編輯
總結這次文檔的細枝末節。
1.對於多餘的空行符,可以使用行間距解決。
2.對於文字下劃線對齊,要注意是否所有的文字格式都是有下劃線的。
3.要在完成了文檔的整體編輯之後再生成目錄。
4.文檔的標題格式命名不是隨便的,對於word自帶目錄模板要求標題是已定的。所以只要修改標題的格式而不改動命名就好了。
5.多級標題的空格設置並不是固定的,可以靈活變通。
6.更新標題可以直接按「更新標題**以匹配所選內容」。
7.更新對於要修改的正文文字格式,可以通過」選定所有格式類似的文本」來快速修改。
8.流程圖用黑色線處理。
--------------------------------一周總結-------------------------------
這周對課本知識學習不多,在編寫獎學金管理系統耗時多日,最後還因為題目看錯重新修改,還沒有到達預想的效果/(ㄒoㄒ)/~~。對於文檔的編輯,體驗到我的計算機課程是數學老師教的/(ㄒoㄒ)/~~失敗乃成功之母,走向程序員的道路磕磕碰碰再所難免,現在自己肯定是白紙一張,重要的不是如何讓白紙沒有皺痕而是讓白紙在有限的時間留下珍貴的東西。通過這次獎學金管理系統的設計,讓我明白了一個項目開發的核心不僅僅是代碼,前期的周全設計是這個項目成功的前提,後期的debug是這個項目成功的保證。而文檔則是整個項目的形象,好比在看臉的時代,形象得到認可,才有機會讓人短時間內有興趣了解你。文檔也如此,高質量的文檔,讓他人一目了然知其所意,這才能讓這個項目有機會得到認可,有機會開展並完成。
---------------------------存在問題及未來規劃--------------------------
1.文檔編輯能力有待提高。
2.C的基礎知識鞏固了一輪,現在需要重後面開始溫習一輪,打算用C primer Plus。
3.對於計算機基礎理論等知識也需要有所了解,在學有餘力的情況下打算看看這方面的書。
4.要繼續上mooc的數據結構的課程,接受新的思想。
推薦閱讀:
※doc,docx解析的那些事
※Word小技巧-學會上下標,公式輸入不再愁
※Word小技巧-快速拆分(合併)文檔中的表格單元格
※排版神器——Word樣式