聊一聊編程

 

 

在個人教學的過程當中,發現不少同窗都以爲編程是一件很難的事情,甚至有同窗說我使出了洪荒之力,上學期的《c語言》期末才考了60分,並且聽不少學長說《數據結構》這門課平均經過率不到50%,因而乎很多同窗都選擇了迎難而退,有了換專業的想法。那麼事實真的是這樣嗎?編程真的很難嗎?html

 

確實編程很難,你要想成爲一名優秀的開發工程師確實須要具有不少條件,如你的計算機專業基礎知識(算法與數據結構,操做系統,編譯原理,數據庫原理,計算機網絡等)、英語、分析問題解決問題的能力等,這些都不是一朝一夕可以練成的,須要長時間的學習和領悟。可是若是你的目標不是那麼高,而只是爲了學習c語言或數據結構的基礎知識,那麼事情就沒有你想的那麼難。既然如此,那爲何還有那麼多的學生以爲編程很難呢?緣由在於沒有掌握較好的學習方法。算法

 

今天就和你們一塊兒來聊一聊編程初學者應該須要注意的一些地方。數據庫

 

1 代碼格式編程

 

你們小時候都寫過做文,若是你的做文字跡潦草,卷面邋遢,那麼即便你的做文內容再豐富,邏輯性再強,你的得分也會很低。由於老師第一眼看了做文之後,就不想再繼續看下去,因此得分低就是意料之中的事情。數組

 

寫代碼就和寫做文同樣,先無論你的代碼寫的多好,邏輯性多強,你要作的第一件事就是代碼格式優美,該縮進的就縮進,該換行的就換行的。網絡

代碼1數據結構

0?wx_fmt=png

 

代碼2ide

 0?wx_fmt=png

 

以上兩個代碼你更願意看哪個?代碼1毫無格式可言,沒有任何的縮進,也沒有任何的換行,試想若是是你去讀這樣的代碼,你什麼感覺。函數

 

因此寫代碼是給人讀的,首先要作的一點就是優良的格式,我相信這是每一位同窗都應該作到的。學習

 

2 前後順序

作什麼事情都有前後順序,先作什麼,再作什麼,最後作什麼。這裏面都是有前後關係的,不是想到什麼就作什麼。

對於C語言編程來講,咱們首先要寫的就是程序的模板。

#include <stdio.h>

 

int main(){

      // 你的代碼

      return 0;

}

 

C語言是一門面向過程的語言,也就是說一個C語言的程序是由一個個獨立的函數構成,在這些函數中有一個很是特別的函數,那就是main函數。爲何特殊呢?由於它是整個程序的入口。

 

有了上面的基礎理論以後,咱們知道C語言程序其實就是寫一個個的函數。

 

因此,函數是如何定義的,有哪些組成部分,我相信這是每一位同窗都可以作到的。

 

3 不要一口氣吃成胖子

 

作什麼事情都不能着急,要一步步來,心急是吃不了熱豆腐的,一樣對於編程也不例外。

 

一個程序的代碼越多,其隱含bug的概率也就越大,相應的你解決bug的時間也就越長。我相信大部分同窗應該都認同上面這句話,因此若是一個程序只有打印「hello,world」這個功能,那麼這個程序怎麼也不會出現問題。

 

上面這句話其實告訴了咱們一個編程的基本道理:全部的大的程序都不是一鼓作氣的,而是一點點累積起來的。即只有在確保上一個功能正確的前提下,我纔會增長一個新的功能。

 

舉個簡單的例子說明一下:

輸入5位學生的一組信息,包括學號、姓名、數學成績、計算機成績,求得每位同窗的平均分和總分,而後按照總分從高到低排序。

 

這是我給學生上課時佈置的一道做業題,不少學生都實現了功能,但在實現的過程當中遇到了不少的問題,接下來我便介紹一下,若是是我,我該怎麼去實現。

 

步驟1:寫模板。

#include <stdio.h>

 

int main(){

 

      return 0;

}

 

步驟2:分析題目,肯定有幾個任務。

經過對題目的分析,咱們發現主要有3個任務:

1)輸入5個學生的信息;

2)計算5位學生的平均分;

3)按照總分紅績對5位學生進行排序。

 

這是很是很是關鍵的一步,你得很是瞭解你要作的事情有哪些?將一個大的任務分解成多個小的任務,而後再去解決每個小的任務。當全部的小的任務都解決了,那麼大任務也就天然而然的解決了,這就是著名的「分治法」的思想。

 

有了上面的任務分解後,接下來咱們就首先解決第一個任務:「輸入5個學生的信息」。

每個學生包含了學號、姓名、數學成績和計算機成績,該用什麼結構來保存呢?你們以前學過C語言的知識應該都能很快想到,咱們應該使用結構體。

struct student{

      int no;

      char name[20];

      float math_score;

      floatcomputer_score;

};

 

輸入5個學生的信息,以後保存在什麼地方呢?咱們很快就能想到結構體。

struct student students[5];

 

最後即是處理如何輸入的問題了,將用戶輸入的信息保存在上面的結構體數組裏面。

有了上面的分析以後,咱們可以很快寫出下面的代碼。

#include <stdio.h>

 

struct student {

    int no;

    char name[20];

    float math_score;

    floatcomputer_score;

};

 

struct student students[5];

 

int main(){

 

    int i = 0;

    for(; i<2;i++){

       scanf("%d,%s,%f,%f", &students[i].no, students[i].name,&students[i].math_score, &students[i].computer_score);

    }

 

    return 0;

}

 

可是這裏面你們須要注意的一點是,個人代碼雖然寫完了,可是我並無驗證它的正確性,因此還應該加上一些驗證性代碼。

#include <stdio.h>

 

struct student {

    int no;

    char name[20];

    float math_score;

    floatcomputer_score;

};

 

struct student students[5];

 

int main(){

 

   // 實現任務1的代碼

    int i = 0;

    for(; i<5;i++){

       scanf("%d,%s,%f,%f", &students[i].no, students[i].name,&students[i].math_score, &students[i].computer_score);

    }

 

   // 爲了驗證任務1代碼正確性而寫的額外的代碼

    for(i = 0; i <5; i++){

       printf("%d, %s, %f,%f", students[i].no, students[i].name,students[i].math_score, students[i].computer_score);

    }

 

 

    return 0;

}

 

只有在完成任務1的代碼而且驗證它的正確性以後,我纔會開始第2個任務的代碼編寫。

 

以上就是給你們分析的什麼叫編程的基本方法,只有在確認上一個任務徹底正確的前提下,纔會開始新的任務。

 

總結

但願上面介紹的3點可以對你的編程有所幫助,爲從此寫出更好的代碼打下基礎。

 

你在學習編程的過程當中,遇到哪些問題,歡迎在下面留言,後面會根據你們的留言狀況,提供你們須要的編程知識。

 

0?wx_fmt=jpeg         

相關文章
相關標籤/搜索