2014年8月7日 星期四

不同標頭檔的作法!!

從開始寫這個網誌開始,我只利用單一的編輯檔進行compile文件的工作。但當程式變大時一定會面臨一個問題,便是重複定義的問題,而這類型的問題程式工作者習慣性的把想要使用的標頭檔用另外一個名稱將它存檔像這樣 science.h,只要將檔名寫程如此便能讓電腦辨別,這個檔案本身是標頭檔。但這樣我們要如何在cpp檔案中使用呢?
----------------------------------------------------------------------------------------
// science.cpp
#include <iostream>
#include "science.h"    //只要cpp底下include 進這個檔名就可使用

---------------------------------------------------------------------
利用一些簡單的範例幫助理解:

//science.h
#include <iostream>
using std::cout;
void printscience(double a)
{
               cout<<a;
}

//science.cpp
#include <iostream>
#include "science.h"
int  main( )
{
             using std::cout;
             double b;
             printscience(b);
              
                return 0;
}

只要把上面的cpp檔compile 就可以形成一個執行檔

---------------------------------------------------------------

接下來我要介紹一個方法,我們常常會在main()前面用#define 來定義一個常數或數值但但常常會面臨當重複定義常數的問題,就像上面所提到。如果今天發現沒有定義那也可以用#ifndef的方法來進行標頭檔的定義。

------------------------------------------------------------------
//science.h
#ifndef SCIENCE_H_
#define SCIENCE_H_
struct data
{
               char name;
               int age;
};
typedef struct data DATA;
#endif

將上述的標頭檔定義完後變能夠充分的使用他了,接下來只要跟前面範例方法一樣#include "science.h"便能講整個檔案作定義出使用struct這個架構,這麼簡單的方法一定要快點學起來才行。





2014年8月5日 星期二

一個簡單選單的製作~~~~

想要做一個簡單的選單其實只要掌握幾樣技巧便可以了,while迴圈的用法以及switch的使用方法,當然我也會在底下提到enum列舉的方法。
-------------------------------------------------------------------
#include <iostream>
using namespace std;
enum{Jerry, Benson , Chris ,Anderson, Eric}
void showmenu()
int main()

              int fav;-
             showmenu( );
             cout << "請輸入你最喜歡的英文姓名(0~4):
            cin>>fav;
            while(fav>=Jerry&&fav<=Eric)
            {
                            switch (fav)             //利用switch語法將選單會出現的函數或者是文字最切換
                           {        case 0:        
                                           cout<< "你最喜歡使用的英文姓名為:"<<fav;
                                                                                 break;

                                    case 1:
                                            cout<<"你最喜歡使用的英文姓名為:"<<fav;
                                                                                 break;
                                    case 2:
                                             cout<<"你最喜歡使用的英文姓名為:"<<fav;
                                                                                  break;
                                    case 3:
                                              cout<<"你最喜歡使用的英文姓名為:"<<fav;
                                                                                  break;
                                    case 4:
                                              cout <<"你最喜歡的英文姓名為:" <<fav;
                                                                                  break;
                                 default :                           //偵測到錯誤資訊時該如何執行
                                                 break;
                                }
                                 showmenu( );
                                 cin>>fav;
           }
            return 0;
}

void showmenu( )
{
                            cout <<"選出你的最愛吧"<<endl;
              cout << "0)  Jerry                       1)      Benson  \n";
              cout << "2) Chris                        3)      Anderson \n";
              cout <<" 5)  Eric";
}
-------------------------------------------------------------------------
上列的做法是較簡單的方式去製作選單,當然裡面使用的enum方式來進行列舉可以多多練習,當然switch的語法也可以轉換成利用字元來處理,這裡我就不多說了。





邏輯判斷範例

上一篇寫了有關於邏輯方面的程式,但是並沒有寫出一個介紹,所以我就把我練習的程式po上來讓大家參考。
-------------------------------------------------------------------------------------
#include <iostream>
#include <cctype)
using namespace std;
int main()
{
              char ch;
              int alpha;
              int blank;
             cout << "輸入任一個字元,我便能辨別他:"<<endl;
             cin.get(ch);                         //接收到的字元符號
             while(ch!='a')                         //給while迴圈一個辨別的\依據

              {
                         if(isalpha(ch))
                          {
                                    cout<<"you get the alpha!!!!";
                                             break;
                           }
                           else if(isblank(ch))
                           {
                                    cout<<"you get the blank";
                                            break;
                             }
                             else 
                                           break;
                  }

                  return 0;

}
----------------------------------------------------------------------------------
上面是個簡單的寫法,可以使用各種不同的方法嘗試,當然也可以用C語言來試試看。





                           

2014年8月4日 星期一

邏輯判別介紹

在寫程式時最重要的就是前後的邏輯性,如果沒有邏輯性的話很難跟電腦溝通,所以現在些對邏輯運算子提出些介紹。

&& 表示and
| |    表示 or
!      表示 not
---------------------------------------------------------------------
1.  這是and的邏輯關係
x>10&&x<100   表示當條件滿足x>10和x<100時會發生的情形,也可把它看成(x>10)&&(x<100)

2.  這是or的關係 x>10 || x<100  //  (我不知道你會不回找不到"||"這個符號我一開始找很久,在enter鍵附近。)

------------------------------------------------------------------------

在程式撰寫中,AND的邏輯關係比OR的邏輯關係有優先權,如果我們要篩選奧林匹亞物理比賽的選手參賽,我先要求是高中生,如果高中生無法勝任(雖然不可能)也只能要求要是他們的成績能超過某個測驗420分
3. age >16 && age <18 ||  score >420
上面便是所謂的優先權的部分。

--------------------------------------------------------------------------
C++ 繼承了C的字元相關函數,這裡介紹一個標頭檔cctype(cctype.h),這些主要用來判斷字元的大小等等。ex:isalpha(ch) 函數在ch為字母,傳回非0值,否則傳回0值ˋ。這類型的判斷我將整理在底下的函數。

isalum()  括號內的字母與數字,傳回true值。
isalpha() 括號內的是字母,傳回true值。
isblank() 括號內的是空白或tab鍵,傳回true值。
iscntrl()   括號內的是控制字元,傳回true值。
isdigit()   括號內的是十進位數字,傳回true值。
isgraph() 括號內的是印出的字元,傳回true值。
islower() 括號內的是小寫的字元,傳回true值。
isprint()   括號內的是可以印出的字元,包括空白,傳回true值。
ispunct() 括號內的是標點符號的字元,傳回true。
isspace() 括號內的是正常空白,傳回true值。
issuper()  括號內的是寫字母,傳回true值。
tolower() 若是大寫字元回傳回小寫字元,其他則會傳回源字元。
toupper()  若是小寫的字元,傳回大寫,其他原字元。


之後會在寫出一個練習用的cpp檔讓他家觀看。我自己是覺得以上的東西先了解就可以了,因為沒什麼直接的關係,只是當作會多使用一種字元函數就可以了。

淺談C與C++

前面好像在寫C++的科學計算寫的有點太快,決定慢下腳步打好C的基礎,在進行C++的修練,基本上C和C++沒什麼不一樣,不過因為一開始我先學了C++這個語言讓我沒有打好C的基礎。所以我一樣從基本的介紹起:
#include <stdio.h>  還記得一開始寫C++時利用如下:

------------------------------------------------------------------
#include <iostream>
using namespace std;
int main()
{
         cout<<" 世界真的很奇妙~~~";
         cout<<"世界真的妙妙妙!!!";
     
         return 0;
}
現在我在底下利用C語言來寫。

------------------------------------------------------------------

#include <stdio.h>
int main()
{
         printf("世界真的很奇妙~~~");
         printf("世界真的妙妙妙!!!!")l

         return 0;
}
我寫已經很明顯的看出差異了,利用C寫出來的比C++簡潔了一點,但這只是簡單的介紹,在C語言中利用printf 和scanf 這兩個語言來代表C++中cout 和cin這兩個功能。
-----------------------------------------------------------------------


我在底下用一個簡單且完整的範例來介紹這兩個語法

第一個是C的寫法
-----------------------------------------------------------------------
#include <stdio.h>
int main()
{
              int i;
              double  num;
           
              printf("請輸入一個1~10的數字:");
              scanf("%d",&num);
              while(num!=0)
            {
                     if(num<1||num>10)
                     {
                                  printf("你輸入的數字不在1~10之間)
                                  break;
                      }
                       else if
                     
                                 printf("你輸入的數字是%d:",&num);  
              }
     
               system("pause")
               return 0;
}
----------------------------------------------------------------------------------
上面是C的語法結合一點if的用法:,C++的寫法與此無異,在這裡的寫法僅需輸入上面的<iostream> 並把printf的部分改寫成cout和cin這樣的寫法即可。

2014年5月27日 星期二

      前面我也已經提到用c++寫基本的程式運算,接下來我們要開始學習使用迴圈這個指令,這裡面包括for loop,也會提到一點while 的用法,希望大家在學習時能多加練習才能更加得心應手。
----------------------------------------------------------------------
我們來利用for這個語言來寫寫看吧!這個用法主要是能讓程式不斷的跑一部分的語言,所以
可以節省我們很功夫。接下來我們用幾個範例來表達吧!
-----------------------------------------------------------------------
#include <iostream>
#include <stdio.h>
using namespace std;
int main()
{
int i,N;
cout<<"輸入你一個禮拜看韓劇的次數"<<endl;
cin >> N;
for(i=0;i<N;i++)
{
cout<<" 我最喜歡看韓劇"<<" \n" ;
}

return 0;
}
------------------------------------------------------------------
上面的程式語言能夠表現出一些基本的for loop概念,所以我們當然可以更進一步的表現出我們對於看韓劇這件事情的渴望
------------------------------------------------------------------
#include <iostream>
#include <stdio.h>
using namespace std;
int main()
{
int i,N;
cout<<"輸入你一個禮拜看韓劇的次數"<<endl;
cin >> N;
if(N<5)
{
for(i=0;i<N;i++)
{
cout<<" 我最喜歡看韓劇"<<" \n" ;
}
}
else if(5<N<10)
{
cout<< " 你是不是韓國人 "<<endl;
}
else (N>10);
{
cout <<" 我建議你去看看醫生 " <<endl;
}

return 0;
}
-----------------------------------------------------------
希望經過上面的練習過後你對於for loop有進一步的認識,基本上for loop就是執行工作的次數,另外我在上面的例題中也加入了一些 if 的用法,我會開始在之後的日記中寫一些有關於科學計算的矩陣。之後就敬請期待吧!
--------------------------------------------------------------







2014年5月20日 星期二

使用特殊的函式庫進行基本計算~~

在學習基本計算的方法之後,一定會很想要了解如何輸入參數,這時候就跟我們一開始學到的<iostream>這個標頭檔有關,我們在來引進一個語言cin, 接下來的範例好好練習吧!
----------------------------------------------------------------------------
#include  <iostream>
using namespace std;
int main()
{
       int a,b,c;
       cin >>a>>" \n">>b>>endl;     //引入cin之後便能輸入我們想要的變數數值
       c=a+b;
       cout<<"a+b="<<c<<endl;
       c=a*b;
       cout<<"a*b"<<c<<endl;
       return 0;

}
-----------------------------------------------------------------------------
接下來我要引進另外一個標頭檔<cmath> 這裡面有相當多的函式庫,我取其中的幾個來做說明,首先是sqrt和cqrt這兩個來進行討論
------------------------------------------------------------------------------
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
float a,b,c;
cin >> a;
cin >> b; 
c=a*b;
cout<<"a*b ="<<c<<"\n"<<"平方根值 :"<<sqrt(c)<<"\n "<<"立方根的值:"<<cbrt(c);

return 0;
}
--------------------------------------------------------------------------------
但是這樣的表示法一定無法滿足如果要取捨不準度的運用,這時候引進另外一個標頭檔
<iomanip>裡面的setprecision,範例可以看出跑出來的結果:

#include <iostream>
#include <cmath>
#include <iomanip>
using namespace std;
int main()
{
float a,b,c;
cin >> a;
cin >> b; 
c=a*b;
cout<<setprecision(3)<<"a*b ="<<c<<"\n"<<"平方根值 :"<<sqrt(c)<<"\n "<<"立方根的值:"<<cbrt(c); 

return 0;
}

-------------------------------------------------------------------------------------















如何寫出基本的運算程式?

相信大家已經完成地個程式了,接下來要進入第二個階段。進行宣告變數,宣告變數是我們學習任何程式語言中必然會遇到的事情,利用下面的範例開始吧!
--------------------------------------------------------------------------分隔線
#include  <iostream>
using namesapce std;
int main()
{
     int a,b,c;                       //進行變數的宣告,這裡宣告a,b,c三個變數
     為a = 10;
     B = 15;
     c= a+b;                        //基本的計算
     cout<<"a+b="<<c;       //運用我們上次所使用的方法進行顯示的功能
     返回0;

}
-------------------------------------------------- ------------------------
當然我們也可以選擇使用類似的方法分別計算出我們所要使用的數值,如下範例:
-------------------------------------------------- ------------------------

#include <iostream>
using namespace std;
int main()
{
        int  a,b
        a= 3;
        b = 5;
        c = A + B;
        cout<<“a + b =”<<c;
        c = a-b;
        cout<<“a-b =”<c;
        c = a * b;
        cout<<“ a* b =”<<c;
        c=a/b;
        cout<<“a / b =”<<c;
        return 0;
     
}
-------------------------------------------------- --------------------------------
藉由這幾個基本的語言能讓我們得到一些我們所要計算的值,因為本人是物理學習所以所適用的程式會比較偏向於計算物理的部分,但還是很歡迎大家來指正我的觀念。













在C++的學習道路上我要開始我的第一個旅程,我人生中的第一個程式,是用DEV C++寫的,當然底下的寫法也會有很多種,接下來我要做的事情,就是寫出" I LOVE YOU C++!"這一串字。那開始吧!

#include  <iostream>      // 表示輸入iostream這個標頭檔
using namespace std;      //使用namesapce 這個名稱空間,記得要加分號,分號代表一行的結束
int main ()                     // 表示主程式的意思
{
cout<<" I LOVE YOU C++!"<<endl;                         //cout表示顯示出" "中的字
return 0;                                                                         //養成好習慣
}
                             
我們已經完成了人生中第一個用C++寫的程式囉有沒有很感動呢!我是已經快要哭了。其實一 樣的程式語言C++中有無數種寫法這也只不過其中一種而已。之後還要繼續努力喔!!!

成長的起源~~~

俗話說的好:「教學相長」,因為自己本身沒有學程式語言的背景,只不過是一名物理系學生,隨著年紀越來越大,發現程式語言是身為一名物理系學生必備知識。為此,我決定開始努力學習,雖然我現在的功力可能還不夠,但我相信之後會越來越好的。從今天起每三天會更新一次學習到的程式語言。因為我也是個初心者。所以請各位寫C語言的前輩能夠給我一點指導。